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←0para 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
TextRecognizefunción.fuente
Length@First@Split@Characters@TextRecognize@#&@*no se guarde.