MCPcopy Create free account
hub / github.com/dhbloo/rapfi / fillPatternCodeLUT

Function fillPatternCodeLUT

Rapfi/game/pattern.cpp:406–461  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

404}
405
406void fillPatternCodeLUT(PatternCode pcode[PATTERN_NB][PATTERN_NB][PATTERN_NB][PATTERN_NB])
407{
408 constexpr int N = PATTERN_NB;
409 constexpr int N2 = N * N;
410 constexpr int N3 = N2 * N;
411 constexpr int N4 = N3 * N;
412 int v[N4] = {-1};
413
414 for (int x = 0, i = 0; x < N; x++)
415 for (int y = 0; y < N; y++)
416 for (int z = 0; z < N; z++)
417 for (int w = 0; w < N; w++) {
418 int a = x, b = y, c = z, d = w;
419 if (a > b)
420 std::swap(a, b);
421 if (c > d)
422 std::swap(c, d);
423 if (a > c)
424 std::swap(a, c);
425 if (b > d)
426 std::swap(b, d);
427 if (b > c)
428 std::swap(b, c);
429
430 v[i++] = a * N3 + b * N2 + c * N + d;
431 }
432
433 for (int i = 0; i < N4; i++)
434 if (v[i] > -1)
435 for (int j = i + 1; j < N4; j++)
436 if (v[i] == v[j])
437 v[j] = -1;
438
439 for (int i = 0, count = 0; i < N4; i++)
440 if (v[i] > -1)
441 v[i] = count++;
442
443 for (int i = 0; i < N; i++)
444 for (int j = 0; j < N; j++)
445 for (int m = 0; m < N; m++)
446 for (int n = 0; n < N; n++) {
447 int a = i, b = j, c = m, d = n;
448 if (a > b)
449 std::swap(a, b);
450 if (c > d)
451 std::swap(c, d);
452 if (a > c)
453 std::swap(a, c);
454 if (b > d)
455 std::swap(b, d);
456 if (b > c)
457 std::swap(b, c);
458
459 pcode[i][j][m][n] = v[a * N3 + b * N2 + c * N + d];
460 }
461}
462
463template <Rule R>

Callers 1

pattern.cppFile · 0.85

Calls 1

swapFunction · 0.50

Tested by

no test coverage detected