/var/log/messages

Jan 20, 2019 - 1 minute read - Comments - programming

プログラミング Elixir (8)

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]

むむむ。

プログラミング Elixir (7) プログラミング Elixir (9)

comments powered by Disqus