この記事は何
shellgei160を通じて言語習得 Advent Calendar 2023に参加しています。
書籍「シェル芸ワンライナー160本ノック」の例題をRubyで解いてみて、Rubyの学習に役立てようとするものです。
例題はこちらのリポジトリで公開されているものに限ります。
https://github.com/shellgei/shellgei160
実行環境など
- Docker image: ruby:3.0.2
- 上記リポジトリをクローンした上で、リポジトリのルートディレクトリ直下に
answer-ruby
ディレクトリを作り、その中に解答となるファイルを作成していきます。
今回のテーマ
$ seq 5 | awk '{for(i=1;i<$1;i++){printf " "};print "x"}' | tac
次のような文字列を表示する処理です。
x
x
x
x
x
for文で徐々にスペースを開けるようにしながら、最後にtac
で上下を反転させています。
解
n_lines = 5
puts (1..n_lines).map { |i| "#{' ' * (i - 1)}x" }.reverse
所見
- ワンライナー感ありますね!こういう処理を書くにはRuby完結で良き。