以前、出題したプログラムクイズをJavaに翻訳してみた。

 以前、出題したプログラムクイズをJavaに翻訳してみました。(^_^;
 eval()関数の部分は、初め、Cから翻訳しようかと思いましたが、面倒そうなので、JavaScriptを呼び出すことにしました。(^_^;

●Quiz_Opr.java

import javax.script.*;

public class Quiz_Opr {
    static ScriptEngineManager factory = new ScriptEngineManager();
    static ScriptEngine engine = factory.getEngineByName("JavaScript");
    
    static String sEval(String sExpr) {        
        try{
            return( engine.eval(sExpr).toString() );
        }
        catch(Exception e){
            return( "error: "+e );
        }
    }
    
    static void swap(char[] s, int i, int j) {
        char t = s[i]; s[i] = s[j]; s[j] = t;
    }
    
    static boolean next_perm(char[] p, int n, int r) {
        int i, j, k;
        if(r <= 0 || n < r) return(false);
        for(i = r + 1; i <= n-1; i++)
            for(j = i; j >= r + 1 && p[j-1] < p[j]; j--)
                swap(p,j,j-1);
        for(i = n - 1; i > 0 && p[i-1] >= p[i]; i--);
        if(i==0) return(false);
        for(j = n - 1; j > i && p[i-1] >= p[j]; j--);
        swap(p,j,i-1);
        for(k = 0; k <= (n-i-1)/2; k++)
            swap(p,i+k,n-k-1);
        return(true);
    }
    
    public static void main(String[] args) {
        final String OPR="+-*/=";
        char[] p=OPR.toCharArray();
        String f="";
        long tm=System.currentTimeMillis();    // Timer Start
        
        do{
            f=String.format("5%c4%c3%c2%c1%c0",p[0],p[1],p[2],p[3],p[4]);
            if(sEval(f.replace("=","=="))=="true")
                System.out.println(f);
        }while(next_perm(p,5,5));
        tm=System.currentTimeMillis()-tm;    // Timer Stop
        System.out.printf("Runtime : %.3f [sec]\n",(double)tm/1000.0);
    }
}

●実行結果

5-4*3/2+1=0
5=4*3/2-1+0
Runtime : 0.102 [sec]

※参考URL
http://d.hatena.ne.jp/rsc96074/20120105/1325730069
http://q.hatena.ne.jp/1296542184
http://d.hatena.ne.jp/rsc96074/20110202/1296655979
http://d.hatena.ne.jp/rsc96074/20110204/1296771632
JavaからJavaScriptを呼び出すサンプル - 昼間のメモ
●独習Java 第4版 [大型本] ジョゼフ・オニール (著), 武藤 健志 (監修), トップスタジオ (翻訳)

独習Java 第4版

独習Java 第4版

●改訂 新Java言語入門 ビギナー編 (Java言語実用マスターシリーズ) 林 晴比古 (著) ●改訂 新Java言語入門 シニア編 (Java言語実用マスターシリーズ) 林 晴比古 (著)
改訂 新Java言語入門 シニア編 (Java言語実用マスターシリーズ)

改訂 新Java言語入門 シニア編 (Java言語実用マスターシリーズ)

●読みながらマスターする たのしいJava入門 [単行本]  今井 なぎ (著)
読みながらマスターする たのしいJava入門

読みながらマスターする たのしいJava入門

●パーフェクトJava (PERFECT SERIES) (PERFECT SERIES 2) [大型本]
 アリエル・ネットワーク株式会社 (著), 井上 誠一郎 (著), 永井 雅人 (著), 松山 智大 (著)
パーフェクトJava (PERFECT SERIES) (PERFECT SERIES 2)

パーフェクトJava (PERFECT SERIES) (PERFECT SERIES 2)

Javaの絵本 増補改訂版 [単行本]  (株)アンク (著)
Javaの絵本 増補改訂版

Javaの絵本 増補改訂版

●スマートにプログラミング Android入門編 [単行本] 堀切 堤 (著)
スマートにプログラミング Android入門編

スマートにプログラミング Android入門編