утверждение
Вам дают серию шаров, падающих в 2D сетку. Эта сетка окружена неизменными и нерушимыми стенами, поэтому все действия заключены в них. Ваша задача - определить, каким будет состояние сценария после того, как гравитация выполнит всю свою работу.
Элементы внутри сетки
-
Пол, не меняет направление падающих шаров.\
Правое скольжение, изменяет путь мяча на одну (1) позицию вправо./
Левый слайд, изменяет путь мяча на одну (1) позицию влево.o
Мяч.
правила
- Шары падают.
- Полы и горки не падают .
- Если мяч ударяет по слайду, который заставит его пройти через стену (
\#
или#/
) или пересечь пол, слайд будет действовать как пол. - Когда мяч попадает в другой, он становится одним, но увеличивает их мощность до суммы обоих шаров.
- Новые шары (объединенные) будут продолжать вести себя как обычно.
- Когда мяч больше не может двигаться, его заменяет его сила.
- Сила мяча всегда будет не более 9.
вход
Сетка будет задана в виде строковой переменной с кратким именем на выбранном вами языке. По умолчанию мы будем использовать a
в качестве входа. Образец ввода, в точности как получено:
##########\n# \ #\n#o #\n# - -\o #\n#/- \ #\n# \oo-/\#\n#-/ \ /#\n# \ \ #\n# /#\n##########
Для генерируемых случайных сеток используйте https://repl.it/B1j3/2 . Вместо этого используйте мою сгенерированную страницу (без рекламы, без всякой ерунды, только вход и выход)
Обратите внимание на разрывы строк \n
. Печать ввода на экран (не требуется для вызова) покажет такие вещи. Хотя я поставил четыре головоломки рядом с безопасным местом.
########## ########## ########## ##########
# \ # # o -/# # o# #-o / #
#o # # \ # # o -# #-- \ /\ #
# - -\o # #- \ # # - \o# # - -- o-#
#/- \ # # # #o /\ # #/ \ #
# \oo-/\# #o -o- # # / -o# #/ /o oo/#
#-/ \ /# # -/- # # - o -# #o/ #
# \ \ # # \\ # # \o /# #o-o o#
# /# # \o\ /\# # \o # # -\o o /#
########## ########## ########## ##########
Выход
Та же сетка, напечатанная на экране с конечным результатом силы мяча. Действительным ответом будет одна (1) из следующих головоломок, каждая из которых соответствует входу в одной и той же позиции, конечно, если вход отличается, вы должны отрегулировать выход. Не ограничивайтесь этими четырьмя!
########## ########## ########## ##########
# \ # # -/# # 1# #-1 / #
# # # \ # # -# #-- \ /\ #
#1 - -\ # #- \ # # - \ # # - -- -#
#/- \1# # # # /\ # #/ \ #
# \ -/\# # -1- # # / -2# #/ / /#
#-/ \ /# # -/- # # - -# # / #
# \ \ # # \\ # # \ /# # - #
# 2 /# #1\2\ /\# #2 2\1 # #2-\3 23/#
########## ########## ########## ##########
Гол
Языки будут соревноваться друг с другом, поэтому не стесняйтесь использовать языки нонольф. Чтобы проверить решение, я должен быть в состоянии проверить его где-нибудь, чтобы увидеть, как оно работает!
Оценка - это количество байтов. В случае ничьей побеждает первый ответ, который достигнет ничьей.
Предупреждения
- Если вы не знаете, как должен реагировать мяч, спросите меня, и я уточню, я был настолько ясен, насколько мог, но я уверен, что есть случаи, которые сбивают с толку.
- Слайды используются только в том случае, если вы можете выйти из них , думайте об этом как о реальном слайде. Есть парень наверху, который не пропускает вас через мяч, если он не выйдет через другую сторону.
Уточняющие примеры движения мяча
###### ######
#-o- # BALL WOULD GO RD #- - #
# \ # # \o #
###### ######
###### ######
#-o- # BALL WOULD STAY #-o- #
# \\ # # \\ #
###### ######
###### ######
# -o# BALL WOULD STAY # -o#
# \# # \#
###### ######
###### ######
# o # BALL WOULD STAY # o #
# \/# # \/#
###### ######
###### ######
#-o- # BALL WOULD GO LD #- - #
# /\ # #o/\ #
###### ######
ОБНОВЛЕНИЕ
Как я могу проверить правильность моего ответа?
Я установил простую страницу на одном из моих сайтов, которая даст вам случайную головоломку и ответ. Возьмите вход и сравните его с выходом. Мое решение, не беспокоясь о гольфе, в Python (генератор, а также страница и Python)389b
355b
Leaderboard
источник
Ответы:
JavaScript (ES6), 157
196Редактировать символ за символом вместо строки за строкой, намного лучший результат
Примечание: не обрабатывает значения шаров> 9. Но это может стоить 18 байт. Смотрите основной код ниже.
Фрагмент теста (лучше на полной странице)
источник
v>9?9:v
?Javascript (ES6),
453426409306290286 байтПервое и наиболее очевидное решение, которое пришло мне в голову, это то, что просматривает слайды, а затем объединяет или заменяет.
Ungolfed:
Тест как:
Спасибо: @ edc65
источник
b.replace(/o/g,'1').split``
может быть сокращено до[...b.replace(/o/g,1)]
Ява,
слишком много1102987 байтПотому что Java.
\ о / Это под 1000!
Побочная цель была возможность печатать каждую итерацию доски: просто удалите среднюю
;
инwhile(g.i())
;
System.out.print(g.s());
(хотя это отключить последнюю печать , которая имеет 0-> преобразование энергии). К сожалению, в этой версии гравитация работает странным образом. Каждый проход я беру первый не застрявший мяч и перемещаю его. Короткое замыканиеiterate()
- это меньше байтов, чем обход всей платы и возврат, если что-то изменилось.Это полный основной класс, скомпилируйте и запустите в командной строке с аргументом:
«Читаемая» версия:
источник
Python3, 355b
Тест здесь
источник
PHP,
228 204 197194 байтавыдает предупреждения в PHP 7.1. Вставьте,
(int)
прежде чем$a[$t]+$c
исправить.Запустите
php -nr '$a="<string>";<code>'
или попробуйте онлайн .сломать
источник