Votre défi aujourd'hui est de prendre une chaîne multiligne et de produire le plus grand carré contenu dans la chaîne qui comprend le coin supérieur gauche.
Une chaîne carrée est celle où:
- Chaque ligne a le même nombre de caractères
- Le nombre de caractères sur chaque ligne est égal au nombre de lignes.
Considérez la chaîne d'entrée possible suivante:
abcde
fgh
asdf
foobar
Le plus grand carré que vous pouvez en prendre qui comprend le premier caractère (le a
dans le coin supérieur gauche) est le suivant:
abc
fgh
asd
Il ne peut pas y avoir de carré de côté 4, car la deuxième ligne n'est pas assez longue. Considérez maintenant cette entrée potentielle:
a
bcd
edf
ghi
La plus grande place ici est juste a
. Le carré 3x3 formé en bas ne contient pas le tout premier caractère et ne compte pas.
Voici quelques cas de test supplémentaires:
a
a
abc
def
gh
ab
de
ab
cd
ab
cd
abcde
fghij
klm
no
abc
fgh
klm
a
b
a
Vous pouvez exiger que l'entrée soit délimitée par votre choix de LF, CR ou CRLF.
Le ou les caractères de nouvelle ligne ne sont pas considérés comme faisant partie de la longueur de la ligne.
Vous pouvez exiger qu'il y ait ou non une nouvelle ligne de fin en entrée, qui ne compte pas comme une ligne supplémentaire.
L'entrée est une chaîne ou un tableau de caractères 1D; ce n'est pas une liste de chaînes.
Vous pouvez supposer que l'entrée n'est pas vide et que toutes les lignes ne sont pas vides et qu'elle ne contient que de l'ASCII imprimable, y compris des espaces et des retours à la ligne (pour le délimiteur de ligne) mais pas des tabulations.
C'est du code-golf , le moins d'octets gagne!
.split('\n')
donc je ne vois pas pourquoi certains devraient l'obtenir gratuitement.