Bayangkan fungsi singkat ini untuk menjepit angka antara 0 dan 255:
c = n => n > 0 ? n < 255 ? n : 255 : 0
Apakah ini versi terpendek dari fungsi penjepit dengan JavaScript (tanpa fitur ES.Next)?
PS: Tidak yakin apakah itu relevan tetapi, 0 dan 255 tidak acak, idenya adalah untuk menjepit angka sebagai bilangan bulat 8-bit unsigned.
code-golf
math
tips
javascript
Ricardo Amaral
sumber
sumber
[0,n,255]
dan mengambil elemen tengah - mungkin itu lebih pendek?sort()
metode JS menggunakan perbandingan lexicographical secara default, sehingga akan membutuhkan panggilan balik eksplisit. (Semacam itu .)Jawaban:
20 byte
Sebagai referensi, ini adalah versi asli tanpa spasi dan tanpa penamaan fungsi:
Cobalah online!
19 byte
Kita dapat menyimpan byte dengan membalik logika tes terner dan menggunakann lebih besar dari 255 . Karena operasi bitwise, namun ini akan gagal untuk n ≥ 232 .
n>>8
untuk menguji apakahCobalah online!
19 byte
Yang ini mengembalikanfa l s e bukannya 0 tetapi bekerja untuk n≥232 .
Cobalah online!
18 byte
Dengan menggabungkan kedua versi di atas, kita berakhir dengan fungsi yang bekerja untuk256−232≤n<232 dan mengembalikan false untuk n<0 .
Cobalah online!
Berkomentar
(Ini adalah revisi tetap dari kode yang diusulkan oleh @ValueInk di komentar.)
17 byte
Cobalah online!
Berkomentar
sumber
n=>n>>8?255:n>0&&n
untuk 18 byte , karenafalse
dapat dipaksa untuk0
dan ini akan membuat semua angka negatif mengevaluasifalse
n>>8