Quote (kuzdithom @ Nov 17 2013 11:27pm)
nyugodtan postolj néha kódrészleteket, szívesen megerősítünk benne bármikor

switch (o0)
{
case 1: t1[0] = 0; t1[1] = 0; t1[2] = 1; break;
case 0: t1[0] = 0; t1[1] = 0; t1[2] = 0; break;
}
switch (o1)
{
case 3: t2[0] = 0; t2[1] = 1; t2[2] = 1; break;
case 2: t2[0] = 0; t2[1] = 1; t2[2] = 0; break;
case 1: t2[0] = 0; t2[1] = 0; t2[2] = 1; break;
case 0: t2[0] = 0; t2[1] = 0; t2[2] = 0; break;
}
switch (o2)
{
case 5: t3[0] = 1; t3[1] = 0; t3[2] = 1; break;
case 4: t3[0] = 1; t3[1] = 0; t3[2] = 0; break;
case 3: t3[0] = 0; t3[1] = 1; t3[2] = 1; break;
case 2: t3[0] = 0; t3[1] = 1; t3[2] = 0; break;
case 1: t3[0] = 0; t3[1] = 0; t3[2] = 1; break;
case 0: t3[0] = 0; t3[1] = 0; t3[2] = 0; break;
} switch (o3)
{
case 7: t4[0] = 1; t4[1] = 1; t4[2] = 1; break;
case 6: t4[0] = 1; t4[1] = 1; t4[2] = 0; break;
case 5: t4[0] = 1; t4[1] = 0; t4[2] = 1; break;
case 4: t4[0] = 1; t4[1] = 0; t4[2] = 0; break;
case 3: t4[0] = 0; t4[1] = 1; t4[2] = 1; break;
case 2: t4[0] = 0; t4[1] = 1; t4[2] = 0; break;
case 1: t4[0] = 0; t4[1] = 0; t4[2] = 1; break;
case 0: t4[0] = 0; t4[1] = 0; t4[2] = 0; break;
} for (int j = 0; j < 3; j++)
{ nimsum[j] = (t1[j] + t2[j] + t3[j] + t4[j]) % 2; }
if (nimsum[0] == 1 && t3[0] == 1) { o2 = o2 - 4; nimsum[0] = 0; }
if (nimsum[0] == 1 && t4[0] == 1) { o3 = o3 - 4; nimsum[0] = 0; }
if (nimsum[1] == 1 && t2[1] == 1) { o1 = o1 - 2; nimsum[1] = 0; }
if (nimsum[1] == 1 && t3[1] == 1) { o2 = o2 - 2; nimsum[1] = 0; }
if (nimsum[1] == 1 && t4[1] == 1) { o3 = o3 - 2; nimsum[1] = 0; }
if (nimsum[2] == 1 && t1[2] == 1) { o0 = o0 - 1; nimsum[2] = 0; }
if (nimsum[2] == 1 && t2[2] == 1) { o1 = o1 - 1; nimsum[2] = 0; }
if (nimsum[2] == 1 && t3[2] == 1) { o2 = o2 - 1; nimsum[2] = 0; }
if (nimsum[2] == 1 && t4[2] == 1) { o3 = o3 - 1; nimsum[2] = 0; }
jelenleg így néz ki ikszde
fingom nem volt hogy kell átváltani kettes számrendszerbe rendesen, így megkókányoltam
most próbálom megcsinálni a válaszlépést, a nimsumot már jól megcsinálja
úgy kéne lépjen, hogy mindig 0 legyen a nimsum, és elvileg ez biztos győzelem:
http://www.archimedes-lab.org/How_to_Solve/Win_at_Nim.htmlde gond van ha 1 1 5 7 a kezdő lépés, akkor arra ugye 1155 lesz a válaszlépés, ha erre azt lépem, hogy 1150 akkor kiakad az egész, mert a nimsum 101 lesz, viszont ha így kivenné az ötöt és 0-ra rendezné, akkor vesztene 1100, miközben ha 1150 ra azt lépné hogy 111 akkor nyerne
szóval nem tudom, hogy most az algoritmussal van alapvető gond, vagy csak elbaszarintok valamit