このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1309076891/12
#  【 課題 】疑似乱数を生成する java.util.Random クラスを使って、 
#  占いを行う Fortune クラスを作りなさい。fortune メソッドを作成し、 
#  そのメソッドに String クラスの 
#  インスタンスを渡せば名前占いを、 
#  また整数 (int) を渡せば誕生日占いを 
#  するようにしなさい。 
#  名前占いと誕生日占いのアルゴリズムは 
#  適当に決めなさい。 
#  占い結果は「絶好調!」「まあまあ」 
#  「絶不調orz」とし、 
#  それぞれ30%、40%、40%の確率で 
#  出るようにしなさい。 
#   
#   
#  【 形態 】1. Javaアプリケーション(main()で開始) 
#  【 GUI  】制限なし 
#  【 期限 】6/29 0:00まで 
#  【 Ver  】java.version 1.6.0_25 
#   
#  画像が消されてしまったようなので 
#  再書き込みさせてもらいました。 
#  本日中にお願いします。 
# 
# 

'擬似乱数を生成して、占いを行う'(_文字列または整数) :-
        '文字列を渡せば名前占いを、また整数 (int) を渡せば誕生日占いをする'(_文字列または整数,_占いの結果),
        writef('占いの結果は %t です。\n',[_占いの結果]).

'文字列を渡せば名前占いを、また整数 (int) を渡せば誕生日占いをする'(_文字列,占いの結果) :-
        atom(_文字列),
        名前占い(_文字列,_占いの結果).
'文字列を渡せば名前占いを、また整数 (int) を渡せば誕生日占いをする'(_整数._占いの結果) :-
        integer(_整数),
        誕生日占い(_整数,_占いの結果).

名前占い(_文字列,_占いの結果) :-
        atom_codes(_文字列,Codes),
        sum(Codes,Sum),
        N is Sum mod 12 + 1,
        '占い結果は「絶好調!」「まあまあ」「絶不調orz」とし、それぞれ30%、40%、40%の確率で出る'(N,_占い結果).

誕生日占い(_整数,_占いの結果) :-
        整数から星座を得る(_整数,_星座),
        nth1(_何番目,[牡牛座,双子座,蟹座,獅子座,乙女座,天秤座,蠍座,射手座,山羊座,山羊座,水瓶座,魚座],_星座),
        '占い結果は「絶好調!」「まあまあ」「絶不調orz」とし、それぞれ30%、40%、40%の確率で出る'(_何番目,_占い結果).

'占い結果は「絶好調!」「まあまあ」「絶不調orz」とし、それぞれ30%、40%、40%の確率で出る'(N,_占い結果) :-
        擬似乱数を生成する(_擬似乱数),
        _判定数 is ((_擬似乱数 * N) mod 110) + 1,
        '占い結果は「絶好調!」「まあまあ」「絶不調orz」とし、それぞれ30%、40%、40%の確率で出る'(_判定数,_占い結果).

'占い結果は「絶好調!」「まあまあ」「絶不調orz」とし、それぞれ30%、40%、40%の確率で出る'(_判定数,'絶好調!') :-
        _判定数 >= 1,
        _判定数 =< 30.
'占い結果は「絶好調!」「まあまあ」「絶不調orz」とし、それぞれ30%、40%、40%の確率で出る'(_判定数,まあまあ) :-
        _判定数 >= 31,
        _判定数 =< 70.
'占い結果は「絶好調!」「まあまあ」「絶不調orz」とし、それぞれ30%、40%、40%の確率で出る'(_判定数,'絶不調orz') :-
        _判定数 >= 71,
        _判定数 =< 110.

名前占い(_文字列,_占いの結果) :-
        atom_codes(_文字列,Codes),
        sum(Codes,Sum),
        N is Sum mod 12 + 1,
        '占い結果は「絶好調!」「まあまあ」「絶不調orz」とし、それぞれ30%、40%、40%の確率で出る'(N,_占い結果).

誕生日占い(_整数,_占いの結果) :-
        整数から星座を得る(_整数,_星座),
        nth1(_何番目,[牡牛座,双子座,蟹座,獅子座,乙女座,天秤座,蠍座,射手座,山羊座,山羊座,水瓶座,魚座],_星座),
        '占い結果は「絶好調!」「まあまあ」「絶不調orz」とし、それぞれ30%、40%、40%の確率で出る'(_何番目,_占い結果).

擬似乱数を生成する(_擬似乱数) :-
        _擬似乱数 is random(3521).

整数から星座を得る(_整数,_星座) :-
        _月 is _整数 // 100,
        _日 is _整数 mod 100,
        星座判定(_月,_日,_星座).

星座判定(_月,_日,_星座) :- 
        星座(_星座,_月下限/_日下限-_月上限/_日上限), 
        _月 = _月下限, 
        _月 = _月上限, 
        _日 >= _日下限, 
        _日 =< _日上限,!. 
星座判定(_月,_日,_星座) :- 
        星座(_星座,_月下限/_日下限-_月上限/_日上限), 
        _月 = _月下限, 
        _日 >= _日下限,!. 
星座判定(_月,_日,_星座) :- 
        星座(_星座,_月下限/_日下限-_月上限/_日上限), 
        _月 = _月上限, 
        _日 =< _日上限,!. 

星座(牡牛座,4/21-5/21). 
星座(双子座,5/22-6/21). 
星座(蟹座,6/22-7/22). 
星座(獅子座,7/23-8/22). 
星座(乙女座,8/23-9/23). 
星座(天秤座,9/24-10/23). 
星座(蠍座,10/24-11/22). 
星座(射手座,11/23-12/21). 
星座(山羊座,12/22-12/31). 
星座(山羊座,1/1-1/20). 
星座(水瓶座,1/21-2/18). 
星座(魚座,2/19-3/20).