Anak-anak yang sedang belajar berhitung sering mengetahui angka-angka, tetapi sepertinya tidak bisa menggabungkan angka-angka itu dengan benar.
Misalnya, mereka mungkin berkata:
1,2,3,4,7,8,9,10
Terkadang anak-anak akan menyadari bahwa mereka melewatkan beberapa angka, dan kembali:
1,2,3,4,7,8,5,6,7,8,9,10
Ini jelas merupakan pola superior. Kita perlu mengidentifikasi mereka.
Untuk mengidentifikasi daftar ini:
Kami mengidentifikasi minimum
M
dan maksimumN
daftarKami menelusuri daftar. Jika nomor saat ini lebih besar dari atau sama dengan anggota daftar di sebelah kanannya, maka kami menghapus nomor saat ini.
Jika daftar yang tersisa berisi semua angka dari
M
hinggaN
, maka kami mengembalikan nilai yang sebenarnya.
Anda dapat mengasumsikan daftar input Anda akan mengandung setidaknya 1 elemen. Anda dapat mengasumsikan bahwa semua bilangan bulat akan menjadi non-negatif.
Kasus uji:
Benar:
0
10
0 0 0
1 0 1
0 1 2 3 4 5 6 7 8 9 10
0 1 2 3 0 1 2 3
0 1 2 3 4 5 5
0 1 1 2 2 3
0 3 6 1 4 7 2 5 8 3 4 5 6 7 8
1 3 5 7 2 3 4 5 6 7
5 6 0 1 2 3 6 7 4 5 6 7
5 6 7 8
5 5 6 7 8
4 6 7 8 3 4 5 6 7 8
Falsy:
1 0
4 3 2 1
1 2 3 7 8 9
0 1 2 3 1 3
0 1 2 3 1 3 4
0 1 2 3 1 3 2 4
0 1 2 3 1 3 2 4 3
1 3 5 7 2 4 6 8
0 1 2 1 3 4 5 6
4 5 6 3 4 5
Ini kode-golf , jadi buat jawaban Anda sesingkat mungkin!
1
nanti ada di ujung lain). Anda juga akan menghapus setiap elemen lainnya (kecuali untuk 1 yang terakhir), sehingga Anda akan berakhir dengan0 1
, yang tidak0 1 2 3 4 5
Jawaban:
05AB1E , 5 byte
Saya tidak 100% yakin ini berfungsi, tetapi ia melewati semua test case dan saya tidak dapat menemukan situasi di mana ia gagal.
Cobalah online!
sumber
Jelly ,
109 byteCobalah online!
Bagaimana itu bekerja
sumber
ɓ
fitur yang relatif baru?«\
menurut saya.Ruby ,
59 5441 byteCobalah online!
sumber
Python 2 , 81 byte
Cobalah online!
sumber
PHP ,
148130 byte-18 byte, terima kasih @Christoph
Cobalah online!
sumber
$argn
selalu stringforeach
tidak berfungsi di atasnya. Anda bisa menggunakan$argv
untuk mendapatkan array sebagai input tetapi berhati-hatilah karena selalu berisi nama file sebagai elemen pertama. Anda menggunakan$m
dan$n
hanya sekali sehingga Anda dapat menyimpan banyak byte menciptakan$b
sebelumnya:$b=range(min($a),max($a));
. Para pemain(bool)
sama sekali tidak perlu.if($k>=$a[$s])$a[$i]=null;
untuk$k<$a[$s]?:$a[$i]=-1;
. Menggunakan referensi kita bisa melakukan ini:foreach($a as$i=>&$k)
(+1 byte) dan$a[$i]
ke$k
(-4 byte). Terlebih lagi itu membuat kita drop$s=$i
karena kita bisa beralih$i
langsung sekarang.$a=$argn;$b=range(min($a),max($a));foreach($a as$i=>&$k)for(;++$i<count($a);)$k<$a[$i]?:$k=-1;echo!array_diff($b,$a);
(117 byte). Tapi itu masih menggunakan$argn
cara yang salah.$a=explode(' ',$argn);
akan memperbaikinya selama 13 byte tambahan.$_GET
sebagai array Input? Dalam hal ini tidak perlu menggunakanexplode
tambahan -6 Bytes untuk menggunakan bukan$b
variabel~
Coba online!Java 8,
264262 bytePenjelasan:
Coba di sini.
sumber
R,
8885 byteIni mungkin bisa diturunkan lebih lanjut. Loop elemen
x
, memeriksa apakah semua nilai yang akan datang lebih besar, dan hanya kemudian menyimpan elemen itu. Setelah loop itu membuat urutan darimin(x)
kemax(x)
, dan memeriksa dengan%in%
apakah semua nilai termasuk dalam versi prunx
.sumber
function(n)all(unique(cummin(rev(n)))==max(n):min(n))
JavaScript (ES6), 60 byte
Tidak Disatukan:
Ini adalah algoritma yang lebih sederhana:
Iterasi larik secara terbalik, dan pastikan setiap angka (kecuali yang pertama) kurang dari atau sama dengan angka yang sudah terlihat.
Potongan:
Tampilkan cuplikan kode
sumber
Haskell, 62 byte
Cobalah online!
Implementasi langsung dari definisi di mana
g
menghilangkan elemen jika mereka> = daripada elemen di sebelah kanannya.sumber
C #, 69 byte
Singkatnya:
s = input (s) persamaan
diambil dari elemen s di mana semua item setelah ini (lewati (I) ndex + 1 item), nilai saat ini lebih tinggi
hitung ini, dan lihat apakah jumlah yang tersisa sama dengan jumlah yang diharapkan ((maks) nilai imum dikurangi (min) imum) jumlah angka
Cobalah online!
sumber
JavaScript (ES6),
82737270 byteMengembalikan boolean.
Bagaimana?
Kami mengulangi pada setiap elemen x dari array input a , melacak nilai maksimum yang ditemui m dan jumlah -k dari nilai yang tidak lebih besar dari atau sama dengan setiap anggota di sebelah kanan mereka. Menurut definisi, nilai yang valid muncul dalam urutan naik yang ketat.
Kita gunakan
filter()
daripadamap()
, sehingga semua elemen bisa disaring sampai k berubah menjadi negatif. Ini memungkinkan kita untuk mengisolasi elemen valid pertama, yang juga dijamin sebagai nilai minimum array.Akhirnya, kami menguji apakah
minimum - (maximum + 1) == -number_of_valid_elements
:Uji kasus
Tampilkan cuplikan kode
sumber