このディレクトリの索引

http://pc12.2ch.net/test/read.cgi/tech/1245853701/538
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9667.txt

# 課題1 スペースの挿入
# 
# 最大50文字のスペースを含まない文字列をターミナルから読み込み,各文字間にスペースを挿入したものを出力するプログラムを
# 作成しなさい. 
# 課題実行においては以下の点に注意すること.
# ・プログラム名は「space」とすること. 
# ・文字列の先頭と最後にはスペースを入れない. 
# ・ポインタを用いること.
# 
# 実行結果
# ./space
# abc
# a b c

space(_文字列,_スペースを挿入された文字列) :-
    atom_chars(_文字列,Chars),
    concat_atom(Chars,' ',_スペースを挿入された文字列).

concat_atom([],_,'') :- !.
concat_atom([A],_,A) :- !.
concat_atom([A|R],S,X) :-
    concat_atom(R,S,Y),
    atom_concat(A,S,B),
    atom_concat(B,Y,X).

課題2 Inner Product (内積)

# Write a program (innpro) to compute an inner product. 
# First, decide a degree of a vector, next input two vectors of 
# degree n, A and B, then the inner product is output. 
# The maximum degree of the vectors is 20. 
# Remarks.
# ・The name of the program must be innpro. 
# ・The inner product A=(a1,a2, ... ,an) and B=(b1,b2,...,bn) is a1*b1+a2*b2+...+an*bn. 
# 
# 実行結果
# ./innpro
# Degree: 5
# Data of A: 1 2 3 4 5
# Data of B: 2 3 4 5 6
# Inner Product: 70

innpro([],[],0) :- !.
innpro([A|R1],[B|R2],X) :-
    innpro(R1,R2,Y),
    X is A * B + Y.