Konwertuj odpowiedź TIO na odpowiedź CMC

24

Zróbmy raz coś pożytecznego.

Biorąc pod uwagę tekst przesłany przez kodegolfa Try It Online, przygotuj równoważne zgłoszenie Chat Mini Challenge, które ma formę

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

lub (jeśli przesłanie jest jednym bajtem - TIO doda końcowe s w pierwszym wierszu tylko w razie potrzeby)

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

Możesz założyć, że przesłanie

  • ma tylko jedną linię
  • nie zawiera backticks ( `)
  • nie ma wiodących białych znaków
  • ma zwykły format jak w poniższych przykładach; linia kodu jest wcięta czterema spacjami ( ), a nie znacznikami HTML ( <pre><code></code></pre>), tzn. brak spacji końcowych.

Pamiętaj, że przesłanie może zawierać znacznik podświetlania składni. Zobacz ostatni przykład.

Możesz opcjonalnie dołączyć tekst tytułu, tj …url "Language - Try It Online".

Przykłady

Dany

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

powrót

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

lub

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

Dany

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

powrót

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

Dany

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

powrót

APL (Dyalog Unicode), 15 bytes: [`⍴⍨¨⍳`](https://tio.run/##AScA2P9hcGwtZHlhbG9n//9m4oaQ4o204o2owqjijbP//zcxNjDijLZmIDQ)
Adám
źródło
Czy możemy założyć, że nazwa języka nie zawiera ]?
ETHproductions
2
]Jednak nie ma nazwy języka w TIO .
Leaky Nun
To prawda, tak sądzę. Czy możemy założyć, że odpowiedź nie ma wiodących białych znaków?
ETHprodukcje
@ETHproductions Tak, ponieważ w przeciwnym razie backtyki nie będą działać. Będę edytować.
Adám
4
Kod golfowy jest przydatny ಠ_ಠ
Conor O'Brien

Odpowiedzi:

6

V , 37 , 35 bajtów

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

Wypróbuj online!

DJMcMayhem
źródło
Próbowałem użyć wtyczki surround, która jest trochę w pakiecie z V, ale nadal przycinała białe znaki na końcu, co moim zdaniem dyskwalifikuje to.
nmjcman101
Czy mogę zawracać ci głowę dodaniem obsługi znacznika podświetlania składni?
Adám
@ nmjcman101 Umm, myślę, że możesz założyć, że końcowe białe znaki nie istnieją.
Erik the Outgolfer,
1
@ Adám Cóż, to wydaje się bezcelowe zmienianie specyfikacji w środku, ale myślę, że mogę to poprzeć.
DJMcMayhem
1
@ nmjcman101 Tak, wiedziałem o różnicy między ys$[i ys$], ale ponieważ otaczamy ją backtickami i nawiasami, w rzeczywistości jest krótszy, aby po prostu wstawić je ręcznie.
DJMcMayhem
4

Python 3 , 113 103 98 91 bajtów

-1 bajt dzięki Value Ink.

Jeśli możesz, mógłbym całkowicie skorzystać z pomocy przy wyrażeniu regularnym. > <

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

Wypróbuj online!

całkowicie ludzki
źródło
Czy mogę zawracać ci głowę dodaniem obsługi znacznika podświetlania składni?
Adám
Wielkie dzięki. Przepraszam za to.
Adám
Nie trzeba używać, \saby dopasować część bloku kodu; zamień go dosłownie spacją. Również oczekiwany wynik nie zawiera "Language - Try It Online"segmentu, więc musisz zmienić ostatnią grupę, (\S*)aby dopasować poprawnie, aby liczba bajtów była taka sama.
Wartość tuszu
W rzeczywistości okazuje się, że możesz zachować tę część Try It Online. W takim przypadku zmiana \sna spację zaoszczędzi 1 bajt.
Wartość tuszu
Tak, to ja zadałem to pytanie. ;)
całkowicieludzki
3

JavaScript (ES6), 73 bajty

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
źródło
Odpowiedź, na którą czekałam. Czy można to przekształcić w bookmarklet? W przeciwnym razie po prostu dodam do zakładek.
Adám
@ Adám alert(prompt().replace(...))może działać, jeśli monit pozwoli w jakiś sposób wkleić wiele linii (regexp tak naprawdę nie wymaga obecności nowych linii).
Neil
Hm, otrzymałem niezmodyfikowany post w wyniku. Może możemy wstrzyknąć twój kod do TIO…
Adám
Ja również pracuje nad podobnym rozwiązaniem, ale nie wiedziałem o [^]pasujące niczego . Nauczyłem się czegoś nowego z twojego rozwiązania. Dzięki!
Arjun,
3

Retina , 54 48 52 57 48 bajtów

Zapisano 1 bajt dzięki @MartinEnder, 1 bajt dzięki @Riley

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

$
)

Wypróbuj online! Zakłada się, że nie będzie @w nazwie języka, co powinno być w porządku ...

ETHprodukcje
źródło
można po prostu zastąpić ^# \[z ^...myślę
Marcina, Ender
@MartinEnder Dzięki, myślę, że to działa ...
ETHproductions
Czy możesz pominąć ^i $? I tak zawsze powinien pasować do całego łańcucha.
Riley
@ Riley To by się nie udało, gdyby ... o, strzelę, mój też też ...
ETHproductions
To nie działa, jeśli kod zawiera <space>", ale nie wiem, czy musisz sobie z tym poradzić. Chyba właśnie to zauważyłeś.
Riley
3

05AB1E , 50 bajtów

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

Wypróbuj online!

Teraz obsługuje także podświetlanie składni!

нzastępuje się i θzastępuje się przez®è ponieważ nie zostały one jeszcze przeniesione do TIO.

Zastanawiam się tylko, jak skrócić ¦¦¦...

Erik the Outgolfer
źródło
2

Rubinowy , 85 bajtów

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

Wypróbuj online!

Wartość tuszu
źródło
2

MATLAB / oktawa , 120 126 bajtów

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

To powinno działać. W przypadku MATLAB nie działa ze znakami Unicode, choć nie sądzę, głównie dlatego, że MATLAB jest do bani, jeśli chodzi o znaki nieparzyste. Jednak będzie działać z Unicode dla Octave, a przynajmniej TIO wydaje się być w stanie sobie poradzić.

Powinien także obsługiwać przesyłanie zarówno z <-- -->podświetlaniem składni, jak i bez niego .

Aktualizacje :

  1. Dodano 4 bajty, ponieważ brakowało mi @(a)podczas kopiowania
  2. Dodano 2 bajty, aby dodać tyknięcia wokół kodu w danych wyjściowych

Wypróbuj online!

Tom Carpenter
źródło
Czy można to uruchomić na TIO Octave ?
Adám
@ Adám rzeczywiście tak jest. Zaktualizowałem odpowiedź za pomocą linku TIO.
Tom Carpenter,
1

PHP , 92 bajty

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

Wypróbuj online!

Jörg Hülsermann
źródło
0

Pip , 43 39 38 bajtów

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

Wypróbuj online!

Bierze linie jako osobne argumenty wiersza poleceń. Przykładowe wywołanie może wyglądać następująco:

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

chociaż w rzeczywistości to nie działa, ponieważ Windows cmdnarzeka na Ô... [nieartykułowane mamrotanie]

- W każdym razie działa na TIO. Lub użyj -rflagi i weź zamiast tego dane wejściowe z linii stdin.

Zakłada, że ​​nazwa języka nie będzie zawierać ] (co i tak złamałoby przecenę).

Wyjaśnienie

                                        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
źródło