博覧会
SOラッフルを獲得した後、あなたは世界トップに立つことができたでしょう。ラッフルは1年間続いていましたが、あなたはSOの拠点に選ばれる100人のプログラマーの一人でした。そして最後に、待ち時間は終わりました。今日はあなたが行く日です-[難読化されたテキストが進みます]。
おっと。申し訳ありませんが、伝えることはできません。
とにかく、あなたはついに到着し、小さなSOのエンブレムが付いた黒いスーツを着たストイックな顔の男に会いました。彼はあなたに眉をひそめます。「他の人はすでに中にいる」と彼は言った、あなたは門で識別されていた。"早く。"
あなたは急いで、少し怖い。一体何が起こったのでしょうか?SOで何が悪かったのですか?内部では、他の99人のプログラマーが画面を凝視して入力しているのを観察します。残りの席に着くと、次のメッセージが表示されます。
こんにちは、プログラマー!問題が発生したようです。SOが侵入されましたが、私たちは知りません。(個人的には、それはPythまたはCJamのプログラマーだと思いますが、ちょっと)。しかし、害を受けたのはMarkdownエディターだけです。まあ、実際、それはかなりたくさんありますが、そこに来ます。
マークダウンファイルを解釈し、それを新しい「SO Beautifier-Arity -Decomposer」(別名「SOBAD」)形式。これは最短のバイト数で行う必要があります。このハッキングの問題を解決するまで、私たちはローダウンで実行しています。お時間をいただきありがとうございます。
心から、
スタックオーバーフローのメーカー
目的提出物への入力として有効なマークダウンファイルを指定し、入力に対して次の変換を実行して出力します。
(+
記号を使用する場合、リテラルのプラス記号ではなく、RegExpの「前の文字の1つ以上のインスタンス」演算子を意味します。)
- すべてのレベル1ヘッダー(
# ...
または...\n=+
)を{ ... }
に変換し、...
すべて大文字にします。 - すべてのレベル2ヘッダー(
## ...
または...\n-+
)を{{ ... }}
に変換し、すべての単語を大文字にします - すべてのレベル3ヘッダー(
### ...
)をスモールキャップに変換します。つまり、すべての文字(大文字と小文字は区別されません)はᴀʙᴄᴅᴇғɢʜɪᴊᴋʟᴍɴᴏᴘǫʀsᴛᴜᴠᴡxʏᴢ
それぞれの方法でマッピングされます。 - すべての太字のインスタンス(
**...**
)を...
に変換し、...
すべて大文字にします。 - すべての斜体インスタンス(
_..._
)を. . .
に変換します。ここで、文字の各ペアの間にスペースが挿入されています。 - すべてのコードインスタンス(
`...`
)をに変換します< ... >
。 - すべての取り消し線インスタンス(
---...---
)を-.-.-.-
に変換します。ここで、a-
は文字の各ペアの間に挿入されています。 - すべての番号付きリストインスタンス(正規表現
N. {a}\nN. {b} ...
にN
一致する場所[0-9]+
)を(1. {a}\n 2. {b}...
)に変換します - すべての順序なしリストインスタンス(
* ...\n* ...
...)を(o ...\n o ...
...)に変換します
詳細
- ヘッダーとリストインスタンスは行の先頭でのみ見つかりますが、それらは空白で囲まれている場合があります。
- リンクされたインスタンス
*a_*a_
はありません。たとえば、標準では有効ではありません。また、、、または入力のようなもの__a__
は表示されません。*_a_*
_*a*_
- 複数行ヘッダーは、
-
orまたは=
sがテキスト行に直接続く場合にのみ有効です。 - 他のマークダウンエンティティを含むヘッダーはありません。たとえば、
# `code` snippet
私たちの目的にとって有効な入力ではありません - レベル4+ヘッダーを考慮する必要はありません
- あなたは余分なスペース(すなわち保存する必要はありません
> 1
、持ってOKですので、ファイル内のスペースを)**hello there**
になること**hello there**
はありません**hellothere**
。同様に、行の末尾と先頭のスペースは保存する必要はありません - 入力にタブレータは見つかりません。
- ネストされたインスタンスはありません。たとえば、
***...***
発生することはありません。 - スペースは常に順不同の箇条書きの後に続きます(たとえば、で
* ...
はありません*...
) - 順序付きリストと順序なしリストのリストアイテムは、常に1行で構成されます。
- 一致しない文字のペアは無視する必要があります。例えば、
** cool
そして`java::def
同じままにしてください。
入力方法
入力は次のいずれかでなければなりません。
- 配列/タプル/リスト/など。文字列の。
- または、行を区切る改行を含む文字列。
ご使用の言語でサポートされていない場合は、前述のデータ型に最も近い言語を使用してください。(たとえば、TI-BASICは(1.)をサポートしていません... TI-BASICが競合できるわけではありません、とにかく:P)。
テストケース
A }
が意味入力、次の行が意味出力。複数}
のsは、改行で区切られたテキスト行を意味します。
} Hello!
Hello!
} That _2 + 2 = 5_ challenge sure was **intense!**
That 2 + 2 = 5 challenge sure was INTENSE!
// note that there are spaces also padding it
} It's `s/a/e/g` **not** `sudo g/a/e/s`, stupid.
It's < s/a/e/g > NOT < sudo g/a/e/s >
} **WHAT!** He did _WHAT?!_
WHAT! He did W H A T ? !
} _WHAT_ is undefined, here!
W H A T is undefined, here!
} OI)(EJDSFIJK L:JP #@*REF&WDS F*(D+S +&(SDFWEF )DSF _DSF_F #R#
OI)(EJDSFIJK L:JP #@*REF&WDS F*(D+S +&(SDFWEF )DSF D S F F #R#
} # So, you wanna be a programmer, eh?
} ## Step 1: learn recursion
} ### Learning recursion requires learning recursion
} **Programming** is a futile task. _Leave w h i l e you still can!_
{SO YOU WANNA BE A PROGRAMMER, EH?}
{{Step 1: Learn Recursion}}
ʟᴇᴀʀɴɪɴɢ ʀᴇᴄᴜʀsɪᴏɴ ʀᴇǫᴜɪʀᴇs ʟᴇᴀʀɴɪɴɢ ʀᴇᴄᴜʀsɪᴏɴ
PROGRAMMING is a futile task. L e a v e w h i l e y o u s t i l l c a n ! // trailing space not required
} Haha, you're a _Java_ golfer? You'd be better of with brainf***.
Haha, you're a J a v a golfer? You'd be better of with brainf***. // less than four asterisks, do nothing
} # Reasons why NOT to use C--:
} 1. It doesn't exist.
} 2. I don't care.
{REASONS WHY NOT TO USE C--:}
1. It doesn't exist.
2. I don't care.
} 1. This is a test!
} 1. <-- And this actually works in Markdown.
1. This is a test!
2. <-- And this actually works in Markdown. // less than three -s, ignore
} * no.
} * NOOO.
} * fine.
o no.
o NOOO.
o fine.
} Python, ---34--- 3 bytes.
Python, -3-4- 3 bytes.
} ---Long line of crossed text.---
-L-o-n-g- -l-i-n-e- -o-f- -c-r-o-s-s-e-d- -t-e-x-t-.-
} ** cool!
** cool! // is not a bullet point, because a space doesn't follow the *; Isn't bold, because there is no matching **
-- end of test cases --
ボーナス
- 文字のエスケープをサポートする場合は-19バイト(「通常」として扱われるように)。任意のエスケープ文字を選択できますが、
\
またはをお勧めし^
ます。SOサイトのエスケープシステムは、私が提案しているものとは異なる(さらに複雑な)ので注意してください。SOは`\`
として扱い\
ますが、2番目の`
文字を通常の文字として扱い、代わりに次の`
文字と一致させてください。
***word***
なり* * w o r d * *
、突然太字変換が適用されなくなります。これを処理する方法は不明です。