ElixirでPaizaのD問題を解いてみた
実際に提出したコードと問題番号を公開したいところなのだけど、Paizaは解法の公開を禁じているので、類題を作問してその解答を載せていく。
##2倍にせよ
整数が入力されるので2倍して表示しなさい。
a = IO.read(:stdio, :line)
b = String.trim(a)
IO.puts String.to_integer(b) * 2
初めてElixirで解いた問題。何もわからないところからスタートしたので、20分ぐらいかかってしまった。
Elixirは引数の括弧を省略できるのだが、省略した場合、1行に複数の処理を書く方法がわからない。
##0をN回表示せよ
0をN回表示しなさい。
count = String.to_integer(String.trim(IO.read(:stdio, :line)))
defmodule My do
def loop(0) do
end
def loop(times) do
IO.write "0"
loop(times - 1)
end
end
My.loop count
Elixirにはループが存在しないので、かわりに再帰を使うらしい。うまくライブラリ化すれば再帰は意識しなくてよいかも?
##XをPに置換せよ。
2文字の文字列(例:XX、SS)が入力されるので、1文字目がXだった場合はPに置換して出力せよ。
str = IO.read(:stdio, :line)
if (String.at str, 0) == "X" do
IO.write "P"
else
IO.write String.at str, 0
end
IO.write String.at str, 1