ITP1_5_A - Print a Rectangle
たてH cm よこ W cm の長方形を描くプログラムです。
1 cm × 1cm の長方形を '#'で表します。 入力は H W の形式で複数行与えられ、H, W がともに 0 のときが入力の終わりです。
ここをクリックして編集します.
Pythonでは文字列(String型)に対して乗算が定義されているのでそれを使ってみました。
ITP1_5_B - Print a Frame
フレームの描画です。入力は長方形の場合と同じですが、今回は外枠以外は以下のように . (ピリオド)で描画します。
ここをクリックして編集します.
ここをクリックして編集します.
最初と最後の行とそれ以外とで条件分岐しています。
文字列には当然、乗算だけでなく加算も定義されています。 ITP1_5_C - Print a Chessboard
以下のような、たてH cm よこ W cm のチェック柄の長方形を描くプログラムです。
ここをクリックして編集します.
ここをクリックして編集します.
チェック柄の単位 "#." を W//2 個づつ描画します。Wが奇数の時は末尾に1つ追加します。
1行描画毎に # と . を入れ替えています。 その他では、十分長さのある"#."の繰り返しの文字列を用意しておいて 偶数行では[0:W], 奇数行では[1:W+1]をスライスして描画するという方法でやっている人もいました。 ITP1_5_D - Structured Programming
本日最後は、少し今までとは毛色が変わって、以下のC++言語のプログラムと同じ動作をするプログラムをgoto 文は使わないで実装するというものです。
ここをクリックして編集します.
パッと見なにをやっているか分かりづらいかもしれませんが、注意深く追ってみると
3の倍数と3の付く数字の時だけ
という、いわゆる世界のナベアツ問題の類であることがわかります。 世界のナベアツ問題ということがわかれば、この内容を意訳してプログラムを書くこともできますが自分の回答は一応、出題のプログラム内容の構造を保ちつつ、goto文を使わないように書いてみました。
ここをクリックして編集します.
はじめに3の倍数かどうかの判定、そうでない場合に3の付く数字かどうかの判定を行っています。
ちなみにPythonだとこの判定の部分が
ここをクリックして編集します.
のように書けてしまうのでかなり簡潔になりますね。
感想
String型を演算できるのは面白かったです。Pythonでは全てのデータはオプジェクトでそれらに対する演算(演算子に対する振る舞い)も定義できるようなので、適切に設計されたコードでは様々な処理を簡潔に記述できるようになるのだろうなぁと感じました。
こうゆうところが面白いですね、Python。
0 コメント
あなたのコメントは、承認後に掲載されます。
メッセージを残してください。 |