月曜日のミニゴルフ:毎週月曜日に(願わくば!)投稿された一連の短いコードゴルフチャレンジ。
実話1:先日、JavaScriptをテストするためにPCで通常使用するページにアクセスすることを考えていたときに、タブレットで遊んでいた。ページが読み込まれた後、次の簡単なプログラムを入力しました。
alert("Hello!")
その後、[実行]ボタンを押して、入力したコードが無効であると言われたときは驚きました。私はテキストボックスをもう一度見て、これを見ました:
alllelelerlerlertlert("Heeelelellellelloello!")
え?それは私が入ったものではありません!それで、ここで何が起こったのでしょうか?それを理解するために、2つの簡単な行を入力しました。
abcdefg
0123456
これは次のように判明しました。
abbbcbcbcdbcdbcdebcdebcdefbcdefbcdefgbcdefg
0112123123412345123456
今では、文字に何が起こったのかまだ分かりませんでしたが、数字はもっとシンプルに見えたので、詳しく調べました。判明したように、Webページは最初の文字を入力し、新しい文字が押されるたびに文字列の残りすべてを繰り返していました。
0112123123412345123456
0
1
12
123
1234
12345
123456
しかし、手紙のセクションはどうですか?少し考えた後、それはまったく同じであることに気づきましたが、各サブセクションを1回繰り返す代わりに、2回繰り返します。
abbbcbcbcdbcdbcdebcdebcdefbcdefbcdefgbcdefg
a
bb
bcbc
bcdbcd
bcdebcde
bcdefbcdef
bcdefgbcdefg
2つの組み合わせは、これらの手法の組み合わせで機能します。
abc123z
abbbcbcbc1bc12bc123bc123zbc123z
a
bb
bcbc
bc1
bc12
bc123
bc123zbc123z
どのようなグリッチはそう、これは句読点やスペースでリセットすると思われる原因とabc def
なりましたabbbcbc deeefef
。
この時点までに、私はそれを理解し、それを興味深い挑戦に変えることに夢中になっていたので、そもそもそこにいた理由を忘れていました。(ただし、通常の入力方法を考えました。すべての文字の後にスペースとバックスペースを押します。かなり退屈ですが、やらなければならないことをしなければなりません。)
チャレンジ
チャレンジの目標は、処理されるテキストを取り込み、上記の変更を行い、結果を出力/返すプログラムまたは関数を作成することです。
詳細
- 入力には印刷可能なASCIIのみが含まれ、タブや改行は含まれません。
テストケース
入力:(1行に1つ)
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!
得点
これはcode-golfであるため、バイト単位の最短有効コードが優先されます。Tiebreakerは、最初に最終バイトカウントに達した送信に進みます。勝者は、11月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())