Python 3 / > <> , 177 173 172 167 Bayt
@Mathmandan'a 5 byte tıraş için teşekkürler!
Bu da bir deneyimdi ve aynı zamanda da deneniyordu. Herhangi bir golf önerisi açıktır, çünkü bu oldukça uzun. Metni tekrar kullanmak için elimden geleni yaptım ama bu oldukça zordu.
Teknik olarak, bu programın çıkması gereken Python 3 olurdu (ve eğer özellikleri karşılamıyorsam değiştirebilirdim - ama örnekte Python / C çıktısı Python
listelendi).
aa=" ni nettirw t'nsaw margorp sihT\"\""
v="><>!" #v "><>"r~/
a=", it was built for "+v#\a
print(aa[-3::-1]+"Pytho" +"n"+a)
# .4b;!?lor"!nohtyP r"~/
Çevrimiçi> <> tercüman ve bir Python 3 tercüman üzerinde deneyin (> <> tercüman kodu manuel olarak girmenizi gerektirir)
İade
This program wasn't written in ><>, it was built for Python!
> <> ve
This program wasn't written in Python, it was built for ><>!
Python'da.
Açıklama (Python)
Şeylerin Python tarafı için, oldukça basit. İşte umursadığımız kod (temelde #
Python ile gösterilen, yorum içermeyen kod ). Python'da \
dizelerde kullanıldığında bir kaçış karakteri olduğuna dikkat edin , bu nedenle dizgide \"
değerlendirilir "
.
aa=" ni nettirw t'nsaw margorp sihT\"\""
v="><>!"
a=", it was built for "+v
print(aa[-3::-1]+"Pytho" +"n"+a)
Burada en çok önem verdiğimiz şey değişken üzerinde yapılan işlemler aa
:
aa[-3::-1]: reverses the string and chops off the quotation marks (thanks to @mathmandan)
Print cümlesi böylece değerlendirir
"This program wasn't written in " + "Pytho" + "n" + ", it was built for ><>!"
Açıklama (> <>)
Şimdi daha zor kısımlara geçiyoruz. Bir kez daha, işte gereksiz bitlerin kaldırıldığı kod.
aa=" ni nettirw t'nsaw margorp sihT\"\
v "><>"r~/
a=", it was built for "+v \a
.4b;!?lor"!nohtyP r"~/
Satır 1:
aa=" ni nettirw t'nsaw margorp sihT\"\
aa= pushes 1 onto the stack (evaluates 10==10, basically)
" ni ... \" pushes the first part plus a \ onto the stack.
\ deflects the pointer downwards
Şu anda yığın (basılmışsa): \This program wasn't written in
Hat 2:
2 /
numaralı satırın, işaretçinin 1 numaralı satırdaki konumundan dolayı başladığını ve sağdan sola geçtiğini unutmayın.
v "><>"r~/
/ deflects the pointer leftwards
~r pops the / off the stack and then reverses it
"><>" pushes ><> onto the stack
v deflects the pointer downwards
Şu anda yığın: ><> ni nettirw t'nsaw margorp sihT
Satır 3:
Önceki satırda olduğu gibi, bu \
satır 2'den başlayarak işaretçiyi gönderdiği yerde başlar . İşaretçi, ilke ulaştığında çizginin etrafına dolandığından a
, işaretçiyi nereye gittiğine (ve böylece ne yapıldığını) göre açıklamamı yazacağım.
a=", it was built for "+v \a
\aa= deflect and push 1 onto the stack
", i ... " push the string onto the stack
+v sum the last two values pushed and deflect
Şu anda yığın ( x
"r" ve boşluk bırakarak oluşturulan karakterdir. - Gerçek karakter değil, sadece benden bir yer tutucudır):
xof tliub saw ti ,><> ni nettirw t'nsaw margorp sihT
Satır 4:
İşaretçi basitçe aşağı doğru devam eder, böylece bu satır başka bir açıklama yapmaz.
Satır 5:
Baştan /
ve sola doğru gidiyor.
.4b;!?lor"!nohtyP r"~/
~"r Python!" pops x off and adds back r and a space
r reverses the stack
o pops and prints a character
l?!; pushes the length of the stack and stops if it's 0
b4. pushes 11 then 4 then moves to that location (where o is)
Şu anda yığın (çıktı ters çevrilmiş):
!nohtyP rof tliub saw ti ,><> ni nettirw t'nsaw margorp sihT
Ve açıklama için bu olmalı. Açıklama / kod arasında bir tutarsızlık varsa veya yanlış bir şey yaptıysam bana bildirin; Ben açıklama yazmanın ortasındayken kodumu biraz daha golf oynadım, bu yüzden eski ve yeni kodların karışık parçalarını alabilirdim.