9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

キャンペーンをやっていたので、 Elixir で参戦しました

paiza とは

paiza は IT エンジニア向け転職・就活・学習サービスです

その中でも、 paiza ラーニングは初心者向けのプログラミング学習ができるようになっています

初学者向け AtCoder という感じですが、キャラクターが描かれていたりして、全体的にかわいい感じが良いです

スクリーンショット 2024-07-29 22.26.09.png

回答に使える言語の選択肢に Elixir がありますが、まだ Beta とのこと

スクリーンショット 2024-07-29 22.46.52.png

Elixir のバージョンは 1.12.3 で、結構古めです

残念ながら、スキルチェック問題では Elixir が選択できませんでした

本記事では、記事投稿キャンペーンの対象になっている問題から、 D ランクの問題を解いていきます

文字の一致

二つの入力文字列が一致しているかどうかを判定します

何も考えずに書いたコード
(最初は trim してなかったので失敗しました)

a = IO.read(:stdio, :line) |> String.trim()
b = IO.read(:stdio, :line) |> String.trim()

IO.puts(if a == b, do: "OK", else: "NG")

モジュール化して、 Elixir らしいパターンマッチを使ったコード

defmodule Paiza do
  def main do
    a = read_line()
    b = read_line()
    solve(a, b)
  end

  defp read_line() do
    :stdio
    |> IO.read(:line)
    |> String.trim()
  end

  def solve(a, a), do: IO.puts("OK")
  def solve(a, b), do: IO.puts("NG")
end

Paiza.main()

一番小さい値

入力された数値から最小値を返す

全てパイプで繋げました

defmodule Paiza do
  def main do
    :stdio
    |> IO.read(:all)
    |> String.trim()
    |> String.split("\n")
    |> Enum.map(&String.to_integer(&1))
    |> Enum.min()
    |> IO.puts()
  end
end

Paiza.main()

足し算

入力した数値を足します

こちらも全てパイプで繋げました

Enum.map が Elixir らしいですね

defmodule Paiza do
  def main do
    :stdio
    |> IO.read(:all)
    |> String.trim()
    |> String.split(" ")
    |> Enum.map(&String.to_integer(&1))
    |> Enum.sum()
    |> IO.puts()
  end
end

Paiza.main()

Eメールアドレス

入力された行を @ で接続します

改行を @ に置換するだけですね

defmodule Paiza do
  def main do
    :stdio
    |> IO.read(:all)
    |> String.trim()
    |> String.replace("\n", "@")
    |> IO.puts()
  end
end

Paiza.main()

N倍の文字列

入力された数値の分だけ * を出力します

Elixir 1.12 なので then が使えます

defmodule Paiza do
  def main do
    :stdio
    |> IO.read(:all)
    |> String.trim()
    |> String.to_integer()
    |> then(&String.duplicate("*", &1))
    |> IO.puts()
  end
end

Paiza.main()

まとめ

D ランクなので、全て超入門という感じですね

早く Elixir でスキルチェック問題が回答できるようにしてもらいたいです

9
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
9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?