Thứ hai Mini-Golf: Một loạt các thử thách golf-code ngắn , được đăng (hy vọng!) Vào mỗi thứ Hai.
Câu chuyện có thật 1 : Một ngày khác, tôi đang chơi xung quanh máy tính bảng của mình khi tôi có ý tưởng truy cập trang tôi thường sử dụng trên PC để kiểm tra JavaScript. Sau khi tải trang, tôi đã nhập chương trình đơn giản này:
alert("Hello!")
Sau đó tôi đã tiến hành nhấn nút Thực thi và rất ngạc nhiên khi nó nói với tôi rằng mã tôi đã nhập không hợp lệ. Tôi đã nhìn lần thứ hai vào hộp văn bản và thấy điều này:
alllelelerlerlertlert("Heeelelellellelloello!")
Cái gì ??? Đó không phải là những gì tôi đã nhập! Vậy chuyện gì đã xảy ra ở đây? Để tìm ra nó, tôi đã nhập hai dòng đơn giản:
abcdefg
0123456
Điều này hóa ra là:
abbbcbcbcdbcdbcdebcdebcdefbcdefbcdefgbcdefg
0112123123412345123456
Đến bây giờ, tôi vẫn không có manh mối về những gì đã xảy ra với các chữ cái, nhưng các con số có vẻ đơn giản hơn, vì vậy tôi đã xem xét kỹ hơn. Khi nó bật ra, trang web chỉ cần nhập ký tự đầu tiên, sau đó lặp lại tất cả phần còn lại trong chuỗi mỗi lần nhấn một ký tự mới:
0112123123412345123456
0
1
12
123
1234
12345
123456
Nhưng những gì về các phần của chữ? Sau khi suy nghĩ một phút, tôi nhận ra rằng nó giống nhau, nhưng thay vì lặp lại mỗi phần phụ một lần, nó lặp lại hai lần :
abbbcbcbcdbcdbcdebcdebcdefbcdefbcdefgbcdefg
a
bb
bcbc
bcdbcd
bcdebcde
bcdefbcdef
bcdefgbcdefg
Một sự kết hợp của hai tác phẩm với sự kết hợp của các kỹ thuật này:
abc123z
abbbcbcbc1bc12bc123bc123zbc123z
a
bb
bcbc
bc1
bc12
bc123
bc123zbc123z
Bất cứ điều gì trục trặc gây ra điều này dường như thiết lập lại tại dấu câu và dấu cách, vì vậy abc def
trở thành abbbcbc deeefef
.
Đến lúc này, tôi đã mải mê tìm hiểu và biến nó thành một thử thách thú vị đến nỗi tôi quên mất tại sao tôi lại ở đó ngay từ đầu. (Tuy nhiên, tôi đã tìm ra cách gõ bình thường: nhấn phím cách lùi không gian sau mỗi ký tự. Khá tẻ nhạt, nhưng bạn phải làm những gì bạn phải làm.)
Thử thách
Mục tiêu của thử thách là viết một chương trình hoặc chức năng đưa vào văn bản cần xử lý, thực hiện các thay đổi được liệt kê ở trên và xuất / trả kết quả.
Chi tiết
- Đầu vào sẽ chỉ chứa ASCII có thể in và không có tab hoặc dòng mới.
Các trường hợp thử nghiệm
Đầu vào: (một trên mỗi dòng)
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!
Đầu ra:
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!
Chấm điểm
Đây là mã golf , vì vậy mã hợp lệ ngắn nhất tính bằng byte thắng. Tiebreaker đi đến trình mà đạt đến số byte cuối cùng của nó đầu tiên. Người chiến thắng sẽ được chọn vào thứ Hai tới, ngày 2 tháng 11. Chúc may mắn!
Chỉnh sửa: Và người chiến thắng là ... @ MartinBüttner sử dụng Retina cho một giải pháp 43 byte đáng kinh ngạc !
1 Có, câu chuyện này là hoàn toàn có thật, và nếu bạn cần làm rõ thêm, xem chú thích 1.
' '.join(x[0]+''.join(2*x[1:i]for i in range(1,len(x)+1)) for x in raw_input().split())