Hoje, seu desafio é pegar uma sequência de múltiplas linhas e gerar o quadrado maior contido na sequência que inclui o canto superior esquerdo.
Uma cadeia quadrada é aquela em que:
- Cada linha tem o mesmo número de caracteres
- O número de caracteres em cada linha é igual ao número de linhas.
Considere a seguinte sequência de entrada possível:
abcde
fgh
asdf
foobar
O maior quadrado que você pode extrair dele que inclui o primeiro caractere (o a
no canto do pé) é este:
abc
fgh
asd
Não pode haver um quadrado de comprimento lateral 4, porque a segunda linha não é longa o suficiente. Agora considere esta entrada em potencial:
a
bcd
edf
ghi
A maior praça aqui é justa a
. O quadrado 3x3 formado na parte inferior não contém o primeiro caractere e não conta.
Aqui estão mais alguns casos de teste:
a
a
abc
def
gh
ab
de
ab
cd
ab
cd
abcde
fghij
klm
no
abc
fgh
klm
a
b
a
Você pode exigir que a entrada seja delimitada por sua escolha de LF, CR ou CRLF.
Os caracteres da nova linha não são considerados parte do comprimento da linha.
Você pode exigir que exista ou não uma nova linha à direita na entrada, que não conta como uma linha adicional.
Input é uma string ou um array de caracteres 1D; não é uma lista de strings.
Você pode assumir que a entrada não está vazia e que todas as linhas não estão vazias, e que ela contém apenas ASCII imprimível, incluindo espaços e novas linhas (para o delimitador de linha), mas não as guias.
Isso é código-golfe , o menor número de bytes vence!
.split('\n')
então não vejo por que alguns deveriam obtê-la gratuitamente.