お題
きのうまで公式ドキュメント のEnumをひたすら解釈 or わからないでさらいまくるという課題をやっていたのですが、先生からこんなお題が出ました。
"1. 整数1つと,整数のリストが与えられたとします。仮に 13 と,[2, 3, 5] だったとしましょう。
2. 最初の整数を2番目のリストの要素1つずつで割ったあまりが0になるかどうかを判定した時に,全ての要素で0にならなかった,すなわち割り切れなかったとします。もしそうならば,最初の整数は,リストで与えられた数どれでも割り切れないということになります。
このような判定を行うプログラムを書いてください。"
式
iex>[2, 3, 5] |> Enum.any?(& rem(13, &1)==0)
false
これはEnum総ざらいの過去分が役に立ちました。
まず、2,3,5の第一引数のリストを左辺に持ってきてパイプライン演算子を噛ませたのちひとつでも条件に符号するものがあればtrueを返すEnum.any?を持ってきます。
これで13を2,3,5それぞれで割り、当然あまりがゼロになるものはないので、false。
&記法で&1がremで整数の後に来るパターンがはじめてで、若干戸惑いました。
やはり与えられた式ではなく課題に対して短いですが自分で式を考えられてハマると充実感が出ます!
うまずたゆまず、頑張ります。
Kento Mizuno