En Haskell la notation de liste:
[a,b,c]
Est-ce juste du sucre syntaxique pour:
a:b:c:[]
Et la notation de chaîne:
"abc"
Est-ce juste du sucre syntaxique pour:
['a','b','c']
Cela signifie que la chaîne:
"abc"
Est le même que:
'a':'b':'c':[]
Tâche
Avec une chaîne de caractères, vous devriez indiquer à quoi ressemblerait la version sans syntaxe dans Haskell.
Règles
Vous recevrez une chaîne par n'importe quelle méthode d'entrée valide. Vous devez générer une chaîne se terminant
:[]
par chaque caractère de l'entrée entouré'
et séparé par:
. La chaîne vide devrait sortir[]
.Vous pouvez supposer que vous ne recevrez pas de caractères nécessitant une évasion (par exemple
'
, des nouvelles lignes, des tabulations ...) et que la saisie sera dans la plage imprimable asciiCeci est le code-golf que vous devriez viser à minimiser le nombre d'octets de votre réponse
Cas de test
"" -> []
"a" -> 'a':[]
"Hello, World" -> 'H':'e':'l':'l':'o':',':' ':'W':'o':'r':'l':'d':[]
"
et'
sont syntaxiquement différents.Réponses:
Haskell , 26 octets
Essayez-le en ligne!
Explication:
En notation non-pointfree et en utilisant
concatMap
au lieu de=<<
, cela devientÉtant donné une chaîne
s
, nous mappons chaque caractèrec
à une chaîne en"'c':"
utilisant lashow
fonction qui retourne une représentation sous forme de chaîne de la plupart des types Haskell. Ces chaînes sont concaténées et une finale[]
est ajoutée.Bien que cela ne soit pas demandé par le défi, cette réponse fonctionne même avec une évasion correcte, car elle en
show
prend soin: lesf "'"
rendements"'\\'':[]"
.la source
(++'[':']':[]).((++':':[]).show=<<)
, non?Haskell,
332826 octetsEssayez-le en ligne!
fold
la fonction sans point donnée de la droite dans la chaîne de saisie commençant par[]
. La fonction est la suivante: affiche char comme un caractère Haskell, c’est-à-dire entouré'
et concaténé avec le résultat jusqu’à présent après avoir placé un:
devant.Edit: @ Ørjan Johansen a sauvegardé deux octets. Merci!
la source
(++'[':']':[]).(>>= \c->'\'':[]++[c]++'\'':':':[])
.:
de la liste plutôt que de celle-ci++
, bien que les deux aient leur propre élégance.Python 3 , 32 octets
Essayez-le en ligne!
la source
JavaScript ES6,
424031 octetsRemplace chaque caractère par
'<char>':
, puis ajoute[]
à la finEssayez-le en ligne!
la source
$&
.Common Lisp,
5042 octetsEssayez-le en ligne!
Réduit grâce au commentaire de @coredump, en utilisant
read
au lieu de définir une fonction.la source
(format t"~{'~a':~}[]"(coerce(read)'list))
(d'autres questions sont plus strictes entrées et sorties WRT, mais ici cela est bien beau)V , 11 octets
Essayez-le en ligne!
Utilise une expression rationnelle pour entourer chaque caractère saisi,
'':
puis seA
termine[]
à la fin.la source
C,
555453 octetsla source
char *h
puts("[]");
une sortie avec un retour à la ligne de fin pour sauvegarder quelques octets.s(char*h){*h?printf("'%c':",*h++),s(h):puts("[]");}
Python 3 ,
413836 octets-2 octets grâce aux ovs
Essayez-le en ligne!
la source
*map
existe ...input()
pendant les 20 dernières minutes (littéralement), alors qu'il pourrait s'agir simplement d'un lambda @. @"[]"
par[]
05AB1E ,
15 12 1110 octets-3 octets grâce à carusocomputing
-1 octet grâce à Adnan
-1 octet grâce à l'idée géniale d'Erik the Outgolfer
Essayez-le en ligne!
la source
vy"'ÿ':"?}¯?
vy"'ÿ':"}¯J
cela fonctionnerait pour 11, maisJ
rejoint le tableau global, pas toute la pile dans cette situation.R, 51 octets
la source
scan(,'')
une fonction.f<-
le début du codePyth,
14108 octetsEssaye ça!
-2 octets grâce à @isaacg
Enfin, pyth est bon à quelque chose.
explication
la source
M
et je ne sais pas pourquoi je n'ai pas utiliséa
. Maintenant, nous avons au moins 2 octets plus courts que toutes les autres solutions ici!Perl 6 , 19 octets
la source
Rétine, 12
2 étapes:
'
':
autour[]
à la finEssayez-le en ligne .
la source
Python 2 ,
48464437 octets-2 octets grâce à Rod. -7 octets grâce à Wheat Wizard.
Essayez-le en ligne!
la source
lambda s:':'.join(map(repr,[*s,[]]))
oulambda s:':'.join(map(repr,s))+":[]"
.Befunge ,
29 à27 octetsEssayez-le en ligne!
la source
JavaScript (ES6), 36 octets
L'essayer
la source
Jelly ,
11 108 octets-1 octet grâce à Christian (supprime la concaténation
;
et utilise plutôt l'impression implicite)+0 octets (fixée au boîtier de bord d'une chaîne vide - préalablement le programme complet:
ŒṘ€j”:“:[]
)-2 grâce à Erik the Outgolfer (utiliser
p
à la place de;€
depuis”:
est en réalité longueur 1; utiliserØ[
car il est devenu raccourci pour⁾[]
)Essayez-le en ligne!
Un programme complet imprimant le résultat (sous forme de lien, il renvoie une liste de listes de caractères).
... mais existe-t-il un moyen de sauvegarder en utilisant STDIN?
Comment?
la source
PHP , 41 octets
Essayez-le en ligne!
la source
for(;~$c=$argn[$i++];)echo"'$c':"?>[]
.<?
avec quelle option doit-il être exécuté? Faites une approche personnelle, je dirais pour obtenir des votes positifs et titus ont fait quelque chose de similaire dans l'intervalle-R
drapeau. Les tags peuvent être fermés même dans des constructions telles queeval()
etcreate_function()
.Perl 5 , 22 octets
19 octets de code +
-p
drapeau.Ou, pour le même bytecount,
s/./'$&':/g;s/$/[]/
.Assez simple:
s/./'$&':/g
entoure chaque caractère avec des guillemets et ajoute un:
après.$\
est implicitement imprimé après chaque impression, il faut donc le paramétrer pour[]
produire la finale[]
.Essayez-le en ligne!
la source
Java (OpenJDK 8) ,
868376 octets-3 octets grâce à @KevinCruijssen
-7 octets grâce à @FlorianSchaetz
Essayez-le en ligne!
la source
;
ne doit pas être comptée pour les réponses lambda,;
après le}
n'est pas nécessaire du tout, et le{
et}
peut être supprimé autour de la boucle for. Et vous pourriez économiser 4 octets supplémentaires dans Java 10 en changeant lesString
etchar
envar
.brainfuck, 68 octets
Essayez-le en ligne!
la source
Brain-Flak ,
135, 131 octetsEssayez-le en ligne!
+1
octet pour le-c
drapeau.Merci à WheatWizard d’avoir supprimé les NOOP très évidents que j’avais sans raison XD.
la source
ML standard ,
5250 octets2 octets sauvés grâce à @Laikoni!
Essayez-le en ligne!
String.translate
est un nom malheureusement long, mais était 5 octets plus court que d' utiliserconcat
,map
etexplode
.la source
Cubix ,
3129 octetsA
peut également être substitué ài
;essayer de savoir s’il existe un bon moyen de presser un ou plusieurs octets supplémentaires.-2 octets grâce à MickyT! Également surpassé par MickyT !Convient à un cube 3x3x3:
Regardez-le en ligne!
Essayez-le en ligne!
la source
uo@[)o'U);!A?ro;o;o;os:'/u:''
Python 2 , 47 octets
Essayez-le en ligne!
la source
[1:-1]
compris la partie, donc c'était plus long que totalement humain. +1APL (Dyalog) ,
2119 octetsEssayez-le en ligne!
'[]',⍨
les crochets annexés à'.'
chaque personnage⎕R
PCRE R eplaced avec'''&'':'
une citation, le match, une citation et un colonla source
sed ,
1918 octets-1 octet grâce à Jordan
Essayez-le en ligne!
la source
PHP, 39 octets
Courez comme un tuyau avec
-F
.la source
Convexe , 10 octets
Essayez-le en ligne!
la source
Cubix , 27 octets
Essayez-le en ligne!
Regarde le courir
Une variation légèrement différente de la réponse de Guiseppe . Cela met le côlon et la citation sur la pile. Ensuite, il boucle l’entrée, permute et sort la pile. Seules les entrées sont supprimées et les deux points et la citation sont conservés.
Une fois que la fin de la saisie est atteinte, l’adresse IP s’interroge un peu autour du cube, ajoutant et affichant les crochets. Il y a quelques commandes redondantes dans le mélange.
la source