Vous avez peut-être vu des puzzles comme celui-ci:
Trouvez le
0
:
OOOOOOOOOOOOOOOOOOOO0OOOOOOOOOOOOOOOOOO
Le défi est d'écrire un programme qui trouve l'index des différentes lettres à partir d'une image.
Contribution
L'entrée sera un Image
. L'image consistera en une ligne de texte noir dans le Helvetica 24 pt. police sur fond blanc . Le texte sera composé d'une sélection de deux caractères: un caractère qui est répété et un caractère qui n'apparaît qu'une seule fois. Par exemple:
Production
La sortie sera un Integer
, l'index du caractère différent. Dans l'exemple ci-dessus, la sortie sera 4
. (Notez que les indices d'une chaîne commencent à 0
)
Spécifications du programme
Comme d'habitude pour le golf à code, le programme le plus court gagne.
Cas de test
=> 10
=> 11
=> 5
=> 16
=> 10
=> 21
=> 20
=> 13
=> 11
=> 4
=> 7
Réponses:
Dyalog APL ,
3132 octets⎕IO←0
pour obtenir des indices commençant par 0 (par OP), et qui est de toute façon par défaut dans de nombreux systèmes APL.1,⍵
ajouter une colonne de pixels blancs (pour garantir la marge)∧⌿
booléenne pour chaque colonne si tout blanc (réduction ET verticale)2>/
booléen au bord gauche de chaque caractère (par paire supérieur à)⍵⊂⍨
divisé en blocs commençant à chaque VRAI.{
…}¨
Pour chaque bloc∧⌿⍵
booléen pour chaque colonne si les colonnes tout blanc (vertical ET-réduction)⍵/⍨~
qui ne sont pas [tout blanc]∘.≡⍨
correspondent à chaque élément à tous les éléments+⌿
nombre de blocs identique à chaque bloc (vertical plus-réduction)1⍳⍨
index du premier (ie élément unique)Suppose que l'image est
I
composée de pixels noirs (0) et blancs (1) dans la matrice et qu'il existe au moins une colonne de pixels entièrement blancs entre les caractères."!JE!!":
"mmnmm":
la source
{⍵/⍨~∧⌿⍵}¨
et rester avec seulement{1⍳⍨+⌿∘.≡⍨⍵⊂⍨2>/∧⌿1,⍵}
?Mathematica, 125 octets
Ahh, Mathemeatica a intégré. Tellement incroyable. (Et si longtemps ...) explose | /! : /; , /. `/ 'et explose différemment sur m / n.
la source
Length[Split[Characters@TextRecognize@#][[1]]] &
Mathematica, 46 octets
Mêmes défaillances que l'autre solution mathématique car elle repose sur la même
TextRecognize
fonction.la source
Length@First@Split@Characters@TextRecognize@#&
@*
ne pas sauver.