Escreva um programa ou função que obtenha um número inteiro positivo N e uma grade de dígitos decimais (0 a 9) com largura W e altura H (que também são números inteiros positivos). Você pode assumir que N será menor ou igual ao maior de W e H.
Imprima ou retorne o maior número contíguo de N dígitos que aparece horizontal ou verticalmente na grade, gravado na ordem de leitura normal ou no sentido inverso.
- Linhas diagonais de dígitos não são consideradas.
- A grade não contorna, ou seja, não possui condições de contorno periódicas.
Por exemplo, a grade 3 × 3
928
313
049
teria 9
como saída para N = 1, 94
como saída para N = 2 e 940
como saída para N = 3.
A grade 4 × 3
7423
1531
6810
teria 8
como saída para N = 1, 86
para N = 2, 854
para N = 3 e 7423
para N = 4.
A grade 3 × 3
000
010
000
teria saída 1
para N = 1 e 10
para N = 2 e N = 3 ( 010
também é válido para N = 3).
A grade 1 × 1
0
teria saída 0
para N = 1.
Você pode receber a entrada em qualquer formato razoável e conveniente. por exemplo, a grade pode ser uma sequência de dígitos separados por nova linha, ou uma matriz multidimensional, ou uma lista de listas de dígitos, etc. Os zeros à esquerda são permitidos na saída se eles fizerem parte da grade.
Isso é código-golfe , então o código mais curto em bytes vence, mas também atribuirei pontos de brownie (ou seja, mais prováveis de upvotes) por respostas que possam mostrar que seu algoritmo é computacionalmente eficiente.
Respostas:
Pitão,
2219 bytes3 bytes graças a Jakube.
Experimente online.
Se for permitido imprimir zeros à esquerda, o código será 18 bytes:
fonte
s
.CJam,
39363534 bytesRapidamente, antes de @Dennis acordar: P
Experimente online .
Explicação
O algoritmo básico é fazer todas as quatro rotações da grade e dividir cada linha em pedaços de comprimento
N
(ou o comprimento da linha, o que for menor). Em seguida, converta os pedaços em ints e pegue o maior.fonte
few
algo de especial ou são três comandos separados?ew
aplicado usandof
, ou "mapear com parâmetro extra". Por exemplo,["abcd" "efgh"] 2 few
resulta em[["ab" "bc" "cd"] ["ef" "fg" "gh"]]
.Burlesque
Ainda não é uma resposta final, mas provavelmente funcionará assim:
Como N e a grade são dados exatamente?
fonte