вход
Первая строка будет определенной строкой, повторяемой любое количество раз. Например, это может быть abcabcabcabc
, [];[];[];
и т.д. Это может быть отрезана; например: 1231231231
. Всегда находите самую короткую строку; например, если строка есть 22222
, то строка 2
не22
или 22222
или что-то еще. Строка всегда будет повторяться как минимум 2 полных раза.
Все последующие строки будут смещены на любое число. Например, это может быть:
abcabcabc
cabcabcab
bcabcabca
(смещение на 1), или это может быть:
abcdefabcdefabcdefabc
cdefabcdefabcdefabcde
efabcdefabcdefabcdefa
(смещено на 4).
Один из символов на входе будет неправильным. (Это гарантированно не будет в первой строке.) Например, в этом входе:
a=1a=1a=1
=1a=1a=1a
1a=11=1a=
a=1a=1a=1
=1a=1a=1a
1
на линии 3 является нечетным один из.
Выход
Вы должны вывести (начиная с нуля, начиная с верхнего левого угла) координаты нечетного числа. Например, в приведенном выше вводе соответствующий вывод 4,2
. Вы также можете выводить 4 2
, или "4""2"
, или даже [[4],[2]]
, или любой другой формат, при условии, что вы можете сказать, каким должен быть вывод.
Контрольные примеры
Входные данные:
codegolfcodegolfco
egolfcodegolfcodeg
lfcodegolfcodegoff
odegolfcodegolfcod
golfcodegolfcodego
fcodegolfcodegolfc
Выход: 16,2
Входные данные:
][[][][[][][[][][[][][[
[][][[][][[][][[][][[][
[][[][][[][][[][][[][][
[[][][[]]][[][][[][][[]
Выход: 8,3
Входные данные:
...
. .
...
Выход: 1,1
Входные данные:
ababa
babab
ababb
babab
Выход: 4,2
abc/cab/abc
- и вывод0 2
здесь?Ответы:
BashPerl,23122921817816416613810674 байтаСценарий требует использования
-n
переключателя, который составляет два байта.Идея добавления двух копий всех полных повторений шаблона была взята из ответа МТ0 .
В отличие от всех других ответов, этот подход пытается извлечь шаблон текущей строки ввода в каждой итерации; он потерпит неудачу в строке, содержащей нечетный символ (и вместо этого будет использовать шаблон предыдущей строки). Это сделано для включения извлечения шаблона в цикл, который позволяет сохранить несколько байтов.
Неуправляемая версия
пример
Для теста
выход версии гольфа
это означает, что нечетный символ имеет координаты
16,2
.Это
явное злоупотреблениеиспользует преимущества либерального формата вывода.Непосредственно перед выходом содержимое некоторых специальных переменных Perl:
(
$n
содержит совпадение подшаблона, доступного через обратную ссылку\n
.)источник
^((.*?)(.*?))(?=\1+\2$)
Perl,
212191181168 байтchomp
вместоchop
должен использоваться.Старая версия, 212 байт:
Безголовая версия:
источник
chop
не нужно - должно быть удалено. финалexit print
может быть заменен наdie
(добавить,,$/
чтобы скрыть лишние вещи (если требуется)). такжеlength$_
можно заменить наy///c
chop
, потому что$
совпадает с символом новой строки в конце строки. Сокрытие лишних вещейdie
через добавленную новую строку кажется мне необходимым. Такжеy///c
намного корочеlength$_
и на один байт короче, чемlength
без лишних$_
.C 187 байт
Ограничения.
Гольф версия
Неуправляемая версия
источник
Питон,
303292Ввод идет через стандартный ввод. Я объясню, если есть спрос, но, похоже, я все равно не выиграю.
источник
Perl,
157154Изменить : -3 благодаря предложению ardnew.
Это заняло у меня некоторое время (конечно, не 5 дней;), и идея об алгоритме была изначально неуловима (хотя я чувствовал, что он там был), но в конце концов (и внезапно) все стало ясно.
Если длина строки кратна длине шаблона, и даже если строка не начинается с начала шаблона, конкатенация строки с самим собой создаст шаблон вместо конкатенации (представьте бесконечное повторение слова на круговой ленте - место сварка не важна). Таким образом, идея состоит в том, чтобы обрезать линию до нескольких единиц длины и объединить оригинал с ней. Результат, даже для строки, содержащей неправильный символ, гарантированно соответствует шаблону хотя бы один раз. Оттуда легко найти положение оскорбительного персонажа.
Первая строка бесстыдно позаимствована из ответа Хейко Обердика :-)
источник
/.{$n}/;$_=$&.$_;
наs/.{$n}/$&$&/;
JavaScript (ES6) -
147133136 символовОжидает, что проверяемая строка будет в переменной,
s
и выдаст результат на консоль.Тестовый пример 1
Выходы
Тестовый пример 2
Выходы
Тестовый пример 3
Выходы
Тестовый пример 4
Выходы
Тестовый пример 5
Выходы
Тестовый пример 6
Выходы
источник
s="xyxy\nyyxy"
. Для второй строки,match[4]
будетyy
; это должно быть простоy
.abab
о шаблонеababaababa
; вам нужно использовать^…$
./^…\n/
работает или/^…$/m
^
(по крайней мере, он не нужен ни для одного из 6 тестовых случаев, которые я перечислил - но, вероятно, есть контрпример, где он есть, поэтому я оставил его).