请写出一个函数,计算出如下几个字母代表的数字:
AB-CD=EF
EF+GH=PPP
使用推断法算推论出的正确答案是 8-6-5-4-3-2-7-9-1,但如何使用程序来计算这个正确答案?
推论过程,首先推论出 P=1,在根据P=1推论出 F H
只能是 [5,6] [4,7] [8,3]再依次推论。另外一个推论是 A C E G P 中没有一个会是0.
写的PHP函数,不过运行不出来,卡死:
for ($a = 0; $a < 10; $a++) {
for ($b = 0; $b < 10; $b++) {
for ($c = 0; $c < 10; $c++) {
for ($d = 0; $d < 10; $d++) {
for ($e = 0; $e < 10; $e++) {
for ($f = 0; $f < 10; $f++) {
for ($g = 0; $g < 10; $g++) {
for ($h = 0; $h < 10; $h++) {
for ($p = 0; $p < 10; $p++) {
$arr = [$a, $b, $c, $d, $e, $f, $g, $h];
if (count(array_unique($arr)) == count($arr) && $a > 0 && $c > 0 && $e > 0 && $g > 0 && $p > 0 && ($a . $b) - ($c . $d) + ($e . $h) == ($p . $p . $p)) {
print_r($arr);
}
}
}
}
}
}
}
}
}
}
答案貌似不唯一,下面是我计算出来的结果
Python写的代码,PHP估计稍微费事点,我这边全部跑完花了快7秒。
输出: