このディレクトリの索引
#  
#  【東電問題】汚染水を保存するためのタンクを毎日1個作るとします。
#  タンクは10日後には必ず壊れ作り直すとします。
#  タンク作製作業量はどのように変移するでしょうか?
#  なお、汚染水の移動作業、タンク点検作業などは考える必要はありません。

:- dynamic(タンク/3).


'【東電問題】汚染水を保存するためのタンクを毎日1個作るとします。
タンクは10日後には必ず壊れ作り直すとします。
タンク作製作業量はどのように変移するでしょうか?
なお、汚染水の移動作業、タンク点検作業などは考える必要はありません。'(_何日目,_作業量) :-
        'タンク作製作業量はどのように変移するでしょうか?'(_何日目,_作業量).


'タンク作製作業量はどのように変移するでしょうか?'(_何日目,_作業量) :-
        タンク作製作業量はどのように変移([_],_何日目,_作業量).


タンク作製作業量はどのように変移(_日の変数ならび,_何日目,_作業量) :-
        length(_日の変数ならび,_何日目),
        '汚染水を保存するためのタンクを毎日1個作るとします。',
        findall(_,'タンクは10日後には必ず壊れ作り直すとします。',_作り直した個数の変数ならび),
        length([_|_作り直した個数の変数ならび],_作業量).
タンク作製作業量はどのように変移(_日の変数ならび,_何日目,_作業量) :-
        一日経ちました(_日の変数ならび,_何日目,_作業量).

一日経ちました(_,_,_) :-
        retract(タンク(_状態,_経た日数)),
        assertz(タンク(_状態,[_|_経た日数])),
        fail.
一日経ちました(_日の変数ならび,_何日目,_作業量) :-
        タンク作製作業量はどのように変移([_|_日の変数ならび],_何日目,_作業量).


'汚染水を保存するためのタンクを毎日1個作るとします。' :-
        assertz(タンク(使えます,[])).

'タンクは10日後には必ず壊れ作り直すとします。' :-
        'タンクは10日後には必ず壊れ',
        '作り直すとします。'.

'タンクは10日後には必ず壊れ' :-
        retract(タンク(使えます,[_,_,_,_,_,_,_,_,_,_])),
        assertz(タンク(壊れました,[_,_,_,_,_,_,_,_,_,_])).

'作り直すとします。' :-
        assertz(タンク(使えます,[])).