はじめに
プログラミングなるものに挑戦してみようと、色々なプログラミング言語の本を本屋で何冊か見てみると、Rubyという言語がなんとなく好みだったのでRubyにした。
基礎本をとりあえず読んでみた。
分岐や繰り返しの連続っぽいので読む分には分からない部分をググりつつ見ればわかるが、いざ書こうとしてみると全然手が進まない。
英文はなんとなく意味がわかるが、喋れはしないのに似てるなと思った。
試行錯誤しながら書いてみることが大事なんだろうなと思ったので問題をやってみることにした。
問題
以下を表示する。
#####
####
###
##
#
解答
最初に思いついたのは以下だった。
でもなんだかこれだけのために変数を外側に宣言するのはイマイチな気がした。
他の言語と見てみると、count -= 1
という部分はcount--
みたいな書き方ができるみたいだけど、Rubyはできないらしい。
素人目にはcount -= 1
もcount--
もcountから1引いてるだけだから一緒なんじゃないかなと思えるけれど、どう違うんだろう。
count = 5
5.times do
print("#" * count + "¥n")
count -= 1
end
次にこうやってみたけれど、外側は特にfor文である必要もないなと思った。
5..1
ってすれば数字を減らしてくれるかなと思ったけどそんなことはなかった。
でもエラーは出ないし、無限ループが発生することもなかったのでどういう解釈されているんだろう?と気になった。
for i in 1..5
for j in 5..1
print("#" * j)
end
print("¥n")
end
調べてみたら、upto
とかdownto
とかいうのがあるらしい。
使ってみたら3行になった。
5.downto(1).do |i|
print("#" * i + "¥n")
end
1行でも書けるみたいなので上のを1行にしてみた。
すっきりしたなー!と思った。
5.downto(1){ |i| print("#" * i + "¥n") }
今のところ思いついている書き方は以上です。
問題の出典
- プログラマの考え方がおもしろいほど身につく本 問題解決能力を鍛えよう!