После ввода строки [длина 1-20], содержащей только символы y для yes и n для no, ваша программа должна вывести результат (y или n). Пример ввода: yynynynny
будет выводить у.
Результат определяется путем объединения значений y и n следующим образом:
у эс и п о равных п О
у эс и у эс равен Y эс
n o и n o равно y es
Если строка содержит более 2 символов (вероятно ...), вычисления будут выглядеть одинаково. Примеры:
у эс и у эс и п о равных п о (потому что не сливается с первым да на нет. то не нет да и осталось и то же самое происходит и снова)
n o и n o и n o равняется n o (первые два нет сливаются с да, затем есть да и нет слева, которые появляются на нет)
Пример ввода с выводом:
yynynynynyyn
= n
Совет: имейте в виду, что порядок символов, с которым работает ваша программа, не имеет значения. (например, вы можете прочитать ввод сзади или сзади, смешать буквы, отсортировать их, что угодно. То, что считается правильным выводом), получайте удовольствие!
Критерии выигрыша : это код-гольф , поэтому выигрывает самый короткий код в байтах.
источник
1
заy
и0
заn
.["y", "n", "n"]
Ответы:
Древесный уголь , 6 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
источник
Октава ,
2927 байтСпасибо @RickHithcock за указание на ошибку, теперь исправленную. Кроме того, 2 байта отключены благодаря @StewieGriffin!
Попробуйте онлайн!
объяснение
Кодовая точка ASCII
'y'
нечетна, а'n'
четна. Код1
к каждому символу во входной строке, чтобы сделать'y'
четным и'n'
нечетным;1
четного,2
если нечетного;'yn'
.источник
JavaScript (ES6), 28 байт
Принимает ввод в виде строки.
Попробуйте онлайн!
JavaScript (ES6), 30 байт
Принимает ввод как массив символов.
Попробуйте онлайн!
источник
s=>'yn'[s.match(/n/g).length&1]
Pn
.Haskell ,
3328 байтИндексирует количество n в бесконечном списке «ynynynyn…». Предыдущий подход (33 байта) складывал пары различных элементов в n, иначе y:
Попробуйте онлайн!
источник
Желе , 7 байт
Попробуйте онлайн!
Ĉ р а ф количество «п , я NDEX в строки ⁾ny . (по модулю 2)
Попробуйте онлайн!
{ Ĉ р а ф числа, возьмите H EAD, то я NDEX в} строки ⁾ny .
Попробуйте онлайн!
Похоже на ответ Октавы выше. Рассчитать O - е значение, возьмите C omplement (для каждого значения ORD х вычислить 1-х ), ˙s мкм, а затем я NDEX в строку ⁾ny .
источник
APL (Dyalog Unicode) , 15 байтов
Попробуйте онлайн!
Примечание: по умолчанию TIO
⎕IO = 1
. Если запустить с⎕IO←0
,APL (Dyalog Unicode) , 13 байт
Попробуйте онлайн!
Это функция XNOR (иногда ее называют EQV, особенно в старых бейсиках).
Разложение / Анализ:
источник
Pyth, 9 байт
Попробуй здесь
объяснение
источник
дк , 39
Входная строка читается из STDIN и должна быть в форме
[yynynynynyyn]
.dc не известен своей обработкой строк, но у нас здесь достаточно, чтобы заставить это работать. Подход здесь состоит в том, чтобы считать
n
s и вывести,y
если четное илиn
нечетное. Это делается путем выполнения входной строки в виде макроса.dc
выведет'y' (0171) unimplemented
ошибки для всехy
s и попытается вывести строки и напечатать их для всехn
s. Итак, сначала мы должны убедиться, что у нас есть много (общая длина входной строки) пустых строк[]
в стеке, которые нужно вытолкнуть. Затем мы выполняем входную строку и видим, сколько[]
осталось в стеке. Исходная длина строки вычитается из этого, чтобы получить (-ve) общее числоn
s. Остальное арифметическое, чтобы сделать мод 2 и получить выходной результат прямо как ASCIIy
илиn
.Попробуйте онлайн!
источник
Japt , 8 байт
Попробуйте онлайн!
Объяснение:
Japt использует обертывание индекса, поэтому, если
Uèn
вернется2
, он вернетсяy
при получении char от"yn"
.источник
Perl 6 , 21 байт
Попытайся
Expanded:
источник
Python 2 , 29 байт
Попробуйте онлайн!
источник
Java 8, 35 байт
Решатель для регулярного языка! Я могу это сделать.
Попробуйте онлайн
источник
J ,
109 байтПопробуйте онлайн!
источник
{&'ny'@=/
сохраняет байт.R ,
4644 байтаПопробуйте онлайн!
Вниз на 2 байта благодаря Джузеппе и НГМ. Порт Октавии, ответ Луиса Мендо.
источник
sum(utf8ToInt(scan(,""))%%2)%%2
сохраняет один байт.n
, даже поэтому сначала нужно добавить +1.Japt, 9 байт
Оливер избил меня самым коротким решением, так что вот пара, которая на байт длиннее.
Попытайся
Попытайся
Пояснения
источник
/// , 24 байта
Попробуйте онлайн!
Я полагаю, что это самая короткая из возможных программ ///, поскольку подстановка одного символа либо бесполезна (если вы вставляете что-то на место), либо препятствует выводу (если вы ничего не вставляете). Однако, поскольку программа должна иметь дело с двумя символами, это должно быть минимальным.
Сначала удаляет все
y
твои праваn
. Затем заменяет двойнойn
s наy
s, используя замену LTR. На этом этапе существует множествоy
s, за которыми следует не более одногоn
; мы дедуплицируемy
s и, если есть,n
используем его для очистки последнегоy
.источник
MATL , 8 байт
Попробуйте онлайн!
Сэкономили 2 байта благодаря Луису Мендо! Ранее я использовал явную команду модуля для получения индекса в диапазоне
1,2
.объяснение
При этом используется тот факт, что MATL имеет модульную индексацию, что означает, что 1-й, 3-й, 5-й ... элемент строки
ny
одинаковы (n
). Как и 2-й, 4-й, 6-й ... элемент строки (y
).источник
'yn'3)
даетy
...? Теперь это умный дизайн, Луис =) Спасибо за советы! :)Python 2 , 26 байт
Попробуйте онлайн!
источник
Сетчатка , 11 байт
Попробуйте онлайн!
источник
Желе ,
87 байтПопробуйте онлайн!
источник
Ẉ
можно использовать вместоL€
.05AB1E , 8 байтов
Попробуйте онлайн!
источник
Java (OpenJDK 8) , 143 байта
Попробуйте онлайн!
И если мы примем входные данные в виде списка:
Java (OpenJDK 8) , 118 байт
Попробуйте онлайн!
Объяснение:
(ввод в виде строки)
источник
char[]u
(-1 байт); иif(u.length==1)
может бытьif(u.length<2)
(-1 байт). Возможно, в гольфе есть еще что-то, но у меня сейчас нет времени. :)Рубин , 24 байта
Попробуйте онлайн!
Лямбда, берущая строку и возвращающая строку.
источник
Cubix ,
2420 байтДавненько я не играл с Cubix, так что ...
Попробуйте онлайн!
Довольно наивная реализация, которая перебирает строку и сравнивает символ с текущим результатом.
Интерактивная Демо
Это разворачивается на куб следующим образом
W
сдвинуть ip влевоi
получить начальный персонажi?
получить символ и проверить EOI (-1), также начало цикла;o@
удаляет TOS, выведите TOS как символ и выйдите.-W!
вычтите, сдвиньте ip влево, проверьте правдивость'n
пуш символ в ТОС|!'y
отражается, протестируйте и отправьте символ y в TOSv'.;w
перенаправить вокруг куба, толкая и удаляя. характер и сдвиг вправо обратно в петлюисточник
Скала, 50 байт
источник
Befunge-98 , 13 байт
Попробуйте онлайн!
В основном инвертирует 0 для каждого
n
на входе, и еще раз для хорошей меры, затем выводитy
для1
иn
для0
источник
Чисто ,
2623 байтаПопробуйте онлайн!
источник
foldr1\a b|a==b='y'='n'
. (Кстати, к сожалению, обычно импорт является частью байт-кода.)JavaScript,
3937 байтПростая функция уменьшения после разделения входной строки.
источник
s
, которая здесь не является допустимым методом ввода . Вместо этого вы можете сделать свой ответ лямбда-функцией, принимающей входные данные в качестве аргумента, добавивs=>
к вашему ответу 42 байта.s.split('')
с[...s]
на 37 байт:s=>[...s].reduce((x,y)=>x==y?'y':'n')
C (gcc) ,
5250 байтСпасибо @Neil за предложения.
Я позаимствовал решение подсчета
n
s, но вместо того, чтобы вести подсчет, я просто переключаюсь между начальным состоянием и его инверсией наn
.Попробуйте онлайн!
источник
*a&1?0:23
сохраняет байт иreturn i
сохраняет другой.i;f(char*a){for(i=*a;*++a;i^=*a&1?:23);a=i;}
Котлин , 32 байта
Попробуйте онлайн!
источник