Em Haskell, a notação de lista:
[a,b,c]
É apenas açúcar sintático para:
a:b:c:[]
E a notação de string:
"abc"
É apenas açúcar sintático para:
['a','b','c']
Isso significa que a string:
"abc"
É o mesmo que:
'a':'b':'c':[]
Tarefa
Dada uma string, você deve exibir a aparência da versão des-sintaxe em Haskell.
Regras
Você receberá uma string por qualquer método de entrada válido. Você deve enviar uma string que termina
:[]
com todos os caracteres da entrada cercada'
e separada por:
. A cadeia vazia deve ser exibida[]
.Você pode assumir que não receberá caracteres que exijam escape (por exemplo
'
, novas linhas, guias ...) e que a entrada estará no intervalo ascii imprimívelEste é um código-golf, você deve procurar minimizar a contagem de bytes de sua resposta
Casos de teste
"" -> []
"a" -> 'a':[]
"Hello, World" -> 'H':'e':'l':'l':'o':',':' ':'W':'o':'r':'l':'d':[]
"
e'
são sintaticamente diferentes.Respostas:
Haskell , 26 bytes
Experimente online!
Explicação:
Em notação sem ponto e usando em
concatMap
vez de=<<
, isso se tornaDada uma string
s
, mapeamos cada caracterec
para uma string"'c':"
usando ashow
função que retorna uma representação de string da maioria dos tipos Haskell. Essas cadeias são concatenadas e uma final[]
é anexada.Embora não seja solicitada pelo desafio, essa resposta funciona até com escape adequado, pois
show
cuida dela:f "'"
cede"'\\'':[]"
.fonte
(++'[':']':[]).((++':':[]).show=<<)
, não?Haskell,
332826 bytesExperimente online!
fold
a função pointfree fornecida da direita para a string de entrada começando com[]
. A função é: mostrar char como um caractere Haskell, ou seja, cercado'
e concatenado com o resultado até agora, depois de colocar um:
na frente dele.Edit: @ Ørjan Johansen salvou dois bytes. Obrigado!
fonte
(++'[':']':[]).(>>= \c->'\'':[]++[c]++'\'':':':[])
.:
para criar a lista, e não++
, embora ambos tenham sua própria elegância.Python 3 , 32 bytes
Experimente online!
fonte
JavaScript ES6,
424031 bytesSubstitui cada caractere por
'<char>':
e depois adiciona[]
ao finalExperimente online!
fonte
$&
.Lisp comum,
5042 bytesExperimente online!
Reduzido graças ao comentário de @coredump, usando em
read
vez de definir uma função.fonte
(format t"~{'~a':~}[]"(coerce(read)'list))
(algumas outras perguntas são entradas wrt mais rigorosas e saídas, mas aqui isso é bom)V , 11 bytes
Experimente online!
Usa um regex para cercar todos os caracteres de entrada
'':
e, em seguida,A
pende[]
até o final.fonte
C,
555453 bytesfonte
char *h
puts("[]");
vez disso, você pode fazer a saída com uma nova linha à direita para salvar alguns bytes.s(char*h){*h?printf("'%c':",*h++),s(h):puts("[]");}
Python 3 ,
413836 bytes-2 bytes graças a ovs
Experimente online!
fonte
*map
existe ...input()
durante os últimos 20 minutos (literalmente), quando poderia ser apenas um lambda @ @."[]"
por[]
05AB1E ,
15 12 1110 bytes-3 bytes graças à carusocomputação
-1 byte graças a Adnan
-1 byte graças à idéia genial de Erik the Outgolfer
Experimente online!
fonte
vy"'ÿ':"?}¯?
vy"'ÿ':"}¯J
que funcionaria para 11, masJ
se junta à matriz global, não à pilha inteira nessa situação.R, 51 bytes
fonte
scan(,'')
vez de uma função.f<-
partir do início do seu códigoPitão,
14108 bytesTente isso!
-2 bytes graças a @isaacg
Finalmente, pyth é bom em alguma coisa.
explicação
fonte
M
e não sei por que não useia
. Agora somos pelo menos 2 bytes mais curtos que todas as outras soluções aqui!Perl 6 , 19 bytes
fonte
Retina, 12
2 etapas:
'
':
ao seu redor[]
até o fimExperimente online .
fonte
Python 2 ,
48464437 bytes-2 bytes graças a Rod. -7 bytes graças ao Assistente de Trigo.
Experimente online!
fonte
lambda s:':'.join(map(repr,[*s,[]]))
oulambda s:':'.join(map(repr,s))+":[]"
.Befunge ,
2927 bytesExperimente online!
fonte
JavaScript (ES6), 36 bytes
Tente
fonte
Geléia ,
11 108 bytes-1 byte graças a Christian (remova a concatenação
;
e utilize impressão implícita)+0 bytes (corrigido para o caso limite de uma cadeia vazia - anteriormente o programa completo:
ŒṘ€j”:“:[]
)-2 graças a Erik, o Outgolfer (use
p
no lugar de;€
desde que”:
é efetivamente comprimento 1; useØ[
desde que se tornou abreviado para⁾[]
)Experimente online!
Um programa completo que imprime o resultado (como um link, ele retorna uma lista de listas de caracteres).
... mas existe uma maneira de economizar usando o STDIN?
Quão?
fonte
PHP , 41 bytes
Experimente online!
fonte
for(;~$c=$argn[$i++];)echo"'$c':"?>[]
.<?
com qual opção deve ser executada? Faça uma abordagem própria, eu diria que, para obter-R
bandeira. As tags podem ser fechadas mesmo em construções comoeval()
ecreate_function()
.Perl 5 , 22 bytes
19 bytes de código +
-p
sinalizador.Ou, pelo mesmo bytecount
s/./'$&':/g;s/$/[]/
,.Para a frente:
s/./'$&':/g
envolve cada caractere entre aspas e adicione um:
depois.$\
é impresso implicitamente após cada impressão, portanto, defina-o como[]
saída final[]
.Experimente online!
fonte
Java (OpenJDK 8) ,
868376 bytes-3 bytes graças a @KevinCruijssen
-7 bytes graças a @FlorianSchaetz
Experimente online!
fonte
;
não precisa ser contado para respostas lambda, o;
depois do}
não é necessário e o{
e}
pode ser removido em torno do loop for. E você poderia economizar mais 4 bytes em Java 10 mudando tanto oString
echar
avar
.brainfuck, 68 bytes
Experimente online!
fonte
Flak cerebral ,
135, 131 bytesExperimente online!
+1
byte para a-c
bandeira.Agradeço ao WheatWizard por remover NOOPs muito óbvios que eu tinha sem motivo XD.
fonte
ML padrão ,
5250 bytesGuardado 2 bytes graças a @Laikoni!
Experimente online!
String.translate
é um nome infelizmente muito tempo, mas foi de 5 bytes menor do que usandoconcat
,map
eexplode
.fonte
Cubix ,
3129 bytesA
também pode ser substituídoi
;tentando descobrir se há uma boa maneira de extrair outro byte ou dois disso.-2 bytes graças ao MickyT! Também superado por MickyT !Encaixa em um cubo 3x3x3:
Assista online!
Experimente online!
fonte
uo@[)o'U);!A?ro;o;o;os:'/u:''
Python 2 , 47 bytes
Experimente online!
fonte
[1:-1]
parte, portanto era mais longa do que totalmente humano. +1APL (Dyalog) ,
2119 bytesExperimente online!
'[]',⍨
os colchetes anexados a'.'
todo personagem⎕R
PCRE R substituído com'''&'':'
uma citação, a correspondência, uma citação e dois pontosfonte
sed ,
1918 bytes-1 byte graças à Jordânia
Experimente online!
fonte
PHP, 39 bytes
Corra como cano com
-F
.fonte
Convexo , 10 bytes
Experimente online!
fonte
Cubix , 27 bytes
Experimente online!
Assista correr
Uma variação ligeiramente diferente da resposta de Guiseppe . Isso coloca dois pontos e aspas na pilha. Em seguida, percorre a entrada, trocando e produzindo a pilha. Somente a entrada é descartada e os dois pontos e as aspas são mantidos.
Quando o final da entrada é alcançado, o IP se pergunta um pouco ao redor do cubo, adicionando e produzindo os colchetes. Existem alguns comandos redundantes no mix.
fonte