In Haskell die Listennotation:
[a,b,c]
Ist nur syntaktischer Zucker für:
a:b:c:[]
Und die Zeichenfolgennotation:
"abc"
Ist nur syntaktischer Zucker für:
['a','b','c']
Dies bedeutet, dass die Zeichenfolge:
"abc"
Ist das gleiche wie:
'a':'b':'c':[]
Aufgabe
Wenn Sie eine Zeichenfolge angeben, sollten Sie ausgeben, wie die Version ohne Syntax in Haskell aussehen würde.
Regeln
Sie erhalten eine Zeichenfolge mit jeder gültigen Eingabemethode. Sie sollten eine Zeichenfolge ausgeben, die
:[]
mit jedem Zeichen der Eingabe endet, die von umgeben'
und durch getrennt ist:
. Die leere Zeichenfolge sollte ausgegeben werden[]
.Sie können davon ausgehen, dass Sie keine zu
'
maskierenden Zeichen (z. B. Zeilenumbrüche, Tabulatoren ...) erhalten und die Eingabe im druckbaren ASCII-Bereich liegtDies ist Code-Golf, mit dem Sie versuchen sollten, die Anzahl der Bytes Ihrer Antwort zu minimieren
Testfälle
"" -> []
"a" -> 'a':[]
"Hello, World" -> 'H':'e':'l':'l':'o':',':' ':'W':'o':'r':'l':'d':[]
"
und'
sind syntaktisch unterschiedlich.Antworten:
Haskell , 26 Bytes
Probieren Sie es online!
Erläuterung:
In nicht-pointfree Notation und
concatMap
anstelle von using=<<
wird diesBei einer Zeichenfolge
s
, bilden wir jedes Zeichenc
in einen String"'c':"
mit dershow
Funktion , die eine String - Darstellung der meisten Haskell - Typen zurückgibt. Diese Zeichenfolgen werden verkettet und ein Finale[]
wird angehängt.Obwohl von der Herausforderung nicht angefordert, funktioniert diese Antwort sogar mit korrekter Flucht, da sie
show
sich darum kümmert:f "'"
Erträge"'\\'':[]"
.quelle
(++'[':']':[]).((++':':[]).show=<<)
, nein?Haskell,
332826 BytesProbieren Sie es online!
fold
die angegebene pointfree Funktion von rechts in die Eingabezeichenfolge beginnend mit[]
. Die Funktion lautet: show char as a Haskell char, dh umgeben von'
und verkettet mit dem Ergebnis, nachdem ein vorangestellt wurde:
.Edit: @ Ørjan Johansen sparte zwei Bytes. Vielen Dank!
quelle
(++'[':']':[]).(>>= \c->'\'':[]++[c]++'\'':':':[])
.:
zum Erstellen der Liste verwendet wird und nicht++
, obwohl beide ihre eigene Eleganz haben.Python 3 , 32 Bytes
Probieren Sie es online!
quelle
JavaScript ES6,
424031 BytesErsetzt jedes Zeichen durch
'<char>':
und fügt[]
es am Ende hinzuProbieren Sie es online!
quelle
$&
.Common Lisp,
5042 BytesProbieren Sie es online!
Reduziert durch den Kommentar von @coredump, indem
read
stattdessen eine Funktion definiert wird.quelle
(format t"~{'~a':~}[]"(coerce(read)'list))
aufrufst : (einige andere Fragen sind strenger für Ein- und Ausgaben, aber hier ist das in Ordnung)V , 11 Bytes
Probieren Sie es online!
Verwendet einen regulären Ausdruck , um jedes eingegebene Zeichen mit
'':
und bis zum Ende zu umgeben.A
[]
quelle
C
555453 Bytesquelle
char *h
puts("[]");
stattdessen eine Ausgabe mit einem nachgestellten Zeilenumbruch durchführen, um einige Bytes zu sparen.s(char*h){*h?printf("'%c':",*h++),s(h):puts("[]");}
Python 3 ,
413836 Bytes-2 Bytes dank ovs
Probieren Sie es online!
quelle
*map
existiert ...input()
den letzten 20 Minuten (im wahrsten Sinne des Wortes) von der Leere verwirrt , als es nur ein Lambda sein konnte."[]"
mit[]
05AB1E ,
15 12 1110 Bytes-3 Bytes dank carusocomputing
-1 Bytes dank Adnan
-1 Bytes dank der genialen Idee von Erik the Outgolfer
Probieren Sie es online!
quelle
vy"'ÿ':"?}¯?
vy"'ÿ':"}¯J
würde für 11 funktionieren, aberJ
in dieser Situation tritt es dem globalen Array bei, nicht dem gesamten Stack.R, 51 Bytes
quelle
scan(,'')
einer Funktion.f<-
vom Anfang Ihres CodesPyth,
14108 BytesVersuche dies!
-2 Bytes dank @isaacg
Schließlich ist Pyth gut in etwas.
Erläuterung
quelle
M
und ich weiß nicht, warum ich es nicht benutzt habea
. Jetzt sind wir mindestens 2 Bytes kürzer als alle anderen Lösungen hier!Perl 6 , 19 Bytes
quelle
Retina, 12
2 Stufen:
'
':
um[]
am ende hinzufügenProbieren Sie es online aus .
quelle
Python 2 ,
48464437 Bytes-2 Bytes dank Rod. -7 Bytes dank Weizen-Assistent.
Probieren Sie es online!
quelle
lambda s:':'.join(map(repr,[*s,[]]))
oderlambda s:':'.join(map(repr,s))+":[]"
.Befunge ,
2927 BytesProbieren Sie es online!
quelle
JavaScript (ES6), 36 Byte
Versuch es
quelle
Jelly ,
11 108 Bytes-1 Byte dank Christian (Verkettung entfernen
;
und stattdessen implizites Drucken verwenden)+0 Bytes (für die Kanten bei leeren String fixiert - vorher das vollständige Programm:
ŒṘ€j”:“:[]
)-2 Dank an Erik den Outgolfer (Verwendung
p
anstelle von;€
since”:
ist effektiv Länge 1; VerwendungØ[
seitdem es zu einer Abkürzung geworden ist⁾[]
)Probieren Sie es online!
Ein vollständiges Programm, das das Ergebnis druckt (als Link wird eine Liste mit Zeichenlisten zurückgegeben).
... aber gibt es eine Möglichkeit, mit STDIN zu sparen?
Wie?
quelle
PHP , 41 Bytes
Probieren Sie es online!
quelle
for(;~$c=$argn[$i++];)echo"'$c':"?>[]
.<?
mit welcher option muss es laufen? Machen Sie einen eigenen Ansatz Ich würde sagen, um Gegenstimmen zu bekommen und Titus hat in der Zwischenzeit etwas Ähnliches gemacht-R
Flagge. Tags können auch in Konstruktionen wieeval()
und geschlossen werdencreate_function()
.Perl 5 , 22 Bytes
19 Byte Code +
-p
Flag.Oder für das gleiche bytecount
s/./'$&':/g;s/$/[]/
.Ganz einfach:
s/./'$&':/g
Umgibt jedes Zeichen mit Anführungszeichen und fügt ein Nachher hinzu:
.$\
wird implizit nach jedem Druck gedruckt, setzen Sie es also so, dass es[]
das Finale ausgibt[]
.Probieren Sie es online!
quelle
Java (OpenJDK 8) ,
868376 Bytes-3 Bytes dank @KevinCruijssen
-7 Bytes dank @FlorianSchaetz
Probieren Sie es online!
quelle
;
nicht für Lambda - Antworten gezählt werden muss, die;
nach dem}
überhaupt nicht notwendig, und das{
und}
kann rund um die for-Schleife entfernt werden. Und Sie könnten in Java 10 4 weitere Bytes einsparen, indem Sie sowohl dasString
als auch daschar
in ändernvar
.Brainfuck, 68 Bytes
Probieren Sie es online!
quelle
Brain-Flak ,
135, 131 BytesProbieren Sie es online!
+1
Byte für die-c
Flagge.Vielen Dank an WheatWizard für das Entfernen von sehr offensichtlichen NOOPs, die ich ohne Grund XD hatte.
quelle
Standard ML ,
5250 Bytes2 Bytes gespart dank @Laikoni!
Probieren Sie es online!
String.translate
ist ein leider langer Name, aber es war 5 Byte kürzer als die Verwendung vonconcat
,map
undexplode
.quelle
Cubix ,
3129 BytesA
kann auch ersetzt werdeni
;versuchen herauszufinden, ob es eine gute Möglichkeit gibt, ein oder zwei weitere Bytes daraus herauszuholen.-2 Bytes dank MickyT! Auch von MickyT überfordert !Passt auf einen 3x3x3 Würfel:
Schau es dir online an!
Probieren Sie es online!
quelle
uo@[)o'U);!A?ro;o;o;os:'/u:''
Python 2 , 47 Bytes
Probieren Sie es online!
quelle
[1:-1]
Teil nicht herausgefunden, so dass er länger als total menschlich war. +1APL (Dyalog) ,
2119 BytesProbieren Sie es online!
'[]',⍨
die Klammern hingen an'.'
jeder Charakter⎕R
PCRE R ersetzt mit'''&'':'
ein Zitat, das Streichholz, ein Zitat und ein Doppelpunktquelle
sed ,
1918 bytes-1 Byte Danke an Jordan
Probieren Sie es online!
quelle
PHP, 39 Bytes
Als Rohr mit laufen lassen
-F
.quelle
Konvex , 10 Bytes
Probieren Sie es online!
quelle
Cubix , 27 Bytes
Probieren Sie es online!
Schau es dir an
Eine etwas andere Variante als Guiseppes Antwort . Dadurch werden der Doppelpunkt und das Anführungszeichen auf den Stapel gelegt. Dann durchläuft es die Eingabe, tauscht den Stapel aus und gibt ihn aus. Nur die Eingabe wird verworfen und der Doppelpunkt und das Anführungszeichen bleiben erhalten.
Sobald das Ende der Eingabe erreicht ist, wandern die IP-Wunder ein wenig um den Würfel und fügen die Klammern hinzu und geben sie aus. Es gibt ein paar redundante Befehle im Mix.
quelle