Revision 971a184e
Added by Leszek Koltunski about 1 year ago
src/main/java/org/distorted/objectlib/tablebases/TablebasesAbstract.java | ||
---|---|---|
348 | 348 |
|
349 | 349 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
350 | 350 |
|
351 |
private void getNextAxisLayerAngle(int[] data) |
|
351 |
private void getNextAxisLayerAngleQuat(int[] data)
|
|
352 | 352 |
{ |
353 | 353 |
int axis = data[0]; |
354 | 354 |
int layer= data[1]; |
... | ... | |
366 | 366 |
data[0] = (axis<mNumAxis-1) ? axis+1 : 0; |
367 | 367 |
} |
368 | 368 |
} |
369 |
|
|
370 |
data[3] = data[2]; |
|
371 |
for(int i=0; i<data[0]; i++) data[3] += (mAngles[i][0]-1); |
|
369 | 372 |
} |
370 | 373 |
|
371 | 374 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
374 | 377 |
{ |
375 | 378 |
if( !mInitialized ) return null; |
376 | 379 |
|
377 |
int[] data = new int[3];
|
|
380 |
int[] data = new int[4];
|
|
378 | 381 |
byte level = mTablebase.retrievePacked(index); |
379 | 382 |
ArrayList<int[]> moves = new ArrayList<>(); |
380 | 383 |
int[] quats = getQuats(index); |
... | ... | |
388 | 391 |
data[0]=0; |
389 | 392 |
data[1]=0; |
390 | 393 |
data[2]=1; |
394 |
data[3]=1; |
|
391 | 395 |
|
392 | 396 |
for(int ax=0; ax<mNumAxis; ax++) |
393 | 397 |
for(int cubit=0; cubit<mNumCubits; cubit++) |
... | ... | |
398 | 402 |
int ax = data[0]; |
399 | 403 |
int layer = data[1]; |
400 | 404 |
int angle = data[2]; |
405 |
int quat = data[3]; |
|
401 | 406 |
|
402 | 407 |
if( mRotatable[ax][layer] ) |
403 | 408 |
{ |
404 | 409 |
int bitLayer = (1<<layer); |
405 | 410 |
System.arraycopy(quats, 0, tmpQuats, 0, numQuats); |
406 |
int quat = ax*(mAngles[ax][0]-1) + angle; |
|
407 | 411 |
|
408 | 412 |
for(int cubit=0; cubit<mNumCubits; cubit++) |
409 | 413 |
if( mRotRow[cubit][ax]==bitLayer ) |
... | ... | |
425 | 429 |
} |
426 | 430 |
} |
427 | 431 |
|
428 |
getNextAxisLayerAngle(data); |
|
432 |
getNextAxisLayerAngleQuat(data);
|
|
429 | 433 |
} |
430 | 434 |
|
431 | 435 |
quats = getQuats(index); |
... | ... | |
446 | 450 |
{ |
447 | 451 |
if( !mInitialized ) return null; |
448 | 452 |
|
449 |
int[] data = new int[3];
|
|
453 |
int[] data = new int[4];
|
|
450 | 454 |
int level=0; |
451 | 455 |
int[][] moves = new int[depth][3]; |
452 | 456 |
int[] quats = getQuats(0); |
... | ... | |
460 | 464 |
data[0]=0; |
461 | 465 |
data[1]=0; |
462 | 466 |
data[2]=1; |
467 |
data[3]=1; |
|
463 | 468 |
|
464 | 469 |
int random = rnd.nextInt(mScalingFactor); |
465 |
for(int i=0; i<random; i++) getNextAxisLayerAngle(data); |
|
470 |
for(int i=0; i<random; i++) getNextAxisLayerAngleQuat(data);
|
|
466 | 471 |
|
467 | 472 |
for(int ax=0; ax<mNumAxis; ax++) |
468 | 473 |
for(int cubit=0; cubit<mNumCubits; cubit++) |
... | ... | |
473 | 478 |
int ax = data[0]; |
474 | 479 |
int layer = data[1]; |
475 | 480 |
int angle = data[2]; |
481 |
int quat = data[3]; |
|
476 | 482 |
|
477 | 483 |
if( mRotatable[ax][layer] ) |
478 | 484 |
{ |
479 | 485 |
int bitLayer = (1<<layer); |
480 | 486 |
System.arraycopy(quats, 0, tmpQuats, 0, numQuats); |
481 |
int quat = ax*(mAngles[ax][0]-1) + angle; |
|
482 | 487 |
|
483 | 488 |
for(int cubit=0; cubit<mNumCubits; cubit++) |
484 | 489 |
if( mRotRow[cubit][ax]==bitLayer ) |
... | ... | |
500 | 505 |
} |
501 | 506 |
} |
502 | 507 |
|
503 |
getNextAxisLayerAngle(data); |
|
508 |
getNextAxisLayerAngleQuat(data);
|
|
504 | 509 |
} |
505 | 510 |
|
506 | 511 |
if( !found ) |
Also available in: Unified diff
CU_232 solver: finished