【发布时间】:2016-08-03 10:05:31
【问题描述】:
为了学习 Elixir,我想解决这个问题:https://projecteuler.net/problem=96
为了通过董事会,我会这样开始: 在python中:
row_indexes = ["A","B","C","D","E","F","G","H","I"];
col_indexes = ["1","2","3","4","5","6","7","8","9"];
row_box_indexes = [["A","B","C"],["D","E","F"],["G","H","I"]];
col_box_indexes = [["1","2","3"],["4","5","6"],["7","8","9"]];
cols = [[r+c for r in row_indexes] for c in col_indexes]
rows = [[r+c for c in col_indexes] for r in row_indexes]
boxes = [[r+c for c in C for r in R] for C in col_box_indexes for R in row_box_indexes]
print(cols) // [['A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1', 'I1'],...,['A9', 'B9', 'C9', 'D9', 'E9', 'F9', 'G9', 'H9', 'I9']]
我正在努力在 elixir 中使用列表理解我尝试了这个,但它给我一个包含我所有结果的列表
row_indexes = ["A","B","C","D","E","F","G","H","I"];
col_indexes = ["1","2","3","4","5","6","7","8","9"];
row_box_indexes = [["A","B","C"],["D","E","F"],["G","H","I"]];
col_box_indexes = [["1","2","3"],["4","5","6"],["7","8","9"]];
# in iex
for c <- col_indexes,
x <- (for r <- row_indexes, do: r<>c),
do: x
# ["A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1", "I1", "A2", "B2", "C2", "D2",..., "I5", "A6", "B6", "C6", "D6", "E6", ...]
1) 在 Elixir 中解决这个问题的好方法吗?
2) 你能解释一下我如何在 python 中达到与 print(cols) 相同的结果吗?
谢谢你:)
【问题讨论】:
-
在长生不老药中可能有完全不同的方法。简而言之,您为板上的每个方块、每一行和每一列生成一个新进程。然后,您开始在这些进程之间传递消息以发展董事会的状态。如果您愿意,我可以在答案中更好地解释。
标签: elixir