このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1289913298/620
#  [1] 授業単元:プログラミング及び演習  
#  [2] 問題文(含コード&リンク):コマンド名 vhswitch に続く記号「-n」の後に「繰り返し数」を、「-s」の後に「文字列」 
#  を、さらに「-v」または「-h」を書きます。 
#  コマンドラインから次のように入力します。スイッチ「-v」が入力された場合は垂直方向に文字列を表示します。 
#  例) $./vhswitch -n 3 -s "abcdef" -v <Enter> 
#      abcdef 
#      abcdef 
#      abcdef 
#  一方。スイッチ「-h」が入力された場合は水平方向に文字列を表示します。 
#  例)$./vhswitch -s "abcdef" -h -n 3 <Enter> 
#                                 
#  このような実装をするプログラムを書け。 
#  〜プログラムの一部分の骨子〜 
#   http://ime.nu/codepad.org/pXaw5yU8  
#                                     
#  

'コマンド名 vhswitch に続く記号「-n」の後に「繰り返し数」を、「-s」の後に「文字列」を、さらに「-v」または「-h」を書きます。コマンドラインから次のように入力します。スイッチ「-v」が入力された場合は垂直方向に文字列を表示します。' :-
        user_parameters(L),
        パラメータで指定された繰り返し数(L,_繰り返し数),
        パラメータで指定された文字列(L,_文字列),
        'パラメータで指定された-vまたは-hオプション'(L,_v_または_h),
        length(Ln,_繰り返し数),
        文字列を表示する(Ln,_文字列,_v_または_h).

パラメータで指定された文字列(L,_文字列) :-
        append(_,[['-s',S|_],_,L),!.

パラメータで指定された繰り返し数(L,_繰り返し数) :-
        append(_,[['-n',_繰り返し数|_],_,L),!.
        
'パラメータで指定された-vまたは-hオプション'(L,v) :-
        append(_,[['-v'|_],L),!.

'パラメータで指定された-vまたは-hオプション'(L,h) :-
        append(_,[['-h'|_],L),!.

文字列を表示する([],_,_) :- !.
文字列を表示する([_|Ln],_文字列,v) :-
        atom_chars(_文字列,Chars),
        append(_,[_文字|_],Chars),
        write_formatted('%t\n',[_文字]),
        文字列を表示する(Ln,_文字列,v).
文字列を表示する([_|Ln],_文字列,h) :-
        write_formatted('%t\n',[_文字列]),
        文字列を表示する(Ln,_文字列,v).