Saya mulai membuat sketsa struktur algoritma rekursif yang akan membangun daftar kedekatan persimpangan ubin hex di papan permainan gaya Settlers of Catan. Namun itu bukanlah masalah mendesak yang perlu saya selesaikan.
Masalah yang saya alami dapat ditemukan pada keluaran yang saya tempelkan di bawah contoh kode. Beberapa nilai di baris pertama dan terakhir keluaran tampak berupa string tanpa alasan yang jelas.
Saya berharap pengembang Elixir yang lebih berpengalaman akan mengenali alasan keluaran yang rusak dan dapat menjelaskan mengapa hal itu terjadi dan apa yang harus dilakukan untuk mengatasinya.
def recurse_outer() do
list = [Enum.into(0..5, []),
Enum.into(6..23, []),
Enum.into(24..53, [])
]
Enum.map(list, &recurse_inner(&1))
end
defp recurse_inner(list, index \\ 0, result \\ [])
defp recurse_inner([head | tail] = list, index, result) do
next =
case tail do
[next | tail] -> next
[] -> :no_next
end
adjacencies = [head, next]
recurse_inner(tail, index + 1, [adjacencies | result])
end
defp recurse_inner([], _, result), do:
Enum.reverse(result)
keluaran:
iex(159)> Board.recurse_outer
[[[0, 1], [1, 2], [2, 3], [3, 4], [4, 5], [5, :no_next]],
[[6, 7], '\a\b', '\b\t', '\t\n', '\n\v', '\v\f', '\f\r', [13, 14], [14, 15],
[15, 16], [16, 17], [17, 18], [18, 19], [19, 20], [20, 21], [21, 22],
[22, 23], [23, :no_next]],
[[24, 25], [25, 26], [26, 27], [27, 28], [28, 29], [29, 30], [30, 31],
[31, 32], ' !', '!"', '"#', '#$', '$%', '%&', '&\'', '\'(', '()', ')*', '*+',
'+,', ',-', '-.', './', '/0', '01', '12', '23', '34', '45', [53, :no_next]]]