AOJの プログラミング入門 トピック5にチャレンジしました。
トピック5 構造化プログラムI
構造化プログラムⅠということで、チャレンジしていきます。
5_A:Print a Rectangle
5_Aは入力x,yに対して縦方向と横方向に"#"を表示し、四角形を作成するプログラムです。
無限ループで"0 0"が入力されるまで実行するように記述しました。
改行コードをとりたいので、end=""をprint文につけています。
最後、改行しないとERRORとなったのでprint("")を追加しました。
while True :
aaa,bbb=map(int,input().split())
if aaa==0 and bbb==0:
break
else:
for iii in range(aaa):
for jjj in range(bbb) :
print("#",end="")
print("")
print("")
5_B:Print a Frame
5_Bは###でなく#...#のように中身をドットで表示するプログラムです。
基本的に5_Aと同様で、最初の行、列と最後の行列だけ#にする条件文をいれてOKとなりました。
5_C:Print a Chessboard
5_Cは#.#.と交互に表示するプログラムです。
奇数・偶数と0番目かどうかを判定条件に入れて柵瀬資しました。
while True :
aaa,bbb=map(int,input().split())
if aaa==0 and bbb==0:
break
else:
for iii in range(aaa):
for jjj in range(bbb) :
if iii%2==0 or iii==0:
if jjj%2==0 or jjj==0:
print("#",end="")
else:
print(".",end="")
else :
if jjj%2==0 or jjj==0:
print(".",end="")
else:
print("#",end="")
print("")
print("")
5_D:Structured Programing
最後はC++のプログラムが書いてあり、それと同じ動作をするプログラムを作成する問題です。
C++の内容は
「入力値まで変数iを毎回+1していき、"i % 3 ==0"であればその値を出力する。
"i%3==0"でないとき、変数xにiを代入し、"x%10==3"であればその時のiの値を出力する、そうでなければx//10を実行し、其の商をxに代入して再度”x%10==3"であればiの値を表示する。」
です。
aaa = int(input())
iii=1
while iii < aaa+1 :
if iii%3==0 :
print(iii,end="")
print(" ",end="")
else:
x=iii
while x>0 :
if x%10==3:
print(iii,end="")
print(" ",end="")
break
else:
x//=10
iii+=1
これで329Byteのコード量ですが、Solutionsでほかの人が書いたコードを参照してみると5行ぐらいで書き上げている人もいて、とても参考になりました。