このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 127代目 #953 # [1] 授業単元: ピラミッドアート # [2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9534.txt # 課題「ピラミッドアート」 # # 数値を一つ入力し、その個数分の'*'を1辺とする # ?ダイヤ型、?八角形、?星型 などを描画する # # 実行画面例?ダイヤ型 # 数字(2〜9)を入力してください:3 # * # *** # ***** # *** # * # # 実行画面例?八角形 # 数字(2〜9)を入力してください:2 # ** # **** # **** # ** # # 実行画面例?星型 # 数字(2〜9)を入力してください:7 # * * * # * * * # *** # ******* # *** # * * * # * * * # # --------------------------------------------- # オプション:描画する図形の内部を空白にする # # 実行画面例?ダイヤ型(中抜き) # 数字(2〜9)を入力してください:3 # * # * * # * * # * * # * # # 実行画面例?八角形(中抜き) # 数字(2〜9)を入力してください:2 # ** # * * # * * # ** # # 実行画面例?星型(中抜き) # 数字(2〜9)を入力してください:7 # * * * # * * * # *** # *** *** # *** # * * * # * * * ピラミットアート(ダイヤ型,N) :- M is 2 * N - 1, for(1,J,M), ピラミットアート行(_,M,J,L1), put_chars(L1),nl, J=M, M2 is M - 1, for(M2,K,1), ピラミットアート行(_,M,K,L2), put_chars(L2),nl, K = 1. ピラミットアート(八角形,N) :- M is N + 2 * (N - 1), N2 is N - 1, for(1,J,N2), J2 is N + 2 * J, ピラミットアート行(_,M,J2,L1), put_chars(L1),nl, J=N2, for(1,J2,N), ピラミットアート行(_,M,M,L2), put_chars(L2),nl, J=N, for(N2,K,1), K2 is N + 2 * K, ピラミットアート行(_,M,K2,L3), put_chars(L3),nl, K = 1. ピラミットアート行(_,M,J,L) :- length(L,M), length(L1,J), all(L1,'*'), append(L0,L1,L2,L), length(L0,Len0), length(L2,Len0), all(L0,' '), all(L2,' '). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% put_chars([]) :- !. put_chars([A|R]) :- write(A),put_chars(R). all([],_) :- !. all([A|R],A) :- all(R,A). append([],L1,L2,L) :- append(L1,L2,L). append([A|R1],L1,L2,[A|R]) :- append(R1,L1,L2,R).