资源简介
解魔方程序Java源码,具体实现可以仔细研究一下,只体现了一下怎么调用,其实会调用函数就行了。
代码片段和文件信息
package main;
import java.io.*;
import java.nio.channels.*;//定义了各种通道,这些通道表示到能够执行 I/O 操作的实体(如文件和套接字)的连接;定义了用于多路复用的、非阻塞 I/O 操作的选择器
import java.nio.*;
class CoordCube {
static final int N_MOVES = 18;
static final int N_MOVES2 = 10;
static final int N_SLICE = 495;
static final int N_TWIST = 2187;
static final int N_TWIST_SYM = 324;
static final int N_FLIP = 2048;
static final int N_FLIP_SYM = 336;
static final int N_PERM = 40320;
static final int N_PERM_SYM = 2768;
static final int N_MPERM = 24;
static final int N_COMB = 70;
static final int N_UDSLICEFLIP_SYM = 64430;
static final long N_HUGE = N_UDSLICEFLIP_SYM * N_TWIST * 70L;// 9863588700
static final int N_FULL_5 = N_UDSLICEFLIP_SYM * N_TWIST / 5;
static final int N_HUGE_16 = (int) ((N_HUGE + 15) / 16);
static final int N_HUGE_5 = (int) (N_HUGE / 5);// 1972717740
// XMove = Move Table
// XPrun = Pruning Table
// XConj = Conjugate Table
// full phase1
static int[][] UDSliceFlipMove = Search.USE_FULL_PRUN ? new int[N_UDSLICEFLIP_SYM][N_MOVES]
: null;
static char[][] TwistMoveF = Search.USE_FULL_PRUN ? new char[N_TWIST][N_MOVES]
: null;
static char[][] TwistConj = Search.USE_FULL_PRUN ? new char[N_TWIST][16]
: null;
static byte[] UDSliceFlipTwistPrunP = null; // Search.USE_FULL_PRUN ? new
// byte[N_UDSLICEFLIP_SYM *
// N_TWIST / 5] : null;
static byte[] HugePrunP = null; // Search.USE_HUGE_PRUN ? new byte[N_HUGE_5]
// : null;
// phase1
static char[][] UDSliceMove = new char[N_SLICE][N_MOVES];
static char[][] TwistMove = new char[N_TWIST_SYM][N_MOVES];
static char[][] FlipMove = new char[N_FLIP_SYM][N_MOVES];
static char[][] UDSliceConj = new char[N_SLICE][8];
static int[] UDSliceTwistPrun = new int[N_SLICE * N_TWIST_SYM / 8 + 1];
static int[] UDSliceFlipPrun = new int[N_SLICE * N_FLIP_SYM / 8];
static int[] TwistFlipPrun = Search.USE_TWIST_FLIP_PRUN ? new int[N_FLIP
* N_TWIST_SYM / 8] : null;
// phase2
static char[][] CPermMove = new char[N_PERM_SYM][N_MOVES];
static char[][] EPermMove = new char[N_PERM_SYM][N_MOVES2];
static char[][] MPermMove = new char[N_MPERM][N_MOVES2];
static char[][] MPermConj = new char[N_MPERM][16];
static char[][] CCombMove = new char[N_COMB][N_MOVES];
static char[][] CCombConj = new char[N_COMB][16];
static int[] MCPermPrun = new int[N_MPERM * N_PERM_SYM / 8];
static int[] MEPermPrun = new int[N_MPERM * N_PERM_SYM / 8];
static int[] EPermCCombPrun = new int[N_COMB * N_PERM_SYM / 8];
static void setPruning(int[] table int index int value) {
table[index >> 3] ^= (0xf ^ value) << ((index & 7) << 2);
}
static int getPruning(int[] table int index) {
return table[index >> 3] >> ((index & 7) << 2) & 0xf;
}
static void setPruning2(int[] table long index int value) {
table[(int) (index >> 4)] ^= (0x3 ^ value) << ((index & 0xf) << 1);
}
static int getPruning2(int[] table long index) {
return table[(int) (index >> 4)] >> ((index & 0xf) << 1) & 0x3;
}
stati
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 301 2018-06-21 17:26 .classpath
文件 383 2018-06-21 17:26 .project
目录 0 2018-06-21 17:26 .settings\
文件 598 2018-06-21 17:26 .settings\org.eclipse.jdt.core.prefs
目录 0 2018-06-21 17:26 bin\
目录 0 2018-06-21 17:27 bin\main\
文件 17724 2018-06-21 17:27 bin\main\CoordCube.class
文件 14881 2018-06-21 17:27 bin\main\CubieCube.class
文件 2936 2018-06-21 18:02 bin\main\Main.class
文件 12815 2018-06-21 17:27 bin\main\Search.class
文件 8290 2018-06-21 17:27 bin\main\Util.class
目录 0 2018-06-21 17:26 src\
目录 0 2018-06-21 17:27 src\main\
文件 22457 2018-06-21 17:27 src\main\CoordCube.java
文件 21569 2018-06-21 17:27 src\main\CubieCube.java
文件 2636 2018-06-21 18:02 src\main\Main.java
文件 24455 2018-06-21 17:26 src\main\Search.java
文件 11327 2018-06-21 17:27 src\main\Util.java
评论
共有 条评论