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