首页 > 解决方案 > 试图为游戏井字游戏制作移动列表

问题描述

我正在尝试列出井字游戏中的游戏位置。当我使用推!Julia 中的代码存储游戏数组列表的列表更改了先前的游戏位置,这使得该过程无用。我想要一个像... [[包含第一个移动的位置编号]、[位置编号第二移动] 等的列表...然后最后的函数应该返回列表。

试过推!并追加!不工作是 Julia 不像 Python!

# set up 3 by 3 array Want to get list of moves of X  after 
# they are chosen store in C 
C = []
A =[]
A = fill("",3,3)


# set up 3 by 3 array 

listpossmove= [1,2,3,4,5,6,7,8,9]

for i in 1:3
    mov = rand(listpossmove)
    println(mov)
    A[mov] = "X"
    println()
    println(A)
    push!(C, A)
    println("C ",C)
    # this removes previous list of moves choice so that move is not placed
    #in previous square
    listpossmove = filter(x ->x!= mov, listpossmove)
    #println("final poss move",listpossmove
end

我希望出来

[["X" "" ""; "" "" ""; "" "" ""],["X" "" ""; "" "" ""; "X" "" ""],["X" "" ""; "" "X" ""; "X" "" ""]]

但得到

["X" "" ""; "" "" ""; "" "" ""]
Array{Any,1}
C Any[["X" "" ""; "" "" ""; "" "" ""]]
3

["X" "" ""; "" "" ""; "X" "" ""]
Array{Any,1}
C Any[["X" "" ""; "" "" ""; "X" "" ""], ["X" "" ""; "" "" ""; "X" "" ""]]
5

["X" "" ""; "" "X" ""; "X" "" ""]
Array{Any,1}
C Any[["X" "" ""; "" "X" ""; "X" "" ""], ["X" "" ""; "" "X" ""; "X" "" ""], ["X" "" ""; "" "X" ""; "X" "" ""]]

标签: arraysjulia

解决方案


deepcopy() 是您保存数组时的朋友。您推送的数组需要是您随后修改的数组的副本。尝试:

const C = []
const A = fill("",3,3)


# set up 3 by 3 array 

const listpossmove = [1,2,3,4,5,6,7,8,9]

for i in 1:3
    mov = rand(listpossmove)
    println(mov)
    A[mov] = "X"
    println()
    println(A)
     push!(C, deepcopy(A))

    println("C ",C)
# this removes previous list of moves choice so that move is not placed
#in previous square
        filter!(x ->x!= mov, listpossmove)
        #println("final poss move",listpossmove


end

推荐阅读