このディレクトリの索引

# 出典 :: 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個の空白文字列'(1,' ') :- !. 'N個の空白文字列'(N,_空白文字列) :- 空白を積み上げてN個の空白文字列を作り上げて行く(N,_空白文字列). 空白を積み上げてN個の空白文字列を作り上げて行く(N,_空白文字列) :- succ(N_1,N), 'N個の空白文字列'(N,_空白文字列_1), atom_concat(' ',_空白文字列_1,_空白文字列). ピラミッド(_空白文字列,_星文字列) :- 最終行では成長してきた星文字列のみ表示する(_空白文字列,_星文字列). ピラミッド(_空白文字列,_星文字列) :- '両脇を先行してひとつ減らした空白で挟まれたピラミッド行を成長させて行く。星を二個ずつ増やしながら。'(_空白文字列,_星文字列). 最終行では成長してきた星文字列のみ表示する('',_星文字列) :- 表示する(_星文字列). '両脇を先行してひとつ減らした空白で挟まれたピラミッド行を成長させて行く。星を二個ずつ増やしながら。'(_空白文字列,_星文字列) :- sub_atom(_空白文字列,1,_,0,_空白文字列_1), '両脇を先行してひとつ減らした空白で挟まれたピラミッド行を表示する'(_空白文字列_1,_星文字列), '星を二個ずつ増やしながら。'(_星文字列,_星文字列_2), ピラミッド(_空白文字列_1,_星文字列_2). '両脇を先行してひとつ減らした空白で挟まれたピラミッド行を表示する'(_空白文字列,_星文字列) :- '両脇を先行してひとつ減らした空白で挟まれたピラミッド行を'(_空白文字列,_星文字列,_ピラミッド行文字列), 表示する(_ピラミッド行文字列). '両脇を先行してひとつ減らした空白で挟まれたピラミッド行を'(_空白文字列,_星文字列,_ピラミッド行文字列) :- atom_concat(_空白文字列,_星文字列,_ピラミッド行文字列_2), atom_concat(_ピラミッド行文字列_2,_空白文字列,_ピラミッド行文字列). 表示する(_ピラミッド行文字列) :- writef('%w\n',[_ピラミッド行文字列]). '星を二個ずつ増やしながら。'(_星文字列,_星文字列_2) :- atom_concat('**',_星文字列,_星文字列_2).