Contribution
La première ligne sera une certaine chaîne répétée autant de fois. Par exemple, il pourrait être abcabcabcabc
, [];[];[];
etc. Il peut être coupé; par exemple: 1231231231
. Trouvez toujours la chaîne la plus courte; par exemple, si la ligne est 22222
, la chaîne est 2
, pas 22
ou 22222
ou quoi que ce soit d' autre. La chaîne sera toujours répétée au moins 2 fois.
Toutes les lignes suivantes seront ce motif compensé par un nombre quelconque. Par exemple, cela pourrait être:
abcabcabc
cabcabcab
bcabcabca
(compensé par 1), ou ce pourrait être:
abcdefabcdefabcdefabc
cdefabcdefabcdefabcde
efabcdefabcdefabcdefa
(compensé par 4).
L'un des caractères de l'entrée sera erroné. (Il est garanti de ne pas être sur la première ligne.) Par exemple, dans cette entrée:
a=1a=1a=1
=1a=1a=1a
1a=11=1a=
a=1a=1a=1
=1a=1a=1a
la 1
ligne 3 est l'intrus.
Production
Vous devez sortir les coordonnées (de base zéro, en partant du coin supérieur gauche) de l'intrus. Par exemple, dans l'entrée ci-dessus, la sortie correspondante est 4,2
. Vous pouvez également sortir 4 2
, ou "4""2"
, ou même [[4],[2]]
, ou tout autre format, tant que vous pouvez dire ce que la sortie est censée être.
Cas de test
Contribution:
codegolfcodegolfco
egolfcodegolfcodeg
lfcodegolfcodegoff
odegolfcodegolfcod
golfcodegolfcodego
fcodegolfcodegolfc
Production: 16,2
Contribution:
][[][][[][][[][][[][][[
[][][[][][[][][[][][[][
[][[][][[][][[][][[][][
[[][][[]]][[][][[][][[]
Production: 8,3
Contribution:
...
. .
...
Production: 1,1
Contribution:
ababa
babab
ababb
babab
Production: 4,2
abc/cab/abc
- et sortir0 2
ici?Réponses:
BashPerl,23122921817816416613810674 bytesLe script nécessite l'utilisation du
-n
commutateur, qui représente deux des octets.L'idée d'ajouter deux copies de toutes les répétitions complètes du motif a été tirée de la réponse de MT0 .
Contrairement à toutes les autres réponses, cette approche tente d'extraire le modèle de la ligne d'entrée actuelle à chaque itération; il échouera sur la ligne contenant le caractère impair (et utilisera le modèle de la ligne précédente à la place). Cela est fait pour inclure l'extraction du modèle dans la boucle, qui parvient à économiser quelques octets.
Version non golfée
Exemple
Pour le cas de test
la sortie de la version golfée est
ce qui signifie que le caractère impair a les coordonnées
16,2
.Cet
abus flagrantprofite du format de sortie libéral.Juste avant de quitter, le contenu de certaines variables spéciales de Perl est:
(
$n
contient la correspondance du sous-modèle accessible via la référence arrière\n
.)la source
^((.*?)(.*?))(?=\1+\2$)
Perl,
212191181 181168 octetschomp
au lieu dechop
devrait être utilisé.Ancienne version, 212 octets:
Version non golfée:
la source
chop
est inutile - devrait être supprimé. la finaleexit print
peut être remplacée pardie
(ajouter,$/
pour masquer les éléments supplémentaires (si nécessaire)).length$_
peut également être remplacé pary///c
chop
, car il$
correspond avant la nouvelle ligne à la fin de la chaîne. Cacher les trucs supplémentairesdie
via la nouvelle ligne ajoutée me semble nécessaire. Est égalementy///c
beaucoup plus court quelength$_
et un octet plus court quelength
sans inutile$_
.C, 187 octets
Limites.
Version golfée
Version non golfée
la source
Python,
303292L'entrée passe par stdin. Je vais l'expliquer s'il y a une demande, mais il ne semble pas que je vais gagner de toute façon.
la source
Perl,
157154Edit : -3 grâce à la suggestion de ardnew.
Cela m'a pris du temps (allumé et éteint, bien sûr, pas 5 jours ;-)), et l'idée d'algorithme était initialement insaisissable (même si je pensais qu'il était là), mais finalement (et soudainement), tout est devenu clair.
Si la longueur de la chaîne est multiple de la longueur du motif, et même si la chaîne ne commence pas par le début du motif, la concaténation de la chaîne avec elle-même produira un motif à la place de la concaténation (imaginez la répétition infinie d'un mot sur un ruban circulaire - l'endroit de le soudage n'est pas important). Donc, l'idée est de couper la ligne à plusieurs longueurs d'unité et de concaténer l'original. Le résultat, même pour la chaîne contenant le mauvais caractère, est garanti pour correspondre au modèle au moins une fois. À partir de là, il est facile de trouver la position du personnage incriminé.
La première ligne est empruntée sans vergogne à la réponse de Heiko Oberdiek :-)
la source
/.{$n}/;$_=$&.$_;
pars/.{$n}/$&$&/;
JavaScript (ES6) -
147133136 CaractèresAttend que la chaîne à tester soit dans la variable
s
et renvoie le résultat à la console.Cas de test 1
Les sorties
Cas de test 2
Les sorties
Cas de test 3
Les sorties
Cas de test 4
Les sorties
Cas de test 5
Les sorties
Cas de test 6
Les sorties
la source
s="xyxy\nyyxy"
. Pour la deuxième ligne,match[4]
serayy
; ça devrait être justey
.abab
du modèle deababaababa
; vous devez utiliser^…$
./^…\n/
fonctionne ou/^…$/m
^
(du moins, il ne l'est pour aucun des 6 cas de test que j'ai énumérés - mais il y a probablement un contre-exemple où il le fait, je l'ai donc laissé).