$\huge{元氣ですかーーーーッ!!!}$
$\huge{元氣があればなんでもできる!}$
$\huge{闘魂とは己に打ち克つこと。}$
$\huge{そして闘いを通じて己の魂を磨いていく}$
$\huge{ことだと思います}$
はじめに
闘魂とElixirが出会いました。
闘魂 meets Elixir.です。
Elixir meets 闘魂.でもよいです。
この記事を書くにあたって使ったテクニックを特出しして記事にしておきます。
iex> "Elixir" |> String.graphemes() |> Enum.frequencies()
%{"E" => 1, "i" => 2, "l" => 1, "r" => 1, "x" => 1}
この記事は、もくもく会イベント autoracex #177 の成果です。
対象とする読者
プログラミングを楽しんでいるそこのあなた。
特に、「闘魂プログラミング(ストロングスタイル)」を楽しんでいるそこのあなた。
「わたしが長年夢であった本当の Elixirを通じて プログラミングを通じて 世界平和(を)必ず実現します!」に共感していただけるそこのあなた。
つまりは
$\huge{全人類}$
です。
$\huge{For You All}$
です。
ANSIエスケープコードとは
こちらの記事を参照してください。
ありがとうございます!
ありがとうございます!
ありがとうございます!
いろいろと使いみちはあるのだとおもいます。
私はコンソールの出力を上書きすることで使ってみたいとおもっています。
コンソールの出力を上書きする
「コンソールの出力を上書きする」とはこういうことです。
他には進捗プログレスの表示などに使えそうです。
コード例
さきほどのアニメーションGIFのコードを示します。
words = ~w(闘 魂 猪 木 燃 🔥)
f = fn ->
for _i <- 1..5 do
for _j <- 1..5 do
Enum.random(words)
end
|> Enum.join()
end
|> Kernel.++(["\e[5A"])
|> Enum.join("\n")
end
print = fn
lines, 100 -> lines |> String.slice(0..28) |> IO.puts()
lines, _ -> IO.write(lines)
end
1..100
|> Enum.each(fn i ->
Process.sleep(50)
f.()
|> print.(i)
end)
ESC[nA
(カーソルを上にn移動させる。(nには整数が入る、省略すると1))を使っています。
Elixirのプログラムでは、"\e[5A"
のところです。
今回は5行出力しているので上に5行移動させることにしています。
おまけ
words = ~w(闘 魂 猪 木 燃 🔥)
f = fn ->
for _i <- 1..5 do
for _j <- 1..5 do
Enum.random(words)
end
end
end
print = fn
lines, :halt -> lines |> String.slice(0..28) |> IO.puts()
lines, :cont -> IO.write(lines)
end
Stream.iterate(0, &(&1 + 1))
|> Enum.reduce_while(0, fn i, _acc ->
Process.sleep(1)
lines = f.()
Enum.at(lines, 2)
halt_or_cont =
if Enum.at(lines, 2) == ~w(燃 闘 魂 猪 木) do
:halt
else
:cont
end
lines
|> Enum.map(&Enum.join/1)
|> Kernel.++(["\e[5A"])
|> Enum.join("\n")
|> print.(halt_or_cont)
{halt_or_cont, i}
end)
|> IO.puts()
3行目に「燃える闘魂アントニオ猪木」 = 燃闘魂猪木 が並ぶまで繰り返してみました。
上のアニメーションGifでは6541
と表示されたときに、 燃闘魂猪木 が3行目に並んでいます。
さいごに
この記事では、「コンソールの出力を上書きする」ことをElixirで行う例を示しました。
闘魂とは、 「己に打ち克つこと。そして闘いを通じて己の魂を磨いていくことである」 との猪木さんの言葉をそのまま胸に刻み込んでいます。
知っているだけで終わらせることなく、実行する、断行する、一歩を踏み出すことを自らの行動で示していきたいとおもいます。
アントニオ猪木さんのメッセージから元氣をもらったものとして、それを次代に語り継ぎ、自分自身が「闘魂」を体現するものでありたいとおもいます。
$\huge{1、2、3 ぁっダァー!}$
$\huge{元氣ですかーーーーッ!!!}$
$\huge{元氣があればなんでもできる!}$
$\huge{1、2、3 ぁっダァー!}$