Escriba un programa o función que tome un entero positivo N y una cuadrícula de dígitos decimales (0 a 9) con ancho W y altura H (que también son enteros positivos). Puede suponer que N será menor o igual que el mayor de W y H.
Imprima o devuelva el número de N dígitos contiguos más grande que aparece horizontal o verticalmente en la cuadrícula, escrito en orden de lectura normal o al revés.
- No se consideran líneas diagonales de dígitos.
- La cuadrícula no se ajusta, es decir, no tiene condiciones de contorno periódicas.
Por ejemplo, la cuadrícula 3 × 3
928
313
049
tendría 9
como salida para N = 1, 94
como salida para N = 2 y 940
como salida para N = 3.
La cuadrícula 4 × 3
7423
1531
6810
tendría 8
como salida para N = 1, 86
para N = 2, 854
para N = 3 y 7423
para N = 4.
La cuadrícula 3 × 3
000
010
000
tendría salida 1
para N = 1, y 10
para N = 2 y N = 3 ( 010
también es válido para N = 3).
La cuadrícula 1 × 1
0
tendría salida 0
para N = 1.
Puede tomar la entrada en cualquier formato razonable conveniente. por ejemplo, la cuadrícula podría ser una cadena de dígitos separada por una nueva línea, o una matriz multidimensional, o una lista de listas de dígitos, etc. Los ceros iniciales están permitidos en la salida si fueran parte de la cuadrícula.
Este es el código de golf , por lo que gana el código más corto en bytes, pero también otorgaré puntos brownie (es decir, votos más probables) por respuestas que pueden mostrar que su algoritmo es computacionalmente eficiente.
Respuestas:
Pyth,
2219 bytes3 bytes gracias a Jakube.
Pruébalo en línea.
Si se nos permite imprimir ceros a la izquierda, el código es de 18 bytes:
fuente
s
.CJam,
39363534 bytesSolo rápidamente, antes de que @Dennis se despierte: P
Pruébalo en línea .
Explicación
El algoritmo básico es tomar las cuatro rotaciones de la cuadrícula y dividir cada fila en trozos de longitud
N
(o la longitud de la fila, la que sea menor). Luego convierta los trozos a ints y tome el más grande.fuente
few
hace algo especial o son tres comandos separados?ew
aplicó usandof
, o "mapa con parámetro adicional". Por ejemplo,["abcd" "efgh"] 2 few
resultados en[["ab" "bc" "cd"] ["ef" "fg" "gh"]]
.Burlesco
Todavía no es una respuesta final, pero probablemente funcionará así:
¿Cómo se dan exactamente N y la cuadrícula?
fuente