W Haskell notacja listy:
[a,b,c]
Jest tylko cukrem syntaktycznym dla:
a:b:c:[]
A notacja ciągów:
"abc"
Jest tylko cukrem syntaktycznym dla:
['a','b','c']
Oznacza to, że ciąg:
"abc"
Jest taki sam jak:
'a':'b':'c':[]
Zadanie
Biorąc pod uwagę ciąg znaków, powinieneś wypisać, jak wyglądałaby wersja bez składni w Haskell.
Zasady
Otrzymasz ciąg dowolną prawidłową metodą wprowadzania, powinieneś wypisać ciąg zakończony
:[]
każdym znakiem z wejścia otoczonego'
i oddzielonego:
. Pusty ciąg powinien zostać wyprowadzony[]
.Możesz założyć, że nie otrzymasz żadnych znaków wymagających ucieczki (np. Znaki
'
nowej linii, tabulatory ...) i że dane wejściowe będą w drukowanym zakresie asciiJest to gra w golfa kodowego, której celem powinno być zminimalizowanie liczby bajtów odpowiedzi
Przypadki testowe
"" -> []
"a" -> 'a':[]
"Hello, World" -> 'H':'e':'l':'l':'o':',':' ':'W':'o':'r':'l':'d':[]
"
i'
różnią się składniowo.Odpowiedzi:
Haskell , 26 bajtów
Wypróbuj online!
Wyjaśnienie:
W notacji bez point-point i używaniu
concatMap
zamiast=<<
staje się toBiorąc pod uwagę ciąg
s
, odwzorowujemy każdy znakc
na ciąg"'c':"
przy użyciushow
funkcji, która zwraca ciąg reprezentujący większość typów Haskell. Te ciągi są łączone i[]
dołączany jest finał .Chociaż nie
show
wymaga tego wyzwanie, ta odpowiedź działa nawet z właściwym ucieczką, ponieważ dba o to:f "'"
ustępuje"'\\'':[]"
.źródło
(++'[':']':[]).((++':':[]).show=<<)
, nie?Haskell,
332826 bajtówWypróbuj online!
fold
dana funkcja pointfree od prawej do ciągu wejściowego rozpoczynającego się od[]
. Ta funkcja to: pokaż char jako znak Haskella, tj. Otoczony'
i połącz z wynikiem do tej pory po umieszczeniu:
przed nim znaku .Edycja: @ Ørjan Johansen zapisał dwa bajty. Dzięki!
źródło
(++'[':']':[]).(>>= \c->'\'':[]++[c]++'\'':':':[])
.:
do budowania listy zamiast++
, choć oba mają swoją elegancję.Python 3 , 32 bajty
Wypróbuj online!
źródło
JavaScript ES6,
424031 bajtówZamienia każdy znak na
'<char>':
, a następnie dodaje[]
do końcaWypróbuj online!
źródło
$&
.Common Lisp,
5042 bajtówWypróbuj online!
Zmniejszone dzięki komentarzowi @coredump, dzięki użyciu
read
zamiast definiowania funkcji.źródło
(format t"~{'~a':~}[]"(coerce(read)'list))
(niektóre inne pytania dotyczą bardziej rygorystycznych danych wejściowych i wyjściowych, ale tutaj jest w porządku)V , 11 bajtów
Wypróbuj online!
Używa wyrażenia regularnego, aby otoczyć każdy znak wejściowy,
'':
a następnieA
przesuwa[]
się do końca.źródło
C,
555453 bajtówźródło
char *h
puts("[]");
wyjście z końcowym znakiem nowej linii, aby zapisać niektóre bajty.s(char*h){*h?printf("'%c':",*h++),s(h):puts("[]");}
Python 3 ,
413836 bajtów-2 bajty dzięki ovs
Wypróbuj online!
źródło
*map
istnieje ...input()
przez ostatnie 20 minut (dosłownie), kiedy może to być po prostu lambda @. @"[]"
z[]
05AB1E ,
15 12 1110 bajtów-3 bajty dzięki carusocomputing
-1 bajt dzięki Adnan
-1 bajt dzięki genialnemu pomysłowi Erika Outgolfera
Wypróbuj online!
źródło
vy"'ÿ':"?}¯?
vy"'ÿ':"}¯J
że zadziała dla 11, aleJ
dołącza do globalnej tablicy, a nie do całego stosu w tej sytuacji.R, 51 bajtów
źródło
scan(,'')
zamiast funkcji.f<-
od początku koduPyth,
14108 bajtówSpróbuj tego!
-2 bajty dzięki @isaacg
Wreszcie pyth jest w czymś dobry.
wyjaśnienie
źródło
M
i nie wiem, dlaczego nie użyłema
. Teraz jesteśmy co najmniej 2 bajty krótsze niż wszystkie inne rozwiązania tutaj!Perl 6 , 19 bajtów
źródło
Siatkówka, 12
2 etapy:
'
':
wokół niego postać[]
do końcaWypróbuj online .
źródło
Python 2 ,
48464437 bajtów-2 bajty dzięki Rod. -7 bajtów dzięki Kreatorowi pszenicy.
Wypróbuj online!
źródło
lambda s:':'.join(map(repr,[*s,[]]))
lublambda s:':'.join(map(repr,s))+":[]"
.Befunge ,
2927 bajtówWypróbuj online!
źródło
JavaScript (ES6), 36 bajtów
Spróbuj
źródło
Galaretka ,
11 108 bajtów-1 bajt dzięki Christianowi (usuń konkatenację
;
i zamiast tego użyj drukowania niejawnego)+0 bajtów (naprawiono dla przypadku krawędzi pustego łańcucha - wcześniej pełny program
ŒṘ€j”:“:[]
:)-2 dzięki Erikowi Outgolfer (użycie
p
zamiast;€
od”:
jest efektywnie długością 1; użycie,Ø[
ponieważ stało się krótsze⁾[]
)Wypróbuj online!
Pełny program wypisujący wynik (jako link zwraca listę list znaków).
... ale czy istnieje sposób na oszczędzanie przy użyciu STDIN?
W jaki sposób?
źródło
PHP , 41 bajtów
Wypróbuj online!
źródło
for(;~$c=$argn[$i++];)echo"'$c':"?>[]
.<?
opcji, którą opcję należy uruchomić? Stwórz własne podejście, które chciałbym uzyskać, aby zyskać poparcie i Titus zrobił w międzyczasie coś podobnego-R
flagą. Tagi można zamykać nawet w konstrukcjach takich jakeval()
icreate_function()
.Perl 5 , 22 bajtów
19 bajtów kodu +
-p
flaga.Albo, dla tego samego bytecount,
s/./'$&':/g;s/$/[]/
.Całkiem prosto:
s/./'$&':/g
otacza każdą postać cudzysłowem i dodaje:
po niej.$\
jest niejawnie drukowany po każdym wydruku, więc ustawienie go na wydruk[]
końcowy[]
.Wypróbuj online!
źródło
Java (OpenJDK 8) ,
868376 bajtów-3 bajty dzięki @KevinCruijssen
-7 bajtów dzięki @FlorianSchaetz
Wypróbuj online!
źródło
;
nie musi być liczony dla odpowiedzi lambda,;
po tym, co}
wcale nie jest konieczne, a{
i}
można usunąć wokół pętli for. I można zaoszczędzić kolejne 4 bajty w Javie 10 zmieniających się zarównoString
ichar
dovar
.pieprzenie mózgu, 68 bajtów
Wypróbuj online!
źródło
Brain-Flak ,
135, 131 bajtówWypróbuj online!
+1
bajt dla-c
flagi.Dzięki WheatWizard za usunięcie bardzo oczywistych NOOP, które miałem bez powodu XD.
źródło
Standardowy ML ,
5250 bajtówZaoszczędź 2 bajty dzięki @Laikoni!
Wypróbuj online!
String.translate
Jest to niestety długa nazwa, ale był krótszy niż 5 bajtów użyciuconcat
,map
orazexplode
.źródło
Cubix ,
3129 bajtówA
może być również zastąpionyi
;próbując dowiedzieć się, czy istnieje dobry sposób, aby wycisnąć z tego kolejny bajt lub dwa.-2 bajty dzięki MickyT! Rozgrywany również przez MickyT !Pasuje do kostki 3x3x3:
Obejrzyj online!
Wypróbuj online!
źródło
uo@[)o'U);!A?ro;o;o;os:'/u:''
Python 2 , 47 bajtów
Wypróbuj online!
źródło
[1:-1]
części, więc było dłużej niż ludzie. +1APL (Dyalog) ,
2119 bajtówWypróbuj online!
'[]',⍨
dołączono nawiasy'.'
każda postać⎕R
PCRE R zastąpiony'''&'':'
cytat, dopasowanie, cytat i dwukropekźródło
sed ,
1918 bajtów-1 bajt dzięki Jordanowi
Wypróbuj online!
źródło
PHP, 39 bajtów
Uruchom jako potok z
-F
.źródło
Wypukły , 10 bajtów
Wypróbuj online!
źródło
Cubix , 27 bajtów
Wypróbuj online!
Zobacz, jak biegnie
Nieco odmienna od odpowiedzi Guiseppe . To umieszcza dwukropek i cytat na stosie. Następnie zapętla dane wejściowe, zamieniając i wysyłając stos. Tylko dane wejściowe są usuwane, a dwukropek i cytat zostają zachowane.
Po osiągnięciu końca danych wejściowych IP zastanawia się nieco wokół kostki, dodając i wysyłając nawiasy. W miksie znajduje się kilka zbędnych poleceń.
źródło