このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1339338438/790
#  【質問テンプレ】 
#  [1] 授業単元:C言語 
#  [2] 問題文(含コード&リンク): 
#  数値を1つ入力し、その個数分の"*"を1辺とする 
#  \喫形 ∋鯵儼 5媚鯵儼 せ鯵儡 ゥ瀬ぅ箏 θ角形 Ю鰻舛鯢漸茲擦 
#   
#  ・繰り返しの条件指定の工夫のみの作成。 
#  ・描画部分のアルゴリズムでif文を使用しないこと 
#  ・1回のprintf()関数で出力できるものは「*」「 」「\n」のみ。 
#  ただし「*」の後ろに半角スペースを付加することはOK。 
#  ・各図形の描画は、それぞれ関数化されていること。 
#  ・2〜9以外の数字が入力されたら、エラーメッセージを出力して再入力させる。 
#  ・メニュー形式にして、どの図形を描画するか選択式にする 
#  さらに1回で終了せず描画後、メニューに戻ること。 
#  ・描画する図形の内部を空白にする。 
#   
#  入力させるメッセージは「数字(2〜9)を入力してください。」 
#  エラーメッセージは「エラー! 2〜9の数字を入力してください。」 
#  メニューは、1)正方形 2)三角形 3)逆三角形 4)三角旗 5)ダイヤ型 6)八角形 7)星形を表示し、 
#  そこから選ばせるようにすること。 
#  

三角旗(_n) :-
        旗の部分(1,_n),
        残りの竿の部分(_n).

旗の部分(_n),
        between(1,_n,M),
        竿のひと節,
        旗(_n),
        M = _n,

旗(_n,_n) :-
        一筋書く(_m),!.
旗(_m,_n) :-
        一筋書く(_m),
        _m_2 is _m + 1,
        旗(_m_2,_n),
        一筋書く(_m).

竿のひと節 :-
        write('*').

一筋書く(_m) :-
        between(1,_m,M),
        write('*'),
        _m = M,
        write('\n').
        
残りの竿の部分(_n) :-
        between(1,_n,M),
        竿のひと節,
        write('\n'),
        _n = M.