いろんな言語で宿題 第五編at TECH
いろんな言語で宿題 第五編 - 暇つぶし2ch352:デフォルトの名無しさん
10/07/24 06:52:07
>>320
% Prolog

'1から100の数字の中から素数を抽出する (配列に直接数字を指定することは不可)-抽出した素数を大きい順(降順)にソートする-ソートした素数を1行につき5個表示する(6個目以降は次の行に表示する)' :-
    '1から100の数字の中から素数を抽出する'(L1),
    '抽出した素数を大きい順(降順)にソートする'(L1,L2),
    'ソートした素数を1行につき5個表示する'(L2).

'1から100の数字の中から素数を抽出する'(L1) :- findall(M,for(2,M,N),L),'エラトステネスの篩'(L,L1),!.

'抽出した素数を大きい順(降順)にソートする'(L1,L2) :- sort(L1,L3),reverse(L3,L2).

'ソートした素数を1行につき5個表示する'(L) :-
    '5個切り取り表示'(L,R),
    length(R,Len),
    Len < 5,
    '最終行は5個に満たないかもしれない(R),!.

'5個切り取り表示'(R,R) :- length(R,Len),Len < 5,!.
'5個切り取り表示'(L,R) :-
    'N個組'(5,L,X,R),
    concat_atom(X,' ',S1),
    write_formatted('%t\n',[S1]).

'N個組'(N,L,X,R) :-
    length(X,N),
    append(L0,X,R,L),
    length(L0,Len1),
    0 is Len1 mod N.

最終行は5個に満たないかもしれない(R) :- concat_atom(R,' ',S),write_formatted('%t\n',[S]).



次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch