小町平方数(awk)

前回の続きです。
今回の問題も引き続き広井さんの記事から

小町平方数(1)

  • ○○○2=○○○○○○

ほとんど前のソースと同じである。
以下ソース

#!/usr/bin/awk -f
# 小町平方数(1)
# XXX^2=xxxxxx 

BEGIN{
    search(1);
}

function search(n,  i){
    if(n == 4){
        check_answer();
    }else{
        for(i = 1; i <= 9;i++){
            if(!use_flag[i]){
                use_flag[i] = 1;
                number[n] = i;
                search(n + 1);
                use_flag[i] = 0;
            }
        }
    }
}

function check_answer(){
    num1 = 0;
    c = 0;
    for(j = 1; j <= 9; j++){
        flag[j] = use_flag[j];  #コピー
    }
    for(i = 1; i <= 3; i++){
        num1 = num1 * 10 + number[i];
    }
    num2 = num1 ^ 2;
    split(num2,a,"");

    for(k in a){
        if( flag[a[k]]){
            return 0;
        }
        c++;
        flag[a[k]] = 1;
    }
    if(c == 6){
        print num1,num2;
    }
}

実行してみる

awk -f komachi_heihou.awk 
567 321489
854 729316

これくらいの計算量なら一瞬ですね。
アルゴリズムの勉強なら、どの言語でもいいと思うのですが、特定の言語でないとこのアルゴリズムは実行出来ないということはあるのでしょうか?