Twoim celem jest wprowadzenie dowolnego dowolnego tekstu, takiego jak:
This is some text
I wyślij ten tekst sformatowany jako kod dla postów (Markdown o smaku SE) i komentarzy (mini-Markdown) na Stack Exchange, takich jak:
`This is some text`
`This is some text`
Jest jednak trudniej. Rozważ dane wejściowe:
Perl has a variable called $`
Dane wyjściowe muszą być
`` Perl has a variable called $` ``
`Perl has a varaible called $\``
Pełne zasady formatowania to:
Pełne posty (pełne SE Markdown)
Krok 1: policz najmniejszą liczbę, dla której nie ma dokładnie tylu kolejnych ciągów wstecznych w ciągu. Nazwijmy to
n
. (Na przykład, w ciągupotato
,n
wynosi 1, wthis is a backtick: `
,n
oznacza 2, i` `` ``` ````` ``````
,n
jest 4)Krok 2: zawiń sznurek w
n
backticks. Jeśli ciąg zaczyna się lub kończy tylnym kliknięciem, musisz również zawinąć spacje. (Na przykładpotato
staje się`potato`
,this is a backtick: `
staje się`` this is a backtick: ` ``
i` `` ``` ````` ``````
staje się```` ` `` ``` ````` `````` ````
.
Komentarze (mini-Markdown)
- Wrap w
`
i uciec wszystkie`
„sz\`
. (Na przykładpotato
staje się`potato`
,this is a backtick: `
staje sięthis is a backtick: \`
i` `` ``` ````` ``````
staje się\` \`\` \`\`\` \`\`\`\`\` \`\`\`\`\`\`
.
- Wrap w
To jest golf-golf; najkrótsza odpowiedź w liczbie bajtów wygrywa.
\
; aby sformatować\
, musisz zrobić``\``
. Także wszystko, co kończy się\
na tym samym problemie:asdf\
produkuje `asdf`Odpowiedzi:
APL (90)
(Tak, zestaw znaków APL pasuje do bajtu, oto strona kodowa IBM 907 ).
Jest to funkcja, która pobiera ciąg i zwraca tablicę dwóch ciągów, przy czym pierwszy ciąg reprezentuje komentarz, a drugi ciąg reprezentuje pełny post .
Testy:
Uwaga: Nadałem tej funkcji nazwę ze względu na czytelność, nie jest to absolutnie konieczne, aby z niej korzystać (możesz po prostu umieścić argument obok funkcji anonimowej), więc jej nie policzyłem.
źródło
Ruby, 119
Nie golfowany:
źródło