$\huge{元氣ですかーーーーッ!!!}$
はじめに
闘魂とElixirが出会いました。
闘魂 meets Elixir.です。
Elixir meets 闘魂.でもよいです。
本日は、String.split/3を説明します。
iex> "Elixir" |> String.graphemes() |> Enum.frequencies()
%{"E" => 1, "i" => 2, "l" => 1, "r" => 1, "x" => 1}
String.split/3
文字列を分割してくれます。
それでは、IExで確かめてみましょう。
iex
IExが立ち上がったら、以下のプログラムを実行してみてください。
iex> String.split("1 2 3", " ")
["1", "2", "3"]
第一引数の文字列を、第二引数のパターンで分割した文字列のリストを得られました
ワンポイントレッスン
ワンポイントレッスンです。
第二引数のパターン
第二引数のパターンには文字列だけではなく、文字列のリストや正規表現などを指定できます。
詳しくは、 String.split/3 をご参照ください。
省略もできます。
iex> String.split("1 2 3")
["1", "2", "3"]
第三引数のオプション
私は使ったことがありません。
公式の説明をペタっと貼っておきます。
AtCoder
AtCoderの問題を問いてみます。
問題は、PracticeA - Welcome to AtCoderを取り上げます。
まず問題の説明をします。
Inputが
1
2 3
test
である場合に、Outputを
6 test
にしてくださいという問題です。1行目と2行目の数字を足して、三行目の文字列と並べて表示しなさいという問題です。
早速答えです。
defmodule Main do
def main do
a = IO.read(:line) |> String.trim() |> String.to_integer()
[b, c] = IO.read(:line) |> String.trim() |> String.split(" ") |> Enum.map(&String.to_integer/1)
s = IO.read(:line) |> String.trim()
IO.puts "#{a + b + c} #{s}"
end
end
2行目の空白で区切られた数字の文字列を分割するときに、String.split/3を使っています。
AtCoderをElixirで闘うときに、String.split/3は使う場面がよくあるとおもいます。
「AtCoderをElixirでやってみる」は私が書いた記事です。AtCoderに取り組まれる方は参考にしてください。
今日の闘魂
今日は、長嶋茂雄さんの言葉を紹介します。
スターというのはみんなの期待に応える存在。
でもスーパースターの条件は、その期待を超えること。
解説は、こちらをご参照ください。
猪木さん流に言うと、「スターという人種は、注目を浴びれば浴びるほど能力を発揮する」ということです。
『アントニオ猪木 最後の闘魂』より引用します。
周囲からの期待を重圧と感じてしまうのは、それに応える自信がないからといえるかもしれない。(中略)スターになるには日頃から研鑽を積み、「自分ならできる!」という自信を確かなものにしていくことが大切だ。それができれば、周囲の期待はプレッシャーではなく、エネルギーに変わる。(中略)一つひとつ大きな舞台を乗り越えることで、自信と真の力をつけていったのだ。
一言で言うと、つまりは 闘魂 です。
「闘魂」とは、 「己に打ち克ち、闘いを通じて己の魂を磨いていくことである」 と猪木さんはおっしゃられています。プレッシャーに負けるのは、己に負けたからなのです。王陽明先生は言いました。「山中の賊を破るは易く、心中の賊を破るは難し」と。
『アントニオ猪木 最後の闘魂』
みなさまもぜひこの本をお手にとられて、猪木さんが残されたメッセージを通じて、直接猪木さんから「元氣」をもらってください。
ちなみに長嶋茂雄さんとアントニオ猪木さんの共通点は誕生日が2月20日だということです。さらに志村けんさんも2月20日です。さらにさらにちなみに私のリスペクトする先輩のお兄さんも2月20日生まれです。
さいごに
String.split/3を説明しました。
闘魂の意味は、 「己に打ち克ち、闘いを通じて己の魂を磨いていくことである」 との猪木さんの言葉をそのまま胸に刻み込んでいます。
知っているだけで終わらせることなく、実行する、断行する、一歩を踏み出すことを自らの行動で示していきたいとおもいます。
$\huge{1、2、3 ぁっダー!}$
Elixir Advent Calendar 3の18日目、いつもお馴染みの @torifukukaiou さんで、Stringモジュールの第二段、「String .split」です💁♂️https://t.co/mm8xWRbG0A
— piacere (love Elixir, Gravity and VR/AR/Metaverse) (@piacere_ex) December 18, 2022
今回は、AtCoderの問題を問くようです😆
実践で良く使う、強力な関数なので、Elixirにまだ慣れていない方は、マスターすると良いですよー😌
$\huge{元氣があればなんでもできる!}$