resolved readme.m conflict to master

This commit is contained in:
g-spacewhale 2017-11-18 08:36:50 +01:00
commit 204387c42f
23 changed files with 3870 additions and 3684 deletions

BIN
.README.md.swp Normal file

Binary file not shown.

BIN
.README_BASE_289.md.swp Normal file

Binary file not shown.

BIN
.README_LOCAL_289.md.swp Normal file

Binary file not shown.

BIN
.README_REMOTE_289.md.swp Normal file

Binary file not shown.

View File

@ -1,400 +1,400 @@
myFirstBox[0].setConections(01101001);
myFirstBox[1].setConections(10011001);
myFirstBox[2].setConections(01100110);
myFirstBox[3].setConections(01101001);
myFirstBox[4].setConections(10100101);
myFirstBox[5].setConections(10010010);
myFirstBox[6].setConections(01101001);
myFirstBox[7].setConections(00101010);
myFirstBox[8].setConections(01000110);
myFirstBox[9].setConections(01011010);
myFirstBox[10].setConections(01011010);
myFirstBox[11].setConections(10010101);
myFirstBox[12].setConections(01010101);
myFirstBox[13].setConections(10101001);
myFirstBox[14].setConections(10010101);
myFirstBox[15].setConections(10101010);
myFirstBox[16].setConections(01101010);
myFirstBox[17].setConections(01101010);
myFirstBox[18].setConections(00100101);
myFirstBox[19].setConections(01100101);
myFirstBox[20].setConections(10010001);
myFirstBox[21].setConections(10010101);
myFirstBox[22].setConections(10101001);
myFirstBox[23].setConections(01010110);
myFirstBox[24].setConections(10101010);
myFirstBox[25].setConections(01101000);
myFirstBox[26].setConections(01101010);
myFirstBox[27].setConections(10010101);
myFirstBox[28].setConections(10011010);
myFirstBox[29].setConections(10011001);
myFirstBox[30].setConections(01101010);
myFirstBox[31].setConections(01100001);
myFirstBox[32].setConections(01101010);
myFirstBox[33].setConections(01100101);
myFirstBox[34].setConections(01010101);
myFirstBox[35].setConections(01010110);
myFirstBox[36].setConections(01101010);
myFirstBox[37].setConections(01010110);
myFirstBox[38].setConections(01100110);
myFirstBox[39].setConections(01011010);
myFirstBox[40].setConections(01100101);
myFirstBox[41].setConections(01101001);
myFirstBox[42].setConections(01010110);
myFirstBox[43].setConections(01000110);
myFirstBox[44].setConections(01011001);
myFirstBox[45].setConections(01101001);
myFirstBox[46].setConections(10000101);
myFirstBox[47].setConections(10011010);
myFirstBox[48].setConections(10010110);
myFirstBox[49].setConections(01011010);
myFirstBox[50].setConections(10011001);
myFirstBox[51].setConections(01001001);
myFirstBox[52].setConections(10100110);
myFirstBox[53].setConections(01001010);
myFirstBox[54].setConections(10010010);
myFirstBox[55].setConections(01001010);
myFirstBox[56].setConections(01101001);
myFirstBox[57].setConections(10100110);
myFirstBox[58].setConections(10010110);
myFirstBox[59].setConections(10010110);
myFirstBox[60].setConections(10101001);
myFirstBox[61].setConections(00100101);
myFirstBox[62].setConections(00101001);
myFirstBox[63].setConections(01101001);
myFirstBox[64].setConections(01101001);
myFirstBox[65].setConections(00100101);
myFirstBox[66].setConections(10010110);
myFirstBox[67].setConections(10011010);
myFirstBox[68].setConections(01100110);
myFirstBox[69].setConections(10010110);
myFirstBox[70].setConections(01010100);
myFirstBox[71].setConections(01011010);
myFirstBox[72].setConections(01100110);
myFirstBox[73].setConections(01100101);
myFirstBox[74].setConections(10011010);
myFirstBox[75].setConections(10010101);
myFirstBox[76].setConections(10011010);
myFirstBox[77].setConections(01100101);
myFirstBox[78].setConections(10011010);
myFirstBox[79].setConections(01010110);
myFirstBox[80].setConections(01101010);
myFirstBox[81].setConections(01010101);
myFirstBox[82].setConections(01100101);
myFirstBox[83].setConections(10100101);
myFirstBox[84].setConections(01010110);
myFirstBox[85].setConections(01101010);
myFirstBox[86].setConections(10011010);
myFirstBox[87].setConections(10010110);
myFirstBox[88].setConections(01101010);
myFirstBox[89].setConections(01011010);
myFirstBox[90].setConections(01010110);
myFirstBox[91].setConections(01100101);
myFirstBox[92].setConections(00100101);
myFirstBox[93].setConections(10100101);
myFirstBox[94].setConections(10010110);
myFirstBox[95].setConections(01100110);
myFirstBox[96].setConections(10000110);
myFirstBox[97].setConections(01001001);
myFirstBox[98].setConections(10010110);
myFirstBox[99].setConections(10100110);
myFirstBox[100].setConections(10100110);
myFirstBox[101].setConections(01100010);
myFirstBox[102].setConections(01101010);
myFirstBox[103].setConections(10011001);
myFirstBox[104].setConections(01010101);
myFirstBox[105].setConections(10011010);
myFirstBox[106].setConections(10101001);
myFirstBox[107].setConections(01100110);
myFirstBox[108].setConections(10101001);
myFirstBox[109].setConections(10101001);
myFirstBox[110].setConections(10010100);
myFirstBox[111].setConections(01100110);
myFirstBox[112].setConections(01010110);
myFirstBox[113].setConections(10010101);
myFirstBox[114].setConections(01011001);
myFirstBox[115].setConections(01101010);
myFirstBox[116].setConections(10100110);
myFirstBox[117].setConections(10100101);
myFirstBox[118].setConections(10101010);
myFirstBox[119].setConections(01011010);
myFirstBox[120].setConections(10011000);
myFirstBox[121].setConections(10010101);
myFirstBox[122].setConections(10100101);
myFirstBox[123].setConections(10000110);
myFirstBox[124].setConections(01100101);
myFirstBox[125].setConections(10100110);
myFirstBox[126].setConections(10101010);
myFirstBox[127].setConections(01101001);
myFirstBox[128].setConections(01010101);
myFirstBox[129].setConections(01100101);
myFirstBox[130].setConections(10001001);
myFirstBox[131].setConections(01101010);
myFirstBox[132].setConections(01101010);
myFirstBox[133].setConections(01100010);
myFirstBox[134].setConections(01100110);
myFirstBox[135].setConections(10100001);
myFirstBox[136].setConections(10011001);
myFirstBox[137].setConections(01101010);
myFirstBox[138].setConections(01011001);
myFirstBox[139].setConections(10001001);
myFirstBox[140].setConections(01010101);
myFirstBox[141].setConections(10100101);
myFirstBox[142].setConections(01100101);
myFirstBox[143].setConections(10100101);
myFirstBox[144].setConections(10011010);
myFirstBox[145].setConections(10010001);
myFirstBox[146].setConections(10100110);
myFirstBox[147].setConections(01101010);
myFirstBox[148].setConections(10010101);
myFirstBox[149].setConections(01100101);
myFirstBox[150].setConections(10100101);
myFirstBox[151].setConections(10100110);
myFirstBox[152].setConections(10010001);
myFirstBox[153].setConections(10101000);
myFirstBox[154].setConections(10011010);
myFirstBox[155].setConections(10100110);
myFirstBox[156].setConections(01100110);
myFirstBox[157].setConections(10100110);
myFirstBox[158].setConections(01011010);
myFirstBox[159].setConections(10100001);
myFirstBox[160].setConections(01010101);
myFirstBox[161].setConections(10011010);
myFirstBox[162].setConections(10101001);
myFirstBox[163].setConections(01010110);
myFirstBox[164].setConections(01100001);
myFirstBox[165].setConections(01011001);
myFirstBox[166].setConections(01101001);
myFirstBox[167].setConections(10011001);
myFirstBox[168].setConections(10010101);
myFirstBox[169].setConections(01100010);
myFirstBox[170].setConections(01010110);
myFirstBox[171].setConections(00010101);
myFirstBox[172].setConections(10100101);
myFirstBox[173].setConections(10101010);
myFirstBox[174].setConections(10011010);
myFirstBox[175].setConections(01100101);
myFirstBox[176].setConections(10100110);
myFirstBox[177].setConections(10101001);
myFirstBox[178].setConections(01011010);
myFirstBox[179].setConections(01101001);
myFirstBox[180].setConections(10010101);
myFirstBox[181].setConections(01101010);
myFirstBox[182].setConections(10010110);
myFirstBox[183].setConections(10010110);
myFirstBox[184].setConections(10011001);
myFirstBox[185].setConections(10100101);
myFirstBox[186].setConections(10010110);
myFirstBox[187].setConections(10010110);
myFirstBox[188].setConections(10011010);
myFirstBox[189].setConections(10010101);
myFirstBox[190].setConections(01010001);
myFirstBox[191].setConections(01010100);
myFirstBox[192].setConections(10101000);
myFirstBox[193].setConections(10100110);
myFirstBox[194].setConections(01010001);
myFirstBox[195].setConections(01010101);
myFirstBox[196].setConections(01100110);
myFirstBox[197].setConections(10100101);
myFirstBox[198].setConections(00100101);
myFirstBox[199].setConections(00100101);
myFirstBox[200].setConections(10101001);
myFirstBox[201].setConections(10101001);
myFirstBox[202].setConections(01011001);
myFirstBox[203].setConections(00001010);
myFirstBox[204].setConections(01010101);
myFirstBox[205].setConections(10011010);
myFirstBox[206].setConections(10100110);
myFirstBox[207].setConections(10100101);
myFirstBox[208].setConections(10011001);
myFirstBox[209].setConections(10100110);
myFirstBox[210].setConections(10101010);
myFirstBox[211].setConections(01010110);
myFirstBox[212].setConections(01010101);
myFirstBox[213].setConections(01100010);
myFirstBox[214].setConections(10010110);
myFirstBox[215].setConections(10011010);
myFirstBox[216].setConections(01100100);
myFirstBox[217].setConections(01010101);
myFirstBox[218].setConections(10011010);
myFirstBox[219].setConections(01100101);
myFirstBox[220].setConections(10101001);
myFirstBox[221].setConections(10010101);
myFirstBox[222].setConections(10100101);
myFirstBox[223].setConections(10101001);
myFirstBox[224].setConections(10100110);
myFirstBox[225].setConections(10011001);
myFirstBox[226].setConections(01011010);
myFirstBox[227].setConections(01000101);
myFirstBox[228].setConections(01100110);
myFirstBox[229].setConections(10101010);
myFirstBox[230].setConections(01010100);
myFirstBox[231].setConections(10101010);
myFirstBox[232].setConections(10011010);
myFirstBox[233].setConections(10100110);
myFirstBox[234].setConections(10011000);
myFirstBox[235].setConections(10011001);
myFirstBox[236].setConections(01010101);
myFirstBox[237].setConections(01001010);
myFirstBox[238].setConections(01100001);
myFirstBox[239].setConections(10011010);
myFirstBox[240].setConections(10010101);
myFirstBox[241].setConections(10100110);
myFirstBox[242].setConections(01010101);
myFirstBox[243].setConections(10010101);
myFirstBox[244].setConections(01101010);
myFirstBox[245].setConections(01101010);
myFirstBox[246].setConections(10100100);
myFirstBox[247].setConections(00101010);
myFirstBox[248].setConections(01100110);
myFirstBox[249].setConections(01101000);
myFirstBox[250].setConections(01101001);
myFirstBox[251].setConections(10101001);
myFirstBox[252].setConections(01010110);
myFirstBox[253].setConections(10010110);
myFirstBox[254].setConections(01100101);
myFirstBox[255].setConections(01011001);
myFirstBox[256].setConections(01100110);
myFirstBox[257].setConections(00100101);
myFirstBox[258].setConections(01101001);
myFirstBox[259].setConections(10010110);
myFirstBox[260].setConections(10011001);
myFirstBox[261].setConections(10011001);
myFirstBox[262].setConections(01101001);
myFirstBox[263].setConections(01010010);
myFirstBox[264].setConections(10101010);
myFirstBox[265].setConections(01101001);
myFirstBox[266].setConections(01101001);
myFirstBox[267].setConections(01101001);
myFirstBox[268].setConections(10010110);
myFirstBox[269].setConections(10011001);
myFirstBox[270].setConections(01101010);
myFirstBox[271].setConections(10000110);
myFirstBox[272].setConections(10010101);
myFirstBox[273].setConections(00010101);
myFirstBox[274].setConections(10101010);
myFirstBox[275].setConections(01010110);
myFirstBox[276].setConections(01100100);
myFirstBox[277].setConections(01010101);
myFirstBox[278].setConections(10010101);
myFirstBox[279].setConections(01010101);
myFirstBox[280].setConections(01011010);
myFirstBox[281].setConections(10011010);
myFirstBox[282].setConections(00010101);
myFirstBox[283].setConections(10010110);
myFirstBox[284].setConections(10100101);
myFirstBox[285].setConections(10010101);
myFirstBox[286].setConections(01101001);
myFirstBox[287].setConections(10100101);
myFirstBox[288].setConections(01101001);
myFirstBox[289].setConections(10011001);
myFirstBox[290].setConections(01011001);
myFirstBox[291].setConections(10010110);
myFirstBox[292].setConections(01010101);
myFirstBox[293].setConections(10100110);
myFirstBox[294].setConections(10101001);
myFirstBox[295].setConections(10101001);
myFirstBox[296].setConections(01011010);
myFirstBox[297].setConections(10100101);
myFirstBox[298].setConections(01011010);
myFirstBox[299].setConections(01100110);
myFirstBox[300].setConections(10010101);
myFirstBox[301].setConections(10101001);
myFirstBox[302].setConections(10011001);
myFirstBox[303].setConections(01010101);
myFirstBox[304].setConections(01010101);
myFirstBox[305].setConections(10101001);
myFirstBox[306].setConections(01100101);
myFirstBox[307].setConections(01101000);
myFirstBox[308].setConections(01010101);
myFirstBox[309].setConections(10010110);
myFirstBox[310].setConections(10010110);
myFirstBox[311].setConections(01011010);
myFirstBox[312].setConections(10010110);
myFirstBox[313].setConections(01011001);
myFirstBox[314].setConections(01010110);
myFirstBox[315].setConections(01101001);
myFirstBox[316].setConections(10100101);
myFirstBox[317].setConections(10101010);
myFirstBox[318].setConections(10011001);
myFirstBox[319].setConections(01010110);
myFirstBox[320].setConections(10100000);
myFirstBox[321].setConections(10100101);
myFirstBox[322].setConections(00010101);
myFirstBox[323].setConections(01010110);
myFirstBox[324].setConections(01101010);
myFirstBox[325].setConections(10010110);
myFirstBox[326].setConections(00001001);
myFirstBox[327].setConections(10011010);
myFirstBox[328].setConections(10101010);
myFirstBox[329].setConections(01100101);
myFirstBox[330].setConections(01011010);
myFirstBox[331].setConections(01101010);
myFirstBox[332].setConections(10100101);
myFirstBox[333].setConections(10100101);
myFirstBox[334].setConections(01011000);
myFirstBox[335].setConections(01010110);
myFirstBox[336].setConections(00100110);
myFirstBox[337].setConections(01101010);
myFirstBox[338].setConections(01101010);
myFirstBox[339].setConections(10010110);
myFirstBox[340].setConections(10101010);
myFirstBox[341].setConections(01100110);
myFirstBox[342].setConections(10011000);
myFirstBox[343].setConections(10101010);
myFirstBox[344].setConections(01011001);
myFirstBox[345].setConections(01101001);
myFirstBox[346].setConections(10010101);
myFirstBox[347].setConections(10101010);
myFirstBox[348].setConections(10011001);
myFirstBox[349].setConections(01101001);
myFirstBox[350].setConections(01010110);
myFirstBox[351].setConections(10000110);
myFirstBox[352].setConections(10010110);
myFirstBox[353].setConections(10011010);
myFirstBox[354].setConections(01010110);
myFirstBox[355].setConections(10010010);
myFirstBox[356].setConections(10100110);
myFirstBox[357].setConections(10101001);
myFirstBox[358].setConections(01011001);
myFirstBox[359].setConections(01010000);
myFirstBox[360].setConections(10011001);
myFirstBox[361].setConections(01101001);
myFirstBox[362].setConections(01100001);
myFirstBox[363].setConections(10100110);
myFirstBox[364].setConections(10100101);
myFirstBox[365].setConections(01100101);
myFirstBox[366].setConections(01001010);
myFirstBox[367].setConections(10010110);
myFirstBox[368].setConections(10010101);
myFirstBox[369].setConections(10010100);
myFirstBox[370].setConections(01010101);
myFirstBox[371].setConections(01011000);
myFirstBox[372].setConections(01100010);
myFirstBox[373].setConections(10011001);
myFirstBox[374].setConections(01100110);
myFirstBox[375].setConections(10100101);
myFirstBox[376].setConections(01000110);
myFirstBox[377].setConections(01010101);
myFirstBox[378].setConections(01100110);
myFirstBox[379].setConections(10100110);
myFirstBox[380].setConections(00100110);
myFirstBox[381].setConections(01101001);
myFirstBox[382].setConections(01100101);
myFirstBox[383].setConections(10010101);
myFirstBox[384].setConections(01101001);
myFirstBox[385].setConections(10010110);
myFirstBox[386].setConections(10010101);
myFirstBox[387].setConections(10101001);
myFirstBox[388].setConections(10011001);
myFirstBox[389].setConections(01010110);
myFirstBox[390].setConections(10100010);
myFirstBox[391].setConections(10101001);
myFirstBox[392].setConections(01101010);
myFirstBox[393].setConections(10101010);
myFirstBox[394].setConections(01100110);
myFirstBox[395].setConections(01010101);
myFirstBox[396].setConections(01101001);
myFirstBox[397].setConections(10010101);
myFirstBox[398].setConections(10100110);
myFirstBox[399].setConections(01101010);
myFirstBox[0].setConections(01101001);
myFirstBox[1].setConections(10011001);
myFirstBox[2].setConections(01100110);
myFirstBox[3].setConections(01101001);
myFirstBox[4].setConections(10100101);
myFirstBox[5].setConections(10010010);
myFirstBox[6].setConections(01101001);
myFirstBox[7].setConections(00101010);
myFirstBox[8].setConections(01000110);
myFirstBox[9].setConections(01011010);
myFirstBox[10].setConections(01011010);
myFirstBox[11].setConections(10010101);
myFirstBox[12].setConections(01010101);
myFirstBox[13].setConections(10101001);
myFirstBox[14].setConections(10010101);
myFirstBox[15].setConections(10101010);
myFirstBox[16].setConections(01101010);
myFirstBox[17].setConections(01101010);
myFirstBox[18].setConections(00100101);
myFirstBox[19].setConections(01100101);
myFirstBox[20].setConections(10010001);
myFirstBox[21].setConections(10010101);
myFirstBox[22].setConections(10101001);
myFirstBox[23].setConections(01010110);
myFirstBox[24].setConections(10101010);
myFirstBox[25].setConections(01101000);
myFirstBox[26].setConections(01101010);
myFirstBox[27].setConections(10010101);
myFirstBox[28].setConections(10011010);
myFirstBox[29].setConections(10011001);
myFirstBox[30].setConections(01101010);
myFirstBox[31].setConections(01100001);
myFirstBox[32].setConections(01101010);
myFirstBox[33].setConections(01100101);
myFirstBox[34].setConections(01010101);
myFirstBox[35].setConections(01010110);
myFirstBox[36].setConections(01101010);
myFirstBox[37].setConections(01010110);
myFirstBox[38].setConections(01100110);
myFirstBox[39].setConections(01011010);
myFirstBox[40].setConections(01100101);
myFirstBox[41].setConections(01101001);
myFirstBox[42].setConections(01010110);
myFirstBox[43].setConections(01000110);
myFirstBox[44].setConections(01011001);
myFirstBox[45].setConections(01101001);
myFirstBox[46].setConections(10000101);
myFirstBox[47].setConections(10011010);
myFirstBox[48].setConections(10010110);
myFirstBox[49].setConections(01011010);
myFirstBox[50].setConections(10011001);
myFirstBox[51].setConections(01001001);
myFirstBox[52].setConections(10100110);
myFirstBox[53].setConections(01001010);
myFirstBox[54].setConections(10010010);
myFirstBox[55].setConections(01001010);
myFirstBox[56].setConections(01101001);
myFirstBox[57].setConections(10100110);
myFirstBox[58].setConections(10010110);
myFirstBox[59].setConections(10010110);
myFirstBox[60].setConections(10101001);
myFirstBox[61].setConections(00100101);
myFirstBox[62].setConections(00101001);
myFirstBox[63].setConections(01101001);
myFirstBox[64].setConections(01101001);
myFirstBox[65].setConections(00100101);
myFirstBox[66].setConections(10010110);
myFirstBox[67].setConections(10011010);
myFirstBox[68].setConections(01100110);
myFirstBox[69].setConections(10010110);
myFirstBox[70].setConections(01010100);
myFirstBox[71].setConections(01011010);
myFirstBox[72].setConections(01100110);
myFirstBox[73].setConections(01100101);
myFirstBox[74].setConections(10011010);
myFirstBox[75].setConections(10010101);
myFirstBox[76].setConections(10011010);
myFirstBox[77].setConections(01100101);
myFirstBox[78].setConections(10011010);
myFirstBox[79].setConections(01010110);
myFirstBox[80].setConections(01101010);
myFirstBox[81].setConections(01010101);
myFirstBox[82].setConections(01100101);
myFirstBox[83].setConections(10100101);
myFirstBox[84].setConections(01010110);
myFirstBox[85].setConections(01101010);
myFirstBox[86].setConections(10011010);
myFirstBox[87].setConections(10010110);
myFirstBox[88].setConections(01101010);
myFirstBox[89].setConections(01011010);
myFirstBox[90].setConections(01010110);
myFirstBox[91].setConections(01100101);
myFirstBox[92].setConections(00100101);
myFirstBox[93].setConections(10100101);
myFirstBox[94].setConections(10010110);
myFirstBox[95].setConections(01100110);
myFirstBox[96].setConections(10000110);
myFirstBox[97].setConections(01001001);
myFirstBox[98].setConections(10010110);
myFirstBox[99].setConections(10100110);
myFirstBox[100].setConections(10100110);
myFirstBox[101].setConections(01100010);
myFirstBox[102].setConections(01101010);
myFirstBox[103].setConections(10011001);
myFirstBox[104].setConections(01010101);
myFirstBox[105].setConections(10011010);
myFirstBox[106].setConections(10101001);
myFirstBox[107].setConections(01100110);
myFirstBox[108].setConections(10101001);
myFirstBox[109].setConections(10101001);
myFirstBox[110].setConections(10010100);
myFirstBox[111].setConections(01100110);
myFirstBox[112].setConections(01010110);
myFirstBox[113].setConections(10010101);
myFirstBox[114].setConections(01011001);
myFirstBox[115].setConections(01101010);
myFirstBox[116].setConections(10100110);
myFirstBox[117].setConections(10100101);
myFirstBox[118].setConections(10101010);
myFirstBox[119].setConections(01011010);
myFirstBox[120].setConections(10011000);
myFirstBox[121].setConections(10010101);
myFirstBox[122].setConections(10100101);
myFirstBox[123].setConections(10000110);
myFirstBox[124].setConections(01100101);
myFirstBox[125].setConections(10100110);
myFirstBox[126].setConections(10101010);
myFirstBox[127].setConections(01101001);
myFirstBox[128].setConections(01010101);
myFirstBox[129].setConections(01100101);
myFirstBox[130].setConections(10001001);
myFirstBox[131].setConections(01101010);
myFirstBox[132].setConections(01101010);
myFirstBox[133].setConections(01100010);
myFirstBox[134].setConections(01100110);
myFirstBox[135].setConections(10100001);
myFirstBox[136].setConections(10011001);
myFirstBox[137].setConections(01101010);
myFirstBox[138].setConections(01011001);
myFirstBox[139].setConections(10001001);
myFirstBox[140].setConections(01010101);
myFirstBox[141].setConections(10100101);
myFirstBox[142].setConections(01100101);
myFirstBox[143].setConections(10100101);
myFirstBox[144].setConections(10011010);
myFirstBox[145].setConections(10010001);
myFirstBox[146].setConections(10100110);
myFirstBox[147].setConections(01101010);
myFirstBox[148].setConections(10010101);
myFirstBox[149].setConections(01100101);
myFirstBox[150].setConections(10100101);
myFirstBox[151].setConections(10100110);
myFirstBox[152].setConections(10010001);
myFirstBox[153].setConections(10101000);
myFirstBox[154].setConections(10011010);
myFirstBox[155].setConections(10100110);
myFirstBox[156].setConections(01100110);
myFirstBox[157].setConections(10100110);
myFirstBox[158].setConections(01011010);
myFirstBox[159].setConections(10100001);
myFirstBox[160].setConections(01010101);
myFirstBox[161].setConections(10011010);
myFirstBox[162].setConections(10101001);
myFirstBox[163].setConections(01010110);
myFirstBox[164].setConections(01100001);
myFirstBox[165].setConections(01011001);
myFirstBox[166].setConections(01101001);
myFirstBox[167].setConections(10011001);
myFirstBox[168].setConections(10010101);
myFirstBox[169].setConections(01100010);
myFirstBox[170].setConections(01010110);
myFirstBox[171].setConections(00010101);
myFirstBox[172].setConections(10100101);
myFirstBox[173].setConections(10101010);
myFirstBox[174].setConections(10011010);
myFirstBox[175].setConections(01100101);
myFirstBox[176].setConections(10100110);
myFirstBox[177].setConections(10101001);
myFirstBox[178].setConections(01011010);
myFirstBox[179].setConections(01101001);
myFirstBox[180].setConections(10010101);
myFirstBox[181].setConections(01101010);
myFirstBox[182].setConections(10010110);
myFirstBox[183].setConections(10010110);
myFirstBox[184].setConections(10011001);
myFirstBox[185].setConections(10100101);
myFirstBox[186].setConections(10010110);
myFirstBox[187].setConections(10010110);
myFirstBox[188].setConections(10011010);
myFirstBox[189].setConections(10010101);
myFirstBox[190].setConections(01010001);
myFirstBox[191].setConections(01010100);
myFirstBox[192].setConections(10101000);
myFirstBox[193].setConections(10100110);
myFirstBox[194].setConections(01010001);
myFirstBox[195].setConections(01010101);
myFirstBox[196].setConections(01100110);
myFirstBox[197].setConections(10100101);
myFirstBox[198].setConections(00100101);
myFirstBox[199].setConections(00100101);
myFirstBox[200].setConections(10101001);
myFirstBox[201].setConections(10101001);
myFirstBox[202].setConections(01011001);
myFirstBox[203].setConections(00001010);
myFirstBox[204].setConections(01010101);
myFirstBox[205].setConections(10011010);
myFirstBox[206].setConections(10100110);
myFirstBox[207].setConections(10100101);
myFirstBox[208].setConections(10011001);
myFirstBox[209].setConections(10100110);
myFirstBox[210].setConections(10101010);
myFirstBox[211].setConections(01010110);
myFirstBox[212].setConections(01010101);
myFirstBox[213].setConections(01100010);
myFirstBox[214].setConections(10010110);
myFirstBox[215].setConections(10011010);
myFirstBox[216].setConections(01100100);
myFirstBox[217].setConections(01010101);
myFirstBox[218].setConections(10011010);
myFirstBox[219].setConections(01100101);
myFirstBox[220].setConections(10101001);
myFirstBox[221].setConections(10010101);
myFirstBox[222].setConections(10100101);
myFirstBox[223].setConections(10101001);
myFirstBox[224].setConections(10100110);
myFirstBox[225].setConections(10011001);
myFirstBox[226].setConections(01011010);
myFirstBox[227].setConections(01000101);
myFirstBox[228].setConections(01100110);
myFirstBox[229].setConections(10101010);
myFirstBox[230].setConections(01010100);
myFirstBox[231].setConections(10101010);
myFirstBox[232].setConections(10011010);
myFirstBox[233].setConections(10100110);
myFirstBox[234].setConections(10011000);
myFirstBox[235].setConections(10011001);
myFirstBox[236].setConections(01010101);
myFirstBox[237].setConections(01001010);
myFirstBox[238].setConections(01100001);
myFirstBox[239].setConections(10011010);
myFirstBox[240].setConections(10010101);
myFirstBox[241].setConections(10100110);
myFirstBox[242].setConections(01010101);
myFirstBox[243].setConections(10010101);
myFirstBox[244].setConections(01101010);
myFirstBox[245].setConections(01101010);
myFirstBox[246].setConections(10100100);
myFirstBox[247].setConections(00101010);
myFirstBox[248].setConections(01100110);
myFirstBox[249].setConections(01101000);
myFirstBox[250].setConections(01101001);
myFirstBox[251].setConections(10101001);
myFirstBox[252].setConections(01010110);
myFirstBox[253].setConections(10010110);
myFirstBox[254].setConections(01100101);
myFirstBox[255].setConections(01011001);
myFirstBox[256].setConections(01100110);
myFirstBox[257].setConections(00100101);
myFirstBox[258].setConections(01101001);
myFirstBox[259].setConections(10010110);
myFirstBox[260].setConections(10011001);
myFirstBox[261].setConections(10011001);
myFirstBox[262].setConections(01101001);
myFirstBox[263].setConections(01010010);
myFirstBox[264].setConections(10101010);
myFirstBox[265].setConections(01101001);
myFirstBox[266].setConections(01101001);
myFirstBox[267].setConections(01101001);
myFirstBox[268].setConections(10010110);
myFirstBox[269].setConections(10011001);
myFirstBox[270].setConections(01101010);
myFirstBox[271].setConections(10000110);
myFirstBox[272].setConections(10010101);
myFirstBox[273].setConections(00010101);
myFirstBox[274].setConections(10101010);
myFirstBox[275].setConections(01010110);
myFirstBox[276].setConections(01100100);
myFirstBox[277].setConections(01010101);
myFirstBox[278].setConections(10010101);
myFirstBox[279].setConections(01010101);
myFirstBox[280].setConections(01011010);
myFirstBox[281].setConections(10011010);
myFirstBox[282].setConections(00010101);
myFirstBox[283].setConections(10010110);
myFirstBox[284].setConections(10100101);
myFirstBox[285].setConections(10010101);
myFirstBox[286].setConections(01101001);
myFirstBox[287].setConections(10100101);
myFirstBox[288].setConections(01101001);
myFirstBox[289].setConections(10011001);
myFirstBox[290].setConections(01011001);
myFirstBox[291].setConections(10010110);
myFirstBox[292].setConections(01010101);
myFirstBox[293].setConections(10100110);
myFirstBox[294].setConections(10101001);
myFirstBox[295].setConections(10101001);
myFirstBox[296].setConections(01011010);
myFirstBox[297].setConections(10100101);
myFirstBox[298].setConections(01011010);
myFirstBox[299].setConections(01100110);
myFirstBox[300].setConections(10010101);
myFirstBox[301].setConections(10101001);
myFirstBox[302].setConections(10011001);
myFirstBox[303].setConections(01010101);
myFirstBox[304].setConections(01010101);
myFirstBox[305].setConections(10101001);
myFirstBox[306].setConections(01100101);
myFirstBox[307].setConections(01101000);
myFirstBox[308].setConections(01010101);
myFirstBox[309].setConections(10010110);
myFirstBox[310].setConections(10010110);
myFirstBox[311].setConections(01011010);
myFirstBox[312].setConections(10010110);
myFirstBox[313].setConections(01011001);
myFirstBox[314].setConections(01010110);
myFirstBox[315].setConections(01101001);
myFirstBox[316].setConections(10100101);
myFirstBox[317].setConections(10101010);
myFirstBox[318].setConections(10011001);
myFirstBox[319].setConections(01010110);
myFirstBox[320].setConections(10100000);
myFirstBox[321].setConections(10100101);
myFirstBox[322].setConections(00010101);
myFirstBox[323].setConections(01010110);
myFirstBox[324].setConections(01101010);
myFirstBox[325].setConections(10010110);
myFirstBox[326].setConections(00001001);
myFirstBox[327].setConections(10011010);
myFirstBox[328].setConections(10101010);
myFirstBox[329].setConections(01100101);
myFirstBox[330].setConections(01011010);
myFirstBox[331].setConections(01101010);
myFirstBox[332].setConections(10100101);
myFirstBox[333].setConections(10100101);
myFirstBox[334].setConections(01011000);
myFirstBox[335].setConections(01010110);
myFirstBox[336].setConections(00100110);
myFirstBox[337].setConections(01101010);
myFirstBox[338].setConections(01101010);
myFirstBox[339].setConections(10010110);
myFirstBox[340].setConections(10101010);
myFirstBox[341].setConections(01100110);
myFirstBox[342].setConections(10011000);
myFirstBox[343].setConections(10101010);
myFirstBox[344].setConections(01011001);
myFirstBox[345].setConections(01101001);
myFirstBox[346].setConections(10010101);
myFirstBox[347].setConections(10101010);
myFirstBox[348].setConections(10011001);
myFirstBox[349].setConections(01101001);
myFirstBox[350].setConections(01010110);
myFirstBox[351].setConections(10000110);
myFirstBox[352].setConections(10010110);
myFirstBox[353].setConections(10011010);
myFirstBox[354].setConections(01010110);
myFirstBox[355].setConections(10010010);
myFirstBox[356].setConections(10100110);
myFirstBox[357].setConections(10101001);
myFirstBox[358].setConections(01011001);
myFirstBox[359].setConections(01010000);
myFirstBox[360].setConections(10011001);
myFirstBox[361].setConections(01101001);
myFirstBox[362].setConections(01100001);
myFirstBox[363].setConections(10100110);
myFirstBox[364].setConections(10100101);
myFirstBox[365].setConections(01100101);
myFirstBox[366].setConections(01001010);
myFirstBox[367].setConections(10010110);
myFirstBox[368].setConections(10010101);
myFirstBox[369].setConections(10010100);
myFirstBox[370].setConections(01010101);
myFirstBox[371].setConections(01011000);
myFirstBox[372].setConections(01100010);
myFirstBox[373].setConections(10011001);
myFirstBox[374].setConections(01100110);
myFirstBox[375].setConections(10100101);
myFirstBox[376].setConections(01000110);
myFirstBox[377].setConections(01010101);
myFirstBox[378].setConections(01100110);
myFirstBox[379].setConections(10100110);
myFirstBox[380].setConections(00100110);
myFirstBox[381].setConections(01101001);
myFirstBox[382].setConections(01100101);
myFirstBox[383].setConections(10010101);
myFirstBox[384].setConections(01101001);
myFirstBox[385].setConections(10010110);
myFirstBox[386].setConections(10010101);
myFirstBox[387].setConections(10101001);
myFirstBox[388].setConections(10011001);
myFirstBox[389].setConections(01010110);
myFirstBox[390].setConections(10100010);
myFirstBox[391].setConections(10101001);
myFirstBox[392].setConections(01101010);
myFirstBox[393].setConections(10101010);
myFirstBox[394].setConections(01100110);
myFirstBox[395].setConections(01010101);
myFirstBox[396].setConections(01101001);
myFirstBox[397].setConections(10010101);
myFirstBox[398].setConections(10100110);
myFirstBox[399].setConections(01101010);

View File

@ -1,34 +1,34 @@
Übergangstruktur
next()
{
calculate best next move out of information in log
solve(with m and n or a puzzlepiece from box)
}
solve()
{
solve algorithm
if(no solution) backtrack!
if(multiple solutions) set multiple solutions into log...setsolution();
if(one solution) set solution into log...setsolution();
return{no solution, multiple solutions, one solution}
}
setsolution()
{
set pointer(s) in log
set pointer to log into matrix
}
backtrack()
{
go into log, remove last piece
goes back to next()
}
Übergangstruktur
next()
{
calculate best next move out of information in log
solve(with m and n or a puzzlepiece from box)
}
solve()
{
solve algorithm
if(no solution) backtrack!
if(multiple solutions) set multiple solutions into log...setsolution();
if(one solution) set solution into log...setsolution();
return{no solution, multiple solutions, one solution}
}
setsolution()
{
set pointer(s) in log
set pointer to log into matrix
}
backtrack()
{
go into log, remove last piece
goes back to next()
}

View File

@ -1,375 +1,375 @@
//Raphael Maenle - 11.11.2017
#include <iostream>
#include <bitset>
#include <cstdlib>
#include <time.h>
#include <vector>
#include <algorithm>
using namespace std;
class PuzzlePiece
{
public:
unsigned char Ringbuffer;
PuzzlePiece(unsigned int flag = 0)
{
shifts=0;
boxidentifier=-1;
switch(flag)
{
case 0:
Ringbuffer=0b00000000;
break;
case 1:
Ringbuffer=0b11111111;
break;
case 3:
randomCenterPiece();
break;
}
}
void Shift(unsigned int moves)
{
//Shift ringbuffer to the right n number of times
shifts = (shifts+moves)%4;
Ringbuffer = ((Ringbuffer >> (moves*2)) | (Ringbuffer << sizeof(unsigned char)*8 - (moves*2)));
}
void printPiece()
{
cout << bitset<sizeof(unsigned char)*8> (Ringbuffer);
}
//makes piece to random center piece
void randomCenterPiece()
{
this->Ringbuffer= 0b00000000;
if(rand()%2)
this->Ringbuffer |= 0b01000000;
else
this->Ringbuffer |= 0b10000000;
if(rand()%2)
this->Ringbuffer |= 0b00010000;
else
this->Ringbuffer |= 0b00100000;
if(rand()%2)
this->Ringbuffer |= 0b00000100;
else
this->Ringbuffer |= 0b00001000;
if(rand()%2)
this->Ringbuffer |= 0b00000001;
else
this->Ringbuffer |= 0b00000010;
}
void assignIdentifier()
{
identifier = idcount;
idcount++;
}
unsigned int getIdentifier()
{
return identifier;
}
void setBoxIdentifier(int new_boxid)
{
boxidentifier = new_boxid;
}
int getBoxIdentifier()
{
return boxidentifier;
}
private:
unsigned int shifts;
unsigned int identifier;
int boxidentifier;
static unsigned int idcount;
};
unsigned int PuzzlePiece::idcount(0);
//saves a matrix cluster of puzzlepieces
class Puzzle
{
public:
Puzzle(uint m = 7, uint n = 4): col(m), row(n)
{
Matrix = new PuzzlePiece* [n+2];
//Box = new PuzzlePiece[n*m];
for(int i = 0;i<n+2;i++)
{
Matrix[i] = new PuzzlePiece[m+2];
for(int j = 0;j<m+2;j++)
{
if(i==0 || j==0 || i==n+1 || j==m+1)
{
Matrix[i][j] = PuzzlePiece(0);
}
else
{
Matrix[i][j] = PuzzlePiece(1);
}
/*else
Matrix[i][j] = PuzzlePiece(1);*/
}
}
}
//this adds new piece end excludes the 0 bounds around the area
bool setPiece(uint m,uint n,PuzzlePiece newPiece)
{
if(this->PlaceOfPartGood(m,n,newPiece))
{
Matrix[n+1][m+1] = newPiece;
return 1;
}
return 0;
}
bool removePiece(uint m,uint n)
{
Matrix[n+1][m+1] = 0b11111111;
return 1;
}
PuzzlePiece getPiece(uint m,uint n)
{
return Matrix[n+1][m+1];
}
PuzzlePiece sudogetPiece(uint m,uint n)
{
return Matrix[n][m];
}
//check if place of the part in the matrix is correct
bool PlaceOfPartGood(unsigned int m, unsigned int n, PuzzlePiece& myPart);
bool testRotationPiece(unsigned int m, unsigned int n, PuzzlePiece& myPart);
unsigned int tryAllPieces(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox, unsigned int separator);
unsigned int putBackIntoBox(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox);
void printPuzzle();
uint getCols()
{
return col;
}
uint getRows()
{
return row;
}
//creates a random puzzle of size m columns, n rows
void createRandomPuzzle();
//shuffles Box;
vector<PuzzlePiece> Shuffle();
//prints box
void printBox();
private:
uint row;
uint col;
PuzzlePiece** Matrix;
vector<PuzzlePiece> Box;
void sudosetPiece(uint m,uint n,PuzzlePiece newPiece)
{
if(this->PlaceOfPartGood(m,n,newPiece))
Matrix[n][m] = newPiece;
}
void sudoprintPuzzle()
{
for(int i=0;i<row+2;i++)
{
for(int j=0;j<col+2;j++)
{
Matrix[i][j].printPiece();
cout << " ";
}
cout << endl;
}
}
};
//checks if piece fits into m n position in matrix;
bool Puzzle::PlaceOfPartGood(unsigned int m,unsigned int n, PuzzlePiece& myPart)
{
PuzzlePiece tmpPuzzlePiece = myPart;
PuzzlePiece negativePart(0);
negativePart.Ringbuffer = negativePart.Ringbuffer | (getPiece(m,n+1).Ringbuffer & 0b11000000);
negativePart.Ringbuffer = negativePart.Ringbuffer | (getPiece(m-1,n).Ringbuffer & 0b00110000);
negativePart.Ringbuffer = negativePart.Ringbuffer | (getPiece(m,n-1).Ringbuffer & 0b00001100);
negativePart.Ringbuffer = negativePart.Ringbuffer | (getPiece(m+1,n).Ringbuffer & 0b00000011);
negativePart.Shift(2);
/* cout << "negativePart: ";
negativePart.printPiece();
unsigned char topPart = ((negativePart.Ringbuffer & 0b11000000) ^ (tmpPuzzlePiece.Ringbuffer & 0b11000000));
cout << "topPart: " << bitset<sizeof(unsigned char)*8> (topPart) << endl;
unsigned char rightPart = ((negativePart.Ringbuffer & 0b00110000) ^ (tmpPuzzlePiece.Ringbuffer & 0b00110000));
cout << "rightPart: " << bitset<sizeof(unsigned char)*8> (rightPart) << endl;
unsigned char lowPart = ((negativePart.Ringbuffer & 0b00001100) ^ (tmpPuzzlePiece.Ringbuffer & 0b00001100));
cout << "lowPart: " << bitset<sizeof(unsigned char)*8> (lowPart) << endl;
unsigned char leftPart = ((negativePart.Ringbuffer & 0b00000011) ^ (tmpPuzzlePiece.Ringbuffer & 0b00000011));
cout << "leftPart: " << bitset<sizeof(unsigned char)*8> (leftPart) << endl;
*/
if ( //simplify
( ((((negativePart.Ringbuffer & 0b11000000) ^ (tmpPuzzlePiece.Ringbuffer & 0b11000000)) != 0b00000000) && (tmpPuzzlePiece.Ringbuffer & 0b11000000) != 0b00000000)
|| ((((negativePart.Ringbuffer & 0b11000000) == 0b11000000) || ((tmpPuzzlePiece.Ringbuffer & 0b11000000) == 0b11000000)) && (tmpPuzzlePiece.Ringbuffer & 0b11000000) != 0b00000000)
|| (((negativePart.Ringbuffer & 0b11000000) == 0b00000000) && ((tmpPuzzlePiece.Ringbuffer & 0b11000000) == 0b00000000)) )
&&
( ((((negativePart.Ringbuffer & 0b00110000) ^ (tmpPuzzlePiece.Ringbuffer & 0b00110000)) != 0b00000000) && (tmpPuzzlePiece.Ringbuffer & 0b001100) != 0b00000000)
|| ((((negativePart.Ringbuffer & 0b00110000) == 0b00110000) || ((tmpPuzzlePiece.Ringbuffer & 0b00110000) == 0b00110000)) && (tmpPuzzlePiece.Ringbuffer & 0b00110000) != 0b00000000)
|| (((negativePart.Ringbuffer & 0b00110000) == 0b00000000) && ((tmpPuzzlePiece.Ringbuffer & 0b00110000) == 0b00000000)) )
&&
( ((((negativePart.Ringbuffer & 0b00001100) ^ (tmpPuzzlePiece.Ringbuffer & 0b00001100)) != 0b00000000) && (tmpPuzzlePiece.Ringbuffer & 0b00001100) != 0b00000000)
|| ((((negativePart.Ringbuffer & 0b00001100) == 0b00001100) || ((tmpPuzzlePiece.Ringbuffer & 0b00001100) == 0b00001100)) && (tmpPuzzlePiece.Ringbuffer & 0b00001100) != 0b00000000)
|| (((negativePart.Ringbuffer & 0b00001100) == 0b00000000) && ((tmpPuzzlePiece.Ringbuffer & 0b00001100) == 0b00000000)) )
&&
( ((((negativePart.Ringbuffer & 0b00000011) ^ (tmpPuzzlePiece.Ringbuffer & 0b00000011)) != 0b00000000) && (tmpPuzzlePiece.Ringbuffer & 0b00000011) != 0b00000000)
|| ((((negativePart.Ringbuffer & 0b00000011) == 0b00000011) || ((tmpPuzzlePiece.Ringbuffer & 0b00000011) == 0b00000011)) && (tmpPuzzlePiece.Ringbuffer & 0b00000011) != 0b00000000)
|| (((negativePart.Ringbuffer & 0b00000011) == 0b00000000) && ((tmpPuzzlePiece.Ringbuffer & 0b00000011) == 0b00000000)) )
)
return 1;
return 0;
}
void Puzzle::printPuzzle()
{
for(int i=1;i<row+1;i++)
{
for(int j=1;j<col+1;j++)
{
Matrix[i][j].printPiece();
cout << " ";
}
cout << endl;
}
}
void Puzzle::createRandomPuzzle()
{
PuzzlePiece temporaryRandomPiece(0);
for(int i=0;i<getRows();i++)
{
for(int j = 0; j < getCols();)
{
//create random piece, set edges according to position and check if piece is good
temporaryRandomPiece.randomCenterPiece();
if(i==0)
temporaryRandomPiece.Ringbuffer &= 0b00111111;
if(i==getRows()-1)
temporaryRandomPiece.Ringbuffer &= 0b11110011;
if(j==0)
temporaryRandomPiece.Ringbuffer &= 0b11111100;
if(j==getCols()-1)
temporaryRandomPiece.Ringbuffer &= 0b11001111;
if(PlaceOfPartGood(j,i,temporaryRandomPiece))
{
temporaryRandomPiece.assignIdentifier();
setPiece(j,i,temporaryRandomPiece);
j++;
Box.push_back(temporaryRandomPiece);
}
}
}
}
void Puzzle::printBox()
{
Shuffle();
for (vector<PuzzlePiece>::iterator i = Box.begin(); i != Box.end(); i++)
{
(*i).printPiece();
cout << ' ';
}
cout << endl;
}
vector<PuzzlePiece> Puzzle::Shuffle()
{
random_shuffle(Box.begin(),Box.end());
return Box;
}
bool Puzzle::testRotationPiece(unsigned int m, unsigned int n, PuzzlePiece& myPart)
{
for(int rotation=0; rotation < 4; rotation++)
{
myPart.Shift(1);
myPart.printPiece();
cout << endl;
if(PlaceOfPartGood(m,n, myPart))
{
return 1;
}
}
return 0;
}
//tries all pieces in box from separator to end and places fitting into matrix. removes fitting piece
//use separator if you have to retract to a position
unsigned int Puzzle::tryAllPieces(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox, unsigned int separator)
{
for(int i=separator; i<myBox.size();i++)
{
if(testRotationPiece(m,n,myBox[i]))
{
setPiece(m,n,myBox[i]);
myBox.erase(myBox.begin()+i);
return i;
}
}
return -1;
}
//insterts piece at position in box according to boxidentifier and removes piece from puzzle
//this returns the position the puzzle piece was put back in! not the boxidentifier of the piece. look that up in other function.
unsigned int Puzzle::putBackIntoBox(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox)
{
for(int i = 0; i < myBox.size();i++)
{
if(myBox[i].getBoxIdentifier()>getPiece(m,n).getBoxIdentifier())
{
myBox.insert(myBox.begin()+i,getPiece(m,n));
removePiece(m,n);
return i;
}
}
}
vector<PuzzlePiece> createBox(uint m, uint n)
{
Puzzle myFirstPuzzle(m,n);
myFirstPuzzle.createRandomPuzzle();
return myFirstPuzzle.Shuffle();
}
//Raphael Maenle - 11.11.2017
#include <iostream>
#include <bitset>
#include <cstdlib>
#include <time.h>
#include <vector>
#include <algorithm>
using namespace std;
class PuzzlePiece
{
public:
unsigned char Ringbuffer;
PuzzlePiece(unsigned int flag = 0)
{
shifts=0;
boxidentifier=-1;
switch(flag)
{
case 0:
Ringbuffer=0b00000000;
break;
case 1:
Ringbuffer=0b11111111;
break;
case 3:
randomCenterPiece();
break;
}
}
void Shift(unsigned int moves)
{
//Shift ringbuffer to the right n number of times
shifts = (shifts+moves)%4;
Ringbuffer = ((Ringbuffer >> (moves*2)) | (Ringbuffer << sizeof(unsigned char)*8 - (moves*2)));
}
void printPiece()
{
cout << bitset<sizeof(unsigned char)*8> (Ringbuffer);
}
//makes piece to random center piece
void randomCenterPiece()
{
this->Ringbuffer= 0b00000000;
if(rand()%2)
this->Ringbuffer |= 0b01000000;
else
this->Ringbuffer |= 0b10000000;
if(rand()%2)
this->Ringbuffer |= 0b00010000;
else
this->Ringbuffer |= 0b00100000;
if(rand()%2)
this->Ringbuffer |= 0b00000100;
else
this->Ringbuffer |= 0b00001000;
if(rand()%2)
this->Ringbuffer |= 0b00000001;
else
this->Ringbuffer |= 0b00000010;
}
void assignIdentifier()
{
identifier = idcount;
idcount++;
}
unsigned int getIdentifier()
{
return identifier;
}
void setBoxIdentifier(int new_boxid)
{
boxidentifier = new_boxid;
}
int getBoxIdentifier()
{
return boxidentifier;
}
private:
unsigned int shifts;
unsigned int identifier;
int boxidentifier;
static unsigned int idcount;
};
unsigned int PuzzlePiece::idcount(0);
//saves a matrix cluster of puzzlepieces
class Puzzle
{
public:
Puzzle(uint m = 7, uint n = 4): col(m), row(n)
{
Matrix = new PuzzlePiece* [n+2];
//Box = new PuzzlePiece[n*m];
for(int i = 0;i<n+2;i++)
{
Matrix[i] = new PuzzlePiece[m+2];
for(int j = 0;j<m+2;j++)
{
if(i==0 || j==0 || i==n+1 || j==m+1)
{
Matrix[i][j] = PuzzlePiece(0);
}
else
{
Matrix[i][j] = PuzzlePiece(1);
}
/*else
Matrix[i][j] = PuzzlePiece(1);*/
}
}
}
//this adds new piece end excludes the 0 bounds around the area
bool setPiece(uint m,uint n,PuzzlePiece newPiece)
{
if(this->PlaceOfPartGood(m,n,newPiece))
{
Matrix[n+1][m+1] = newPiece;
return 1;
}
return 0;
}
bool removePiece(uint m,uint n)
{
Matrix[n+1][m+1] = 0b11111111;
return 1;
}
PuzzlePiece getPiece(uint m,uint n)
{
return Matrix[n+1][m+1];
}
PuzzlePiece sudogetPiece(uint m,uint n)
{
return Matrix[n][m];
}
//check if place of the part in the matrix is correct
bool PlaceOfPartGood(unsigned int m, unsigned int n, PuzzlePiece& myPart);
bool testRotationPiece(unsigned int m, unsigned int n, PuzzlePiece& myPart);
unsigned int tryAllPieces(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox, unsigned int separator);
unsigned int putBackIntoBox(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox);
void printPuzzle();
uint getCols()
{
return col;
}
uint getRows()
{
return row;
}
//creates a random puzzle of size m columns, n rows
void createRandomPuzzle();
//shuffles Box;
vector<PuzzlePiece> Shuffle();
//prints box
void printBox();
private:
uint row;
uint col;
PuzzlePiece** Matrix;
vector<PuzzlePiece> Box;
void sudosetPiece(uint m,uint n,PuzzlePiece newPiece)
{
if(this->PlaceOfPartGood(m,n,newPiece))
Matrix[n][m] = newPiece;
}
void sudoprintPuzzle()
{
for(int i=0;i<row+2;i++)
{
for(int j=0;j<col+2;j++)
{
Matrix[i][j].printPiece();
cout << " ";
}
cout << endl;
}
}
};
//checks if piece fits into m n position in matrix;
bool Puzzle::PlaceOfPartGood(unsigned int m,unsigned int n, PuzzlePiece& myPart)
{
PuzzlePiece tmpPuzzlePiece = myPart;
PuzzlePiece negativePart(0);
negativePart.Ringbuffer = negativePart.Ringbuffer | (getPiece(m,n+1).Ringbuffer & 0b11000000);
negativePart.Ringbuffer = negativePart.Ringbuffer | (getPiece(m-1,n).Ringbuffer & 0b00110000);
negativePart.Ringbuffer = negativePart.Ringbuffer | (getPiece(m,n-1).Ringbuffer & 0b00001100);
negativePart.Ringbuffer = negativePart.Ringbuffer | (getPiece(m+1,n).Ringbuffer & 0b00000011);
negativePart.Shift(2);
/* cout << "negativePart: ";
negativePart.printPiece();
unsigned char topPart = ((negativePart.Ringbuffer & 0b11000000) ^ (tmpPuzzlePiece.Ringbuffer & 0b11000000));
cout << "topPart: " << bitset<sizeof(unsigned char)*8> (topPart) << endl;
unsigned char rightPart = ((negativePart.Ringbuffer & 0b00110000) ^ (tmpPuzzlePiece.Ringbuffer & 0b00110000));
cout << "rightPart: " << bitset<sizeof(unsigned char)*8> (rightPart) << endl;
unsigned char lowPart = ((negativePart.Ringbuffer & 0b00001100) ^ (tmpPuzzlePiece.Ringbuffer & 0b00001100));
cout << "lowPart: " << bitset<sizeof(unsigned char)*8> (lowPart) << endl;
unsigned char leftPart = ((negativePart.Ringbuffer & 0b00000011) ^ (tmpPuzzlePiece.Ringbuffer & 0b00000011));
cout << "leftPart: " << bitset<sizeof(unsigned char)*8> (leftPart) << endl;
*/
if ( //simplify
( ((((negativePart.Ringbuffer & 0b11000000) ^ (tmpPuzzlePiece.Ringbuffer & 0b11000000)) != 0b00000000) && (tmpPuzzlePiece.Ringbuffer & 0b11000000) != 0b00000000)
|| ((((negativePart.Ringbuffer & 0b11000000) == 0b11000000) || ((tmpPuzzlePiece.Ringbuffer & 0b11000000) == 0b11000000)) && (tmpPuzzlePiece.Ringbuffer & 0b11000000) != 0b00000000)
|| (((negativePart.Ringbuffer & 0b11000000) == 0b00000000) && ((tmpPuzzlePiece.Ringbuffer & 0b11000000) == 0b00000000)) )
&&
( ((((negativePart.Ringbuffer & 0b00110000) ^ (tmpPuzzlePiece.Ringbuffer & 0b00110000)) != 0b00000000) && (tmpPuzzlePiece.Ringbuffer & 0b001100) != 0b00000000)
|| ((((negativePart.Ringbuffer & 0b00110000) == 0b00110000) || ((tmpPuzzlePiece.Ringbuffer & 0b00110000) == 0b00110000)) && (tmpPuzzlePiece.Ringbuffer & 0b00110000) != 0b00000000)
|| (((negativePart.Ringbuffer & 0b00110000) == 0b00000000) && ((tmpPuzzlePiece.Ringbuffer & 0b00110000) == 0b00000000)) )
&&
( ((((negativePart.Ringbuffer & 0b00001100) ^ (tmpPuzzlePiece.Ringbuffer & 0b00001100)) != 0b00000000) && (tmpPuzzlePiece.Ringbuffer & 0b00001100) != 0b00000000)
|| ((((negativePart.Ringbuffer & 0b00001100) == 0b00001100) || ((tmpPuzzlePiece.Ringbuffer & 0b00001100) == 0b00001100)) && (tmpPuzzlePiece.Ringbuffer & 0b00001100) != 0b00000000)
|| (((negativePart.Ringbuffer & 0b00001100) == 0b00000000) && ((tmpPuzzlePiece.Ringbuffer & 0b00001100) == 0b00000000)) )
&&
( ((((negativePart.Ringbuffer & 0b00000011) ^ (tmpPuzzlePiece.Ringbuffer & 0b00000011)) != 0b00000000) && (tmpPuzzlePiece.Ringbuffer & 0b00000011) != 0b00000000)
|| ((((negativePart.Ringbuffer & 0b00000011) == 0b00000011) || ((tmpPuzzlePiece.Ringbuffer & 0b00000011) == 0b00000011)) && (tmpPuzzlePiece.Ringbuffer & 0b00000011) != 0b00000000)
|| (((negativePart.Ringbuffer & 0b00000011) == 0b00000000) && ((tmpPuzzlePiece.Ringbuffer & 0b00000011) == 0b00000000)) )
)
return 1;
return 0;
}
void Puzzle::printPuzzle()
{
for(int i=1;i<row+1;i++)
{
for(int j=1;j<col+1;j++)
{
Matrix[i][j].printPiece();
cout << " ";
}
cout << endl;
}
}
void Puzzle::createRandomPuzzle()
{
PuzzlePiece temporaryRandomPiece(0);
for(int i=0;i<getRows();i++)
{
for(int j = 0; j < getCols();)
{
//create random piece, set edges according to position and check if piece is good
temporaryRandomPiece.randomCenterPiece();
if(i==0)
temporaryRandomPiece.Ringbuffer &= 0b00111111;
if(i==getRows()-1)
temporaryRandomPiece.Ringbuffer &= 0b11110011;
if(j==0)
temporaryRandomPiece.Ringbuffer &= 0b11111100;
if(j==getCols()-1)
temporaryRandomPiece.Ringbuffer &= 0b11001111;
if(PlaceOfPartGood(j,i,temporaryRandomPiece))
{
temporaryRandomPiece.assignIdentifier();
setPiece(j,i,temporaryRandomPiece);
j++;
Box.push_back(temporaryRandomPiece);
}
}
}
}
void Puzzle::printBox()
{
Shuffle();
for (vector<PuzzlePiece>::iterator i = Box.begin(); i != Box.end(); i++)
{
(*i).printPiece();
cout << ' ';
}
cout << endl;
}
vector<PuzzlePiece> Puzzle::Shuffle()
{
random_shuffle(Box.begin(),Box.end());
return Box;
}
bool Puzzle::testRotationPiece(unsigned int m, unsigned int n, PuzzlePiece& myPart)
{
for(int rotation=0; rotation < 4; rotation++)
{
myPart.Shift(1);
myPart.printPiece();
cout << endl;
if(PlaceOfPartGood(m,n, myPart))
{
return 1;
}
}
return 0;
}
//tries all pieces in box from separator to end and places fitting into matrix. removes fitting piece
//use separator if you have to retract to a position
unsigned int Puzzle::tryAllPieces(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox, unsigned int separator)
{
for(int i=separator; i<myBox.size();i++)
{
if(testRotationPiece(m,n,myBox[i]))
{
setPiece(m,n,myBox[i]);
myBox.erase(myBox.begin()+i);
return i;
}
}
return -1;
}
//insterts piece at position in box according to boxidentifier and removes piece from puzzle
//this returns the position the puzzle piece was put back in! not the boxidentifier of the piece. look that up in other function.
unsigned int Puzzle::putBackIntoBox(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox)
{
for(int i = 0; i < myBox.size();i++)
{
if(myBox[i].getBoxIdentifier()>getPiece(m,n).getBoxIdentifier())
{
myBox.insert(myBox.begin()+i,getPiece(m,n));
removePiece(m,n);
return i;
}
}
}
vector<PuzzlePiece> createBox(uint m, uint n)
{
Puzzle myFirstPuzzle(m,n);
myFirstPuzzle.createRandomPuzzle();
return myFirstPuzzle.Shuffle();
}

View File

@ -1,160 +1,160 @@
//Raphael Maenle - 11.11.2017
#include <iostream>
#include <bitset>
#include <cstdlib>
#include <time.h>
#include <vector>
#include <algorithm>
#include "puzzle.h"
//#include "Solver.h"
using namespace std;
void numerateBox(vector<PuzzlePiece>& myBox);
Puzzle solveOuterFirst( unsigned int rows, unsigned int cols, vector<PuzzlePiece>& myFirstBox);
void retractOuterFirst(int& i, int& j, int cols, int rows, int perimiter);
int main()
{
srand(time(0));
//Puzzle myFirstPuzzle(3,4);
int rows = 2, cols = 3;
vector<PuzzlePiece> myFirstBox = createBox(cols, rows);
numerateBox(myFirstBox);
cout << "now in solve: " << endl << endl;
solveOuterFirst(rows,cols,myFirstBox);
}
//set box identifiers
void numerateBox(vector<PuzzlePiece>& myBox)
{
for(int i = 0; i< myBox.size();i++)
myBox[i].setBoxIdentifier(i);
return;
}
//goes round and round puzzle and tries all pieces
Puzzle solveOuterFirst( unsigned int rows, unsigned int cols, vector<PuzzlePiece>& myFirstBox)
{
int i = 0, j= 0, Boxsize = rows*cols, separator=0;
Puzzle myFirstPuzzle(cols, rows);
//first Piece
cout << "#0 i: " << i << ", j: " << j << endl;
if(myFirstPuzzle.tryAllPieces(j, i, myFirstBox,separator) == -1)
{
cout << "error at first piece" << endl;
}
myFirstPuzzle.printPuzzle();
/*
Boxsize--;
//rotate through puzzle
for(int perimiter = 0; perimiter <= (cols>rows?rows:cols)/2;)
{
cout << "perimiter: " << perimiter << endl;
while(( i == 0+perimiter && j < cols-perimiter-1) && Boxsize)
{
j++;
Boxsize--;
cout << "#1 i: " << i << ", j: " << j << endl;
if(myFirstPuzzle.tryAllPieces(j, i, myFirstBox,separator) == -1)
{
retractOuterFirst(i,j,cols,rows,perimiter);
Boxsize++;
break;
}
else
{
Boxsize--;
}
}
while(( i < rows-perimiter-1 && j == cols-perimiter-1) && Boxsize)
{
i++;
Boxsize--;
cout << "#2 i: " << i << ", j: " << j << endl;
if(myFirstPuzzle.tryAllPieces(j, i, myFirstBox,separator) == -1)
{
retractOuterFirst(i,j,cols,rows,perimiter);
Boxsize++;
break;
}
else
{
Boxsize--;
}
}
while(( i == rows-perimiter-1 && j > 0+perimiter) && Boxsize)
{
j--;
Boxsize--;
cout << "#3 i: " << i << ", j: " << j << endl;
if(myFirstPuzzle.tryAllPieces(j, i, myFirstBox,separator) == -1)
{
retractOuterFirst(i,j,cols,rows,perimiter);
Boxsize++;
break;
}
else
{
Boxsize--;
}
}
while(( i > 0+perimiter+1 && j == 0+perimiter) && Boxsize)
{
i--;
cout << "#4 i: " << i << ", j: " << j << endl;
if(myFirstPuzzle.tryAllPieces(j, i, myFirstBox,separator) == -1)
{
retractOuterFirst(i,j,cols,rows,perimiter);
Boxsize++;
break;
}
else
{
Boxsize--;
perimiter++;
}
}
}
myFirstPuzzle.printPuzzle();
*/
return myFirstPuzzle;
}
//move i and j to position before
void retractOuterFirst(int& i, int& j, int cols, int rows, int perimiter)
{
if(( i == 0+perimiter && j <= cols-perimiter-1))
{
j--;
}
else if(( i <= rows-perimiter-1 && j == cols-perimiter-1))
{
i--;
}
else if(( i == rows-perimiter-1 && j >= 0+perimiter))
{
j++;
}
else if(( i >= 0+perimiter+1 && j == 0+perimiter))
{
i++;
}
}
//Raphael Maenle - 11.11.2017
#include <iostream>
#include <bitset>
#include <cstdlib>
#include <time.h>
#include <vector>
#include <algorithm>
#include "puzzle.h"
//#include "Solver.h"
using namespace std;
void numerateBox(vector<PuzzlePiece>& myBox);
Puzzle solveOuterFirst( unsigned int rows, unsigned int cols, vector<PuzzlePiece>& myFirstBox);
void retractOuterFirst(int& i, int& j, int cols, int rows, int perimiter);
int main()
{
srand(time(0));
//Puzzle myFirstPuzzle(3,4);
int rows = 2, cols = 3;
vector<PuzzlePiece> myFirstBox = createBox(cols, rows);
numerateBox(myFirstBox);
cout << "now in solve: " << endl << endl;
solveOuterFirst(rows,cols,myFirstBox);
}
//set box identifiers
void numerateBox(vector<PuzzlePiece>& myBox)
{
for(int i = 0; i< myBox.size();i++)
myBox[i].setBoxIdentifier(i);
return;
}
//goes round and round puzzle and tries all pieces
Puzzle solveOuterFirst( unsigned int rows, unsigned int cols, vector<PuzzlePiece>& myFirstBox)
{
int i = 0, j= 0, Boxsize = rows*cols, separator=0;
Puzzle myFirstPuzzle(cols, rows);
//first Piece
cout << "#0 i: " << i << ", j: " << j << endl;
if(myFirstPuzzle.tryAllPieces(j, i, myFirstBox,separator) == -1)
{
cout << "error at first piece" << endl;
}
myFirstPuzzle.printPuzzle();
/*
Boxsize--;
//rotate through puzzle
for(int perimiter = 0; perimiter <= (cols>rows?rows:cols)/2;)
{
cout << "perimiter: " << perimiter << endl;
while(( i == 0+perimiter && j < cols-perimiter-1) && Boxsize)
{
j++;
Boxsize--;
cout << "#1 i: " << i << ", j: " << j << endl;
if(myFirstPuzzle.tryAllPieces(j, i, myFirstBox,separator) == -1)
{
retractOuterFirst(i,j,cols,rows,perimiter);
Boxsize++;
break;
}
else
{
Boxsize--;
}
}
while(( i < rows-perimiter-1 && j == cols-perimiter-1) && Boxsize)
{
i++;
Boxsize--;
cout << "#2 i: " << i << ", j: " << j << endl;
if(myFirstPuzzle.tryAllPieces(j, i, myFirstBox,separator) == -1)
{
retractOuterFirst(i,j,cols,rows,perimiter);
Boxsize++;
break;
}
else
{
Boxsize--;
}
}
while(( i == rows-perimiter-1 && j > 0+perimiter) && Boxsize)
{
j--;
Boxsize--;
cout << "#3 i: " << i << ", j: " << j << endl;
if(myFirstPuzzle.tryAllPieces(j, i, myFirstBox,separator) == -1)
{
retractOuterFirst(i,j,cols,rows,perimiter);
Boxsize++;
break;
}
else
{
Boxsize--;
}
}
while(( i > 0+perimiter+1 && j == 0+perimiter) && Boxsize)
{
i--;
cout << "#4 i: " << i << ", j: " << j << endl;
if(myFirstPuzzle.tryAllPieces(j, i, myFirstBox,separator) == -1)
{
retractOuterFirst(i,j,cols,rows,perimiter);
Boxsize++;
break;
}
else
{
Boxsize--;
perimiter++;
}
}
}
myFirstPuzzle.printPuzzle();
*/
return myFirstPuzzle;
}
//move i and j to position before
void retractOuterFirst(int& i, int& j, int cols, int rows, int perimiter)
{
if(( i == 0+perimiter && j <= cols-perimiter-1))
{
j--;
}
else if(( i <= rows-perimiter-1 && j == cols-perimiter-1))
{
i--;
}
else if(( i == rows-perimiter-1 && j >= 0+perimiter))
{
j++;
}
else if(( i >= 0+perimiter+1 && j == 0+perimiter))
{
i++;
}
}

View File

@ -1,305 +1,305 @@
//Raphael Maenle - 11.11.2017
#include <iostream>
#include <bitset>
#include <cstdlib>
#include <time.h>
#include <vector>
#include <algorithm>
#define debug
#include "puzzle.h"
#include "test_puzzle.h"
using namespace std;
Puzzle solveOuterFirst( unsigned int rows, unsigned int cols, vector<PuzzlePiece>& myFirstBox);
void retractOuterFirst(int& i, int& j, int cols, int rows, int& perimiter);
int main()
{
srand(time(0));
vector<Part> part_array(NR_PARTS);
vector<Part *> corners_array(NR_CORNERS);
vector<Part *> edges_array(NR_EDGES);
vector<Part *> inners_array(NR_INNERS);
//randomBox myPuzzle(cols,rows);
//myPuzzle.createRandomPuzzle();
unsigned int rows=5, cols=5;
//vector<PuzzlePiece> myFirstBox = createBox(cols, rows);
//create4040hardBox(myFirstBox);
/*myFirstBox[0].setConnections(0b01100010);
myFirstBox[1].setConnections(0b00010100);
myFirstBox[2].setConnections(0b00011010);
myFirstBox[3].setConnections(0b10000001);
myFirstBox[4].setConnections(0b00011000);
myFirstBox[5].setConnections(0b01100000);*/
Puzzle myFirstPuzzle(3,4);
PuzzlePiece myFirstPiece(1);
myFirstPiece.setConnections(0b00010100);
if(myFirstPuzzle.PlaceOfPartGood(myFirstPiece));
cout << "good" << endl;
//printBox(myFirstBox);
cout << endl;
//Puzzle newPuzzle = solveOuterFirst(cols, rows, myFirstBox);
return 0;
}
//rotates in snail form clockwise around board and tries placing puzzle pieces.
//if no piece fits in position it tries next piece of the piece before
Puzzle solveOuterFirst( unsigned int cols, unsigned int rows, vector<PuzzlePiece>& myFirstBox)
{
int i = 0, j= 0, Boxsize = rows*cols, separator=0;
Puzzle myFirstPuzzle(cols, rows);
//first Piece
//rotate through puzzle
int perimiter;
int numberofsolutions=0;
int newPerimiter = 1;
for(perimiter = 0; /*perimiter <= (cols>rows?rows:cols)/2;*/;)
{
if(Boxsize)
{
#ifdef debug
cout << "perimiter: " << perimiter << endl;
#endif
}
else
{
break;
retractOuterFirst(i,j,cols,rows,perimiter);
Boxsize++;
separator = myFirstPuzzle.putBackIntoBox(j, i, myFirstBox);
numberofsolutions++;
}
if((i==rows/2 && j==cols/2 )&& cols==rows)
{
if(myFirstPuzzle.tryAllPieces(j, i, myFirstBox,separator) == -1)
{
retractOuterFirst(i,j,cols,rows,perimiter);
Boxsize++;
separator = myFirstPuzzle.putBackIntoBox(j, i, myFirstBox);
}
else
{
break;
separator=0;
Boxsize--;
}
}
if((i==perimiter+1 && j==perimiter))
{
#ifdef debug
cout << "#0 i: " << i << ", j: " << j << endl;
#endif
if(myFirstPuzzle.tryAllPieces(j, i, myFirstBox,separator) == -1)
{
retractOuterFirst(i,j,cols,rows,perimiter);
Boxsize++;
separator = myFirstPuzzle.putBackIntoBox(j, i, myFirstBox);
#ifdef debug
cout << "New Box: ";
printBox(myFirstBox);
cout << endl;
myFirstPuzzle.printPuzzle();
cout << "Boxsize: " << Boxsize << endl;
cout << "separator: " << separator << endl;
#endif
}
else
{
perimiter=newPerimiter;
newPerimiter++;
j++;
separator=0;
Boxsize--;
#ifdef debug
cout << " Perimiter: " << perimiter << endl;
myFirstPuzzle.printPuzzle();
#endif
}
}
else
{
//cout << "general information i: " << i << ", j: " << j << endl;
while(( i == 0+perimiter && j < cols-perimiter-1) && Boxsize)
{
#ifdef debug
cout << "#1 i: " << i << ", j: " << j << endl;
#endif
if(myFirstPuzzle.tryAllPieces(j, i, myFirstBox,separator) == -1)
{
retractOuterFirst(i,j,cols,rows,perimiter);
separator = myFirstPuzzle.putBackIntoBox(j, i, myFirstBox);
Boxsize++;
#ifdef debug
cout << "New Box: ";
printBox(myFirstBox);
cout << endl;
myFirstPuzzle.printPuzzle();
cout << "Boxsize: " << Boxsize << endl;
cout << "separator: " << separator << endl;
#endif
break;
}
else
{
j++;
separator=0;
Boxsize--;
#ifdef debug
myFirstPuzzle.printPuzzle();
#endif
}
}
while(( i < rows-perimiter-1 && j == cols-perimiter-1) && Boxsize)
{
#ifdef debug
cout << "#2 i: " << i << ", j: " << j << endl;
#endif
if(myFirstPuzzle.tryAllPieces(j, i, myFirstBox,separator) == -1)
{
retractOuterFirst(i,j,cols,rows,perimiter);
separator = myFirstPuzzle.putBackIntoBox(j, i, myFirstBox);
Boxsize++;
#ifdef debug
cout << "New Box: ";
printBox(myFirstBox);
cout << endl;
myFirstPuzzle.printPuzzle();
cout << "Boxsize: " << Boxsize << endl;
cout << "separator: " << separator << endl;
#endif
break;
}
else
{
i++;
separator=0;
Boxsize--;
#ifdef debug
myFirstPuzzle.printPuzzle();
#endif
}
}
while(( i == rows-perimiter-1 && j > 0+perimiter) && Boxsize)
{
#ifdef debug
cout << "#3 i: " << i << ", j: " << j << endl;
#endif
if(myFirstPuzzle.tryAllPieces(j, i, myFirstBox,separator) == -1)
{
retractOuterFirst(i,j,cols,rows,perimiter);
separator = myFirstPuzzle.putBackIntoBox(j, i, myFirstBox);
Boxsize++;
#ifdef debug
cout << "New Box: ";
printBox(myFirstBox);
cout << endl;
myFirstPuzzle.printPuzzle();
cout << "Boxsize: " << Boxsize << endl;
cout << "separator: " << separator << endl;
#endif
break;
}
else
{
j--;
separator=0;
Boxsize--;
#ifdef debug
myFirstPuzzle.printPuzzle();
#endif
}
}
while(( i > 0+perimiter+1 && j == 0+perimiter) && Boxsize)
{
#ifdef debug
cout << "#4 i: " << i << ", j: " << j << endl;
#endif
if(myFirstPuzzle.tryAllPieces(j, i, myFirstBox,separator) == -1)
{
retractOuterFirst(i,j,cols,rows,perimiter);
separator = myFirstPuzzle.putBackIntoBox(j, i, myFirstBox);
Boxsize++;
#ifdef debug
cout << "New Box: ";
printBox(myFirstBox);
cout << endl;
myFirstPuzzle.printPuzzle();
cout << "Boxsize: " << Boxsize << endl;
cout << "separator: " << separator << endl;
#endif
break;
}
else
{
i--;
separator=0;
Boxsize--;
#ifdef debug
myFirstPuzzle.printPuzzle();
#endif
}
}
}
}
myFirstPuzzle.printPuzzle();
return myFirstPuzzle;
}
//move i and j to position before
void retractOuterFirst(int& i, int& j, int cols, int rows, int& perimiter)
{
#ifdef debug
cout << "retracting: i=" << i << " j=" << j << endl;
#endif
if(( i == 0+perimiter && j <= cols-perimiter-1))
{
j--;
}
else if(( i <= rows-perimiter-1 && j == cols-perimiter-1))
{
i--;
}
else if(( i == rows-perimiter-1 && j >= 0+perimiter))
{
j++;
}
else if(( i >= 0+perimiter+1 && j == 0+perimiter))
{
i++;
}
#ifdef debug
cout << "to: i=" << i << " j=" << j << endl;
#endif
//Raphael Maenle - 11.11.2017
#include <iostream>
#include <bitset>
#include <cstdlib>
#include <time.h>
#include <vector>
#include <algorithm>
#define debug
#include "puzzle.h"
#include "test_puzzle.h"
using namespace std;
Puzzle solveOuterFirst( unsigned int rows, unsigned int cols, vector<PuzzlePiece>& myFirstBox);
void retractOuterFirst(int& i, int& j, int cols, int rows, int& perimiter);
int main()
{
srand(time(0));
vector<Part> part_array(NR_PARTS);
vector<Part *> corners_array(NR_CORNERS);
vector<Part *> edges_array(NR_EDGES);
vector<Part *> inners_array(NR_INNERS);
//randomBox myPuzzle(cols,rows);
//myPuzzle.createRandomPuzzle();
unsigned int rows=5, cols=5;
//vector<PuzzlePiece> myFirstBox = createBox(cols, rows);
//create4040hardBox(myFirstBox);
/*myFirstBox[0].setConnections(0b01100010);
myFirstBox[1].setConnections(0b00010100);
myFirstBox[2].setConnections(0b00011010);
myFirstBox[3].setConnections(0b10000001);
myFirstBox[4].setConnections(0b00011000);
myFirstBox[5].setConnections(0b01100000);*/
Puzzle myFirstPuzzle(3,4);
PuzzlePiece myFirstPiece(1);
myFirstPiece.setConnections(0b00010100);
if(myFirstPuzzle.PlaceOfPartGood(myFirstPiece));
cout << "good" << endl;
//printBox(myFirstBox);
cout << endl;
//Puzzle newPuzzle = solveOuterFirst(cols, rows, myFirstBox);
return 0;
}
//rotates in snail form clockwise around board and tries placing puzzle pieces.
//if no piece fits in position it tries next piece of the piece before
Puzzle solveOuterFirst( unsigned int cols, unsigned int rows, vector<PuzzlePiece>& myFirstBox)
{
int i = 0, j= 0, Boxsize = rows*cols, separator=0;
Puzzle myFirstPuzzle(cols, rows);
//first Piece
//rotate through puzzle
int perimiter;
int numberofsolutions=0;
int newPerimiter = 1;
for(perimiter = 0; /*perimiter <= (cols>rows?rows:cols)/2;*/;)
{
if(Boxsize)
{
#ifdef debug
cout << "perimiter: " << perimiter << endl;
#endif
}
else
{
break;
retractOuterFirst(i,j,cols,rows,perimiter);
Boxsize++;
separator = myFirstPuzzle.putBackIntoBox(j, i, myFirstBox);
numberofsolutions++;
}
if((i==rows/2 && j==cols/2 )&& cols==rows)
{
if(myFirstPuzzle.tryAllPieces(j, i, myFirstBox,separator) == -1)
{
retractOuterFirst(i,j,cols,rows,perimiter);
Boxsize++;
separator = myFirstPuzzle.putBackIntoBox(j, i, myFirstBox);
}
else
{
break;
separator=0;
Boxsize--;
}
}
if((i==perimiter+1 && j==perimiter))
{
#ifdef debug
cout << "#0 i: " << i << ", j: " << j << endl;
#endif
if(myFirstPuzzle.tryAllPieces(j, i, myFirstBox,separator) == -1)
{
retractOuterFirst(i,j,cols,rows,perimiter);
Boxsize++;
separator = myFirstPuzzle.putBackIntoBox(j, i, myFirstBox);
#ifdef debug
cout << "New Box: ";
printBox(myFirstBox);
cout << endl;
myFirstPuzzle.printPuzzle();
cout << "Boxsize: " << Boxsize << endl;
cout << "separator: " << separator << endl;
#endif
}
else
{
perimiter=newPerimiter;
newPerimiter++;
j++;
separator=0;
Boxsize--;
#ifdef debug
cout << " Perimiter: " << perimiter << endl;
myFirstPuzzle.printPuzzle();
#endif
}
}
else
{
//cout << "general information i: " << i << ", j: " << j << endl;
while(( i == 0+perimiter && j < cols-perimiter-1) && Boxsize)
{
#ifdef debug
cout << "#1 i: " << i << ", j: " << j << endl;
#endif
if(myFirstPuzzle.tryAllPieces(j, i, myFirstBox,separator) == -1)
{
retractOuterFirst(i,j,cols,rows,perimiter);
separator = myFirstPuzzle.putBackIntoBox(j, i, myFirstBox);
Boxsize++;
#ifdef debug
cout << "New Box: ";
printBox(myFirstBox);
cout << endl;
myFirstPuzzle.printPuzzle();
cout << "Boxsize: " << Boxsize << endl;
cout << "separator: " << separator << endl;
#endif
break;
}
else
{
j++;
separator=0;
Boxsize--;
#ifdef debug
myFirstPuzzle.printPuzzle();
#endif
}
}
while(( i < rows-perimiter-1 && j == cols-perimiter-1) && Boxsize)
{
#ifdef debug
cout << "#2 i: " << i << ", j: " << j << endl;
#endif
if(myFirstPuzzle.tryAllPieces(j, i, myFirstBox,separator) == -1)
{
retractOuterFirst(i,j,cols,rows,perimiter);
separator = myFirstPuzzle.putBackIntoBox(j, i, myFirstBox);
Boxsize++;
#ifdef debug
cout << "New Box: ";
printBox(myFirstBox);
cout << endl;
myFirstPuzzle.printPuzzle();
cout << "Boxsize: " << Boxsize << endl;
cout << "separator: " << separator << endl;
#endif
break;
}
else
{
i++;
separator=0;
Boxsize--;
#ifdef debug
myFirstPuzzle.printPuzzle();
#endif
}
}
while(( i == rows-perimiter-1 && j > 0+perimiter) && Boxsize)
{
#ifdef debug
cout << "#3 i: " << i << ", j: " << j << endl;
#endif
if(myFirstPuzzle.tryAllPieces(j, i, myFirstBox,separator) == -1)
{
retractOuterFirst(i,j,cols,rows,perimiter);
separator = myFirstPuzzle.putBackIntoBox(j, i, myFirstBox);
Boxsize++;
#ifdef debug
cout << "New Box: ";
printBox(myFirstBox);
cout << endl;
myFirstPuzzle.printPuzzle();
cout << "Boxsize: " << Boxsize << endl;
cout << "separator: " << separator << endl;
#endif
break;
}
else
{
j--;
separator=0;
Boxsize--;
#ifdef debug
myFirstPuzzle.printPuzzle();
#endif
}
}
while(( i > 0+perimiter+1 && j == 0+perimiter) && Boxsize)
{
#ifdef debug
cout << "#4 i: " << i << ", j: " << j << endl;
#endif
if(myFirstPuzzle.tryAllPieces(j, i, myFirstBox,separator) == -1)
{
retractOuterFirst(i,j,cols,rows,perimiter);
separator = myFirstPuzzle.putBackIntoBox(j, i, myFirstBox);
Boxsize++;
#ifdef debug
cout << "New Box: ";
printBox(myFirstBox);
cout << endl;
myFirstPuzzle.printPuzzle();
cout << "Boxsize: " << Boxsize << endl;
cout << "separator: " << separator << endl;
#endif
break;
}
else
{
i--;
separator=0;
Boxsize--;
#ifdef debug
myFirstPuzzle.printPuzzle();
#endif
}
}
}
}
myFirstPuzzle.printPuzzle();
return myFirstPuzzle;
}
//move i and j to position before
void retractOuterFirst(int& i, int& j, int cols, int rows, int& perimiter)
{
#ifdef debug
cout << "retracting: i=" << i << " j=" << j << endl;
#endif
if(( i == 0+perimiter && j <= cols-perimiter-1))
{
j--;
}
else if(( i <= rows-perimiter-1 && j == cols-perimiter-1))
{
i--;
}
else if(( i == rows-perimiter-1 && j >= 0+perimiter))
{
j++;
}
else if(( i >= 0+perimiter+1 && j == 0+perimiter))
{
i++;
}
#ifdef debug
cout << "to: i=" << i << " j=" << j << endl;
#endif
}

View File

@ -1,469 +1,469 @@
#include <stdint.h>
#define NR_PARTS 1008
#define NR_CORNERS 4
#define NR_EDGES 120
#define NR_INNERS 884
using namespace std;
//part from group header file
class Part
{
public:
Part(): connections(0){}
~Part() {}
uint8_t getConnections() const
{
return connections;
}
void setConnections(uint8_t newconnections)
{
connections = newconnections;
}
private:
uint8_t connections;
};
//puzzlepiece extens part with essential identifiers and functions
class PuzzlePiece: public Part
{
public:
PuzzlePiece(unsigned int flag = 0)
{
shifts=0;
boxidentifier=-1;
switch(flag)
{
case 0:
setConnections(0b00000000);
break;
case 1:
setConnections(0b11111111);
break;
case 3:
randomCenterPiece();
break;
}
}
void shift(unsigned int moves);
void randomCenterPiece();
void printPiece() { cout << bitset<sizeof(unsigned char)*8> (getConnections()); }
void setBoxIdentifier(int new_boxid) { boxidentifier = new_boxid; }
int getBoxIdentifier() { return boxidentifier; }
void assignIdentifier() { identifier = idcount;idcount++; }
unsigned int getIdentifier() { return identifier;}
private:
unsigned int shifts;
unsigned int boxidentifier;
unsigned int identifier;
static unsigned int idcount;
};
unsigned int PuzzlePiece::idcount(0);
class Puzzle
{
friend class randomBox;
public:
//constructor creates matrix with 00 outside and 11 inside
Puzzle(uint m = 7, uint n = 4): col(m), row(n)
{
Matrix = new PuzzlePiece* [n+2];
for(int i = 0;i<n+2;i++)
{
Matrix[i] = new PuzzlePiece[m+2];
for(int j = 0;j<m+2;j++)
{
if(i==0 || j==0 || i==n+1 || j==m+1)
{
Matrix[i][j] = PuzzlePiece(0);
}
else
{
Matrix[i][j] = PuzzlePiece(1);
}
}
}
}
bool setPiece(uint m,uint n,PuzzlePiece newPiece)
{
if(PlaceOfPartGood(m,n,newPiece))
{
Matrix[n+1][m+1] = newPiece;
return 1;
}
return 0;
}
//removes piece and instead puts undefined piece
bool removePiece(uint m,uint n)
{
Matrix[n+1][m+1].setConnections(0b11111111);
return 1;
}
//getter
PuzzlePiece getPiece(uint m,uint n) { return Matrix[n+1][m+1]; }
uint getCols(){ return col; }
uint getRows(){ return row; }
//functtion definitions
void printPuzzle();
bool PlaceOfPartGood(unsigned int m, unsigned int n, PuzzlePiece& myPart);
bool PlaceOfPart2Good(unsigned int m,unsigned int n, PuzzlePiece& myPart);
bool testRotationPiece(unsigned int m, unsigned int n, PuzzlePiece& myPart);
unsigned int tryAllPieces(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox, unsigned int separator);
unsigned int putBackIntoBox(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox);
private:
uint row;
uint col;
PuzzlePiece** Matrix;
};
//use this for random puzzle creation
class randomBox: public Puzzle
{
public:
randomBox(unsigned int m, unsigned int n) : Puzzle(m,n) {} //passed m n to puzzle constructor
void createRandomPuzzle();
vector<PuzzlePiece> shuffle();
void printBox();
private:
vector<PuzzlePiece> Box;
};
//functiondefinitions
void printBox(vector<PuzzlePiece> myBox);
vector<PuzzlePiece> createBox(uint m, uint n);
void numerateBox(vector<PuzzlePiece>& myBox);
//functions
//shifts puzzle piece one to the right
void PuzzlePiece::shift(unsigned int moves)
{
shifts = (shifts+moves)%4;
setConnections(((getConnections() >> (moves*2)) | (getConnections() << sizeof(unsigned char)*8 - (moves*2))));
}
//creates random centerpiece
void PuzzlePiece::randomCenterPiece()
{
setConnections(0b00000000);
if(rand()%2)
setConnections(getConnections() | 0b01000000);
else
setConnections(getConnections() | 0b10000000);
if(rand()%2)
setConnections(getConnections() | 0b00010000);
else
setConnections(getConnections() | 0b00100000);
if(rand()%2)
setConnections(getConnections() | 0b00000100);
else
setConnections(getConnections() | 0b00001000);
if(rand()%2)
setConnections(getConnections() | 0b00000001);
else
setConnections(getConnections() | 0b00000010);
}
//tries all pieces in box from separator to end and places fitting into matrix. removes fitting piece
//use separator if you have to retract to a position
//seperator may be bigger than box size, if all puzzle pieces have already been looked at.
// it immediately retracts again then (returns -1)
unsigned int Puzzle::tryAllPieces(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox, unsigned int separator)
{
for(int i=separator; i<myBox.size();i++)
{
if(testRotationPiece(m,n,myBox[i]))
{
setPiece(m,n,myBox[i]);
myBox.erase(myBox.begin()+i);
return i;
}
}
return -1;
}
//tests the myPart in all 4 rotations at position m, n
bool Puzzle::testRotationPiece(unsigned int m, unsigned int n, PuzzlePiece& myPart)
{
for(int rotation=0; rotation < 4; rotation++)
{
if(PlaceOfPartGood(m,n, myPart))
return 1;
myPart.shift(1);
}
#ifdef debug
cout << "bad part: ";
myPart.printPiece();
cout << endl;
#endif
return 0;
}
//insterts piece at position in box according to boxidentifier and removes piece from puzzle
//this returns the position after!! the puzzle piece was put back in! not the boxidentifier of the piece. look that up in other function.
unsigned int Puzzle::putBackIntoBox(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox)
{
#ifdef debug
cout << "putting back" << endl;
cout << "Old Box: ";
printBox(myBox);
cout << endl;
#endif
for(int i = 0; i < myBox.size();i++)
{
if(myBox[i].getBoxIdentifier()>getPiece(m,n).getBoxIdentifier())
{
myBox.insert(myBox.begin()+i,getPiece(m,n));
removePiece(m,n);
return i+1;
}
}
//using push back, if the element was the last element in the vector chain
myBox.push_back(getPiece(m,n));
removePiece(m,n);
return myBox.size();
}
//checks if the myPart in its current orientation is legal in position m, n
bool Puzzle::PlaceOfPartGood(unsigned int m,unsigned int n, PuzzlePiece& myPart)
{
PuzzlePiece negativePart(0);
negativePart.setConnections(negativePart.getConnections() | (getPiece(m,n+1).getConnections() & 0b11000000));
negativePart.setConnections(negativePart.getConnections() | (getPiece(m-1,n).getConnections() & 0b00110000));
negativePart.setConnections(negativePart.getConnections() | (getPiece(m,n-1).getConnections() & 0b00001100));
negativePart.setConnections(negativePart.getConnections() | (getPiece(m+1,n).getConnections() & 0b00000011));
negativePart.shift(2);
if (
( ((((negativePart.getConnections() & 0b11000000) ^ (myPart.getConnections() & 0b11000000)) != 0b00000000) && (((myPart.getConnections() & 0b11000000) != 0b00000000) && (negativePart.getConnections() & 0b11000000) != 0b00000000))
|| ((((negativePart.getConnections() & 0b11000000) == 0b11000000) || ((myPart.getConnections() & 0b11000000) == 0b11000000)) && (( myPart.getConnections() & 0b11000000) != 0b00000000) && (negativePart.getConnections() & 0b11000000) != 0b00000000)
|| (((negativePart.getConnections() & 0b11000000) == 0b00000000) && ((myPart.getConnections() & 0b11000000) == 0b00000000)) )
&&
( ((((negativePart.getConnections() & 0b00110000) ^ (myPart.getConnections() & 0b00110000)) != 0b00000000) && (((myPart.getConnections() & 0b00110000) != 0b00000000) && (negativePart.getConnections() & 0b00110000) != 0b00000000))
|| ((((negativePart.getConnections() & 0b00110000) == 0b00110000) || ((myPart.getConnections() & 0b00110000) == 0b00110000)) && (((myPart.getConnections() & 0b00110000) != 0b00000000) && (negativePart.getConnections() & 0b00110000) != 0b00000000))
|| (((negativePart.getConnections() & 0b00110000) == 0b00000000) && ((myPart.getConnections() & 0b00110000) == 0b00000000)) )
&&
( ((((negativePart.getConnections() & 0b00001100) ^ (myPart.getConnections() & 0b00001100)) != 0b00000000) && (((myPart.getConnections() & 0b00001100) != 0b00000000) && (negativePart.getConnections() & 0b00001100) != 0b00000000))
|| ((((negativePart.getConnections() & 0b00001100) == 0b00001100) || ((myPart.getConnections() & 0b00001100) == 0b00001100)) && (((myPart.getConnections() & 0b00001100) != 0b00000000) && (negativePart.getConnections() & 0b00001100) != 0b00000000))
|| (((negativePart.getConnections() & 0b00001100) == 0b00000000) && ((myPart.getConnections() & 0b00001100) == 0b00000000)) )
&&
( ((((negativePart.getConnections() & 0b00000011) ^ (myPart.getConnections() & 0b00000011)) != 0b00000000) && (((myPart.getConnections() & 0b00000011) != 0b00000000) && (negativePart.getConnections() & 0b00000011) != 0b00000000))
|| ((((negativePart.getConnections() & 0b00000011) == 0b00000011) || ((myPart.getConnections() & 0b00000011) == 0b00000011)) && (((myPart.getConnections() & 0b00000011) != 0b00000000) && (negativePart.getConnections() & 0b00000011) != 0b00000000))
|| (((negativePart.getConnections() & 0b00000011) == 0b00000000) && ((myPart.getConnections() & 0b00000011) == 0b00000000)) )
)
{
#ifdef debug
cout << "good Part: ";
myPart.printPiece();
cout << endl;
#endif
return 1;
}
return 0;
}
//TODO!!
//simpler algorithm to the first placeofpartgood
//not yet functional!!!
bool Puzzle::PlaceOfPart2Good(unsigned int m,unsigned int n, PuzzlePiece& myPart)
{
/*
PuzzlePiece negativePart(0);
negativePart.setConnections(negativePart.getConnections() | (getPiece(m,n+1).getConnections() & 0b11000000));
negativePart.setConnections(negativePart.getConnections() | (getPiece(m-1,n).getConnections() & 0b00110000));
negativePart.setConnections(negativePart.getConnections() | (getPiece(m,n-1).getConnections() & 0b00001100));
negativePart.setConnections(negativePart.getConnections() | (getPiece(m+1,n).getConnections() & 0b00000011));
negativePart.shift(2);
//A and D or B and C or not A and not B and not C and not D
if (
( ( (negativePart.getConnections() & 0b10000000) & (myPart.getConnections() & 0b01000000))
|| ( (negativePart.getConnections() & 0b01000000) & (myPart.getConnections() & 0b10000000))
|| ((!(negativePart.getConnections() & 0b10000000) & !(myPart.getConnections() & 0b10000000)) & (!(negativePart.getConnections() & 0b01000000) & !(myPart.getConnections() & 0b01000000)))
)
&&
( ( (negativePart.getConnections() & 0b00100000) & (myPart.getConnections() & 0b00010000))
|| ( (negativePart.getConnections() & 0b00010000) & (myPart.getConnections() & 0b00100000))
|| ((!(negativePart.getConnections() & 0b00100000) & !(myPart.getConnections() & 0b00100000)) & (!(negativePart.getConnections() & 0b00010000) & !(myPart.getConnections() & 0b00010000)))
)
&&
( ( (negativePart.getConnections() & 0b00001000) & (myPart.getConnections() & 0b00000100))
|| ( (negativePart.getConnections() & 0b00000100) & (myPart.getConnections() & 0b00001000))
|| ((!(negativePart.getConnections() & 0b00001000) & !(myPart.getConnections() & 0b00001000)) & (!(negativePart.getConnections() & 0b00000100) & !(myPart.getConnections() & 0b00000100)))
)
&&
( ( (negativePart.getConnections() & 0b00000010) & (myPart.getConnections() & 0b00000001))
|| ( (negativePart.getConnections() & 0b00000001) & (myPart.getConnections() & 0b00000010))
|| ((!(negativePart.getConnections() & 0b00000010) & !(myPart.getConnections() & 0b00000010)) & (!(negativePart.getConnections() & 0b00000001) & !(myPart.getConnections() & 0b00000001)))
)
)
return 1;
cout << "nogood" << endl;
return 0;
*/
PuzzlePiece tmpPuzzlePiece = myPart;
//make tmp a negativ part
if((tmpPuzzlePiece.Ringbuffer & 0b11000000) != 192 || 0)
tmpPuzzlePiece.Ringbuffer = (tmpPuzzlePiece.Ringbuffer ^ 0b11000000);
if((tmpPuzzlePiece.Ringbuffer & 0b00110000) != 48 || 0)
tmpPuzzlePiece.Ringbuffer = (tmpPuzzlePiece.Ringbuffer ^ 0b00110000);
if((tmpPuzzlePiece.Ringbuffer & 0b00001100) != 12 || 0)
tmpPuzzlePiece.Ringbuffer = (tmpPuzzlePiece.Ringbuffer ^ 0b00001100);
if((tmpPuzzlePiece.Ringbuffer & 0b00000011) != 3 || 0)
tmpPuzzlePiece.Ringbuffer = (tmpPuzzlePiece.Ringbuffer ^ 0b00000011);
PuzzlePiece negativePart(0);
negativePart.Ringbuffer = negativePart.Ringbuffer | (this->sudogetPiece(m,n+1).Ringbuffer & 0b11000000);
negativePart.Ringbuffer = negativePart.Ringbuffer | (this->sudogetPiece(m-1,n).Ringbuffer & 0b00110000);
negativePart.Ringbuffer = negativePart.Ringbuffer | (this->sudogetPiece(m,n-1).Ringbuffer & 0b00001100);
negativePart.Ringbuffer = negativePart.Ringbuffer | (this->sudogetPiece(m+1,n).Ringbuffer & 0b00000011);
negativePart.Shift(2);
//check tmp part with environment
if(((negativePart.Ringbuffer & 0b11000000) == (tmpPuzzlePiece & 0b11000000)) && ((negativePart.Ringbuffer & 0b00110000) == (tmpPuzzlePiece & 0b00110000))
&& ((negativePart.Ringbuffer & 0b00001100) == (tmpPuzzlePiece & 0b00001100)) && ((negativePart.Ringbuffer & 0b00000011) == (tmpPuzzlePiece & 0b00000011)))
return 1;
return 0;
}
//prints the true puzzle (without 0 edges)
void Puzzle::printPuzzle()
{
cout << "current Puzzle: " << endl;
for(int i=1;i<row+1;i++)
{
for(int j=1;j<col+1;j++)
{
Matrix[i][j].printPiece();
cout << " ";
}
cout << endl;
}
cout << endl;
}
//creates a legal puzzle out of random pieces
void randomBox::createRandomPuzzle()
{
PuzzlePiece temporaryRandomPiece(0);
for(int i=0;i<getRows();i++)
{
for(int j = 0; j < getCols();)
{
//create random piece, set edges according to position and check if piece is good
temporaryRandomPiece.randomCenterPiece();
if(i==0)
temporaryRandomPiece.setConnections(0b00111111 & temporaryRandomPiece.getConnections());
if(i==getRows()-1)
temporaryRandomPiece.setConnections(0b11110011 & temporaryRandomPiece.getConnections());
if(j==0)
temporaryRandomPiece.setConnections(0b11111100 & temporaryRandomPiece.getConnections());
if(j==getCols()-1)
temporaryRandomPiece.setConnections(0b11001111 & temporaryRandomPiece.getConnections());
if(PlaceOfPartGood(j,i,temporaryRandomPiece))
{
temporaryRandomPiece.assignIdentifier();
setPiece(j,i,temporaryRandomPiece);
j++;
Box.push_back(temporaryRandomPiece);
}
}
}
}
//prints a box contents on console
void randomBox::printBox()
{
shuffle();
for (vector<PuzzlePiece>::iterator i = Box.begin(); i != Box.end(); i++)
{
(*i).printPiece();
cout << ' ';
}
cout << endl;
}
//shuffles around a box, randomizing pieces and orientation
vector<PuzzlePiece> randomBox::shuffle()
{
random_shuffle(Box.begin(),Box.end());
for (vector<PuzzlePiece>::iterator i = Box.begin(); i != Box.end(); i++)
(*i).shift(rand()%4);
numerateBox(Box);
return Box;
}
//creates a random box size m, n, shuffles it, and then retuns it
vector<PuzzlePiece> createBox(uint m, uint n)
{
randomBox myFirstPuzzleBox(m,n);
myFirstPuzzleBox.createRandomPuzzle();
return myFirstPuzzleBox.shuffle();
}
//prints contents of box
void printBox(vector<PuzzlePiece> myBox)
{
cout << "current Box: " << endl;
for (vector<PuzzlePiece>::iterator i = myBox.begin(); i != myBox.end(); i++)
{
(*i).printPiece();
cout << ' ';
}
cout << endl;
return;
}
//gives every element in box a box identifier.
void numerateBox(vector<PuzzlePiece>& myBox)
{
for(int i = 0; i< myBox.size();i++)
myBox[i].setBoxIdentifier(i);
return;
#include <stdint.h>
#define NR_PARTS 1008
#define NR_CORNERS 4
#define NR_EDGES 120
#define NR_INNERS 884
using namespace std;
//part from group header file
class Part
{
public:
Part(): connections(0){}
~Part() {}
uint8_t getConnections() const
{
return connections;
}
void setConnections(uint8_t newconnections)
{
connections = newconnections;
}
private:
uint8_t connections;
};
//puzzlepiece extens part with essential identifiers and functions
class PuzzlePiece: public Part
{
public:
PuzzlePiece(unsigned int flag = 0)
{
shifts=0;
boxidentifier=-1;
switch(flag)
{
case 0:
setConnections(0b00000000);
break;
case 1:
setConnections(0b11111111);
break;
case 3:
randomCenterPiece();
break;
}
}
void shift(unsigned int moves);
void randomCenterPiece();
void printPiece() { cout << bitset<sizeof(unsigned char)*8> (getConnections()); }
void setBoxIdentifier(int new_boxid) { boxidentifier = new_boxid; }
int getBoxIdentifier() { return boxidentifier; }
void assignIdentifier() { identifier = idcount;idcount++; }
unsigned int getIdentifier() { return identifier;}
private:
unsigned int shifts;
unsigned int boxidentifier;
unsigned int identifier;
static unsigned int idcount;
};
unsigned int PuzzlePiece::idcount(0);
class Puzzle
{
friend class randomBox;
public:
//constructor creates matrix with 00 outside and 11 inside
Puzzle(uint m = 7, uint n = 4): col(m), row(n)
{
Matrix = new PuzzlePiece* [n+2];
for(int i = 0;i<n+2;i++)
{
Matrix[i] = new PuzzlePiece[m+2];
for(int j = 0;j<m+2;j++)
{
if(i==0 || j==0 || i==n+1 || j==m+1)
{
Matrix[i][j] = PuzzlePiece(0);
}
else
{
Matrix[i][j] = PuzzlePiece(1);
}
}
}
}
bool setPiece(uint m,uint n,PuzzlePiece newPiece)
{
if(PlaceOfPartGood(m,n,newPiece))
{
Matrix[n+1][m+1] = newPiece;
return 1;
}
return 0;
}
//removes piece and instead puts undefined piece
bool removePiece(uint m,uint n)
{
Matrix[n+1][m+1].setConnections(0b11111111);
return 1;
}
//getter
PuzzlePiece getPiece(uint m,uint n) { return Matrix[n+1][m+1]; }
uint getCols(){ return col; }
uint getRows(){ return row; }
//functtion definitions
void printPuzzle();
bool PlaceOfPartGood(unsigned int m, unsigned int n, PuzzlePiece& myPart);
bool PlaceOfPart2Good(unsigned int m,unsigned int n, PuzzlePiece& myPart);
bool testRotationPiece(unsigned int m, unsigned int n, PuzzlePiece& myPart);
unsigned int tryAllPieces(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox, unsigned int separator);
unsigned int putBackIntoBox(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox);
private:
uint row;
uint col;
PuzzlePiece** Matrix;
};
//use this for random puzzle creation
class randomBox: public Puzzle
{
public:
randomBox(unsigned int m, unsigned int n) : Puzzle(m,n) {} //passed m n to puzzle constructor
void createRandomPuzzle();
vector<PuzzlePiece> shuffle();
void printBox();
private:
vector<PuzzlePiece> Box;
};
//functiondefinitions
void printBox(vector<PuzzlePiece> myBox);
vector<PuzzlePiece> createBox(uint m, uint n);
void numerateBox(vector<PuzzlePiece>& myBox);
//functions
//shifts puzzle piece one to the right
void PuzzlePiece::shift(unsigned int moves)
{
shifts = (shifts+moves)%4;
setConnections(((getConnections() >> (moves*2)) | (getConnections() << sizeof(unsigned char)*8 - (moves*2))));
}
//creates random centerpiece
void PuzzlePiece::randomCenterPiece()
{
setConnections(0b00000000);
if(rand()%2)
setConnections(getConnections() | 0b01000000);
else
setConnections(getConnections() | 0b10000000);
if(rand()%2)
setConnections(getConnections() | 0b00010000);
else
setConnections(getConnections() | 0b00100000);
if(rand()%2)
setConnections(getConnections() | 0b00000100);
else
setConnections(getConnections() | 0b00001000);
if(rand()%2)
setConnections(getConnections() | 0b00000001);
else
setConnections(getConnections() | 0b00000010);
}
//tries all pieces in box from separator to end and places fitting into matrix. removes fitting piece
//use separator if you have to retract to a position
//seperator may be bigger than box size, if all puzzle pieces have already been looked at.
// it immediately retracts again then (returns -1)
unsigned int Puzzle::tryAllPieces(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox, unsigned int separator)
{
for(int i=separator; i<myBox.size();i++)
{
if(testRotationPiece(m,n,myBox[i]))
{
setPiece(m,n,myBox[i]);
myBox.erase(myBox.begin()+i);
return i;
}
}
return -1;
}
//tests the myPart in all 4 rotations at position m, n
bool Puzzle::testRotationPiece(unsigned int m, unsigned int n, PuzzlePiece& myPart)
{
for(int rotation=0; rotation < 4; rotation++)
{
if(PlaceOfPartGood(m,n, myPart))
return 1;
myPart.shift(1);
}
#ifdef debug
cout << "bad part: ";
myPart.printPiece();
cout << endl;
#endif
return 0;
}
//insterts piece at position in box according to boxidentifier and removes piece from puzzle
//this returns the position after!! the puzzle piece was put back in! not the boxidentifier of the piece. look that up in other function.
unsigned int Puzzle::putBackIntoBox(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox)
{
#ifdef debug
cout << "putting back" << endl;
cout << "Old Box: ";
printBox(myBox);
cout << endl;
#endif
for(int i = 0; i < myBox.size();i++)
{
if(myBox[i].getBoxIdentifier()>getPiece(m,n).getBoxIdentifier())
{
myBox.insert(myBox.begin()+i,getPiece(m,n));
removePiece(m,n);
return i+1;
}
}
//using push back, if the element was the last element in the vector chain
myBox.push_back(getPiece(m,n));
removePiece(m,n);
return myBox.size();
}
//checks if the myPart in its current orientation is legal in position m, n
bool Puzzle::PlaceOfPartGood(unsigned int m,unsigned int n, PuzzlePiece& myPart)
{
PuzzlePiece negativePart(0);
negativePart.setConnections(negativePart.getConnections() | (getPiece(m,n+1).getConnections() & 0b11000000));
negativePart.setConnections(negativePart.getConnections() | (getPiece(m-1,n).getConnections() & 0b00110000));
negativePart.setConnections(negativePart.getConnections() | (getPiece(m,n-1).getConnections() & 0b00001100));
negativePart.setConnections(negativePart.getConnections() | (getPiece(m+1,n).getConnections() & 0b00000011));
negativePart.shift(2);
if (
( ((((negativePart.getConnections() & 0b11000000) ^ (myPart.getConnections() & 0b11000000)) != 0b00000000) && (((myPart.getConnections() & 0b11000000) != 0b00000000) && (negativePart.getConnections() & 0b11000000) != 0b00000000))
|| ((((negativePart.getConnections() & 0b11000000) == 0b11000000) || ((myPart.getConnections() & 0b11000000) == 0b11000000)) && (( myPart.getConnections() & 0b11000000) != 0b00000000) && (negativePart.getConnections() & 0b11000000) != 0b00000000)
|| (((negativePart.getConnections() & 0b11000000) == 0b00000000) && ((myPart.getConnections() & 0b11000000) == 0b00000000)) )
&&
( ((((negativePart.getConnections() & 0b00110000) ^ (myPart.getConnections() & 0b00110000)) != 0b00000000) && (((myPart.getConnections() & 0b00110000) != 0b00000000) && (negativePart.getConnections() & 0b00110000) != 0b00000000))
|| ((((negativePart.getConnections() & 0b00110000) == 0b00110000) || ((myPart.getConnections() & 0b00110000) == 0b00110000)) && (((myPart.getConnections() & 0b00110000) != 0b00000000) && (negativePart.getConnections() & 0b00110000) != 0b00000000))
|| (((negativePart.getConnections() & 0b00110000) == 0b00000000) && ((myPart.getConnections() & 0b00110000) == 0b00000000)) )
&&
( ((((negativePart.getConnections() & 0b00001100) ^ (myPart.getConnections() & 0b00001100)) != 0b00000000) && (((myPart.getConnections() & 0b00001100) != 0b00000000) && (negativePart.getConnections() & 0b00001100) != 0b00000000))
|| ((((negativePart.getConnections() & 0b00001100) == 0b00001100) || ((myPart.getConnections() & 0b00001100) == 0b00001100)) && (((myPart.getConnections() & 0b00001100) != 0b00000000) && (negativePart.getConnections() & 0b00001100) != 0b00000000))
|| (((negativePart.getConnections() & 0b00001100) == 0b00000000) && ((myPart.getConnections() & 0b00001100) == 0b00000000)) )
&&
( ((((negativePart.getConnections() & 0b00000011) ^ (myPart.getConnections() & 0b00000011)) != 0b00000000) && (((myPart.getConnections() & 0b00000011) != 0b00000000) && (negativePart.getConnections() & 0b00000011) != 0b00000000))
|| ((((negativePart.getConnections() & 0b00000011) == 0b00000011) || ((myPart.getConnections() & 0b00000011) == 0b00000011)) && (((myPart.getConnections() & 0b00000011) != 0b00000000) && (negativePart.getConnections() & 0b00000011) != 0b00000000))
|| (((negativePart.getConnections() & 0b00000011) == 0b00000000) && ((myPart.getConnections() & 0b00000011) == 0b00000000)) )
)
{
#ifdef debug
cout << "good Part: ";
myPart.printPiece();
cout << endl;
#endif
return 1;
}
return 0;
}
//TODO!!
//simpler algorithm to the first placeofpartgood
//not yet functional!!!
bool Puzzle::PlaceOfPart2Good(unsigned int m,unsigned int n, PuzzlePiece& myPart)
{
/*
PuzzlePiece negativePart(0);
negativePart.setConnections(negativePart.getConnections() | (getPiece(m,n+1).getConnections() & 0b11000000));
negativePart.setConnections(negativePart.getConnections() | (getPiece(m-1,n).getConnections() & 0b00110000));
negativePart.setConnections(negativePart.getConnections() | (getPiece(m,n-1).getConnections() & 0b00001100));
negativePart.setConnections(negativePart.getConnections() | (getPiece(m+1,n).getConnections() & 0b00000011));
negativePart.shift(2);
//A and D or B and C or not A and not B and not C and not D
if (
( ( (negativePart.getConnections() & 0b10000000) & (myPart.getConnections() & 0b01000000))
|| ( (negativePart.getConnections() & 0b01000000) & (myPart.getConnections() & 0b10000000))
|| ((!(negativePart.getConnections() & 0b10000000) & !(myPart.getConnections() & 0b10000000)) & (!(negativePart.getConnections() & 0b01000000) & !(myPart.getConnections() & 0b01000000)))
)
&&
( ( (negativePart.getConnections() & 0b00100000) & (myPart.getConnections() & 0b00010000))
|| ( (negativePart.getConnections() & 0b00010000) & (myPart.getConnections() & 0b00100000))
|| ((!(negativePart.getConnections() & 0b00100000) & !(myPart.getConnections() & 0b00100000)) & (!(negativePart.getConnections() & 0b00010000) & !(myPart.getConnections() & 0b00010000)))
)
&&
( ( (negativePart.getConnections() & 0b00001000) & (myPart.getConnections() & 0b00000100))
|| ( (negativePart.getConnections() & 0b00000100) & (myPart.getConnections() & 0b00001000))
|| ((!(negativePart.getConnections() & 0b00001000) & !(myPart.getConnections() & 0b00001000)) & (!(negativePart.getConnections() & 0b00000100) & !(myPart.getConnections() & 0b00000100)))
)
&&
( ( (negativePart.getConnections() & 0b00000010) & (myPart.getConnections() & 0b00000001))
|| ( (negativePart.getConnections() & 0b00000001) & (myPart.getConnections() & 0b00000010))
|| ((!(negativePart.getConnections() & 0b00000010) & !(myPart.getConnections() & 0b00000010)) & (!(negativePart.getConnections() & 0b00000001) & !(myPart.getConnections() & 0b00000001)))
)
)
return 1;
cout << "nogood" << endl;
return 0;
*/
PuzzlePiece tmpPuzzlePiece = myPart;
//make tmp a negativ part
if((tmpPuzzlePiece.Ringbuffer & 0b11000000) != 192 || 0)
tmpPuzzlePiece.Ringbuffer = (tmpPuzzlePiece.Ringbuffer ^ 0b11000000);
if((tmpPuzzlePiece.Ringbuffer & 0b00110000) != 48 || 0)
tmpPuzzlePiece.Ringbuffer = (tmpPuzzlePiece.Ringbuffer ^ 0b00110000);
if((tmpPuzzlePiece.Ringbuffer & 0b00001100) != 12 || 0)
tmpPuzzlePiece.Ringbuffer = (tmpPuzzlePiece.Ringbuffer ^ 0b00001100);
if((tmpPuzzlePiece.Ringbuffer & 0b00000011) != 3 || 0)
tmpPuzzlePiece.Ringbuffer = (tmpPuzzlePiece.Ringbuffer ^ 0b00000011);
PuzzlePiece negativePart(0);
negativePart.Ringbuffer = negativePart.Ringbuffer | (this->sudogetPiece(m,n+1).Ringbuffer & 0b11000000);
negativePart.Ringbuffer = negativePart.Ringbuffer | (this->sudogetPiece(m-1,n).Ringbuffer & 0b00110000);
negativePart.Ringbuffer = negativePart.Ringbuffer | (this->sudogetPiece(m,n-1).Ringbuffer & 0b00001100);
negativePart.Ringbuffer = negativePart.Ringbuffer | (this->sudogetPiece(m+1,n).Ringbuffer & 0b00000011);
negativePart.Shift(2);
//check tmp part with environment
if(((negativePart.Ringbuffer & 0b11000000) == (tmpPuzzlePiece & 0b11000000)) && ((negativePart.Ringbuffer & 0b00110000) == (tmpPuzzlePiece & 0b00110000))
&& ((negativePart.Ringbuffer & 0b00001100) == (tmpPuzzlePiece & 0b00001100)) && ((negativePart.Ringbuffer & 0b00000011) == (tmpPuzzlePiece & 0b00000011)))
return 1;
return 0;
}
//prints the true puzzle (without 0 edges)
void Puzzle::printPuzzle()
{
cout << "current Puzzle: " << endl;
for(int i=1;i<row+1;i++)
{
for(int j=1;j<col+1;j++)
{
Matrix[i][j].printPiece();
cout << " ";
}
cout << endl;
}
cout << endl;
}
//creates a legal puzzle out of random pieces
void randomBox::createRandomPuzzle()
{
PuzzlePiece temporaryRandomPiece(0);
for(int i=0;i<getRows();i++)
{
for(int j = 0; j < getCols();)
{
//create random piece, set edges according to position and check if piece is good
temporaryRandomPiece.randomCenterPiece();
if(i==0)
temporaryRandomPiece.setConnections(0b00111111 & temporaryRandomPiece.getConnections());
if(i==getRows()-1)
temporaryRandomPiece.setConnections(0b11110011 & temporaryRandomPiece.getConnections());
if(j==0)
temporaryRandomPiece.setConnections(0b11111100 & temporaryRandomPiece.getConnections());
if(j==getCols()-1)
temporaryRandomPiece.setConnections(0b11001111 & temporaryRandomPiece.getConnections());
if(PlaceOfPartGood(j,i,temporaryRandomPiece))
{
temporaryRandomPiece.assignIdentifier();
setPiece(j,i,temporaryRandomPiece);
j++;
Box.push_back(temporaryRandomPiece);
}
}
}
}
//prints a box contents on console
void randomBox::printBox()
{
shuffle();
for (vector<PuzzlePiece>::iterator i = Box.begin(); i != Box.end(); i++)
{
(*i).printPiece();
cout << ' ';
}
cout << endl;
}
//shuffles around a box, randomizing pieces and orientation
vector<PuzzlePiece> randomBox::shuffle()
{
random_shuffle(Box.begin(),Box.end());
for (vector<PuzzlePiece>::iterator i = Box.begin(); i != Box.end(); i++)
(*i).shift(rand()%4);
numerateBox(Box);
return Box;
}
//creates a random box size m, n, shuffles it, and then retuns it
vector<PuzzlePiece> createBox(uint m, uint n)
{
randomBox myFirstPuzzleBox(m,n);
myFirstPuzzleBox.createRandomPuzzle();
return myFirstPuzzleBox.shuffle();
}
//prints contents of box
void printBox(vector<PuzzlePiece> myBox)
{
cout << "current Box: " << endl;
for (vector<PuzzlePiece>::iterator i = myBox.begin(); i != myBox.end(); i++)
{
(*i).printPiece();
cout << ' ';
}
cout << endl;
return;
}
//gives every element in box a box identifier.
void numerateBox(vector<PuzzlePiece>& myBox)
{
for(int i = 0; i< myBox.size();i++)
myBox[i].setBoxIdentifier(i);
return;
}

View File

@ -1,406 +1,406 @@
void create4040hardBox(vector<PuzzlePiece>& myFirstBox)
{
myFirstBox[0].setConnections(0b01101001);
myFirstBox[1].setConnections(0b10011001);
myFirstBox[2].setConnections(0b01100110);
myFirstBox[3].setConnections(0b01101001);
myFirstBox[4].setConnections(0b10100101);
myFirstBox[5].setConnections(0b10010010);
myFirstBox[6].setConnections(0b01101001);
myFirstBox[7].setConnections(0b00101010);
myFirstBox[8].setConnections(0b01000110);
myFirstBox[9].setConnections(0b01011010);
myFirstBox[10].setConnections(0b01011010);
myFirstBox[11].setConnections(0b10010101);
myFirstBox[12].setConnections(0b01010101);
myFirstBox[13].setConnections(0b10101001);
myFirstBox[14].setConnections(0b10010101);
myFirstBox[15].setConnections(0b10101010);
myFirstBox[16].setConnections(0b01101010);
myFirstBox[17].setConnections(0b01101010);
myFirstBox[18].setConnections(0b00100101);
myFirstBox[19].setConnections(0b01100101);
myFirstBox[20].setConnections(0b10010001);
myFirstBox[21].setConnections(0b10010101);
myFirstBox[22].setConnections(0b10101001);
myFirstBox[23].setConnections(0b01010110);
myFirstBox[24].setConnections(0b10101010);
myFirstBox[25].setConnections(0b01101000);
myFirstBox[26].setConnections(0b01101010);
myFirstBox[27].setConnections(0b10010101);
myFirstBox[28].setConnections(0b10011010);
myFirstBox[29].setConnections(0b10011001);
myFirstBox[30].setConnections(0b01101010);
myFirstBox[31].setConnections(0b01100001);
myFirstBox[32].setConnections(0b01101010);
myFirstBox[33].setConnections(0b01100101);
myFirstBox[34].setConnections(0b01010101);
myFirstBox[35].setConnections(0b01010110);
myFirstBox[36].setConnections(0b01101010);
myFirstBox[37].setConnections(0b01010110);
myFirstBox[38].setConnections(0b01100110);
myFirstBox[39].setConnections(0b01011010);
myFirstBox[40].setConnections(0b01100101);
myFirstBox[41].setConnections(0b01101001);
myFirstBox[42].setConnections(0b01010110);
myFirstBox[43].setConnections(0b01000110);
myFirstBox[44].setConnections(0b01011001);
myFirstBox[45].setConnections(0b01101001);
myFirstBox[46].setConnections(0b10000101);
myFirstBox[47].setConnections(0b10011010);
myFirstBox[48].setConnections(0b10010110);
myFirstBox[49].setConnections(0b01011010);
myFirstBox[50].setConnections(0b10011001);
myFirstBox[51].setConnections(0b01001001);
myFirstBox[52].setConnections(0b10100110);
myFirstBox[53].setConnections(0b01001010);
myFirstBox[54].setConnections(0b10010010);
myFirstBox[55].setConnections(0b01001010);
myFirstBox[56].setConnections(0b01101001);
myFirstBox[57].setConnections(0b10100110);
myFirstBox[58].setConnections(0b10010110);
myFirstBox[59].setConnections(0b10010110);
myFirstBox[60].setConnections(0b10101001);
myFirstBox[61].setConnections(0b00100101);
myFirstBox[62].setConnections(0b00101001);
myFirstBox[63].setConnections(0b01101001);
myFirstBox[64].setConnections(0b01101001);
myFirstBox[65].setConnections(0b00100101);
myFirstBox[66].setConnections(0b10010110);
myFirstBox[67].setConnections(0b10011010);
myFirstBox[68].setConnections(0b01100110);
myFirstBox[69].setConnections(0b10010110);
myFirstBox[70].setConnections(0b01010100);
myFirstBox[71].setConnections(0b01011010);
myFirstBox[72].setConnections(0b01100110);
myFirstBox[73].setConnections(0b01100101);
myFirstBox[74].setConnections(0b10011010);
myFirstBox[75].setConnections(0b10010101);
myFirstBox[76].setConnections(0b10011010);
myFirstBox[77].setConnections(0b01100101);
myFirstBox[78].setConnections(0b10011010);
myFirstBox[79].setConnections(0b01010110);
myFirstBox[80].setConnections(0b01101010);
myFirstBox[81].setConnections(0b01010101);
myFirstBox[82].setConnections(0b01100101);
myFirstBox[83].setConnections(0b10100101);
myFirstBox[84].setConnections(0b01010110);
myFirstBox[85].setConnections(0b01101010);
myFirstBox[86].setConnections(0b10011010);
myFirstBox[87].setConnections(0b10010110);
myFirstBox[88].setConnections(0b01101010);
myFirstBox[89].setConnections(0b01011010);
myFirstBox[90].setConnections(0b01010110);
myFirstBox[91].setConnections(0b01100101);
myFirstBox[92].setConnections(0b00100101);
myFirstBox[93].setConnections(0b10100101);
myFirstBox[94].setConnections(0b10010110);
myFirstBox[95].setConnections(0b01100110);
myFirstBox[96].setConnections(0b10000110);
myFirstBox[97].setConnections(0b01001001);
myFirstBox[98].setConnections(0b10010110);
myFirstBox[99].setConnections(0b10100110);
myFirstBox[100].setConnections(0b10100110);
myFirstBox[101].setConnections(0b01100010);
myFirstBox[102].setConnections(0b01101010);
myFirstBox[103].setConnections(0b10011001);
myFirstBox[104].setConnections(0b01010101);
myFirstBox[105].setConnections(0b10011010);
myFirstBox[106].setConnections(0b10101001);
myFirstBox[107].setConnections(0b01100110);
myFirstBox[108].setConnections(0b10101001);
myFirstBox[109].setConnections(0b10101001);
myFirstBox[110].setConnections(0b10010100);
myFirstBox[111].setConnections(0b01100110);
myFirstBox[112].setConnections(0b01010110);
myFirstBox[113].setConnections(0b10010101);
myFirstBox[114].setConnections(0b01011001);
myFirstBox[115].setConnections(0b01101010);
myFirstBox[116].setConnections(0b10100110);
myFirstBox[117].setConnections(0b10100101);
myFirstBox[118].setConnections(0b10101010);
myFirstBox[119].setConnections(0b01011010);
myFirstBox[120].setConnections(0b10011000);
myFirstBox[121].setConnections(0b10010101);
myFirstBox[122].setConnections(0b10100101);
myFirstBox[123].setConnections(0b10000110);
myFirstBox[124].setConnections(0b01100101);
myFirstBox[125].setConnections(0b10100110);
myFirstBox[126].setConnections(0b10101010);
myFirstBox[127].setConnections(0b01101001);
myFirstBox[128].setConnections(0b01010101);
myFirstBox[129].setConnections(0b01100101);
myFirstBox[130].setConnections(0b10001001);
myFirstBox[131].setConnections(0b01101010);
myFirstBox[132].setConnections(0b01101010);
myFirstBox[133].setConnections(0b01100010);
myFirstBox[134].setConnections(0b01100110);
myFirstBox[135].setConnections(0b10100001);
myFirstBox[136].setConnections(0b10011001);
myFirstBox[137].setConnections(0b01101010);
myFirstBox[138].setConnections(0b01011001);
myFirstBox[139].setConnections(0b10001001);
myFirstBox[140].setConnections(0b01010101);
myFirstBox[141].setConnections(0b10100101);
myFirstBox[142].setConnections(0b01100101);
myFirstBox[143].setConnections(0b10100101);
myFirstBox[144].setConnections(0b10011010);
myFirstBox[145].setConnections(0b10010001);
myFirstBox[146].setConnections(0b10100110);
myFirstBox[147].setConnections(0b01101010);
myFirstBox[148].setConnections(0b10010101);
myFirstBox[149].setConnections(0b01100101);
myFirstBox[150].setConnections(0b10100101);
myFirstBox[151].setConnections(0b10100110);
myFirstBox[152].setConnections(0b10010001);
myFirstBox[153].setConnections(0b10101000);
myFirstBox[154].setConnections(0b10011010);
myFirstBox[155].setConnections(0b10100110);
myFirstBox[156].setConnections(0b01100110);
myFirstBox[157].setConnections(0b10100110);
myFirstBox[158].setConnections(0b01011010);
myFirstBox[159].setConnections(0b10100001);
myFirstBox[160].setConnections(0b01010101);
myFirstBox[161].setConnections(0b10011010);
myFirstBox[162].setConnections(0b10101001);
myFirstBox[163].setConnections(0b01010110);
myFirstBox[164].setConnections(0b01100001);
myFirstBox[165].setConnections(0b01011001);
myFirstBox[166].setConnections(0b01101001);
myFirstBox[167].setConnections(0b10011001);
myFirstBox[168].setConnections(0b10010101);
myFirstBox[169].setConnections(0b01100010);
myFirstBox[170].setConnections(0b01010110);
myFirstBox[171].setConnections(0b00010101);
myFirstBox[172].setConnections(0b10100101);
myFirstBox[173].setConnections(0b10101010);
myFirstBox[174].setConnections(0b10011010);
myFirstBox[175].setConnections(0b01100101);
myFirstBox[176].setConnections(0b10100110);
myFirstBox[177].setConnections(0b10101001);
myFirstBox[178].setConnections(0b01011010);
myFirstBox[179].setConnections(0b01101001);
myFirstBox[180].setConnections(0b10010101);
myFirstBox[181].setConnections(0b01101010);
myFirstBox[182].setConnections(0b10010110);
myFirstBox[183].setConnections(0b10010110);
myFirstBox[184].setConnections(0b10011001);
myFirstBox[185].setConnections(0b10100101);
myFirstBox[186].setConnections(0b10010110);
myFirstBox[187].setConnections(0b10010110);
myFirstBox[188].setConnections(0b10011010);
myFirstBox[189].setConnections(0b10010101);
myFirstBox[190].setConnections(0b01010001);
myFirstBox[191].setConnections(0b01010100);
myFirstBox[192].setConnections(0b10101000);
myFirstBox[193].setConnections(0b10100110);
myFirstBox[194].setConnections(0b01010001);
myFirstBox[195].setConnections(0b01010101);
myFirstBox[196].setConnections(0b01100110);
myFirstBox[197].setConnections(0b10100101);
myFirstBox[198].setConnections(0b00100101);
myFirstBox[199].setConnections(0b00100101);
myFirstBox[200].setConnections(0b10101001);
myFirstBox[201].setConnections(0b10101001);
myFirstBox[202].setConnections(0b01011001);
myFirstBox[203].setConnections(0b00001010);
myFirstBox[204].setConnections(0b01010101);
myFirstBox[205].setConnections(0b10011010);
myFirstBox[206].setConnections(0b10100110);
myFirstBox[207].setConnections(0b10100101);
myFirstBox[208].setConnections(0b10011001);
myFirstBox[209].setConnections(0b10100110);
myFirstBox[210].setConnections(0b10101010);
myFirstBox[211].setConnections(0b01010110);
myFirstBox[212].setConnections(0b01010101);
myFirstBox[213].setConnections(0b01100010);
myFirstBox[214].setConnections(0b10010110);
myFirstBox[215].setConnections(0b10011010);
myFirstBox[216].setConnections(0b01100100);
myFirstBox[217].setConnections(0b01010101);
myFirstBox[218].setConnections(0b10011010);
myFirstBox[219].setConnections(0b01100101);
myFirstBox[220].setConnections(0b10101001);
myFirstBox[221].setConnections(0b10010101);
myFirstBox[222].setConnections(0b10100101);
myFirstBox[223].setConnections(0b10101001);
myFirstBox[224].setConnections(0b10100110);
myFirstBox[225].setConnections(0b10011001);
myFirstBox[226].setConnections(0b01011010);
myFirstBox[227].setConnections(0b01000101);
myFirstBox[228].setConnections(0b01100110);
myFirstBox[229].setConnections(0b10101010);
myFirstBox[230].setConnections(0b01010100);
myFirstBox[231].setConnections(0b10101010);
myFirstBox[232].setConnections(0b10011010);
myFirstBox[233].setConnections(0b10100110);
myFirstBox[234].setConnections(0b10011000);
myFirstBox[235].setConnections(0b10011001);
myFirstBox[236].setConnections(0b01010101);
myFirstBox[237].setConnections(0b01001010);
myFirstBox[238].setConnections(0b01100001);
myFirstBox[239].setConnections(0b10011010);
myFirstBox[240].setConnections(0b10010101);
myFirstBox[241].setConnections(0b10100110);
myFirstBox[242].setConnections(0b01010101);
myFirstBox[243].setConnections(0b10010101);
myFirstBox[244].setConnections(0b01101010);
myFirstBox[245].setConnections(0b01101010);
myFirstBox[246].setConnections(0b10100100);
myFirstBox[247].setConnections(0b00101010);
myFirstBox[248].setConnections(0b01100110);
myFirstBox[249].setConnections(0b01101000);
myFirstBox[250].setConnections(0b01101001);
myFirstBox[251].setConnections(0b10101001);
myFirstBox[252].setConnections(0b01010110);
myFirstBox[253].setConnections(0b10010110);
myFirstBox[254].setConnections(0b01100101);
myFirstBox[255].setConnections(0b01011001);
myFirstBox[256].setConnections(0b01100110);
myFirstBox[257].setConnections(0b00100101);
myFirstBox[258].setConnections(0b01101001);
myFirstBox[259].setConnections(0b10010110);
myFirstBox[260].setConnections(0b10011001);
myFirstBox[261].setConnections(0b10011001);
myFirstBox[262].setConnections(0b01101001);
myFirstBox[263].setConnections(0b01010010);
myFirstBox[264].setConnections(0b10101010);
myFirstBox[265].setConnections(0b01101001);
myFirstBox[266].setConnections(0b01101001);
myFirstBox[267].setConnections(0b01101001);
myFirstBox[268].setConnections(0b10010110);
myFirstBox[269].setConnections(0b10011001);
myFirstBox[270].setConnections(0b01101010);
myFirstBox[271].setConnections(0b10000110);
myFirstBox[272].setConnections(0b10010101);
myFirstBox[273].setConnections(0b00010101);
myFirstBox[274].setConnections(0b10101010);
myFirstBox[275].setConnections(0b01010110);
myFirstBox[276].setConnections(0b01100100);
myFirstBox[277].setConnections(0b01010101);
myFirstBox[278].setConnections(0b10010101);
myFirstBox[279].setConnections(0b01010101);
myFirstBox[280].setConnections(0b01011010);
myFirstBox[281].setConnections(0b10011010);
myFirstBox[282].setConnections(0b00010101);
myFirstBox[283].setConnections(0b10010110);
myFirstBox[284].setConnections(0b10100101);
myFirstBox[285].setConnections(0b10010101);
myFirstBox[286].setConnections(0b01101001);
myFirstBox[287].setConnections(0b10100101);
myFirstBox[288].setConnections(0b01101001);
myFirstBox[289].setConnections(0b10011001);
myFirstBox[290].setConnections(0b01011001);
myFirstBox[291].setConnections(0b10010110);
myFirstBox[292].setConnections(0b01010101);
myFirstBox[293].setConnections(0b10100110);
myFirstBox[294].setConnections(0b10101001);
myFirstBox[295].setConnections(0b10101001);
myFirstBox[296].setConnections(0b01011010);
myFirstBox[297].setConnections(0b10100101);
myFirstBox[298].setConnections(0b01011010);
myFirstBox[299].setConnections(0b01100110);
myFirstBox[300].setConnections(0b10010101);
myFirstBox[301].setConnections(0b10101001);
myFirstBox[302].setConnections(0b10011001);
myFirstBox[303].setConnections(0b01010101);
myFirstBox[304].setConnections(0b01010101);
myFirstBox[305].setConnections(0b10101001);
myFirstBox[306].setConnections(0b01100101);
myFirstBox[307].setConnections(0b01101000);
myFirstBox[308].setConnections(0b01010101);
myFirstBox[309].setConnections(0b10010110);
myFirstBox[310].setConnections(0b10010110);
myFirstBox[311].setConnections(0b01011010);
myFirstBox[312].setConnections(0b10010110);
myFirstBox[313].setConnections(0b01011001);
myFirstBox[314].setConnections(0b01010110);
myFirstBox[315].setConnections(0b01101001);
myFirstBox[316].setConnections(0b10100101);
myFirstBox[317].setConnections(0b10101010);
myFirstBox[318].setConnections(0b10011001);
myFirstBox[319].setConnections(0b01010110);
myFirstBox[320].setConnections(0b10100000);
myFirstBox[321].setConnections(0b10100101);
myFirstBox[322].setConnections(0b00010101);
myFirstBox[323].setConnections(0b01010110);
myFirstBox[324].setConnections(0b01101010);
myFirstBox[325].setConnections(0b10010110);
myFirstBox[326].setConnections(0b00001001);
myFirstBox[327].setConnections(0b10011010);
myFirstBox[328].setConnections(0b10101010);
myFirstBox[329].setConnections(0b01100101);
myFirstBox[330].setConnections(0b01011010);
myFirstBox[331].setConnections(0b01101010);
myFirstBox[332].setConnections(0b10100101);
myFirstBox[333].setConnections(0b10100101);
myFirstBox[334].setConnections(0b01011000);
myFirstBox[335].setConnections(0b01010110);
myFirstBox[336].setConnections(0b00100110);
myFirstBox[337].setConnections(0b01101010);
myFirstBox[338].setConnections(0b01101010);
myFirstBox[339].setConnections(0b10010110);
myFirstBox[340].setConnections(0b10101010);
myFirstBox[341].setConnections(0b01100110);
myFirstBox[342].setConnections(0b10011000);
myFirstBox[343].setConnections(0b10101010);
myFirstBox[344].setConnections(0b01011001);
myFirstBox[345].setConnections(0b01101001);
myFirstBox[346].setConnections(0b10010101);
myFirstBox[347].setConnections(0b10101010);
myFirstBox[348].setConnections(0b10011001);
myFirstBox[349].setConnections(0b01101001);
myFirstBox[350].setConnections(0b01010110);
myFirstBox[351].setConnections(0b10000110);
myFirstBox[352].setConnections(0b10010110);
myFirstBox[353].setConnections(0b10011010);
myFirstBox[354].setConnections(0b01010110);
myFirstBox[355].setConnections(0b10010010);
myFirstBox[356].setConnections(0b10100110);
myFirstBox[357].setConnections(0b10101001);
myFirstBox[358].setConnections(0b01011001);
myFirstBox[359].setConnections(0b01010000);
myFirstBox[360].setConnections(0b10011001);
myFirstBox[361].setConnections(0b01101001);
myFirstBox[362].setConnections(0b01100001);
myFirstBox[363].setConnections(0b10100110);
myFirstBox[364].setConnections(0b10100101);
myFirstBox[365].setConnections(0b01100101);
myFirstBox[366].setConnections(0b01001010);
myFirstBox[367].setConnections(0b10010110);
myFirstBox[368].setConnections(0b10010101);
myFirstBox[369].setConnections(0b10010100);
myFirstBox[370].setConnections(0b01010101);
myFirstBox[371].setConnections(0b01011000);
myFirstBox[372].setConnections(0b01100010);
myFirstBox[373].setConnections(0b10011001);
myFirstBox[374].setConnections(0b01100110);
myFirstBox[375].setConnections(0b10100101);
myFirstBox[376].setConnections(0b01000110);
myFirstBox[377].setConnections(0b01010101);
myFirstBox[378].setConnections(0b01100110);
myFirstBox[379].setConnections(0b10100110);
myFirstBox[380].setConnections(0b00100110);
myFirstBox[381].setConnections(0b01101001);
myFirstBox[382].setConnections(0b01100101);
myFirstBox[383].setConnections(0b10010101);
myFirstBox[384].setConnections(0b01101001);
myFirstBox[385].setConnections(0b10010110);
myFirstBox[386].setConnections(0b10010101);
myFirstBox[387].setConnections(0b10101001);
myFirstBox[388].setConnections(0b10011001);
myFirstBox[389].setConnections(0b01010110);
myFirstBox[390].setConnections(0b10100010);
myFirstBox[391].setConnections(0b10101001);
myFirstBox[392].setConnections(0b01101010);
myFirstBox[393].setConnections(0b10101010);
myFirstBox[394].setConnections(0b01100110);
myFirstBox[395].setConnections(0b01010101);
myFirstBox[396].setConnections(0b01101001);
myFirstBox[397].setConnections(0b10010101);
myFirstBox[398].setConnections(0b10100110);
myFirstBox[399].setConnections(0b01101010);
return;
void create4040hardBox(vector<PuzzlePiece>& myFirstBox)
{
myFirstBox[0].setConnections(0b01101001);
myFirstBox[1].setConnections(0b10011001);
myFirstBox[2].setConnections(0b01100110);
myFirstBox[3].setConnections(0b01101001);
myFirstBox[4].setConnections(0b10100101);
myFirstBox[5].setConnections(0b10010010);
myFirstBox[6].setConnections(0b01101001);
myFirstBox[7].setConnections(0b00101010);
myFirstBox[8].setConnections(0b01000110);
myFirstBox[9].setConnections(0b01011010);
myFirstBox[10].setConnections(0b01011010);
myFirstBox[11].setConnections(0b10010101);
myFirstBox[12].setConnections(0b01010101);
myFirstBox[13].setConnections(0b10101001);
myFirstBox[14].setConnections(0b10010101);
myFirstBox[15].setConnections(0b10101010);
myFirstBox[16].setConnections(0b01101010);
myFirstBox[17].setConnections(0b01101010);
myFirstBox[18].setConnections(0b00100101);
myFirstBox[19].setConnections(0b01100101);
myFirstBox[20].setConnections(0b10010001);
myFirstBox[21].setConnections(0b10010101);
myFirstBox[22].setConnections(0b10101001);
myFirstBox[23].setConnections(0b01010110);
myFirstBox[24].setConnections(0b10101010);
myFirstBox[25].setConnections(0b01101000);
myFirstBox[26].setConnections(0b01101010);
myFirstBox[27].setConnections(0b10010101);
myFirstBox[28].setConnections(0b10011010);
myFirstBox[29].setConnections(0b10011001);
myFirstBox[30].setConnections(0b01101010);
myFirstBox[31].setConnections(0b01100001);
myFirstBox[32].setConnections(0b01101010);
myFirstBox[33].setConnections(0b01100101);
myFirstBox[34].setConnections(0b01010101);
myFirstBox[35].setConnections(0b01010110);
myFirstBox[36].setConnections(0b01101010);
myFirstBox[37].setConnections(0b01010110);
myFirstBox[38].setConnections(0b01100110);
myFirstBox[39].setConnections(0b01011010);
myFirstBox[40].setConnections(0b01100101);
myFirstBox[41].setConnections(0b01101001);
myFirstBox[42].setConnections(0b01010110);
myFirstBox[43].setConnections(0b01000110);
myFirstBox[44].setConnections(0b01011001);
myFirstBox[45].setConnections(0b01101001);
myFirstBox[46].setConnections(0b10000101);
myFirstBox[47].setConnections(0b10011010);
myFirstBox[48].setConnections(0b10010110);
myFirstBox[49].setConnections(0b01011010);
myFirstBox[50].setConnections(0b10011001);
myFirstBox[51].setConnections(0b01001001);
myFirstBox[52].setConnections(0b10100110);
myFirstBox[53].setConnections(0b01001010);
myFirstBox[54].setConnections(0b10010010);
myFirstBox[55].setConnections(0b01001010);
myFirstBox[56].setConnections(0b01101001);
myFirstBox[57].setConnections(0b10100110);
myFirstBox[58].setConnections(0b10010110);
myFirstBox[59].setConnections(0b10010110);
myFirstBox[60].setConnections(0b10101001);
myFirstBox[61].setConnections(0b00100101);
myFirstBox[62].setConnections(0b00101001);
myFirstBox[63].setConnections(0b01101001);
myFirstBox[64].setConnections(0b01101001);
myFirstBox[65].setConnections(0b00100101);
myFirstBox[66].setConnections(0b10010110);
myFirstBox[67].setConnections(0b10011010);
myFirstBox[68].setConnections(0b01100110);
myFirstBox[69].setConnections(0b10010110);
myFirstBox[70].setConnections(0b01010100);
myFirstBox[71].setConnections(0b01011010);
myFirstBox[72].setConnections(0b01100110);
myFirstBox[73].setConnections(0b01100101);
myFirstBox[74].setConnections(0b10011010);
myFirstBox[75].setConnections(0b10010101);
myFirstBox[76].setConnections(0b10011010);
myFirstBox[77].setConnections(0b01100101);
myFirstBox[78].setConnections(0b10011010);
myFirstBox[79].setConnections(0b01010110);
myFirstBox[80].setConnections(0b01101010);
myFirstBox[81].setConnections(0b01010101);
myFirstBox[82].setConnections(0b01100101);
myFirstBox[83].setConnections(0b10100101);
myFirstBox[84].setConnections(0b01010110);
myFirstBox[85].setConnections(0b01101010);
myFirstBox[86].setConnections(0b10011010);
myFirstBox[87].setConnections(0b10010110);
myFirstBox[88].setConnections(0b01101010);
myFirstBox[89].setConnections(0b01011010);
myFirstBox[90].setConnections(0b01010110);
myFirstBox[91].setConnections(0b01100101);
myFirstBox[92].setConnections(0b00100101);
myFirstBox[93].setConnections(0b10100101);
myFirstBox[94].setConnections(0b10010110);
myFirstBox[95].setConnections(0b01100110);
myFirstBox[96].setConnections(0b10000110);
myFirstBox[97].setConnections(0b01001001);
myFirstBox[98].setConnections(0b10010110);
myFirstBox[99].setConnections(0b10100110);
myFirstBox[100].setConnections(0b10100110);
myFirstBox[101].setConnections(0b01100010);
myFirstBox[102].setConnections(0b01101010);
myFirstBox[103].setConnections(0b10011001);
myFirstBox[104].setConnections(0b01010101);
myFirstBox[105].setConnections(0b10011010);
myFirstBox[106].setConnections(0b10101001);
myFirstBox[107].setConnections(0b01100110);
myFirstBox[108].setConnections(0b10101001);
myFirstBox[109].setConnections(0b10101001);
myFirstBox[110].setConnections(0b10010100);
myFirstBox[111].setConnections(0b01100110);
myFirstBox[112].setConnections(0b01010110);
myFirstBox[113].setConnections(0b10010101);
myFirstBox[114].setConnections(0b01011001);
myFirstBox[115].setConnections(0b01101010);
myFirstBox[116].setConnections(0b10100110);
myFirstBox[117].setConnections(0b10100101);
myFirstBox[118].setConnections(0b10101010);
myFirstBox[119].setConnections(0b01011010);
myFirstBox[120].setConnections(0b10011000);
myFirstBox[121].setConnections(0b10010101);
myFirstBox[122].setConnections(0b10100101);
myFirstBox[123].setConnections(0b10000110);
myFirstBox[124].setConnections(0b01100101);
myFirstBox[125].setConnections(0b10100110);
myFirstBox[126].setConnections(0b10101010);
myFirstBox[127].setConnections(0b01101001);
myFirstBox[128].setConnections(0b01010101);
myFirstBox[129].setConnections(0b01100101);
myFirstBox[130].setConnections(0b10001001);
myFirstBox[131].setConnections(0b01101010);
myFirstBox[132].setConnections(0b01101010);
myFirstBox[133].setConnections(0b01100010);
myFirstBox[134].setConnections(0b01100110);
myFirstBox[135].setConnections(0b10100001);
myFirstBox[136].setConnections(0b10011001);
myFirstBox[137].setConnections(0b01101010);
myFirstBox[138].setConnections(0b01011001);
myFirstBox[139].setConnections(0b10001001);
myFirstBox[140].setConnections(0b01010101);
myFirstBox[141].setConnections(0b10100101);
myFirstBox[142].setConnections(0b01100101);
myFirstBox[143].setConnections(0b10100101);
myFirstBox[144].setConnections(0b10011010);
myFirstBox[145].setConnections(0b10010001);
myFirstBox[146].setConnections(0b10100110);
myFirstBox[147].setConnections(0b01101010);
myFirstBox[148].setConnections(0b10010101);
myFirstBox[149].setConnections(0b01100101);
myFirstBox[150].setConnections(0b10100101);
myFirstBox[151].setConnections(0b10100110);
myFirstBox[152].setConnections(0b10010001);
myFirstBox[153].setConnections(0b10101000);
myFirstBox[154].setConnections(0b10011010);
myFirstBox[155].setConnections(0b10100110);
myFirstBox[156].setConnections(0b01100110);
myFirstBox[157].setConnections(0b10100110);
myFirstBox[158].setConnections(0b01011010);
myFirstBox[159].setConnections(0b10100001);
myFirstBox[160].setConnections(0b01010101);
myFirstBox[161].setConnections(0b10011010);
myFirstBox[162].setConnections(0b10101001);
myFirstBox[163].setConnections(0b01010110);
myFirstBox[164].setConnections(0b01100001);
myFirstBox[165].setConnections(0b01011001);
myFirstBox[166].setConnections(0b01101001);
myFirstBox[167].setConnections(0b10011001);
myFirstBox[168].setConnections(0b10010101);
myFirstBox[169].setConnections(0b01100010);
myFirstBox[170].setConnections(0b01010110);
myFirstBox[171].setConnections(0b00010101);
myFirstBox[172].setConnections(0b10100101);
myFirstBox[173].setConnections(0b10101010);
myFirstBox[174].setConnections(0b10011010);
myFirstBox[175].setConnections(0b01100101);
myFirstBox[176].setConnections(0b10100110);
myFirstBox[177].setConnections(0b10101001);
myFirstBox[178].setConnections(0b01011010);
myFirstBox[179].setConnections(0b01101001);
myFirstBox[180].setConnections(0b10010101);
myFirstBox[181].setConnections(0b01101010);
myFirstBox[182].setConnections(0b10010110);
myFirstBox[183].setConnections(0b10010110);
myFirstBox[184].setConnections(0b10011001);
myFirstBox[185].setConnections(0b10100101);
myFirstBox[186].setConnections(0b10010110);
myFirstBox[187].setConnections(0b10010110);
myFirstBox[188].setConnections(0b10011010);
myFirstBox[189].setConnections(0b10010101);
myFirstBox[190].setConnections(0b01010001);
myFirstBox[191].setConnections(0b01010100);
myFirstBox[192].setConnections(0b10101000);
myFirstBox[193].setConnections(0b10100110);
myFirstBox[194].setConnections(0b01010001);
myFirstBox[195].setConnections(0b01010101);
myFirstBox[196].setConnections(0b01100110);
myFirstBox[197].setConnections(0b10100101);
myFirstBox[198].setConnections(0b00100101);
myFirstBox[199].setConnections(0b00100101);
myFirstBox[200].setConnections(0b10101001);
myFirstBox[201].setConnections(0b10101001);
myFirstBox[202].setConnections(0b01011001);
myFirstBox[203].setConnections(0b00001010);
myFirstBox[204].setConnections(0b01010101);
myFirstBox[205].setConnections(0b10011010);
myFirstBox[206].setConnections(0b10100110);
myFirstBox[207].setConnections(0b10100101);
myFirstBox[208].setConnections(0b10011001);
myFirstBox[209].setConnections(0b10100110);
myFirstBox[210].setConnections(0b10101010);
myFirstBox[211].setConnections(0b01010110);
myFirstBox[212].setConnections(0b01010101);
myFirstBox[213].setConnections(0b01100010);
myFirstBox[214].setConnections(0b10010110);
myFirstBox[215].setConnections(0b10011010);
myFirstBox[216].setConnections(0b01100100);
myFirstBox[217].setConnections(0b01010101);
myFirstBox[218].setConnections(0b10011010);
myFirstBox[219].setConnections(0b01100101);
myFirstBox[220].setConnections(0b10101001);
myFirstBox[221].setConnections(0b10010101);
myFirstBox[222].setConnections(0b10100101);
myFirstBox[223].setConnections(0b10101001);
myFirstBox[224].setConnections(0b10100110);
myFirstBox[225].setConnections(0b10011001);
myFirstBox[226].setConnections(0b01011010);
myFirstBox[227].setConnections(0b01000101);
myFirstBox[228].setConnections(0b01100110);
myFirstBox[229].setConnections(0b10101010);
myFirstBox[230].setConnections(0b01010100);
myFirstBox[231].setConnections(0b10101010);
myFirstBox[232].setConnections(0b10011010);
myFirstBox[233].setConnections(0b10100110);
myFirstBox[234].setConnections(0b10011000);
myFirstBox[235].setConnections(0b10011001);
myFirstBox[236].setConnections(0b01010101);
myFirstBox[237].setConnections(0b01001010);
myFirstBox[238].setConnections(0b01100001);
myFirstBox[239].setConnections(0b10011010);
myFirstBox[240].setConnections(0b10010101);
myFirstBox[241].setConnections(0b10100110);
myFirstBox[242].setConnections(0b01010101);
myFirstBox[243].setConnections(0b10010101);
myFirstBox[244].setConnections(0b01101010);
myFirstBox[245].setConnections(0b01101010);
myFirstBox[246].setConnections(0b10100100);
myFirstBox[247].setConnections(0b00101010);
myFirstBox[248].setConnections(0b01100110);
myFirstBox[249].setConnections(0b01101000);
myFirstBox[250].setConnections(0b01101001);
myFirstBox[251].setConnections(0b10101001);
myFirstBox[252].setConnections(0b01010110);
myFirstBox[253].setConnections(0b10010110);
myFirstBox[254].setConnections(0b01100101);
myFirstBox[255].setConnections(0b01011001);
myFirstBox[256].setConnections(0b01100110);
myFirstBox[257].setConnections(0b00100101);
myFirstBox[258].setConnections(0b01101001);
myFirstBox[259].setConnections(0b10010110);
myFirstBox[260].setConnections(0b10011001);
myFirstBox[261].setConnections(0b10011001);
myFirstBox[262].setConnections(0b01101001);
myFirstBox[263].setConnections(0b01010010);
myFirstBox[264].setConnections(0b10101010);
myFirstBox[265].setConnections(0b01101001);
myFirstBox[266].setConnections(0b01101001);
myFirstBox[267].setConnections(0b01101001);
myFirstBox[268].setConnections(0b10010110);
myFirstBox[269].setConnections(0b10011001);
myFirstBox[270].setConnections(0b01101010);
myFirstBox[271].setConnections(0b10000110);
myFirstBox[272].setConnections(0b10010101);
myFirstBox[273].setConnections(0b00010101);
myFirstBox[274].setConnections(0b10101010);
myFirstBox[275].setConnections(0b01010110);
myFirstBox[276].setConnections(0b01100100);
myFirstBox[277].setConnections(0b01010101);
myFirstBox[278].setConnections(0b10010101);
myFirstBox[279].setConnections(0b01010101);
myFirstBox[280].setConnections(0b01011010);
myFirstBox[281].setConnections(0b10011010);
myFirstBox[282].setConnections(0b00010101);
myFirstBox[283].setConnections(0b10010110);
myFirstBox[284].setConnections(0b10100101);
myFirstBox[285].setConnections(0b10010101);
myFirstBox[286].setConnections(0b01101001);
myFirstBox[287].setConnections(0b10100101);
myFirstBox[288].setConnections(0b01101001);
myFirstBox[289].setConnections(0b10011001);
myFirstBox[290].setConnections(0b01011001);
myFirstBox[291].setConnections(0b10010110);
myFirstBox[292].setConnections(0b01010101);
myFirstBox[293].setConnections(0b10100110);
myFirstBox[294].setConnections(0b10101001);
myFirstBox[295].setConnections(0b10101001);
myFirstBox[296].setConnections(0b01011010);
myFirstBox[297].setConnections(0b10100101);
myFirstBox[298].setConnections(0b01011010);
myFirstBox[299].setConnections(0b01100110);
myFirstBox[300].setConnections(0b10010101);
myFirstBox[301].setConnections(0b10101001);
myFirstBox[302].setConnections(0b10011001);
myFirstBox[303].setConnections(0b01010101);
myFirstBox[304].setConnections(0b01010101);
myFirstBox[305].setConnections(0b10101001);
myFirstBox[306].setConnections(0b01100101);
myFirstBox[307].setConnections(0b01101000);
myFirstBox[308].setConnections(0b01010101);
myFirstBox[309].setConnections(0b10010110);
myFirstBox[310].setConnections(0b10010110);
myFirstBox[311].setConnections(0b01011010);
myFirstBox[312].setConnections(0b10010110);
myFirstBox[313].setConnections(0b01011001);
myFirstBox[314].setConnections(0b01010110);
myFirstBox[315].setConnections(0b01101001);
myFirstBox[316].setConnections(0b10100101);
myFirstBox[317].setConnections(0b10101010);
myFirstBox[318].setConnections(0b10011001);
myFirstBox[319].setConnections(0b01010110);
myFirstBox[320].setConnections(0b10100000);
myFirstBox[321].setConnections(0b10100101);
myFirstBox[322].setConnections(0b00010101);
myFirstBox[323].setConnections(0b01010110);
myFirstBox[324].setConnections(0b01101010);
myFirstBox[325].setConnections(0b10010110);
myFirstBox[326].setConnections(0b00001001);
myFirstBox[327].setConnections(0b10011010);
myFirstBox[328].setConnections(0b10101010);
myFirstBox[329].setConnections(0b01100101);
myFirstBox[330].setConnections(0b01011010);
myFirstBox[331].setConnections(0b01101010);
myFirstBox[332].setConnections(0b10100101);
myFirstBox[333].setConnections(0b10100101);
myFirstBox[334].setConnections(0b01011000);
myFirstBox[335].setConnections(0b01010110);
myFirstBox[336].setConnections(0b00100110);
myFirstBox[337].setConnections(0b01101010);
myFirstBox[338].setConnections(0b01101010);
myFirstBox[339].setConnections(0b10010110);
myFirstBox[340].setConnections(0b10101010);
myFirstBox[341].setConnections(0b01100110);
myFirstBox[342].setConnections(0b10011000);
myFirstBox[343].setConnections(0b10101010);
myFirstBox[344].setConnections(0b01011001);
myFirstBox[345].setConnections(0b01101001);
myFirstBox[346].setConnections(0b10010101);
myFirstBox[347].setConnections(0b10101010);
myFirstBox[348].setConnections(0b10011001);
myFirstBox[349].setConnections(0b01101001);
myFirstBox[350].setConnections(0b01010110);
myFirstBox[351].setConnections(0b10000110);
myFirstBox[352].setConnections(0b10010110);
myFirstBox[353].setConnections(0b10011010);
myFirstBox[354].setConnections(0b01010110);
myFirstBox[355].setConnections(0b10010010);
myFirstBox[356].setConnections(0b10100110);
myFirstBox[357].setConnections(0b10101001);
myFirstBox[358].setConnections(0b01011001);
myFirstBox[359].setConnections(0b01010000);
myFirstBox[360].setConnections(0b10011001);
myFirstBox[361].setConnections(0b01101001);
myFirstBox[362].setConnections(0b01100001);
myFirstBox[363].setConnections(0b10100110);
myFirstBox[364].setConnections(0b10100101);
myFirstBox[365].setConnections(0b01100101);
myFirstBox[366].setConnections(0b01001010);
myFirstBox[367].setConnections(0b10010110);
myFirstBox[368].setConnections(0b10010101);
myFirstBox[369].setConnections(0b10010100);
myFirstBox[370].setConnections(0b01010101);
myFirstBox[371].setConnections(0b01011000);
myFirstBox[372].setConnections(0b01100010);
myFirstBox[373].setConnections(0b10011001);
myFirstBox[374].setConnections(0b01100110);
myFirstBox[375].setConnections(0b10100101);
myFirstBox[376].setConnections(0b01000110);
myFirstBox[377].setConnections(0b01010101);
myFirstBox[378].setConnections(0b01100110);
myFirstBox[379].setConnections(0b10100110);
myFirstBox[380].setConnections(0b00100110);
myFirstBox[381].setConnections(0b01101001);
myFirstBox[382].setConnections(0b01100101);
myFirstBox[383].setConnections(0b10010101);
myFirstBox[384].setConnections(0b01101001);
myFirstBox[385].setConnections(0b10010110);
myFirstBox[386].setConnections(0b10010101);
myFirstBox[387].setConnections(0b10101001);
myFirstBox[388].setConnections(0b10011001);
myFirstBox[389].setConnections(0b01010110);
myFirstBox[390].setConnections(0b10100010);
myFirstBox[391].setConnections(0b10101001);
myFirstBox[392].setConnections(0b01101010);
myFirstBox[393].setConnections(0b10101010);
myFirstBox[394].setConnections(0b01100110);
myFirstBox[395].setConnections(0b01010101);
myFirstBox[396].setConnections(0b01101001);
myFirstBox[397].setConnections(0b10010101);
myFirstBox[398].setConnections(0b10100110);
myFirstBox[399].setConnections(0b01101010);
return;
}

View File

@ -1,115 +1,115 @@
//Raphael Maenle - 11.11.2017
#include <iostream>
#include <bitset>
#include <cstdlib>
#include <time.h>
#include <vector>
#include <algorithm>
#define debug
#include "puzzle.h"
#include "test_puzzle.h"
using namespace std;
vector<LogEntry> log;
int main()
{
srand(time(0));
vector<Part> part_array(NR_PARTS);
vector<Part *> corners_array(NR_CORNERS);
vector<Part *> edges_array(NR_EDGES);
vector<Part *> inners_array(NR_INNERS);
//randomBox myPuzzle(cols,rows);
//myPuzzle.createRandomPuzzle();
unsigned int rows=20, cols=20;
vector<PuzzlePiece> myFirstBox = createBox(cols, rows);
create4040hardBox(myFirstBox);
printBox(myFirstBox);
cout << endl;
while(next());
return 0;
}
next()
{
//calculates next move according to log
//case puzzle solved
//return 0;
//case last log empty
//backtrack
//case last log exactly one solution
//put all remaining puzzle pieces into new log entry
//try next piece/place with solve abstraction level 0
//case last log multiple entries
//advance abstraction layer of last log by one and solve()
//or pick first if highest level reached
//return 1;
}
solve()
{
//case
//abstraction layer = 0
//go to abstraction layer 0 solver
//case
//abstraction layer = 1
//go to abstraction layer 1 solver
//default
//random one of the parts
}
abstractionlayer0solver()
{
//throw all remaining puzzle pieces into log
//remove all impossible
}
abstractionlayer1solver()
{
//remove all impossible according to abstraction layer one
}
setsolution()
{
//put
//set pointer to log into matrix
}
backtrack()
{
//following possibilities:
//last log entry empty
//delete last log + backtrack
//last log entry only one solution
//delete last log + backtrack
//last log entry multiple solutions (and current one was randomed)
//delete randomed piece from puzzleCollector and go to next (which might random again depending on function)
//Raphael Maenle - 11.11.2017
#include <iostream>
#include <bitset>
#include <cstdlib>
#include <time.h>
#include <vector>
#include <algorithm>
#define debug
#include "puzzle.h"
#include "test_puzzle.h"
using namespace std;
vector<LogEntry> log;
int main()
{
srand(time(0));
vector<Part> part_array(NR_PARTS);
vector<Part *> corners_array(NR_CORNERS);
vector<Part *> edges_array(NR_EDGES);
vector<Part *> inners_array(NR_INNERS);
//randomBox myPuzzle(cols,rows);
//myPuzzle.createRandomPuzzle();
unsigned int rows=20, cols=20;
vector<PuzzlePiece> myFirstBox = createBox(cols, rows);
create4040hardBox(myFirstBox);
printBox(myFirstBox);
cout << endl;
while(next());
return 0;
}
next()
{
//calculates next move according to log
//case puzzle solved
//return 0;
//case last log empty
//backtrack
//case last log exactly one solution
//put all remaining puzzle pieces into new log entry
//try next piece/place with solve abstraction level 0
//case last log multiple entries
//advance abstraction layer of last log by one and solve()
//or pick first if highest level reached
//return 1;
}
solve()
{
//case
//abstraction layer = 0
//go to abstraction layer 0 solver
//case
//abstraction layer = 1
//go to abstraction layer 1 solver
//default
//random one of the parts
}
abstractionlayer0solver()
{
//throw all remaining puzzle pieces into log
//remove all impossible
}
abstractionlayer1solver()
{
//remove all impossible according to abstraction layer one
}
setsolution()
{
//put
//set pointer to log into matrix
}
backtrack()
{
//following possibilities:
//last log entry empty
//delete last log + backtrack
//last log entry only one solution
//delete last log + backtrack
//last log entry multiple solutions (and current one was randomed)
//delete randomed piece from puzzleCollector and go to next (which might random again depending on function)
}

View File

@ -1,467 +1,467 @@
#include <stdint.h>
#define NR_PARTS 1008
#define NR_CORNERS 4
#define NR_EDGES 120
#define NR_INNERS 884
using namespace std;
//part from group header file
class Part
{
public:
Part(): connections(0){}
~Part() {}
uint8_t getConnections() const
{
return connections;
}
void setConnections(uint8_t newconnections)
{
connections = newconnections;
}
private:
uint8_t connections;
};
//puzzlepiece extens part with essential identifiers and functions
class PuzzlePiece: public Part
{
public:
PuzzlePiece(unsigned int flag = 0)
{
shifts=0;
boxidentifier=-1;
switch(flag)
{
case 0:
setConnections(0b00000000);
break;
case 1:
setConnections(0b11111111);
break;
case 3:
randomCenterPiece();
break;
}
}
void shift(unsigned int moves);
void randomCenterPiece();
void printPiece() { cout << bitset<sizeof(unsigned char)*8> (getConnections()); }
void setBoxIdentifier(int new_boxid) { boxidentifier = new_boxid; }
int getBoxIdentifier() { return boxidentifier; }
void assignIdentifier() { identifier = idcount;idcount++; }
unsigned int getIdentifier() { return identifier;}
private:
unsigned int shifts;
unsigned int boxidentifier;
unsigned int identifier;
static unsigned int idcount;
};
unsigned int PuzzlePiece::idcount(0);
class Puzzle
{
friend class randomBox;
public:
//constructor creates matrix with 00 outside and 11 inside
Puzzle(uint m = 7, uint n = 4): col(m), row(n)
{
Matrix = new PuzzlePiece* [n+2];
for(int i = 0;i<n+2;i++)
{
Matrix[i] = new PuzzlePiece[m+2];
for(int j = 0;j<m+2;j++)
{
if(i==0 || j==0 || i==n+1 || j==m+1)
{
Matrix[i][j] = PuzzlePiece(0);
}
else
{
Matrix[i][j] = PuzzlePiece(1);
}
}
}
}
bool setPiece(uint m,uint n,PuzzlePiece newPiece)
{
if(PlaceOfPartGood(m,n,newPiece))
{
Matrix[n+1][m+1] = newPiece;
return 1;
}
return 0;
}
//removes piece and instead puts undefined piece
bool removePiece(uint m,uint n)
{
Matrix[n+1][m+1].setConnections(0b11111111);
return 1;
}
//getter
PuzzlePiece getPiece(uint m,uint n) { return Matrix[n+1][m+1]; }
uint getCols(){ return col; }
uint getRows(){ return row; }
//functtion definitions
void printPuzzle();
bool PlaceOfPartGood(unsigned int m, unsigned int n, PuzzlePiece& myPart);
bool PlaceOfPart2Good(unsigned int m,unsigned int n, PuzzlePiece& myPart);
bool testRotationPiece(unsigned int m, unsigned int n, PuzzlePiece& myPart);
unsigned int tryAllPieces(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox, unsigned int separator);
unsigned int putBackIntoBox(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox);
private:
uint row;
uint col;
PuzzlePiece** Matrix;
};
//use this for random puzzle creation
class randomBox: public Puzzle
{
public:
randomBox(unsigned int m, unsigned int n) : Puzzle(m,n) {} //passed m n to puzzle constructor
void createRandomPuzzle();
vector<PuzzlePiece> shuffle();
void printBox();
private:
vector<PuzzlePiece*> Box;
};
class coor
{
int m, n;
coor(int newm,int newn): m(newm), n(newn)
{}
}
class LogEntry
{
public:
vector<PuzzlePiece*> PieceCollector;
vector<coor> CoorCollector;
int abstractionLevel;
uint myCoor;
PuzzlePiece* myPuzzlePiece;
PuzzleCollector()
{
myCoor.m=-1;
myCoor.n=-1;
abstractionLevel=0;
}
private:
}
//functiondefinitions
void printBox(vector<PuzzlePiece> myBox);
vector<PuzzlePiece> createBox(uint m, uint n);
void numerateBox(vector<PuzzlePiece>& myBox);
//functions
//shifts puzzle piece one to the right
void PuzzlePiece::shift(unsigned int moves)
{
shifts = (shifts+moves)%4;
setConnections(((getConnections() >> (moves*2)) | (getConnections() << sizeof(unsigned char)*8 - (moves*2))));
}
//creates random centerpiece
void PuzzlePiece::randomCenterPiece()
{
setConnections(0b00000000);
if(rand()%2)
setConnections(getConnections() | 0b01000000);
else
setConnections(getConnections() | 0b10000000);
if(rand()%2)
setConnections(getConnections() | 0b00010000);
else
setConnections(getConnections() | 0b00100000);
if(rand()%2)
setConnections(getConnections() | 0b00000100);
else
setConnections(getConnections() | 0b00001000);
if(rand()%2)
setConnections(getConnections() | 0b00000001);
else
setConnections(getConnections() | 0b00000010);
}
//tries all pieces in box from separator to end and places fitting into matrix. removes fitting piece
//use separator if you have to retract to a position
//seperator may be bigger than box size, if all puzzle pieces have already been looked at.
// it immediately retracts again then (returns -1)
unsigned int Puzzle::tryAllPieces(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox, unsigned int separator)
{
for(int i=separator; i<myBox.size();i++)
{
if(testRotationPiece(m,n,myBox[i]))
{
setPiece(m,n,myBox[i]);
myBox.erase(myBox.begin()+i);
return i;
}
}
return -1;
}
//tests the myPart in all 4 rotations at position m, n
bool Puzzle::testRotationPiece(unsigned int m, unsigned int n, PuzzlePiece& myPart)
{
for(int rotation=0; rotation < 4; rotation++)
{
if(PlaceOfPartGood(m,n, myPart))
return 1;
myPart.shift(1);
}
#ifdef debug
cout << "bad part: ";
myPart.printPiece();
cout << endl;
#endif
return 0;
}
//insterts piece at position in box according to boxidentifier and removes piece from puzzle
//this returns the position after!! the puzzle piece was put back in! not the boxidentifier of the piece. look that up in other function.
unsigned int Puzzle::putBackIntoBox(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox)
{
#ifdef debug
cout << "putting back" << endl;
cout << "Old Box: ";
printBox(myBox);
cout << endl;
#endif
for(int i = 0; i < myBox.size();i++)
{
if(myBox[i].getBoxIdentifier()>getPiece(m,n).getBoxIdentifier())
{
myBox.insert(myBox.begin()+i,getPiece(m,n));
removePiece(m,n);
return i+1;
}
}
//using push back, if the element was the last element in the vector chain
myBox.push_back(getPiece(m,n));
removePiece(m,n);
return myBox.size();
}
//checks if the myPart in its current orientation is legal in position m, n
bool Puzzle::PlaceOfPartGood(unsigned int m,unsigned int n, PuzzlePiece& myPart)
{
PuzzlePiece negativePart(0);
negativePart.setConnections(negativePart.getConnections() | (getPiece(m,n+1).getConnections() & 0b11000000));
negativePart.setConnections(negativePart.getConnections() | (getPiece(m-1,n).getConnections() & 0b00110000));
negativePart.setConnections(negativePart.getConnections() | (getPiece(m,n-1).getConnections() & 0b00001100));
negativePart.setConnections(negativePart.getConnections() | (getPiece(m+1,n).getConnections() & 0b00000011));
negativePart.shift(2);
if (
( ((((negativePart.getConnections() & 0b11000000) ^ (myPart.getConnections() & 0b11000000)) != 0b00000000) && (((myPart.getConnections() & 0b11000000) != 0b00000000) && (negativePart.getConnections() & 0b11000000) != 0b00000000))
|| ((((negativePart.getConnections() & 0b11000000) == 0b11000000) || ((myPart.getConnections() & 0b11000000) == 0b11000000)) && (( myPart.getConnections() & 0b11000000) != 0b00000000) && (negativePart.getConnections() & 0b11000000) != 0b00000000)
|| (((negativePart.getConnections() & 0b11000000) == 0b00000000) && ((myPart.getConnections() & 0b11000000) == 0b00000000)) )
&&
( ((((negativePart.getConnections() & 0b00110000) ^ (myPart.getConnections() & 0b00110000)) != 0b00000000) && (((myPart.getConnections() & 0b00110000) != 0b00000000) && (negativePart.getConnections() & 0b00110000) != 0b00000000))
|| ((((negativePart.getConnections() & 0b00110000) == 0b00110000) || ((myPart.getConnections() & 0b00110000) == 0b00110000)) && (((myPart.getConnections() & 0b00110000) != 0b00000000) && (negativePart.getConnections() & 0b00110000) != 0b00000000))
|| (((negativePart.getConnections() & 0b00110000) == 0b00000000) && ((myPart.getConnections() & 0b00110000) == 0b00000000)) )
&&
( ((((negativePart.getConnections() & 0b00001100) ^ (myPart.getConnections() & 0b00001100)) != 0b00000000) && (((myPart.getConnections() & 0b00001100) != 0b00000000) && (negativePart.getConnections() & 0b00001100) != 0b00000000))
|| ((((negativePart.getConnections() & 0b00001100) == 0b00001100) || ((myPart.getConnections() & 0b00001100) == 0b00001100)) && (((myPart.getConnections() & 0b00001100) != 0b00000000) && (negativePart.getConnections() & 0b00001100) != 0b00000000))
|| (((negativePart.getConnections() & 0b00001100) == 0b00000000) && ((myPart.getConnections() & 0b00001100) == 0b00000000)) )
&&
( ((((negativePart.getConnections() & 0b00000011) ^ (myPart.getConnections() & 0b00000011)) != 0b00000000) && (((myPart.getConnections() & 0b00000011) != 0b00000000) && (negativePart.getConnections() & 0b00000011) != 0b00000000))
|| ((((negativePart.getConnections() & 0b00000011) == 0b00000011) || ((myPart.getConnections() & 0b00000011) == 0b00000011)) && (((myPart.getConnections() & 0b00000011) != 0b00000000) && (negativePart.getConnections() & 0b00000011) != 0b00000000))
|| (((negativePart.getConnections() & 0b00000011) == 0b00000000) && ((myPart.getConnections() & 0b00000011) == 0b00000000)) )
)
{
#ifdef debug
cout << "good Part: ";
myPart.printPiece();
cout << endl;
#endif
return 1;
}
return 0;
}
//TODO!!
//simpler algorithm to the first placeofpartgood
//not yet functional!!!
bool Puzzle::PlaceOfPart2Good(unsigned int m,unsigned int n, PuzzlePiece& myPart)
{
PuzzlePiece negativePart(0);
negativePart.setConnections(negativePart.getConnections() | (getPiece(m,n+1).getConnections() & 0b11000000));
negativePart.setConnections(negativePart.getConnections() | (getPiece(m-1,n).getConnections() & 0b00110000));
negativePart.setConnections(negativePart.getConnections() | (getPiece(m,n-1).getConnections() & 0b00001100));
negativePart.setConnections(negativePart.getConnections() | (getPiece(m+1,n).getConnections() & 0b00000011));
negativePart.shift(2);
//A and D or B and C or not A and not B and not C and not D
if (
( ( (negativePart.getConnections() & 0b10000000) & (myPart.getConnections() & 0b01000000))
|| ( (negativePart.getConnections() & 0b01000000) & (myPart.getConnections() & 0b10000000))
|| ((!(negativePart.getConnections() & 0b10000000) & !(myPart.getConnections() & 0b10000000)) & (!(negativePart.getConnections() & 0b01000000) & !(myPart.getConnections() & 0b01000000)))
)
&&
( ( (negativePart.getConnections() & 0b00100000) & (myPart.getConnections() & 0b00010000))
|| ( (negativePart.getConnections() & 0b00010000) & (myPart.getConnections() & 0b00100000))
|| ((!(negativePart.getConnections() & 0b00100000) & !(myPart.getConnections() & 0b00100000)) & (!(negativePart.getConnections() & 0b00010000) & !(myPart.getConnections() & 0b00010000)))
)
&&
( ( (negativePart.getConnections() & 0b00001000) & (myPart.getConnections() & 0b00000100))
|| ( (negativePart.getConnections() & 0b00000100) & (myPart.getConnections() & 0b00001000))
|| ((!(negativePart.getConnections() & 0b00001000) & !(myPart.getConnections() & 0b00001000)) & (!(negativePart.getConnections() & 0b00000100) & !(myPart.getConnections() & 0b00000100)))
)
&&
( ( (negativePart.getConnections() & 0b00000010) & (myPart.getConnections() & 0b00000001))
|| ( (negativePart.getConnections() & 0b00000001) & (myPart.getConnections() & 0b00000010))
|| ((!(negativePart.getConnections() & 0b00000010) & !(myPart.getConnections() & 0b00000010)) & (!(negativePart.getConnections() & 0b00000001) & !(myPart.getConnections() & 0b00000001)))
)
)
return 1;
cout << "nogood" << endl;
return 0;
}
//prints the true puzzle (without 0 edges)
void Puzzle::printPuzzle()
{
cout << "current Puzzle: " << endl;
for(int i=1;i<row+1;i++)
{
for(int j=1;j<col+1;j++)
{
Matrix[i][j].printPiece();
cout << " ";
}
cout << endl;
}
cout << endl;
}
//creates a legal puzzle out of random pieces
void randomBox::createRandomPuzzle()
{
PuzzlePiece temporaryRandomPiece(0);
for(int i=0;i<getRows();i++)
{
for(int j = 0; j < getCols();)
{
//create random piece, set edges according to position and check if piece is good
temporaryRandomPiece.randomCenterPiece();
if(i==0)
temporaryRandomPiece.setConnections(0b00111111 & temporaryRandomPiece.getConnections());
if(i==getRows()-1)
temporaryRandomPiece.setConnections(0b11110011 & temporaryRandomPiece.getConnections());
if(j==0)
temporaryRandomPiece.setConnections(0b11111100 & temporaryRandomPiece.getConnections());
if(j==getCols()-1)
temporaryRandomPiece.setConnections(0b11001111 & temporaryRandomPiece.getConnections());
if(PlaceOfPartGood(j,i,temporaryRandomPiece))
{
temporaryRandomPiece.assignIdentifier();
setPiece(j,i,temporaryRandomPiece);
j++;
Box.push_back(temporaryRandomPiece);
}
}
}
}
//prints a box contents on console
void randomBox::printBox()
{
shuffle();
for (vector<PuzzlePiece>::iterator i = Box.begin(); i != Box.end(); i++)
{
(*i).printPiece();
cout << ' ';
}
cout << endl;
}
//shuffles around a box, randomizing pieces and orientation
vector<PuzzlePiece> randomBox::shuffle()
{
random_shuffle(Box.begin(),Box.end());
for (vector<PuzzlePiece>::iterator i = Box.begin(); i != Box.end(); i++)
(*i).shift(rand()%4);
numerateBox(Box);
return Box;
}
//creates a random box size m, n, shuffles it, and then retuns it
vector<PuzzlePiece> createBox(uint m, uint n)
{
randomBox myFirstPuzzleBox(m,n);
myFirstPuzzleBox.createRandomPuzzle();
return myFirstPuzzleBox.shuffle();
}
//prints contents of box
void printBox(vector<PuzzlePiece> myBox)
{
cout << "current Box: " << endl;
for (vector<PuzzlePiece>::iterator i = myBox.begin(); i != myBox.end(); i++)
{
(*i).printPiece();
cout << ' ';
}
cout << endl;
return;
}
//gives every element in box a box identifier.
void numerateBox(vector<PuzzlePiece>& myBox)
{
for(int i = 0; i< myBox.size();i++)
myBox[i].setBoxIdentifier(i);
return;
#include <stdint.h>
#define NR_PARTS 1008
#define NR_CORNERS 4
#define NR_EDGES 120
#define NR_INNERS 884
using namespace std;
//part from group header file
class Part
{
public:
Part(): connections(0){}
~Part() {}
uint8_t getConnections() const
{
return connections;
}
void setConnections(uint8_t newconnections)
{
connections = newconnections;
}
private:
uint8_t connections;
};
//puzzlepiece extens part with essential identifiers and functions
class PuzzlePiece: public Part
{
public:
PuzzlePiece(unsigned int flag = 0)
{
shifts=0;
boxidentifier=-1;
switch(flag)
{
case 0:
setConnections(0b00000000);
break;
case 1:
setConnections(0b11111111);
break;
case 3:
randomCenterPiece();
break;
}
}
void shift(unsigned int moves);
void randomCenterPiece();
void printPiece() { cout << bitset<sizeof(unsigned char)*8> (getConnections()); }
void setBoxIdentifier(int new_boxid) { boxidentifier = new_boxid; }
int getBoxIdentifier() { return boxidentifier; }
void assignIdentifier() { identifier = idcount;idcount++; }
unsigned int getIdentifier() { return identifier;}
private:
unsigned int shifts;
unsigned int boxidentifier;
unsigned int identifier;
static unsigned int idcount;
};
unsigned int PuzzlePiece::idcount(0);
class Puzzle
{
friend class randomBox;
public:
//constructor creates matrix with 00 outside and 11 inside
Puzzle(uint m = 7, uint n = 4): col(m), row(n)
{
Matrix = new PuzzlePiece* [n+2];
for(int i = 0;i<n+2;i++)
{
Matrix[i] = new PuzzlePiece[m+2];
for(int j = 0;j<m+2;j++)
{
if(i==0 || j==0 || i==n+1 || j==m+1)
{
Matrix[i][j] = PuzzlePiece(0);
}
else
{
Matrix[i][j] = PuzzlePiece(1);
}
}
}
}
bool setPiece(uint m,uint n,PuzzlePiece newPiece)
{
if(PlaceOfPartGood(m,n,newPiece))
{
Matrix[n+1][m+1] = newPiece;
return 1;
}
return 0;
}
//removes piece and instead puts undefined piece
bool removePiece(uint m,uint n)
{
Matrix[n+1][m+1].setConnections(0b11111111);
return 1;
}
//getter
PuzzlePiece getPiece(uint m,uint n) { return Matrix[n+1][m+1]; }
uint getCols(){ return col; }
uint getRows(){ return row; }
//functtion definitions
void printPuzzle();
bool PlaceOfPartGood(unsigned int m, unsigned int n, PuzzlePiece& myPart);
bool PlaceOfPart2Good(unsigned int m,unsigned int n, PuzzlePiece& myPart);
bool testRotationPiece(unsigned int m, unsigned int n, PuzzlePiece& myPart);
unsigned int tryAllPieces(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox, unsigned int separator);
unsigned int putBackIntoBox(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox);
private:
uint row;
uint col;
PuzzlePiece** Matrix;
};
//use this for random puzzle creation
class randomBox: public Puzzle
{
public:
randomBox(unsigned int m, unsigned int n) : Puzzle(m,n) {} //passed m n to puzzle constructor
void createRandomPuzzle();
vector<PuzzlePiece> shuffle();
void printBox();
private:
vector<PuzzlePiece*> Box;
};
class coor
{
int m, n;
coor(int newm,int newn): m(newm), n(newn)
{}
}
class LogEntry
{
public:
vector<PuzzlePiece*> PieceCollector;
vector<coor> CoorCollector;
int abstractionLevel;
uint myCoor;
PuzzlePiece* myPuzzlePiece;
PuzzleCollector()
{
myCoor.m=-1;
myCoor.n=-1;
abstractionLevel=0;
}
private:
}
//functiondefinitions
void printBox(vector<PuzzlePiece> myBox);
vector<PuzzlePiece> createBox(uint m, uint n);
void numerateBox(vector<PuzzlePiece>& myBox);
//functions
//shifts puzzle piece one to the right
void PuzzlePiece::shift(unsigned int moves)
{
shifts = (shifts+moves)%4;
setConnections(((getConnections() >> (moves*2)) | (getConnections() << sizeof(unsigned char)*8 - (moves*2))));
}
//creates random centerpiece
void PuzzlePiece::randomCenterPiece()
{
setConnections(0b00000000);
if(rand()%2)
setConnections(getConnections() | 0b01000000);
else
setConnections(getConnections() | 0b10000000);
if(rand()%2)
setConnections(getConnections() | 0b00010000);
else
setConnections(getConnections() | 0b00100000);
if(rand()%2)
setConnections(getConnections() | 0b00000100);
else
setConnections(getConnections() | 0b00001000);
if(rand()%2)
setConnections(getConnections() | 0b00000001);
else
setConnections(getConnections() | 0b00000010);
}
//tries all pieces in box from separator to end and places fitting into matrix. removes fitting piece
//use separator if you have to retract to a position
//seperator may be bigger than box size, if all puzzle pieces have already been looked at.
// it immediately retracts again then (returns -1)
unsigned int Puzzle::tryAllPieces(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox, unsigned int separator)
{
for(int i=separator; i<myBox.size();i++)
{
if(testRotationPiece(m,n,myBox[i]))
{
setPiece(m,n,myBox[i]);
myBox.erase(myBox.begin()+i);
return i;
}
}
return -1;
}
//tests the myPart in all 4 rotations at position m, n
bool Puzzle::testRotationPiece(unsigned int m, unsigned int n, PuzzlePiece& myPart)
{
for(int rotation=0; rotation < 4; rotation++)
{
if(PlaceOfPartGood(m,n, myPart))
return 1;
myPart.shift(1);
}
#ifdef debug
cout << "bad part: ";
myPart.printPiece();
cout << endl;
#endif
return 0;
}
//insterts piece at position in box according to boxidentifier and removes piece from puzzle
//this returns the position after!! the puzzle piece was put back in! not the boxidentifier of the piece. look that up in other function.
unsigned int Puzzle::putBackIntoBox(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox)
{
#ifdef debug
cout << "putting back" << endl;
cout << "Old Box: ";
printBox(myBox);
cout << endl;
#endif
for(int i = 0; i < myBox.size();i++)
{
if(myBox[i].getBoxIdentifier()>getPiece(m,n).getBoxIdentifier())
{
myBox.insert(myBox.begin()+i,getPiece(m,n));
removePiece(m,n);
return i+1;
}
}
//using push back, if the element was the last element in the vector chain
myBox.push_back(getPiece(m,n));
removePiece(m,n);
return myBox.size();
}
//checks if the myPart in its current orientation is legal in position m, n
bool Puzzle::PlaceOfPartGood(unsigned int m,unsigned int n, PuzzlePiece& myPart)
{
PuzzlePiece negativePart(0);
negativePart.setConnections(negativePart.getConnections() | (getPiece(m,n+1).getConnections() & 0b11000000));
negativePart.setConnections(negativePart.getConnections() | (getPiece(m-1,n).getConnections() & 0b00110000));
negativePart.setConnections(negativePart.getConnections() | (getPiece(m,n-1).getConnections() & 0b00001100));
negativePart.setConnections(negativePart.getConnections() | (getPiece(m+1,n).getConnections() & 0b00000011));
negativePart.shift(2);
if (
( ((((negativePart.getConnections() & 0b11000000) ^ (myPart.getConnections() & 0b11000000)) != 0b00000000) && (((myPart.getConnections() & 0b11000000) != 0b00000000) && (negativePart.getConnections() & 0b11000000) != 0b00000000))
|| ((((negativePart.getConnections() & 0b11000000) == 0b11000000) || ((myPart.getConnections() & 0b11000000) == 0b11000000)) && (( myPart.getConnections() & 0b11000000) != 0b00000000) && (negativePart.getConnections() & 0b11000000) != 0b00000000)
|| (((negativePart.getConnections() & 0b11000000) == 0b00000000) && ((myPart.getConnections() & 0b11000000) == 0b00000000)) )
&&
( ((((negativePart.getConnections() & 0b00110000) ^ (myPart.getConnections() & 0b00110000)) != 0b00000000) && (((myPart.getConnections() & 0b00110000) != 0b00000000) && (negativePart.getConnections() & 0b00110000) != 0b00000000))
|| ((((negativePart.getConnections() & 0b00110000) == 0b00110000) || ((myPart.getConnections() & 0b00110000) == 0b00110000)) && (((myPart.getConnections() & 0b00110000) != 0b00000000) && (negativePart.getConnections() & 0b00110000) != 0b00000000))
|| (((negativePart.getConnections() & 0b00110000) == 0b00000000) && ((myPart.getConnections() & 0b00110000) == 0b00000000)) )
&&
( ((((negativePart.getConnections() & 0b00001100) ^ (myPart.getConnections() & 0b00001100)) != 0b00000000) && (((myPart.getConnections() & 0b00001100) != 0b00000000) && (negativePart.getConnections() & 0b00001100) != 0b00000000))
|| ((((negativePart.getConnections() & 0b00001100) == 0b00001100) || ((myPart.getConnections() & 0b00001100) == 0b00001100)) && (((myPart.getConnections() & 0b00001100) != 0b00000000) && (negativePart.getConnections() & 0b00001100) != 0b00000000))
|| (((negativePart.getConnections() & 0b00001100) == 0b00000000) && ((myPart.getConnections() & 0b00001100) == 0b00000000)) )
&&
( ((((negativePart.getConnections() & 0b00000011) ^ (myPart.getConnections() & 0b00000011)) != 0b00000000) && (((myPart.getConnections() & 0b00000011) != 0b00000000) && (negativePart.getConnections() & 0b00000011) != 0b00000000))
|| ((((negativePart.getConnections() & 0b00000011) == 0b00000011) || ((myPart.getConnections() & 0b00000011) == 0b00000011)) && (((myPart.getConnections() & 0b00000011) != 0b00000000) && (negativePart.getConnections() & 0b00000011) != 0b00000000))
|| (((negativePart.getConnections() & 0b00000011) == 0b00000000) && ((myPart.getConnections() & 0b00000011) == 0b00000000)) )
)
{
#ifdef debug
cout << "good Part: ";
myPart.printPiece();
cout << endl;
#endif
return 1;
}
return 0;
}
//TODO!!
//simpler algorithm to the first placeofpartgood
//not yet functional!!!
bool Puzzle::PlaceOfPart2Good(unsigned int m,unsigned int n, PuzzlePiece& myPart)
{
PuzzlePiece negativePart(0);
negativePart.setConnections(negativePart.getConnections() | (getPiece(m,n+1).getConnections() & 0b11000000));
negativePart.setConnections(negativePart.getConnections() | (getPiece(m-1,n).getConnections() & 0b00110000));
negativePart.setConnections(negativePart.getConnections() | (getPiece(m,n-1).getConnections() & 0b00001100));
negativePart.setConnections(negativePart.getConnections() | (getPiece(m+1,n).getConnections() & 0b00000011));
negativePart.shift(2);
//A and D or B and C or not A and not B and not C and not D
if (
( ( (negativePart.getConnections() & 0b10000000) & (myPart.getConnections() & 0b01000000))
|| ( (negativePart.getConnections() & 0b01000000) & (myPart.getConnections() & 0b10000000))
|| ((!(negativePart.getConnections() & 0b10000000) & !(myPart.getConnections() & 0b10000000)) & (!(negativePart.getConnections() & 0b01000000) & !(myPart.getConnections() & 0b01000000)))
)
&&
( ( (negativePart.getConnections() & 0b00100000) & (myPart.getConnections() & 0b00010000))
|| ( (negativePart.getConnections() & 0b00010000) & (myPart.getConnections() & 0b00100000))
|| ((!(negativePart.getConnections() & 0b00100000) & !(myPart.getConnections() & 0b00100000)) & (!(negativePart.getConnections() & 0b00010000) & !(myPart.getConnections() & 0b00010000)))
)
&&
( ( (negativePart.getConnections() & 0b00001000) & (myPart.getConnections() & 0b00000100))
|| ( (negativePart.getConnections() & 0b00000100) & (myPart.getConnections() & 0b00001000))
|| ((!(negativePart.getConnections() & 0b00001000) & !(myPart.getConnections() & 0b00001000)) & (!(negativePart.getConnections() & 0b00000100) & !(myPart.getConnections() & 0b00000100)))
)
&&
( ( (negativePart.getConnections() & 0b00000010) & (myPart.getConnections() & 0b00000001))
|| ( (negativePart.getConnections() & 0b00000001) & (myPart.getConnections() & 0b00000010))
|| ((!(negativePart.getConnections() & 0b00000010) & !(myPart.getConnections() & 0b00000010)) & (!(negativePart.getConnections() & 0b00000001) & !(myPart.getConnections() & 0b00000001)))
)
)
return 1;
cout << "nogood" << endl;
return 0;
}
//prints the true puzzle (without 0 edges)
void Puzzle::printPuzzle()
{
cout << "current Puzzle: " << endl;
for(int i=1;i<row+1;i++)
{
for(int j=1;j<col+1;j++)
{
Matrix[i][j].printPiece();
cout << " ";
}
cout << endl;
}
cout << endl;
}
//creates a legal puzzle out of random pieces
void randomBox::createRandomPuzzle()
{
PuzzlePiece temporaryRandomPiece(0);
for(int i=0;i<getRows();i++)
{
for(int j = 0; j < getCols();)
{
//create random piece, set edges according to position and check if piece is good
temporaryRandomPiece.randomCenterPiece();
if(i==0)
temporaryRandomPiece.setConnections(0b00111111 & temporaryRandomPiece.getConnections());
if(i==getRows()-1)
temporaryRandomPiece.setConnections(0b11110011 & temporaryRandomPiece.getConnections());
if(j==0)
temporaryRandomPiece.setConnections(0b11111100 & temporaryRandomPiece.getConnections());
if(j==getCols()-1)
temporaryRandomPiece.setConnections(0b11001111 & temporaryRandomPiece.getConnections());
if(PlaceOfPartGood(j,i,temporaryRandomPiece))
{
temporaryRandomPiece.assignIdentifier();
setPiece(j,i,temporaryRandomPiece);
j++;
Box.push_back(temporaryRandomPiece);
}
}
}
}
//prints a box contents on console
void randomBox::printBox()
{
shuffle();
for (vector<PuzzlePiece>::iterator i = Box.begin(); i != Box.end(); i++)
{
(*i).printPiece();
cout << ' ';
}
cout << endl;
}
//shuffles around a box, randomizing pieces and orientation
vector<PuzzlePiece> randomBox::shuffle()
{
random_shuffle(Box.begin(),Box.end());
for (vector<PuzzlePiece>::iterator i = Box.begin(); i != Box.end(); i++)
(*i).shift(rand()%4);
numerateBox(Box);
return Box;
}
//creates a random box size m, n, shuffles it, and then retuns it
vector<PuzzlePiece> createBox(uint m, uint n)
{
randomBox myFirstPuzzleBox(m,n);
myFirstPuzzleBox.createRandomPuzzle();
return myFirstPuzzleBox.shuffle();
}
//prints contents of box
void printBox(vector<PuzzlePiece> myBox)
{
cout << "current Box: " << endl;
for (vector<PuzzlePiece>::iterator i = myBox.begin(); i != myBox.end(); i++)
{
(*i).printPiece();
cout << ' ';
}
cout << endl;
return;
}
//gives every element in box a box identifier.
void numerateBox(vector<PuzzlePiece>& myBox)
{
for(int i = 0; i< myBox.size();i++)
myBox[i].setBoxIdentifier(i);
return;
}

View File

@ -1,406 +1,406 @@
void create4040hardBox(vector<PuzzlePiece>& myFirstBox)
{
myFirstBox[0].setConnections(0b01101001);
myFirstBox[1].setConnections(0b10011001);
myFirstBox[2].setConnections(0b01100110);
myFirstBox[3].setConnections(0b01101001);
myFirstBox[4].setConnections(0b10100101);
myFirstBox[5].setConnections(0b10010010);
myFirstBox[6].setConnections(0b01101001);
myFirstBox[7].setConnections(0b00101010);
myFirstBox[8].setConnections(0b01000110);
myFirstBox[9].setConnections(0b01011010);
myFirstBox[10].setConnections(0b01011010);
myFirstBox[11].setConnections(0b10010101);
myFirstBox[12].setConnections(0b01010101);
myFirstBox[13].setConnections(0b10101001);
myFirstBox[14].setConnections(0b10010101);
myFirstBox[15].setConnections(0b10101010);
myFirstBox[16].setConnections(0b01101010);
myFirstBox[17].setConnections(0b01101010);
myFirstBox[18].setConnections(0b00100101);
myFirstBox[19].setConnections(0b01100101);
myFirstBox[20].setConnections(0b10010001);
myFirstBox[21].setConnections(0b10010101);
myFirstBox[22].setConnections(0b10101001);
myFirstBox[23].setConnections(0b01010110);
myFirstBox[24].setConnections(0b10101010);
myFirstBox[25].setConnections(0b01101000);
myFirstBox[26].setConnections(0b01101010);
myFirstBox[27].setConnections(0b10010101);
myFirstBox[28].setConnections(0b10011010);
myFirstBox[29].setConnections(0b10011001);
myFirstBox[30].setConnections(0b01101010);
myFirstBox[31].setConnections(0b01100001);
myFirstBox[32].setConnections(0b01101010);
myFirstBox[33].setConnections(0b01100101);
myFirstBox[34].setConnections(0b01010101);
myFirstBox[35].setConnections(0b01010110);
myFirstBox[36].setConnections(0b01101010);
myFirstBox[37].setConnections(0b01010110);
myFirstBox[38].setConnections(0b01100110);
myFirstBox[39].setConnections(0b01011010);
myFirstBox[40].setConnections(0b01100101);
myFirstBox[41].setConnections(0b01101001);
myFirstBox[42].setConnections(0b01010110);
myFirstBox[43].setConnections(0b01000110);
myFirstBox[44].setConnections(0b01011001);
myFirstBox[45].setConnections(0b01101001);
myFirstBox[46].setConnections(0b10000101);
myFirstBox[47].setConnections(0b10011010);
myFirstBox[48].setConnections(0b10010110);
myFirstBox[49].setConnections(0b01011010);
myFirstBox[50].setConnections(0b10011001);
myFirstBox[51].setConnections(0b01001001);
myFirstBox[52].setConnections(0b10100110);
myFirstBox[53].setConnections(0b01001010);
myFirstBox[54].setConnections(0b10010010);
myFirstBox[55].setConnections(0b01001010);
myFirstBox[56].setConnections(0b01101001);
myFirstBox[57].setConnections(0b10100110);
myFirstBox[58].setConnections(0b10010110);
myFirstBox[59].setConnections(0b10010110);
myFirstBox[60].setConnections(0b10101001);
myFirstBox[61].setConnections(0b00100101);
myFirstBox[62].setConnections(0b00101001);
myFirstBox[63].setConnections(0b01101001);
myFirstBox[64].setConnections(0b01101001);
myFirstBox[65].setConnections(0b00100101);
myFirstBox[66].setConnections(0b10010110);
myFirstBox[67].setConnections(0b10011010);
myFirstBox[68].setConnections(0b01100110);
myFirstBox[69].setConnections(0b10010110);
myFirstBox[70].setConnections(0b01010100);
myFirstBox[71].setConnections(0b01011010);
myFirstBox[72].setConnections(0b01100110);
myFirstBox[73].setConnections(0b01100101);
myFirstBox[74].setConnections(0b10011010);
myFirstBox[75].setConnections(0b10010101);
myFirstBox[76].setConnections(0b10011010);
myFirstBox[77].setConnections(0b01100101);
myFirstBox[78].setConnections(0b10011010);
myFirstBox[79].setConnections(0b01010110);
myFirstBox[80].setConnections(0b01101010);
myFirstBox[81].setConnections(0b01010101);
myFirstBox[82].setConnections(0b01100101);
myFirstBox[83].setConnections(0b10100101);
myFirstBox[84].setConnections(0b01010110);
myFirstBox[85].setConnections(0b01101010);
myFirstBox[86].setConnections(0b10011010);
myFirstBox[87].setConnections(0b10010110);
myFirstBox[88].setConnections(0b01101010);
myFirstBox[89].setConnections(0b01011010);
myFirstBox[90].setConnections(0b01010110);
myFirstBox[91].setConnections(0b01100101);
myFirstBox[92].setConnections(0b00100101);
myFirstBox[93].setConnections(0b10100101);
myFirstBox[94].setConnections(0b10010110);
myFirstBox[95].setConnections(0b01100110);
myFirstBox[96].setConnections(0b10000110);
myFirstBox[97].setConnections(0b01001001);
myFirstBox[98].setConnections(0b10010110);
myFirstBox[99].setConnections(0b10100110);
myFirstBox[100].setConnections(0b10100110);
myFirstBox[101].setConnections(0b01100010);
myFirstBox[102].setConnections(0b01101010);
myFirstBox[103].setConnections(0b10011001);
myFirstBox[104].setConnections(0b01010101);
myFirstBox[105].setConnections(0b10011010);
myFirstBox[106].setConnections(0b10101001);
myFirstBox[107].setConnections(0b01100110);
myFirstBox[108].setConnections(0b10101001);
myFirstBox[109].setConnections(0b10101001);
myFirstBox[110].setConnections(0b10010100);
myFirstBox[111].setConnections(0b01100110);
myFirstBox[112].setConnections(0b01010110);
myFirstBox[113].setConnections(0b10010101);
myFirstBox[114].setConnections(0b01011001);
myFirstBox[115].setConnections(0b01101010);
myFirstBox[116].setConnections(0b10100110);
myFirstBox[117].setConnections(0b10100101);
myFirstBox[118].setConnections(0b10101010);
myFirstBox[119].setConnections(0b01011010);
myFirstBox[120].setConnections(0b10011000);
myFirstBox[121].setConnections(0b10010101);
myFirstBox[122].setConnections(0b10100101);
myFirstBox[123].setConnections(0b10000110);
myFirstBox[124].setConnections(0b01100101);
myFirstBox[125].setConnections(0b10100110);
myFirstBox[126].setConnections(0b10101010);
myFirstBox[127].setConnections(0b01101001);
myFirstBox[128].setConnections(0b01010101);
myFirstBox[129].setConnections(0b01100101);
myFirstBox[130].setConnections(0b10001001);
myFirstBox[131].setConnections(0b01101010);
myFirstBox[132].setConnections(0b01101010);
myFirstBox[133].setConnections(0b01100010);
myFirstBox[134].setConnections(0b01100110);
myFirstBox[135].setConnections(0b10100001);
myFirstBox[136].setConnections(0b10011001);
myFirstBox[137].setConnections(0b01101010);
myFirstBox[138].setConnections(0b01011001);
myFirstBox[139].setConnections(0b10001001);
myFirstBox[140].setConnections(0b01010101);
myFirstBox[141].setConnections(0b10100101);
myFirstBox[142].setConnections(0b01100101);
myFirstBox[143].setConnections(0b10100101);
myFirstBox[144].setConnections(0b10011010);
myFirstBox[145].setConnections(0b10010001);
myFirstBox[146].setConnections(0b10100110);
myFirstBox[147].setConnections(0b01101010);
myFirstBox[148].setConnections(0b10010101);
myFirstBox[149].setConnections(0b01100101);
myFirstBox[150].setConnections(0b10100101);
myFirstBox[151].setConnections(0b10100110);
myFirstBox[152].setConnections(0b10010001);
myFirstBox[153].setConnections(0b10101000);
myFirstBox[154].setConnections(0b10011010);
myFirstBox[155].setConnections(0b10100110);
myFirstBox[156].setConnections(0b01100110);
myFirstBox[157].setConnections(0b10100110);
myFirstBox[158].setConnections(0b01011010);
myFirstBox[159].setConnections(0b10100001);
myFirstBox[160].setConnections(0b01010101);
myFirstBox[161].setConnections(0b10011010);
myFirstBox[162].setConnections(0b10101001);
myFirstBox[163].setConnections(0b01010110);
myFirstBox[164].setConnections(0b01100001);
myFirstBox[165].setConnections(0b01011001);
myFirstBox[166].setConnections(0b01101001);
myFirstBox[167].setConnections(0b10011001);
myFirstBox[168].setConnections(0b10010101);
myFirstBox[169].setConnections(0b01100010);
myFirstBox[170].setConnections(0b01010110);
myFirstBox[171].setConnections(0b00010101);
myFirstBox[172].setConnections(0b10100101);
myFirstBox[173].setConnections(0b10101010);
myFirstBox[174].setConnections(0b10011010);
myFirstBox[175].setConnections(0b01100101);
myFirstBox[176].setConnections(0b10100110);
myFirstBox[177].setConnections(0b10101001);
myFirstBox[178].setConnections(0b01011010);
myFirstBox[179].setConnections(0b01101001);
myFirstBox[180].setConnections(0b10010101);
myFirstBox[181].setConnections(0b01101010);
myFirstBox[182].setConnections(0b10010110);
myFirstBox[183].setConnections(0b10010110);
myFirstBox[184].setConnections(0b10011001);
myFirstBox[185].setConnections(0b10100101);
myFirstBox[186].setConnections(0b10010110);
myFirstBox[187].setConnections(0b10010110);
myFirstBox[188].setConnections(0b10011010);
myFirstBox[189].setConnections(0b10010101);
myFirstBox[190].setConnections(0b01010001);
myFirstBox[191].setConnections(0b01010100);
myFirstBox[192].setConnections(0b10101000);
myFirstBox[193].setConnections(0b10100110);
myFirstBox[194].setConnections(0b01010001);
myFirstBox[195].setConnections(0b01010101);
myFirstBox[196].setConnections(0b01100110);
myFirstBox[197].setConnections(0b10100101);
myFirstBox[198].setConnections(0b00100101);
myFirstBox[199].setConnections(0b00100101);
myFirstBox[200].setConnections(0b10101001);
myFirstBox[201].setConnections(0b10101001);
myFirstBox[202].setConnections(0b01011001);
myFirstBox[203].setConnections(0b00001010);
myFirstBox[204].setConnections(0b01010101);
myFirstBox[205].setConnections(0b10011010);
myFirstBox[206].setConnections(0b10100110);
myFirstBox[207].setConnections(0b10100101);
myFirstBox[208].setConnections(0b10011001);
myFirstBox[209].setConnections(0b10100110);
myFirstBox[210].setConnections(0b10101010);
myFirstBox[211].setConnections(0b01010110);
myFirstBox[212].setConnections(0b01010101);
myFirstBox[213].setConnections(0b01100010);
myFirstBox[214].setConnections(0b10010110);
myFirstBox[215].setConnections(0b10011010);
myFirstBox[216].setConnections(0b01100100);
myFirstBox[217].setConnections(0b01010101);
myFirstBox[218].setConnections(0b10011010);
myFirstBox[219].setConnections(0b01100101);
myFirstBox[220].setConnections(0b10101001);
myFirstBox[221].setConnections(0b10010101);
myFirstBox[222].setConnections(0b10100101);
myFirstBox[223].setConnections(0b10101001);
myFirstBox[224].setConnections(0b10100110);
myFirstBox[225].setConnections(0b10011001);
myFirstBox[226].setConnections(0b01011010);
myFirstBox[227].setConnections(0b01000101);
myFirstBox[228].setConnections(0b01100110);
myFirstBox[229].setConnections(0b10101010);
myFirstBox[230].setConnections(0b01010100);
myFirstBox[231].setConnections(0b10101010);
myFirstBox[232].setConnections(0b10011010);
myFirstBox[233].setConnections(0b10100110);
myFirstBox[234].setConnections(0b10011000);
myFirstBox[235].setConnections(0b10011001);
myFirstBox[236].setConnections(0b01010101);
myFirstBox[237].setConnections(0b01001010);
myFirstBox[238].setConnections(0b01100001);
myFirstBox[239].setConnections(0b10011010);
myFirstBox[240].setConnections(0b10010101);
myFirstBox[241].setConnections(0b10100110);
myFirstBox[242].setConnections(0b01010101);
myFirstBox[243].setConnections(0b10010101);
myFirstBox[244].setConnections(0b01101010);
myFirstBox[245].setConnections(0b01101010);
myFirstBox[246].setConnections(0b10100100);
myFirstBox[247].setConnections(0b00101010);
myFirstBox[248].setConnections(0b01100110);
myFirstBox[249].setConnections(0b01101000);
myFirstBox[250].setConnections(0b01101001);
myFirstBox[251].setConnections(0b10101001);
myFirstBox[252].setConnections(0b01010110);
myFirstBox[253].setConnections(0b10010110);
myFirstBox[254].setConnections(0b01100101);
myFirstBox[255].setConnections(0b01011001);
myFirstBox[256].setConnections(0b01100110);
myFirstBox[257].setConnections(0b00100101);
myFirstBox[258].setConnections(0b01101001);
myFirstBox[259].setConnections(0b10010110);
myFirstBox[260].setConnections(0b10011001);
myFirstBox[261].setConnections(0b10011001);
myFirstBox[262].setConnections(0b01101001);
myFirstBox[263].setConnections(0b01010010);
myFirstBox[264].setConnections(0b10101010);
myFirstBox[265].setConnections(0b01101001);
myFirstBox[266].setConnections(0b01101001);
myFirstBox[267].setConnections(0b01101001);
myFirstBox[268].setConnections(0b10010110);
myFirstBox[269].setConnections(0b10011001);
myFirstBox[270].setConnections(0b01101010);
myFirstBox[271].setConnections(0b10000110);
myFirstBox[272].setConnections(0b10010101);
myFirstBox[273].setConnections(0b00010101);
myFirstBox[274].setConnections(0b10101010);
myFirstBox[275].setConnections(0b01010110);
myFirstBox[276].setConnections(0b01100100);
myFirstBox[277].setConnections(0b01010101);
myFirstBox[278].setConnections(0b10010101);
myFirstBox[279].setConnections(0b01010101);
myFirstBox[280].setConnections(0b01011010);
myFirstBox[281].setConnections(0b10011010);
myFirstBox[282].setConnections(0b00010101);
myFirstBox[283].setConnections(0b10010110);
myFirstBox[284].setConnections(0b10100101);
myFirstBox[285].setConnections(0b10010101);
myFirstBox[286].setConnections(0b01101001);
myFirstBox[287].setConnections(0b10100101);
myFirstBox[288].setConnections(0b01101001);
myFirstBox[289].setConnections(0b10011001);
myFirstBox[290].setConnections(0b01011001);
myFirstBox[291].setConnections(0b10010110);
myFirstBox[292].setConnections(0b01010101);
myFirstBox[293].setConnections(0b10100110);
myFirstBox[294].setConnections(0b10101001);
myFirstBox[295].setConnections(0b10101001);
myFirstBox[296].setConnections(0b01011010);
myFirstBox[297].setConnections(0b10100101);
myFirstBox[298].setConnections(0b01011010);
myFirstBox[299].setConnections(0b01100110);
myFirstBox[300].setConnections(0b10010101);
myFirstBox[301].setConnections(0b10101001);
myFirstBox[302].setConnections(0b10011001);
myFirstBox[303].setConnections(0b01010101);
myFirstBox[304].setConnections(0b01010101);
myFirstBox[305].setConnections(0b10101001);
myFirstBox[306].setConnections(0b01100101);
myFirstBox[307].setConnections(0b01101000);
myFirstBox[308].setConnections(0b01010101);
myFirstBox[309].setConnections(0b10010110);
myFirstBox[310].setConnections(0b10010110);
myFirstBox[311].setConnections(0b01011010);
myFirstBox[312].setConnections(0b10010110);
myFirstBox[313].setConnections(0b01011001);
myFirstBox[314].setConnections(0b01010110);
myFirstBox[315].setConnections(0b01101001);
myFirstBox[316].setConnections(0b10100101);
myFirstBox[317].setConnections(0b10101010);
myFirstBox[318].setConnections(0b10011001);
myFirstBox[319].setConnections(0b01010110);
myFirstBox[320].setConnections(0b10100000);
myFirstBox[321].setConnections(0b10100101);
myFirstBox[322].setConnections(0b00010101);
myFirstBox[323].setConnections(0b01010110);
myFirstBox[324].setConnections(0b01101010);
myFirstBox[325].setConnections(0b10010110);
myFirstBox[326].setConnections(0b00001001);
myFirstBox[327].setConnections(0b10011010);
myFirstBox[328].setConnections(0b10101010);
myFirstBox[329].setConnections(0b01100101);
myFirstBox[330].setConnections(0b01011010);
myFirstBox[331].setConnections(0b01101010);
myFirstBox[332].setConnections(0b10100101);
myFirstBox[333].setConnections(0b10100101);
myFirstBox[334].setConnections(0b01011000);
myFirstBox[335].setConnections(0b01010110);
myFirstBox[336].setConnections(0b00100110);
myFirstBox[337].setConnections(0b01101010);
myFirstBox[338].setConnections(0b01101010);
myFirstBox[339].setConnections(0b10010110);
myFirstBox[340].setConnections(0b10101010);
myFirstBox[341].setConnections(0b01100110);
myFirstBox[342].setConnections(0b10011000);
myFirstBox[343].setConnections(0b10101010);
myFirstBox[344].setConnections(0b01011001);
myFirstBox[345].setConnections(0b01101001);
myFirstBox[346].setConnections(0b10010101);
myFirstBox[347].setConnections(0b10101010);
myFirstBox[348].setConnections(0b10011001);
myFirstBox[349].setConnections(0b01101001);
myFirstBox[350].setConnections(0b01010110);
myFirstBox[351].setConnections(0b10000110);
myFirstBox[352].setConnections(0b10010110);
myFirstBox[353].setConnections(0b10011010);
myFirstBox[354].setConnections(0b01010110);
myFirstBox[355].setConnections(0b10010010);
myFirstBox[356].setConnections(0b10100110);
myFirstBox[357].setConnections(0b10101001);
myFirstBox[358].setConnections(0b01011001);
myFirstBox[359].setConnections(0b01010000);
myFirstBox[360].setConnections(0b10011001);
myFirstBox[361].setConnections(0b01101001);
myFirstBox[362].setConnections(0b01100001);
myFirstBox[363].setConnections(0b10100110);
myFirstBox[364].setConnections(0b10100101);
myFirstBox[365].setConnections(0b01100101);
myFirstBox[366].setConnections(0b01001010);
myFirstBox[367].setConnections(0b10010110);
myFirstBox[368].setConnections(0b10010101);
myFirstBox[369].setConnections(0b10010100);
myFirstBox[370].setConnections(0b01010101);
myFirstBox[371].setConnections(0b01011000);
myFirstBox[372].setConnections(0b01100010);
myFirstBox[373].setConnections(0b10011001);
myFirstBox[374].setConnections(0b01100110);
myFirstBox[375].setConnections(0b10100101);
myFirstBox[376].setConnections(0b01000110);
myFirstBox[377].setConnections(0b01010101);
myFirstBox[378].setConnections(0b01100110);
myFirstBox[379].setConnections(0b10100110);
myFirstBox[380].setConnections(0b00100110);
myFirstBox[381].setConnections(0b01101001);
myFirstBox[382].setConnections(0b01100101);
myFirstBox[383].setConnections(0b10010101);
myFirstBox[384].setConnections(0b01101001);
myFirstBox[385].setConnections(0b10010110);
myFirstBox[386].setConnections(0b10010101);
myFirstBox[387].setConnections(0b10101001);
myFirstBox[388].setConnections(0b10011001);
myFirstBox[389].setConnections(0b01010110);
myFirstBox[390].setConnections(0b10100010);
myFirstBox[391].setConnections(0b10101001);
myFirstBox[392].setConnections(0b01101010);
myFirstBox[393].setConnections(0b10101010);
myFirstBox[394].setConnections(0b01100110);
myFirstBox[395].setConnections(0b01010101);
myFirstBox[396].setConnections(0b01101001);
myFirstBox[397].setConnections(0b10010101);
myFirstBox[398].setConnections(0b10100110);
myFirstBox[399].setConnections(0b01101010);
return;
void create4040hardBox(vector<PuzzlePiece>& myFirstBox)
{
myFirstBox[0].setConnections(0b01101001);
myFirstBox[1].setConnections(0b10011001);
myFirstBox[2].setConnections(0b01100110);
myFirstBox[3].setConnections(0b01101001);
myFirstBox[4].setConnections(0b10100101);
myFirstBox[5].setConnections(0b10010010);
myFirstBox[6].setConnections(0b01101001);
myFirstBox[7].setConnections(0b00101010);
myFirstBox[8].setConnections(0b01000110);
myFirstBox[9].setConnections(0b01011010);
myFirstBox[10].setConnections(0b01011010);
myFirstBox[11].setConnections(0b10010101);
myFirstBox[12].setConnections(0b01010101);
myFirstBox[13].setConnections(0b10101001);
myFirstBox[14].setConnections(0b10010101);
myFirstBox[15].setConnections(0b10101010);
myFirstBox[16].setConnections(0b01101010);
myFirstBox[17].setConnections(0b01101010);
myFirstBox[18].setConnections(0b00100101);
myFirstBox[19].setConnections(0b01100101);
myFirstBox[20].setConnections(0b10010001);
myFirstBox[21].setConnections(0b10010101);
myFirstBox[22].setConnections(0b10101001);
myFirstBox[23].setConnections(0b01010110);
myFirstBox[24].setConnections(0b10101010);
myFirstBox[25].setConnections(0b01101000);
myFirstBox[26].setConnections(0b01101010);
myFirstBox[27].setConnections(0b10010101);
myFirstBox[28].setConnections(0b10011010);
myFirstBox[29].setConnections(0b10011001);
myFirstBox[30].setConnections(0b01101010);
myFirstBox[31].setConnections(0b01100001);
myFirstBox[32].setConnections(0b01101010);
myFirstBox[33].setConnections(0b01100101);
myFirstBox[34].setConnections(0b01010101);
myFirstBox[35].setConnections(0b01010110);
myFirstBox[36].setConnections(0b01101010);
myFirstBox[37].setConnections(0b01010110);
myFirstBox[38].setConnections(0b01100110);
myFirstBox[39].setConnections(0b01011010);
myFirstBox[40].setConnections(0b01100101);
myFirstBox[41].setConnections(0b01101001);
myFirstBox[42].setConnections(0b01010110);
myFirstBox[43].setConnections(0b01000110);
myFirstBox[44].setConnections(0b01011001);
myFirstBox[45].setConnections(0b01101001);
myFirstBox[46].setConnections(0b10000101);
myFirstBox[47].setConnections(0b10011010);
myFirstBox[48].setConnections(0b10010110);
myFirstBox[49].setConnections(0b01011010);
myFirstBox[50].setConnections(0b10011001);
myFirstBox[51].setConnections(0b01001001);
myFirstBox[52].setConnections(0b10100110);
myFirstBox[53].setConnections(0b01001010);
myFirstBox[54].setConnections(0b10010010);
myFirstBox[55].setConnections(0b01001010);
myFirstBox[56].setConnections(0b01101001);
myFirstBox[57].setConnections(0b10100110);
myFirstBox[58].setConnections(0b10010110);
myFirstBox[59].setConnections(0b10010110);
myFirstBox[60].setConnections(0b10101001);
myFirstBox[61].setConnections(0b00100101);
myFirstBox[62].setConnections(0b00101001);
myFirstBox[63].setConnections(0b01101001);
myFirstBox[64].setConnections(0b01101001);
myFirstBox[65].setConnections(0b00100101);
myFirstBox[66].setConnections(0b10010110);
myFirstBox[67].setConnections(0b10011010);
myFirstBox[68].setConnections(0b01100110);
myFirstBox[69].setConnections(0b10010110);
myFirstBox[70].setConnections(0b01010100);
myFirstBox[71].setConnections(0b01011010);
myFirstBox[72].setConnections(0b01100110);
myFirstBox[73].setConnections(0b01100101);
myFirstBox[74].setConnections(0b10011010);
myFirstBox[75].setConnections(0b10010101);
myFirstBox[76].setConnections(0b10011010);
myFirstBox[77].setConnections(0b01100101);
myFirstBox[78].setConnections(0b10011010);
myFirstBox[79].setConnections(0b01010110);
myFirstBox[80].setConnections(0b01101010);
myFirstBox[81].setConnections(0b01010101);
myFirstBox[82].setConnections(0b01100101);
myFirstBox[83].setConnections(0b10100101);
myFirstBox[84].setConnections(0b01010110);
myFirstBox[85].setConnections(0b01101010);
myFirstBox[86].setConnections(0b10011010);
myFirstBox[87].setConnections(0b10010110);
myFirstBox[88].setConnections(0b01101010);
myFirstBox[89].setConnections(0b01011010);
myFirstBox[90].setConnections(0b01010110);
myFirstBox[91].setConnections(0b01100101);
myFirstBox[92].setConnections(0b00100101);
myFirstBox[93].setConnections(0b10100101);
myFirstBox[94].setConnections(0b10010110);
myFirstBox[95].setConnections(0b01100110);
myFirstBox[96].setConnections(0b10000110);
myFirstBox[97].setConnections(0b01001001);
myFirstBox[98].setConnections(0b10010110);
myFirstBox[99].setConnections(0b10100110);
myFirstBox[100].setConnections(0b10100110);
myFirstBox[101].setConnections(0b01100010);
myFirstBox[102].setConnections(0b01101010);
myFirstBox[103].setConnections(0b10011001);
myFirstBox[104].setConnections(0b01010101);
myFirstBox[105].setConnections(0b10011010);
myFirstBox[106].setConnections(0b10101001);
myFirstBox[107].setConnections(0b01100110);
myFirstBox[108].setConnections(0b10101001);
myFirstBox[109].setConnections(0b10101001);
myFirstBox[110].setConnections(0b10010100);
myFirstBox[111].setConnections(0b01100110);
myFirstBox[112].setConnections(0b01010110);
myFirstBox[113].setConnections(0b10010101);
myFirstBox[114].setConnections(0b01011001);
myFirstBox[115].setConnections(0b01101010);
myFirstBox[116].setConnections(0b10100110);
myFirstBox[117].setConnections(0b10100101);
myFirstBox[118].setConnections(0b10101010);
myFirstBox[119].setConnections(0b01011010);
myFirstBox[120].setConnections(0b10011000);
myFirstBox[121].setConnections(0b10010101);
myFirstBox[122].setConnections(0b10100101);
myFirstBox[123].setConnections(0b10000110);
myFirstBox[124].setConnections(0b01100101);
myFirstBox[125].setConnections(0b10100110);
myFirstBox[126].setConnections(0b10101010);
myFirstBox[127].setConnections(0b01101001);
myFirstBox[128].setConnections(0b01010101);
myFirstBox[129].setConnections(0b01100101);
myFirstBox[130].setConnections(0b10001001);
myFirstBox[131].setConnections(0b01101010);
myFirstBox[132].setConnections(0b01101010);
myFirstBox[133].setConnections(0b01100010);
myFirstBox[134].setConnections(0b01100110);
myFirstBox[135].setConnections(0b10100001);
myFirstBox[136].setConnections(0b10011001);
myFirstBox[137].setConnections(0b01101010);
myFirstBox[138].setConnections(0b01011001);
myFirstBox[139].setConnections(0b10001001);
myFirstBox[140].setConnections(0b01010101);
myFirstBox[141].setConnections(0b10100101);
myFirstBox[142].setConnections(0b01100101);
myFirstBox[143].setConnections(0b10100101);
myFirstBox[144].setConnections(0b10011010);
myFirstBox[145].setConnections(0b10010001);
myFirstBox[146].setConnections(0b10100110);
myFirstBox[147].setConnections(0b01101010);
myFirstBox[148].setConnections(0b10010101);
myFirstBox[149].setConnections(0b01100101);
myFirstBox[150].setConnections(0b10100101);
myFirstBox[151].setConnections(0b10100110);
myFirstBox[152].setConnections(0b10010001);
myFirstBox[153].setConnections(0b10101000);
myFirstBox[154].setConnections(0b10011010);
myFirstBox[155].setConnections(0b10100110);
myFirstBox[156].setConnections(0b01100110);
myFirstBox[157].setConnections(0b10100110);
myFirstBox[158].setConnections(0b01011010);
myFirstBox[159].setConnections(0b10100001);
myFirstBox[160].setConnections(0b01010101);
myFirstBox[161].setConnections(0b10011010);
myFirstBox[162].setConnections(0b10101001);
myFirstBox[163].setConnections(0b01010110);
myFirstBox[164].setConnections(0b01100001);
myFirstBox[165].setConnections(0b01011001);
myFirstBox[166].setConnections(0b01101001);
myFirstBox[167].setConnections(0b10011001);
myFirstBox[168].setConnections(0b10010101);
myFirstBox[169].setConnections(0b01100010);
myFirstBox[170].setConnections(0b01010110);
myFirstBox[171].setConnections(0b00010101);
myFirstBox[172].setConnections(0b10100101);
myFirstBox[173].setConnections(0b10101010);
myFirstBox[174].setConnections(0b10011010);
myFirstBox[175].setConnections(0b01100101);
myFirstBox[176].setConnections(0b10100110);
myFirstBox[177].setConnections(0b10101001);
myFirstBox[178].setConnections(0b01011010);
myFirstBox[179].setConnections(0b01101001);
myFirstBox[180].setConnections(0b10010101);
myFirstBox[181].setConnections(0b01101010);
myFirstBox[182].setConnections(0b10010110);
myFirstBox[183].setConnections(0b10010110);
myFirstBox[184].setConnections(0b10011001);
myFirstBox[185].setConnections(0b10100101);
myFirstBox[186].setConnections(0b10010110);
myFirstBox[187].setConnections(0b10010110);
myFirstBox[188].setConnections(0b10011010);
myFirstBox[189].setConnections(0b10010101);
myFirstBox[190].setConnections(0b01010001);
myFirstBox[191].setConnections(0b01010100);
myFirstBox[192].setConnections(0b10101000);
myFirstBox[193].setConnections(0b10100110);
myFirstBox[194].setConnections(0b01010001);
myFirstBox[195].setConnections(0b01010101);
myFirstBox[196].setConnections(0b01100110);
myFirstBox[197].setConnections(0b10100101);
myFirstBox[198].setConnections(0b00100101);
myFirstBox[199].setConnections(0b00100101);
myFirstBox[200].setConnections(0b10101001);
myFirstBox[201].setConnections(0b10101001);
myFirstBox[202].setConnections(0b01011001);
myFirstBox[203].setConnections(0b00001010);
myFirstBox[204].setConnections(0b01010101);
myFirstBox[205].setConnections(0b10011010);
myFirstBox[206].setConnections(0b10100110);
myFirstBox[207].setConnections(0b10100101);
myFirstBox[208].setConnections(0b10011001);
myFirstBox[209].setConnections(0b10100110);
myFirstBox[210].setConnections(0b10101010);
myFirstBox[211].setConnections(0b01010110);
myFirstBox[212].setConnections(0b01010101);
myFirstBox[213].setConnections(0b01100010);
myFirstBox[214].setConnections(0b10010110);
myFirstBox[215].setConnections(0b10011010);
myFirstBox[216].setConnections(0b01100100);
myFirstBox[217].setConnections(0b01010101);
myFirstBox[218].setConnections(0b10011010);
myFirstBox[219].setConnections(0b01100101);
myFirstBox[220].setConnections(0b10101001);
myFirstBox[221].setConnections(0b10010101);
myFirstBox[222].setConnections(0b10100101);
myFirstBox[223].setConnections(0b10101001);
myFirstBox[224].setConnections(0b10100110);
myFirstBox[225].setConnections(0b10011001);
myFirstBox[226].setConnections(0b01011010);
myFirstBox[227].setConnections(0b01000101);
myFirstBox[228].setConnections(0b01100110);
myFirstBox[229].setConnections(0b10101010);
myFirstBox[230].setConnections(0b01010100);
myFirstBox[231].setConnections(0b10101010);
myFirstBox[232].setConnections(0b10011010);
myFirstBox[233].setConnections(0b10100110);
myFirstBox[234].setConnections(0b10011000);
myFirstBox[235].setConnections(0b10011001);
myFirstBox[236].setConnections(0b01010101);
myFirstBox[237].setConnections(0b01001010);
myFirstBox[238].setConnections(0b01100001);
myFirstBox[239].setConnections(0b10011010);
myFirstBox[240].setConnections(0b10010101);
myFirstBox[241].setConnections(0b10100110);
myFirstBox[242].setConnections(0b01010101);
myFirstBox[243].setConnections(0b10010101);
myFirstBox[244].setConnections(0b01101010);
myFirstBox[245].setConnections(0b01101010);
myFirstBox[246].setConnections(0b10100100);
myFirstBox[247].setConnections(0b00101010);
myFirstBox[248].setConnections(0b01100110);
myFirstBox[249].setConnections(0b01101000);
myFirstBox[250].setConnections(0b01101001);
myFirstBox[251].setConnections(0b10101001);
myFirstBox[252].setConnections(0b01010110);
myFirstBox[253].setConnections(0b10010110);
myFirstBox[254].setConnections(0b01100101);
myFirstBox[255].setConnections(0b01011001);
myFirstBox[256].setConnections(0b01100110);
myFirstBox[257].setConnections(0b00100101);
myFirstBox[258].setConnections(0b01101001);
myFirstBox[259].setConnections(0b10010110);
myFirstBox[260].setConnections(0b10011001);
myFirstBox[261].setConnections(0b10011001);
myFirstBox[262].setConnections(0b01101001);
myFirstBox[263].setConnections(0b01010010);
myFirstBox[264].setConnections(0b10101010);
myFirstBox[265].setConnections(0b01101001);
myFirstBox[266].setConnections(0b01101001);
myFirstBox[267].setConnections(0b01101001);
myFirstBox[268].setConnections(0b10010110);
myFirstBox[269].setConnections(0b10011001);
myFirstBox[270].setConnections(0b01101010);
myFirstBox[271].setConnections(0b10000110);
myFirstBox[272].setConnections(0b10010101);
myFirstBox[273].setConnections(0b00010101);
myFirstBox[274].setConnections(0b10101010);
myFirstBox[275].setConnections(0b01010110);
myFirstBox[276].setConnections(0b01100100);
myFirstBox[277].setConnections(0b01010101);
myFirstBox[278].setConnections(0b10010101);
myFirstBox[279].setConnections(0b01010101);
myFirstBox[280].setConnections(0b01011010);
myFirstBox[281].setConnections(0b10011010);
myFirstBox[282].setConnections(0b00010101);
myFirstBox[283].setConnections(0b10010110);
myFirstBox[284].setConnections(0b10100101);
myFirstBox[285].setConnections(0b10010101);
myFirstBox[286].setConnections(0b01101001);
myFirstBox[287].setConnections(0b10100101);
myFirstBox[288].setConnections(0b01101001);
myFirstBox[289].setConnections(0b10011001);
myFirstBox[290].setConnections(0b01011001);
myFirstBox[291].setConnections(0b10010110);
myFirstBox[292].setConnections(0b01010101);
myFirstBox[293].setConnections(0b10100110);
myFirstBox[294].setConnections(0b10101001);
myFirstBox[295].setConnections(0b10101001);
myFirstBox[296].setConnections(0b01011010);
myFirstBox[297].setConnections(0b10100101);
myFirstBox[298].setConnections(0b01011010);
myFirstBox[299].setConnections(0b01100110);
myFirstBox[300].setConnections(0b10010101);
myFirstBox[301].setConnections(0b10101001);
myFirstBox[302].setConnections(0b10011001);
myFirstBox[303].setConnections(0b01010101);
myFirstBox[304].setConnections(0b01010101);
myFirstBox[305].setConnections(0b10101001);
myFirstBox[306].setConnections(0b01100101);
myFirstBox[307].setConnections(0b01101000);
myFirstBox[308].setConnections(0b01010101);
myFirstBox[309].setConnections(0b10010110);
myFirstBox[310].setConnections(0b10010110);
myFirstBox[311].setConnections(0b01011010);
myFirstBox[312].setConnections(0b10010110);
myFirstBox[313].setConnections(0b01011001);
myFirstBox[314].setConnections(0b01010110);
myFirstBox[315].setConnections(0b01101001);
myFirstBox[316].setConnections(0b10100101);
myFirstBox[317].setConnections(0b10101010);
myFirstBox[318].setConnections(0b10011001);
myFirstBox[319].setConnections(0b01010110);
myFirstBox[320].setConnections(0b10100000);
myFirstBox[321].setConnections(0b10100101);
myFirstBox[322].setConnections(0b00010101);
myFirstBox[323].setConnections(0b01010110);
myFirstBox[324].setConnections(0b01101010);
myFirstBox[325].setConnections(0b10010110);
myFirstBox[326].setConnections(0b00001001);
myFirstBox[327].setConnections(0b10011010);
myFirstBox[328].setConnections(0b10101010);
myFirstBox[329].setConnections(0b01100101);
myFirstBox[330].setConnections(0b01011010);
myFirstBox[331].setConnections(0b01101010);
myFirstBox[332].setConnections(0b10100101);
myFirstBox[333].setConnections(0b10100101);
myFirstBox[334].setConnections(0b01011000);
myFirstBox[335].setConnections(0b01010110);
myFirstBox[336].setConnections(0b00100110);
myFirstBox[337].setConnections(0b01101010);
myFirstBox[338].setConnections(0b01101010);
myFirstBox[339].setConnections(0b10010110);
myFirstBox[340].setConnections(0b10101010);
myFirstBox[341].setConnections(0b01100110);
myFirstBox[342].setConnections(0b10011000);
myFirstBox[343].setConnections(0b10101010);
myFirstBox[344].setConnections(0b01011001);
myFirstBox[345].setConnections(0b01101001);
myFirstBox[346].setConnections(0b10010101);
myFirstBox[347].setConnections(0b10101010);
myFirstBox[348].setConnections(0b10011001);
myFirstBox[349].setConnections(0b01101001);
myFirstBox[350].setConnections(0b01010110);
myFirstBox[351].setConnections(0b10000110);
myFirstBox[352].setConnections(0b10010110);
myFirstBox[353].setConnections(0b10011010);
myFirstBox[354].setConnections(0b01010110);
myFirstBox[355].setConnections(0b10010010);
myFirstBox[356].setConnections(0b10100110);
myFirstBox[357].setConnections(0b10101001);
myFirstBox[358].setConnections(0b01011001);
myFirstBox[359].setConnections(0b01010000);
myFirstBox[360].setConnections(0b10011001);
myFirstBox[361].setConnections(0b01101001);
myFirstBox[362].setConnections(0b01100001);
myFirstBox[363].setConnections(0b10100110);
myFirstBox[364].setConnections(0b10100101);
myFirstBox[365].setConnections(0b01100101);
myFirstBox[366].setConnections(0b01001010);
myFirstBox[367].setConnections(0b10010110);
myFirstBox[368].setConnections(0b10010101);
myFirstBox[369].setConnections(0b10010100);
myFirstBox[370].setConnections(0b01010101);
myFirstBox[371].setConnections(0b01011000);
myFirstBox[372].setConnections(0b01100010);
myFirstBox[373].setConnections(0b10011001);
myFirstBox[374].setConnections(0b01100110);
myFirstBox[375].setConnections(0b10100101);
myFirstBox[376].setConnections(0b01000110);
myFirstBox[377].setConnections(0b01010101);
myFirstBox[378].setConnections(0b01100110);
myFirstBox[379].setConnections(0b10100110);
myFirstBox[380].setConnections(0b00100110);
myFirstBox[381].setConnections(0b01101001);
myFirstBox[382].setConnections(0b01100101);
myFirstBox[383].setConnections(0b10010101);
myFirstBox[384].setConnections(0b01101001);
myFirstBox[385].setConnections(0b10010110);
myFirstBox[386].setConnections(0b10010101);
myFirstBox[387].setConnections(0b10101001);
myFirstBox[388].setConnections(0b10011001);
myFirstBox[389].setConnections(0b01010110);
myFirstBox[390].setConnections(0b10100010);
myFirstBox[391].setConnections(0b10101001);
myFirstBox[392].setConnections(0b01101010);
myFirstBox[393].setConnections(0b10101010);
myFirstBox[394].setConnections(0b01100110);
myFirstBox[395].setConnections(0b01010101);
myFirstBox[396].setConnections(0b01101001);
myFirstBox[397].setConnections(0b10010101);
myFirstBox[398].setConnections(0b10100110);
myFirstBox[399].setConnections(0b01101010);
return;
}

View File

@ -1,400 +1,400 @@
myFirstBox[0].setConections(01101001);
myFirstBox[1].setConections(10011001);
myFirstBox[2].setConections(01100110);
myFirstBox[3].setConections(01101001);
myFirstBox[4].setConections(10100101);
myFirstBox[5].setConections(10010010);
myFirstBox[6].setConections(01101001);
myFirstBox[7].setConections(00101010);
myFirstBox[8].setConections(01000110);
myFirstBox[9].setConections(01011010);
myFirstBox[10].setConections(01011010);
myFirstBox[11].setConections(10010101);
myFirstBox[12].setConections(01010101);
myFirstBox[13].setConections(10101001);
myFirstBox[14].setConections(10010101);
myFirstBox[15].setConections(10101010);
myFirstBox[16].setConections(01101010);
myFirstBox[17].setConections(01101010);
myFirstBox[18].setConections(00100101);
myFirstBox[19].setConections(01100101);
myFirstBox[20].setConections(10010001);
myFirstBox[21].setConections(10010101);
myFirstBox[22].setConections(10101001);
myFirstBox[23].setConections(01010110);
myFirstBox[24].setConections(10101010);
myFirstBox[25].setConections(01101000);
myFirstBox[26].setConections(01101010);
myFirstBox[27].setConections(10010101);
myFirstBox[28].setConections(10011010);
myFirstBox[29].setConections(10011001);
myFirstBox[30].setConections(01101010);
myFirstBox[31].setConections(01100001);
myFirstBox[32].setConections(01101010);
myFirstBox[33].setConections(01100101);
myFirstBox[34].setConections(01010101);
myFirstBox[35].setConections(01010110);
myFirstBox[36].setConections(01101010);
myFirstBox[37].setConections(01010110);
myFirstBox[38].setConections(01100110);
myFirstBox[39].setConections(01011010);
myFirstBox[40].setConections(01100101);
myFirstBox[41].setConections(01101001);
myFirstBox[42].setConections(01010110);
myFirstBox[43].setConections(01000110);
myFirstBox[44].setConections(01011001);
myFirstBox[45].setConections(01101001);
myFirstBox[46].setConections(10000101);
myFirstBox[47].setConections(10011010);
myFirstBox[48].setConections(10010110);
myFirstBox[49].setConections(01011010);
myFirstBox[50].setConections(10011001);
myFirstBox[51].setConections(01001001);
myFirstBox[52].setConections(10100110);
myFirstBox[53].setConections(01001010);
myFirstBox[54].setConections(10010010);
myFirstBox[55].setConections(01001010);
myFirstBox[56].setConections(01101001);
myFirstBox[57].setConections(10100110);
myFirstBox[58].setConections(10010110);
myFirstBox[59].setConections(10010110);
myFirstBox[60].setConections(10101001);
myFirstBox[61].setConections(00100101);
myFirstBox[62].setConections(00101001);
myFirstBox[63].setConections(01101001);
myFirstBox[64].setConections(01101001);
myFirstBox[65].setConections(00100101);
myFirstBox[66].setConections(10010110);
myFirstBox[67].setConections(10011010);
myFirstBox[68].setConections(01100110);
myFirstBox[69].setConections(10010110);
myFirstBox[70].setConections(01010100);
myFirstBox[71].setConections(01011010);
myFirstBox[72].setConections(01100110);
myFirstBox[73].setConections(01100101);
myFirstBox[74].setConections(10011010);
myFirstBox[75].setConections(10010101);
myFirstBox[76].setConections(10011010);
myFirstBox[77].setConections(01100101);
myFirstBox[78].setConections(10011010);
myFirstBox[79].setConections(01010110);
myFirstBox[80].setConections(01101010);
myFirstBox[81].setConections(01010101);
myFirstBox[82].setConections(01100101);
myFirstBox[83].setConections(10100101);
myFirstBox[84].setConections(01010110);
myFirstBox[85].setConections(01101010);
myFirstBox[86].setConections(10011010);
myFirstBox[87].setConections(10010110);
myFirstBox[88].setConections(01101010);
myFirstBox[89].setConections(01011010);
myFirstBox[90].setConections(01010110);
myFirstBox[91].setConections(01100101);
myFirstBox[92].setConections(00100101);
myFirstBox[93].setConections(10100101);
myFirstBox[94].setConections(10010110);
myFirstBox[95].setConections(01100110);
myFirstBox[96].setConections(10000110);
myFirstBox[97].setConections(01001001);
myFirstBox[98].setConections(10010110);
myFirstBox[99].setConections(10100110);
myFirstBox[100].setConections(10100110);
myFirstBox[101].setConections(01100010);
myFirstBox[102].setConections(01101010);
myFirstBox[103].setConections(10011001);
myFirstBox[104].setConections(01010101);
myFirstBox[105].setConections(10011010);
myFirstBox[106].setConections(10101001);
myFirstBox[107].setConections(01100110);
myFirstBox[108].setConections(10101001);
myFirstBox[109].setConections(10101001);
myFirstBox[110].setConections(10010100);
myFirstBox[111].setConections(01100110);
myFirstBox[112].setConections(01010110);
myFirstBox[113].setConections(10010101);
myFirstBox[114].setConections(01011001);
myFirstBox[115].setConections(01101010);
myFirstBox[116].setConections(10100110);
myFirstBox[117].setConections(10100101);
myFirstBox[118].setConections(10101010);
myFirstBox[119].setConections(01011010);
myFirstBox[120].setConections(10011000);
myFirstBox[121].setConections(10010101);
myFirstBox[122].setConections(10100101);
myFirstBox[123].setConections(10000110);
myFirstBox[124].setConections(01100101);
myFirstBox[125].setConections(10100110);
myFirstBox[126].setConections(10101010);
myFirstBox[127].setConections(01101001);
myFirstBox[128].setConections(01010101);
myFirstBox[129].setConections(01100101);
myFirstBox[130].setConections(10001001);
myFirstBox[131].setConections(01101010);
myFirstBox[132].setConections(01101010);
myFirstBox[133].setConections(01100010);
myFirstBox[134].setConections(01100110);
myFirstBox[135].setConections(10100001);
myFirstBox[136].setConections(10011001);
myFirstBox[137].setConections(01101010);
myFirstBox[138].setConections(01011001);
myFirstBox[139].setConections(10001001);
myFirstBox[140].setConections(01010101);
myFirstBox[141].setConections(10100101);
myFirstBox[142].setConections(01100101);
myFirstBox[143].setConections(10100101);
myFirstBox[144].setConections(10011010);
myFirstBox[145].setConections(10010001);
myFirstBox[146].setConections(10100110);
myFirstBox[147].setConections(01101010);
myFirstBox[148].setConections(10010101);
myFirstBox[149].setConections(01100101);
myFirstBox[150].setConections(10100101);
myFirstBox[151].setConections(10100110);
myFirstBox[152].setConections(10010001);
myFirstBox[153].setConections(10101000);
myFirstBox[154].setConections(10011010);
myFirstBox[155].setConections(10100110);
myFirstBox[156].setConections(01100110);
myFirstBox[157].setConections(10100110);
myFirstBox[158].setConections(01011010);
myFirstBox[159].setConections(10100001);
myFirstBox[160].setConections(01010101);
myFirstBox[161].setConections(10011010);
myFirstBox[162].setConections(10101001);
myFirstBox[163].setConections(01010110);
myFirstBox[164].setConections(01100001);
myFirstBox[165].setConections(01011001);
myFirstBox[166].setConections(01101001);
myFirstBox[167].setConections(10011001);
myFirstBox[168].setConections(10010101);
myFirstBox[169].setConections(01100010);
myFirstBox[170].setConections(01010110);
myFirstBox[171].setConections(00010101);
myFirstBox[172].setConections(10100101);
myFirstBox[173].setConections(10101010);
myFirstBox[174].setConections(10011010);
myFirstBox[175].setConections(01100101);
myFirstBox[176].setConections(10100110);
myFirstBox[177].setConections(10101001);
myFirstBox[178].setConections(01011010);
myFirstBox[179].setConections(01101001);
myFirstBox[180].setConections(10010101);
myFirstBox[181].setConections(01101010);
myFirstBox[182].setConections(10010110);
myFirstBox[183].setConections(10010110);
myFirstBox[184].setConections(10011001);
myFirstBox[185].setConections(10100101);
myFirstBox[186].setConections(10010110);
myFirstBox[187].setConections(10010110);
myFirstBox[188].setConections(10011010);
myFirstBox[189].setConections(10010101);
myFirstBox[190].setConections(01010001);
myFirstBox[191].setConections(01010100);
myFirstBox[192].setConections(10101000);
myFirstBox[193].setConections(10100110);
myFirstBox[194].setConections(01010001);
myFirstBox[195].setConections(01010101);
myFirstBox[196].setConections(01100110);
myFirstBox[197].setConections(10100101);
myFirstBox[198].setConections(00100101);
myFirstBox[199].setConections(00100101);
myFirstBox[200].setConections(10101001);
myFirstBox[201].setConections(10101001);
myFirstBox[202].setConections(01011001);
myFirstBox[203].setConections(00001010);
myFirstBox[204].setConections(01010101);
myFirstBox[205].setConections(10011010);
myFirstBox[206].setConections(10100110);
myFirstBox[207].setConections(10100101);
myFirstBox[208].setConections(10011001);
myFirstBox[209].setConections(10100110);
myFirstBox[210].setConections(10101010);
myFirstBox[211].setConections(01010110);
myFirstBox[212].setConections(01010101);
myFirstBox[213].setConections(01100010);
myFirstBox[214].setConections(10010110);
myFirstBox[215].setConections(10011010);
myFirstBox[216].setConections(01100100);
myFirstBox[217].setConections(01010101);
myFirstBox[218].setConections(10011010);
myFirstBox[219].setConections(01100101);
myFirstBox[220].setConections(10101001);
myFirstBox[221].setConections(10010101);
myFirstBox[222].setConections(10100101);
myFirstBox[223].setConections(10101001);
myFirstBox[224].setConections(10100110);
myFirstBox[225].setConections(10011001);
myFirstBox[226].setConections(01011010);
myFirstBox[227].setConections(01000101);
myFirstBox[228].setConections(01100110);
myFirstBox[229].setConections(10101010);
myFirstBox[230].setConections(01010100);
myFirstBox[231].setConections(10101010);
myFirstBox[232].setConections(10011010);
myFirstBox[233].setConections(10100110);
myFirstBox[234].setConections(10011000);
myFirstBox[235].setConections(10011001);
myFirstBox[236].setConections(01010101);
myFirstBox[237].setConections(01001010);
myFirstBox[238].setConections(01100001);
myFirstBox[239].setConections(10011010);
myFirstBox[240].setConections(10010101);
myFirstBox[241].setConections(10100110);
myFirstBox[242].setConections(01010101);
myFirstBox[243].setConections(10010101);
myFirstBox[244].setConections(01101010);
myFirstBox[245].setConections(01101010);
myFirstBox[246].setConections(10100100);
myFirstBox[247].setConections(00101010);
myFirstBox[248].setConections(01100110);
myFirstBox[249].setConections(01101000);
myFirstBox[250].setConections(01101001);
myFirstBox[251].setConections(10101001);
myFirstBox[252].setConections(01010110);
myFirstBox[253].setConections(10010110);
myFirstBox[254].setConections(01100101);
myFirstBox[255].setConections(01011001);
myFirstBox[256].setConections(01100110);
myFirstBox[257].setConections(00100101);
myFirstBox[258].setConections(01101001);
myFirstBox[259].setConections(10010110);
myFirstBox[260].setConections(10011001);
myFirstBox[261].setConections(10011001);
myFirstBox[262].setConections(01101001);
myFirstBox[263].setConections(01010010);
myFirstBox[264].setConections(10101010);
myFirstBox[265].setConections(01101001);
myFirstBox[266].setConections(01101001);
myFirstBox[267].setConections(01101001);
myFirstBox[268].setConections(10010110);
myFirstBox[269].setConections(10011001);
myFirstBox[270].setConections(01101010);
myFirstBox[271].setConections(10000110);
myFirstBox[272].setConections(10010101);
myFirstBox[273].setConections(00010101);
myFirstBox[274].setConections(10101010);
myFirstBox[275].setConections(01010110);
myFirstBox[276].setConections(01100100);
myFirstBox[277].setConections(01010101);
myFirstBox[278].setConections(10010101);
myFirstBox[279].setConections(01010101);
myFirstBox[280].setConections(01011010);
myFirstBox[281].setConections(10011010);
myFirstBox[282].setConections(00010101);
myFirstBox[283].setConections(10010110);
myFirstBox[284].setConections(10100101);
myFirstBox[285].setConections(10010101);
myFirstBox[286].setConections(01101001);
myFirstBox[287].setConections(10100101);
myFirstBox[288].setConections(01101001);
myFirstBox[289].setConections(10011001);
myFirstBox[290].setConections(01011001);
myFirstBox[291].setConections(10010110);
myFirstBox[292].setConections(01010101);
myFirstBox[293].setConections(10100110);
myFirstBox[294].setConections(10101001);
myFirstBox[295].setConections(10101001);
myFirstBox[296].setConections(01011010);
myFirstBox[297].setConections(10100101);
myFirstBox[298].setConections(01011010);
myFirstBox[299].setConections(01100110);
myFirstBox[300].setConections(10010101);
myFirstBox[301].setConections(10101001);
myFirstBox[302].setConections(10011001);
myFirstBox[303].setConections(01010101);
myFirstBox[304].setConections(01010101);
myFirstBox[305].setConections(10101001);
myFirstBox[306].setConections(01100101);
myFirstBox[307].setConections(01101000);
myFirstBox[308].setConections(01010101);
myFirstBox[309].setConections(10010110);
myFirstBox[310].setConections(10010110);
myFirstBox[311].setConections(01011010);
myFirstBox[312].setConections(10010110);
myFirstBox[313].setConections(01011001);
myFirstBox[314].setConections(01010110);
myFirstBox[315].setConections(01101001);
myFirstBox[316].setConections(10100101);
myFirstBox[317].setConections(10101010);
myFirstBox[318].setConections(10011001);
myFirstBox[319].setConections(01010110);
myFirstBox[320].setConections(10100000);
myFirstBox[321].setConections(10100101);
myFirstBox[322].setConections(00010101);
myFirstBox[323].setConections(01010110);
myFirstBox[324].setConections(01101010);
myFirstBox[325].setConections(10010110);
myFirstBox[326].setConections(00001001);
myFirstBox[327].setConections(10011010);
myFirstBox[328].setConections(10101010);
myFirstBox[329].setConections(01100101);
myFirstBox[330].setConections(01011010);
myFirstBox[331].setConections(01101010);
myFirstBox[332].setConections(10100101);
myFirstBox[333].setConections(10100101);
myFirstBox[334].setConections(01011000);
myFirstBox[335].setConections(01010110);
myFirstBox[336].setConections(00100110);
myFirstBox[337].setConections(01101010);
myFirstBox[338].setConections(01101010);
myFirstBox[339].setConections(10010110);
myFirstBox[340].setConections(10101010);
myFirstBox[341].setConections(01100110);
myFirstBox[342].setConections(10011000);
myFirstBox[343].setConections(10101010);
myFirstBox[344].setConections(01011001);
myFirstBox[345].setConections(01101001);
myFirstBox[346].setConections(10010101);
myFirstBox[347].setConections(10101010);
myFirstBox[348].setConections(10011001);
myFirstBox[349].setConections(01101001);
myFirstBox[350].setConections(01010110);
myFirstBox[351].setConections(10000110);
myFirstBox[352].setConections(10010110);
myFirstBox[353].setConections(10011010);
myFirstBox[354].setConections(01010110);
myFirstBox[355].setConections(10010010);
myFirstBox[356].setConections(10100110);
myFirstBox[357].setConections(10101001);
myFirstBox[358].setConections(01011001);
myFirstBox[359].setConections(01010000);
myFirstBox[360].setConections(10011001);
myFirstBox[361].setConections(01101001);
myFirstBox[362].setConections(01100001);
myFirstBox[363].setConections(10100110);
myFirstBox[364].setConections(10100101);
myFirstBox[365].setConections(01100101);
myFirstBox[366].setConections(01001010);
myFirstBox[367].setConections(10010110);
myFirstBox[368].setConections(10010101);
myFirstBox[369].setConections(10010100);
myFirstBox[370].setConections(01010101);
myFirstBox[371].setConections(01011000);
myFirstBox[372].setConections(01100010);
myFirstBox[373].setConections(10011001);
myFirstBox[374].setConections(01100110);
myFirstBox[375].setConections(10100101);
myFirstBox[376].setConections(01000110);
myFirstBox[377].setConections(01010101);
myFirstBox[378].setConections(01100110);
myFirstBox[379].setConections(10100110);
myFirstBox[380].setConections(00100110);
myFirstBox[381].setConections(01101001);
myFirstBox[382].setConections(01100101);
myFirstBox[383].setConections(10010101);
myFirstBox[384].setConections(01101001);
myFirstBox[385].setConections(10010110);
myFirstBox[386].setConections(10010101);
myFirstBox[387].setConections(10101001);
myFirstBox[388].setConections(10011001);
myFirstBox[389].setConections(01010110);
myFirstBox[390].setConections(10100010);
myFirstBox[391].setConections(10101001);
myFirstBox[392].setConections(01101010);
myFirstBox[393].setConections(10101010);
myFirstBox[394].setConections(01100110);
myFirstBox[395].setConections(01010101);
myFirstBox[396].setConections(01101001);
myFirstBox[397].setConections(10010101);
myFirstBox[398].setConections(10100110);
myFirstBox[399].setConections(01101010);
myFirstBox[0].setConections(01101001);
myFirstBox[1].setConections(10011001);
myFirstBox[2].setConections(01100110);
myFirstBox[3].setConections(01101001);
myFirstBox[4].setConections(10100101);
myFirstBox[5].setConections(10010010);
myFirstBox[6].setConections(01101001);
myFirstBox[7].setConections(00101010);
myFirstBox[8].setConections(01000110);
myFirstBox[9].setConections(01011010);
myFirstBox[10].setConections(01011010);
myFirstBox[11].setConections(10010101);
myFirstBox[12].setConections(01010101);
myFirstBox[13].setConections(10101001);
myFirstBox[14].setConections(10010101);
myFirstBox[15].setConections(10101010);
myFirstBox[16].setConections(01101010);
myFirstBox[17].setConections(01101010);
myFirstBox[18].setConections(00100101);
myFirstBox[19].setConections(01100101);
myFirstBox[20].setConections(10010001);
myFirstBox[21].setConections(10010101);
myFirstBox[22].setConections(10101001);
myFirstBox[23].setConections(01010110);
myFirstBox[24].setConections(10101010);
myFirstBox[25].setConections(01101000);
myFirstBox[26].setConections(01101010);
myFirstBox[27].setConections(10010101);
myFirstBox[28].setConections(10011010);
myFirstBox[29].setConections(10011001);
myFirstBox[30].setConections(01101010);
myFirstBox[31].setConections(01100001);
myFirstBox[32].setConections(01101010);
myFirstBox[33].setConections(01100101);
myFirstBox[34].setConections(01010101);
myFirstBox[35].setConections(01010110);
myFirstBox[36].setConections(01101010);
myFirstBox[37].setConections(01010110);
myFirstBox[38].setConections(01100110);
myFirstBox[39].setConections(01011010);
myFirstBox[40].setConections(01100101);
myFirstBox[41].setConections(01101001);
myFirstBox[42].setConections(01010110);
myFirstBox[43].setConections(01000110);
myFirstBox[44].setConections(01011001);
myFirstBox[45].setConections(01101001);
myFirstBox[46].setConections(10000101);
myFirstBox[47].setConections(10011010);
myFirstBox[48].setConections(10010110);
myFirstBox[49].setConections(01011010);
myFirstBox[50].setConections(10011001);
myFirstBox[51].setConections(01001001);
myFirstBox[52].setConections(10100110);
myFirstBox[53].setConections(01001010);
myFirstBox[54].setConections(10010010);
myFirstBox[55].setConections(01001010);
myFirstBox[56].setConections(01101001);
myFirstBox[57].setConections(10100110);
myFirstBox[58].setConections(10010110);
myFirstBox[59].setConections(10010110);
myFirstBox[60].setConections(10101001);
myFirstBox[61].setConections(00100101);
myFirstBox[62].setConections(00101001);
myFirstBox[63].setConections(01101001);
myFirstBox[64].setConections(01101001);
myFirstBox[65].setConections(00100101);
myFirstBox[66].setConections(10010110);
myFirstBox[67].setConections(10011010);
myFirstBox[68].setConections(01100110);
myFirstBox[69].setConections(10010110);
myFirstBox[70].setConections(01010100);
myFirstBox[71].setConections(01011010);
myFirstBox[72].setConections(01100110);
myFirstBox[73].setConections(01100101);
myFirstBox[74].setConections(10011010);
myFirstBox[75].setConections(10010101);
myFirstBox[76].setConections(10011010);
myFirstBox[77].setConections(01100101);
myFirstBox[78].setConections(10011010);
myFirstBox[79].setConections(01010110);
myFirstBox[80].setConections(01101010);
myFirstBox[81].setConections(01010101);
myFirstBox[82].setConections(01100101);
myFirstBox[83].setConections(10100101);
myFirstBox[84].setConections(01010110);
myFirstBox[85].setConections(01101010);
myFirstBox[86].setConections(10011010);
myFirstBox[87].setConections(10010110);
myFirstBox[88].setConections(01101010);
myFirstBox[89].setConections(01011010);
myFirstBox[90].setConections(01010110);
myFirstBox[91].setConections(01100101);
myFirstBox[92].setConections(00100101);
myFirstBox[93].setConections(10100101);
myFirstBox[94].setConections(10010110);
myFirstBox[95].setConections(01100110);
myFirstBox[96].setConections(10000110);
myFirstBox[97].setConections(01001001);
myFirstBox[98].setConections(10010110);
myFirstBox[99].setConections(10100110);
myFirstBox[100].setConections(10100110);
myFirstBox[101].setConections(01100010);
myFirstBox[102].setConections(01101010);
myFirstBox[103].setConections(10011001);
myFirstBox[104].setConections(01010101);
myFirstBox[105].setConections(10011010);
myFirstBox[106].setConections(10101001);
myFirstBox[107].setConections(01100110);
myFirstBox[108].setConections(10101001);
myFirstBox[109].setConections(10101001);
myFirstBox[110].setConections(10010100);
myFirstBox[111].setConections(01100110);
myFirstBox[112].setConections(01010110);
myFirstBox[113].setConections(10010101);
myFirstBox[114].setConections(01011001);
myFirstBox[115].setConections(01101010);
myFirstBox[116].setConections(10100110);
myFirstBox[117].setConections(10100101);
myFirstBox[118].setConections(10101010);
myFirstBox[119].setConections(01011010);
myFirstBox[120].setConections(10011000);
myFirstBox[121].setConections(10010101);
myFirstBox[122].setConections(10100101);
myFirstBox[123].setConections(10000110);
myFirstBox[124].setConections(01100101);
myFirstBox[125].setConections(10100110);
myFirstBox[126].setConections(10101010);
myFirstBox[127].setConections(01101001);
myFirstBox[128].setConections(01010101);
myFirstBox[129].setConections(01100101);
myFirstBox[130].setConections(10001001);
myFirstBox[131].setConections(01101010);
myFirstBox[132].setConections(01101010);
myFirstBox[133].setConections(01100010);
myFirstBox[134].setConections(01100110);
myFirstBox[135].setConections(10100001);
myFirstBox[136].setConections(10011001);
myFirstBox[137].setConections(01101010);
myFirstBox[138].setConections(01011001);
myFirstBox[139].setConections(10001001);
myFirstBox[140].setConections(01010101);
myFirstBox[141].setConections(10100101);
myFirstBox[142].setConections(01100101);
myFirstBox[143].setConections(10100101);
myFirstBox[144].setConections(10011010);
myFirstBox[145].setConections(10010001);
myFirstBox[146].setConections(10100110);
myFirstBox[147].setConections(01101010);
myFirstBox[148].setConections(10010101);
myFirstBox[149].setConections(01100101);
myFirstBox[150].setConections(10100101);
myFirstBox[151].setConections(10100110);
myFirstBox[152].setConections(10010001);
myFirstBox[153].setConections(10101000);
myFirstBox[154].setConections(10011010);
myFirstBox[155].setConections(10100110);
myFirstBox[156].setConections(01100110);
myFirstBox[157].setConections(10100110);
myFirstBox[158].setConections(01011010);
myFirstBox[159].setConections(10100001);
myFirstBox[160].setConections(01010101);
myFirstBox[161].setConections(10011010);
myFirstBox[162].setConections(10101001);
myFirstBox[163].setConections(01010110);
myFirstBox[164].setConections(01100001);
myFirstBox[165].setConections(01011001);
myFirstBox[166].setConections(01101001);
myFirstBox[167].setConections(10011001);
myFirstBox[168].setConections(10010101);
myFirstBox[169].setConections(01100010);
myFirstBox[170].setConections(01010110);
myFirstBox[171].setConections(00010101);
myFirstBox[172].setConections(10100101);
myFirstBox[173].setConections(10101010);
myFirstBox[174].setConections(10011010);
myFirstBox[175].setConections(01100101);
myFirstBox[176].setConections(10100110);
myFirstBox[177].setConections(10101001);
myFirstBox[178].setConections(01011010);
myFirstBox[179].setConections(01101001);
myFirstBox[180].setConections(10010101);
myFirstBox[181].setConections(01101010);
myFirstBox[182].setConections(10010110);
myFirstBox[183].setConections(10010110);
myFirstBox[184].setConections(10011001);
myFirstBox[185].setConections(10100101);
myFirstBox[186].setConections(10010110);
myFirstBox[187].setConections(10010110);
myFirstBox[188].setConections(10011010);
myFirstBox[189].setConections(10010101);
myFirstBox[190].setConections(01010001);
myFirstBox[191].setConections(01010100);
myFirstBox[192].setConections(10101000);
myFirstBox[193].setConections(10100110);
myFirstBox[194].setConections(01010001);
myFirstBox[195].setConections(01010101);
myFirstBox[196].setConections(01100110);
myFirstBox[197].setConections(10100101);
myFirstBox[198].setConections(00100101);
myFirstBox[199].setConections(00100101);
myFirstBox[200].setConections(10101001);
myFirstBox[201].setConections(10101001);
myFirstBox[202].setConections(01011001);
myFirstBox[203].setConections(00001010);
myFirstBox[204].setConections(01010101);
myFirstBox[205].setConections(10011010);
myFirstBox[206].setConections(10100110);
myFirstBox[207].setConections(10100101);
myFirstBox[208].setConections(10011001);
myFirstBox[209].setConections(10100110);
myFirstBox[210].setConections(10101010);
myFirstBox[211].setConections(01010110);
myFirstBox[212].setConections(01010101);
myFirstBox[213].setConections(01100010);
myFirstBox[214].setConections(10010110);
myFirstBox[215].setConections(10011010);
myFirstBox[216].setConections(01100100);
myFirstBox[217].setConections(01010101);
myFirstBox[218].setConections(10011010);
myFirstBox[219].setConections(01100101);
myFirstBox[220].setConections(10101001);
myFirstBox[221].setConections(10010101);
myFirstBox[222].setConections(10100101);
myFirstBox[223].setConections(10101001);
myFirstBox[224].setConections(10100110);
myFirstBox[225].setConections(10011001);
myFirstBox[226].setConections(01011010);
myFirstBox[227].setConections(01000101);
myFirstBox[228].setConections(01100110);
myFirstBox[229].setConections(10101010);
myFirstBox[230].setConections(01010100);
myFirstBox[231].setConections(10101010);
myFirstBox[232].setConections(10011010);
myFirstBox[233].setConections(10100110);
myFirstBox[234].setConections(10011000);
myFirstBox[235].setConections(10011001);
myFirstBox[236].setConections(01010101);
myFirstBox[237].setConections(01001010);
myFirstBox[238].setConections(01100001);
myFirstBox[239].setConections(10011010);
myFirstBox[240].setConections(10010101);
myFirstBox[241].setConections(10100110);
myFirstBox[242].setConections(01010101);
myFirstBox[243].setConections(10010101);
myFirstBox[244].setConections(01101010);
myFirstBox[245].setConections(01101010);
myFirstBox[246].setConections(10100100);
myFirstBox[247].setConections(00101010);
myFirstBox[248].setConections(01100110);
myFirstBox[249].setConections(01101000);
myFirstBox[250].setConections(01101001);
myFirstBox[251].setConections(10101001);
myFirstBox[252].setConections(01010110);
myFirstBox[253].setConections(10010110);
myFirstBox[254].setConections(01100101);
myFirstBox[255].setConections(01011001);
myFirstBox[256].setConections(01100110);
myFirstBox[257].setConections(00100101);
myFirstBox[258].setConections(01101001);
myFirstBox[259].setConections(10010110);
myFirstBox[260].setConections(10011001);
myFirstBox[261].setConections(10011001);
myFirstBox[262].setConections(01101001);
myFirstBox[263].setConections(01010010);
myFirstBox[264].setConections(10101010);
myFirstBox[265].setConections(01101001);
myFirstBox[266].setConections(01101001);
myFirstBox[267].setConections(01101001);
myFirstBox[268].setConections(10010110);
myFirstBox[269].setConections(10011001);
myFirstBox[270].setConections(01101010);
myFirstBox[271].setConections(10000110);
myFirstBox[272].setConections(10010101);
myFirstBox[273].setConections(00010101);
myFirstBox[274].setConections(10101010);
myFirstBox[275].setConections(01010110);
myFirstBox[276].setConections(01100100);
myFirstBox[277].setConections(01010101);
myFirstBox[278].setConections(10010101);
myFirstBox[279].setConections(01010101);
myFirstBox[280].setConections(01011010);
myFirstBox[281].setConections(10011010);
myFirstBox[282].setConections(00010101);
myFirstBox[283].setConections(10010110);
myFirstBox[284].setConections(10100101);
myFirstBox[285].setConections(10010101);
myFirstBox[286].setConections(01101001);
myFirstBox[287].setConections(10100101);
myFirstBox[288].setConections(01101001);
myFirstBox[289].setConections(10011001);
myFirstBox[290].setConections(01011001);
myFirstBox[291].setConections(10010110);
myFirstBox[292].setConections(01010101);
myFirstBox[293].setConections(10100110);
myFirstBox[294].setConections(10101001);
myFirstBox[295].setConections(10101001);
myFirstBox[296].setConections(01011010);
myFirstBox[297].setConections(10100101);
myFirstBox[298].setConections(01011010);
myFirstBox[299].setConections(01100110);
myFirstBox[300].setConections(10010101);
myFirstBox[301].setConections(10101001);
myFirstBox[302].setConections(10011001);
myFirstBox[303].setConections(01010101);
myFirstBox[304].setConections(01010101);
myFirstBox[305].setConections(10101001);
myFirstBox[306].setConections(01100101);
myFirstBox[307].setConections(01101000);
myFirstBox[308].setConections(01010101);
myFirstBox[309].setConections(10010110);
myFirstBox[310].setConections(10010110);
myFirstBox[311].setConections(01011010);
myFirstBox[312].setConections(10010110);
myFirstBox[313].setConections(01011001);
myFirstBox[314].setConections(01010110);
myFirstBox[315].setConections(01101001);
myFirstBox[316].setConections(10100101);
myFirstBox[317].setConections(10101010);
myFirstBox[318].setConections(10011001);
myFirstBox[319].setConections(01010110);
myFirstBox[320].setConections(10100000);
myFirstBox[321].setConections(10100101);
myFirstBox[322].setConections(00010101);
myFirstBox[323].setConections(01010110);
myFirstBox[324].setConections(01101010);
myFirstBox[325].setConections(10010110);
myFirstBox[326].setConections(00001001);
myFirstBox[327].setConections(10011010);
myFirstBox[328].setConections(10101010);
myFirstBox[329].setConections(01100101);
myFirstBox[330].setConections(01011010);
myFirstBox[331].setConections(01101010);
myFirstBox[332].setConections(10100101);
myFirstBox[333].setConections(10100101);
myFirstBox[334].setConections(01011000);
myFirstBox[335].setConections(01010110);
myFirstBox[336].setConections(00100110);
myFirstBox[337].setConections(01101010);
myFirstBox[338].setConections(01101010);
myFirstBox[339].setConections(10010110);
myFirstBox[340].setConections(10101010);
myFirstBox[341].setConections(01100110);
myFirstBox[342].setConections(10011000);
myFirstBox[343].setConections(10101010);
myFirstBox[344].setConections(01011001);
myFirstBox[345].setConections(01101001);
myFirstBox[346].setConections(10010101);
myFirstBox[347].setConections(10101010);
myFirstBox[348].setConections(10011001);
myFirstBox[349].setConections(01101001);
myFirstBox[350].setConections(01010110);
myFirstBox[351].setConections(10000110);
myFirstBox[352].setConections(10010110);
myFirstBox[353].setConections(10011010);
myFirstBox[354].setConections(01010110);
myFirstBox[355].setConections(10010010);
myFirstBox[356].setConections(10100110);
myFirstBox[357].setConections(10101001);
myFirstBox[358].setConections(01011001);
myFirstBox[359].setConections(01010000);
myFirstBox[360].setConections(10011001);
myFirstBox[361].setConections(01101001);
myFirstBox[362].setConections(01100001);
myFirstBox[363].setConections(10100110);
myFirstBox[364].setConections(10100101);
myFirstBox[365].setConections(01100101);
myFirstBox[366].setConections(01001010);
myFirstBox[367].setConections(10010110);
myFirstBox[368].setConections(10010101);
myFirstBox[369].setConections(10010100);
myFirstBox[370].setConections(01010101);
myFirstBox[371].setConections(01011000);
myFirstBox[372].setConections(01100010);
myFirstBox[373].setConections(10011001);
myFirstBox[374].setConections(01100110);
myFirstBox[375].setConections(10100101);
myFirstBox[376].setConections(01000110);
myFirstBox[377].setConections(01010101);
myFirstBox[378].setConections(01100110);
myFirstBox[379].setConections(10100110);
myFirstBox[380].setConections(00100110);
myFirstBox[381].setConections(01101001);
myFirstBox[382].setConections(01100101);
myFirstBox[383].setConections(10010101);
myFirstBox[384].setConections(01101001);
myFirstBox[385].setConections(10010110);
myFirstBox[386].setConections(10010101);
myFirstBox[387].setConections(10101001);
myFirstBox[388].setConections(10011001);
myFirstBox[389].setConections(01010110);
myFirstBox[390].setConections(10100010);
myFirstBox[391].setConections(10101001);
myFirstBox[392].setConections(01101010);
myFirstBox[393].setConections(10101010);
myFirstBox[394].setConections(01100110);
myFirstBox[395].setConections(01010101);
myFirstBox[396].setConections(01101001);
myFirstBox[397].setConections(10010101);
myFirstBox[398].setConections(10100110);
myFirstBox[399].setConections(01101010);

View File

@ -6,7 +6,7 @@ MPK Projekt Puzzle Solver
1, Clone repository
2, branch master
2, branch master into a team branch
3, dont ever touch master again

49
README_BACKUP_289.md Normal file
View File

@ -0,0 +1,49 @@
# MPK.Puzzle
MPK Projekt Puzzle Solver
# Git intro
0, read github tutorial
1, Clone repository
<<<<<<< HEAD
2, branch master
=======
2, branch master into a team branch
>>>>>>> master
3, dont ever touch master again
4, ..?
5, Profit
Seriously. don't merge branch to master unless you are absolutely, 100% sure it works!
# Current Todo
Git for Puzzle solving project
1, Input:
-Puzzle Bilder in richtige Orientierung bringen
-Puzzle Bilder informaion rein raus oder kante extrahieren
-Schnittstelle zwischen Input und Solver definieren
2, Solver
-Grundsätzliche Aufbauweise
-Puzzle nach bekommenen Informationen der Input Gruppe lösen -soweit dies möglich ist-
3, Output
-Transparenz der Bilder einstellen
-visuelle Darstellung des outputs von Solver
-Schnittstelle zwischen Solver und Output definieren

45
README_BASE_289.md Normal file
View File

@ -0,0 +1,45 @@
# MPK.Puzzle
MPK Projekt Puzzle Solver
# Git intro
0, read github tutorial
1, Clone repository
2, branch master
3, dont ever touch master again
4, ..?
5, Profit
Seriously. don't merge branch to master unless you are absolutely, 100% sure it works!
# Current Todo
Git for Puzzle solving project
1, Input:
-Puzzle Bilder in richtige Orientierung bringen
-Puzzle Bilder informaion rein raus oder kante extrahieren
-Schnittstelle zwischen Input und Solver definieren
2, Solver
-Grundsätzliche Aufbauweise
-Puzzle nach bekommenen Informationen der Input Gruppe lösen -soweit dies möglich ist-
3, Output
-Transparenz der Bilder einstellen
-visuelle Darstellung des outputs von Solver
-Schnittstelle zwischen Solver und Output definieren

45
README_LOCAL_289.md Normal file
View File

@ -0,0 +1,45 @@
# MPK.Puzzle
MPK Projekt Puzzle Solver
# Git intro
0, read github tutorial
1, Clone repository
2, branch master
3, dont ever touch master again
4, ..?
5, Profit
Seriously. don't merge branch to master unless you are absolutely, 100% sure it works!
# Current Todo
Git for Puzzle solving project
1, Input:
-Puzzle Bilder in richtige Orientierung bringen
-Puzzle Bilder informaion rein raus oder kante extrahieren
-Schnittstelle zwischen Input und Solver definieren
2, Solver
-Grundsätzliche Aufbauweise
-Puzzle nach bekommenen Informationen der Input Gruppe lösen -soweit dies möglich ist-
3, Output
-Transparenz der Bilder einstellen
-visuelle Darstellung des outputs von Solver
-Schnittstelle zwischen Solver und Output definieren

45
README_REMOTE_289.md Normal file
View File

@ -0,0 +1,45 @@
# MPK.Puzzle
MPK Projekt Puzzle Solver
# Git intro
0, read github tutorial
1, Clone repository
2, branch master into a team branch
3, dont ever touch master again
4, ..?
5, Profit
Seriously. don't merge branch to master unless you are absolutely, 100% sure it works!
# Current Todo
Git for Puzzle solving project
1, Input:
-Puzzle Bilder in richtige Orientierung bringen
-Puzzle Bilder informaion rein raus oder kante extrahieren
-Schnittstelle zwischen Input und Solver definieren
2, Solver
-Grundsätzliche Aufbauweise
-Puzzle nach bekommenen Informationen der Input Gruppe lösen -soweit dies möglich ist-
3, Output
-Transparenz der Bilder einstellen
-visuelle Darstellung des outputs von Solver
-Schnittstelle zwischen Solver und Output definieren

View File

@ -6,6 +6,7 @@ void PuzzlePiece::shift(unsigned int moves)
setConnections(((getConnections() >> (moves*2)) | (getConnections() << sizeof(unsigned char)*8 - (moves*2))));
}
//creates random centerpiece
void PuzzlePiece::randomCenterPiece()
{

View File

@ -1,4 +1,5 @@
bool next()
{

View File

@ -1,153 +1,153 @@
using namespace std;
class PuzzlePiece: public Part
{
public:
PuzzlePiece(unsigned int flag = 0)
{
shifts=0;
boxidentifier=-1;
switch(flag)
{
case 0:
setConnections(0b00000000);
break;
case 1:
setConnections(0b11111111);
break;
case 3:
randomCenterPiece();
break;
}
}
void shift(unsigned int moves);
void randomCenterPiece();
void printPiece() { cout << bitset<sizeof(unsigned char)*8> (getConnections()); }
void setBoxIdentifier(int new_boxid) { boxidentifier = new_boxid; }
int getBoxIdentifier() { return boxidentifier; }
void assignIdentifier() { identifier = idcount;idcount++; }
unsigned int getIdentifier() { return identifier;}
private:
unsigned int shifts;
unsigned int boxidentifier;
unsigned int identifier;
static unsigned int idcount;
};
unsigned int PuzzlePiece::idcount(0);
class Puzzle
{
friend class randomBox;
public:
//constructor creates matrix with 00 outside and 11 inside
Puzzle(uint m = 7, uint n = 4): col(m), row(n)
{
Matrix = new PuzzlePiece* [n+2];
for(int i = 0;i<n+2;i++)
{
Matrix[i] = new PuzzlePiece[m+2];
for(int j = 0;j<m+2;j++)
{
if(i==0 || j==0 || i==n+1 || j==m+1)
{
Matrix[i][j] = PuzzlePiece(0);
}
else
{
Matrix[i][j] = PuzzlePiece(1);
}
}
}
}
bool setPiece(uint m,uint n,PuzzlePiece newPiece)
{
if(PlaceOfPartGood(m,n,newPiece))
{
Matrix[n+1][m+1] = newPiece;
return 1;
}
return 0;
}
//removes piece and instead puts undefined piece
bool removePiece(uint m,uint n)
{
Matrix[n+1][m+1].setConnections(0b11111111);
return 1;
}
//getter
PuzzlePiece getPiece(uint m,uint n) { return Matrix[n+1][m+1]; }
uint getCols(){ return col; }
uint getRows(){ return row; }
//functtion definitions
void printPuzzle();
bool PlaceOfPartGood(unsigned int m, unsigned int n, PuzzlePiece& myPart);
bool PlaceOfPart2Good(unsigned int m,unsigned int n, PuzzlePiece& myPart);
bool testRotationPiece(unsigned int m, unsigned int n, PuzzlePiece& myPart);
unsigned int tryAllPieces(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox, unsigned int separator);
unsigned int putBackIntoBox(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox);
private:
uint row;
uint col;
PuzzlePiece** Matrix;
};
//use this for random puzzle creation
class randomBox: public Puzzle
{
public:
randomBox(unsigned int m, unsigned int n) : Puzzle(m,n) {srand(time(0));} //passed m n to puzzle constructor
void createRandomPuzzle();
vector<PuzzlePiece> shuffle();
void printBox();
private:
vector<PuzzlePiece> Box;
};
class coor
{
public:
int m, n;
coor():m(-1),n(-1){}
coor(int newm,int newn): m(newm), n(newn)
{}
};
class LogEntry
{
public:
vector<PuzzlePiece*> PieceCollector;
vector<coor> CoorCollector;
int abstractionLevel;
coor myCoor;
PuzzlePiece* myPuzzlePiece;
LogEntry()
{
abstractionLevel=0;
}
private:
};
void printBox(vector<PuzzlePiece> myBox);
vector<PuzzlePiece> createBox(uint m, uint n);
using namespace std;
class PuzzlePiece: public Part
{
public:
PuzzlePiece(unsigned int flag = 0)
{
shifts=0;
boxidentifier=-1;
switch(flag)
{
case 0:
setConnections(0b00000000);
break;
case 1:
setConnections(0b11111111);
break;
case 3:
randomCenterPiece();
break;
}
}
void shift(unsigned int moves);
void randomCenterPiece();
void printPiece() { cout << bitset<sizeof(unsigned char)*8> (getConnections()); }
void setBoxIdentifier(int new_boxid) { boxidentifier = new_boxid; }
int getBoxIdentifier() { return boxidentifier; }
void assignIdentifier() { identifier = idcount;idcount++; }
unsigned int getIdentifier() { return identifier;}
private:
unsigned int shifts;
unsigned int boxidentifier;
unsigned int identifier;
static unsigned int idcount;
};
unsigned int PuzzlePiece::idcount(0);
class Puzzle
{
friend class randomBox;
public:
//constructor creates matrix with 00 outside and 11 inside
Puzzle(uint m = 7, uint n = 4): col(m), row(n)
{
Matrix = new PuzzlePiece* [n+2];
for(int i = 0;i<n+2;i++)
{
Matrix[i] = new PuzzlePiece[m+2];
for(int j = 0;j<m+2;j++)
{
if(i==0 || j==0 || i==n+1 || j==m+1)
{
Matrix[i][j] = PuzzlePiece(0);
}
else
{
Matrix[i][j] = PuzzlePiece(1);
}
}
}
}
bool setPiece(uint m,uint n,PuzzlePiece newPiece)
{
if(PlaceOfPartGood(m,n,newPiece))
{
Matrix[n+1][m+1] = newPiece;
return 1;
}
return 0;
}
//removes piece and instead puts undefined piece
bool removePiece(uint m,uint n)
{
Matrix[n+1][m+1].setConnections(0b11111111);
return 1;
}
//getter
PuzzlePiece getPiece(uint m,uint n) { return Matrix[n+1][m+1]; }
uint getCols(){ return col; }
uint getRows(){ return row; }
//functtion definitions
void printPuzzle();
bool PlaceOfPartGood(unsigned int m, unsigned int n, PuzzlePiece& myPart);
bool PlaceOfPart2Good(unsigned int m,unsigned int n, PuzzlePiece& myPart);
bool testRotationPiece(unsigned int m, unsigned int n, PuzzlePiece& myPart);
unsigned int tryAllPieces(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox, unsigned int separator);
unsigned int putBackIntoBox(unsigned int m, unsigned int n, vector<PuzzlePiece>& myBox);
private:
uint row;
uint col;
PuzzlePiece** Matrix;
};
//use this for random puzzle creation
class randomBox: public Puzzle
{
public:
randomBox(unsigned int m, unsigned int n) : Puzzle(m,n) {srand(time(0));} //passed m n to puzzle constructor
void createRandomPuzzle();
vector<PuzzlePiece> shuffle();
void printBox();
private:
vector<PuzzlePiece> Box;
};
class coor
{
public:
int m, n;
coor():m(-1),n(-1){}
coor(int newm,int newn): m(newm), n(newn)
{}
};
class LogEntry
{
public:
vector<PuzzlePiece*> PieceCollector;
vector<coor> CoorCollector;
int abstractionLevel;
coor myCoor;
PuzzlePiece* myPuzzlePiece;
LogEntry()
{
abstractionLevel=0;
}
private:
};
void printBox(vector<PuzzlePiece> myBox);
vector<PuzzlePiece> createBox(uint m, uint n);
void numerateBox(vector<PuzzlePiece>& myBox);