こんにちは、@koga1020です。

プログラミングのオンライン学習サイト「exercism.io」は皆さんご存知でしょうか。

先日、Qiitaにあがっていたこちらの紹介記事がよくまとまっています。

exercism.ioでプログラミングを勉強する

この学習サイトにはElixirも入っていて、2019/06/09時点で92問の練習問題があるようです。

存在だけ知っていて登録せずにいたのですが、この週末でえいっと登録してやってみたところ好感触だったので、自分の備忘録として

  • 自分がどんな回答をしたか
  • 回答後、他開発者のコードを見た気づき

をブログに投下していこうと思います。

exercismをざっくり説明

本題に入る前に、exercismについてざっくり説明を書いておくと、

  • 無料で利用できる
  • アカウント登録後、問題のダウンロード+回答のアップロード用のCLIを入れる

    • Macの方ならbrewで一発
  • 問題のReadMeとテストコード(.exs)が与えられ、テストが通るようなコード(.exs)を書く
  • テストが通るコードがかけたら、CLIを使って回答を提出する

    • exercism submit xxxx.exs みたいに叩ける
  • 回答提出後、exercismのサイトから「Complete this solution」をクリックすると、次の問題がアンロックされる

    • このタイミングで、自分の回答を「公開」or「非公開」するか決める

といったフローになっています。

ゲーム感覚で問題がアンロックされていくので楽しいですね。良い仕掛けです🎮

登録せずともこちらから問題と世の中の開発者の回答が見れますので、どんな感じの問題があるか見てみるとよいと思います。

https://exercism.io/tracks/elixir/exercises

問題が書いている場所がちょっとわかりづらいので補足しておくと、

問題の詳細をクリックし、 step1.png

さらに回答者をクリックし、

step2.png

Instructionsをクリックすると、問題が確認できます。

step3.png

ネタバレ注意

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

Nucleotide Count

ヌクレオチド?なる物質を題材に取り上げて、特定の文字列をカウントする問題。化学の知識は一切不要。

自分の回答: https://exercism.io/tracks/elixir/exercises/nucleotide-count/solutions/562468253c8845ccb2df7b080c68943d

振り返り

Secret Handshake

自分の回答: https://exercism.io/tracks/elixir/exercises/secret-handshake/solutions/af96ea9ac7da4625ac4b2b732a17f6f2

振り返り

  • 関数パターンマッチで書いた。冗長な気はするが、意図は見えやすい気がする
  • ビット演算にはBitwiseを使うみたい

  • 0b…で二進数表記が可能

    • 参考: 0o…で8進数、0x… で16進数

Rotational Cipher

シーザー暗号と呼ばれる、シンプルな暗号化の実装。アルファベットを辞書順にシフトさせる。

自分の回答: https://exercism.io/tracks/elixir/exercises/rotational-cipher/solutions/29d206a619c54ad4ac0767be9a10e8b7

振り返り

まとめ

「自分で回答を考えて、他のシュッとしたコードを見る」というのは非常に勉強になりますね。継続して頑張っていきます。

興味を持った方はぜひexercism.ioに登録して回答を@koga1020までシェアしてください!!