Eason
2010-06-24 10:19:57
未經測試的NEXT()原始碼
做為一個程式設計師,這是我看過的最能讓我聯想起工作的電影。以致於我非常想用程序來解釋一下電影的邏輯。
因為影片中男主沒有在「預見」前表現出任何愁眉凝視或大聲小聲的喊出必殺技的名字,所以可以認為男主的腦子裡有一個進程專門處理「預見」,並不需要他特意驅動。
因為改變的某個未來會影響整個過程,所以改變後要在改變的基礎上「預測」。一旦遇到難以挽回的「DeadEnd」則預測歸零重來。
以下是代碼,其中未經定義的函數均有上帝提供。
未經測試~~
ARRAY LINE=NULL; //這個是兩分鐘的安全行動隊列
Next(NOW,120);
LINE;
FUNCTION String NEXT(NOW,SPAN)
{
Int ISDeadEnd;
//因為主角一開始只能預見2分鐘的內容所以循環時間為120秒
For (INT i=0;i< SPAN;i++)
{
DefaultActvalue=actvalue;//這一秒的預設行為
//判斷i秒後的危險值,有危險返回true循環操作指導安全
WHILE(ISDangours(i,GetAction(Actvalue)))
{
IF(ISDangours(I,GetAction(Actvalue))==」DeadEnd」)
{
IsDeadEnd=1;
Continue;
}
Actvalue=GetReActValue();
}
IF(IsDeadEnd!=1)
{
IF(DefaultActvalue!=Actvalue)
{
NEXT(NOW+I,SPAN-I); //當發現某一秒的安全行為和預設行為不同時
}
Else
{
LINE.ADD(Actvalue); //沒有危險時把安全行為假如行為隊列
I++;
}
}
ELSE
{
LINE.DEL(ALL);
I=0;
}
}
SetTimeOut(Next(),120);//2分鐘後再調用
}