Ihr Ziel ist es, einen beliebigen Text einzugeben, z.
This is some text
Und geben Sie diesen Text aus, der als Code für Posts (Markdown mit SE-Geschmack) und Kommentare (Mini-Markdown) in Stack Exchange formatiert ist, z.
`This is some text`
`This is some text`
Es wird jedoch schwieriger. Betrachten Sie die Eingabe:
Perl has a variable called $`
Die Ausgabe muss sein
`` Perl has a variable called $` ``
`Perl has a varaible called $\``
Die vollständigen Regeln für die Formatierung sind:
Vollständige Beiträge (vollständiger SE Markdown)
Schritt 1: Zählen Sie die kleinste Zahl, für die es nicht genau so viele aufeinanderfolgende Backticks in der Zeichenfolge gibt. Nennen wir das
n
. (Beispielsweise für die Zeichenfolgepotato
,n
1 ist , fürthis is a backtick: `
,n
2 ist , und für die` `` ``` ````` ``````
,n
ist 4.)Schritt 2: Wickeln Sie die Zeichenfolge in
n
Backticks. Wenn die Zeichenfolge mit einem Backtick beginnt oder endet, müssen Sie auch Leerzeichen einschließen. (Zum Beispielpotato
wird`potato`
,this is a backtick: `
wird`` this is a backtick: ` ``
und` `` ``` ````` ``````
wird```` ` `` ``` ````` `````` ````
.
Kommentare (Mini-Markdown)
- Wickeln Sie sich ein
`
und entkommen Sie allen`
mit\`
. (Zum Beispielpotato
wird`potato`
,this is a backtick: `
wirdthis is a backtick: \`
und` `` ``` ````` ``````
wird\` \`\` \`\`\` \`\`\`\`\` \`\`\`\`\`\`
.
- Wickeln Sie sich ein
Das ist Code-Golf ; Die kürzeste Antwort in Byte-Anzahl gewinnt.
\
; Um a zu formatieren\
, müssen Sie dies tun``\``
. Auch alles, was mit einem endet, stößt auf\
dasselbe Problem:asdf\
produziert "asdf"Antworten:
APL (90)
(Ja, der APL-Zeichensatz passt in ein Byte. Hier ist die IBM Codepage 907. )
Dies ist eine Funktion, die eine Zeichenfolge verwendet und ein Array aus zwei Zeichenfolgen zurückgibt, wobei die erste Zeichenfolge die Kommentardarstellung und die zweite Zeichenfolge die vollständige Postdarstellung ist .
Tests:
Hinweis: Ich habe der Funktion aus Gründen der Lesbarkeit einen Namen gegeben. Dies ist für die Verwendung nicht unbedingt erforderlich (Sie können das Argument einfach neben die anonyme Funktion stellen), daher habe ich es nicht gezählt.
quelle
Ruby, 119
Ungolfed:
quelle