20 ไบต์
สำหรับการอ้างอิงนี่เป็นเวอร์ชั่นดั้งเดิมที่ไม่มีช่องว่างและไม่มีการตั้งชื่อฟังก์ชัน:
n=>n>0?n<255?n:255:0
ลองออนไลน์!
19 ไบต์
เราสามารถบันทึก byte โดยแปลงกลับตรรกะของการทดสอบแบบไตรภาคและใช้n>>8
ในการทดสอบว่ามากกว่าหรือไม่ เพราะการดำเนินการระดับบิตนี้ แต่จะล้มเหลวสำหรับ{32}n255n ≥ 232
n=>n<0?0:n>>8?255:n
ลองออนไลน์!
19 ไบต์
นี้เป็นหนึ่งในผลตอบแทนแทนแต่งานสำหรับ{32}ฉa l s e0n ≥ 232
n=>n>255?255:n>0&&n
ลองออนไลน์!
18 ไบต์
โดยการรวมทั้งสองรุ่นข้างต้นเราจะจบลงด้วยฟังก์ชั่นที่เหมาะกับและผลตอบแทนสำหรับ<0256 - 232≤ n < 232ฉa l s en < 0
n=>n>>8?n>0&&255:n
ลองออนไลน์!
แสดงความคิดเห็น
n => // n = input number
n >> 8 ? // if n is greater than 255 or n is negative:
n > 0 && // return false if n is negative
255 // or 255 otherwise
: // else:
n // return n unchanged
(นี่เป็นการแก้ไขรหัสที่เสนอโดย@ValueInk อย่างถาวรในความคิดเห็น)
17 ไบต์
เราสามารถไปอีกขั้นด้วยการ จำกัด ช่วงอินพุตที่ถูกต้องเป็น :- 224< n ≤ 224
n=>n>>8?-n>>>24:n
ลองออนไลน์!
แสดงความคิดเห็น
n => // n = input number
n >> 8 ? // if n is greater than 255 or n is negative:
-n >>> 24 // non-arithmetic right-shift of -n by 24 positions
: // else:
n // return n unchanged