Alice, Brainfuck'ı hem istemci tarafı hem de sunucu tarafı geliştirme için birincil dil olarak kullanan bir şirkette stajyer. Alice sadece ilk kodunu yazdı ve ilk kod incelemesine hazırlanırken biraz gergin.
Alice kodunu düzgün bir şekilde biçimlendirmek ve güzel görünmek istiyor, ancak 328 sayfalık şirket kodu stil kılavuzunu okumak için zamanı yok, bu yüzden mükemmel bir kare olarak biçimlendirmeye karar verdi . Ne yazık ki, kod uzunluğu bir kare oluşturmak için yetersiz olabilir, bu yüzden ortada dikdörtgen bir boşluk bırakmaya karar verdi . Boşluklar mükemmel bir şekilde ortalanmış ve mümkün olduğunca kareye yakın olmalıdır .
Örnekler
++++++ +++++ +++++ +++++ +++++ +++++
++++++ +++++ +++++ + ++ ++ ++ +++++
++++++ ++ ++ + + + ++ + +
++++++ +++++ +++++ +++++ ++ ++ +++++
++++++ +++++ +++++ +++++ +++++ +++++
Perfect OK Acceptable Unacceptable No way! Nope.
Alice'e yardım etmek için bir program veya işlev yazın. Alice'in kodu giriş dizesi olarak verildiğinde, mümkünse aşağıda açıklandığı gibi düzgün biçimlendirilmiş kod alın. Biçimlendirme mümkün değilse, ağlayan emoji çıktısı alın :~(
.
Bu kod golf, bu yüzden cevaplar bayt olarak puanlanır, amaç daha az bayttır.
Kısıtlamalar
- Programınız veya işleviniz giriş olarak tek bir dize almalı ve bir veya daha fazla metin satırı vermelidir (veya bir işlev uygularsanız çok satırlı dize veya dize dizisi döndürür).
- Giriş dizesi, boşluklar dahil olmak üzere herhangi bir ASCII karakteri içerebilir.
- Girişteki tüm boşluklar göz ardı edilmelidir. Kod uzunluğu için sayılmamalı ve çıktıda kullanılmamalıdır.
- Giriş dizesi en az bir boşluk olmayan karakter içeriyor.
- Biçimlendirilmiş kod, giriş kodundakiyle aynı sırada boşluk olmayan karakterlerle aynı olmalıdır.
- Biçimlendirilmiş kod mükemmel bir kare olmalıdır, yani tüm satırlar aynı uzunlukta olmalı ve satır sayısı satırın uzunluğuna eşit olmalıdır.
- Biçimlendirilmiş kod ortasında bir boşluk olabilir.
- Boşlukta yalnızca boşluk karakterleri (ASCII kodu 32) kullanılabilir.
- Boşluk (varsa) dikdörtgen olmalıdır.
- Biçimlendirilmiş her kod satırı en az bir boşluk olmayan karakter içermelidir, yani boşluk genişliği kesinlikle kare genişliğinden daha az olmalıdır (5x5 boşluğu için 5x1 boşluğu kabul edilemez).
- Boşluk yatay olmalıdır, yani boşluk genişliği boşluk yüksekliğinden büyük veya ona eşit olmalıdır.
- Boşluk mükemmel bir şekilde ortalanmalıdır.
- Sonuç olarak boşluk genişliği ve yükseklik paritesi kare genişliği paritesi ile aynı olmalıdır (örneğin 5x5 kare boşluk için 1x1, 3x1 veya 3x3 olabilir).
- Mümkünse, hiçbir boşluk olmadan kare çıktı.
- Birden fazla çözüm olması durumunda, kareye en yakın boşluğa sahip bir tane seçin, yani boşluk genişliği ve boşluk yüksekliği arasındaki fark minimumdur (örneğin: boşluk 10x10, 8x6'dan daha tercih edilir ve 8x6, 6x2'den daha tercih edilir).
- Hala bir kravat varsa, minimum boşluk alanına sahip çözümü seçin (örneğin boşluk 2x2, 4x4'ten daha fazla tercih edilir).
- Kodu biçimlendirmek mümkün değilse çıktı alın
:~(
. - Son satırdan sonraki satırsonu isteğe bağlıdır.
- [Yeni] 33'ün altında kodu olan herhangi bir karakterin bir boşluk olduğunu güvenle varsayabilirsiniz. Umarım golf için sana yardımcı olur.
Testler
Input Output Code length Comment
+++++++++ +++ 9 Alice is lucky,
+++ her code perfectly fits a square.
+++
++++++++ +++ 8 Though code length isn't enough for a square,
+ + a small gap fixes it.
+++
++++++ :~( 6 No luck, code cannot be formatted.
Hello, Hell 12 Input may contain any ASCII characters,
World! o , but whitespaces in input should be ignored.
W o
rld!
+++++ + +++++ +++++ 22 Gap is not required to be a square,
+++++ + +++++ +++++ it can be a rectangle.
+ +
+++++
+++++
+++ + +++ ++++++++ 28 There exists another solution:
+++ + +++ + + 6x6 square with 4x2 gap,
+++ + +++ + + but in Alice's opinion square gap
+++ + +++ + + makes code more readable.
+ +
+ +
+ +
++++++++
Zor testler
This must be Thism 24 7x7 with 5x5 gap looks good,
5x5 with 1x1 ustbe but 5x5 with 1x1 gap is better,
gap. 5x 5w because gap area is smaller.
ith1x
1gap.
+++ +++ +++ :~( 18 In case you tried 5x5 square
+++ +++ +++ with 7x1 gap ;)
kaynaklar
Yerden tasarruf etmek için tio.run'da örnek kod ve ekstra test örnekleri bulabilirsiniz
[Yeni] 100 karaktere kadar girişler için kabul edilen çözümler tablosuna bakabilirsiniz . Genişliği ve yüksekliği değiştirdim çünkü daha sezgisel görünüyor.
İlham kaynağı: Bir kare metin
değişiklikler
2 test eklendi, örnek kodda hata düzeltildi.
100'e kadar çözüm tablosu eklendi, beyaz alan açıklaması eklendi.