Monday Mini-Golf: Serangkaian tantangan kode-golf pendek , diposting (mudah-mudahan!) Setiap hari Senin.
Kisah nyata 1 : Suatu hari, saya bermain-main di tablet ketika saya memiliki ide untuk mengunjungi halaman yang biasanya saya gunakan di PC untuk menguji JavaScript. Setelah halaman dimuat, saya memasuki program sederhana ini:
alert("Hello!")
Saya kemudian melanjutkan untuk menekan tombol Execute, dan terkejut ketika diberitahu bahwa kode yang saya masukkan tidak valid. Saya melihat kotak teks dan melihat ini:
alllelelerlerlertlert("Heeelelellellelloello!")
Apa ??? Bukan itu yang saya masukkan! Jadi apa yang terjadi di sini? Untuk mengetahuinya, saya memasukkan dua baris sederhana:
abcdefg
0123456
Ini ternyata sebagai:
abbbcbcbcdbcdbcdebcdebcdefbcdefbcdefgbcdefg
0112123123412345123456
Sampai sekarang, saya masih belum tahu tentang apa yang terjadi pada surat-surat, tetapi angkanya tampak lebih sederhana, jadi saya melihat lebih dekat. Ternyata, halaman web hanya memasukkan karakter pertama, kemudian mengulangi semua yang lain dalam string setiap kali yang baru ditekan:
0112123123412345123456
0
1
12
123
1234
12345
123456
Tetapi bagaimana dengan bagian surat? Setelah merenung sebentar, saya menyadari bahwa itu sama saja, tetapi alih-alih mengulangi setiap subbagian sekali, ia mengulanginya dua kali :
abbbcbcbcdbcdbcdebcdebcdefbcdefbcdefgbcdefg
a
bb
bcbc
bcdbcd
bcdebcde
bcdefbcdef
bcdefgbcdefg
Kombinasi keduanya bekerja dengan kombinasi teknik-teknik ini:
abc123z
abbbcbcbc1bc12bc123bc123zbc123z
a
bb
bcbc
bc1
bc12
bc123
bc123zbc123z
Kesalahan apa pun yang menyebabkan ini tampaknya diatur ulang pada tanda baca dan spasi, demikian abc def
jadinya abbbcbc deeefef
.
Pada titik ini, saya begitu asyik mencari tahu dan mengubahnya menjadi tantangan yang menarik sehingga saya lupa mengapa saya berada di sana sejak awal. (Namun saya tahu bagaimana cara mengetik secara normal: menekan spasi-backspace setelah setiap karakter. Cukup membosankan, tetapi Anda harus melakukan apa yang harus Anda lakukan.)
Tantangan
Tujuan dari tantangan ini adalah untuk menulis program atau fungsi yang membutuhkan teks yang akan diproses, membuat perubahan yang tercantum di atas, dan mengeluarkan / mengembalikan hasilnya.
Detail
- Input hanya akan berisi ASCII yang dapat dicetak, dan tidak ada tab atau baris baru.
Kasus uji
Input: (satu per baris)
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!
Output:
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!
Mencetak gol
Ini adalah kode-golf , jadi kode terpendek yang valid dalam byte menang. Tiebreaker pergi ke pengiriman yang mencapai jumlah byte terakhirnya terlebih dahulu. Pemenang akan dipilih Senin depan, 2 November. Semoga beruntung!
Edit: Dan pemenangnya adalah ... @ MartinBüttner menggunakan Retina untuk luar biasa 43-byte solusi!
1 Ya, cerita ini sepenuhnya benar, dan jika Anda membutuhkan klarifikasi lebih lanjut, lihat catatan kaki 1.
' '.join(x[0]+''.join(2*x[1:i]for i in range(1,len(x)+1)) for x in raw_input().split())