このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1276810079/523
#  [1] 授業単元: Visual Studio 入門  
#  [2] 問題文 3問ほどあるのでリンクを  
#  http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10782.txt  
#  
# 問題3
# 下に示すように,行数と列数を読み込み,1 行目には1234567890…を列数の個数だけ,2 行
# 目には2345678901…を列数の個数だけ,…と表示するプログラムを作成せよ.
# 
# 何行ですか: 7
# 何列ですか: 12
# 123456789012
# 234567890123
# 345678901234
# 456789012345
# 567890123456
# 678901234567
# 789012345678

'行数と列数を読み込み,1 行目には1234567890…を列数の個数だけ,2 行目には2345678901…を列数の個数だけ,…と表示する' :-
        '行数と列数を読み込み(_行数,_列数),
        '1から始める数字循環を生成'(_行数,_列数,L),
        length(L1,_列数),
        append(L0,L2,L),
        行数分表示をする(_行数,L0,L1,L2).

行数と列数を読み込み(_行数,_列数) :-
        write('行数を入力してください : '),get_integer(_行数),
        write('列数を入力してください : '),get_integer(_列数).

'1から始める数字循環を生成'(_行数,_列数,L) :-
        M is _行数 + _列数,
        '数字循環を生成'(1,M,L).

'数字循環を生成'(N,M,[]) :- N > M,!.
'数字循環を生成'(N,M,[X|R]) :- X is N mod 10,N2 is N + 1,'数字循環を生成'(N2,M,R).

行数分表示する(_行数,L0,_,_) :- length(L0,_行数),!.
行数分表示する(_,L0,L1,L2) :-
        append(L1,_,L2),
        concat_atom(L1,S),
        write_formatted('%t\n',[S]),
        fail.