Convierta una respuesta TIO en una respuesta CMC

24

Hagamos por una vez algo útil.

Dado el texto de una presentación de codegolf de Try It Online, produzca la presentación equivalente de Chat Mini Challenge, que tiene la forma

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

o (si el envío es de un solo byte, TIO agregará un s final en la primera línea solo si es necesario)

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

Puede suponer que la presentación

  • tiene solo una línea
  • no contiene backticks ( `)
  • no tiene espacios en blanco principales
  • tiene un formato regular como en los ejemplos a continuación; la línea de código está sangrada con cuatro espacios ( ), no con etiquetas HTML ( <pre><code>... </code></pre>), es decir, sin espacios en blanco al final.

Tenga en cuenta que el envío puede tener una etiqueta de resaltado de sintaxis. Ver último ejemplo.

Opcionalmente, puede incluir el texto del título, es decir …url "Language - Try It Online".

Ejemplos

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"

regreso

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

o

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"

regreso

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"

regreso

APL (Dyalog Unicode), 15 bytes: [`⍴⍨¨⍳`](https://tio.run/##AScA2P9hcGwtZHlhbG9n//9m4oaQ4o204o2owqjijbP//zcxNjDijLZmIDQ)
Adán
fuente
¿Podemos suponer que el nombre del idioma no contiene un ]?
ETHproductions
2
Sin ]embargo, no hay nombre de idioma en TIO .
Leaky Nun
Es cierto, supongo. ¿Podemos suponer que la respuesta no tiene ningún espacio en blanco principal ?
ETHproductions
@ETHproductions Sí, porque de lo contrario los backticks no funcionarán. Lo editaré
Adám
44
El golf de código es útil ಠ_ಠ
Conor O'Brien

Respuestas:

6

V , 37 , 35 bytes

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

Pruébalo en línea!

DJMcMayhem
fuente
Intenté usar el complemento surround que está incluido en V, pero seguía recortando espacios en blanco al final, lo que creo que lo descalifica.
nmjcman101
¿Puedo molestarte para agregar soporte para la etiqueta de resaltado de sintaxis?
Adám
@ nmjcman101 Umm, creo que puedes asumir que el espacio en blanco al final no existe.
Erik the Outgolfer
1
@ Adám Bueno, eso parece un poco inútil cambiar la especificación en el medio, pero creo que puedo soportarlo.
DJMcMayhem
1
@ nmjcman101 Sí, sabía sobre la diferencia entre ys$[y ys$], pero como lo estamos rodeando con backticks y corchetes, en realidad es más corto simplemente ponerlos manualmente.
DJMcMayhem
4

Python 3 , 113 103 98 91 bytes

-1 byte gracias a Value Ink.

Si puedes, podría usar algo de ayuda con la expresión regular. > <

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

Pruébalo en línea!

totalmente humano
fuente
¿Puedo molestarte para agregar soporte para la etiqueta de resaltado de sintaxis?
Adám
Muchas gracias. Lo siento por eso.
Adám
No es necesario usarlo \spara que coincida con la parte del bloque de código; reemplácelo con un carácter de espacio literal. Además, la salida esperada no tiene el "Language - Try It Online"segmento, por lo que debe cambiar su último grupo para (\S*)que coincida correctamente, de modo que el recuento de bytes salga más o menos igual.
Value Ink
En realidad, resulta que puedes mantener esa parte de Try It Online. En ese caso, cambiar \sa un espacio ahorrará 1 byte.
Value Ink
Sí, fui yo quien hizo esa pregunta. ;)
totalmente humano
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
fuente
La respuesta que estaba esperando. ¿Se puede convertir esto en un marcador? De lo contrario, lo marcaré como favorito.
Adám
@ Adám alert(prompt().replace(...))podría funcionar, si el mensaje le permite pegar varias líneas de alguna manera (la expresión regular no necesita las nuevas líneas para estar presentes).
Neil
Hm, recibo la publicación no modificada como resultado. Tal vez podamos inyectar su código en TIO ...
Adám
También estaba trabajando en una solución similar, pero no sabía si [^]coincidir con nada . He aprendido algo nuevo de su solución. ¡Gracias!
Arjun
3

Retina , 54 48 52 57 48 bytes

1 byte guardado gracias a @MartinEnder, 1 byte gracias a @Riley

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

$
)

Pruébalo en línea! Esto supone que no habrá un @nombre en el idioma, lo que debería estar bien ...

ETHproducciones
fuente
simplemente podría reemplazar ^# \[con ^...creo
Martin Ender
@ MartinEnder Gracias, creo que eso funciona ...
ETHproductions
¿Puedes saltarte el ^y $? Siempre debe coincidir con la cadena completa de todos modos.
Riley
@Riley Eso fallaría si ... oh, dispara, el mío también ...
ETHproductions
Esto no funciona si el código contiene <space>", pero no sé si necesita manejar eso. Supongo que acabas de darte cuenta de eso.
Riley
3

05AB1E , 50 bytes

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

Pruébalo en línea!

¡Ahora también admite resaltado de sintaxis!

нse reemplaza por y θse reemplaza por ®èya que aún no se han extraído a TIO.

Me pregunto cómo acortar ¦¦¦...

Erik el Outgolfer
fuente
2

MATLAB / Octave , 120 126 bytes

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

Esto debería funcionar. Para MATLAB no funcionará con caracteres Unicode, aunque no lo creo, principalmente porque MATLAB apesta cuando se trata de caracteres extraños. Sin embargo, funcionará con Unicode para Octave, o al menos TIO parece ser capaz de hacer frente.

También debe manejar los envíos con y sin el <-- -->resaltado de sintaxis.

Actualizaciones :

  1. Agregué 4 bytes ya que perdí el @(a)al copiar
  2. Se agregaron 2 bytes para agregar ticks alrededor del código en la salida

Pruébalo en línea!

Tom Carpenter
fuente
¿Se puede ejecutar esto en TIO Octave ?
Adám
@ Adám lo hace de hecho. He actualizado la respuesta con el enlace TIO.
Tom Carpenter
1

PHP , 92 bytes

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

Pruébalo en línea!

Jörg Hülsermann
fuente
0

Pip , 43 39 38 bytes

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

Pruébalo en línea!

Toma las líneas como argumentos separados de la línea de comandos. Un ejemplo de invocación podría verse así:

> 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\""

aunque en realidad esto no funciona para mí porque Windows se cmdqueja del Ô... [murmullo inarticulado]

En cualquier caso, funciona en TIO. O use la -rbandera y tome la entrada de las líneas de stdin en su lugar.

Asume que el nombre del idioma no contendrá ](lo que rompería la rebaja de todos modos).

Explicación

                                        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
fuente