$\huge{元氣ですかーーーーッ!!!}$
$\huge{元氣があればなんでもできる!}$
$\huge{闘魂とは己に打ち克つこと。}$
$\huge{そして闘いを通じて己の魂を磨いていく}$
$\huge{ことだと思います}$
AtCoder Beginner Contest 393をElixirとRustで解いてみます。
AtCoderを解くのが趣味で、休憩時間に解いているという若い人がいて、それってすごい意識の高い休憩時間の過ごし方だと思って、私も真似してみることにしました。
プログラミングという名の藝術活動をより楽しむための鍛錬です。
自信というのは、一にも二にもトレーニングから生まれる
(アントニオ猪木『最後の闘魂』)
入力の読み取り方や解答の作り方は、別の記事にまとめています。
ご参照くださいませ。
ElixirでAtCoderを楽しむためには、エントリポイントをMain.main/0
にする必要があります。つまりMain
モジュールを作って、その中にmain/0
関数を定義するわけです。
問題はリンク先をご参照くださいませ。
私の解答を貼っておきます。
プログラミングの基本である「順次」「分岐」「繰り返し」のうち、「順次」と「分岐」がポイントとなる問題です。
Elixir
Elixirを使った私の解答です。
私の解答(Elixir)
問題文を読んでいらっしゃることを前提にひとこと解説をしておきます。
頭の中だけで考えるとごちゃごちゃします。全部で4通りを書き出してみると次の通りです。
S1 | S2 | お腹をこわす牡蠣 | コメント |
---|---|---|---|
sick | sick | 1 | 2人ともお腹を壊した。共通に食べたのは1 |
sick | fine | 2 | 高橋くんだけお腹を壊した。高橋くんだけ食べたのは2 |
fine | sick | 3 | 青木くんだけお腹を壊した。青木くんだけ食べたのは3 |
fine | fine | 4 | 2人ともお腹を壊さなかった。共通に食べていないのは4 |
この表を関数のパターンマッチにして解きました。
defmodule Main do
def main do
[s1, s2] = IO.read(:line) |> String.trim() |> String.split(" ")
solve(s1, s2)
|> IO.puts()
end
def solve("sick", "sick"), do: 1
def solve("sick", "fine"), do: 2
def solve("fine", "sick"), do: 3
def solve("fine", "fine"), do: 4
end
Rust
RustはAI先生のお力をお借りして、Elixirのコードを置き換えてもらいました。
私は、Rustを勉強中です。万年勉強中です。闘魂にゴールはない。いつまでも挑戦中です。
私の解答(Rust)
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut line = String::new();
stdin.lock().read_line(&mut line).unwrap();
let parts: Vecstr> = line.trim().split_whitespace().collect();
let s1 = parts[0];
let s2 = parts[1];
let result = solve(s1, s2);
println!("{}", result);
}
fn solve(s1: &str, s2: &str) -> u8 {
match (s1, s2) {
("sick", "sick") => 1,
("sick", "fine") => 2,
("fine", "sick") => 3,
("fine", "fine") => 4,
_ => 0, // 念のため
}
}
AtCoderをElixirとRustで解くことを楽しみました。
あなたのお好きなプログラミング言語でお楽しみください。
闘魂とは、 「己に打ち克つこと。そして闘いを通じて己の魂を磨いていくことである」 との猪木さんの言葉をそのまま胸に刻み込んでいます。
知っているだけで終わらせることなく、実行する、断行する、一歩を踏み出すことを自らの行動で示していきたいとおもいます。
アントニオ猪木さんのメッセージから元氣をもらったものとして、それを次代に語り継ぎ、自分自身が「闘魂」を体現するものでありたいとおもいます。
$\huge{元氣ですかーーーーッ!!!}$
$\huge{元氣があればなんでもできる!}$
$\huge{1、2、3 ぁっダァー!}$
Views: 0