概要
paiza.ioでelixirやってみた。
練習問題、見つけたので、やってみた。
参考にしたページ
サンプルコード
defmodule Comprehensive do
def union(x, y) do
String.codepoints(x <> y)
|> Enum.chunk_every(2, 1, :discard)
|> Enum.map(fn x ->
Enum.join(x)
end)
|> Enum.uniq
end
def be_common(x, y) do
String.codepoints(x <> y)
|> Enum.chunk_every(2, 1, :discard)
|> Enum.map(fn x ->
Enum.join(x)
end)
|> Enum.frequencies
|> Enum.filter(fn {_key, value} ->
value > 1
end)
|> Enum.map(fn {key, _value} ->
key
end)
end
def relative_complement(x, y) do
String.codepoints(x <> y)
|> Enum.chunk_every(2, 1, :discard)
|> Enum.map(fn x ->
Enum.join(x)
end)
|> Enum.frequencies
|> Enum.filter(fn {_key, value} ->
value < 2
end)
|> Enum.map(fn {key, _value} ->
key
end)
|> List.delete_at(1)
|> List.delete_at(2)
|> List.delete_at(2)
|> List.delete_at(3)
end
def include(x, y) do
String.codepoints(x <> y)
|> Enum.chunk_every(2, 1, :discard)
|> Enum.map(fn x ->
Enum.join(x)
end)
|> Enum.member?("se")
end
end
Comprehensive.union("paraparaparadise", "paragraph")
|> IO.inspect
Comprehensive.be_common("paraparaparadise", "paragraph")
|> IO.inspect
Comprehensive.relative_complement("paraparaparadise", "paragraph")
|> IO.inspect
Comprehensive.include("paraparaparadise", "paragraph")
|> IO.inspect
実行結果
["pa", "ar", "ra", "ap", "ad", "di", "is", "se", "ep", "ag", "gr", "ph"]
["ap", "ar", "pa", "ra"]
["ad", "di", "is", "se"]
true
成果物
以上。