Pazartesi Mini Golf: Her Pazartesi yayınlanan (umarım!) Bir dizi kısa kod golf mücadelesi.
Gerçek hikaye 1 : Geçen gün, bilgisayarımda JavaScript'i test etmek için normalde kullandığım sayfayı ziyaret etme fikrim varken tabletimde oyun oynuyordum . Sayfa yüklendikten sonra bu basit programa girdim:
alert("Hello!")
Daha sonra Çalıştır düğmesine basmaya başladım ve girdiğim kodun geçersiz olduğunu söylediğimde şaşırdım. Metin kutusuna bir kez daha baktım ve şunu gördüm:
alllelelerlerlertlert("Heeelelellellelloello!")
Wha ??? Girdiğim şey bu değildi! Peki burada ne oldu? Bunu anlamak için iki basit satır girdim:
abcdefg
0123456
Bu çıktı:
abbbcbcbcdbcdbcdebcdebcdefbcdefbcdefgbcdefg
0112123123412345123456
Şimdiye dek harflere ne olduğu hakkında hiçbir fikrim yoktu, ancak rakamlar daha basit görünüyordu, bu yüzden daha yakından baktım. Görünen o ki, web sayfası basitçe ilk karaktere giriyordu, daha sonra her yeni karaktere basıldığında dizedeki tüm kalanları tekrar ediyordu:
0112123123412345123456
0
1
12
123
1234
12345
123456
Peki ya harflerin bölümleri? Bir dakikalığına düşündükten sonra, bunun aynı olduğunu fark ettim, ancak her alt bölümü bir kez tekrarlamak yerine, iki kez tekrar ediyor :
abbbcbcbcdbcdbcdebcdebcdefbcdefbcdefgbcdefg
a
bb
bcbc
bcdbcd
bcdebcde
bcdefbcdef
bcdefgbcdefg
İki eserin bir kombinasyonu ile bu tekniklerin bir kombinasyonu:
abc123z
abbbcbcbc1bc12bc123bc123zbc123z
a
bb
bcbc
bc1
bc12
bc123
bc123zbc123z
Ne olursa olsun aksaklık yüzden, bu noktalama ve boşluk sıfırlanır görünüyor neden abc def
olur abbbcbc deeefef
.
Bu noktadan sonra, onu bulmakta ve ilginç bir soruna dönüştürmekte çok zorlandım, ilk başta neden orada bulunduğumu unuttum. (Normal olarak nasıl yazılacağını çözdüm, ancak: her karakterden sonra boşluk bırakma tuşuna basmak. Oldukça sıkıcı, ama yapman gerekeni yapmalısın.)
Meydan okuma
İşin amacı, işlenecek metinde yer alan bir program veya işlev yazmak, yukarıda listelenen değişiklikleri yapar ve sonucu verir / verir.
ayrıntılar
- Giriş yalnızca yazdırılabilir ASCII içerecek ve sekme veya yeni satır içermeyecek.
Test-vakalar
Girişler: (her satırda bir tane)
Mess up text
This is some longer text.
CAPS LOCK && "Punc-tua"+'tion'
under_score_style
CaPs wItHIn loWERs
1337 numb3r5
abcdefghij 0123456789
Code-golf is the best!
Çıktılar:
Meeesesessess upp teeexexextext
Thhhihihishis iss sooomomomeome looononongongongeongeongeronger teeexexextext.
CAAAPAPAPSAPS LOOOCOCOCKOCK && "Puuunununcunc-tuuuaua"+'tiiioioionion'
unnndndndendendernder_scccococorcorcorecore_stttytytyltyltyletyle
CaaaPaPaPsaPs wIIItItItHItHItHIItHIItHInItHIn loooWoWoWEoWEoWERoWERoWERsoWERs
1333337 nuuumumumbumbumb3umb3rumb3rumb3r5
abbbcbcbcdbcdbcdebcdebcdefbcdefbcdefgbcdefgbcdefghbcdefghbcdefghibcdefghibcdefghijbcdefghij 0112123123412345123456123456712345678123456789
Cooodododeode-gooolololfolf iss thhhehe beeesesestest!
puanlama
Bu kod-golf , bayt cinsinden geçerli en kısa koddur. Tiebreaker ilk önce son bayt sayısına ulaşan gönderime gidiyor. Kazanan gelecek pazartesi, 2 Kasım'da seçilecek. İyi şanslar!
Düzenleme: Ve kazanan ... MartinBüttner @ kullanarak Retina inanılmaz için 43 bayt çözümü!
1 Evet, bu hikaye tamamen doğru ve daha fazla açıklamaya ihtiyacınız varsa, dipnot 1'e bakınız.
' '.join(x[0]+''.join(2*x[1:i]for i in range(1,len(x)+1)) for x in raw_input().split())