Instruksi
Barry adalah pengembang backend tidak begitu baik yang bertanggung jawab atas API kecil yang harus memberi Anda informasi tentang pembelian yang dilakukan di toko klien. Namun, dia belum melakukan pekerjaan dengan baik dan bos Anda memberitahu Anda untuk memperbaikinya sisi klien. Idealnya Anda harus menerima nilai dipisahkan koma seperti 927,2,45,90
yang sesuai dengan sesuatu seperti item_id
, item_amount
, unit_price
,total
Dalam teka-teki pertama ini kita hanya peduli item_id
dan item_amount
tetapi kita membutuhkan bidang lain untuk menyajikan masalahnya. Barry kadang-kadang mendapat hal-hal yang bercampur dan kembali suara sebagai bagian dari output, ia juga mendapat urutan yang salah, kembali noise
, noise
, unit_price
, total
, item_id
, item_amount
.
Tugas Anda
Anda perlu menyimpan dalam peta (atau struktur serupa) pasangan item_id
dan item_amount
terlepas dari apakah Barry mengembalikannya dengan benar atau tidak dan mencetak setiap elemen dalam baris baru dengan jumlah karakter paling sedikit. (Menyimpan tidak wajib, kami hanya peduli dengan hasilnya)
Input sampel (format campuran benar dan berantakan)
103,2,50,100
106,1,900,900
459,40,150,300,67,2
4,20,30,6000
Dengan kata lain input akan berada di a,b,x,x
atau di x,x,x,x,a,b
tempat yang kita pedulikan a
& b
. Anda perlu memberikan kode dengan asumsi kita memiliki variabel yang dipanggil G
(atau nama lain) dengan semua baris csv.
Output sampel
103,2
106,1
67,2 //This one was messy
4,20
Toleransi
Ada batas tertentu untuk toleransi dalam hal jawaban. Jawaban dalam format yang serupa tetapi mematuhi nilai yang benar, juga akan diterima. Format suka [a,b]
, (a,b)
atau {a,b}
valid, tetapi a,b
lebih disukai.
Meskipun puzzle pertama memiliki penerimaan yang beragam karena fakta bahwa itu mudah dan cepat untuk dipecahkan, saya juga merasa bahwa beberapa orang juga menyukainya. Jadi saya akan terus membuat quickgolfs untuk saat ini
x,x,x,x
dan dix,x,x,x,x,x
manax
menunjukkan angka?Jawaban:
Pyth, 10 byte
Cobalah secara online: Pyth Compiler / Executor
(4 karakter pertama
=G.Q
membaca semua data dan menyimpannya diG
)Penjelasan
sumber
Perl, 24
Contoh:
sumber
Python 3,
123767262 byteSaya pendatang baru, harus mulai di suatu tempat ...
Dengan saran xnor dan DLosc (62 byte):
sumber
for
bisa semua berada pada baris yang sama dengan Python, selama tidak ada pernyataan blok lain di dalam tubuh.for
untuk menghindari indentasi. Persyaratan[0,4][...]
dapat disingkat4*(...)
, menggunakan fakta bahwa bools sama dengan 0/1. Selain itu, jika Anda menulisd[x:x+2]
sebagaid[x:][:2]
, meskipun satu karakter lebih panjang, Anda dapat menghindari menyimpan ekspresi untukx
variabel.Sed, 32 byte
Ini menghapus semuanya hingga koma ke-4 jika ada. Kemudian menghapus semuanya dari koma ke-2 (yang sebelumnya mungkin ke-6).
Dan saya bahkan berhasil membenarkan!
sumber
Javascript, 44 byte
Mengasumsikan input dalam variabel
G
.Sunting: Saya baru sadar, ini sangat mirip dengan solusi perl nutki.
Demo cuplikan:
sumber
Scala, 68 byte
- Tuan tulang
Scala,
4670 byteSunting: Cetak hasilnya
Demo
sumber
G.map{k=>val x=k.split(",");println((x++x).slice(4,6).mkString(","))}
G.map(_.split(",")).map(x=>println((x++x).slice(4,6).mkString(",")))
CJam,
181514 byteCobalah online di penerjemah CJam .
Bagaimana itu bekerja
sumber
Shell POSIX, 30 byte
Dengan asumsi POSIX
sed
dancut
hadir:Gandakan baris, biarkan data yang menarik siap diekstraksi dari bidang 5 dan 6.
sumber
Javascript,
1171129995847671 byteJS Fiddle
sumber
;
dengan,
di badan loop dan karena itu menghapus kawat gigi{
dan}
for of
Anda dapat menyimpan 3 byte. Ini berfungsi di semua browser modern.for(r of q=G.split('\n'))s=r.split(','),console.log(s[t=s[4]?4:0],s[t+1])
Pip , 12 + 1 = 13 byte
Menggunakan
-l
bendera, yang memberikan output sebagai daftar angka yang dipisahkan oleh spasi pada setiap baris. *Penjelasan:
g
. Karenag
biasanya diinisialisasi dari argumen baris perintah, Anda juga dapat memasukkan input untuk hasil yang sama.^',
membagi (setiap string dalam) daftar pada koma.M
memetakan fungsi ke setiap elemen dalam hasil._@[4 5]
mendefinisikan fungsi lambda. Argumen untuk fungsi diwakili oleh_
;@[4 5]
mengembalikan daftar elemen ke-4 dan ke-5. Jika daftar memiliki enam elemen, ini akan menjadi dua elemen terakhir. Jika memiliki empat, indeks membungkus, dan hasilnya adalah dua yang pertama. (Misalnya"abcd"@4 == "abcd"@0 == "a"
.)[[103 2] [106 1] [67 2]]
, yang dicetak secara otomatis di akhir program. The-l
bendera bergabung masing-masing sub-daftar pada ruang dan kemudian semuanya pada baris baru, sehingga hasilnya adalah sebagai berikut:* Saat ini. Saya mungkin mengubah perilaku ini, tetapi saya masih berencana untuk memiliki beberapa bendera yang melakukan hal yang sama.
sumber
Perl, 37
35
karakter+2
untuk-p
dan-l
. Saya tidak yakin apakah ada pendekatan di Perl yang akan mengalahkan solusi @ nutki , tapi saya pikir saya akan tetap mengirim ide ini.Jalankan dengan:
sumber
bash, 54
sumber
C, 95 byte
Kode itu sederhana. Ini adalah versi yang tidak dikoleksi:
Uji di sini
sumber
Ruby, 53
atau bagus.
sumber