LoginSignup
13
1

Elixir Livebook for Paiza

Posted at

Paizaの問題をElixirで解こう

実は最近までElixirで問題を解けることを知らなかったのでLivebookでローカル環境で問題を解けるようにしました。

公開したリポジトリ

きっかけ

Paizaの問題をJavaScriptで挑戦していて、Aランクの問題が再帰を使わないと解けない問題に遭遇しました。

その問題はN ≤ n_i ≤ 1000の範囲だったので問題なかったのですが、10,000100,000になるとスタックエラーを起こす可能性があることに気づきました。

JavaScriptでも再帰をうまく扱う方法がありますが(generatorとか)、他の言語で戦いたくなりました。

Paizaの利用可能な言語の一覧にはHaskellとかRustとか私の得意な言語がありましたが、よく見たら下の方にElixirがあることに気づきました。

Language lsit

ElixirにはLivebookがあるのでPaizaのテンプレートを作りたくなったので作成して公開しました。

一番苦労した、しかし簡単に解決した課題

最初に直面した問題は標準入力で一度に複数行のインプットを取得する方法が見つからない、でした。

ElixirのIOのドキュメントを読んでも一度に複数行が見つからず、Googleでpaiza elixir 標準入力 複数行等で検索したが出てきません。

結果、発見的方法でしたが、次のようにすれば一度に複数行のインプットを取得できました。

:stdio |> IO.read(:all)

使い方

公開したリポジトリのREADME.mdを参考にしてください。

  • forkして使ってください。
  • forkしたら非公開(Private)なプロジェクトで作業して下さい。Paizaは問題と答えを非公開にするように求めています。
  • asdf installlgit clonedocker compose up -dするだけで動きます。
  • ポートやauthを変えたい場合は.envファイルなりdocker-compose.ymlを編集してください。
  • 編集したら/livebookディレクトリに保存されます。

準備はできましたか?

ElixirでPaizaの問題をたのしみましょう!😍

終わりに

きっと誰かが同じようなことをやっているだろうけど、調べずに自分で作りたかった。

13
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
1