В этом простом, но забавном задании вас попросили определить, упадет ли Джимми с их платформы. Джимми имеет три части тела /
, o
и \
расположены , как это
/o\
Платформы представлены с -
. Джимми упадет со своей платформы, если у него есть две или более части тела, которые не находятся прямо над платформой.
Некоторые примеры:
/o\
- -------
Джимми будет балансировать, так как все их части тела выше -
.
/o\
------ ---
Джимми будет сбалансирован, так как две части тела выше -
s.
/o\
-- ---- --
Джимми будет балансировать, даже если они разделены между двумя платформами
/o\
-
Джимми не будет сбалансирован, так как две части тела не находятся над платформой.
Ваша задача - написать программу, которая принимает платформу в виде длинного контейнера, содержащего только -
s и s (например, строку), и выводит количество Jimmys, которые могут быть размещены на платформе, так что ни один из них не упадет, и ни один из них не будет перекрытия. Джимми может иметь одну из частей своего тела слева от начала строки или справа от конца строки.
Это код-гольф, поэтому ответы оцениваются в байтах, а целью является меньшее количество байтов.
Контрольные примеры
входные
- - -
- -
--
-- --
----
- -- --
------- -
Соответствующие выводы
0
0
1
1
2
2
2
3
---
не сидит хорошо со мной тоже, пока я не работал над портом и понял , что они были не нужны. Думаю, я позвоню здесь один день, возьму пакет с банками и сам добавлю СМГ - не играл в те времена.Python 2 , 53 байта
Попробуйте онлайн!
Основано на регулярном выражении Арно . Жадно ищет все неперекрывающиеся подстроки длины-3 с двумя или более
-
. Хитрость заключается в том,`s`
чтобы заключить входную строку в кавычки как заполнитель, чтобы оставить место для Jimmys, чтобы зависать на любом конце, какPython 2 , 57 байт
Попробуйте онлайн!
Требуется сырный формат ввода / вывода уже в кавычках. Выходы
False
на 0.Рекурсивная функция, которая помещает каждого Джимми в крайнее левое допустимое положение, либо помещая Джимми над первыми тремя символами, если они могут удерживать Джимми, либо иным образом удаляя первый символ. Мило Хитрость заключается в том, чтобы проверить,
s[:3]
содержит два или более-
, делая'--'in s[:3]*2
, который сцепляет две копииs[:3]
и проверки на два соседних-
.источник
Perl 5
-p
, 28 байтИспользует тот же метод, что и JavaScript @ Arnauld.
Попробуйте онлайн!
источник
Japt , 16 байт
Основано на оригинальном JS-решении Арно. Я попробовал несколько разных методов, чтобы получить необходимые отступы по обе стороны от ввода, но все пришли одинаковой длины - все еще в поисках более короткого пути ...
Попробуй это
источник
Excel, 96 байт
A1
= платформа Поступил в качестве формулы массиваCtrl
+Shift
+Enter
источник
05AB1E , 16 байтов
Определенно может быть в гольфе. Иногда раздражает видеть все эти ответы регулярных выражений в вызове при использовании 05AB1E, в котором отсутствует какое-либо регулярное выражение. ;)
Попробуйте онлайн или проверьте все контрольные примеры .
Объяснение:
источник
Рубин , 39 байт
Попробуйте онлайн!
источник
Stax , 13 байт
Запустите и отладьте его
источник
Java 8, 41 байт
Попробуйте онлайн.
Порт @Arnauld JavaScript ответа «s , за исключением того, что
+0
является+10
для тестирования исправления подобных случаев----
. Это необходимо, потому чтоString#split
встроенный в Java по умолчанию удалит завершающие пустые строки. Это можно изменить, добавив дополнительный параметр дляsplit
встроенной функции (которая0
по умолчанию используется вsplit
-builtin с одним аргументом String). Чтобы процитировать использование этого дополнительного параметра из документов:Из-за этого обычно
.split("...",-1)
используется, чтобы сохранить ВСЕ завершающие пустые строки, и я мог бы использовать его также и для этого ответа ( Попробуйте онлайн ). В этом случае, если изменить значение на,+0
можно+10
сэкономить два байта,-1
. :)источник
Желе , 12 байт
Попробуйте онлайн!
Основываясь на ответе 05AB1E @ KevinCrujissen, так что обязательно проголосуйте и за него.
источник
Древесный уголь , 25 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Напечатайте платформу, не перемещая курсор, затем переместите курсор вверх и влево, так как это первая потенциальная позиция Джимми.
Ищите столько Джимми, сколько есть платформ.
Проверьте, есть ли в этой позиции более одной платформы.
Если так, то отметьте правильную позицию Джимми ...
... и переместите три символа вправо, чтобы Джимми не перекрывались.
В противном случае следующая потенциальная позиция Джимми - один символ справа.
Очистите платформу и выведите количество обнаруженных позиций.
источник
PowerShell , 38 байт
Порт Арнаулда JavaScript ответ .
Попробуйте онлайн!
источник
Вяз 0,19, 108 байт
Основано на регулярном выражении в ответе Арнаулда на JavaScript . Проверьте все контрольные примеры здесь .
Альтернативное решение без регулярных выражений, значительно длиннее на 171 байт :
Проверьте все контрольные примеры здесь .
источник