JavaScript 24 · v2
本文的主题不是用 JavaScript 来解决传统的算 24 问题,而是介绍一种新发明的、更有挑战性的算 24 游戏 。
由于位运算的引入,很多原先不可解的问题得到了解决,例如:
1 2 3 4 5 |
// 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 |
1, 1, 1, 1
(11 + 1) << 1
好多位运算,脑子根本反应不过来啊。。
那就别预判,多尝试各种组合
你那个数字还能连接起来,简直虐待脑细胞
你可以编个程序来解
真是机智