В игре Stratego основной игровой механизм - когда вы атакуете фигуру противника своей. В этой задаче вам предстоит смоделировать одну из этих битв и сказать, кто выживет.
Спекуляции
В качестве входных данных вы получите пару строк, представляющих фигуры Stratego. Кусочки являются одним из "S 1 2 3 4 5 6 7 8 9 10 B"
( S
это шпион и B
бомбы). Первый из пары будет атакующим, а второй атакованным.
Вот правила определения результатов битвы:
- Чем выше число ударов меньшего числа:
["4", "6"] -> ["6"]
. - Если оба одинаковы, оба умирают
["7", "7"] -> []
. - Шпионы находятся в нижней части , под еще
1
:["S", "2"] -> ["2"]
. - Однако, если шпион атакует
10
, то шпион выигрывает:["S", "10"] -> ["S"]
. - Но нормальные правила все еще применяются , если
10
это один атакует:["10", "S"] -> ["10"]
. - Если что-то атакует бомбу, бомба побеждает
["5", "B"] -> ["B"]
. - Тем не менее, шахтер (а
3
) может обезвредить бомбу["3", "B"] -> ["3"]
. - Бомба никогда не будет атакующим.
- Споттер (а
1
) может атаковать с помощью обычного механизма, но он также может попытаться «угадать» ранг другого игрока, который можно обозначить с помощью любой вменяемой записи. - Если они угадают правильно, другой кусок умирает
["1(5)", "5"] -> ["1"]
. - Если они ошибаются, ничего не происходит
["1(3)", "5"] -> ["1", "5"]
. - Spotters может обнаружить бомбы:
["1(B)", "B"] -> ["1"]
.
Это код-гольф , поэтому выигрывает самый короткий код в байтах !
(Вы можете использовать примеры в качестве тестовых случаев, потому что мне лень собирать их все в один список).
code-golf
game
board-game
Maltysen
источник
источник
"Victory!"
для них, но не хотел слишком усложнять ситуацию2
s, и1
в моей игреОтветы:
Haskell, 131 байт
Это решение в форме инфиксной функции
#
с типомString -> String -> String
Ввод принимается через два строковых аргумента. Формат для ввода корректирующего сигнала -
1 x
гдеx
угадайте. Выходные данные задаются в виде строки. В случае, когда оба блока выживают, возвращаемая строка содержит оба, разделенные пробелом.Мое оригинальное решение, к сожалению, было ошибочным, и исправление стоило мне несколько байтов.
источник
Python,
180153 байтаФункция принимает в качестве аргументов атакующего, защитника и, возможно, догадку наблюдателя (если атакующий является наблюдателем). Возвращает массив, содержащий живые фрагменты, которые остались.
Ungolfed
демонстрация
https://repl.it/C6Oz/2
источник
([a,d],[a])[g==d]
->[a,d][:(g!=d)+1]
Javascript ES6,
9886 байтПринимает 3 аргумента (атакующий, защитник, догадчик).
Пример работы:
источник
f("1","10") -> ["1","10"]
а не"10"
.Javascript,
179166160 байтЭта функция принимает 3 аргумента: первый - атакующий, второй - для наблюдателей (их предположение), а третий - защитник.
Показать фрагмент кода
Значок меча прибывает из cliparts.co
источник
TSQL,
162124 байтаGolfed:
Ungolfed:
скрипка
источник