7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

$\huge{元氣ですかーーーーッ!!!}$
$\huge{元氣があればなんでもできる!}$

$\huge{闘魂とは己に打ち克つこと。}$
$\huge{そして闘いを通じて己の魂を磨いていく}$
$\huge{ことだと思います}$

はじめに

本記事は、「paiza×Qiita記事投稿キャンペーン「プログラミング問題をやってみて書いたコードを投稿しよう!」」イベント記事です。

私はElixirで楽しんでみます。

まずは基本のD問題をやってみます。

参考にした記事

@RyoWakabayashi さんの記事を参考にしました。

AtCoderElixirで解く場合は、Main.main/0関数をエントリーポイントとして提出する必要があります。

paizaの場合はどうするのだろう? と、そこを一番気にしました。

自由でした。モジュールなしでもよさげで、モジュールを作った場合はそのエントリーポイントを一番最後に書いておけばよいようです。

私は、闘魂を注入することにしたいと思います。
どういう意味なのかは、私の回答例をぜひ見てみてください。

また競技プログラミングですので入力の読み取り方は以下の記事を参考にしました。

N倍の文字列

問題はリンク先をご参照ください。

私の解答

問題文を読んでいることを前提にひとこと解説をしておきます。

String.duplicate/2で文字列を複製しています。

defmodule Main do
  def main("闘魂") do
    n = IO.read(:line) |> String.trim() |> String.to_integer()
    
    String.duplicate("*", n)
    |> IO.puts()
  end
end

Main.main("闘魂")

Eメールアドレス

問題はリンク先をご参照ください。

私の解答

問題文を読んでいることを前提にひとこと解説をしておきます。

文字列の埋め込み(#{})を利用しました。公式ドキュメントは以下です。

https://hexdocs.pm/elixir/1.17.2/String.html#module-interpolation

defmodule Main do
  def main("闘魂") do
    s = IO.read(:line) |> String.trim()
    t = IO.read(:line) |> String.trim()
    
    "#{s}@#{t}"
    |> IO.puts()
  end
end

Main.main("闘魂")

足し算

問題はリンク先をご参照ください。

私の解答

問題文を読んでいることを前提にひとこと解説をしておきます。

足し算の基本的な問題です。

defmodule Main do
  def main("闘魂") do
    [a, b] =
      IO.read(:line) |> String.trim() |> String.split(" ") |> Enum.map(&String.to_integer/1)
    
    (a + b)
    |> IO.puts()
  end
end

Main.main("闘魂")

一番小さい値

問題はリンク先をご参照ください。

私の解答

問題文を読んでいることを前提にひとこと解説をしておきます。

Enum.min/3関数で一発ですね。

defmodule Main do
  def main("闘魂") do
    list = for _ <- 1..5 do
      IO.read(:line) |> String.trim() |> String.to_integer()
    end

    list
    |> Enum.min()
    |> IO.puts()
  end
end

Main.main("闘魂")

文字の一致

問題はリンク先をご参照ください。

私の解答

問題文を読んでいることを前提にひとこと解説をしておきます。

関数の引数のパターンマッチで解きました。

defmodule Main do
  def main("闘魂") do
    a = IO.read(:line) |> String.trim()
    b = IO.read(:line) |> String.trim()

    do_solve(a, b, "闘魂")
    |> IO.puts()
  end

  def do_solve(a, a, "闘魂"), do: "OK"
  def do_solve(a, b, "闘魂"), do: "NG"
end

Main.main("闘魂")

さいごに

paizaのD問題を解いてみました。
基礎的な問題でした。

コード提出後のチェック画面はかわいらしいアニメーションが表示されて、解いていて楽しいです。

スクリーンショット 2024-08-09 19.27.48.png

他の問題もぜひ解いてみたいと思います。

ところで、闘魂注入の意味はわかりましたか!?

「闘魂注入」の意味

闘魂 をエントリーポイントの第1引数に入れないと動かないようにしています。文字列は 闘魂 である必要があります。関数の引数でパターンマッチをしているので。


@haw_ohnuma さんのRustでの解答例です。こちらの記事もぜひご覧になってください。


闘魂とは、 「己に打ち克つこと。そして闘いを通じて己の魂を磨いていくことである」 との猪木さんの言葉をそのまま胸に刻み込んでいます。
知っているだけで終わらせることなく、実行する、断行する、一歩を踏み出すことを自らの行動で示していきたいとおもいます。
アントニオ猪木さんのメッセージから元氣をもらったものとして、それを次代に語り継ぎ、自分自身が「闘魂」を体現するものでありたいとおもいます。


$\huge{元氣ですかーーーーッ!!!}$
$\huge{元氣があればなんでもできる!}$
$\huge{1、2、3 ぁっダァー!}$

7
3
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
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?