今日の課題は、複数行の文字列を取得し、左上隅を含む文字列に含まれる最大の正方形を出力することです。
四角い文字列は次のようなものです:
- 各行の文字数は同じです
- 各行の文字数は、行数と同じです。
次の可能な入力文字列を考慮してください。
abcde
fgh
asdf
foobar
最初の文字(a
左上隅)を含む、そこから取得できる最大の正方形は次のとおりです。
abc
fgh
asd
2行目の長さが足りないため、辺の長さ4の正方形はありません。次に、この潜在的な入力を検討します。
a
bcd
edf
ghi
ここで最大の広場はちょうどa
です。下部に形成された3x3の正方形には最初の文字が含まれておらず、カウントされません。
以下に、さらにいくつかのテストケースを示します。
a
a
abc
def
gh
ab
de
ab
cd
ab
cd
abcde
fghij
klm
no
abc
fgh
klm
a
b
a
LF、CR、またはCRLFの選択により、入力を区切る必要がある場合があります。
改行文字は、行の長さの一部とは見なされません。
入力に末尾の改行があるかどうかを要求する場合がありますが、これは追加行としてカウントされません。
入力は文字列または1D文字配列です。文字列のリストではありません。
入力は空ではなく、すべての行は空ではなく、スペースと改行(行区切り記号)を含む印刷可能なASCIIのみを含み、タブは含まないと想定できます。
これはcode-golfで、最少バイトが勝ちます!
.split('\n')
があるわけではないため、一部のソリューションを無料で入手する必要がある理由はわかりません。