Еще один вызов Джимми его оригинальным отцом. Смотрите эти другие прекрасные проблемы .
Как вы все знаете, в последнее время мы видим проблемы, связанные с Джимми на платформах. Теперь, как я уже говорил, Джимми - акробат, и у него есть другие хитрости в рукаве.
Один из таких трюков висит на веревках. Вот пример веревки, с которой Джимми мог повесить:
||
||
||
||
||
||
Когда Джимми висит на веревке, это выглядит так:
||
||
/o\
||
||
||
Он может висеть слева или справа от веревки, так что это:
||
||
||
/o\
||
||
также действует. Но он не может висеть только на одной части тела, так что-нибудь вроде этого:
||
||
||
/o\|
||
||
является недействительным. Обратите внимание, что когда он висит на одной части тела, видна другая половина веревки, потому что Джимми не прикрывает ее.
Кроме того, Джимми не любит висеть на дне веревки - это пугает его - вот так:
||
||
||
||
||
/o\
является недействительным.
Соревнование
Возьмите входную информацию о ситуации Джимми, подобную приведенной выше, и выведите, будет ли Джимми держаться за веревку или нет с помощью истинного или ложного значения.
Специфика
Напишите программу, которая принимает данные. Это может быть через функцию или любой другой подходящий метод ввода.
- На входе должна быть сцена из одного Джимми и веревки, как показано выше.
Программа должна выводить на консоль истинное или ложное значение в зависимости от того, может ли Джимми держаться за веревку или, если он упадет с веревки, соответственно.
Критерии, по которым Джимми мог повесить на веревке:
Две его части тела находятся на веревке.
Он не на дне веревки.
Он не парит в воздухе.
Вы можете предположить, что веревка будет прямой, состоит из
||
сегментов и будет длиннее одного символа в высоту.Вы можете предположить, что в вашей сцене будет присутствовать одна целая веревка и один особенный Джимми, не больше и не меньше.
Вы можете предположить, что в нижней части веревки не будет завершающих строк.
Вы должны покрыть любое количество начальных или конечных мест до и после веревки.
Контрольные примеры
||
||
|| TRUTHY
/o\
||
||
||
||
/o\| FALSY
||
||
||
/o\ TRUTHY
||
||
/o\ FALSY
/o\
|| TRUTHY
||
||
/o\ || FALSY
||
||
счет
Это код-гольф , поэтому наименьшее количество очков в байтах выигрывает примерно через неделю.
Leaderboard
Вы можете просмотреть список лидеров этого поста, развернув виджет / фрагмент ниже. Чтобы ваше сообщение было включено в рейтинг, вам нужен заголовок ( # header text
) со следующей информацией:
Название языка (заканчивайте его запятой
,
или тире-
), а затем ...Количество байтов, как последнее число в заголовке.
Например, JavaScript (ES6), 72 bytes
допустимо, но Fortran, 143 bytes (8-bit)
недопустимо, потому что число байтов не является последним числом в заголовке (ваш ответ будет распознан как 8 байтов - не используйте это в своих интересах).
<!-- Run the snippet to see the leaderboard. Report any bugs to @ozewski on Github. --> <iframe src="https://ozewski.github.io/ppcg-leaderboard/?id=187759" width="100%" height="100%" style="border:none;">Oops, your browser is too old to view this content! Please upgrade to a newer version of your browser that supports HTML5.</iframe><style>html,body{margin:0;padding:0;height:100%;overflow:hidden}</style>
Ответы:
Japt , 5 байт
Я думаю, что это правильно; Я работаю 16 часов подряд и почти не знаю своего имени, поэтому не удивлюсь, если это не так!
Попытайся
источник
Python 2 или 3 ,
3330 байт-3 благодаря Максвеллу
Безымянная функция, принимающая список строк
Попробуйте онлайн!
Как?
Джимми должен скрывать участок веревки, который не является нижним.
источник
lambda l:'o'in map(max,l[:-1])
Python 2, 28 байт
Попробуйте онлайн!
Как это работает? Он принимает входные данные в виде списка строк, и zip объединяет строку. Джимми остается на веревке, если есть "|" ниже "o", поэтому этот код объединяет все строки и проверяет, есть ли "o", за которым следует "|".
Аннотированный код:
(Старый ответ) Python 2 или 3, 39 байт
Функция, которая принимает входные данные в виде списка строк, каждая строка представляет собой отдельную строку.
-11 байт благодаря xnor! -2 байта благодаря Джонатану Аллану!
Попробуйте онлайн! (Если вы хотите попробовать больше тестовых случаев, просто поставьте «.» После каждого набора строк в поле ввода.)
Как это работает? Хорошо, если Джимми полностью на веревке, то в этой строке не будет "|" персонажи. Поэтому мы можем проверить каждую строку, и если мы найдем любую без "|" персонажи, тогда мы знаем, что Джимми может остаться на веревке. Однако Джимми не может висеть на дне веревки; поэтому мы не включаем последнюю строку в наш чек. Если последняя строка - это просто другая часть веревки, то это не имеет значения, потому что мы все равно найдем верную строку выше, но если последняя строка с Джимми, то она не найдет строку без "|" в любом месте, и вернет Ложь.
источник
lambda x:1-all("|"in i for i in x[:-1])
Желе ,
9 76 байтМонадическая ссылка, принимающая список строк
Попробуйте онлайн!
Как?
Джимми должен скрывать участок веревки, который не является нижним.
источник
Note that all other characters are [less than '|']
"?Грязь , 5 байт
Попробуйте онлайн!
Правильный инструмент для работы.
источник
мозговой трах,
7964 байтаПопробуйте онлайн!
Выводит байт 0x01 для правды и ничего для фальши.
источник
Stax , 6 байт
Запустите и отладьте его
Транспонирует ввод, затем ищет «o |».
источник
05AB1E , 5 байтов
Попробуйте онлайн!
Единственные символы, которые могут появиться во вводе
\o/ |
, с соответствующими кодовыми точками 92, 111, 47, 32, 124 (нет новых строк, поскольку мы решили принять ввод как массив строк). Возможные результаты при модуляции двух из этих чисел: 0, 13, 15, 17, 19, 28, 30, 32, 45, 47, 92, 111. 111 является самым большим из них, а также единственным, который заканчивается на 1 таким образом, код будет выводить правдиво, если и только если в списке присутствует 111 (только 1 верен в 05AB1E). 111 - это 111 (o
)% 124 (|
), и это происходит только в том случае, если на входе есть знак «o
а»|
.источник
APL (Dyalog Unicode) , 8 байтов SBCS
Функция анонимного молчаливого префикса, принимающая символьную матрицу в качестве аргумента.
Попробуйте онлайн!
⍉
транспонирования'o|'⍷
маска для вездеo
немедленно сопровождается|
1∊
один из них?источник
Dyalog APL Extended,
1413119 байтПопробуйте онлайн!
источник
3∊¯1+/⍤↓<
JavaScript,
3933 байтаСпасибо @Daniil Tutubalin за игру в 2 байта
Это соответствует любой линии, которая не является линией, где появляется его левая рука, и ни одна из веревок не показывает.
Попробуйте онлайн!
источник
/^ *.o. *\n/
?/// ,
5350 байтПопробуйте онлайн!
Поскольку нет другого способа получить ввод в ///, он жестко запрограммирован:
Объяснение:
Общий подход состоит в том, чтобы заменить Джимми унарной единицей, а затем удалить его из всех ситуаций, где он находится в опасности. Если он выживет, его выводят. Если он этого не делает, то ничего не происходит. Символ
~
в коде является заменой//
, которая позволяет сократить код на 3 байта. Они опущены в объяснении.Попробуйте онлайн!
источник
Ruby 2.5.5, 22 байта
Ожидается массив строк. Требуется минимум версии 2.5.5, потому что это когда
Array#all?(pattern)
было добавлено.Из-за ограничений, что входные данные всегда будут действительной сценой Джимми и веревки, все сводится к тому, затенена ли какая-либо из линий до последней строки.
источник
Котлин ,
9384 байтаПопробуйте онлайн!
источник
JavaScript,
3837 байтПопробуйте онлайн!
источник
Сетчатка , 9 байт
Попробуйте онлайн!
Я никогда раньше не программировал в Retina, но насколько я могу судить, это работает. Это регулярное выражение, которое находит строку, содержащую (1) начало ввода, (2) нет «|» символы и (3) перевод строки.
Людям, более знакомым с регулярными выражениями или Retina, рекомендуется предлагать свои предложения. -2 байта благодаря Нейлу!
источник
\n
потому что новая строка не является|
и поэтому будет совпадать в любом случае, а финальной будет^
достаточно, чтобы убедиться, что вы действительно нашли новую строку . 2) Используйте¶
вместо того, чтобы\n
убрать след, и удалите трейлинг^
(потому что это всегда верно после новой строки в многострочном режиме).Perl 5
-p
, 26 байтПопробуйте онлайн!
источник
Befunge-98 (PyFunge) ,
2624 байтаПопробуйте онлайн!
Выход с кодом возврата 3, если
\n
встречается, а последняя строка содержит 3 непробельных символа, в противном случае завершается с кодом возврата 0 в EOF. Таким образом, это зависит от последней строки, не содержащей завершающий перевод строки.расчлененный
источник
05AB1E (наследие) , 6 байтов
Порт @Shaggy 's Japt ответа .
Ввод в виде списка строк.
Попробуйте онлайн.
Объяснение:
источник
Вяз 0,19, 68 байт
Принимает ввод в виде списка строк. Независимо от последней строки, он проверяет, есть ли
'|'
в которых подразумевая, что веревка полностью покрыта Джимми.Проверьте все контрольные примеры здесь .
источник
PowerShell , 26 байт
Порт Максвелла отвечает за ретину .
Попробуйте онлайн!
Объяснение:
true
если:|
false
в противном случае.источник
Pyth , 9 байт
Тестирование!
источник
Пирет, 79 байт
Ожидает массив строк в виде строк. Делает копию,
link(0,l)
где все строки сдвинуты вниз на одну. Проходит через каждую строкуr
иn
где n - строка ниже r. Проверяет, что если тело Джимми"o"
находится в каком-то положении, то в ряду под ним есть труба (то есть Джимми висит на веревке, а не внизу).источник