Entrada
A primeira linha será uma determinada sequência repetida várias vezes. Por exemplo, poderia ser abcabcabcabc
, [];[];[];
etc. Pode ser cortado; por exemplo: 1231231231
. Sempre encontre a corda mais curta; por exemplo, se a linha é 22222
, então a string é 2
, not 22
or 22222
ou qualquer outra coisa. A corda sempre será repetida pelo menos 2 vezes.
Todas as linhas subsequentes terão esse padrão compensado por qualquer número. Por exemplo, poderia ser:
abcabcabc
cabcabcab
bcabcabca
(deslocamento por 1) ou pode ser:
abcdefabcdefabcdefabc
cdefabcdefabcdefabcde
efabcdefabcdefabcdefa
(compensado por 4).
Um dos caracteres da entrada estará errado. (É garantido que não esteja na primeira linha.) Por exemplo, nesta entrada:
a=1a=1a=1
=1a=1a=1a
1a=11=1a=
a=1a=1a=1
=1a=1a=1a
o 1
na linha 3 é o ímpar.
Saída
Você deve gerar as coordenadas (com base em zero, começando no canto superior esquerdo) da ímpar. Por exemplo, na entrada acima, a saída correspondente é 4,2
. Você também pode enviar 4 2
, ou "4""2"
, ou mesmo [[4],[2]]
, ou qualquer outro formato, desde que saiba qual deve ser a saída.
Casos de teste
Entrada:
codegolfcodegolfco
egolfcodegolfcodeg
lfcodegolfcodegoff
odegolfcodegolfcod
golfcodegolfcodego
fcodegolfcodegolfc
Saída: 16,2
Entrada:
][[][][[][][[][][[][][[
[][][[][][[][][[][][[][
[][[][][[][][[][][[][][
[[][][[]]][[][][[][][[]
Saída: 8,3
Entrada:
...
. .
...
Saída: 1,1
Entrada:
ababa
babab
ababb
babab
Saída: 4,2
abc/cab/abc
- e saída0 2
aqui?Respostas:
BashPerl,23122921817816416613810674 bytesO script requer o uso da
-n
opção, que responde por dois dos bytes.A idéia de anexar duas cópias de todas as repetições completas do padrão foi retirada da resposta do MT0 .
Em contraste com todas as outras respostas, essa abordagem tenta extrair o padrão da linha de entrada atual em cada iteração; ele falhará na linha que contém o caractere ímpar (e use o padrão da linha anterior). Isso é feito para incluir a extração de padrões no loop, que consegue salvar alguns bytes.
Versão ungolfed
Exemplo
Para o caso de teste
a saída da versão golfed é
significando que o caractere ímpar tem as coordenadas
16,2
.Esse
abuso flagrantetira proveito do formato de saída liberal.Antes de sair, o conteúdo de algumas das variáveis especiais do Perl são:
(
$n
contém a correspondência do subpadrão acessível por referência anterior\n
.)fonte
^((.*?)(.*?))(?=\1+\2$)
Perl,
212191181168 byteschomp
vez dechop
deve ser usado.Versão antiga, 212 bytes:
Versão não destruída:
fonte
chop
é desnecessário - deve ser removido. a finalexit print
pode ser substituída pordie
(adicione,$/
para ocultar o material extra (se necessário)). tambémlength$_
pode ser substituído pory///c
chop
, porque$
corresponde antes da nova linha no final da string. Ocultar o material extra dadie
nova linha adicionada parece necessário para mim. Tambémy///c
é muito menorlength$_
e um byte menor quelength
o desnecessário$_
.C, 187 bytes
Limitações
Versão Golfed
Versão ungolfed
fonte
Python,
303292A entrada passa por stdin. Vou explicar se houver alguma demanda, mas não parece que eu vou ganhar de qualquer maneira.
fonte
Perl,
157154Edit : -3 graças à sugestão do ardnew.
Levei algum tempo (ligado e desligado, é claro, não 5 dias ;-)), e a idéia sobre algoritmo era inicialmente ilusória (embora eu sentisse que estava lá), mas finalmente (e de repente) tudo ficou claro.
Se o comprimento da string for múltiplo do comprimento do padrão, e mesmo que a string não comece com o início do padrão, a concatenação de uma string produzirá um padrão no lugar da concatenação (imagine a repetição infinita de uma palavra na fita circular - o lugar de soldagem não é importante). Portanto, a idéia é aparar a linha em vários comprimentos de unidade e concatenar o original. O resultado, mesmo para a sequência que contém o caractere errado, é garantido para corresponder ao padrão pelo menos uma vez. A partir daí, é fácil encontrar a posição do personagem ofensivo.
A primeira linha é descaradamente emprestada da resposta de Heiko Oberdiek :-)
fonte
/.{$n}/;$_=$&.$_;
coms/.{$n}/$&$&/;
JavaScript (ES6) -
147133136 caracteresEspera que a sequência a ser testada esteja na variável
s
e gera o resultado para o console.Caso de teste 1
Saídas
Caso de teste 2
Saídas
Caso de teste 3
Saídas
Caso de teste 4
Saídas
Caso de teste 5
Saídas
Caso de teste 6
Saídas
fonte
s="xyxy\nyyxy"
,. Para a segunda linha,match[4]
seráyy
; deveria ser justoy
.abab
o padrão deababaababa
; você precisa usar^…$
./^…\n/
funciona ou/^…$/m
^
(pelo menos não para nenhum dos seis casos de teste que listei - mas provavelmente há um exemplo de contrário em que isso ocorre, então deixei aqui).