Es posible que hayas visto rompecabezas como este:
Encuentra el
0
:
OOOOOOOOOOOOOOOOOOOO0OOOOOOOOOOOOOOOOOO
El desafío es escribir un programa que encuentre el índice de la letra diferente dada una imagen.
Entrada
La entrada será un Image
. La imagen consistirá en una línea de texto negro en Helvetica 24 pt. fuente sobre un fondo blanco . El texto consistirá en una selección de dos caracteres: un carácter que se repite y un carácter que aparece solo una vez. Por ejemplo:
Salida
La salida será un Integer
, el índice de los diferentes caracteres. En el ejemplo anterior, la salida será 4
. (Tenga en cuenta que los índices de una cadena comienzan en 0
)
Especificaciones del programa
Como de costumbre para el código de golf, gana el programa más corto.
Casos de prueba
=> 10
=> 11
=> 5
=> 16
=> 10
=> 21
=> 20
=> 13
=> 11
=> 4
=> 7
Respuestas:
Dyalog APL ,
3132 bytes⎕IO←0
para obtener índices que comienzan con 0 (por OP), y que de todos modos es el predeterminado en muchos sistemas APL.1,⍵
anteponga una columna de píxeles blancos (para asegurar el margen)∧⌿
booleano para cada columna si el booleano completamente blanco (reducción Y vertical)2>/
en el borde izquierdo de cada carácter (en pares, mayor que) se⍵⊂⍨
divide en bloques que comienzan en cada VERDADERO.{
...}¨
para cada bloque∧⌿⍵
booleano para cada columna si las columnas completamente blancas (vertical Y-reducción)⍵/⍨~
que no son [todas blancas] hacen∘.≡⍨
coincidir cada elemento con todos los elementos+⌿
número de bloques idénticos a cada bloque (vertical más-reducción)1⍳⍨
índice del primero (es decir, elemento único)Asume que la imagen es de píxeles negros (0) y blancos (1) en la matriz
I
, y que hay al menos una columna de píxeles completamente blanca entre los caracteres."!¡¡YO!!":
"mmnmm":
fuente
{⍵/⍨~∧⌿⍵}¨
y permanecer solo{1⍳⍨+⌿∘.≡⍨⍵⊂⍨2>/∧⌿1,⍵}
?Mathematica, 125 bytes
Ahh, Mathemeatica incorporado. Tan increíble. (Y hasta luego ...) Sopla en | /! : /; , /. `/ 'y explota de manera diferente en m / n.
fuente
Length[Split[Characters@TextRecognize@#][[1]]] &
Mathematica, 46 bytes
Las mismas fallas que la otra solución matemática, ya que depende de la misma
TextRecognize
función.fuente
Length@First@Split@Characters@TextRecognize@#&
@*
no se guarde.