Источником вдохновения было то, что я видел где-то:
Слово "монахиня" - это просто буква n, делающая колесико
Ваша задача состоит в том, чтобы взять строку и определить, является ли это первая буква, делающая колесо.
правила
Строка - это буква, вращающая колесо, если:
- Первая буква совпадает с последней буквой. (Письмо не может приземлиться на его голову.)
- Строка чередуется между буквами колесика каждого символа.
Буквы колесика есть n
и u
, m
и w
, b
и q
. Обратите внимание, что n
и w
вместе они не являются буквами, и не являются w
и b
.
- Вы возьмете строку, используя любой из наших стандартных методов ввода.
- Вы выведете истинное значение, если строка представляет собой букву, и ложное значение, если это не так. Вывод может быть выполнен с использованием любых стандартных методов вывода.
Дополнительные правила:
- Только строчные буквы колесика
n
/u
/m
/w
/b
/q
должны быть обработаны. - Вы можете предположить, что ввод никогда не бывает пустым.
- Односимвольная строка не является допустимым колесом.
Контрольные примеры
Input -> Output
nun -> truthy
nunun -> truthy
nunununu -> falsy
wmw -> truthy
wmwun -> falsy
bqbqbqbqbqb -> truthy
v^v^v -> falsy
AVAVA -> falsy
OOO -> falsy
ununununu -> truthy
nunwmwnun -> falsy
nun unun -> falsy
nunwmw -> falsy
nnuunnuunnuu -> falsy
nwnwnwnwn -> falsy
m -> falsy
nunuuunun -> falsy
победитель
Как и в случае с code-golf , выигрывает самый короткий код (на каждом языке)!
b
колесики вq
, не так ли?d
иp
также приятели колесом. Их ключ в том, что они вращаются, а не переворачиваются.uwuwuwuwuwu
bqb
нетpdp
?dpd
,pdp
и таких не работает, я думаю , вы должны иметь их в тестовых случаях с falsy ответом.Ответы:
Желе , 23 байта
Это заняло больше работы, чем можно подумать!
Монадическая ссылка, содержащая список символов и возвращающая
1
(truey) или0
(falsey).Попробуйте онлайн! или посмотрите набор тестов .
Как?
Находит индекс каждого символа ввода в 1-индексированном списке символов
nmbuwq
. Эта строка организована таким образом, что индексы пар разделены на три, поэтому приращением разницы индексов для допустимых колес будет повторение одного из[-3,3]
или[3,-3]
.Когда элемент не найден в списке с помощью атома «index of»
i
, он возвращает значение0
, с которым будут сопоставлены необнаруженные символыb
, что делает вводbxbxb
правдоподобным. Таким образом,0
s заменяются10
значением более трех от любого другого значения перед проверкой на достоверность.источник
sed 4.2.2 , 30 + 1
-r
=4331 байтСохранено 12 байтов благодаря @Neil за счет сокращения первой строки
Попробуйте онлайн!
Удаляет ввод, если false, в противном случае ничего не делает с вводом.
объяснение
С
-r
флагом нам не нужно использовать\(
и\)
для захвата групп и это экономит байты.источник
sed
волшебник ...sed
выглядит как волшебство для меня. : Punu
иnun
содержать,nu
а вторая строка гарантирует, что остальные буквы соответствуют этим двум.JavaScript (ES6),
827877 байтСохранено 1 байт с использованием двух ложных значений, как предложено ThePirateBay и MD XF.
Контрольные примеры
Показать фрагмент кода
источник
&&
вместо&
?&
будет производить либоfalse
или0
.)&
; Я указывал (в чате), что противоречивые ложные значения разрешены.Python 3 , 111 байт
-2 байта благодаря мистеру Xcoder.
Попробуйте онлайн!
источник
nunununu
.Python 2 , 63 байта
Попробуйте онлайн!
источник
"nu un nm mn bp pb".split()
сэкономить 4 байта и удалить пробелы. 75 байт:lambda s:any(s==c[-1]+c*max(len(s)/2,1)for c in"nu un nm mn bp pb".split())
s[0]
вместоc[-1]
.unmnu
иunmwnu
. На самом деле он возвращает ложные срабатывания, когда(s==s[::-1])+len(set(s))
равен 4, что легко форсировать. Даже только 4 разных персонажа заставляют его возвращать True.Python 3 , 71 байт
Попробуйте онлайн!
-1 благодаря @HyperNeutrino и -13 благодаря @ovs
Если вышеописанное не помогло в любом тестовом примере, есть альтернатива:
Попробуйте онлайн!
объяснение
''.join(sorted(list({*n[1::2]}).union({*n[::2]}))))
- Получает символы с нечетными индексами и символы с четными индексами, дедуплицирует их и сортирует список, образованный их объединением.in'nu,mw,bq'
- Проверяет, являются ли они действительными комбинациями буква-корзина.n[0]==n[-1]
- Проверяет, совпадает ли первый символ с последним.источник
uwuwuwuwuwu
истинные результатыnuuun -> True
, Это неправильно.JavaScript (ES6), 40 байт
Проверяет, является ли входная строка, соединенная со вторым символом входной строки, повторяющейся строкой из той же пары символов колесика.
тесты:
источник
Clojure, 156 байт
Это было обманчиво сложно! В итоге мне пришлось разбить его на 3 подзадачи:
Я конечно не победил, но это было доброе утро! Полное объяснение ниже:
источник
Haskell,
8078 байтПопробуйте онлайн!
Как это работает:
источник
Python 2 , 45 байт
Попробуйте онлайн!
Пробелы в строке являются
DEL
символами.источник
|u|
интерпретируется как колесоDEL
символы, чтобы прояснить ситуацию .s[:3]in'bqbqnunuwmwm'
Сетчатка , 24 байта
Выходы 1 для правдивых, 0 для ложных.
Порт Коров крякает ответ.
Попробуйте онлайн!
источник
nunwmwnun
(когда она должна быть ложной), именно поэтому у меня был\1*
ответ в моем sed.G`nu|mw|bp
так как все истинные строки содержат одну из этих пар букв, а вторая строка будет гарантировать, что все остальные строки содержат эти буквы тоже ..ununununu
Грязь , 28 байт
Попробуйте онлайн! Отпечатки
1
для правдивых входов и0
ложных.объяснение
Синтаксис Grime напоминает регулярные выражения, а программа Grime задает шаблон, который может совпадать или не совпадать с прямоугольником символов.
Некоторые особенности Grime, которые помогли сократить это:
""
это меняется: элементы синтаксиса экранируются, а литералы - нет. Без кавычек часть, которая перечисляет пары символов, была бы(\n\u|\b\p|\m\w)oT
.-
), воздействуют на его результат:..-#!"…"oT
эквивалентно(..-"…"oT)#!
.v
s понизить приоритет синтаксических элементов , которые следуют за ними. Одинокий&
имеет более высокий приоритет, чем-
, ноv&
имеет более низкий. Аналогично,..+
анализируется как.(.+)
, но..v+
эквивалентно(..)+
.источник
Python 2 , 69 байт
Попробуйте онлайн!
источник
Pyth , 27 байт
Тестирование.
Выходы
1
для правдивых и /False
или0
ложных, так как ОП разрешено в чате.источник
Желе , 27 байт
Попробуйте онлайн!
Как это работает
источник
Python 2 , 103 байта
Попробуйте онлайн!
источник
Japt , 47 байт
Попробуйте онлайн!
источник
Python 3 , 88 байт
len(x)%2
: строка четной длины не может заканчиваться первым символомx[:2] in
: проверьте наличие любой из 6 допустимых начальных парlen(set())
: получить длину наборов символов в 0,2,4 ... и 1,3,5 ...Возвращает,
True
если список оценок равен [1,1,1,1], иначеFalse
.Попробуйте онлайн!
источник
Perl 5 , 55 + 1 (-p) = 56 байт
Попробуйте онлайн!
Печатает «перевернутую» версию первого символа для true, ничего для false.
источник
PHP, 59 + 1 байт
Беги как труба с
-F
.частично регулярное выражение, 101 + 1 байт:
Пустой вывод для фальши. Беги как труба с
-nR
.источник
Java 8, 57 байт
Попробуй это здесь.
Простое регулярное выражение для соответствия всем шести случаям. Обратите внимание, что Java
String#matches
автоматически соответствует всей строке, поэтому в этом нет необходимости^...$
.источник
MATL , 25 байт
Выходной результат - это непустой числовой вектор-столбец, который верен, если все его записи отличны от нуля, и ложный в противном случае. Попробуйте онлайн!
Для проверки всех тестовых случаев ,
if
ветвь добавляется в сноске , который заменяет любое значение truthy строки'truthy'
, или любого falsy значения по строке'falsy'
, а затем выводит строку.объяснение
источник
Python 2 , 74 байта
Попробуйте онлайн! Этот взгляд на проблему удивительно конкурентоспособен.
источник
Clojure, 115 байт
Создайте регулярное выражение из каждой пары букв и посмотрите, соответствует ли входное значение единице. Множество более изящных способов сделать все эти части, но они все более многословны. Такова жизнь с гольфом Clojure.
источник
Perl 5, 68 + 1 = 69 байт
Беги с
-n
.Объяснение:
источник
TXR Lisp , 50 байтов
Бег:
f^$
является комбинатором, который принимает объект регулярного выражения и возвращает функцию, которая соответствует этому регулярному выражению привязанным способом. (Сам по себе объект регулярного выражения является вызываемым функцией объектом, который берет строку и ищет себя в ней.)источник
Python 3 , 66 байт
Попробуйте онлайн!
источник
TXR :
7874 байтаЗапустите из командной строки. Число в приглашении является статусом завершения: 0 = успех, 1 = отказ:
Объяснение:
@{x 2}
: сопоставить два символа, привязать кx
переменной.@(rep :gap 0)@x@(end)
: повторное совпадение без пропусков: ноль или более вхожденийx
ранее подобранного орграфа.@y
: оставшаяся часть строки совпадает, фиксируется вy
.@(bind(x y)(foo bar))
Привязатьx
кfoo
, у кbar
. Так какx
иy
уже связаны, они должны совпадатьfoo
иbar
, иначе, происходит сбой.foo
является#"nu un mw wm bq qb"
литералом списка слов, синтаксическим сахаром для списка Lisp("nu" "un" ... "qb")
. Соответствиеbind
между переменной и списком означает, что переменная должна соответствовать элементу.bar
is@[x 0..1]
: односимвольная подстрокаx
от ее начала. Соответствиеbind
междуy
и этим заставляет последнюю букву строки соответствовать первой.источник
C ++, 268 байт
источник
n
= 110,u
= 117,m
= 109,w
= 119,q
= 113. Таким образом, использование значений ASCII или нет не имеет значения для любых символов вышеc
(99)JavaScript (ES6), 63 байта
Возвращает
1
или0
.объяснение
Все строки колесика будут иметь один или несколько символов bq , wm или un . Мы проверяем это с помощью:
Если вы замените все вхождения первых двух букв строки колесика на ничто, у вас останется первая буква строки. Мы проверяем это с помощью:
Показать фрагмент кода
источник