Bükülmüş bir “Merhaba dünya!” Oluşturun.


31

İşiniz oldukça basit, yazdıran bir program yazın, Hello, world!büküldüğünde yazdıran bir program oluşturun Twister!.

Dizeler nasıl bükülür

Büküm algoritması çok basittir. Her sütun kendi dizinine göre aşağı kaydırılır (sütun 0, aşağı 0, aşağı hareket 1, ...). Sütun kayması en üste kaydırılır. Bu gibi görünüyor:

a
ba
cba
----
 cba
  cb
   c

Çizginin altındaki her şey üste gelecek şekilde. Gerçek örnek:

Original:
\\\\\\\\\\\\
............
............
............

Twisted:
\...\...\...
.\...\...\..
..\...\...\.
...\...\...\

(En sevdiğiniz dilde başka örnekler ve twisters burada )

puanlama

Programınız yastıklı bir dikdörtgen olmalıdır. Bu kod golf yani en düşük bayt sayısı kazanır!

kurallar

  • İlk programınız yazdırılmalıdır Hello, world!. Sadece bir sondaki satırsonuna izin verilir.
  • İlk ve ikinci programlarınız aynı dilde olmalıdır.
  • İkinci programın yazdırılması gerekiyor Twister!. Sadece bir sondaki satırsonuna izin verilir.
  • Programınız en az 2 satır ve 2 sütun içermelidir.

3
Jelly'in kod sayfasında , satır beslemesine karşılık gelen (ve tüm amaçlar için olduğu gibi) karşılık gelen karakter, 127 kod noktasına (ASCII DEL) sahiptir. Kod noktası 10 olan karakter (ASCII satır beslemesi) karaktere sahiptir ½ve bir sayının karekökünü alır. Bu meydan okuma için ikisinden hangisi yeni hat olarak değerlendirilmelidir?
Dennis,

Kahretsin, "Twisted Hello World" in "bükümlü" yu ters anlamda kullanmadığını umduğum tek kişi bendim, bu yüzden "Güle güle Zalim Dünya" gibi bir şey
çıkarıyorduk

@Dennis Bu durumda kullanmak daha iyi bir jöle newline olacağını varsayalım.
J Atkin,

@Jtkin Tamam, açıklama için teşekkürler. Buna göre cevabımı güncelledim.
Dennis,

Yanıtlar:


10

Jöle , 33 31 29 bayt

orijinal

“ɗ⁻%OḶ$“¡¦ḟṠ»Ṫ
“ɗ⁻%OḶ$“¡¦ḟṠ»Ḣ

Çevrimiçi deneyin.

bükülmüş

“ɗ⁻%OḶ$“¡¦ḟṠ»Ḣ
“ɗ⁻%OḶ$“¡¦ḟṠ»Ṫ

Çevrimiçi deneyin!

Nasıl çalışır

Her programda, her satır bir bağlantı tanımlar. Sonuncusu ana linktir ve program başladığında yürütülür. İlk linke referans olmadığından, sadece göz ardı edilir.

Her iki program için, “ɗ⁻%OḶ$“¡¦ḟṠ»Jelly'in statik sözlük sıkıştırmasını['Hello, world!', 'Twister!'] kullanarak listeyi verir .

Orijinal ve bükülmüş kod arasındaki tek fark, ana bağlantının son karakteridir. listenin ilk dizesini ve sonuncusunu seçer.


2
"Holy Sh * t" diye çığlık atıyor gibi görünüyor
aşama

42

Python 2, 59 bayt

print "  Hello, world!"[ 2::]
#rint "T w i s t e r !"[ ::2]

Twisted:

print "T weils,twerrd!"[ ::2]
#rint "  H l o   o l !"[ 2::]

Temel olarak, Twister!verileri dizenin tek dizinlerine yerleştirir ve ardından ilk iki (dolgu) karakterinin kaldırılmasından diğer karakterlerin çıkarılmasına kadar değişir.


Bu benim yaklaşımımdan çok daha akıllıca
wnnmaw

Bu biraz saçma, 40 artış mı?
J Atkin

@JAtkin Bazı Python çözümlerinin çok fazla miktarda ürün alma eğiliminde olduğunu fark ettim. Şikayet etmiyorum değil: ~)
PurkkaKoodari

Soğutucu yolu:print " Hello, world!" [2::]
Outgolfer Erik,

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ Çalışıyor, ama şimdilik sadece olduğu gibi tutacağım.
PurkkaKoodari

17

Fisyon , 215 162 56 53 50 bayt

İşte bir başlangıç:

D1
\\
""
TH
we
il
sl
to
e,
r 
!w
"o
1r
;l
1d
;!
 "

Çevrimiçi deneyin!

Büküldüğünde:

D"
\1
"\
T"
wH
ie
sl
tl
eo
r,
! 
"w
1o
;r
1l
;d
 !

Çevrimiçi deneyin!

açıklama

Hello, world!Kod oldukça basittir:

  • D aşağıya doğru gidiyor, tek bir atom ortaya çıkar.
  • İki \(ayna), onu ikinci sütuna saptırıyor.
  • "Hello, world!" Gerekli dizeyi yazdırır.
  • 1bir portaldır. Yönünü 1koruyarak atomu bir sonraki sıraya ışınlar (yanında olan r).
  • Atom hala aşağı doğru hareket ;eder ve atomu yok eder ve programı sonlandırır.

Twister!Kod için kontrol akışı biraz daha ... bükülmüş ...

  • Yine, Datomu ortaya çıkarır.
  • \onu sağa, saptırır 1.
  • Artık portal, atomu diğerine gönderir 1. Atom osadece kütlesini değiştiren vuruşa vurur , ama bunu görmezden gelebiliriz. Kod etrafa sarılır, böylece atom 1tekrar aynı şekilde vurur ve iki satırı atlar. Yine, latomu sayar, atom etrafına sarılır ve 1tekrar vurur . Artık 1kodda başka bir şey yok , bu yüzden atom 1en üste kadar atlıyor .
  • Kenarların etrafına bir kez daha sarıldıktan sonra, atom tekrar saptırılır \ve şimdi tekrar aşağıya iner.
  • "Twister!" gerekli kodu yazdırır.
  • 1atomu bir kez daha ışınlar, ilkini geçer ;, ancak ;programı sonlandırmasını bekleyen başka bir şey vardır .

Vay, şimdi çok yakın! :) Daha kısa olmanın bir yolu olduğuna eminim ...
FryAmTheEggman

Neden fisyonu seviyorsunuz?
J Atkin

@Jtkin Neden olmasın? :)
Martin Ender

@ MartinBüttner Özellikle bu mücadelenin nedenini düşünüyordum?
J Atkin

1
@JAtkin 2D dilleri uygun görünüyordu ve Fission programa bir veya daha fazla keyfi giriş noktası seçebildiğiniz için özellikle basit görünüyordu.
Martin Ender

15

Fisyon , 35 bayt

Fisyon yaklaşımı # 3 (İlk yazımdan düzenlediğim sayım # 4).

R"Hello, " \"tri"
T;L"!dlrow"/"es!w

Çevrimiçi deneyin!

R;H"ldor w /"er!"
T"Le!ll,o""\"tsiw

Çevrimiçi deneyin!

açıklama

Bu aslında Fission çözümlerinin en basit olanı. Her iki programda da iki giriş noktası vardır: Rsağa giden bir atom ve Lsola giden bir atom oluşturur. Her iki durumda da, ;derhal bir tanesini yok eder.

Şimdi Hello, world!programda, atom ilk önce dizenin yarısını basar "Hello, ", sonra \ve /(ayna olan) atomu sola doğru giden ikinci çizgiye saptırır. "world!"(hareketli atomun yönünde okuyun) dizenin geri kalanını yazdırır. Lşimdi no-op'tur ve ;programı sonlandırarak bu atomu da yok eder.

Twister!Program esas olarak aynı fakat 180 derece döndürülür. Bu sefer, Latom hayatta kalır ve ile basmaya başlar "Twist". \Ve /yine şu anda gidiş, diğer hatta üzerine saptırmak. "er!dizenin kalanını yazdırır, Rçalışmaz ve ;programı sonlandırır.


Şaşırtıcı! Bunun olabildiğince küçük olduğunu düşünüyorum, yeniden kullanım miktarı etkileyici.
FryAmTheEggman


4

Japt, 67 61 57 bayt

@JAtkin sayesinde 6 bayt, @Ian sayesinde 4 bayt kaydedildi

"Tzwzizsztzezzzzzzrzzzz!"rz;
"Hzezlzlzoz,z zwzorlzdz!"rz;

Twisted:

"Hzezlzlzoz,z zwzorlzdz!"rz;
"Tzwzizsztzezzzzzzrzzzz!"rz;

Çevrimiçi test edin: Orijinal , Bükülmüş

Nasıl çalışır

"Tzwzizsztzezzzzzzrzzzz!"rz;  // Take this string and remove all "z"s.
"Hzezlzlzoz,z zwzorlzdz!"rz;  // Take this string and remove all "z"s.
                              // Implicit: output *last* expression

Bu düşündüğüm gibi çalışıyorsa Twister!, boşlukları değiştirerek izleyen boşluğu kaldırabilirsiniz ..
J Atkin

@JAtkin Aslında bu şekilde çalışmaz, ancak bu şekilde bir sürü baytı kurtarabilirim. Teşekkürler!
ETHProductions 21

"T.w.i.s.t.e.r.!. . . . . "k".(newline)"H.e.l.l.o.,. .w.o.r.l.d.!"k".
J Atkin

Farklı bir dolgu karakteriyle okumak çok daha kolay olabilir ...
mbomb007

4
@ mbomb007 Ne zamandan beri "okunması kolay" bir başarıdır? : D
yo '

4

Python, 398 414 380 456 bayt *

Güncelleme yaparak kurallara uygun olmasını sağlamayı başardım, ancak yine de bu rekabeti aramada tereddüt ediyorum. Yorumlanan satırların çalışması için gerekli olduğundan, onları bayt sayımına dahil ettim.

Bu çözüm, izin verilen çıktıya ek olarak hata mesajlarını yazdıracağından kurallara uymaz.

Sadece bunun python ile yapılıp yapılmadığını görmek istedim. Olabilir, ama hoş değil .

print'Hello, world!'
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     
#rint'Twister!'     

Büküldüğünde

print'Twister!'
#rint'Twister!'
#rint'Twister!'
#rint'Twister!'
#rint'Twister!'
#rint'Twister!'
#rint'Hwister!'
#rint'Teister!'
#rint'Twlster!'
#rint'Twilter!'
#rint'Twisoer!'
#rint'Twist,r!'
#rint'Twiste !'
#rint'Twisterw'
#rint'Twister!o
#rint'Twister!'r
#rint'Twister!' l
#rint'Twister!'  d
#rint'Twister!'   !

Her satırdaki boşluğu kaldırabileceğinizi ve son çizgiyi tamamen kaldırabileceğinizi düşünüyorum.
ETHproductions 21

İlk büküm mücadelesinin kurallarına aykırı olduğu için bunu yapmayı düşünmedim, ama teşekkürler!
wnnmaw

Kodu güncellemeyi unuttun;)
ETHproductions

Bunun gerçekten önemli değil mi düşündüm, ama iyi önlem için yaptım
wnnmaw

1
Bence yanlış anladın. Kodun yastıklı bir dikdörtgen olması gerekir, ancak boşluğu rint 'her satırdan kaldırabilirsiniz .
ETHproductions 21


1

Brainfuck, 467 367 285 bayt

bükümsüz

 +[  [[-->-[>>+>-----<<]<--<---]>-.>>>+.>>..+++[.>]<<<<.+++.------.<<-.>>>>+.>>] [[--[<++++>--->+<]>-]<<<<.<<<-.<<+.>-.+.<----.>--.>>---.[-]]]
  [ -[[-->-[>>+>-----<<]<--<---]>-.>>>+.>>..+++[.>]<<<<.+++.------.<<-.>>>>+.>>]+[[--[<++++>--->+<]>-]<<<<.<<<-.<<+.>-.+.<----.>--.>>---.[-]]]

Çevrimiçi deneyin!

bükülmüş

  [  [[-->-[>>+>-----<<]<--<---]>-.>>>+.>>..+++[.>]<<<<.+++.------.<<-.>>>>+.>>] [[--[<++++>--->+<]>-]<<<<.<<<-.<<+.>-.+.<----.>--.>>---.[-]]]
 +[ -[[-->-[>>+>-----<<]<--<---]>-.>>>+.>>..+++[.>]<<<<.+++.------.<<-.>>>>+.>>]+[[--[<++++>--->+<]>-]<<<<.<<<-.<<+.>-.+.<----.>--.>>---.[-]]]

Çevrimiçi deneyin!



@JoKing Öneriniz için teşekkür ederiz! Küçük bir "Twister!" Nasıl bulacağınıza dair herhangi bir fikir program da?
orthoplex

1
Kullanılması bf-krizi bir olsun 56 byte "Twister!" program
Jo King
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.