こんにちは、@koga1020です。

【exercism.io】Elixir Trackメモ その1に引き続き、exercismを進めていきます。「exercism?」という方は前回の【exercism.io】Elixir Trackメモ その1で触れているので、参考にされてください。

ネタバレ

  • 以下、自分が解いた問題とその振り返りを書いています
  • 一切の参考情報を得ずにexercismを取り組みたい!!」という方は解き終わってから読んでいただければと思います

Strain

Enum.rejectとEnum.filterがない縛りで同等の実装を考える問題

自分の回答: https://exercism.io/tracks/elixir/exercises/strain/solutions/b7d80c1644564c50b6e6d5beb42ad270

振り返り

Protein Translation

長い文字列から連続した3文字を切り出して別の値へ変換する問題

自分の回答: https://exercism.io/tracks/elixir/exercises/protein-translation/solutions/d0e4cfc103fa4b45b3ffd5298621f3fc

振り返り

  • 文字列をString.codepointsEnum.chunk_every()を組み合わせて3文字ずつcutしてみた
  • 固定のMapは定数に持った
  • 人気の回答ではパターンマッチで文字列を分割してた、かっこいい

Pig Latin

ピッグ・ラテンと呼ばれる英語の言葉遊びに関する問題

自分の回答: https://exercism.io/tracks/elixir/exercises/pig-latin/solutions/fa09c712937e48f8a2cf53cad9f19cde

振り返り

  • 意外とロジックを考えるのが難しかった

    • 紙と鉛筆で判定フローを書いたのがよかった。大事。
  • 子音グループで始まるか否か で大きく処理を分けた
  • 他の人の回答をみてもいまいちピンとくるものがない。地味難問な感じ。

まとめ

今回解いた問題では次のような印象を持ちました。

  • 再起を使った回答多い?
  • バイナリパターンマッチ使いこなすとユースケースによってはスッキリした記述になる
  • if はやはり見ない。ifは禁止するレベルでいいかも

Exercismは問題のテーマが単調じゃなくて面白いですね!課題にはEasyと書かれていますがちゃんと考えないとスッキリした答えはでてこないですね。Hardとかどんな問題なのでしょう。コツコツと進めてみます。