arrays - 试图为游戏井字游戏制作移动列表
问题描述
我正在尝试列出井字游戏中的游戏位置。当我使用推!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" "" ""]]
解决方案
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
推荐阅读
- apache-kafka - 如果在 Apache Flink 中操作时发生异常,则不提交来自 Apache Kafka 的消息
- javascript - 如何使用WEB API Dot net core实现文件上传?
- javascript - 如何使用jQuery从字符串中获取特定值
- python - 在 groupby 聚合函数中有条件地连接字符串
- spring-boot - Spring Boot:请求参数中的自定义验证
- oracle - 将 SQL 的 first_value 和 partition by 转换为 SAS
- c++ - 我们可以在 C++17 中检测到“微不足道的可重定位性”吗?
- docker - 错误:作业失败(系统故障):无法在 unix:///var/run/docker.sock 连接到 Docker 守护程序。docker 守护进程是否正在运行?在 Windows 10 上
- amazon-web-services - 从 Lambda@Edge 触发另一个 Lambda 函数
- asp.net-core - 无法调用具有 anonymousAuthentication=false 的 .NET Core 3.x REST API