The Devil's Calculator

The Devil's Calculator

Not enough ratings
The Devil's Calculator 全 85 题参考答案
By Paandaa
《The Devil's Calculator》游戏本体 68 题 + DLC 17 题共 85 题的各函数计算规则与参考答案。
   
Award
Favorite
Favorited
Unfavorite
简介
游戏每关将从三种类型的函数 ? :一元函数 •: R→R、二元函数 ψ: R×R→R、自然数数列 φ: N→N 中给出一到三种,但不给出具体的计算规则。
玩家需要猜测函数的计算规则,使用计算器上的可用按键与给出的 所有 函数,组合出计算结果为 666 的表达式。在 DLC 关卡中,目标计算结果可能有改变。

本指南中,三种函数分别记作 •x、xψy 和 φx,运算优先级为先 • 后 φ 再 ψ,其解析式使用 Wolfram 语言书写,部分给出自然语言描述或 OEIS 数列编号。
本指南中,给出的函数计算规则不保证在整个定义域上正确。题目答案不唯一。

一些参考网站:
  • OEIS[oeis.org]:全称 The On-Line Encyclopedia of Integer Sequences(在线整数数列百科),可通过输入数列的其中几项查询数列,并支持使用 _ 或 ? 作为通配符模糊搜索。
  • Wolfram Alpha[www.wolframalpha.com]:一款在线计算知识引擎,可使用自然语言查找各种问题的答案。目前不支持中文。
  • What's Special About This Number?[erich-friedman.github.io]:由 Erich Friedman 维护的一个网页,列举了从 0 到 9999 各自然数的有趣性质。游戏中出现的随机 Math Fact 均来源于此。
    OeisWiki 上有加注的版本[oeis.org],补充了更多有趣性质以及相关的 OEIS 数列。
不过对游戏的帮助其实并不大。
Level 1 - 17
Lv. 1
•x = x + 4
参考答案: •662

Lv. 2
•x = 100x
参考答案: •6.66

Lv. 3
•x = -1/2 x
参考答案: •-1332

Lv. 4
•x = 2x + 6
参考答案: •330

Lv. 5
•x = x + 11
禁用按键:[5]
参考答案: ••644

Lv. 6
•x = 2x
禁用按键:[3]
参考答案: ••166.5

Lv. 7
•x = 2x + 6
禁用按键:[3]
参考答案: ••162

Lv. 8
•x = Sign[First[IntegerDigits[x]] - 3] ToExpression[StringJoin[ToString /@ Abs[Sign[x] IntegerDigits[x] - 3]]] (* 在十进制下,求 x 各数位(如果 x < 0,则认为各数位均为负数)与 3 差的绝对值并拼接起来,取 x 的最高位减 3 的差的符号。例如:•-126 = (-1 - 3)'|-2 - 3|'|-6 - 3| = -459。 *)
禁用按键:[.] [+-]
参考答案: •999

Lv. 9
•x = If[Mod[x, 2] == 0, -3x, x - 83] (* 若 x 为偶数,则函数值为 -3x,否则为 x - 83。 *)
禁用按键:[.] [4] [8]
参考答案: •-222

Lv. 10
•x = 5/9 x - 17 - 7/9
参考答案: •1230.8

Lv. 11
•x = Sign[First[IntegerDigits[x]] - 5] ToExpression[StringJoin[ToString /@ Abs[Sign[x] IntegerDigits[x] - 5]]] (* 在十进制下,求 x 各数位(如果 x < 0,则认为各数位均为负数)与 3 差的绝对值并拼接起来,取 x 的最高位减 3 的差的符号。例如:•-114 = (-1 - 5)'|-1 - 5|'|-4 - 5| = -669。 *)
禁用按键:[.]
参考答案: -•-111

Lv. 12
•x = If[Mod[x, 2] == 0, -3x, x - 83] (* 若 x 为偶数,则函数值为 -3x,否则为 x - 83。 *)
禁用按键:[.] [2] [4] [8]
参考答案: ••-139

Lv. 13
•x = 2x + 6
禁用按键:[0] [1]
参考答案: •••78

Lv. 14
•x = FromDigits[IntegerDigits[x], 2] (* 将 x 视为二进制数。 *)
禁用按键:[.] [2] [3] [4] [5] [6] [7] [8] [9]
参考答案: •1010011010

Lv. 15
•x = FromDigits[IntegerDigits[x, 8], 10] (* 将十进制数 x 转为八进制数的结果视为十进制数。 *)
参考答案: •438

Lv. 16
•x = If[Mod[x, 2] == 0, -3x, x - 83] (* 若 x 为偶数,则函数值为 -3x,否则为 x - 83。 *)
禁用按键:[.] [2] [4] [5]
参考答案: ••-139

Lv. 17
•x = 2x + 6
禁用按键:[0] [2] [3] [8]
参考答案: •••••15
Level 18 - 36
Lv. 18
xψy = x / y
禁用按键:[1] [3]
参考答案: 2664ψ4

Lv. 19
xψy = -xy
禁用按键:[.] [1] [2]
参考答案: -74ψ9

Lv. 20
xψy = 20x + 2y
参考答案: 33ψ3

Lv. 21
xψy = 1/2 (x + y)
禁用按键:[6]
参考答案: 333ψ999

Lv. 22
xψy = xy
禁用按键:[.] [1] [2] [5] [9]
参考答案: 3ψ6ψ37

Lv. 23
xψy = x^2 + y^2
禁用按键:[.]
参考答案: 15ψ21

Lv. 24
xψy = x(y - 1)
禁用按键:[2] [6]
参考答案: 18ψ38

Lv. 25
xψy = x(y - x)
禁用按键:[5] [7]
参考答案: 9ψ83

Lv. 26
xψy = x^(1 / y)
禁用按键:[1]
参考答案: 443556ψ2

Lv. 27
xψy = Sum[i, {i, Ceiling[x], Floor[y}] (* 所有满足 x <= i <= y 的整数 i 之和。 *)
禁用按键:[6]
参考答案: 221ψ223

Lv. 28
xψy = ToExpression[ToString[x] <> ToString[y]] / 2 (* 在十进制下,将 x, y 拼接起来再除以 2。 *)
禁用按键:[3]
参考答案: 26ψ6ψ2

Lv. 29
xψy = Mod[x, y] (* x 除以 y 的余数。 *)
禁用按键:[6]
参考答案: 1887ψ1221

Lv. 30
xψy = x^3 + y^3 + 1
禁用按键:[.]
参考答案: -4ψ9

Lv. 31
xψy = xy - 5
禁用按键:[.] [3] [6]
参考答案: 2ψ19ψ2ψ11

Lv. 32
xψy = FromDigits[Select[IntegerDigits[x, y], # < 10 &]] (* 将十进制数 x 转为 y 进制数的结果,去除非十进制数位后,视为十进制数。 *)
禁用按键:[6]
参考答案: 342ψ7

Lv. 33
xψy = Sum[i, {i, Ceiling[x], Floor[y}] (* 所有满足 x <= i <= y 的整数 i 之和。 *)
禁用按键:[1] [6]
参考答案: 70ψ78

Lv. 34
xψy = 1/2 (x + y)
禁用按键:[1] [3] [4] [5] [6] [7] [8] [9]
参考答案: 2ψ2202ψ222ψ222ψ2222ψ0

Lv. 35
xψy = Binomial[x, y] (* 组合数 / 二项式系数 xCy。 *)
参考答案: 37ψ2

Lv. 36
xψy = Times @@ IntegerDigits[x] + Times @@ IntegerDigits[y] (* 在十进制下,x 的各数位之积与 y 的各数位之积的和。 *)
禁用按键:[1] [4] [6] [8] [9]
参考答案: 2223333ψ233
Level 37 - 50
Lv. 37
•x = x^4
xψy = x + y
参考答案: 666ψ•0

Lv. 38
•x = 100x
xψy = x / y
禁用按键:[.] [2] [4] [6]
参考答案: •(333ψ50)

Lv. 39
•x = FromDigits[IntegerDigits[x, 7]] (* 将十进制数 x 转为七进制数的结果视为十进制数。 *)
xψy = xy
禁用按键:[1] [4]
参考答案: •(6ψ57)

Lv. 40
•x = Sqrt[x] (* x 的算术平方根。 *)
xψy = x + 11y
禁用按键:[6]
参考答案: •(3ψ3)→M1, 589ψ1ψM1

Lv. 41
•x = 10x
xψy = x / y
禁用按键:[.] [2] [4] [6]
参考答案: •(333ψ5)

Lv. 42
•x = IntegerReverse[x] (* 将十进制数 x 的各数位颠倒。 *)
xψy = xy
禁用按键:[2] [4] [5] [6] [9]
参考答案: •(3ψ3ψ3ψ3)ψ37

Lv. 43
•x = FromDigits[IntegerDigits[x, 7]] (* 将十进制数 x 转为七进制数的结果视为十进制数。 *)
xψy = xy
禁用按键:[1] [2] [4] [5] [6] [7]
参考答案: ••••30ψ3

Lv. 44
•x = -5x
xψy = ToExpression[ToString[x] <> ToString[y]] (* 在十进制下,将 x, y 拼接起来。 *)
禁用按键:[6]
参考答案: •-1.2→M1, M1ψM1ψM1

Lv. 45
•x = x - 10
xψy = x! - y!
禁用按键:[.]
参考答案: •••(6ψ4)

Lv. 46
•x = x!
xψy = Mod[x, y] (* x 除以 y 的余数。 *)
禁用按键:[.] [6]
参考答案: 1887ψ1221ψ•7

Lv. 47
•x = Sqrt[x] (* x 的算术平方根。 *)
xψy = x + 11y
禁用按键:[6] [8] [9]
参考答案: •(3ψ3)→M1, 545ψ5ψM1

Lv. 48
•x = -1/2 x
xψy = 30x + 3y
参考答案: •0ψ222

Lv. 49
•x = Log[x] / Log[10]
xψy = x(5 + y)
禁用按键:[3] [6]
参考答案: 222ψ•0.01

Lv. 50
•x = -1/2 x
xψy = 30x + 3y
禁用按键:[4] [8]
参考答案: •0ψ222
Level 51 - 68
Lv. 51
φx = A002113 十进制下的回文数列
参考答案: φ77

Lv. 52
φx = A000217 自然数的前缀和数列
参考答案: φ36

Lv. 53
φx = A000217 自然数的前缀和数列
禁用按键:[6]
参考答案: φφ8

Lv. 54
xψy = xy + 1
φx = A000796 圆周率的十进制展开
禁用按键:[3] [6] [7]
参考答案: 11ψ12ψφ4

Lv. 55
xψy = x(y + 5)
φx = A000040 质数数列
参考答案: φ2ψ217

Lv. 56
•x = Times @@ IntegerDigits[x] (* 十进制下 x 的各数位之积。 *)
φx = A000217 自然数的前缀和数列
禁用按键:[4] [6] [8]
参考答案: φ•229

Lv. 57
•x = x - 5
φx = A000040 质数数列
禁用按键:[2] [3]
参考答案: •••••φ•••••150

Lv. 58
•x = x - 0.1
φx = A006257 约瑟夫问题
禁用按键:[8]
参考答案: ••••••••••φ1357

Lv. 59
•x = 4x + 2
φx = A000040 质数数列
禁用按键:[4]
参考答案: ••φ13

Lv. 60
•x = 1221x
xψy = x / y
φx = A000045 斐波那契数列
禁用按键:[.]
参考答案: •666ψφ1ψ1221

Lv. 61
•x = x^(1/6)
xψy = ToExpression[ToString[x] <> ToString[y]] 2 (* 在十进制下,将 x, y 拼接起来再乘以 2。 *)
φx = A006257 约瑟夫问题
禁用按键:[3]
参考答案: •729ψφ48

Lv. 62
•x = 3x
xψy = Sum[i, {i, Ceiling[x], Floor[y}] (* 所有满足 x <= i <= y 的整数 i 之和。 *)
φx = A000073 Tribonacci 数列
禁用按键:[0] [1] [4]
参考答案: •(φ8ψ26ψ73)

Lv. 63
•x = IntegerReverse[x] (* 将十进制数 x 的各数位颠倒。 *)
xψy = Plus @@ Select[Range[Ceiling[x], Floor[y]], PrimeQ[#] &] (* 所有满足 x <= i <= y 的质数 i 之和。 *)
φx = A235228 十进制下各数位之和为 18 的自然数数列
禁用按键:[2]
参考答案: φ•(19ψ30)

Lv. 64
•x = 1/2 (Sqrt[8x + 1] - 1) (* 关于 y 的方程 y^2 + y - 2x == 0 的正根。 *)
xψy = ToExpression[ToString[y] <> ToString[x]] (* 在十进制下,将 y, x 拼接起来。 *)
φx = A010785 十进制下各数位相同的自然数数列
禁用按键:[2] [3]
参考答案: •6ψ••6→M1, φM1

Lv. 65
•x = Length[FactorInteger[x]] (* A001222 自然数的质因数个数数列。此外,若 x 非正数,则函数未定义;若 x 为正小数,则函数值为 1。 *)
xψy = 7/4 y
φx = A024450 质数平方的前缀和数列
禁用按键:[1] [4]
参考答案: φ(2ψ•36)

Lv. 66
•x = Floor[1000 Random[]] (* 你管随机数叫函数是吧? *)
xψy = y - 2
φx = A005900 Octahedral 数列
禁用按键:[3] [8]
参考答案: •0ψφ11→M1, •0ψM1

Lv. 67
•x = -4x + 2
xψy = Log[x] / Log[y]
φx = A002193 根号 2 的十进制展开
禁用按键:[2]
参考答案: ••••(64ψφ1)

Lv. 68
•x = Plus @@ IntegerDigits[x] (* 十进制下 x 的各数位之和。 *)
xψy = 10^x + y
φx = A001248 质数平方数列
禁用按键:[.] [3] [7]
参考答案: •2ψφ8→M1, 2ψM1→M1, 2ψM1→M1, 0ψM1→M1, 0ψM1→M1, 0ψM1→M1, 0ψM1→M1, 0ψM1→M1
DLC Level 1 - 8
DLC Lv. 1
•x = Length[DeleteDuplicates[IntegerDigits[x]]] (* 十进制下 x 的不重复数位数目。 *)
xψy = 3xy
禁用按键:[.] [3]
目标结果:10
参考答案: •(401152266ψ1)
提示:
10 不含因数 3,本题只能使用整数,因此不能通过 ψ 函数得到 10,只能通过 • 函数得到。
设答案为 •a,根据 • 函数的计算规则,整数 a 的各数位应完整包含 0 ~ 9,即 a 是所谓的 全数字(Pandigital Numbers)。但本题不能直接输入 3,所以需要使用 ψ 函数得到 a。
假设 a 恰好是十位数,则 a 的各数位之和为 45,所以 a 是 3 的倍数。因此,有可能存在十位数 a,它的 1/3 是不包含数位 3 的整数,则此时答案形如 •((a/3)ψ1)。使用下面的 Wolfram 代码即可搜索满足条件的 a/3。
(* 从 OEIS A050278 下 Robert G. Wilson v 所贡献代码的基础上修改得到 *) Select[ Select[FromDigits[#] & /@ Permutations[Range[0, 9]], # > 10^9 &, 40500] / 3, Not[MemberQ[IntegerDigits[#], 3]] & ]


DLC Lv. 2
•x = 4 Plus @@ (Switch[Mod[#, 4], 0, 0, 1, 1, 2, 0, 3, -1] & /@ Divisors[x]) (* 以原点为圆心,Sqrt[x] 为半径的圆上的格点数。 *)
xψy = Module[{a, b, Q}, {a, b, Q} = {Max[x, y], Min[x, y], {}}; If[b == 0 || Mod[a, b] == 0, Return[{}]]; While[b != 0, {a, b, Q} = {b, Mod[a, b], Join[Q, {Floor[a / b]}]}]; Return[ToExpression[StringJoin[ToString /@ Q]]]] (* 在十进制下对 x, y 进行欧几里得算法,将所有带余除法的商拼接起来。 *)
禁用按键:[.] [9]
目标结果:40
参考答案: •(278ψ32)
提示:
关于 • 函数,见 3Blue1Brown 的视频《隐藏在素数规律中的 π》。
由欧几里得算法的过程可知 ψ 函数值的最后一位一定不是 0,因此目标 40 只能通过 • 函数得到。通过上述视频所述方法,易知 •8125 = •(5^4 * 13) = 4(4 + 1)(1 + 1) = 40,只要找满足 xψy = 8125 的 x, y 即可。
考虑将 8125 拆分为 8'1'2'5,假设 gcd(x, y) = 1,由欧几里得算法过程知 x = 139, y = 16。本题不能直接输入 9,因此将它们同时扩大 2 倍,有 x = 278, y = 32。


DLC Lv. 3
•x = x + IntegerReverse[x] (* A056964 十进制下 x 和 x 各数位颠倒的结果之和。 *)
禁用按键:[.] [0]
目标结果:1010
参考答案: •••151
提示:
{Target, Satis} = {{1010}, {}}; While[Target != {} && Satis == {}, Target = Select[Range[100, 1000], MemberQ[Target, # + IntegerReverse[#]] &]; Satis = Select[Target, !MemberQ[IntegerDigits[#], 0] &]; ] Satis


DLC Lv. 4 * 建议直接跳过该题
xψy = 一个神秘的函数,其自变量和函数值是国际象棋棋盘坐标,xψy 表示白方第一步将 x 处的棋子移动到 y 处,返回值表示黑方的移动,其规则可能与开发者另一款游戏《Lazy Chess》有关。第一步只有 20 种移动方法,所以可以穷举。
φx = A027751 自然数真因数之和加一
禁用按键:[.] [0] [9]
目标结果:800
参考答案: φφ(52ψ53)

DLC Lv. 5
•x = Floor[x 10^-6] + Mod[x, 10^6] (* 十进制下 x 的最低 6 位与其他位之和。 *)
xψy = Boole[Sort[IntegerDigits[x]] == Sort[IntegerDigits[y]]] (* 如果十进制下 x, y 含有的各数位一致,则函数值为 1,否则为 0。 *)
φx = Floor[10^5 (Random[] + 1)] x (* 100000 ~ 199999 范围内的随机数与 x 的积。 *)
禁用按键:[.] [0] [3] [6] [9]
目标结果:1
参考答案: (•φ142857)ψ(•φ142857) 依次按下 φ1ψφ1=•1
提示: 在十进制下,142857 的 1 ~ 6 倍是 142857 的重新排列。

DLC Lv. 6
•x = FromDigits[Select[IntegerDigits[x, 666], # < 10 &]] (* 将十进制数 x 转为 666 进制数的结果,去除非十进制数位后,视为十进制数。 *)
禁用按键:[.] [1] [9]
参考答案: •2665338

DLC Lv. 7
•x = Module[{y}, y = x; While[y >= 10, y = Times @@ IntegerDigits[y]]; Return[y]] (* 在十进制下,不断求 x 的各数位积,直到得到一位数为止。 *)
禁用按键:[.] [1] [2] [9]
目标结果:4
参考答案: •333
提示:
f[x_] := Module[{y}, y = x; While[y >= 10, y = Times @@ IntegerDigits[y]]; Return[y]]; Select[Range[10, 1000], f[#] == 4 && Intersection[IntegerDigits[#], {1, 2, 9}] == {} &]


DLC Lv. 8
•x = 2^x
xψy = FromDigits[Select[IntegerDigits[x, y], # < 10 &]] (* 将十进制数 x 转为 y 进制数的结果,去除非十进制数位后,视为十进制数。 *)
φx = A000396 完美数数列
禁用按键:[.]
参考答案: 24966ψ(•φ1)
DLC Level 9 - 17
DLC Lv. 9
•x = FromDigits[IntegerDigits[x], 1.5] (* 将 x 视为 1.5 进制数。 *)
禁用按键:[.] [3] [4] [5] [6] [7] [8] [9]
参考答案: •21011002211200
提示:
Select[IntegerDigits[Range[3 10^6, 4 10^6], 3], FromDigits[#, 1.5] == 666 &]


DLC Lv. 10
xψy = BitOr[x, y] (* x, y 的按位或。 *)
禁用按键:[6] [8]
参考答案: 512ψ154

DLC Lv. 11
•x = If[Mod[x, 2] == 0, x / 2, 3x + 1] (* A006370 Collatz 映射 *)
禁用按键:[.] [0] [2] [3] [4] [5] [6] [7] [9]
目标结果:1984
参考答案: ••••881

DLC Lv. 12
•x = A001462 Golomb 数列 * 注意该函数使用递归实现,x 较大或为零时会爆栈
φx = Floor[GoldenRatio^(2 - GoldenRatio) x^(GoldenRatio - 1)] (* Golomb 数列的近似 *)
禁用按键:[.] [3]
参考答案: •φφ192400000000

DLC Lv. 13
•x = Module[{L}, L = Sign @@ (Join[{0}, IntegerDigits[x]] - Join[IntegerDigits[x], {0}])[[2 ;; -2]]; Return[100 Count[L, -1] + 10 Count[L, 0] + Count[L, 1]]] (* 十进制数 x 的每相邻两位(可重叠)中,高位小于、等于、大于低位的组数分别乘以 100、10、1 的积之和。 *)
禁用按键:[.] [+-]
参考答案: •1234567777777654321

DLC Lv. 14
•x = 1 + 5/7 x
xψy = xy
禁用按键:[3] [4] [7]
参考答案: ••(21ψ62)

DLC Lv. 15
xψy = 将十进制数 x 转为 y 进制的结果 r 看作十进制数,当 r 含有非十进制数位时函数值未定义,y 可以是负整数。
禁用按键:[.] [0] [1] [8] [9]
参考答案: 2ψ2→M1, 746ψ-M1

DLC Lv. 16
xψy = 3(x + y)
禁用按键:[.] [1] [5] [6] [7]
目标结果:42
参考答案: 38ψ-24

DLC Lv. 17
•x = Module[{L, b}, L = IntegerDigits[x]; b = Abs[L[[1]] - L[[-1]]]; b = If[b == 0, 10, b]; Return[FromDigits[L[[2 ;; -2]], b]]] (* 将十进制数 x 的次高位到次低位看作 b 进制数,并转为十进制数。其中,如果 x 的最高位与最低位差的绝对值 c 非零,则 b = c,否则 b = 10。当 b = 1 时函数值未定义。 *)
禁用按键:[.]
参考答案: •66666
4 Comments
Paandaa  [author] 6 Feb, 2023 @ 8:57pm 
感谢指正!小编也发现了两个函数有不同,但没有细究,因为尝试时被 • 函数卡死多次,标准答案也会直接卡死,小编就直接跳了:rbrb3:
(其实和有些题目选择编程解决一样是因为懒)
(想吐槽 • 函数作者为什么选择用递归实现,却没有加定义域限制,甚至输入 •0 都会卡死…)
AlumKal 6 Feb, 2023 @ 4:30pm 
DLC12是可做的。在A001462里可以查到这个数列的近似是A001462[n]=c^(2-c)*n^(c-1),其中c=(sqrt(5)+1)/2。
令f(x)=(x/c^(2-c))^c,计算得f(f(f(666)))=1.923670e+11。•φφ192400000000即可通过。
φ和•不完全一样,计算结果有微差。推测φ使用的是近似方法,而•是严格的逐项计算。(•••192400000000会直接卡死)
本质上是考查查资料能力(笑

补充一下,本篇和DLC的所有题目都不需要编程求解,用游戏中提到的工具(简单的Wolfram Alpha表达式+OEIS)就足够了。没有单纯的工作量巨大的题。
Paandaa  [author] 6 Feb, 2023 @ 1:22am 
草,这答案太逆天了,还能这么玩的:rbrbr3:
已添加到指南,感谢!
AlumKal 5 Feb, 2023 @ 5:03pm 
DLC5有一个逆天答案:
d1sd1=a1=
我倾向于认为这是bug,但它确实能过...