php можно ускорить в 2-3 раза, если сделать выход из циклов в последнем условии:
if( 100*$d+10*$g+$j + 100*$j+10*$a+$e + 100*$b+10*$h+$f == 1000*$d+100*$d+10*$a+$b && $f*$c/$j == 10*$g+$a) {
echo " a=",$a, " b=",$b, " c=",$c, " d=",$d, " e=",$e, " f=",$f, " g=",$g, " h=",$h, " j=",$j;
break 9;
}
Ради фана переписал 2й алгоритм на Go
package main
import "fmt"
import "time"
func main() {
st := time.Now().UnixNano()
top:
for a := 1; a<10; a++ {
for b := 1; b<10; b++ {
if b == a { continue; } else {
for c := 1; c<10; c++ {
if c==b || c==a { continue; } else {
for d := 1; d<10; d++ {
if d==c || d==b || d==a { continue; } else {
for e := 1; e<10; e++ {
if e==d || e==c || e==b || e==a { continue; } else {
for f := 1; f<10; f++ {
if f==e || f==d || f==c || f==b || f==a { continue; } else {
for g := 1; g<10; g++ {
if g==f || g==e || g==d || g==c || g==b || g==a { continue; } else {
for h := 1; h<10; h++ {
if h==g || h==f || h==e || h==d || h==c || h==b || h==a { continue; } else {
for j := 1; j<10; j++ {
if j==h || j==g || j==f || j==e || j==d || j==c || j==b || j==a { continue; } else {
if 100*d+10*g+j + 100*j+10*a+e + 100*b+10*h+f == 1000*d+100*d+10*a+b && f*c/j == 10*g+a {
fmt.Println(" a=", a, " b=", b, " c=", c, " d=", d, " e=", e, " f=", f, " g=", g, " h=", h, " j=", j)
break top
}}}}}}}}}}}}}}}}}}
elapsed := time.Now().UnixNano()
delta := ( float64(elapsed) - float64(st) )/ 1e6
fmt.Println("Время выполнения (ms): ", delta)
}
Ну и JS тоже разжился break`ом и профилированием
var time = performance.now();
// некий код
time = performance.now() - time;
console.log('Время выполнения (ms): ', time);
по времени в 2 раза медленне GO
Лучшие результаты на моей машине:
php - 600мс
js - 40мс
go - 20мс