Re: [卡關] 五人過橋

看板Little-Games (小遊戲)作者 (喲)時間16年前 (2009/10/27 17:56), 編輯推噓3(301)
留言4則, 4人參與, 最新討論串4/4 (看更多)
※ 引述《Satyria (零分!零分!)》之銘言: : http://www.plastelina.net/examples/games/game3.html : 先別急著噓 : 相信很多人都玩過 : 29秒過大家應該都會 : 可是老師說30秒也可以過 : 而且也有同學試出來 : 可是我想不到 : 請各位幫幫我 寫了Prolog程式解這題. 經過查詢: ?- move([1,3,6,8,12], [], Ss, Sq), Ss =< 30. Sq = [[1,3],[1],[6,1],[1],[8,12],[3],[1,3]] Ss = 29 ... (以下很多29的解) ?- move([1,3,6,8,12], [], Ss, Sq), Ss = 30. no 30步沒有解,29步的解不少,再多一點有31步和33步的解. 以下是程式,沒興趣的別往下看. %% -------------------------------------------- move(FromSet, _, Seconds, [FromSet]) :- length(FromSet, N1), N1 =< 2, !, max_num(FromSet, Seconds). move(FromSet, ToSet, Seconds, [Sent,Back|Sequence]) :- combination1(2, FromSet, Sent, FromSet1), append(Sent, ToSet, ToSet1), combination1(1, ToSet1, Back, ToSet2), append(FromSet2, ToSet2, S1, Sequence), max_num(Sent, S2), max_num(Back, S3), Seconds is S1 + S2 + S3. max_num([], 0). max_num([X|Y], X) :- max_num(Y, N), X > N. max_num([X|Y], N) :- max_num(Y, N), X =< N. combination1(0, _, [], []). combination1(1, X, [Z]) :- element_at(X, _, Z), set_diff(X, [Z], Z1). combination1(N, X, [Z1|Z2]) :- N > 1, N1 is N - 1, combination1(1, X, [Z1], _), combination1(N1, X, Z2, Z3), not(element_at(Z2, _, Z1)), set_diff(Z3, [Z1], Z4). set_diff([], _, []). set_diff([X|Y1], Y2, Z) :- element_at(Y2, _, X), !, set_diff(Y1, Y2, Z). set_diff([X|Y1], Y2, [X|Z]) :- set_diff(Y1, Y2, Z). element_at([X|_], 1, X). element_at([_|Y], N, Z) :- element_at(Y, N1, Z), N is N1 + 1. not(X) :- call(X), !, fail. not(X) :- true. %% --------------------------------------------------- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.112.228.190

10/27 18:41, , 1F
︿( ̄︶ ̄)︿
10/27 18:41, 1F

10/27 21:23, , 2F
囧......不認識的語言看不懂......不過還是推神人
10/27 21:23, 2F

10/27 21:56, , 3F
好說. 是正練習到剛好有能力解這題而已,不是神人.
10/27 21:56, 3F
※ 編輯: yauhh 來自: 59.112.228.190 (10/27 22:53)

10/27 22:56, , 4F
這語言很好玩的說 雖然已經快忘了怎麼寫
10/27 22:56, 4F
文章代碼(AID): #1AviEpOi (Little-Games)
討論串 (同標題文章)
本文引述了以下文章的的內容:
7
13
完整討論串 (本文為第 4 之 4 篇):
3
4
4
4
7
13
文章代碼(AID): #1AviEpOi (Little-Games)