JavaScript 24 · v2
这是一篇旧文,其中的内容可能已经过时。
本文的主题不是用 JavaScript 来解决传统的算 24 问题,而是介绍一种新发明的、更有挑战性的算 24 游戏 :) 。
由于位运算的引入,很多原先不可解的问题得到了解决,例如:
// 1, 0, 0, 6
0o60\>\>1 // = 24
// 7, 7, 7, 7
7*7\>\>7/7 // = 24
每组数的解法可能有很多种,其中长度最短者为优。
运算符介绍与提示
| 运算符 | 类型 | 用途 | 例子 | 备注 |
|---|---|---|---|---|
+ |
二元运算符 | 求和 | 3+2 = 5 |
|
- |
二元运算符 | 求差 | 3-2 = 1 |
|
* |
二元运算符 | 求积 | 3*2 = 6 |
|
/ |
二元运算符 | 求商 | 3/2 = 1.5 |
0 不宜作除数 |
% |
二元运算符 | 求模 | 3%2 = 1 |
0 不宜作除数 |
~ |
一元运算符/位运算符 | 按位反 | ~3 = -4 |
~p = -p-1 |
& |
二元运算符/位运算符 | 按位与 | 3&2 = 2 |
|
| |
二元运算符/位运算符 | 按位或 | 3|2 = 3 |
|
^ |
二元运算符/位运算符 | 按位异或 | 3^2 = 1 |
|
\<\< |
二元运算符/位运算符 | 左移 | 3\<\<2 = 12 |
p<<q = p*2q |
\>\> |
二元运算符/位运算符 | 右移 | 3\>\>2 = 0 |
p>>q = p/2q(整数除法) |
0o |
特殊字 | 八进制数的首位 | 0o30 = 24 |
须消耗一个 0 |
0x |
特殊字 | 十六进制数的首位 | 0x30 = 48 |
须消耗一个 0 |