Sebuah Array signifikan adalah array bilangan bulat positif, di mana perbedaan mutlak antara unsur-unsur berturut-turut adalah semua lebih kecil dari atau sama dengan 1 .
Misalnya, array berikut tidak signifikan:
[1, 2, 3, 4, 3, 4, 5, 5, 5, 4]
Karena perbedaan (absolut) yang sesuai adalah:
[1, 1, 1, 1, 1, 1, 0, 0, 1]
Yang semuanya lebih kecil dari atau sama dengan 1 .
Tugas Anda adalah menentukan apakah array bilangan bulat yang diberikan tidak signifikan.
- Anda dapat mengasumsikan bahwa array selalu mengandung setidaknya dua elemen.
- Aturan input dan output standar berlaku. Anda dapat mengambil input (dan output) dalam format apa pun yang masuk akal.
- Celah default tidak diperbolehkan.
- Nilai-nilai kebenaran / kepalsuan harus berbeda dan konsisten.
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Uji kasus
Input -> Output [1, 2, 3, 4, 3, 4, 5, 5, 5, 4] -> true [1, 2, 3, 4, 5, 6, 7, 8, 9, 8] -> benar [3, 3, 3, 3, 3, 3, 3] -> true [3, 4, 4, 4, 3, 3, 3, 4, 4, 4] -> true [1, 2, 3, 4] -> true [5, 4, 3, 2] -> true [1, 3, 5, 7, 9, 7, 5, 3, 1] -> false [1, 1, 1, 2, 3, 4, 5, 6, 19] -> false [3, 4, 5, 6, 7, 8, 7, 5] -> false [1, 2, 4, 10, 18, 10, 100] -> false [10, 20, 30, 30, 30] -> false
Saya menggunakan nilai true
dan false
.
code-golf
number
array-manipulation
decision-problem
Martin Ender
sumber
sumber
Jawaban:
Jelly , 3 byte
Cobalah online!
Bagaimana?
Hanya tantangan sempurna untuk Jelly.
sumber
P
tidak akan berhasil, karena jika semua perbedaan1
itu akan dihasilkan1
, tetapi jika salah satu dari mereka0
itu akan menghasilkan0
? Dan jika satu perbedaan adalah5
satu tetapi apakah0
itu masih akan terjadi0
?JavaScript (ES7),
3329 byteDisimpan 4 byte berkat @JohanKarlsson
Bagaimana?
Ketika dipaksa
Number
, array setidaknya dua elemen dievaluasiNaN
. Dengan menggunakan kembali input a sebagai variabel yang menyimpan nilai sebelumnya, iterasi pertama dari beberapa () selalu menghasilkan ([v0, v1, ...] - a [0]) ** 2 = NaN , tidak peduli nilai [0] . Jadi, tes pertama selalu salah dan perbandingan yang sebenarnya dimulai pada iterasi ke-2, seperti yang seharusnya.Uji kasus
Tampilkan cuplikan kode
sumber
a=>!a.some(v=>(a-(a=v))**2>1)
Python 3 , 40 byte
Cobalah online!
sumber
Mathematica, 24 byte
sumber
#==Clip@#&@*Differences
lebih pendek satu byte.Python 2 , 35 byte
Ada dengan kode status 1 untuk array tidak signifikan, dengan kode status 0 sebaliknya.
Cobalah online!
sumber
Sekam , 4 byte
Cobalah online!
Penjelasan:
sumber
Oktaf , 21 byte
Fungsi anonim yang memasukkan vektor numerik dan ouput
1
jika tidak signifikan atau0
sebaliknya.Cobalah online!
sumber
Haskell ,
3433 byteCobalah online! -1 byte terima kasih kepada @ user1472751
Solusi point-free adalah
satulagiduahanya satu byte ( terima kasih kepada -1 byte dari @ Dennis ) lebih pendek dari pendekatan rekursif:Cobalah online!
sumber
Pyth , 6 byte
Verifikasi semua kasus uji.
Pyth , 8 byte
Cobalah online!
Penjelasan
sumber
I#
bukanM
.Proton , 41 byte
Cobalah online!
-16 byte terima kasih kepada Tn. Xcoder
-2 byte
-6 byte terima kasih kepada Tn. Xcoder
sumber
<2 for
mungkin dapat diabaikan.Japt , 6 byte
Cobalah online!
Penjelasan
sumber
C # (.NET Core) ,
514544 + 18 byte-1 byte terima kasih kepada Jeppe Stig Nielsen
Hitungan byte juga mencakup:
Cobalah online!
Penjelasan:
sumber
a=>a.Zip(a.Skip(1),(x,y)=>x-y).All(x=>x*x<4)
:, itu menghindari negasi!
.Perl 6 , 25 byte
Cobalah online!
Ini harus cukup mudah dibaca. Satu-satunya hal yang kurang jelas di sini adalah bahwa operator zip
Z
akan berhenti zipping ketika daftar yang lebih pendek habis (kami menghapus elemen pertama dari daftar di sebelah kanan) dan bahwa subskrip kosong.[]
, yang disebut Zen slice, memberikan seluruh daftar..skip
mengembalikan daftar tanpa elemen pertama.sumber
.rotate
itu tidak diperlukan di sini.-2<
alih-alih-1≤
dan<2
bukannya≤1
menyimpan empat byte lagi.2>...>-2
untuk menghindari menafsirkan dengan<
cara yang salah.R ,
3026 byteCobalah online!
sumber
function(a)all(diff(a)^2<2)
menghemat 3 byte.all(diff(scan())^2<2)
scan
, tetapi masih menyimpan satu byte!05AB1E , 5 byte
Cobalah online!
Penjelasan
sumber
[5,2]
Misalnya tidak akan berfungsi .Ohm v2 , 4 byte
Cobalah online!
Bagaimana?
sumber
PowerShell , 62 byte
Cobalah online!
PowerShell tidak memiliki
.map
atau.some
perintah atau mirip, jadi di sini kita secara individual memeriksa setiap delta.Kami mengambil input
$a
dan menyetel$l
sama dengan elemen pertama. Kemudian kita mengulang$a
dan mengambil setiap elemen di mana|?{...}
perbedaannya$_-$l
adalah-in
jangkauan1,0,-1
. Kami kemudian mengatur$l
sama dengan elemen saat ini. Jadi sekarang kita memiliki koleksi elemen di mana delta antara tetangga mereka sebelumnya adalah 1. Kita ambil.count
itu dan periksa apakah itu benar-eq
ke.count
array secara keseluruhan. Jika ya, maka setiap delta adalah 1 atau kurang, jadi itu adalah array yang tidak signifikan. Hasil Boolean itu ditinggalkan di jalur pipa, dan hasilnya tersirat.sumber
$l=($a=$args)[0]
$l
menjadi seluruh input array dalam saran Anda.$args
adalah seluruh array. Contoh$args
. Jika Anda memanggil skrip atau fungsi dengan serangkaian argumen yang dipisahkan sebagai spasi, itu akan muncul sebagai elemen yang terpisah$args
, dan untuk TIO itulah cara meniru itu. Saya pribadi telah menggunakannya berkali-kali sebelumnya, tetapi untuk masing-masing :)Python 3 , 45 byte
Cobalah online! atau Coba test suite.
Terima kasih kepada Jonathan Frech untuk -2 byte.
sumber
abs(x-y)<2
->-2<x-y<2
.Java (OpenJDK 8) , 78 byte
Cobalah online!
sumber
MATL ,
65 byte-1 byte terima kasih kepada Giuseppe
Cobalah online! atau Verifikasi semua kasus uji
sumber
d|2<
sebagai gantinya, sebagai array dengan nilai nol adalah falsey di MATL.d|2<A
untuk sesuatu yang lebih dekat dengan jawaban awal Anda.anyfix , 9 byte
Cobalah online!
Ini sebagian besar merupakan port dari solusi 05AB1E kecuali mengerikan karena anyfix tidak memiliki autovectorization dan hal-hal keren lainnya
sumber
C,
6156 byteTerima kasih kepada @cottinet untuk menghemat lima byte!
Cobalah online!
C (gcc), 47 byte
Cobalah online!
sumber
r
alih-alih mengembalikannya. :-)Clojure, 35 byte
Seberapa rapi itu?
sumber
TI-Basic,
67 byteatau, 5 byte jika kesalahan dihitung sebagai nilai balik yang valid (pengembalian
ERR:ARGUMENT
jika tidak signifikan, yang lainERR:DOMAIN
)sumber
abs(ΔList(Ans
, atau turun lebih dari 1 (seperti dalam {5,3,1} atau dalam test case {3,4,5,6,7,8,7,5}) tidak mendapatkan terdeteksi.JavaScript (ES6),
3736 byteSunting: Disimpan 1 byte dengan mencuri trik @ Arnauld.
sumber
a=>u=>!a.some(e=>(e-=(u=e))>1|e<-1)
Pyth, 7 byte
Test Suite
Mengembalikan nilai true / false.
Penjelasan:
sumber
Mathematica, 34 byte
Penjelasan
sumber
Java (OpenJDK 8) , 60 byte
Cobalah online!
sumber
r
dalam loop untuk menghitung(p-n)
hanya sekali,>>1
bisa/2
, atau dihapus jika Anda menggunakan|
alih-alih+
:a->{int r=1,p=a[0];for(int i:a)r|=(r=p-(p=i))*r;return r<2;}
(60 byte).Swift 4, 52 bytes
Test suite:
sumber
APL, 13 byte
Jawaban APL pertama \ o /
Catatan: Saya adalah bot yang dimiliki oleh Hyper Neutrino. Saya ada terutama untuk pengujian obrolan.
Penjelasan
sumber
∧/2>(|2-/⊢)