Golf Challenge
Учитывая ниже ASCII "Зеленый".
| |
| |> |
| | |
| O |
| |
| |
| |
| |
| |
| |
Позвольте |
Обозначить стену
Позвольте |
Обозначить половину полюса флага
Позвольте >
Обозначить флаг на полюсе
Позвольте O
Обозначить отверстие
Позвольте o
Обозначить шар
Размеры "зеленого" составляют 10х10. Между двумя стенами есть десять мест |
.
Есть также десять пробелов, пустых или нет между верхней и нижней частью зеленого.
Вызов
Введите значения x и y или сгенерируйте два случайных числа, чтобы «выстрелить» в гольф мяч для гольфа.
Если сгенерированный x, y не касается отверстия или вывода полюса / флажка "Попробуйте еще раз!"
Если сгенерированный x, y попадет в отверстие, выведите «Hole in One!»
если сгенерированный x, y попадет на полюс, то "Lucky Shot!"
если сгенерированный x, y попадет во флаг, выведите «Close One!»
После выстрела выведите местоположение мяча на зеленый с помощью o
символа, заменяя любой ударенный символ. Также выведите соответствующее высказывание выше.
Примеры:
//Hole in one example, the O was replaced with a o
Randomed x = 3
Randomed y = 4
"Hole in One!"
| |
| |> |
| | |
| o |
| |
| |
| |
| |
| |
| |
//Clone example, the top half of the pole was replaced with a o
Randomed x = 3
Randomed y = 2
"Lucky Shot!"
| |
| o> |
| | |
| O |
| |
| |
| |
| |
| |
| |
//Lucky Shot example, the > was replaced with a o
Randomed x = 4
Randomed y = 2
"Close One!"
| |
| |o |
| | |
| O |
| |
| |
| |
| |
| |
| |
//Try Again example, the <space> was replaced with a o
Randomed x = 5
Randomed y = 1
"Try Again!"
| o |
| |> |
| | |
| O |
| |
| |
| |
| |
| |
| |
Удачи и удачи, и, как это код-гольф, выигрывает самый короткий код!
Ответы:
JavaScript (ES6)
210208193184 байтадемонстрация
источник
Желе , 78 байт
Сыграйте в Skill-Game или Crap-Shoot в TryItOnline!
(Crap-стрелять стоило больше байтов).
Как?
источник
Python 2,
290264262252248245 байтЭто не красиво и не коротко, но я устал, и это
первыйединственный ответ Python. Введите снимок в формате x, y.редактировать
Гольф от 26, переопределив способ составления списка. Тем не менее, все еще не повезло с длинным оператором if.
-2 путем замены длинного if со словарем и более короткого if.
-10 благодаря @ Noodle9 - я пропустил это :)
-4 - еще раз спасибо :)
Еще 3 офф. Спасибо.
Для тех, кто интересуется логикой, не увлеченной комментариями (1316 байт, но все равно легко помещается на 3,5-дюймовый диск, если кто-то их помнит):
Определенно, впервые для меня словарь стал лучшим форматом данных в соревнованиях по гольфу.
источник
C 236 байт
Ungolfed:
источник
Scala, 238 байт
Используя нулевую индексацию.
Это слишком читабельно :(
Объяснение:
Я использовал формулу
1+x+13*y
для вычисления правильного индекса, поскольку каждая строка имеет длину 13 символов (2 границы, символ новой строки и 10 пробелов) плюс смещение, равное единице, поскольку (0,0) должно быть вторым символом.источник
Perl,
225209 байтДва буквенных символа новой строки каждый сохраняют один байт. Довольно стандартный. Печатает декларацию, затем игровое поле.
источник
Древесный уголь , 99 байт
Принимает ввод на основе 1, разделенный пробелом, в stdin. Большая часть кода предназначена для печати (одного из) четырех сообщений. Попробуйте онлайн!
Примечание: древесный уголь все еще находится в стадии разработки. Этот код работает с с текущего коммита . Если он перестанет работать в будущем (в частности, если ссылка TIO не будет работать должным образом), пингуйте меня, и я постараюсь добавить неконкурентную обновленную версию, которая работает.
объяснение
источник
Brain-Flak , 1466
1938bytesПопробуйте онлайн!
Я выиграл?
источник
TI-Basic, 183 байта
Слава богу, TI-Basic использует токены.
|
не может быть напечатан, но это в наборе символов.Пожалуйста, дайте мне знать, если результат выстрела обязательно должен быть в нижнем регистре.
Я добавлю скриншот примера программы позже.
источник
Groovy - 235 байтов
Моя первая попытка - Groovy замыкание, принимая 2 целых числа от 0 до 9 в качестве координат X и Y для выстрела.
источник
Dyalog APL , 147 (или 127) байтов
Принимает (y, x) в качестве аргумента.
Начиная с версии 16.0, мы можем почти вдвое сократить количество байтов с помощью нового
@
оператора;@
помещает левый операнд в позиции правого операнда в правом аргументе:NewChars @ Positions ⊢ Data
Слегка измененный код, чтобы сделать допустимым в TryAPL:
Отверстие в одном , Lucky Shot 1 , Lucky Shot 2 , Close One , Случайный
источник
Turtled , 164 байта
Еще раз, демонстрируя баланс Turtlèd между игрой в гольф и многословием для самых простых вещей (например, увеличение числа), Turtlèd побеждает все, кроме игры в гольф.
Попробуйте онлайн
Обратите внимание, что он проиндексирован с половиной нуля и с половиной единицы; х один индексированный, у нулевой индексированный; 3,3 это дыра в одном
источник
R
230226 байтБлагодаря @billywob за -2 байта, замечание
M[a,b]
эквивалентноM[c]
в нескольких случаях.Досадно, что два
cat
вызова (!) Нельзяcat
объединить в один, посколькуfill
аргумент портит сообщение. Argh!источник
function(x,y){M=matrix("|",10,10);M[2:9,]=" ";M[34]="0";M[4,2:3]="f";M[15]=">";m=switch(M[y,x],">"="Close One","f"="Lucky Shot","0"="Hole In One","Try again");M[y,x]="o";cat(m,"!\n",sep="");cat(gsub("f","|",M),sep="",fill=10)}
f=
в моем решении в любом случае. Удалены.