Это пятница ... так что давайте поиграем в гольф! Напишите код, который определяет выигрыш игрока на лунке в игре в гольф. Код может быть либо функцией, либо всей программой. Как подсказывает жанр, выигрывает самый короткий код.
Ввод (параметры или стандартный ввод, ваш выбор):
- Целое число, представляющее номинал отверстия, гарантированно от 3 до 6
- Целое число, представляющее счет игрока в гольф, гарантировано от 1 до 64
Вывод (печать в stdout или return, завершающий перевод новой строки разрешен, но не обязателен, на ваш выбор):
- если оценка равна 1, выведите «Hole in one»
- если оценка == пар - 4 и пар> 5, выведите «Condor»
- если оценка == пар - 3 и пар> 4, выведите «Альбатрос»
- если оценка == пар - 2 и пар> 3, выведите «Eagle»
- если оценка == пар - 1, выведите «Birdie»
- если оценка == номинальная, выведите «Par»
- если оценка == пар + 1, выведите «Bogey»
- если оценка == пар + 2, выведите «Double Bogey»
- если оценка == пар + 3, выведите «Triple Bogey»
- если оценка> пар + 3, выведите «Хаха, ты неудачник»
РЕДАКТИРОВАТЬ Поздравляем Дениса с кратчайшим ответом!
code-golf
kolmogorov-complexity
мистифицировать
источник
источник
Ответы:
Желе , 61 байт
Попробуйте онлайн!
Задний план
Это использует статическое сжатие словаря Jelly. Вы можете найти компрессор здесь . Сюда,
а также
так же как
а также
эквивалентны.
Как это работает
источник
PHP 5.3+,
Безотказная версия,173167166159156151127121 байт139137 байтУстановите переменные
в разобранном виде$s
core и$p
ar передecho
и вы отключены.Редактирует
-6: Не хранить массив, просто вызывать его, если это необходимо.
-1: переворачивать троичную.
-7: Наименьшее
$s-$p
с$s>1
это-4
, так чтоmax()
не является необходимым, так как4+$s-$p >= 0
.-3:,
Array -> explode()
спасибо CoolestVeto!-5: чит-
строковый литерал снеопределенной константой плюс$r[-1] -> false
, спасибо Измаил Мигель!-24: переход от
explode()
функции к настройкеprintf
/%s
с некоторыми изменениями, еще раз спасибо Исмаилу Мигелю за смену направления.-6: Swerve , мы вернулись к
echo
снова!источник
$b="Bogey";
на,$b=Bogey;
чтобы сохранить 2 байта. Также замените ваш$s-1? ... : ...;
наecho ... ?: ...;
. Вот 151-байтовая длинная версия:function g($s,$p){$b=Bogey;echo explode("-","Condor-Albatross-Eagle-Birdie-Par-$b-Double $b-Triple $b-Haha you loser")[min(4+$s-$p,8)]?:"Hole in one";}
printf([Condor,Albatross,Eagle,Birdie,Par,'%s','Double %s','Triple %s','Haha you loser'][min(4+$argv[1]-$argv[2],8)]?:'Hole in one',Bogey);
. В основном: удалил объявление функции, удалилexplore
, удалил кавычки, использовал массив и использовал$argv
. Окончательный код длиной 139 байт.05AB1E ,
9190 байтКод:
Объяснение:
Часть 1:
Часть 2:
Это то же самое, что
"Condor Albatross Eagle Birdie Par 0Bogey Double0Bogey Triple0Bogey"
использование сжатия строк и интерполяции строк. Затем мы разбиваем на пробелы, используяð¡
.Часть 3:
Обнаружено много ошибок, используется кодировка CP-1252 .
Попробуйте онлайн!
источник
Витси, 131 байт
Объяснение:
Это работает, вычисляя, что оценка относится к номиналу, затем выполняя различные строки (и получая разные строки).
Попробуйте онлайн!
Подробный режим (для какашек и хихиканья):
источник
JavaScript (ES6),
125124 байтаПрисвойте переменной, например
f=p=>s=>
, затем назовите ее так:f(6)(2)
сначала Par, а затем Score.Может быть в состоянии быть сокращенным, комбинируя
"Bogey"
s.источник
",Double ,Triple ".split`,`[k-1]+"Bogey"
гдеk=s-p
.LittleLua - 160 байт (неконкурентный)
Я относительно уверен, что сделал это правильно.
Принимает два целых числа, номинал и рейтинг игрока.
Версия Little Lua, которую я использовал для этого, была загружена после публикации этого вызова, но впоследствии не редактировалась. Из кода относительно очевидно, что ничего не было добавлено, чтобы упростить эту задачу
LittleLua Info:
Как только я буду удовлетворен встроенными модулями и функциональностью Little Lua, источник будет доступен вместе с информационной страницей.
LittleLua V0.02
источник
Мышь-2002 ,
223207 байтУдаление комментариев, вероятно, поможет ...
Ungolfed:
источник
bash,
150136 байтТестовый забег:
Спасибо Деннису за 14 байтов!
источник
Python 2,
186179158 байтРЕДАКТИРОВАТЬ 1: добавлено недостающее "отверстие в одном" случае ...
РЕДАКТИРОВАТЬ 2: игра в гольф несколько байтов (благодаря TAC)
источник
4
иelse
print
и{
, и если вы используете точку с запятой для того, чтобы поставитьa=
иprint
в одну и ту же строку, вы можете сбрить байт пробелаHaskell - 131 байт (с учетом перевода строки)
lines
это единственный способ, которым я могу придумать игру в гольф в списке строк, которые должны содержать пробелы с доступом только кPrelude
таким двум символам-разделителям.Тем не менее, Haskell обычно не настолько конкурентоспособен (по крайней мере, по отношению к общим языкам).
источник
import
делать все что угодно, не только встроенныеPython 2,7, 226 байт
Трудно придумать короткий код на Python, когда вы опаздываете на вечеринку, лучше всего я мог придумать.
источник
[print r for r in l if r]
C 198 байт
источник
Japt, 97 байт
Содержит кучу непечатных. Проверьте это онлайн!
Как это работает
источник
Python 2.7.2, 275 байт
Ungolfed / объяснил:
Мой второй ответ, по иронии судьбы оба в Python. Гольф советы приветствуются!
источник
b
.int
автоматически преобразует ваши данные .Python 2,
302284 байтаЕсли разрешить начальное пустое пространство, это будет 282 байта:
источник