В более раннем испытании я попросил игроков в коде создать строки, которые копируют каждый символ в строке. Например:
TThhiiss iiss ddoouubbllee ssppeeaakk!!
Эта задача состоит в том, чтобы просто определить, соответствует ли какой-либо текст определению строки двойного разговора.
- Существует четное количество символов.
- При разбиении на пары каждая пара состоит из двух одинаковых символов.
Соревнование
- Это код гольф, сделать это в несколько байтов.
- Используйте любой язык, который вы выберете.
- Пожалуйста, включите ссылку на онлайн-переводчика.
- Код примет некоторый текст.
- Для простоты ввод будет состоять только из печатных символов ASCII
- Он вернет индикацию того, является ли вход двойным голосом. Возможно:
- Логическое значение
- Строки («истина», «ложь», «да», «нет» и т. Д.)
- Целые числа 0 или 1
Тестовые случаи:
- аба - ложь
- абба - ложь
- аабб - правда
- ааабб - ложь
- это правда
- ttthhhiiisss - ложь
code-golf
string
decision-problem
AJFaraday
источник
источник
abba
какой должен быть фальсиaabbbb
который должен быть правдивым0
который должен быть ложным.Ответы:
Python 3 , 24 байта
Попробуйте онлайн!
источник
брейкфук , 20 байт
Сохранено 1 байт благодаря Джо Кингу.
Попробуйте онлайн!
Читаемый вывод!
Принимает по два символа за раз и удаляется от 1 на ленте, если какая-либо пара не совпадает. EOF обрабатывается как 0 и, таким образом, обрабатывается автоматически.
Выход - нулевой байт, если строка не является двойной речью, и 0x01, если это так. Читаемая версия выводит их в виде символов по стоимости 14 байтов.
источник
MATL , 4 байта
Ввод - это строка, заключенная в одинарные кавычки. Выход
0
для двойного разговора, в1
противном случае.Попробуйте онлайн!
объяснение
Рассмотрим ввод
'TThhiiss iiss ddoouubbllee ssppeeaakk!!'
в качестве примера.источник
05AB1E ,
652 байтаВвод в виде списка символов.
-3 байта при переносе ответа Япта @ Шегги , так что не забудьте отозвать его!
Попробуйте онлайн или проверьте еще несколько тестов .
Объяснение:
источник
Japt , 4 байта
Попробуй
альтернатива
Попробуй
источник
Сетчатка , 9 байт
Попробуйте онлайн.
Объяснение:
Удалите все пары одинаковых символов:
Проверьте, не осталось ли символов:
источник
^$
качестве заключительного этапа.false
как правдивый иtrue
как фальшивый (но если он сохраняет байт и это разрешено, я все равно буду его использовать). ;) Но поскольку это решение с равными байтами, выдающее ожидаемые результаты, это лучше.Желе , 3 байта
Попробуйте онлайн!
источник
¹©s2L€=2Ạa®s2E€Ạ
...ḢƝs2E€Ạ
... но мне не удалось получить то, что я хотел, и тогда я увиделŒœ
LOLStax , 5 байт
Запустите и отладьте его
Процедура:
источник
PHP ,
5856 байтПопробуйте онлайн!
Как рекурсивная функция.
PHP ,
615652 байтаПопробуйте онлайн!
Или отдельная программа. Входная строка через
STDIN
, output istruthy
(1
), если речь идет дважды, иfalsey
(0
), если речь не двойная.-4 байта спасибо @ Night2 !
источник
машинный код x86,
97 байтВходная строка в
SI
, длина входной строки вCX
. Выведите,ZF
если двойная речь.Или 14 байтов как полный исполняемый файл PC DOS:
Ввод осуществляется через
STDIN
канал или в интерактивном режиме. Повторяет ввод "de-doubled" до тех пор, пока не будет обнаружен не удвоенный символ, и в этот момент он выйдет (возможно, немного согнув правила ввода-вывода, но это всего лишь бонусный ответ).Постройте и протестируйте ISDBL2.COM, используя
xxd -r
:Оригинальный 24-байтовый полный исполняемый файл PC DOS:
Ввод из командной строки, вывод на экран,
'Y'
если двойной,'N'
если нет.Создайте и протестируйте ISDBL.COM, используя
xxd -r
:Кредиты:
источник
LOOPE
вместоJNZ
/,LOOP
чтобы сохранить 2 байта.Луа ,
676663593332 байта-25 байт благодаря Джузеппе
-1 байт благодаря val
Попробуйте онлайн!
Удаляет каждый удвоенный символ, затем проверяет, является ли результат пустым.
источник
i:gsub("(.)%1","")
проверить и проверитьi==""
?"(.)%1"
это само по себе включает столкновения, но мне не пришло в голову, что достаточно заменить его один раз для всех захватов. Должен ли я реализовать ваше решение или написать свой собственный ответ? И спасибо!arg[1]
может быть заменен на,(...)
чтобы сохранить один байт.Perl 5 , 15 байт
Попробуйте онлайн!
Выходы 1 для двойного разговора, ничего для двойного разговора.
источник
MathGolf , 2 байта
Попробуйте онлайн!
Как и в случае ответа 05AB1E,
½
строка разбивается на четные и нечетные символы, а затем проверяется на равенство. Проходит за пустую строку.источник
JavaScript, 28 байт
Попробуйте онлайн!
23 байта, используя регулярное выражение wastl
Попробуйте онлайн!
источник
null
для false: попробуйте онлайн!s=>!s.some((x,y)=>x>s[y|1])
>
на!=
Haskell ,
2823 байтаПопробуйте онлайн!
Очень просто. Двойная речь - только пустое или повторяющийся символ, добавленный к двойной речи.
Менее просто сейчас. Выводы через наличие или отсутствие ошибки, в соответствии с мета-консенсусом ; нет ошибки означает двойной разговор. Сопоставление с образцом завершается неудачно, если первые два символа различаются или если имеется нечетное количество символов. Спасибо Laikoni за эти сбережения!
источник
V (vim) , 7 байтов
Попробуйте онлайн! или проверить контрольные примеры
HexDump:
Всего два регулярных выражения. Объяснение:
источник
Брахилог , 5 байт
Попробуйте онлайн!
Успех или неудача.
источник
PowerShell ,
3938 байтПопробуйте онлайн!
где
$p
содержит предыдущий символНет рекурсии , нет регулярных выражений :). Принимает входные данные как массив символов через строку символов (см. Ссылку TIO).
PowerShell , 48 байт
Попробуйте онлайн!
Нет рекурсии , нет регулярных выражений и нет трубы: D. Он также принимает входные данные в виде char-массива через строку символов.
$b-eq$a
Вместо этого он используется$a-eq$b
для случая, когда последний символ имеет код # 0.источник
PowerShell ,
6459 байтПопробуйте онлайн!
Рекурсивная функция, без регулярных выражений. Принимает ввод как
char
-array (см. Ссылку TIO). Отшелушивает первые два элемента в$a
и$b
сохраняет остальные в$r
. Если у нас еще остались элементы, рекурсивно вместе с$a -eq $b
. В противном случае просто проверьте, есть ли$a -eq $b
. Вывод неявный.-5 байт благодаря маззи
источник
$
по блоку оператора before и не мог понять, почему он не работает.Юлия 1,0 25 байт
Попробуйте онлайн!
источник
f
, например!a=...
. Или использовать анонимную функцию:s->...
J ,
131110 байтПопробуйте онлайн!
-2 байта благодаря Адаму
-1 байт благодаря милям
Объяснение TLDR: является ли ввод одинаковым со всеми другими символами ввода?
источник
-:]#~2 0$~#
-:2#_2{.\]
следует сохранить еще один байтЯзык программирования Шекспира ,
204156 байт-48 байтов благодаря Джо Кингу (в основном, путем изменения метода вывода)
Попробуйте онлайн!
Выход с ошибкой, если вход является двойным разговором, и с предупреждением, если это не двойной разговор (что разрешено по умолчанию).
источник
Кег ,
1917 знаковОбъяснение:
Попробуйте онлайн!
источник
R ,
5334 байта-19 байт благодаря Джузеппе
Попробуйте онлайн!
источник
gsub("(.)\\1","",a)==""
что сделал бы трюк также; многие другие используют то же регулярное выражение.function(a)!sum(rle(a)$l%%2)
для 28Brain-Flak ,
26, 22 байтаПопробуйте онлайн!
Выходы 1 для ложного и 0 для истинного.
Читаемая версия:
У меня изначально было это:
Что на 10 байт длиннее.
источник
({({}[{}]){{}}{}})
QuadR , 11 байт
Попробуйте онлайн!
''≡⍵
результатом является пустая строка, когда(.)\1
персонаж следует за собойничем не заменен
источник
JavaScript,
2623 байтаПопробуйте онлайн!
Рекурсивное решение, 30 байтов
Спасибо Arnauld за исправление стоимостью 0 байт.
Попробуйте онлайн!
источник
Красный , 36 байт
Попробуйте онлайн!
Более длинная альтернатива:
Красный , 40 байт
Попробуйте онлайн!
источник
Zsh , 36 байт
Выход из truey (0), если НЕ говорит дважды, и falsy (1), если говорит дважды. (Как разрешено в комментарии.)
Попробуйте онлайн!
источник
Пролог (SWI) ,
6045 байтблагодаря несвязанной строке
Попробуйте онлайн!
Преобразование его из строки в список атомов отчасти испортило счет, но хорошо ..
источник
atom_chars
вместоstring_chars
, даже если вы берете строку в качестве ввода, а не атом. Но это может не иметь значения, если вы можете взять строку, разделенную обратным символом, то есть список кодов символов.