В Хаскеле список обозначений:
[a,b,c]
Это просто синтаксический сахар для:
a:b:c:[]
И строка обозначений:
"abc"
Это просто синтаксический сахар для:
['a','b','c']
Это означает, что строка:
"abc"
Такой же как:
'a':'b':'c':[]
задача
Получив строку, вы должны вывести, как будет выглядеть десинтаксированная версия в Haskell.
правила
Вы получите строку любым допустимым методом ввода, вы должны вывести строку, заканчивающуюся
:[]
каждым символом из ввода, окруженного'
и разделенного:
. Пустая строка должна вывести[]
.Вы можете предположить, что вы не получите никаких символов, требующих экранирования (например
'
, новые строки, табуляции ...), и что ввод будет находиться в диапазоне ascii для печати.Это код-гольф, вы должны стремиться минимизировать количество байтов вашего ответа
Тестовые случаи
"" -> []
"a" -> 'a':[]
"Hello, World" -> 'H':'e':'l':'l':'o':',':' ':'W':'o':'r':'l':'d':[]
"
и'
синтаксически разные.Ответы:
Haskell , 26 байтов
Попробуйте онлайн!
Объяснение:
В неточечной нотации и использовании
concatMap
вместо=<<
этого это становитсяДля данной строки
s
мы сопоставляем каждый символc
со строкой,"'c':"
используяshow
функцию, которая возвращает строковое представление большинства типов Haskell. Эти строки объединяются и[]
добавляется финал .Хотя этот запрос не запрашивается, этот ответ даже работает с правильным экранированием, потому что
show
заботится о нем:f "'"
доходность"'\\'':[]"
.источник
(++'[':']':[]).((++':':[]).show=<<)
, нет?Haskell,
332826 байтПопробуйте онлайн!
fold
заданная функция pointfree справа во входную строку, начиная с[]
. Функция такова: показывать char как символ Haskell, то есть окружать'
и объединять результат до того, как поместить его:
перед ним.Редактировать: @ Ørjan Йохансен сохранил два байта. Спасибо!
источник
(++'[':']':[]).(>>= \c->'\'':[]++[c]++'\'':':':[])
.:
для построения списка++
, хотя оба имеют свою элегантность.Python 3 , 32 байта
Попробуйте онлайн!
источник
JavaScript ES6,
424031 байтЗаменяет каждый символ на
'<char>':
, затем добавляет[]
в конецПопробуйте онлайн!
источник
$&
.Common Lisp,
5042 байтаПопробуйте онлайн!
Уменьшено благодаря комментарию @coredump, с использованием
read
вместо определения функции.источник
(format t"~{'~a':~}[]"(coerce(read)'list))
(некоторые другие вопросы более строги по отношению к входам и выходам, но здесь все в порядке)V 11 байт
Попробуйте онлайн!
Использует регулярное выражение для окружения каждого входного символа,
'':
а затемA
ppends[]
до конца.источник
C
555453 байтаисточник
char *h
puts("[]");
Вместо этого вы можете сделать вывод с завершающей строкой, чтобы сохранить несколько байтов.s(char*h){*h?printf("'%c':",*h++),s(h):puts("[]");}
Python 3 ,
413836 байт-2 байта благодаря овсу
Попробуйте онлайн!
источник
*map
существует ...input()
течение последних 20 минут (буквально), когда это могла быть просто лямбда @. @"[]"
с[]
05AB1E ,
15 12 1110 байт-3 байта благодаря carusocomputing
-1 байту благодаря Adnan
-1 байту благодаря гениальной идее Эрика Аутгольфера
Попробуйте онлайн!
источник
vy"'ÿ':"?}¯?
vy"'ÿ':"}¯J
будет работать для 11, ноJ
присоединяется к глобальному массиву, а не весь стек в этой ситуации.R, 51 байт
источник
scan(,'')
вместо функции.f<-
с начала своего кодаPyth,
14108 байтПопробуй это!
-2 байта благодаря @isaacg
Наконец, Pyth хорош в чем-то.
объяснение
источник
M
и я не знаю, почему я не использовалa
. Теперь мы как минимум на 2 байта короче, чем все остальные решения здесь!Perl 6 , 19 байт
источник
Сетчатка, 12
2 этапа:
'
':
вокруг него[]
в конецПопробуйте онлайн .
источник
Python 2 ,
48464437 байт-2 байта благодаря Роду. -7 байт благодаря Wheat Wizard.
Попробуйте онлайн!
источник
lambda s:':'.join(map(repr,[*s,[]]))
илиlambda s:':'.join(map(repr,s))+":[]"
.Befunge ,
2927 байтПопробуйте онлайн!
источник
JavaScript (ES6), 36 байт
Попробуй
источник
Желе ,
11 108 байт-1 байт благодаря Кристиану (удалите конкатенацию
;
и используйте неявную печать)+0 байт (фиксированная для торцевого случае пустой строки - ранее полной программе:
ŒṘ€j”:“:[]
)-2 благодаря Erik the Outgolfer (использование
p
вместо этого;€
с”:
эффективностью длины 1; использованиеØ[
с тех пор, как оно стало сокращением для⁾[]
)Попробуйте онлайн!
Полная программа, печатающая результат (в виде ссылки возвращает список списков символов).
... но есть ли способ сохранить с помощью STDIN?
Как?
источник
PHP , 41 байт
Попробуйте онлайн!
источник
for(;~$c=$argn[$i++];)echo"'$c':"?>[]
.<?
с какой опцией его запускать? Сделайте свой собственный подход, я бы сказал, чтобы получить положительные отзывы, а Титус сделал что-то подобное в это время-R
флагом. Теги могут быть закрыты даже в конструкциях типаeval()
иcreate_function()
.Perl 5 , 22 байта
19 байт кода +
-p
флаг.Или для того же bytecount
s/./'$&':/g;s/$/[]/
.Совершенно прямо:
s/./'$&':/g
окружает каждого персонажа кавычками и добавляет:
после.$\
неявно печатается после каждой распечатки, поэтому установка его на[]
выводит финал[]
.Попробуйте онлайн!
источник
Java (OpenJDK 8) ,
868376 байт-3 байта благодаря @KevinCruijssen
-7 байтов благодаря @FlorianSchaetz
Попробуйте онлайн!
источник
;
не нужно считать лямбда-ответами,;
после}
не нужно вообще,{
а}
можно и убрать вокруг цикла for. И вы могли бы сэкономить еще 4 байта в Java 10 изменяющемся какString
иchar
вvar
.брейкфук, 68 байт
Попробуйте онлайн!
источник
Brain-Flak ,
135, 131 байтПопробуйте онлайн!
+1
байт для-c
флага.Спасибо WheatWizard за удаление очень очевидных NOOP, которые у меня были без причины XD.
источник
Стандарт ML ,
5250 байтСохранено 2 байта благодаря @Laikoni!
Попробуйте онлайн!
String.translate
это , к сожалению , длинное имя, но 5 байт короче , чем при использованииconcat
,map
иexplode
.источник
Cubix ,
3129 байтA
также может быть замененi
;пытаясь выяснить, есть ли хороший способ выжать еще один или два байта из этого.-2 байта благодаря MickyT! Также перехитрил MickyT !Устанавливается на куб 3x3x3:
Смотреть онлайн!
Попробуйте онлайн!
источник
uo@[)o'U);!A?ro;o;o;os:'/u:''
Python 2 , 47 байт
Попробуйте онлайн!
источник
[1:-1]
роли, поэтому она была длиннее, чем у человека. +1APL (Dyalog) ,
2119 байтовПопробуйте онлайн!
'[]',⍨
скобки добавлены к'.'
каждый персонаж⎕R
PCRE R заменяется на'''&'':'
цитата, совпадение, цитата и двоеточиеисточник
sed ,
1918 байтов-1 байт благодаря Джордану
Попробуйте онлайн!
источник
PHP, 39 байт
Беги как труба с
-F
.источник
Выпуклый , 10 байт
Попробуйте онлайн!
источник
Cubix , 27 байтов
Попробуйте онлайн!
Смотреть это беги
Немного отличающийся вариант от ответа Гизеппа . Это помещает двоеточие и кавычку в стек. Затем он проходит по входам, меняя местами и выводя стек. Только входные данные удаляются, а двоеточие и кавычка сохраняются.
Как только достигнут конец ввода, IP немного удивляется кубу, добавляя и выводя скобки. В миксе есть пара избыточных команд.
источник