Dalam Haskell daftar notasi:
[a,b,c]
Ini hanya gula sintaksis untuk:
a:b:c:[]
Dan notasi string:
"abc"
Ini hanya gula sintaksis untuk:
['a','b','c']
Ini berarti bahwa string:
"abc"
Sama dengan:
'a':'b':'c':[]
Tugas
Diberikan string, Anda harus menampilkan seperti apa versi de-sintaks akan terlihat di Haskell.
Aturan
Anda akan menerima string dengan metode input yang valid, Anda harus menampilkan string yang diakhiri
:[]
dengan setiap karakter dari input yang dikelilingi oleh'
dan dipisahkan oleh:
. String kosong harus ditampilkan[]
.Anda dapat berasumsi bahwa Anda tidak akan menerima karakter apa pun yang memerlukan pelarian (mis.
'
, Baris baru, tab ...) dan input itu akan berada dalam rentang ascii yang dapat dicetakIni adalah kode-golf Anda harus meminimalkan jumlah byte jawaban Anda
Uji Kasus
"" -> []
"a" -> 'a':[]
"Hello, World" -> 'H':'e':'l':'l':'o':',':' ':'W':'o':'r':'l':'d':[]
"
dan'
secara sintaksis berbeda.Jawaban:
Haskell , 26 byte
Cobalah online!
Penjelasan:
Dalam notasi non-pointfree dan
concatMap
alih-alih menggunakan=<<
, ini menjadiDiberikan string
s
, kami memetakan setiap charc
ke string"'c':"
menggunakanshow
fungsi yang mengembalikan representasi string dari sebagian besar tipe Haskell. String-string itu digabungkan dan final[]
ditambahkan.Meskipun tidak diminta oleh tantangan, jawaban ini bahkan berfungsi dengan benar, karena
show
mengurusnya:f "'"
menghasilkan"'\\'':[]"
.sumber
(++'[':']':[]).((++':':[]).show=<<)
, bukan?Haskell,
332826 byteCobalah online!
fold
fungsi pointfree yang diberikan dari kanan ke string input dimulai dengan[]
. Fungsinya adalah: menunjukkan char sebagai haskell char, yaitu dikelilingi dengan'
dan digabungkan dengan hasilnya sejauh ini setelah meletakkan:
di depannya.Sunting: @ Ørjan Johansen menyimpan dua byte. Terima kasih!
sumber
(++'[':']':[]).(>>= \c->'\'':[]++[c]++'\'':':':[])
.:
untuk membangun daftar daripada++
, meskipun keduanya memiliki keanggunan sendiri.Python 3 , 32 byte
Cobalah online!
sumber
JavaScript ES6,
424031 byteGanti setiap karakter dengan
'<char>':
, lalu tambahkan[]
ke bagian akhirCobalah online!
sumber
$&
.Common Lisp,
5042 byteCobalah online!
Mengurangi berkat komentar @coredump, dengan menggunakan
read
alih-alih mendefinisikan fungsi.sumber
(format t"~{'~a':~}[]"(coerce(read)'list))
(beberapa pertanyaan lain adalah input dan output wrt yang lebih ketat, tetapi di sini ini baik-baik saja)V , 11 byte
Cobalah online!
Menggunakan regex untuk mengelilingi setiap karakter input dengan
'':
dan kemudianA
habiskan[]
sampai akhir.sumber
C,
555453 bytesumber
char *h
puts("[]");
Sebagai gantinya, Anda dapat melakukan output dengan baris baru tambahan untuk menyimpan beberapa byte.s(char*h){*h?printf("'%c':",*h++),s(h):puts("[]");}
Python 3 ,
413836 byte-2 bytes terima kasih kepada ovs
Cobalah online!
sumber
*map
ada ...input()
selama 20 menit terakhir (secara harfiah), ketika itu bisa saja lambda @. @"[]"
dengan[]
05AB1E ,
15 12 1110 byte-3 byte terima kasih kepada carusocomputing
-1 byte terima kasih kepada Adnan
-1 byte terima kasih kepada Erik the Outgolfer's genius idea
Cobalah online!
sumber
vy"'ÿ':"?}¯?
vy"'ÿ':"}¯J
akan bekerja untuk 11, tetapiJ
bergabung dengan array global, bukan seluruh tumpukan dalam situasi itu.R, 51 byte
sumber
scan(,'')
daripada fungsi.f<-
dari awal kode AndaPyth,
14108 byteCoba ini!
-2 byte terima kasih kepada @isaacg
Akhirnya, pyth pandai dalam sesuatu.
penjelasan
sumber
M
dan saya tidak tahu mengapa saya tidak menggunakannyaa
. Sekarang kita setidaknya 2 byte lebih pendek dari semua solusi lain di sini!Perl 6 , 19 byte
sumber
Retina, 12
2 tahap:
'
':
di sekitarnya[]
sampai akhirCobalah online .
sumber
Python 2 ,
48464437 byte-2 byte terima kasih kepada Rod. -7 byte berkat Wheat Wizard.
Cobalah online!
sumber
lambda s:':'.join(map(repr,[*s,[]]))
ataulambda s:':'.join(map(repr,s))+":[]"
.Befunge ,
2927 byteCobalah online!
sumber
JavaScript (ES6), 36 byte
Cobalah
sumber
Jelly ,
11 108 byte-1 byte terima kasih kepada Christian (hilangkan penggabungan
;
dan gunakan pencetakan implisit sebagai gantinya)0 byte (tetap untuk kasus tepi string kosong - sebelumnya program penuh:
ŒṘ€j”:“:[]
)-2 Terima kasih kepada Erik the Outgolfer (digunakan
p
sebagai pengganti;€
karena”:
secara efektif panjang 1; gunakanØ[
karena telah menjadi singkatan untuk⁾[]
)Cobalah online!
Program lengkap mencetak hasilnya (sebagai tautan, ia mengembalikan daftar daftar karakter).
... tetapi apakah ada cara untuk menghemat menggunakan STDIN?
Bagaimana?
sumber
PHP , 41 byte
Cobalah online!
sumber
for(;~$c=$argn[$i++];)echo"'$c':"?>[]
.<?
dengan opsi mana yang harus dijalankan? Buat pendekatan sendiri, saya akan mengatakan untuk mendapatkan upvotes dan titus telah melakukan hal yang sama untuk saat ini-R
bendera. Tag dapat ditutup bahkan dalam konstruksi sepertieval()
dancreate_function()
.Perl 5 , 22 byte
19 byte kode +
-p
bendera.Atau, untuk bytecount yang sama,
s/./'$&':/g;s/$/[]/
.Cukup lurus ke depan:
s/./'$&':/g
mengelilingi setiap karakter dengan tanda kutip dan tambahkan:
setelah.$\
dicetak secara implisit setelah setiap cetak, jadi mengaturnya untuk[]
menampilkan hasil akhir[]
.Cobalah online!
sumber
Java (OpenJDK 8) ,
868376 byte-3 byte terima kasih kepada @KevinCruijssen
-7 byte terima kasih kepada @FlorianSchaetz
Cobalah online!
sumber
;
tidak harus dihitung untuk jawaban lambda,;
setelah}
itu tidak diperlukan sama sekali, dan{
dan}
dapat dihapus di sekitar for-loop. Dan Anda bisa menghemat 4 byte lagi di Jawa 10 mengubah baikString
danchar
untukvar
.brainfuck, 68 byte
Cobalah online!
sumber
Brain-Flak ,
135, 131 byteCobalah online!
+1
byte untuk-c
bendera.Terima kasih kepada WheatWizard karena telah menghapus NOOP yang sangat jelas yang saya miliki tanpa alasan XD.
sumber
Standar ML ,
5250 byteDisimpan 2 byte berkat @Laikoni!
Cobalah online!
String.translate
adalah nama sayangnya panjang, tapi 5 byte lebih pendek daripada menggunakanconcat
,map
danexplode
.sumber
Cubix ,
3129 byteA
juga bisa digantii
;mencoba mencari tahu apakah ada cara yang baik untuk memeras satu atau dua byte dari ini.-2 byte terima kasih kepada MickyT! Juga kalah oleh MickyT !Cocok pada kubus 3x3x3:
Tonton secara online!
Cobalah online!
sumber
uo@[)o'U);!A?ro;o;o;os:'/u:''
Python 2 , 47 byte
Cobalah online!
sumber
[1:-1]
bagian itu jadi itu lebih lama daripada total manusia. +1APL (Dyalog) ,
2119 byteCobalah online!
'[]',⍨
tanda kurung ditambahkan'.'
setiap karakter⎕R
PCRE R di- eplaced dengan'''&'':'
kutipan, korek api, kutipan dan titik duasumber
sed ,
1918 byteTerima kasih -1 byte ke Jordan
Cobalah online!
sumber
PHP, 39 byte
Jalankan sebagai pipa dengan
-F
.sumber
Cembung , 10 byte
Cobalah online!
sumber
Cubix , 27 byte
Cobalah online!
Lihat saja
Variasi yang sedikit berbeda dari jawaban Guiseppe . Ini menempatkan titik dua dan mengutip pada tumpukan. Kemudian loop melalui input, menukar dan mengeluarkan stack. Hanya input yang dihapus dan titik dua dan kutipan dipertahankan.
Setelah akhir input tercapai, IP akan bertanya-tanya di sekitar kubus sedikit, menambah dan mengeluarkan tanda kurung. Ada beberapa perintah yang berlebihan dalam campuran.
sumber