このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 132代目 #438 # 1] 授業単元: プログラミング実習 # [2] 問題文(含コード&リンク): # http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10181.txt # # 〜課題2〜 # 変数nを入力すると、以下の図のような表示を行うプログラムをそれぞれ作成せよ。ただし、図はn=5の場合である。 # 1つのプログラムとして作成せよ。 # # *   # *** # ***** # ******* # ********* ピラミッド(N) :- 'N個の空白ならび'(N,_n個の空白ならび), ピラミッド(_n個の空白ならび,*). 'N個の空白ならび'(N,_n個の空白ならび) :- findall(' ',between(1,N,_),_n個の空白ならび). ピラミッド(L1,_星文字列) :- 最終行では成長してきた星文字列のみ表示する(L1,_星文字列). ピラミッド(L1,_星文字列) :- '両脇を先行してひとつ減らした空白で挟まれたピラミッド行を成長させて行く。星を二個ずつ増やしながら。'(L1,_星文字列). 最終行では成長してきた星文字列のみ表示する([],_星文字列) :- 表示する(_星文字列). '両脇を先行してひとつ減らした空白で挟まれたピラミッド行を成長させて行く。星を二個ずつ増やしながら。'([_|L1],_星文字列) :- '両脇を先行してひとつ減らした空白で挟まれたピラミッド行を表示する'(L1,_星文字列), '星を二個ずつ増やしながら。'(_星文字列,_星文字列_2), ピラミッド(L1,_星文字列_2). '両脇を先行してひとつ減らした空白で挟まれたピラミッド行を表示する'(L1,_星文字列) :- '両脇を先行してひとつ減らした空白で挟まれたピラミッド行を'(L1,_星文字列,_ピラミッド行文字列), 表示する(_ピラミッド行文字列). '両脇を先行してひとつ減らした空白で挟まれたピラミッド行を'(L1,_星文字列,_ピラミッド行文字列) :- append(L1,[_星文字列|L1],L2), atomic_list_concat(L2,_ピラミッド行文字列). 表示する(_ピラミッド行文字列) :- writef('%w\n',[_ピラミッド行文字列]). '星を二個ずつ増やしながら。'(_星文字列,_星文字列_2) :- atom_concat('**',_星文字列,_星文字列_2).