Converter uma resposta TIO em uma resposta CMC

24

Vamos pela primeira vez fazer algo útil.

Dado o texto de um envio de codegolf do Try It Online, produza o envio equivalente do Chat Mini Challenge, que tem o formato

Language, N bytes: [`code`](URL)

ou (se o envio for de um único byte - o TIO adicionará um s à direita na primeira linha somente se necessário)

Language, 1 byte: [`code`](URL)

Você pode assumir que o envio

  • tem apenas uma linha
  • não contém backticks ( `)
  • não possui espaço em branco à esquerda
  • tem um formato regular como nos exemplos abaixo; a linha de código é recuada com quatro espaços ( ), não com tags HTML ( <pre><code></code></pre>), ou seja, sem espaços em branco à direita.

Observe que o envio pode ter uma tag de destaque de sintaxe. Veja o último exemplo.

Você pode opcionalmente incluir o texto do título, ie …url "Language - Try It Online".

Exemplos

Dado

# [05AB1E], 1 byte

    Ô

[Try it online!][TIO-j3v72bss]

[05AB1E]: https://github.com/Adriandmen/05AB1E
[TIO-j3v72bss]: https://tio.run/##MzBNTDJM/f//8JT//zNSgSAnJycfDAA "05AB1E – Try It Online"

Retorna

05AB1E, 1 byte: [`Ô`](https://tio.run/##MzBNTDJM/f//8JT//zNSgSAnJycfDAA)

ou

05AB1E, 1 byte: [`Ô`](https://tio.run/##MzBNTDJM/f//8JT//zNSgSAnJycfDAA "05AB1E – Try It Online")

Dado

# [Brachylog], 4 bytes

    ḅhᵐc

[Try it online!][TIO-j3v75978]

[Brachylog]: https://github.com/JCumin/Brachylog
[TIO-j3v75978]: https://tio.run/##SypKTM6ozMlPN/r//@GO1oyHWyck//@vlJGampOTDwZK/6MA "Brachylog – Try It Online"

Retorna

Brachylog, 4 bytes: [`ḅhᵐc`](https://tio.run/##SypKTM6ozMlPN/r//@GO1oyHWyck//@vlJGampOTDwZK/6MA)

Dado

# [APL (Dyalog Unicode)], 15 bytes

<!-- language-all: lang-apl -->

    ⍴⍨¨⍳

[Try it online!][TIO-j44jgrps]

[APL (Dyalog Unicode)]: https://www.dyalog.com/
[TIO-j44jgrps]: https://tio.run/##AScA2P9hcGwtZHlhbG9n//9m4oaQ4o204o2owqjijbP//zcxNjDijLZmIDQ "APL (Dyalog Unicode) – Try It Online"

Retorna

APL (Dyalog Unicode), 15 bytes: [`⍴⍨¨⍳`](https://tio.run/##AScA2P9hcGwtZHlhbG9n//9m4oaQ4o204o2owqjijbP//zcxNjDijLZmIDQ)
Adão
fonte
Podemos assumir que o nome do idioma não contém a ]?
ETHproductions
2
Nenhum nome de idioma no TIO possui ].
Freira vazada
É verdade, eu acho. Podemos assumir que a resposta não tem nenhum espaço em branco à esquerda ?
ETHproductions
@ETHproductions Sim, porque, caso contrário, os backticks não funcionarão. Eu vou editar.
Adám 19/06/19
4
Golf código é ಠ_ಠ útil
Conor O'Brien

Respostas:

6

V , 37 , 35 bytes

ç^</dj
H3xf]x3Ji[`A`]Jd2/: 
xr(A)

Experimente online!

DJMcMayhem
fonte
Eu tentei usar o plug-in surround que é meio empacotado com o V, mas ele continuava aparando os espaços em branco no final, o que eu acho que o desqualifica.
nmjcman101
Posso incomodar você para adicionar suporte à tag de destaque da sintaxe?
Adám 19/06/19
@ nmjcman101 Umm, acho que você pode assumir que não existe espaço em branco à direita.
Erik the Outgolfer
11
@ Adám Bem, isso meio que muda sem sentido as especificações no meio, mas acho que posso apoiá-las.
DJMcMayhem
11
@ nmjcman101 Sim, eu sabia sobre a diferença entre ys$[e ys$], mas, como estamos cercando-a com backticks e colchetes, é mais curto colocá-los manualmente.
DJMcMayhem
4

Python 3 , 113 103 98 91 bytes

-1 byte graças ao Value Ink.

Se você puder, eu poderia usar totalmente alguma ajuda com o regex. > <

lambda s:re.sub('(?s)# .(.*)](.*?)\n.* {4}(.*?)\n.+: (.*)',r'\1\2: [`\3`](\4)',s)
import re

Experimente online!

totalmente humano
fonte
Posso incomodar você para adicionar suporte à tag de destaque da sintaxe?
Adám 19/06/19
Ótimo, obrigado. Me desculpe por isso.
Adám 19/06/19
Não há necessidade de usar \spara corresponder à parte do bloco de código; substitua-o por um caractere de espaço literal. Além disso, a saída esperada não possui o "Language - Try It Online"segmento; portanto, é necessário alterar o último grupo (\S*)para corresponder corretamente, para que a contagem de bytes seja a mesma.
Value Ink
Na verdade, você pode manter essa parte do Try It Online. Nesse caso, alterar \spara um espaço economizará 1 byte.
Value Ink
Sim, fui eu quem fez essa pergunta. ;)
totallyhuman
3

JavaScript (ES6), 73 bytes

f=
s=>s.replace(/...(.*)](.*)[^]+    (.*)[^]+: (.*) ".*/,"$1$2: [`$3`]($4)")
<textarea rows=8 cols=75 oninput=o.textContent=this.value==f(this.value)?``:f(this.value)></textarea><pre id=o>

Neil
fonte
A resposta que eu estava esperando. Isso pode ser transformado em um bookmarklet? Caso contrário, eu vou marcar como favorito.
Adám 19/06/19
@ Adám alert(prompt().replace(...))pode funcionar, se o prompt permitir que você cole várias linhas de alguma forma (o regexp na verdade não precisa que as novas linhas estejam presentes).
19417 Neil
Hm, eu recebo o post não modificado como resultado. Talvez possamos injetar seu código no TIO ...
Adám 20/17
Eu também estava trabalhando em uma solução semelhante, mas não sabia [^]como combinar nada . Aprendi algo novo com sua solução. Obrigado!
precisa
3

Retina , 54 48 52 57 48 bytes

Salvo 1 byte graças a @MartinEnder, 1 byte graças a @Riley

...(.+)[^@]+    (.+)[^@]+: 
$1: [`$2`](
1`]

$
)

Experimente online! Isso pressupõe que não haverá um @nome no idioma, o que deve ser bom ...

ETHproductions
fonte
você poderia simplesmente substituir ^# \[com ^...eu acho
Martin Ender
Graças @MartinEnder, eu acho que as obras ...
ETHproductions
Você pode pular o ^e $? Sempre deve corresponder a toda a string de qualquer maneira.
Riley
@Riley Isso seria um fracasso se ... oh disparar, mina faz também ...
ETHproductions
Isso não funciona se o código contiver <space>", mas não sei se você precisa lidar com isso. Eu acho que você acabou de perceber isso.
Riley
3

05AB1E , 50 bytes

']¡J¦¦¦|J|`‚ʒнðQ}`ðÛ|D`θ'"Êi\|ë\}θ#1èr"ÿ: [`ÿ`](ÿ)

Experimente online!

Agora também suporta destaque de sintaxe!

нé substituído por e θé substituído por, ®èpois esses ainda não foram transferidos para o TIO.

Eu só quero saber como encurtar ¦¦¦...

Erik, o Outgolfer
fonte
2

Ruby , 85 bytes

->s{s[/.*/].gsub(/# .|\]/){}+": [`#{s[/(?<=  )\S.*/]}`](#{s=~/TIO-\w+.: (\S+)/;$1})"}

Experimente online!

Value Ink
fonte
2

MATLAB / oitava , 120 126 bytes

@(a)strjoin(regexprep(strsplit(a,'\n'),{'\[.+\]: (.+) ".+','^[\[<].+','# \[(.+)\](.+)','^ +'},{'`]($1)','','$1$2: [`',''}),'')

Isso deve funcionar. Para o MATLAB, ele não funcionará com caracteres Unicode, embora eu não ache, principalmente porque o MATLAB é péssimo quando se trata de caracteres ímpares. No entanto, ele funcionará com Unicode para Octave, ou pelo menos o TIO parece capaz de lidar.

Ele também deve lidar com envios com e sem o <-- -->realce da sintaxe.

Atualizações :

  1. Adicionado 4 bytes porque eu perdi a @(a)cópia durante
  2. Adicionados 2 bytes para adicionar ticks de volta ao código na saída

Experimente online!

Tom Carpenter
fonte
Isso pode ser executado no TIO Octave ?
Adám
@ Adám faz de fato. Atualizei a resposta com o link TIO.
Tom Carpenter
1

PHP , 92 bytes

<?=preg_filter("<...(.+)\](, \d+ \w+).* {4}(\S+).*: (\S+).*>s","$1$2: [`$3`]($4)",$_GET[0]);

Experimente online!

Jörg Hülsermann
fonte
0

Pip , 43 39 38 bytes

[a@>3DC']": [`"g@-6|>s"`]("(g@v^s1)')]

Experimente online!

Toma as linhas como argumentos separados da linha de comando. Um exemplo de invocação pode ter a seguinte aparência:

> pip.py -f convert.pip "# [05AB1E], 1 byte" "" "    Ô" "" "[Try it online!][TIO-j3v72bss]" "" "[05AB1E]: https://github.com/Adriandmen/05AB1E" "[TIO-j3v72bss]: https://tio.run/##MzBNTDJM/f//8JT//zNSgSAnJycfDAA \"05AB1E – Try It Online\""

embora, na verdade, isso não funcione para mim porque o Windows cmdreclama da Ô... [murmuração inarticulada]

- De qualquer forma, ele funciona no TIO. Ou use a -rbandeira e, em vez disso , use as linhas de stdin.

Supõe que o nome do idioma não contenha ](o que reduziria a redução de qualquer maneira).

Explicação

                                        g is list of cmdline args; a is 1st arg;
                                        s is space; v is -1 (implicit)
[                                    ]  Build a list with these elements:
 a@>3                                    1st line, sans first three characters,
     DC']                                 with the ] character deleted
         ": [`"                          This string
               g@-6                      6th line from the end (the code)
                   |>s                    with leading spaces stripped
                      "`]("              This string
                            g@v          Last line (containing the URL)
                               ^s         split on spaces
                           (     1)       get element at index 1
                                   ')    This character
                                        By default, the list is concatenated and printed
DLosc
fonte