Her programcı dikdörtgenlerin □
gerçekten eğlenceli olduğunu bilir . Bu eğlenceyi alevlendirmek için, bu sevimli ve bulanık diyagramlar iç içe parantez gruplarına dönüştürülebilir.
Bu meydan okuma önceki yorumumun tersidir .
Diyelim ki şöyle bir grup birbirine bağlı dikdörtgen var:
+------------+
| |
+--+-+ +----+-+
| | | | | |
| | | +---+--+ | |
| | | | | | | |
+--+-+ | +-+--+-+-+-+
| | | | | | | |
| | | | | | | |
| | | | | | | | +-+
| +-+-+--+ | | | | |
| | | | | | +-+-+-+
+-----+-+----+ | | | | | |
| | | | | +-+ |
| +------+ | | |
| | | |
+----------+ +-----+
Ek Notlar:
- Hiçbir zaman iki
+
saniye yan yana gelmeyecek - İki dikdörtgen hiçbir zaman bir kenarı veya köşeyi paylaşmaz
- Her sütunda yalnızca en fazla bir dikey kenar olacak
İlk adım, herhangi bir dikdörtgenin en sol köşesine bakmaktır. Dört dirsek tipinden birini atayın ({[<
. Seçtiğim [
.
+------------+
| |
[--+-] +----+-+
[ | ] | | |
[ | ] +---+--+ | |
[ | ] | | | | |
[--+-] | +-+--+-+-+-+
| | | | | | | |
| | | | | | | |
| | | | | | | | +-+
| +-+-+--+ | | | | |
| | | | | | +-+-+-+
+-----+-+----+ | | | | | |
| | | | | +-+ |
| +------+ | | |
| | | |
+----------+ +-----+
Şimdi en soldaki ikinci dikdörtgene bakın. Bir [
dikdörtgene bindiği için farklı türde olmalıdır. Seçtiğim (
.
(------------)
( )
[--(-] +----)-+
[ ( ] | ) |
[ ( ] +---+--+ ) |
[ ( ] | | | ) |
[--(-] | +-+--+-)-+-+
( | | | | ) | |
( | | | | ) | |
( | | | | ) | | +-+
( +-+-+--+ ) | | | |
( | | ) | | +-+-+-+
(-----+-+----) | | | | | |
| | | | | +-+ |
| +------+ | | |
| | | |
+----------+ +-----+
Bir sonraki en soldaki dikdörtgen, önceki herhangi bir dikdörtgene kesişmez, ancak önceki içine yuva yapar. (
Tekrar atamayı seçtim . Normalde, mümkünse iç içe yerleştirdiği ile aynı türde bir dikdörtgen atamak iyi bir tahmindir, ancak bazen geri izleme gerekir.
(------------)
( )
[--(-] +----)-+
[ ( ] | ) |
[ ( ] (---+--) ) |
[ ( ] ( | ) ) |
[--(-] ( +-+--)-)-+-+
( ( | | ) ) | |
( ( | | ) ) | |
( ( | | ) ) | | +-+
( (-+-+--) ) | | | |
( | | ) | | +-+-+-+
(-----+-+----) | | | | | |
| | | | | +-+ |
| +------+ | | |
| | | |
+----------+ +-----+
Bu sonraki dikdörtgen [
tekrar atanabilir .
(------------)
( )
[--(-] +----)-+
[ ( ] | ) |
[ ( ] (---+--) ) |
[ ( ] ( | ) ) |
[--(-] ( [-+--)-)-+-]
( ( [ | ) ) | ]
( ( [ | ) ) | ]
( ( [ | ) ) | ] +-+
( (-[-+--) ) | ] | |
( [ | ) | ] +-+-+-+
(-----[-+----) | ] | | | |
[ | | ] | +-+ |
[ +------+ ] | |
[ ] | |
[----------] +-----+
Bir sonraki dikdörtgen çok eğlenceli. Bu a hem kesişiyor (
ve bir [
ben bir de diyebiliriz bu yüzden, dikdörtgen {
dikdörtgen (veya <
ama kimse o seviyor).
(------------)
( )
[--(-] {----)-}
[ ( ] { ) }
[ ( ] (---{--) ) }
[ ( ] ( { ) ) }
[--(-] ( [-{--)-)-}-]
( ( [ { ) ) } ]
( ( [ { ) ) } ]
( ( [ { ) ) } ] +-+
( (-[-{--) ) } ] | |
( [ { ) } ] +-+-+-+
(-----[-{----) } ] | | | |
[ { } ] | +-+ |
[ {------} ] | |
[ ] | |
[----------] +-----+
Son iki dikdörtgen o kadar da kötü değil. Herhangi iki farklı tipte olabilirler.
(------------)
( )
[--(-] {----)-}
[ ( ] { ) }
[ ( ] (---{--) ) }
[ ( ] ( { ) ) }
[--(-] ( [-{--)-)-}-]
( ( [ { ) ) } ]
( ( [ { ) ) } ]
( ( [ { ) ) } ] {-}
( (-[-{--) ) } ] { }
( [ { ) } ] <-{-}->
(-----[-{----) } ] < { } >
[ { } ] < {-} >
[ {------} ] < >
[ ] < >
[----------] <----->
Dikdörtgenleri okurken anlıyorum [(]([{))}]<{}>
. Bu, yukarıdaki giriş için olası bir çıkış olacaktır. Kapsamlı olmayan pek çok olası seçenek listesi:
[(]([{))}]<{}>
<(>(<{))}>{()}
{<}[{(]>)}[<>]
any of the 4! permutations of ([{<, you get the idea...
Giriş
ASCII-art, açık oldukları varsayımları üzerinde dikdörtgenleşir (yukarıdaki notlara bakınız) ve uygun şekilde bir parantez dizisine dönüştürülebilir. İsteğe bağlı izlemeli yeni satırlı bir boşluk bırakmadığınızı veya bir dikdörtgene dolgulu olduğunuzu varsayabilirsiniz. Önde gelen bir boşluk olmayacak.
Çıktı
Geçerli köşeli parantezlerin herhangi biri, dikdörtgenlerin kesişme kısıtlamalarına uyandır. İsteğe bağlı izleyen bir yeni satır dışında, parantez dışında başka karakter olmamalıdır. Ana kural, eğer iki kare kesişirse, o zaman farklı braket tiplerine atanmaları gerekir.
Hedef
Bu kod golf, kalite üzerinde (eksik) miktardır.
+
sol üst köşesine sahip olamaz ve sonra sol alt köşesinde (hemen altında) +
?