Двое моих детей любят играть со следующей игрушкой:
К цветным областям с формами внутри можно дотронуться, и черепаха затем осветит область и воспроизведет звук или произнесет название цвета или форму внутри. Средняя кнопка меняет режим. Существует один режим, в котором области воспроизводят разные музыкальные ноты при касании с поворотом: если ребенок касается трех последовательных областей по часовой стрелке, воспроизводится специальная мелодия 1. Если три последовательные области, к которым вы прикоснулись, расположены против часовой стрелки, воспроизводится специальная мелодия 2.
Соревнование
Давайте смоделируем внутреннюю логику игрушки. Получив строку с 3 нажатиями на ребенка, верните два разных, согласованных значения, если эти три нажатия предназначены для последовательных областей (по часовой стрелке или против часовой стрелки), и третье отдельное значение, если это не так.
Детали
- Области ввода будут именоваться символами, которые могут иметь свой цвет:
ROYGB
для красного, оранжевого, желтого, зеленого и синего; или их форма:HSRTC
для сердца, квадрата, звезды (R
), треугольника и круга. Регистр не имеет значения, вы можете работать с вводом и выводом только в верхнем или нижнем регистре. - Программа получит строку (или массив символов или что-нибудь эквивалентное) с тремя нажатиями. Примеры ( с использованием цвета):
RBO
,GYO
,BBR
,YRG
,YGB
,ORB
... - Программа выведет три различных, согласованных значения, представляющих три возможных результата: первое значение, если комбинация не вызывает особую мелодию, второе значение, если комбинация запускает специальную мелодию по часовой стрелке, и третье значение, если комбинация вызывает против часовой стрелки особая мелодия. Пример:
0
без специальной комбинации,1
для мелодии, запускаемой по часовой стрелке, и-1
для мелодии, запускаемой против часовой стрелки. - Вам не нужно беспокоиться о неправильном вводе.
Контрольные примеры
Input Output // Input based on colors
--------------
RBO 0 // No special combination
GYO -1 // Counterclockwise melody triggered
BBR 0 // No special combination
YRG 0 // No special combination
YGB 1 // Clockwise melody triggered
ORB -1 // Counterclockwise melody triggered
OOO 0 // No special combination
BRO 1 // Clockwise melody triggered
Это код-гольф , поэтому победит самый короткий код для каждого языка!
[0,0]
,[1,0]
,[0,1]
допускаются в качестве продукции? Я вижу, что ответ Mathematica делает это, и это спасло бы 3 байта в ответе 05AB1E.Ответы:
Java 8,
483933 байта-6 байт благодаря @RickHitchcock , так что не забудьте также поддержать его !
Принимает заглавный цвет в качестве входной строки. Выходы
-1
ни для одного,7
для по часовой стрелке и15
для против часовой стрелки.Попробуйте онлайн.
Объяснение:
Старый 39-байтовый ответ:
Принимает заглавный цвет в качестве входной строки. Выходы
9362
ни для одного,0
для по часовой стрелке и1
для против часовой стрелки.Попробуйте онлайн.
Объяснение:
источник
10922
(целочисленное деление на/6
) или8191
(целочисленное деление на/8
), но я выбираю,/7
потому что это индекс пространства в строке. :)JavaScript (ES6), 41 байт
Принимает цветные инициалы в качестве входных данных. Возвращает
2
ни для одного,true
для по часовой стрелке илиfalse
для против часовой стрелки.Попробуйте онлайн!
источник
s=>('ROYGBRO_ORBGYOR'.search(s)+8)/8|0
Python 2 , 36 байт
-1
- Нет0
- по часовой стрелке1
- против часовой стрелкиПопробуйте онлайн!
источник
Excel, 29 байт
Прописные цвета в качестве входных данных.
Возвращает
#VALUE!
без шаблона,TRUE
по часовой стрелке,FALSE
против часовой стрелки.Может обернуться
IFERROR( ,0)
для+11 bytes
обработки исключения и вместо этого вернуть «0» для случаев без шаблона.источник
05AB1E ,
1511 байтСохранено 4 байта благодаря Кевину Круйссену и Волшебной Осьминоге Урна .
Использует фигуры.
Вывод ни
[0, 0]
для одного ,[1, 0]
для по часовой стрелке и[0, 1]
для против часовой стрелкиПопробуйте онлайн! или как тестовый набор
объяснение
источник
.•1´₃éC•Â‚εXå}¥
результате чего[0]
,[1]
или[-1]
, так +1 от меня. Кстати, я думаю (не уверен) , вы можете сохранить три байта, удаляя последние три, вывод[0, 0]
,[1, 0]
и в[0, 1]
качестве отдельных значений. Я вижу, что ответ Mathematica делает то же самое. Попросит ОП для проверки.‚.•ÌöJη•så
равен 11 байтам, если[1,0], [0,1] and [0,0]
считаются уникальными (если я не пропускаю здесь что-то очевидное, добавлениеƶO
к концу этого 11-байтового символа по-прежнему равно 13 для того же ответа 0, 1, 2, что у вас есть сейчас). Тестовые случаи . Тестовые случаи 2 . Сторнирование заказа устраняет необходимость в цикле.JavaScript (ES6), 32 байта
Возвращает -1, если комбинации нет, 15, если против часовой стрелки, 7, если по часовой стрелке.
Показать фрагмент кода
источник
Wolfram Language (Mathematica) ,
4236 байтПопробуйте онлайн!
Подсчитывает, сколько раз вход появляется в обоих
"ROYGBRO"
и"ORBGYOR"
. Возвращает{1,0}
по часовой стрелке,{0,1}
против часовой стрелки и{0,0}
без специальной комбинации.Ценой только еще одного байта мы можем получить выходные данные
0
даром,1
по часовой стрелке и2
против часовой стрелки с помощью"ROYGBRO.ORBGYORBGYOR"~StringCount~#&
.источник
машинный код x86,
3936 байтМонтаж:
Попробуйте онлайн!
Выход -
23
ни для одного,7
для по часовой стрелке и15
для против часовой стрелки. Основано на ответе @RickHitchcock.Сохранено 3 байта с использованием инструкции сравнения строк SSE вместо использования libc.
источник
strstr
всегда будет 32-битным (4-байтовым) адресом. Машинный код в моем посте не связан.Perl 5
-p
, 30 байтПопробуйте онлайн!
источник
APL (Dyalog),
2218 байтов-4 байта благодаря @ngn
Принимает строку цветных инициалов. Выходы 0 для без специального шаблона, -1 для против часовой стрелки, 1 для по часовой стрелке.
Попробуйте онлайн!
источник
Python 2 ,
4543 байтаПопробуйте онлайн!
С идеями и серьезной благодарностью @DeadPossum
-2 с благодарностью @JoKing. Теперь выводит -1 = против часовой стрелки, 0 = нет, 1 = по часовой стрелке.
Мои оригинальные усилия приведены ниже для исторических целей.
Python 2 ,
5251 байтПопробуйте онлайн!
0 = нет, 1 = против часовой стрелки, 2 = по часовой стрелке
источник
Python 2 ,
3536 байт+1 - я почему-то думал, что все кнопки будут отличаться> _ <
Разработанный независимо от того, что я только что видел (и теперь за него проголосовали) Мертвым Опоссумом
Попробуйте онлайн!
источник
Stax ,
1413 байтЗапустите и отладьте его
Выход
источник
Пип , 19 байт
Выходы
10
для по часовой стрелке,01
для против часовой стрелки,00
ни для одного. Попробуйте онлайн!объяснение
источник
J , 21 байт
Попробуйте онлайн!
Как это устроено
Достигает максимального количества повторного использования функции.
источник
Желе , 12 байт
Попробуйте онлайн!
-4 спасибо Джонатану Аллану .
По часовой стрелке:
[1, 0]
против часовой стрелки:
[0, 1]
Другое:
[0, 0]
источник
R , 38 байт
Попробуйте онлайн!
Возвращает:
integer(0)
2
1
источник
Древесный уголь , 18 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
источник
Common Lisp , 68 байт
Попробуйте онлайн!
источник
Чисто , 63 байта
Попробуйте онлайн!
[True, True]
без особых шумов,[True, False]
против[False, True]
часовой стрелки, по часовой стрелке.источник
Japt,
1714 байтПринимает цвета в качестве входных данных в нижнем регистре. Возвращает
0
по часовой стрелке,1
против часовой стрелки или-1
если нет комбо.Попытайся
Expanation
источник
Рубин ,
5336 байтПопробуйте онлайн!
Ввод: трехзначное целое число, где цифры представляют цвета:
Вывод: 0 для по часовой стрелке, 1 для против часовой стрелки, в
nil
противном случае.источник
C (gcc) , 55 байтов
Возвращает 0 для нет, -1 для CCW и 1 для CW.
Попробуйте онлайн!
источник