「英語の次はジャバ語」らしいので、昨日のPythonのプログラムをJavaに翻訳してみました。(^_^;
●Outcomes.java
/* * Outcomes.java */ class Outcomes { 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) { char[] p ="DEFdef".toCharArray(); int c=0; long tm=System.nanoTime(); // Timer Start do{ String s = new String(p); // 隣接したらスキップ if(Math.abs(s.indexOf('D')-s.indexOf('d'))==1) continue; if(Math.abs(s.indexOf('E')-s.indexOf('e'))==1) continue; if(Math.abs(s.indexOf('F')-s.indexOf('f'))==1) continue; // チェックを潜り抜けたものだけをカウントして表示 c++; System.out.printf("[%3d] : %s\n", c, s); }while(next_perm(p,6,6)); tm=System.nanoTime()-tm; // Timer Stop System.out.printf("Runtime : %.3f [sec]\n",(double)tm/1e9); } }
●実行結果
[ 1] : DEFdef [ 2] : DEFdfe [ 3] : DEFedf …(省略)… [238] : fedEFD [239] : fedFDE [240] : fedFED Runtime : 0.360 [sec]
- 作者: 高橋麻奈
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2009/09/01
- メディア: 単行本
- 購入: 5人 クリック: 170回
- この商品を含むブログ (8件) を見る
- 作者: 高橋麻奈
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2009/09/01
- メディア: 単行本
- クリック: 4回
- この商品を含むブログ (2件) を見る
- 作者: 柴田望洋
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2007/08/08
- メディア: 単行本
- 購入: 16人 クリック: 271回
- この商品を含むブログ (55件) を見る
- 作者: 川場隆
- 出版社/メーカー: 秀和システム
- 発売日: 2009/10/23
- メディア: 単行本
- 購入: 14人 クリック: 162回
- この商品を含むブログ (33件) を見る
- 作者: 川場隆
- 出版社/メーカー: 秀和システム
- 発売日: 2010/03/25
- メディア: 単行本
- 購入: 4人 クリック: 34回
- この商品を含むブログ (9件) を見る
- 作者: ジョゼフ・オニール,武藤健志,トップスタジオ
- 出版社/メーカー: 翔泳社
- 発売日: 2008/05/29
- メディア: 大型本
- 購入: 1人 クリック: 55回
- この商品を含むブログ (21件) を見る