Diberikan array integer dan dua angka sebagai input, hapus sejumlah elemen pertama dan terakhir, ditentukan oleh angka. Input dapat dalam urutan apa pun yang Anda inginkan.
Anda harus menghapus elemen x pertama , di mana x adalah input numerik pertama, dan juga menghapus elemen y terakhir , di mana y adalah input numerik kedua.
Array yang dihasilkan dijamin memiliki panjang setidaknya dua.
Contoh:
[1 2 3 4 5 6] 2 1 -> [3 4 5]
[6 2 4 3 5 1 3] 5 0 -> [1 3]
[1 2] 0 0 -> [1 2]
Jawaban:
Haskell,
55393329 byteDisimpan 16 byte berkat Laikoni
Disimpan 6 byte lebih banyak berkat Laikoni
Disimpan 4 byte lebih banyak berkat Laikoni
Saya yakin ini bisa ditingkatkan, tetapi sebagai pemula, berikan yang terbaik.
Pemakaian
Cobalah online!
sumber
xs
.f x a b
kef a b x
, Anda hanya bisa dropx
:f a b=reverse.drop b.reverse.drop a
.a#b=let r=reverse in r.drop b.r.drop a
adalah 38 byte. Atau apakah kita diizinkan memiliki fungsi yang dideklarasikan di luar yang ini?Oktaf, 20 byte
Cobalah online!
sumber
Mathematica, 17 byte
memasukkan
sumber
;;
! Saya berhasil mengikat Anda denganDrop@##2~Drop~-#&
(jika kami mengambil input dalam urutan yang aneh seperti1, {1,2,3,4,5,6}, 2
), tetapi tidak lebih baik.Python ,
2826 byte-2 byte terima kasih kepada @Rod
Cobalah online!
sumber
lambda a,n,m:a[n:~m]
+
dan karenanya diterapkan[0]
. Anda akan perlu kurung:(a+[0])[n:~m]
.C # (.NET Core) ,
5554 byteCobalah online!
Menggunakan
List<int>
input sebagai.sumber
List
sebagai masukan sehingga Anda dapat menggunakanCount
bukanLength
.Where
yang hanya sedikit lebih lama dari cara ini yang saya cukup senang juga :)using System.Linq;
ke hitungan byte :)using
saya menambahkan jawaban saya, dan metodeSkip
danTake
membutuhkannyausing
.Perl 5 , 21 byte
19 byte kode +
-ap
bendera.Cobalah online!
Menggunakan
-a
untuk otomatis memasukkan input di dalam@F
, maka hanya menyimpan sepotong sesuai dengan input lainnya: dari indeks<>
(input kedua) ke indeks$#F-<>
(ukuran array dikurangi input ketiga). Dan$_
dicetak secara tersirat berkat-p
bendera.sumber
Karat, 29 byte
Sebut saja sebagai berikut:
Saya banyak bersenang-senang berkelahi dengan pemeriksa pinjaman mencari tahu apa pendekatan yang paling pendek untuk membuatnya menyimpulkan seumur hidup dari potongan yang dikembalikan. Perilakunya di sekitar penutupan agak tidak menentu, karena akan menyimpulkan masa hidup, tetapi hanya jika Anda tidak benar-benar mendeklarasikan parameter sebagai tipe referensi. Sayangnya konflik ini dengan yang diperlukan untuk mendefinisikan tipe argumen dalam tanda tangan sebagai pemanggilan metode n.len perlu mengetahui jenis itu beroperasi.
Pendekatan lain saya mencoba mengatasi masalah ini:
sumber
Neim , 3 byte
Coba di sini
Terima kasih kepada Okx karena mendorong saya untuk melakukan ini ... :)
sumber
C #, 62 byte
Mengambil
List<int>
input as dan mengembalikanIEnumerable<int>
.Ini juga berfungsi untuk 64 byte:
sumber
TIS-100,
413405 Bytes472 siklus, 5 node, 35 baris kode
M4,6 di bagian atas bukan bagian dari kode, tetapi menandakan penempatan modul memori.
Mainkan level ini sendiri dengan menempelkan ini ke dalam permainan:
Jadi saya kira ini juga dianggap sebagai jawaban lua ...
sumber
MATL , 6 byte
Cobalah online!
Input diberikan sebagai 1) jumlah elemen yang harus dipotong dari awal; 2) jumlah elemen yang harus dipotong dari ujung; 3) array. Penjelasan
sumber
Java (OpenJDK 8) , 32 byte
Cobalah online!
Jika kita benar-benar membatasi ke array, maka itu 53 byte:
Cobalah online!
sumber
JavaScript (ES6), 27 byte
Parameter kedua negatif untuk
slice
berhenti mengirism
dari ujung, namun ketikam
nol kita harus melewati placeholder (diInfinity
sini, meskipun(a,n,m,o)=>a.slice(n,-m||o)
juga berfungsi).sumber
R ,
323130 byte-1 byte berkat Rift
-1 byte terima kasih kepada Jarko Dubbeldam
Mengevaluasi fungsi anonim:
1+l
diperlukan karena R memiliki pengindeksan berbasis 1.sum(n|1)
setara denganlength(n)
tetapi satu byte lebih pendek.Cobalah online!
sumber
pryr::f(n[(1+l):(length(n)-r)])
MATL , 10 byte
Cobalah online!
Penjelasan:
Agak panjang untuk hanya 11 byte, tapi saya menulisnya secara rinci, untuk mempelajarinya sendiri juga.
sumber
J
, ketika digunakan seperti ini. Saya curiga saya salah, saya hanya tidak bisa mengetahuinya untuk kehidupan saya ... Terima kasih telah menghubungkan ke jawaban Anda, saya sangat pemula di MATL ...)
dan lebih terkenal(
menggigil ...(
membingungkan. :) Saya selalu membaca "ddi" (= "tujuan, data, indeks" dari manual) setiap waktu, dan kadang-kadang masih salah.C ++,
9695 byteTerima kasih kepada @Tas karena telah menghemat satu byte!
Cobalah online!
C ++ (MinGW), 91 byte
sumber
#include<list>
? Anda bisa mencukur byte dengan memilikiint f
. Compiler akan memungkinkan suatu fungsi untuk tidak kembali, tetapi mereka akan memperingatkannyaint f
akan bekerja pada sebagian besar kompiler, saya akan mengeditnya. Pada MinGW, bahkan sepenuhnya menghilangkan jenis fungsi berfungsi. Dan ya,#include<list>
akan menjadi cara yang sesuai standar untuk memasukkan header, tetapi#import<list>
harus bekerja setidaknya pada GCC, MinGW, dan MSVC, jadi itu juga tidak masalah.APL (Dyalog) ,
87 byteCobalah online!
Ini mengambil array sebagai input pertama, diikuti oleh dua angka secara terpisah.
Penjelasan
sumber
⎕↓⎕↓⍨-⎕
PHP> = 7.1, 59 byte
PHP Sandbox Online
sumber
Brain-Flak , 60 byte
Cobalah online!
Input dalam format ini:
Di mana
x
nomor yang akan diambil dari depan,y
nomor yang akan diambil dari belakang, dan susunannya hanyalah berapa banyak angka yang Anda inginkan, dipisahkan oleh baris baru. Inilah dua upaya pertama saya (lebih lama):Dan inilah penjelasannya:
sumber
APL (Dyalog) , 5 byte
Cobalah online!
Format input adalah
y x A
Penjelasan
/
adalah Reduce, yang menyisipkan fungsi ke kiri di antara setiap pasangan elemen argumen(⌽↓)
adalah fungsi yang setara dengan kereta{⌽⍺↓⍵}
, yang menghilangkan⍺
elemen pertama dari array⍵
dan kemudian membalikkan array. (⍺
adalah argumen kiri dan⍵
argumen kanan)Jadi,
(⌽↓)/y x A
sama dengan⌽y↓⌽x↓A
, yang dibutuhkan.sumber
Java 8, 82 byte
Coba di sini.
Alternatif dengan penghitungan byte yang sama ( 82 ) menggunakan loop:
Coba di sini.
Penjelasan:
System.arraycopy
:sumber
(a,n,m)->
memiliki byte-count yang sama dengana->n->m->
. Meskipun Anda benar, saya bisa saja menggunakan panggilan biasa alih-alih menjilat. Saya agak terbiasa menggunakan currying ketika saya memiliki dua (atau lebih) parameter .. Saya sudah membuat kesalahan menggunakan currying ketika saya memiliki empat parameter beberapa kali ..C ++,
504846 byteCobalah online!
sumber
Kotlin , 30 byte
Cobalah online!
Dibawa
List<Int>
sebagai input dan turun dari awal dan kemudian dari ujung.sumber
try it online
. Bisakah Anda menambahkan kode penelepon? bagaimana mengkompilasi lambda tanpa jenis definisi di Kotlin? Terima kasih.val f: (List<Int>, Int, Int) -> List<Int>
Brachylog ,
1110 byteCobalah online!
Mengambil input sebagai [x, A, y] dengan A adalah larik yang akan dipotong.
(-1 byte berkat @Fatalize.)
sumber
kb₍B&t;Bk₍
.,
tidak menambahkan (lihat hasil dari program parsial ini ), itu tidak bertindak seperti∧
. Juga jangan mencoba untuk menyalin sesuatu dari yang lama (2016-awal 2017) jawaban Brachylog karena itu adalah versi bahasa pertama, dan program tidak kompatibel ulang (khususnya,,
di Brachylog v1 sekarang∧
di Brachylog v2),
juga menambahkan dalam versi sebelumnya, tapi itu tidak masalah dalam kasus ini karena adat
setelahnya - kebetulan kebetulan. Dan ya, saya menyadari perbedaan versi setelah saya memposting ini, saya masih memikirkan hal-hal dan kikuk pada tahap ini. :)Dyalog APL, 16 byte
Cobalah online!
sumber
Pyth, 5 byte
Coba di sini
Membawa argumen dalam urutan yang berlawanan.
<
dan>
dalam Pyth trim berdasarkan urutan argumen. Misalnya,<Q5
akan memangkas semua nilai dalam input setelah yang kelima.sumber
tcl, 19
dimana
L
array.demo
sumber
CJam , 8 byte
Blok anonim yang mengambil input dari tumpukan dalam urutan x , y , larik, dan menggantinya dengan larik keluaran.
Cobalah online!
Penjelasan
Pertimbangkan input
2
,1
,[10 20 30 40 50 60]
.sumber
q / kdb, 12 byte
Larutan:
Contoh:
Penjelasan:
sumber
Racket, 33 byte
Ini bisa disebut seperti ini:
sumber