20
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

元気ですかーーーーッ!
元気があればなんでもできる
迷わず行けよ
行けばわかるさ

文章を縦書きにしてみます。
Elixirで楽しみます。

s = """
元気ですかーーーーッ!
元気があればなんでもできる
迷わず行けよ
行けばわかるさ
"""

list_of_lists = s |> String.split("\n") |> Enum.map(&String.codepoints/1)
cnt = list_of_lists |> Enum.max_by(&Enum.count/1) |> Enum.count |> Kernel.-(1)

(for j <- 0..cnt,
  do: list_of_lists
      |> Enum.map(fn list -> Enum.at(list, j, " ") end)
      |> Enum.reverse()
      |> Enum.join())
|> Enum.each(&IO.puts/1)

実行結果

スクリーンショット 2022-10-03 22.43.39.png

入力を細工

s = """
元気ですか||||ッ!
元気があればなんでもできる
迷わず行けよ
行けばわかるさ
"""

# あとは上記と同じ

実行結果

スクリーンショット 2022-10-03 22.44.30.png


追記

autoracexにて、@t-yamanashiさん、@Mnishiguchiさん、@tamanugiさんの検討会が行われていました。

@tamanugi さんが関数型っぽい書き方を紹介してくださいました。
感謝いたします。
感激の興奮冷めやらぬうちに追記いたしておきます。

Enum.zip/1を使う解法です。

["ドットコム", "どこが混むのと", "聞く上司"]
|> Enum.reduce({[], 0}, fn i, {a, b} -> {[i | a], max(String.length(i), b)} end)
|> then(fn {texts, l} -> Enum.map(texts, &String.pad_trailing(&1, l, " ")) end)
|> Enum.map(&to_charlist/1)
|> Enum.zip()
|> Enum.map(&Tuple.to_list/1)
|> Enum.each(&IO.puts/1)

スクリーンショット 2022-10-15 8.34.41.png


猪木さん風の言葉を再掲。

"""
元気ですか||||ッ!
元気があればなんでもできる
迷わず行けよ
行けばわかるさ
"""
|> String.split("\n")
|> Enum.reduce({[], 0}, fn i, {a, b} -> {[i | a], max(String.length(i), b)} end)
|> then(fn {texts, l} -> Enum.map(texts, &String.pad_trailing(&1, l, " ")) end)
|> Enum.map(&to_charlist/1)
|> Enum.zip()
|> Enum.map(&Tuple.to_list/1)
|> Enum.each(&IO.puts/1)

スクリーンショット 2022-10-03 22.44.30.png

20
2
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
20
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?