$\huge{元氣ですかーーーーッ!!!}$
$\huge{元氣があればなんでもできる!}$
$\huge{闘魂とは己に打ち克つこと。}$
$\huge{そして闘いを通じて己の魂を磨いていく}$
$\huge{ことだと思います}$
はじめに
AtCoder Beginner Contest 408をElixirとRustで解いてみます。
AtCoderを解くのが趣味で、休憩時間に解いているという若い人がいて、それってすごい意識の高い休憩時間の過ごし方だと思って、私も真似してみることにしました。
AtCoderをElixirでやってみる
入力の読み取り方や解答の作り方は、別の記事にまとめています。
ご参照くださいませ。
ElixirでAtCoderを楽しむためには、エントリポイントをMain.main/0にする必要があります。つまりMainモジュールを作って、その中にmain/0関数を定義するわけです。
B - Compression
問題はリンク先をご参照くださいませ。
私の解答を貼っておきます。
プログラミングの基本である「順次」「分岐」「繰り返し」のうち、「順次」「分岐」「繰り返し」すべてを理解できているのかを問う問題です。
Elixir
Elixirを使った私の解答です。
私の解答(Elixir)
問題文を読んでいることを前提にひとこと解説をしておきます。
猪木・坂口組対橋本・蝶野組の試合前の世界の荒鷲・坂口選手のセリフです。
「何も言いません」
坂口選手のインタビューのあと、猪木さんが「出る前に負けること考えるバカいるかよ!」でインタビュワーに張り手をかまします。
坂口選手のセリフに戻します。これは気持ちよくかけました。Elixirの魅力のひとつであるパイプ演算子で気持ちよく書けました。ですから、「何も言うことはありません」「コードをみてください」です。
今回は408のAより、私にとっては簡単でした。
defmodule Main do
def main do
_n = IO.read(:line)
a_list = IO.read(:line) |> String.trim() |> String.split(" ") |> Enum.map(&String.to_integer/1)
solve(a_list)
|> format()
|> IO.puts()
end
def solve(a_list) do
a_list
|> Enum.uniq()
|> Enum.sort()
end
defp format(list) do
count = Enum.count(list)
"#{count}\n#{Enum.join(list, " ")}"
end
end
Rust
RustはAI先生のお力をお借りして、Elixirのコードを置き換えてもらいました。
私は、Rustを勉強中です。万年勉強中です。闘魂にゴールはない。いつまでも挑戦中です。
私の解答(Rust)
use std::collections::BTreeSet;
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
let mut lines = stdin.lock().lines();
// 1行目は読み捨て(_n)
let _ = lines.next();
// 2行目の読み込み → i32のVecに変換
let a_line = lines.next().unwrap().unwrap();
let a_list: Vec<i32> = a_line
.split_whitespace()
.map(|s| s.parse().unwrap())
.collect();
// solve: 重複を除去して昇順ソート
let mut set = BTreeSet::new();
for a in a_list {
set.insert(a);
}
let result: Vec<i32> = set.into_iter().collect();
// format: 個数と中身を出力
println!("{}", result.len());
println!(
"{}",
result
.iter()
.map(|x| x.to_string())
.collect::<Vec<_>>()
.join(" ")
);
}
さいごに
AtCoder Beginner Contest 408をElixirとRustで解くことを楽しみました。
あなたのお好きなプログラミング言語でお楽しみください。
闘魂とは、 「己に打ち克つこと。そして闘いを通じて己の魂を磨いていくことである」 との猪木さんの言葉をそのまま胸に刻み込んでいます。
知っているだけで終わらせることなく、実行する、断行する、一歩を踏み出すことを自らの行動で示していきたいとおもいます。
アントニオ猪木さんのメッセージから元氣をもらったものとして、それを次代に語り継ぎ、自分自身が「闘魂」を体現するものでありたいとおもいます。
$\huge{元氣ですかーーーーッ!!!}$
$\huge{元氣があればなんでもできる!}$
$\huge{1、2、3 ぁっダァー!}$
