LoginSignup
5
5

More than 5 years have passed since last update.

[Ruby基礎学習] パターンの表示①

Posted at

はじめに

プログラミングなるものに挑戦してみようと、色々なプログラミング言語の本を本屋で何冊か見てみると、Rubyという言語がなんとなく好みだったのでRubyにした。
基礎本をとりあえず読んでみた。
分岐や繰り返しの連続っぽいので読む分には分からない部分をググりつつ見ればわかるが、いざ書こうとしてみると全然手が進まない。
英文はなんとなく意味がわかるが、喋れはしないのに似てるなと思った。
試行錯誤しながら書いてみることが大事なんだろうなと思ったので問題をやってみることにした。

問題

以下を表示する。

#####
####
###
##
#

解答

最初に思いついたのは以下だった。
でもなんだかこれだけのために変数を外側に宣言するのはイマイチな気がした。
他の言語と見てみると、count -= 1という部分はcount--みたいな書き方ができるみたいだけど、Rubyはできないらしい。
素人目にはcount -= 1count--も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") }

今のところ思いついている書き方は以上です。

問題の出典

  • プログラマの考え方がおもしろいほど身につく本 問題解決能力を鍛えよう!
5
5
6

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
5
5