Понеділок Міні-Гольф: Серія коротких викликів з гольф-кодом , що публікуються (сподіваємось!) Щопонеділка.
Справжня історія 1 : Днями я грав на своєму планшеті, коли мені виникла ідея відвідати сторінку, яку я зазвичай використовую на своєму ПК для тестування JavaScript. Після завантаження сторінки я ввійшов у цю просту програму:
alert("Hello!")
Потім я продовжив натискання кнопки "Виконати" і здивувався, коли сказав мені, що код, який я ввів, недійсний. Я поглянув на другий текст і побачив таке:
alllelelerlerlertlert("Heeelelellellelloello!")
Чого ??? Це не те, що я ввійшов! То що ж тут сталося? Щоб зрозуміти це, я ввів два простих рядки:
abcdefg
0123456
Виявилося так:
abbbcbcbcdbcdbcdebcdebcdefbcdefbcdefgbcdefg
0112123123412345123456
На сьогоднішній день я досі не мав уявлення про те, що сталося з літерами, але цифри здавалися простішими, тому я придивився уважніше. Як виявилося, веб-сторінка просто вводила перший символ, а потім повторювала всі інші в рядку щоразу, коли натискали нову:
0112123123412345123456
0
1
12
123
1234
12345
123456
А як щодо розділів листів? Поміркувавши хвилину, я зрозумів, що це саме те саме, але замість того, щоб повторити кожен підрозділ один раз, він повторює його двічі :
abbbcbcbcdbcdbcdebcdebcdefbcdefbcdefgbcdefg
a
bb
bcbc
bcdbcd
bcdebcde
bcdefbcdef
bcdefgbcdefg
Поєднання двох творів із поєднанням цих прийомів:
abc123z
abbbcbcbc1bc12bc123bc123zbc123z
a
bb
bcbc
bc1
bc12
bc123
bc123zbc123z
Що б не викликало збої, це, мабуть, скидається на пунктуацію та пробіли, так і abc def
стає abbbcbc deeefef
.
До цього моменту я настільки захопився з'ясувати це і перетворити його на цікавий виклик, що я забув, чому я вперше був там. (Однак я зрозумів, як правильно вводити текст: натискання клавіші пробіл після кожного символу. Досить нудно, але ти повинен робити те, що ти повинен зробити.)
Виклик
Мета завдання - написати програму або функцію, яка займає оброблюваний текст, вносить зміни, перелічені вище, та виводить / повертає результат.
Деталі
- Вхід буде містити тільки файл для друку ASCII, а також ніякі вкладки та нові рядки.
Тестові кейси
Введення: (по одному на рядок)
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!
Виходи:
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!
Оцінка балів
Це код-гольф , тому найкоротший дійсний код у байтах виграє. Tiebreaker переходить до подання, яке першим дійшло до остаточного підрахунку байт. Переможець буде обраний наступного понеділка, 2 листопада. Удачі!
Редагувати: І переможець ... @ MartinBüttner використовуючи Retina для неймовірного 43-байтового рішення!
1 Так, ця історія цілком правдива, і якщо вам потрібно додаткові роз'яснення, див. Виноску 1.
' '.join(x[0]+''.join(2*x[1:i]for i in range(1,len(x)+1)) for x in raw_input().split())