Project

General

Profile

« Previous | Next » 

Revision 971a184e

Added by Leszek Koltunski about 1 year ago

CU_232 solver: finished

View differences:

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