ゴリラと学ぶ「Pythonでピラミッド」
ゴリラ🦍が自分たちの肉体でゴリラピラミッドをつくるということは、もうみんなごぞんじのとおりウホ。これまでにゴリは、太陽光からゴリラピラミッドの高さを測定したり、ピラミッドをつくっているゴリラの人数を数えたりしていたウホ。とにかくゴリラピラミッドは、ゴリラを構成要素とした立体的な問題をかんがえるときにけっこう便利ウホ。
そんなゴリラピラミッドについて色々考えるなら、ゴリラピラミッドをコンピュータ上であらわせるとシミュレーションもしやすいウホ!というわけで、さっそくゴリがよくつかっているPythonでゴリラピラミッドを出力させる方法をかんがえてみるウホ!
三次元的なやつはゴリにはよくわかんないから、とりあえず簡単にprint機能だけつかってつくってみるウホ。
もんだい
ゴリラピラミッドをPythonで出力してほしいウホ。出力はファイルとかじゃなくてコンソールにしてほしいウホ。
つくるゴリラピラミッドはつぎの条件で出来るウホ。
- 段数とその段を構成しているゴリラ🦍の数は等しいウホ。
- ある段がその段数と同じ数のゴリラで満たされた時、一段下がるウホ。
- 空いているスペースには適当に木🌲でもはやしておいてほしいウホ。
- 最後にはピラミッドの段数と、ピラミッドをつくっているゴリラの数を表示してほしいウホ。
🦍🦍🦍🦍🦍🦍🦍🦍🦍🦍🦍🦍
つくったもの
れいによって直観的なゴリラプログラミングをしていくウホ。変数の管理とかとりあえずおいといてバンバンかいてみるウホ。
で、つくったものが下の通りウホ。
段 = 1
ゴリラ = '🦍'
段のゴリラ = []
ゴリラカウンター = 0
目標の段 = 10
while 段 < 目標の段 + 1:
ゴリラカウンター += 1
段のゴリラ.append(ゴリラ)
print(ゴリラ, end = '')
if len(段のゴリラ) == 段:
print('🌲' * ((目標の段) - len(段のゴリラ)), end = '')
print('')
段 = 段 + 1
段のゴリラ = []
print(str(段-1) + '段つくることができたウホ!')
print('ゴリラは全部で' + str(ゴリラカウンター) + '人が参加したウホ。')
まずはいろいろと変数をきめておくウホ。段
はピラミッドの段数、ゴリラ
には🦍を入れているウホ。段のゴリラはリストとして、そこへゴリラを追加していくことであとでlen(段のゴリラ)
として段にいるゴリラを数えているウホ。それから、ゴリラカウンター
は段を一つ下げるときにつかうカウンターウホ。
目標の段では、作りたいピラミッドの段数を決めるウホ。input()
として入力してもらうのもよさそうウホ。
次のWhile 段 < 目標の段 + 1
では、<
がその右側の数よりも小さい数までループしてくれるから、段の数に+1して段の数までやってくれるようにしているウホ。今この文章かいてて<=
のほうがいいなとおもったけど、そこはてきとうにするウホ!
つぎに、while
の中では、ゴリラカウンターに+1したり、段のゴリラに一人ゴリラを追加したりしているウホ。
そして、if len(段のゴリラ) == 段:
では、今やっているのが何段目かを段の数から判断して、それが段にいるゴリラと同じなら、一段下げる処理をしているウホ。ついでに、空いているスペースには木🌲をはやしているウホ。
さいごにこのwhileループが終わったら、何段つくることができたかをしゅつりょくしているウホ。段-1
としているのは、最終的に段
に入っているのは一番最後の段目だから-1しているウホ。
これでプログラムのできあがりウホ。上のコードをそのままやると、出力は下のようになるウホ。
🦍🌲🌲🌲🌲🌲🌲🌲🌲🌲
🦍🦍🌲🌲🌲🌲🌲🌲🌲🌲
🦍🦍🦍🌲🌲🌲🌲🌲🌲🌲
🦍🦍🦍🦍🌲🌲🌲🌲🌲🌲
🦍🦍🦍🦍🦍🌲🌲🌲🌲🌲
🦍🦍🦍🦍🦍🦍🌲🌲🌲🌲
🦍🦍🦍🦍🦍🦍🦍🌲🌲🌲
🦍🦍🦍🦍🦍🦍🦍🦍🌲🌲
🦍🦍🦍🦍🦍🦍🦍🦍🦍🌲
10段つくることができたウホ!
ゴリラは全部で45人が参加したウホ。
きちんとゴリラピラミッドが出来てくれたウホ!
こたえ: 上の通り
目的としていたゴリラピラミッドができたウホ!もちろんこれは2次元的なゴリラピラミッドだから、3次元的なゴリラピラミッドをかんぺきにさいげんできているわけじゃないウホ。でも、ある側面からゴリラピラミッドをみたときとおなじようにあつかえるなら、これはこれでなかなかべんりそうウホ。
今後はさっそくこのゴリラピラミッドをつかっていろいろな計算問題とかプログラミングの問題を考えてみたいウホ。