Seu objetivo é inserir qualquer texto arbitrário, como:
This is some text
E produza esse texto formatado como código para postagens (Markdown com sabor SE) e comentários (mini Markdown) no Stack Exchange, como:
`This is some text`
`This is some text`
No entanto, fica mais complicado. Considere a entrada:
Perl has a variable called $`
A saída deve ser
`` Perl has a variable called $` ``
`Perl has a varaible called $\``
As regras completas para a formatação são:
Postagens completas (Markdown SE completo)
Etapa 1: conte o menor número para o qual não existem exatamente tantos backticks consecutivos na string. Vamos chamar assim
n
. (Por exemplo, para a sequênciapotato
,n
é 1, parathis is a backtick: `
,n
é 2 e para` `` ``` ````` ``````
,n
é 4.)Etapa 2: enrole a corda nas
n
costas. Se a sequência começar ou terminar com um backtick, você também deverá quebrar os espaços. (Por exemplo,potato
torna-se`potato`
,this is a backtick: `
torna`` this is a backtick: ` ``
-` `` ``` ````` ``````
se e torna - se```` ` `` ``` ````` `````` ````
.
Comentários (mini-Markdown)
- Enrole
`
e escape de tudo`
com\`
. (Por exemplo,potato
torna-se`potato`
,this is a backtick: `
tornathis is a backtick: \`
-` `` ``` ````` ``````
se e torna - se\` \`\` \`\`\` \`\`\`\`\` \`\`\`\`\`\`
.
- Enrole
Isso é código-golfe ; a resposta mais curta na contagem de bytes vence.
\
; para formatar um\
, você precisa fazer``\``
. Além disso, qualquer coisa que termine com\
o mesmo problema:asdf\
produz `asdf`Respostas:
APL (90)
(Sim, o conjunto de caracteres APL cabe em um byte, aqui está a página de código 907 da IBM .)
Essa é uma função que pega uma string e retorna uma matriz de duas strings, onde a primeira string é a representação do comentário e a segunda string é a representação completa da postagem .
Testes:
Nota: Dei à função um nome para facilitar a leitura, não é estritamente necessário usá-la (você pode colocar o argumento ao lado da função anônima) para não contar.
fonte
Ruby, 119
Ungolfed:
fonte