Bu haftanın başlarında, ezoterik dillerin yorum için nasıl biçimlendirileceğini öğrendik . Bugün bunun tersini yapacağız. Bazı iyi yorumlanmış ezoterik kodları ayrıştırıp sadece kodu döndürerek yorumları çözümleyen bir program veya işlev yazmanız gerekiyor. Önceki meydan okumadan bazı örnekler kullanarak, iyi yorumlanmış kodun neye benzediği şudur:
a #Explanation of what 'a' does
bc #Bc
d #d
e #Explanation of e
fgh #foobar
ij #hello world
k #etc.
l #so on
mn #and
op #so forth
İşte kodu çıkarmak için yapmanız gerekenler. İlk olarak, yorum karakterini ( #
), önündeki boşluğu ve yorum karakterinden sonraki her şeyi kaldırın .
a
bc
d
e
fgh
ij
k
l
mn
op
Ardından, her bir satırı yukarı doğru tek bir satıra daraltın. Çünkü Örneğin, b
ikinci hatta ikinci sütunda ise biz o kadar daraltmak kez, bu hat üzerinde ikinci sütunda olacak biri . Benzer şekilde, c
birinci satırın üçüncü sütununa d
yerleştirilecek ve dördüncü sıraya yerleştirilecektir. Bunu her karakter için tekrarlayın ve şunu elde edin:
abcdefghijklmnop
Önemli not: Önemsiz bir çözüm sadece yorumları kaldırmak, her alanı kaldırmak ve her satıra katılmaktır. Bu geçerli bir yaklaşım değil ! Orijinal kodun içinde boşluklar olabileceğinden, bunlar bu yaklaşımla ortadan kaldırılacaktır. Örneğin, bu tamamen geçerli bir girdidir:
hello #Line one
#Line two
world! #Line three
Ve ilgili çıktı şöyle olmalıdır:
hello world!
Meydan okuma:
Yorumlanmış kodu girdi olarak alan ve kodundan çıkarılmış tüm yorumları içeren kodu veren veya veren bir program veya işlev yazın. Bir satır son satırına izin verilse de , kodu herhangi bir boşluk bırakmadan çıkarmalısınız . Yorum karakteri her zaman olacaktır #
ve yorumlar başlamadan önce her zaman fazladan bir boşluk olacaktır. #
olacak değil girdinin yorum bölümünde görünebilir. Meydan okumayı daha basit tutabilmek için işte ele almanız gerekmeyen bazı girişler :
Kodun aynı sütunda iki karakterinin olmayacağını varsayabilirsiniz. Örneğin, bu, bu kuralı ihlal eden bir girdidir:
a #A character in column one bc #Characters in columns one and two
Tüm yorum karakterlerinin aynı sütunda göründüğünü de varsayabilirsiniz. Örneğin, bu giriş:
short #this is a short line long #This is a long line
bu kuralı ihlal ediyor. Bu aynı zamanda
#
kod bölümünde olmayacağı anlamına gelir .Son olarak, kod bölümlerini baştaki veya sondaki boşluklarla işlemeniz gerekmez. Örneğin,
Hello, # World! #
Girişin yalnızca yazdırılabilir ASCII karakterleri içerdiğini de varsayabilirsiniz.
Örnekler:
Input:
hello #Line one
#Line two
world! #Line three
Output:
hello world!
Input:
E #This comment intentionally left blank
ac #
h s #
ecti #
on is #
one c #
haracte #
r longer #
than the #
last! #
Output:
Each section is one character longer than the last!
Input:
4 #This number is 7
8 #
15 #That last comment is wrong.
16 #
23 #
42 #
Output:
4815162342
Input:
Hello #Comment 1
world #Comment 2
, #Comment 3
how #Comment 4
are #Comment 5
you? #Comment 6
Output:
Hello world, how are you?
Input:
Prepare #
for... #
extra spaces! #
Output:
Prepare for... extra spaces!
İstediğiniz makul formatta girdi alabilirsiniz, örneğin bir dizi listesi, yeni satırları olan tek bir dize, 2. karakter listesi, vb. Bayt cinsinden en kısa cevap!
hello world!
gösterdiğiniz gibi) ekleyebilir misiniz ? Ayrıca, şunu #
belirtirsiniz : " girişin yorum bölümünde görünmeyecek. ", Ancak kod snippet'inin kendisinde de olabilir mi?
do {stuff} while (condition);
sırayla açıklama ile . do while (condition); #Explainything
{stuff} #Explainything