Giriş
Buradaki çoğu kod golfçüsü gönderimlerine açıklama eklediğinden neler olup bittiğini anlamak daha kolay. Genellikle kod dizileri sola gider ve ilgili açıklama bir tür ayırıcıyla sağa gider. Güzel görünmesi için ayırıcıların hepsi aynı sütundadır. Ayrıca uzun açıklama metni genellikle bir sonraki satıra sarılır, bu nedenle okuyucuların her şeyi okumak için yatay olarak kaydırmaları gerekmez.
Ancak, çılgın golfler yaptığınız için bu açıklamayı düzenlemek istediğinizde, genellikle açıklamanızı tekrar yapmak için zaman harcarsınız. Bu çok tekrarlayan bir görev olduğundan, bunun için bir program yazmak istiyorsunuz.
Meydan okuma
Açıklama ve ayırıcı içeren birkaç kod satırı verildiğinde, güzel biçimlendirilmiş kodu açıklama ile çıktılayın.
Misal
Giriş
shM-crz1dc4. "ANDBYOROF # z = giriş rz1 # girişi büyük harfe dönüştür boşluklarda cd # split girişi c4. "ANDBYOROF #, paketlenmiş bir dizeden yok sayılacak sözcüklerin bir listesini oluşturur - # bu kelimeleri filtrele hM # tüm kelimelerin sadece ilk harfini al s # bunları tek bir dizede birleştir
Çıktı
shM-crz1dc4. "ANDBYOROF # z = giriş rz1 # girişi büyük harfe dönüştür boşluklarda cd # split girişi c4. "ANDBYOROF #, paketlenmiş bir dizeden gelen ve # önemsenmedi - # bu kelimeleri filtrele hM # tüm kelimelerin sadece ilk harfini al s # bunları tek bir dizede birleştir
Bu kodun ne yaptığını bulan ilk çerez için bir çerez.
Biçimlendirme algoritması
- En uzun kod satırını bulun (açıklama ve kod ile ayırıcı arasındaki boşluklar hariç).
- Bu kod satırından sonra 5 boşluk ekleyin ve ilgili ayırıcıyı açıklama ile ekleyin. Bu şimdi referans çizgisi.
- Ayırıcıların tümü aynı sütunda olacak şekilde diğer her satırı bu referans çizgisine ayarlayın.
- 93 karakterden uzun olan tüm satırları yeni bir satıra aşağıdaki şekilde kaydırın:
- Sütun 93 veya altında olan son kelimeyi bulun.
- Bundan sonra tüm kelimeleri alın ve onları önde gelen ayırıcı ve doğru boşluk ile yeni bir satıra sarın. Bu iki sözcük arasındaki boşluk silinmelidir, bu nedenle ilk satır bir sözcük karakteriyle biter ve ikinci satır ayırıcıdan sonra bir satırla başlar.
- Ortaya çıkan satır hala 93 karakterden uzunsa, her satır 94 karakterin altına düşene kadar aynı işlemi tekrarlayın.
notlar
- Bir kelime boşluk olmayan karakterlerden oluşur. Kelimeler tek bir boşlukla ayrılır.
- Sözcük kaydırma her zaman mümkündür. Bu, hiçbir sözcüğün bu kadar uzun olmadığı, sargıyı imkansız kılacağı anlamına gelir.
- Giriş yalnızca yazdırılabilir ASCII içerecek ve arka boşlukları olmayacak
- Ayırıcı, her satırda yalnızca bir kez görünür.
- Açıklama sınırsız uzunluğa sahip olsa da, ayırıcı ve kod yalnızca birleşik maksimum
93 - 5 = 87
karakter uzunluğuna sahip olabilir . 5 karakter, kod ve ayırıcı arasındaki boşluklardır. Kod ve ayırıcı her zaman en az bir karakter uzunluğunda olacaktır. - Giriş boş satırlar içerebilir. Bunlar hiçbir zaman karakter içermeyecektir (girdiyi çok satırlı dize olarak alırsanız yeni satır hariç). Bu boş çizgiler çıktıda da bulunmalıdır.
- Her satırın bir kodu, bir ayırıcısı ve bir açıklaması olacaktır. İstisnalar boş satırlardır.
- Önceden işlenmediği sürece girdiyi makul bir biçimde alabilirsiniz. Cevabınızda hangisini kullandığınızı netleştirin.
- Çıktı çok satırlı bir dize veya bir dize listesi olabilir.
kurallar
- İşlev veya tam programa izin verilir.
- Giriş / çıkış için varsayılan kurallar .
- Standart boşluklar geçerlidir.
- Bu kod golf , bu yüzden en düşük bayt sayısı kazanır. Tiebreaker daha erken sunuluyor.
Test senaryoları
Buradaki girdi biçimi satırları temsil eden bir dize listesi ve ayırıcı için tek bir dize listesidir. Her ikisi de virgülle ayrılır. Çıktı dizelerin listesidir.
['shM-crz1dc4. "ANDBYOROF # z = girdi', '', 'rz1 # girdiyi büyük harfe dönüştür', 'boşluklarda cd # bölünmüş girdi', 'c4." ANDBYOROF # paketlenmiş kelimelerin bir listesini oluşturur ihmal edilecek dize ',' - # bu kelimeleri filtrele ',' hM # sadece tüm kelimelerin ilk harfini al ',' s # bunları tek bir dizeye birleştir '', "#" -> ['shM-crz1dc4 "ANDBYOROF # z = input ',' ',' rz1 # girdiyi büyük harfe dönüştür ',' cd # boşluklarda split girdi ',' c4." ANDBYOROF # paketlenmiş bir dizeden ' , '# önemsenmedi', '- # bu kelimeleri filtrele ',' hM # yalnızca tüm kelimelerin ilk harfini al ',' s # bir dizeye katıl '] ['codecodecode e # Explanation', 'sdf dsf sdf e # A Çok çok çok çok çok çok çok uzun uzun uzun uzun uzun uzun uzun uzun uzun uzun açıklama ve gittikçe uzamaya devam ediyor' ',' ', more codee # ve biraz daha açıklama '], "e #" -> [' codecodecode e # Explanation ',' sdf dsf sdf e # A Çok çok çok çok çok çok çok çok uzun uzun uzun uzun ',' e # uzun uzun uzun uzun uzun uzun açıklama devam ediyor 've' e # ve daha uzun ',' ',' biraz daha kod e # ve biraz daha açıklama ']
Mutlu Kodlama!
length of the longest code-line + 5
. Bu, yalnızca açıklama içeren satırlara da uygulanmıştır, çünkü bunlar sarılmıştır.