Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.222.10.49] |
|
Сообщ.
#1
,
|
|
|
Два игрока играют в следующую игру. Перед ними лежат две кучки фишек, в первой из которых 3, а во второй - 5 фишек. У каждого игрока неограниченно много фишек. Ходят игроки по очереди. Делая очередной ход, игрок или увеличивает в какой-то кучке число фишек в 2 раза, или добавляет в какую-то кучку 2 фишки. Выигрывает тот игрок, после хода которого общее число фишек в двух кучках становится не менее 23. Выяснить, кто выигрывает при правильной игре - первый или второй игрок.
Но мне еще нужно добавить чтобы ходы игроков выводились в графическом виде. Вот моя попытка, но я думаю что это как то неправильно, как мне сделать чтобы было более наглядно? swap(1,2). swap(2,1). win(Winer,P,[A,B]):- A + B > 23, ! ,Winer = P. win(Winer,P,[A,B]):-swap(P,P1), write("\nGo player"), write(P1), A1 is A*2,win(Winer,P1,[A1,B]), write("\nbunch is: "), write(A1), write(","), write(B), B1 is B*2,win(Winer,P1,[A,B1]), write("\nbunch is: "), write(A), write(","), write(B1), A2 is A+2,win(Winer,P1,[A2,B]), write("\nbunch is: "), write(A2), write(","), write(B), B2 is B+2,win(Winer,P1,[A,B2]), write("\nbunch is: "), write(A), write(","), write(B2). win(P1,P,_):-swap(P,P1). Тесты: ?- win(1,2,[3,5]). Go player1 Go player2 Go player1 bunch is: 24,5 Go player2 bunch is: 12,5 Go player1 Go player2 bunch is: 6,10 Go player1 Go player2 bunch is: 8,5 Go player1 Go player2 bunch is: 6,7 bunch is: 6,5 Go player2 Go player1 Go player2 bunch is: 6,10 Go player1 bunch is: 6,20 bunch is: 3,40 bunch is: 5,20 bunch is: 3,22 bunch is: 3,20 Go player1 Go player2 bunch is: 5,10 Go player1 ... true. |
Сообщ.
#2
,
|
|
|
Какой? занятный язык
Добавлено 1. Первый выигрывает за один ход, если кучи (>=5, >=9) и (>=3, >=10) 2. Он проигрывает, когда своим ходом делает кучи из п.1, т.е. при (3, 9), (5, 8), (7, 7) 3. Первый выигрывает вторым ходом, если если первым приводит к ситуации из п.2, т.е. при (3, 7), (5, 6), (5, 7) 4. Тогда, если из (3, 5) сделать, что-то отличное от (5, 5), то проиграешь, т.е. первый побеждает из (3, 5) |
Сообщ.
#3
,
|
|
|
это вроде как Пролог, какой-то из вариантов. А что надо-то? Интерактивная игра, расчет вариантов для заданных А, Б и предела?
|