flatten という手続きを実装せよ、とのこと。Enum.reverse
を使え、とのこと。リストの項で以下な例が出てきています。
iex(43)> List.flatten([[[1], 2], [[[3]]]])
[1, 2, 3]
リストかどうか、は [head | tail]
に match するかどうか、で判断できる、という理解で良いのかどうか。
ありゃ、以下で動いたぞ。
def flatten([head | []]) do
flatten(head)
end
def flatten([head | tail]) do
flatten(head) ++ flatten(tail)
end
def flatten(nolist) do
[nolist]
end
reverse 使っていないのですが。。。
iex(77)> MyEnum.flatten list
[1, 2, 3, 4, 5]
iex(78)> MyEnum.flatten [1]
[1]
iex(79)> MyEnum.flatten([[[1], 2], [[[3]]]])
[1, 2, 3]
むむむ。