Преобразовать ответ TIO в ответ CMC

24

Давайте на этот раз сделаем что-нибудь полезное.

Учитывая текст из заявки Codegolf в Try It Online, создайте эквивалентную отправку Chat Mini Challenge в форме

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

или (если отправка однобайтовая - TIO добавит завершающие s в первой строке только при необходимости)

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

Вы можете предположить, что представление

  • имеет только одну строку
  • не содержит галочек ( `)
  • не имеет ведущих пробелов
  • имеет обычный формат как в примерах ниже; строка кода имеет четыре пробела ( ), а не HTML-теги ( <pre><code></code></pre>), то есть без пробела.

Обратите внимание, что отправка может иметь тег подсветки синтаксиса. Смотрите последний пример.

Вы можете дополнительно включать в себя текст заголовка, то есть …url "Language - Try It Online".

Примеры

Данный

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

возвращение

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

или

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

Данный

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

возвращение

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

Данный

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

возвращение

APL (Dyalog Unicode), 15 bytes: [`⍴⍨¨⍳`](https://tio.run/##AScA2P9hcGwtZHlhbG9n//9m4oaQ4o204o2owqjijbP//zcxNjDijLZmIDQ)
Адам
источник
Можем ли мы предположить, что название языка не содержит ]?
ETHproductions
2
Нет названия языка на TIO, ]хотя.
Дрянная монахиня
Правда, наверное. Можно ли считать , ответ не имеют никаких ведущие пропусков?
ETHproductions
@ETHproductions Да, потому что в противном случае обратные пометки не будут работать. Я отредактирую
Адам
4
Код Гольф полезен ಠ_ಠ
Конор О'Брайен

Ответы:

6

V , 37 , 35 байт

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

Попробуйте онлайн!

DJMcMayhem
источник
Я попытался использовать плагин объемного звучания, который вроде как в комплекте с V, но он продолжал обрезать пробелы с конца, что, я думаю, дисквалифицирует его.
nmjcman101
Могу ли я побеспокоить вас добавить поддержку тега подсветки синтаксиса?
Адам
@ nmjcman101 Хмм, я думаю, вы можете предположить, что конечных пробелов не существует.
Эрик Outgolfer
1
@ Adám Ну, похоже, бессмысленно менять спецификацию в середине, но, думаю, я могу это поддержать.
DJMcMayhem
1
@ nmjcman101 Да, я знал о разнице между ys$[и ys$], но, поскольку мы окружаем его обратными чертами и скобками, на самом деле короче просто вставить их вручную.
DJMcMayhem
4

Python 3 , 113 103 98 91 байт

-1 байт благодаря Value Ink.

Если вы можете, я мог бы полностью использовать некоторую помощь с регулярным выражением. > <

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

Попробуйте онлайн!

totallyhuman
источник
Могу ли я побеспокоить вас добавить поддержку тега подсветки синтаксиса?
Адам
Большое спасибо. Прости за это.
Адам
Не нужно использовать \sдля соответствия части кода блока; замените его буквальным пробелом. Кроме того, ожидаемый вывод не имеет "Language - Try It Online"сегмента, поэтому вам нужно изменить свою последнюю группу, (\S*)чтобы она соответствовала правильно, чтобы количество байтов было примерно одинаковым.
Value Ink
На самом деле, оказывается, вы можете оставить эту часть Try It Online. В этом случае переход \sна пробел сэкономит 1 байт.
Value Ink
Да, я был тем, кто задал этот вопрос. ;)
полностью человек
3

JavaScript (ES6), 73 байта

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>

Нил
источник
Ответ, которого я ждал. Можно ли это сделать в букмарклет? В противном случае я просто добавлю это в закладки.
Адам
@ Adám alert(prompt().replace(...))может сработать, если подсказка позволит вам каким-то образом вставить несколько строк (регулярное выражение на самом деле не нуждается в наличии новых строк).
Нил
Хм, я получаю неизмененный пост в результате. Может быть, мы можем внедрить ваш код в
TIO
Я также работал над подобным решением, но я не знаю , о , [^]чтобы соответствовать ничего . Я узнал что-то новое из вашего решения. Благодарность!
Арджун
3

Сетчатка , 54 48 52 57 48 байт

Сохранено 1 байт благодаря @MartinEnder, 1 байт благодаря @Riley

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

$
)

Попробуйте онлайн! Это предполагает, что @в имени языка не будет , что должно быть хорошо ...

ETHproductions
источник
вы могли бы просто заменить ^# \[с ^...я думаю
Martin Ender
@MartinEnder Спасибо, я думаю, что это работает ...
ETHproductions
Можете ли вы пропустить ^и $? В любом случае он всегда должен соответствовать всей строке.
Райли
@Riley Это не получится, если ... ох, мой тоже ...
ETHproductions
Это не работает, если код содержит <space>", но я не знаю, нужно ли вам справиться с этим. Полагаю, вы только что это заметили.
Райли
3

05AB1E , 50 байтов

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

Попробуйте онлайн!

Теперь также поддерживается подсветка синтаксиса!

нзаменяется на и θзаменяется на, ®èпоскольку они еще не переведены на TIO.

Мне просто интересно, как сократить ¦¦¦...

Эрик Outgolfer
источник
2

MATLAB / Octave , 120 126 байтов

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

Это должно работать. Для MATLAB он не будет работать с символами Unicode, хотя я не думаю, в основном потому, что MATLAB отстой, когда речь идет о нечетных символах. Однако он будет работать с Unicode для Octave, или, по крайней мере, TIO сможет справиться с этим.

Он также должен обрабатывать представления как с <-- -->подсветкой синтаксиса, так и без нее .

Обновления :

  1. Добавил 4 байта, как я пропустил @(a)при копировании
  2. Добавлены 2 байта, чтобы добавить обратно галочки вокруг кода в выводе

Попробуйте онлайн!

Том Карпентер
источник
Это можно запустить на TIO Octave ?
Адам
@ Адам это действительно так. Я обновил ответ с помощью ссылки TIO.
Том Карпентер
0

Пип , 43 39 38 байт

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

Попробуйте онлайн!

Принимает строки как отдельные аргументы командной строки. Пример вызова может выглядеть так:

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

хотя на самом деле это не работает для меня, потому что Windows cmdжалуется на Ô... [невнятное бормотание]

- Во всяком случае, это работает на TIO. Или используйте-r флаг и вместо этого используйте ввод из строк стандартного ввода.

Предполагается, что название языка не будет содержать ] (что в любом случае нарушит уценку).

объяснение

                                        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
источник