Tantangan
Diberikan daftar, tentukan apakah mengelompokkan daftar ke dalam elemen yang meningkat dan menurun akan menghasilkan daftar daftar yang berukuran sama.
Dengan kata lain, "titik balik" dari daftar diberi jarak secara merata.
Contoh
Ini sebuah contoh: 0, 3, 7, 5, 2, 3, 6
0, 3, 7
meningkat, 7, 5, 2
menurun, dan 2, 3, 6
meningkat. Karena itu, ini adalah kebenaran.
Contoh lain: 1, 4, 6, 8, 5, 3, 5, 7, 9
1, 4, 6, 8
meningkat, 8, 5, 3
menurun, dan 3, 5, 7, 9
meningkat. Karena itu ini salah.
Aturan dan Spesifikasi
- Tidak ada elemen yang berdekatan yang akan sama
- Semua angka dapat diasumsikan berada dalam kisaran angka wajar bahasa Anda
- Anda dapat mengasumsikan bahwa semua angka adalah bilangan bulat, jika ini membantu Anda memasukkan kiriman Anda
- Ini kode-golf , jadi jawaban terpendek menang
- Input sebagai daftar dalam representasi dan output yang masuk akal sebagai nilai kebenaran / kepalsuan. Kedua nilai harus konsisten.
Uji Kasus
Input -> Output
1, 3, 5, 8, 6, 4, 2, 3, 5, 7, 6, 4, 2, 5, 7, 9, 6, 4, 2 -> True
1, 3, 5, 7, 6, 4, 5, 7, 9, 8, 6, 4, 2, 3, 5 -> False
2, 3, 6, 4, 2, 3, 7, 5, 3, 4, 6 -> True
3, 6, 4, 8, 5, 7, 3, 5, 2 -> True
8 -> True
1, 3, 5, 7 -> True
4, 5, 7, 6, 8, 9 -> False
6, 4, 2, 3, 5, 4, 2 -> True
8, 5, 3, 2, 4, 6, 5, 3, 2, 5, 7 -> False
Catatan : Anda tidak boleh berasumsi bahwa semua angka adalah digit tunggal (kecuali jika hanya itu yang bisa ditangani oleh bahasa Anda); kasus uji mencerminkan bahwa hanya karena lebih mudah bagi saya untuk mengetik kasus dengan cara ini: P Berikut adalah beberapa kasus uji dengan angka di luar kisaran itu:
1, 5, 10, 19, 15, 13, 8, 13, 18, 23, 19, 18, 14 -> True
15, 14, 17, 16, 19, 18 -> True
12, 16, 19, 15, 18, 19 -> False
sumber
1, 2, 3, 2
menjadi input yang valid, dan jika demikian dianggap benar atau salah? Dalam contoh itu, nilai selanjutnya menjadi 1 akan membuatnya benar, tetapi 3 akan membuatnya salah.Jawaban:
MATL ,
109 byteCobalah online!
Disimpan satu byte berkat Luis Mendo!
Penjelasan:
Asumsikan inputnya adalah
[0, 3, 7, 5, 2, 3, 6]
::sumber
Jelly , 6 byte
Cobalah online!
Disimpan 1 byte berkat Adnan !
Bagaimana itu bekerja
Sementara bermain golf, saya menemukan beberapa keren, alternatif lagi:
IṠŒgL€E
,IṠŒrṪ€E
(menggunakan run-length-encode sebagai gantinya).sumber
IṠŒgḂE
harus menyimpan byteA
(nilai absolut) menggantikanḂ
atau ada trik yang tidak saya ketahuiḂ
?Oktaf ,
5450 byteCobalah online!
Penjelasan
sumber
Bahasa Wolfram (Mathematica) , 38 byte
Cobalah online!
Penjelasan
sumber
Equal@@(1^Split@Sign@Differences@#)&
2 byte lebih pendek, danEqual@@Im@Split@Sign@Differences@#&
1 byte lebih pendek dari itu.Arg
bukannyaSign
menyimpan byte lain.05AB1E ,
87 byteCobalah online!
-1 terima kasih kepada Adnan.
sumber
¥0.SγaË
harus menyimpan bytea
saya tidak dapat menemukannya di dokumen.is_letter(a)
???C (gcc) ,
143140138136135132 byter
untuk menyimpan boolean fungsi kembali bukannya mengakhiri menggunakanreturn
.int A[]
keint*A
(menggunakan pointer bukan array).f(int*A,int a)
untukf(A,a)int*A;
.if(d!=...
untukif(d-...
.;j++...j+1
untuk;...++j
.Cobalah online!
Menentukan fungsi
f
yang melihat setiap elemen dalam daftar tetapi yang terakhir dan menentukan hubungan elemen ini dengan elemen berikutnya dalam daftar. Jumlah perbandingan yang sama berturut-turut disimpan saat pertama kali hubungan terbalik, setiap berjalan setelah menjalankan awal yang berbeda panjangnya dengan panjang yang disimpan menghasilkan output palsu. Pada akhirnya, hubungan elemen kedua-terakhir dengan elemen terakhir dilihat sehingga cocok dengan sisa daftar.sumber
f(A,a)int*A;
bukanf(int*A,int a)
.Pyth , 11 byte
Coba di sini.
sumber
Python 2 ,
10710510397969491 byteCobalah online!
Python 3 ,
10210097 byteCobalah online!
sumber
{...}
sebagai gantinyaset(...)
untuk menyimpan 3 byteSekam , 7 byte
Cobalah online!
Bagaimana ini bekerja?
Beberapa alternatif lucu:
sumber
JavaScript (ES6), 81 byte
Ini sepertinya terlalu lama. Saya mungkin melewatkan sesuatu di sini ... Mengembalikan salah satu
true
atauundefined
.Mencari periode 0 <p <a. Panjang sedemikian rupa sehingga semua perubahan arah terjadi setiap elemen p .
Uji kasus
Tampilkan cuplikan kode
sumber
Python 2 , 96 byte
Cobalah online! Keluaran melalui kode keluar: crash (1) falsey, clean exit (0) benar.
Python 2 , 106 byte
Cobalah online!
sumber
(...)[:l]<d
mungkin kebalikan dari(...)[:l]==d
.Haskell ,
797877 byteCobalah online!
Diberikan daftar
s
,zipWith(<)s$tail s
tes untuk setiap elemen apakah lebih kecil dari penggantinya, misalnyas=[2,3,6,4,2,3,7,5,3]
hasil[True,True,False,False,True,True,False,False]
. Kemudiangroup
berjalan dari elemen yang sama bersama-sama:[[True,True],[False,False],[True,True],[False,False]]
. Untuk memeriksa apakah semua daftar tersebut memiliki panjang yang sama, menggantikan elemen mereka dengan1
( lihat tip ini ) menghasilkan[[1,1],[1,1],[1,1],[1,1]]
dan memeriksa apakah semua elemen di ekort
dari daftar ini sama kepalah
:all(==h)t
.Pendekatan ini tidak bekerja untuk daftar tunggal, tetapi karena mereka adalah selalu benar, kita dapat menangani mereka dalam kasus mereka sendiri:
g[_]=1<3
.sumber
R , 57 byte
Cobalah online!
sumber
Japt , 15 byte
Cobalah online!
Penjelasan
sumber
R, 36 byte
diff
menghitung perbedaan berturut-turut, lalusign
mengecilkannya menjadi ± 1.rle
kemudian jalankan-panjang mengkodekan mereka. Semua elemen inirle
harus sama, yaitu vektor memiliki standar deviasi nol.!
kemudian menghasilkan output logis yang benar.sumber
Haskell (Lambdabot), 59 byte
Berdasarkan jawaban @ Laikoni
sumber
g_=1<3
.Java (OpenJDK 8) ,
437302256188 byteCobalah online!
sumber
Clojure, 70 byte
Mengembalikan
1
sebagai kebenaran dannil
(AKA nol) sebagai falsy.sumber
Java (OpenJDK 8) , 135 byte
Cobalah online!
Penjelasan
sumber
Python 2 ,
11099 byte-11 byte terima kasih kepada @Lynn
Cobalah online!
sumber
exec"d=map(cmp,d[:-1],d[1:]);"*2
Ruby , 57 byte
Cobalah online!
sumber