このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1339338438/817
#  [1] 授業単元:C言語 
#  [2] 問題文(含コード&リンク): 
#   
#  the fox jumps over the  dogs backというアルファベット文字列があるとする。 
#  最後は"."で仕切られているかどうかは問わない. 
#  文字列には数字は含まないことにする. 
#  大文字は小文字に変換する. 
#  そしてこれらを単語ごとに分解してその文字列を保持しなさい. 
#  そのとき構造体をつかい単語の文字数、対応する文字のASCIIコードを納める配列を作りデータを入れなさい. 
#  つまり構造体は以下のような形に例えば設定する; 
#   
#  struct dict {char word[NMOJI]; int nchar; int asciiword[NMOJI]; int order; } ; 
#   
#  ここでNMOJIは単語のことを考慮した一般的な数を想定してこの定義の前で#defineで設定しておく.orderは次で使う. 
#  1、すべての単語を整列させなさい.並び順は辞書にしたがう.順位をorderにしまいなさい. 
#  2、すべての単語を辞書整列分に並べなさい.これはorderに従う. 
#  3、単語を文字数の少ない分に並べなさい.これはncharに従う. 
#  まず上の例文で試しなさい.続いてWebで適当に集めた文書で独自に試しなさい. 
#   
#  文字列データの取り扱いでは、ポインタを使ってプログラムを作りなさい. 
#    
#   
#  

'the fox jumps over the  dogs backというアルファベット文字列があるとする。最後は"."で仕切られているかどうかは問わない.文字列には数字は含まないことにする.大文字は小文字に変換する.そしてこれらを単語ごとに分解してその文字列を保持しなさい.'
         大文字は小文字に変換する('the fox jumps over the  dogs back',_大文字を小文字に変換した文字列),
         単語ごとに分解して(_大文字を小文字に変換した文字列,_単語ならび),
         assertz(単語ならび(_単語ならび)).

大文字は小文字に変換する(_文字列,_大文字を小文字に変換した文字列) :-
        to_lower(_文字列,_大文字を小文字に変換した文字列).

単語ごとに分解して(_大文字を小文字に変換した文字列,_単語ならび) :-
        split(_大文字を小文字に変換した文字列,[' '],_単語ならび).

'すべての単語を整列させなさい.並び順は辞書にしたがう.順位をorderにしまいなさい'(_整列し順位付けられた単語ならび) :-
        単語ならび(_単語ならび),
        すべての単語を整列させて順位付けする(_単語ならび,_整列し順位付けられた単語ならび).

すべての単語を整列させて順位付けする(_単語ならび,_整列し順位付けられた単語ならび) :-
        sort(_単語ならび,_整列した単語ならび),
        findall([_順位,_単語],(
                    nth1(_順位,_整列した単語ならび,_単語)),
                _整列し順位付けられた単語ならび).

'単語を文字数の少ない分に並べなさい'(_文字数の少ない順の単語ならび) :-
        単語ならび(_単語ならび),
        findall([_文字数,_単語],(
                     member(_単語,_単語ならび),
                     atom_length(_単語,_文字数)),
                L),
        sort(L,L2),
        findall(_単語,(
                    member([_,_単語],L2)),
                _文字数の少ない順の単語ならび).