Converti una risposta TIO in una risposta CMC


24

Facciamo per una volta qualcosa di utile.

Dato il testo di un invio di codegolf Try It Online, produce l'invio equivalente di Chat Mini Challenge, che è del modulo

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

oppure (se l'invio è un singolo byte - TIO aggiungerà un trailing s sulla prima riga solo se necessario)

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

Si può presumere che l'invio

  • ha solo una riga
  • non contiene backtick ( `)
  • non ha spazi bianchi iniziali
  • ha un formato regolare come negli esempi seguenti; la riga di codice è rientrata con quattro spazi ( ), non con tag HTML ( <pre><code>... </code></pre>), ovvero senza spazi vuoti finali.

Si noti che l'invio potrebbe avere un tag di evidenziazione della sintassi. Vedi l'ultimo esempio.

Opzionalmente puoi includere il testo del titolo, ad es …url "Language - Try It Online".

Esempi

Dato

# [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"

ritorno

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

Dato

# [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"

ritorno

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

Dato

# [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"

ritorno

APL (Dyalog Unicode), 15 bytes: [`⍴⍨¨⍳`](https://tio.run/##AScA2P9hcGwtZHlhbG9n//9m4oaQ4o204o2owqjijbP//zcxNjDijLZmIDQ)

Possiamo supporre che il nome della lingua non contenga un ]?
ETHproductions

2
Nessun nome di lingua su TIO ha ]però.
Leaky Nun,

Vero, immagino. Possiamo assumere la risposta non ha leader spazi bianchi?
ETHproductions

@ETHproductions Sì, perché altrimenti i backtick non funzioneranno. Lo modificherò.
Adám,

4
Il golf di codice è utile ಠ_ಠ
Conor O'Brien,

Risposte:


6

V , 37 , 35 byte

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

Provalo online!


Ho provato a utilizzare il plug-in surround che è un po 'in bundle con V, ma ha continuato a tagliare gli spazi bianchi alla fine, che penso lo squalifica.
nmjcman101

Posso darti fastidio per aggiungere il supporto per il tag di evidenziazione della sintassi?
Adám,

@ nmjcman101 Umm, penso che tu possa presumere che non esista uno spazio bianco finale.
Erik the Outgolfer,

1
@Adám Bene, quel tipo sembra cambiare inutilmente le specifiche nel mezzo, ma immagino di poterlo supportare.
DJMcMayhem

1
@ nmjcman101 Sì, sapevo della differenza tra ys$[e ys$], ma dal momento che lo circondiamo di backtick e parentesi, in realtà è più breve inserirli manualmente.
DJMcMayhem

4

Python 3 , 113 103 98 91 byte

-1 byte grazie a Value Ink.

Se puoi, potrei usare totalmente un po 'di aiuto con regex. > <

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

Provalo online!


Posso darti fastidio per aggiungere il supporto per il tag di evidenziazione della sintassi?
Adám,

Grazie mille. Mi dispiace per quello.
Adám,

Non è necessario utilizzare \sper abbinare la parte del blocco di codice; sostituirlo con un carattere spaziale letterale. Anche l'output previsto non ha il "Language - Try It Online"segmento, quindi è necessario modificare l'ultimo gruppo in modo (\S*)che corrisponda correttamente, quindi il conteggio dei byte esce allo stesso modo.
Value Ink

In realtà, si scopre che è possibile mantenere quella parte Provalo online. In tal caso, la modifica \sin uno spazio salverà 1 byte.
Value Ink

Sì, sono stato io a porre questa domanda. ;)
totalmente umano il

3

JavaScript (ES6), 73 byte

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>


La risposta che stavo aspettando Questo può essere trasformato in un bookmarklet? Altrimenti lo aggiungerò ai segnalibri.
Adám,

@Adám alert(prompt().replace(...))potrebbe funzionare, se il prompt ti consentirà di incollare più righe in qualche modo (il regexp in realtà non ha bisogno che le newline siano presenti).
Neil,

Hm, ricevo il post non modificato come risultato. Forse possiamo iniettare il tuo codice in TIO ...
Adám,

Stavo anche lavorando a una soluzione simile, ma non sapevo che avrei potuto [^]eguagliare nulla . Ho imparato qualcosa di nuovo dalla tua soluzione. Grazie!
Arjun,

3

Retina , 54 48 52 57 48 byte

Salvato 1 byte grazie a @MartinEnder, 1 byte grazie a @Riley

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

$
)

Provalo online! Questo presuppone che non ci sarà un @nome nella lingua, che dovrebbe andare bene ...


potresti semplicemente sostituirlo ^# \[con ^...credo
Martin Ender il

@MartinEnder Grazie, penso che
funzioni

Puoi saltare il ^e $? Dovrebbe comunque corrispondere sempre all'intera stringa.
Riley,

@Riley Questo fallirebbe se ... oh spara, anche il mio lo fa ...
ETHproductions

Questo non funziona se il codice contiene <space>", ma non so se è necessario gestirlo. Immagino che tu l'abbia appena notato.
Riley,

3

05AB1E , 50 byte

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

Provalo online!

Ora supporta anche l'evidenziazione della sintassi!

нviene sostituito da ed θè sostituito da ®èpoiché quelli non sono ancora stati estratti in TIO.

Mi chiedo solo come accorciare ¦¦¦...



2

MATLAB / Ottava , 120 126 byte

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

Questo dovrebbe funzionare. Per MATLAB non funzionerà con i personaggi Unicode anche se non credo, soprattutto perché MATLAB fa schifo quando si tratta di personaggi strani. Funzionerà comunque con Unicode per Octave, o almeno TIO sembra essere in grado di farcela.

Dovrebbe inoltre gestire gli invii sia con che senza l' <-- -->evidenziazione della sintassi.

Aggiornamenti :

  1. Aggiunti 4 byte come mi mancava @(a)quando ho copiato
  2. Aggiunti 2 byte per aggiungere segni di spunta intorno al codice nell'output

Provalo online!


Questo può essere eseguito su TIO Octave ?
Adám,

@ Adám lo fa davvero. Ho aggiornato la risposta con il collegamento TIO.
Tom Carpenter,



0

Pip , 43 39 38 byte

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

Provalo online!

Accetta le righe come argomenti della riga di comando separati. Un invito di esempio potrebbe essere simile a:

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

anche se in realtà questo non funziona per me perché Windows si cmdlamenta del Ô... [borbottando inarticolato]

- Ad ogni modo, funziona su TIO. Oppure usa la -rbandiera e prendi invece input da linee di stdin.

Presuppone che il nome della lingua non conterrà ](il che interromperebbe comunque il markdown).

Spiegazione

                                        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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.