Este desafío fue inspirado por este comercial de Wendy's de 1984.
Ilustración de TS Rogers.
Su tarea es encontrar un 0xBEEF hexadecimal en un bollo binario.
La 'carne' consiste en el siguiente patrón:
1 0 1 1 (0xB)
1 1 1 0 (0xE)
1 1 1 0 (0xE)
1 1 1 1 (0xF)
Y el 'bollo' consiste en una matriz binaria de 12x12, como:
1 1 1 0 0 1 1 1 1 1 1 0
1 1 0 1 0 0 1 0 0 0 0 0
0 1 0 0 0 1 1 1 1 1 0 1
1 0 0 1 0 0 1 0 0 1 0 0
1 0 0 1 0 1 1 0 0 1 1 1
1 1 1 1 1 1 0 0 0 0 1 0
1 1 0 1 1 1 0 0 0 0 0 1
1 0 0 1 1 1 1 0 0 0 0 1
1 0 0 1 1 1 0 1 1 1 1 1
1 1 1 1 1 0 0 1 1 1 1 1
1 0 0 0 0 1 0 1 0 1 1 1
1 1 0 0 1 1 0 0 0 0 1 1
Entrada
Su programa o función tomará la matriz binaria como entrada. El formato de matriz es muy flexible, pero debe describirse claramente en su respuesta.
Por ejemplo:
Una sola cadena binaria, con o sin separadores entre las filas:
"111001111110 110100100000..."
o:
"111001111110110100100000..."
una matriz de cadenas binarias:
["111001111110", "110100100000", ...]
una matriz de números (cada número que describe una fila una vez convertida de nuevo a binario y rellena con ceros a la izquierda):
[3710, 3360, ...]
Salida
Las coordenadas (X, Y)
de la 'carne', (0, 0)
siendo la esquina superior izquierda del bollo.
Alternativamente, puede usar coordenadas basadas en 1 (pero no una combinación de ambos formatos, como 0 para X y 1 para Y).
Para el ejemplo anterior, la respuesta esperada es (3, 4)
(basada en 0) o (4, 5)
(basada en 1):
00 01 02 03 04 05 06 07 08 09 10 11
00 1 1 1 0 0 1 1 1 1 1 1 0
01 1 1 0 1 0 0 1 0 0 0 0 0
02 0 1 0 0 0 1 1 1 1 1 0 1
03 1 0 0 1 0 0 1 0 0 1 0 0
04 1 0 0 [1 0 1 1] 0 0 1 1 1
05 1 1 1 [1 1 1 0] 0 0 0 1 0
06 1 1 0 [1 1 1 0] 0 0 0 0 1
07 1 0 0 [1 1 1 1] 0 0 0 0 1
08 1 0 0 1 1 1 0 1 1 1 1 1
09 1 1 1 1 1 0 0 1 1 1 1 1
10 1 0 0 0 0 1 0 1 0 1 1 1
11 1 1 0 0 1 1 0 0 0 0 1 1
Una vez más, cualquier formato razonable funcionaría siempre que se especifique en su respuesta. Mencione también si está utilizando coordenadas basadas en 0 o en 1.
Reglas
- Puede asumir con seguridad que siempre hay exactamente una 'carne' en el pan. No se requiere su código para admitir casos con más de una carne o sin carne.
- El patrón de carne siempre aparecerá como se describe. Nunca se rotará ni reflejará de ninguna manera.
- Este es el código de golf, por lo que gana la respuesta más corta en bytes. Las lagunas estándar están prohibidas.
Casos de prueba
En los siguientes casos de prueba, cada fila de la matriz se expresa como su representación decimal.
Input : [ 3710, 3360, 1149, 2340, 2407, 4034, 3521, 2529, 2527, 3999, 2135, 3267 ]
Output: [ 3, 4 ]
Input : [ 1222, 3107, 1508, 3997, 1906, 379, 2874, 2926, 1480, 1487, 3565, 633 ]
Output: [ 3, 7 ]
Input : [ 2796, 206, 148, 763, 429, 1274, 2170, 2495, 42, 1646, 363, 1145 ]
Output: [ 6, 4 ]
Input : [ 3486, 3502, 1882, 1886, 2003, 1442, 2383, 2808, 1416, 1923, 2613, 519 ]
Output: [ 1, 1 ]
Input : [ 3661, 2382, 2208, 1583, 1865, 3969, 2864, 3074, 475, 2382, 1838, 127 ]
Output: [ 8, 8 ]
Input : [ 361, 1275, 3304, 2878, 3733, 3833, 3971, 3405, 2886, 448, 3101, 22 ]
Output: [ 0, 3 ]
Input : [ 3674, 2852, 1571, 3582, 1402, 3331, 1741, 2678, 2076, 2685, 734, 261 ]
Output: [ 7, 7 ]
y
, x
(es decir, orden inverso)?
(1,1)
)?