Este desafio foi inspirado no comercial deste Wendy de 1984.
Ilustração de TS Rogers
Sua tarefa é encontrar um 0xBEEF hexadecimal em um bun binário.
A 'carne' consiste no seguinte padrão:
1 0 1 1 (0xB)
1 1 1 0 (0xE)
1 1 1 0 (0xE)
1 1 1 1 (0xF)
E o 'bun' consiste em uma matriz binária 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
Seu programa ou função terá a matriz binária como entrada. O formato da matriz é muito flexível, mas deve ser claramente descrito em sua resposta.
Por exemplo:
uma única cadeia binária, com ou sem separadores entre as linhas:
"111001111110 110100100000..."
ou:
"111001111110110100100000..."
uma matriz de cadeias binárias:
["111001111110", "110100100000", ...]
uma matriz de números (cada número que descreve uma linha uma vez convertida novamente em binário e preenchida à esquerda com zeros):
[3710, 3360, ...]
Resultado
As coordenadas (X, Y)
da 'carne', (0, 0)
sendo o canto superior esquerdo do pão.
Como alternativa, você pode usar coordenadas com base em 1 (mas não uma mistura dos dois formatos, como com base em 0 para X e em 1 para Y).
Para o exemplo acima, a resposta esperada é (3, 4)
(com base em 0) ou (4, 5)
(com base em 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
Novamente, qualquer formato razoável funcionaria desde que especificado em sua resposta. Mencione também se você estiver usando coordenadas com base em 0 ou em 1.
Regras
- Você pode assumir com segurança que sempre há exatamente uma 'carne' no pão. Seu código não é necessário para suportar casos com mais de uma carne ou sem carne.
- O padrão de carne sempre aparecerá como descrito. Nunca será girado ou espelhado de forma alguma.
- Isso é código-golfe, então a resposta mais curta em bytes vence. As brechas padrão são proibidas.
Casos de teste
Nos seguintes casos de teste, cada linha da matriz é expressa como sua representação 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
(ou seja, ordem inversa)?
(1,1)
)?