項ベクトルをつくります。...
移動
次へ 前へ
上へ 最上
参考
tv_add/2
tv_create/1
tv_get/3
tv_list/2
tv_set/3
tv_setsize/2
tv_size/2
イフコンピュータ > MINERVA > マニュアル > レファレンス > 述語 > 項ベクター > tv_create/1

tv_create/1

項ベクトルをつくります。

tv_create(-Vector)

tv_create/1は、項ベクトルをつくります。 Vectorは、新しい項ベクトルで単一化されます。

引き数

Vector                  変数

例題

% find all prime numbers between 1 and N
prime_sieve(N, Primes) :-
    % create a term vector
    tv_create(Vector),
    % set it's size to N and fill all elements to 'prime'
    init_sieve(Vector, N),
    % set all non prime numbers to 'not_prime'
    compute_primes(Vector, N),
    % collect all elements still marked with 'prime'
    collect_primes(Vector, N, Primes).

init_sieve(Vector, N) :- % set the vector size to N tv_setsize(Vector, N), % set all vector elements to 'prime' for(1, I, N), tv_set(Vector, I, prime), fail. init_sieve(_, _).

compute_primes(Vector, N) :- for(2, I, N), % if I is still marked as prime ... tv_get(Vector, I, prime), % ... mark all multiples of I as 'not_prime' filter_primes(Vector, I, I, N), fail. compute_primes(_, _).

filter_primes(Vector, I, Step, N) :- J is I+Step, J =< N, !, % mark all multiples of 'Step' as 'not_prime' tv_set(Vector, J, not_prime), filter_primes(Vector, J, Step, N). filter_primes(_, _, _, _).

collect_primes(Vector, N, Primes) :- % collect all elements still marked as 'prime' findall(I, isprime(Vector,I,N), Primes).

isprime(Vector, I, N) :- for(1,I,N), tv_get(Vector,I,prime).

標準

この述語は、ISO-Prolog 標準の要件ではありません。

以下も参照して下さい

tv_create/1, tv_add/2, tv_size/2, tv_setsize/2, tv_set/3, tv_get/3, tv_list/2.

続く..
MINERVA
ifcomputer logo
f
Expert Services on the Web
言語
English
Japanese
サーバー
USA
Japan
サイトマップ
索引
目次
全体目次
全体索引
印刷向き
imode
PDA
探索
document: http://www.ifcomputer.co.jp/MINERVA/Manual/Reference/Predicates/termvector/tv_create/home_jp.html
published 2008/10/13 update 2002/3/19 (c) 1996-2006 IF Computer Japan
IF Computer 〒113-0022 Tel 03-5814-3352 start (AT) ifcomputer.com
Customer Support 東京都文京区千駄木5-28-2   http://www.ifcomputer.co.jp
冒頭へ managed with ubiCMS