#include //3_2 //1 - vermelho //2 - verde //3 - azul //4_2 //1 - vermelho //2 - verde //3 - azul //4 - magenta //6_2 //1 - vermelho //2 - verde //3 - azul //4 - ciano //5 - magenta //6 - amarelo int matrix3_2[4*9]={ 0, 3, 6, 9, 14, 17, 19, 11, 28, 34, 22, 24, 26, 29, 18, 21, 1, 31, 33, 35, 15, 4, 8, 13, 16, 23, 32, 12, 27, 5, 7, 25, 2, 10, 20, 30 }; int matrix4_2[9*16]={ 91, 101, 108, 116, 47, 64, 72, 76, 82, 103, 121, 140, 22, 31, 66, 84, 86, 94, 123, 142, 40, 45, 53, 60, 74, 88, 106, 0, 43, 49, 55, 58, 62, 69, 78, 80, 1, 129, 131, 133, 135, 137, 139, 141, 143, 92, 4, 6, 12, 19, 41, 44, 57, 71, 104, 111, 118, 10, 16, 50, 68, 90, 102, 124, 127, 96, 98, 109, 113, 115, 120, 122, 125, 7, 14, 21, 52, 54, 56, 67, 112, 2, 25, 38, 59, 61, 100, 117, 119, 128, 23, 27, 34, 48, 63, 93, 97, 130, 18, 29, 32, 36, 46, 65, 105, 132, 5, 9, 30, 39, 42, 70, 89, 95, 99, 17, 28, 73, 79, 107, 110, 126, 134, 33, 35, 51, 77, 81, 85, 114, 136, 3, 8, 13, 37, 75, 83, 87, 138, 11, 15, 20, 24, 26 }; int matrix6_2[25*36]={ 708, 741, 752, 764, 834, 14, 19, 23, 27, 32, 43, 82, 114, 130, 197, 219, 250, 364, 376, 401, 500, 543, 571, 633, 654, 769, 783, 790, 836, 37, 40, 52, 54, 118, 142, 252, 278, 382, 450, 521, 552, 595, 604, 644, 659, 682, 745, 760, 762, 766, 805, 809, 838, 58, 72, 149, 295, 474, 559, 576, 612, 620, 657, 680, 687, 691, 697, 750, 758, 787, 792, 797, 799, 801, 803, 848, 851, 574, 678, 710, 735, 756, 771, 773, 775, 777, 811, 813, 815, 817, 819, 823, 825, 827, 829, 831, 840, 842, 844, 846, 1, 853, 855, 857, 859, 861, 863, 865, 867, 869, 871, 873, 875, 877, 879, 881, 883, 885, 887, 889, 891, 893, 895, 897, 899, 733, 4, 6, 8, 10, 16, 21, 25, 30, 45, 84, 86, 116, 175, 179, 189, 217, 314, 318, 340, 370, 489, 528, 622, 699, 34, 38, 59, 69, 75, 80, 132, 147, 153, 161, 173, 177, 293, 300, 302, 316, 338, 472, 491, 516, 520, 575, 734, 854, 29, 47, 73, 77, 91, 102, 112, 128, 155, 183, 191, 195, 215, 306, 322, 344, 362, 368, 493, 530, 534, 679, 709, 856, 5, 13, 56, 88, 93, 108, 151, 157, 163, 201, 221, 244, 248, 308, 348, 372, 420, 448, 495, 549, 711, 742, 770, 858, 7, 18, 36, 95, 98, 104, 121, 126, 165, 185, 258, 262, 267, 304, 310, 414, 457, 465, 470, 497, 753, 784, 806, 860, 9, 42, 51, 71, 849, 11, 49, 61, 65, 100, 106, 134, 136, 140, 159, 187, 272, 274, 276, 298, 312, 455, 463, 486, 488, 499, 765, 791, 810, 2, 63, 67, 110, 123, 138, 145, 171, 193, 284, 287, 291, 320, 477, 481, 504, 510, 737, 779, 821, 833, 835, 837, 839, 852, 143, 181, 199, 241, 254, 324, 328, 342, 387, 397, 418, 514, 518, 560, 581, 594, 611, 772, 864, 3, 12, 17, 103, 105, 109, 203, 207, 223, 269, 280, 289, 336, 352, 405, 424, 484, 532, 562, 577, 599, 619, 774, 866, 15, 22, 35, 50, 64, 122, 152, 169, 225, 229, 233, 326, 346, 350, 354, 410, 442, 502, 506, 538, 564, 624, 776, 868, 20, 26, 39, 41, 48, 62, 68, 127, 205, 227, 231, 235, 237, 330, 334, 356, 358, 378, 512, 536, 540, 545, 568, 870, 24, 31, 53, 57, 60, 66, 74, 111, 150, 78, 89, 96, 124, 209, 213, 246, 256, 260, 296, 360, 366, 374, 380, 399, 527, 542, 551, 558, 573, 736, 28, 46, 55, 70, 119, 167, 211, 239, 264, 282, 332, 385, 391, 393, 412, 475, 508, 547, 566, 570, 603, 757, 850, 862, 33, 76, 92, 94, 99, 395, 403, 522, 524, 554, 579, 592, 630, 662, 666, 681, 686, 814, 874, 85, 90, 107, 120, 139, 192, 222, 232, 234, 259, 281, 407, 416, 428, 583, 586, 597, 609, 635, 670, 688, 696, 816, 876, 44, 81, 87, 97, 135, 144, 146, 168, 236, 245, 263, 327, 422, 426, 430, 432, 590, 601, 628, 637, 675, 703, 818, 878, 83, 113, 117, 125, 133, 137, 172, 182, 204, 212, 238, 253, 268, 434, 436, 438, 444, 607, 613, 626, 639, 641, 651, 880, 115, 129, 141, 148, 158, 170, 176, 194, 200, 208, 210, 240, 279, 409, 242, 265, 285, 383, 440, 446, 453, 461, 556, 617, 621, 632, 643, 656, 677, 778, 131, 154, 156, 164, 166, 180, 206, 224, 226, 270, 389, 451, 459, 467, 479, 588, 615, 647, 649, 653, 658, 690, 812, 872, 79, 101, 162, 184, 186, 198, 202, 228, 230, 255, 660, 668, 694, 739, 747, 759, 796, 826, 884, 188, 190, 247, 266, 271, 283, 288, 345, 357, 373, 411, 415, 425, 433, 439, 587, 672, 701, 713, 781, 788, 808, 828, 886, 174, 218, 220, 257, 273, 286, 292, 325, 333, 359, 390, 396, 421, 443, 445, 458, 591, 705, 715, 719, 723, 794, 830, 888, 178, 196, 251, 261, 275, 290, 315, 321, 329, 379, 384, 386, 404, 408, 452, 466, 553, 608, 692, 717, 721, 725, 727, 890, 216, 249, 277, 294, 297, 319, 337, 343, 347, 365, 392, 417, 423, 441, 460, 478, 523, 596, 674, 468, 482, 525, 605, 684, 698, 707, 744, 749, 755, 820, 301, 305, 307, 309, 331, 341, 351, 353, 377, 388, 394, 427, 429, 435, 584, 645, 664, 729, 731, 751, 768, 786, 824, 882, 160, 214, 243, 303, 311, 323, 335, 349, 355, 398, 402, 406, 431, 437, 555, 789, 802, 843, 894, 313, 367, 371, 413, 454, 480, 483, 505, 535, 541, 565, 585, 600, 640, 676, 689, 712, 722, 724, 754, 767, 804, 845, 896, 317, 375, 419, 456, 462, 476, 490, 501, 511, 526, 546, 580, 589, 625, 642, 646, 661, 704, 726, 743, 785, 795, 847, 898, 339, 363, 381, 464, 485, 509, 515, 529, 544, 557, 569, 593, 598, 606, 616, 652, 665, 669, 673, 683, 728, 738, 807, 0, 369, 400, 449, 473, 487, 503, 519, 533, 548, 572, 602, 610, 618, 623, 631, 648, 685, 695, 702, 706, 730, 746, 780, 793, 732, 740, 761, 798, 822, 832, 471, 492, 494, 496, 507, 513, 561, 563, 567, 614, 629, 634, 636, 650, 663, 693, 700, 714, 716, 763, 782, 800, 841, 892, 299, 361, 447, 469, 498, 517, 531, 537, 539, 550, 578, 582, 627, 638, 655, 667, 671, 718, 720, 748 }; int getBcslStripeCode(int base, int colorLeft1, int colorRight1,int colorLeft2, int colorRight2) { int aux1, aux2,linha,coluna; if(colorLeft1<1 || colorLeft1>base || colorRight1<1 || colorRight1>base || colorLeft2<1 || colorLeft2>base || colorRight2<1 || colorRight2>base ){ //printf("Error: invalid BCSL color\n"); return -1; } colorLeft2--; colorRight2--; colorLeft1--; colorRight1--; linha = (colorLeft1 * base) + colorLeft2; aux1 = (colorRight2 - colorLeft2); aux2 = (colorRight1 - colorLeft1); if (aux1>0) aux1 = aux1 - 1; else aux1 = ((base-1) + aux1); if (aux2>0) aux2 = aux2 - 1; else aux2 = ((base-1) + aux2); coluna = ((aux2) * (base-1)) + (aux1); switch(base){ case 3: return matrix3_2[linha *4+coluna]; break; case 4: return matrix4_2[linha *9 +coluna]; break; case 6: return matrix6_2[linha *25 +coluna]; break; default: printf("Error: invalid BCSL base\n"); return -1; } }