このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1280653311/273
#  [1] 授業単元: Cコーディング初級 
#  [2] 問題文(含コード&リンク): 
#  プログラムを実行した日がその年の第何週目にあるかを終了コードとして整数で返す  
# 週の頭は日曜から始まります
# 1月1日を含む週に4日以上ある場合に第1週となります
# つまり1月1日が日曜から始まっているときはその週が第1週ですが
# 1月4日が日曜から始まっているときはその週が第1週になります

プログラムを実行した日がその年の第何週目にあるかを終了コードとして整数で返す(_何週目) :-
        _時刻 is time,
        localtime(_時刻,_,_,_,_曜日番号,_何日目,_,_,_),
        _最初の日曜日 is (_何日目-_曜日番号) mod 7,
       '何週目か。1月1日が日曜から始まっているときはその週が第1週ですが1月4日が日曜から始まっているときはその週が第1週になります'(_1月最初の日曜日,_何日目,_曜日番号,_何週目).

'何週目か。1月1日が日曜から始まっているときはその週が第1週ですが1月4日が日曜から始まっているときはその週が第1週になります'(_1月最初の日曜日,_何日目,_曜日番号,_何週目) :-
        何週目か(_1月最初の日曜日,_何日目,_曜日番号,_何週目).

何週目か(_1月最初の日曜日,_何日目,_曜日番号,0) :-
        _1月最初の日曜日 > 3,
        _何日目 < _1月最初の日曜日,!.
何週目か(_1月最初の日曜日,_何日目,_曜日番号,1) :-
        _1月最初の日曜日 < 4,
        _何日目 < _1月最初の日曜日,!.
何週目か(_1月最初の日曜日,_何日目,_曜日番号,_何週目) :-
        _1月最初の日曜日 < 4,
        _何週目 is (_何日目 - _曜日番号 - _1月最初の日曜日) // 7 + 2,!.
何週目か(_1月最初の日曜日,_何日目,_曜日番号,_何週目) :-
        _1月最初の日曜日 > 3,
        _何週目 is (_何日目 - _曜日番号 - _1月最初の日曜日) // 7 + 1,!.