Definisi
NarsisBilangan bulat 1 berpendapat bahwa mereka lebih baik daripada tetangga mereka, karena mereka lebih tinggi dari rata-rata aritmatika mereka.
Tetangga didefinisikan sebagai berikut:
Jika bilangan bulat berada di indeks 0 (yang pertama), maka tetangganya adalah elemen terakhir dan kedua dari daftar.
Jika integer bukan yang pertama atau yang terakhir, maka tetangganya adalah dua elemen yang berbatasan langsung.
Jika bilangan bulat berada pada indeks -1 (yang terakhir), maka tetangganya adalah elemen kedua terakhir dan pertama dari daftar.
Tugas
Diberikan array bilangan bulat, tugas Anda adalah membuang yang narsis.
Bilangan bulat bisa positif, negatif atau nol.
Anda dapat mengasumsikan bahwa array mengandung setidaknya tiga elemen.
Semua aturan standar berlaku. Ini adalah kode-golf , jadi kode terpendek dalam byte menang.
Contohnya
Pertimbangkan array [6, 9, 4, 10, 16, 18, 13]
. Maka kita dapat membangun tabel berikut:
Elemen | Tetangga | Tetangga Tetangga | Apakah Narsisistik? -------- + ------------ + ------------------ + --------- -------- 6 | 13, 9 | 11 | Salah. 9 | 6, 4 | 5 | Benar. 4 | 9, 10 | 9.5 | Salah. 10 | 4, 16 | 10 | Salah. 16 | 10, 18 | 14 | Benar. 18 | 16, 13 | 14.5 | Benar. 13 | 18, 6 | 12 | Benar.
Dengan menyaring yang narsis, kita dibiarkan [6, 4, 10]
. Dan itu dia!
Uji Kasus
Input -> Output [5, -8, -9] -> [-8, -9] [8, 8, 8, 8] -> [8, 8, 8, 8] [11, 6, 9, 10] -> [6, 10] [1, 2, 0, 1, 2] -> [1, 0, 1] [6, 9, 4, 10, 16, 18, 13] -> [6, 4, 10] [6, -5, 3, -4, 38, 29, 82, -44, 12] -> [-5, -4, 29, -44]
1 - Narsisis tidak berarti secara narsistik matematis .
sumber
Haskell , 51 byte
Cobalah online! Contoh penggunaan:
f [1,2,3]
hasil[1,2]
.Sebab
s = [1,2,3]
,last s:s
adalah daftar[3,1,2,3]
dantail$s++s
daftar[2,3,1,2,3]
.zip3
menghasilkan daftar tiga kali lipat(a,b,c)
dari tiga daftar yang diberikan, memotong yang lebih panjang ke panjang daftar terpendeknya. Kami dapatkan[(3,1,2),(1,2,3),(2,3,1)]
, denganb
menjadi elemen daftar asli dana
danc
tetangganya. Pemahaman daftar kemudian memilih semua dib
manab*2<=a+c
, itub
tidak narsis.sumber
Oktaf / MATLAB, 48 byte
Cobalah online!
Penjelasan
Array input pertama kali diperluas dengan entri terakhir (
x(end)
) dan pertama (x(1)
) di sisi yang sesuai.Tes untuk narsisme dilakukan dengan
conv
mendapatkan array yang diperluas dengan[1, -2, 1]
dan hanya menyimpan'valid'
bagian.Membandingkan setiap entri dalam hasil konvolusi dengan
0
memberikan indeks logis (mask) yang digunakan untuk memilih angka dari input.sumber
J , 16 byte
Cobalah online!
Penjelasan
sumber
Japt ,
171615 byteCobalah
Penjelasan
Input array secara implisit
U
.Hapus (
k
) elemen yang mengembalikan true ketika melewati fungsi, denganY
menjadi indeks saat ini, yang memeriksa apakah elemen saat ini lebih besar dari ...Array
[Y-1, Y+1]
...Dikurangi oleh penambahan (
x
) setelah mengindeks setiap elemen keU
...Dikalikan dengan
.5
.Alternatif, 15 byte
Cobalah
sumber
R ,
5156 byteTerima kasih kepada pengguna2390246 untuk mengoreksi algoritma saya
Cobalah online!
indeks
l
manac(l[-1],l[1])+c(l[s],l[-s])
, jumlah tetanggal
, tidak kurang dari dua kalil
.sumber
Mathematica, 40 byte
sumber
<=
bukan<
.>=
.Pick
nomor non-narsis.Jelly , 17 byte
Cobalah online!
sumber
Python 2 ,
6460 bytel[-~j%len(l)]
(dan ruang) untuk(l+l)[-~j]
.Cobalah online!
sumber
Java 8,
141137127 byte-10 byte berkat @Nevay .
Penjelasan:
Coba di sini.
sumber
Julia 0,6 , 38 byte
Cobalah online!
sumber
JavaScript ES5, 59 byte
sumber
Perl 5 , 51 + 1 (
-a
) = 52 byteCobalah online!
sumber
PowerShell , 75 byte
sumber
APL, 20 byte
Cobalah online!
sumber