Diberikan input dari daftar irisan string, output string asli.
Setiap irisan akan diberikan sebagai daftar panjang 2, berisi posisi awal irisan (bilangan bulat ≥0) dan irisan itu sendiri. Jika bahasa Anda tidak mendukung array tipe sewenang-wenang, Anda juga dapat menganggap ini sebagai struct atau serupa, atau hanya string yang terdiri dari angka, spasi, dan kemudian irisan.
Urutan kedua elemen dari masing-masing slice terserah Anda. Selain itu, jika Anda memilih untuk menggunakan representasi irisan sebagai array panjang-2, Anda dapat mengambil input sebagai array 2 dimensi atau array flat tunggal. Akhirnya, bilangan bulat yang mewakili posisi dapat berupa indeks-nol atau indeks-tunggal (semua contoh di sini adalah indeks-nol).
Input akan selalu cukup untuk menentukan seluruh string hingga posisi tertinggi yang diberikan. Artinya, tidak akan ada "lubang" atau "celah". Oleh karena itu, output tidak boleh mengandung karakter tambahan tambahan atau utama (selain baris tambahan opsional khas) Masukan akan selalu konsisten, dan tidak ada irisan yang akan saling bertentangan.
Karena ini adalah kode-golf , kode terpendek dalam byte akan menang.
Kasus uji:
In Out
-----------------------------------------------------------
[[2, "CG"], [0, "PP"], [1, "PC"]] | PPCG
[[0, "foobarbaz"]] | foobarbaz
[[0, "foobar"], [6, "baz"]] | foobarbaz
[[2, "ob"], [5, "rba"], [0, "fooba"], [8, "z"]] | foobarbaz
[[0, "fo"], [0, "fooba"], [0, "foobarbaz"]] | foobarbaz
Jawaban:
Jelly,
109 byteCobalah online!
Bagaimana itu bekerja
sumber
Python 2, 49 byte
Pertama, sejajarkan senar dengan mengisi offset mereka dengan spasi (ditunjukkan sebagai garis bawah untuk kejelasan)
Kemudian, gunakan
map
untukzip
dan mengambil maksimum setiap kolom, yang mengabaikan nilai ruang yang lebih kecil (karakter terkecil yang dapat dicetak) danNone
di mana beberapa string terlalu pendek.Akhirnya,
''.join
untuk string menggunakan[2::5]
triknya.sumber
Perl, 25
Menambahkan +2 untuk
-lp
Dapatkan input dari STDIN, mis
(Tutup dengan ^ D atau ^ Z atau apa pun yang menutup STDIN pada sistem Anda)
slices.pl
:sumber
v0
menghemat dua byte (karena Anda juga bisa menghilangkan ruang sebelumx
)? Sunting: Hm, tidak, ketika saya mencobanya, saya dapatCan't locate object method "x" via package "2"
(atau apa pun nomornya pada baris pertama saya) karena beberapa alasan.JavaScript (ES6), 61 byte
Sunting: Disimpan 4 byte berkat @ edc65.
sumber
Haskell, 57 byte
Contoh penggunaan:
Cara kerjanya: membuat pasangan
(index,letter)
untuk setiap huruf dari setiap irisan, menyatukannya menjadi satu daftar, menghapus duplikat, mengurutkan berdasarkan indeks, menghapus indeks.sumber
MATL , 15 byte
Bekerja dengan versi saat ini (13.0.0) dari bahasa / kompiler.
Input dengan kurung kurawal dan tanda kutip tunggal. (Kurung kurawal di MATLAB / MATL menentukan susunan sel , yang merupakan daftar yang dapat memiliki konten jenis yang arbitrer, mungkin berbeda.)
Cobalah online!
sumber
DUP , 14 byte
Try it here.
Lambda anonim Pemakaian:
CATATAN: DUP tidak benar-benar memiliki array, jadi saya harap format input ini baik-baik saja.
Penjelasan
Pemahaman string DUP adalah ... menarik. String disimpan sebagai serangkaian variabel angka, yang masing-masing memegang charcode dari string. Sesuatu seperti
2"CG"
berfungsi sebagai mendorong 2 ke tumpukan, lalu membuat string dengan indeks mulai dari 2.Karena indeks ini benar-benar variabel, mereka dapat ditimpa. Itulah yang sebenarnya dilakukan input: mengesampingkan! Coba tekan Steppada situs juru bahasa untuk mendapatkan ide yang lebih baik untuk ini. Setelah ini, kami mendapatkan string yang tidak berlisensi.
Di sinilah keluarannya masuk.
sumber
PHP, 146 karakter
Catatan: Menghindari input pengguna selalu merupakan ide bagus.
Golf
Tidak disatukan
Anda dapat melihat bahwa saya hanya menulis input ke dalam array dengan kunci spesifik yang dimiliki masing-masing karakter dan kemudian menampilkan semuanya.
Tes
php unslice.php '[[0, "foobar"], [6, "baz"]]'
-> foobarbazphp unslice.php '[[2, "CG"], [0, "PP"], [1, "PC"]]'
-> PPCGphp shorten.php unslice.php
-> Script yang disingkat 107 karakter. : Dsumber
$a[$f]=$c;$f++;
Saya tidak tahu PHP tetapi tidakkah ini bisa terjadi$a[$f++]=c;
?Serius, 48 byte
Serius benar - benar buruk dalam manipulasi string.
Cobalah online!
Penjelasan:
Peta 1:
Peta 2:
Peta 3:
Peta 4:
Singkatnya, program ini membuat string dengan
n
spasi, di manan
panjang minimum string dapat didasarkan pada input. Ini menentukan indeks dalam string hasil dari setiap karakter di setiap slice, dan menetapkan karakter dalam string hasil pada indeks itu ke karakter.sumber
Python, 91 byte.
Disimpan 1 byte berkat kucing.
Agak panjang. Saya akan menurunkannya sedikit lagi.
sumber
Python,
119115 byteUji kasus
sumber
CJam, 26 byte
Cobalah online! . Mengambil input dalam bentuk
[["CG"2]["PP"0]["PC"1]]
.Penjelasan:
sumber
R, 181 byte
Dengan jeda baris:
Bekerja di R Gui (satu baris, atau sumber untuk multi-baris) tetapi tidak dalam ideone, contoh:
Catatan tentang metode input:
Saya berasumsi bahwa saya mematuhi bagian spesifikasi ini dengan input semacam ini, dapat diberikan pada beberapa baris, ini tidak memiliki dampak selama ada baris kosong untuk mengakhiri input.
Saya pikir 2 karakter dapat disimpan dengan menghapus +1 dan menggunakan pengindeksan berbasis 1 tapi saya mulai dengan input tantangan.
sumber
C, 110 byte
Program ini mengambil irisan setelah indeksnya dalam satu baris input masing-masing.
Tidak Terkumpul:
Tes di ideone.com
sumber
Lua, 113 byte
Ini mungkin beberapa kode yang lebih aman yang saya tulis. Idenya sederhana. Pengguna akan memasukkan array yang diformat seperti itu:
{{1, "1"}, {3, "3"}, {2, "2"}}
dan kemudian tabel akan diurutkan berdasarkan indeks pertama dan indeks kedua akan dicetak.sumber