Created
February 14, 2011 22:52
-
-
Save gb96/826757 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* For N=13 recursive swap() evaluates 0-based deck using nested switch. | |
* Inner switch is effectively inline version of one level of recursion. | |
* @see https://gist.github.com/826754 | |
* | |
* @param v00 | |
* @param v01 | |
* @param v02 | |
* @param v03 | |
* @param v04 | |
* @param v05 | |
* @param v06 | |
* @param v07 | |
* @param v08 | |
* @param v09 | |
* @param v10 | |
* @param v11 | |
* @param v12 | |
* @return | |
*/ | |
static int swap(final char v00, final char v01, final char v02, final char v03, final char v04, final char v05, final char v06, final char v07, final char v08, final char v09, final char v10, final char v11, final char v12) { | |
switch (v00) { | |
case 0: | |
return 0; | |
case 1: | |
switch (v01) { | |
case 0: | |
return 1; | |
case 2: | |
if (v02 == 0) return 2; | |
return 2 + swap(v02, v00, v01, v03, v04, v05, v06, v07, v08, v09, v10, v11, v12); | |
case 3: | |
if (v03 == 0) return 2; | |
return 2 + swap(v03, v02, v00, v01, v04, v05, v06, v07, v08, v09, v10, v11, v12); | |
case 4: | |
if (v04 == 0) return 2; | |
return 2 + swap(v04, v03, v02, v00, v01, v05, v06, v07, v08, v09, v10, v11, v12); | |
case 5: | |
if (v05 == 0) return 2; | |
return 2 + swap(v05, v04, v03, v02, v00, v01, v06, v07, v08, v09, v10, v11, v12); | |
case 6: | |
if (v06 == 0) return 2; | |
return 2 + swap(v06, v05, v04, v03, v02, v00, v01, v07, v08, v09, v10, v11, v12); | |
case 7: | |
if (v07 == 0) return 2; | |
return 2 + swap(v07, v06, v05, v04, v03, v02, v00, v01, v08, v09, v10, v11, v12); | |
case 8: | |
if (v08 == 0) return 2; | |
return 2 + swap(v08, v07, v06, v05, v04, v03, v02, v00, v01, v09, v10, v11, v12); | |
case 9: | |
if (v09 == 0) return 2; | |
return 2 + swap(v09, v08, v07, v06, v05, v04, v03, v02, v00, v01, v10, v11, v12); | |
case 10: | |
if (v10 == 0) return 2; | |
return 2 + swap(v10, v09, v08, v07, v06, v05, v04, v03, v02, v00, v01, v11, v12); | |
case 11: | |
if (v11 == 0) return 2; | |
return 2 + swap(v11, v10, v09, v08, v07, v06, v05, v04, v03, v02, v00, v01, v12); | |
case 12: | |
if (v12 == 0) return 2; | |
return 2 + swap(v12, v11, v10, v09, v08, v07, v06, v05, v04, v03, v02, v00, v01); | |
} | |
return 1 + swap(v01, v00, v02, v03, v04, v05, v06, v07, v08, v09, v10, v11, v12); | |
case 2: | |
switch (v02) { | |
case 0: | |
return 1; | |
case 1: | |
if (v01 == 0) return 2; | |
return 2 + swap(v01, v02, v00, v03, v04, v05, v06, v07, v08, v09, v10, v11, v12); | |
case 3: | |
if (v03 == 0) return 2; | |
return 2 + swap(v03, v00, v01, v02, v04, v05, v06, v07, v08, v09, v10, v11, v12); | |
case 4: | |
if (v04 == 0) return 2; | |
return 2 + swap(v04, v03, v00, v01, v02, v05, v06, v07, v08, v09, v10, v11, v12); | |
case 5: | |
if (v05 == 0) return 2; | |
return 2 + swap(v05, v04, v03, v00, v01, v02, v06, v07, v08, v09, v10, v11, v12); | |
case 6: | |
if (v06 == 0) return 2; | |
return 2 + swap(v06, v05, v04, v03, v00, v01, v02, v07, v08, v09, v10, v11, v12); | |
case 7: | |
if (v07 == 0) return 2; | |
return 2 + swap(v07, v06, v05, v04, v03, v00, v01, v02, v08, v09, v10, v11, v12); | |
case 8: | |
if (v08 == 0) return 2; | |
return 2 + swap(v08, v07, v06, v05, v04, v03, v00, v01, v02, v09, v10, v11, v12); | |
case 9: | |
if (v09 == 0) return 2; | |
return 2 + swap(v09, v08, v07, v06, v05, v04, v03, v00, v01, v02, v10, v11, v12); | |
case 10: | |
if (v10 == 0) return 2; | |
return 2 + swap(v10, v09, v08, v07, v06, v05, v04, v03, v00, v01, v02, v11, v12); | |
case 11: | |
if (v11 == 0) return 2; | |
return 2 + swap(v11, v10, v09, v08, v07, v06, v05, v04, v03, v00, v01, v02, v12); | |
case 12: | |
if (v12 == 0) return 2; | |
return 2 + swap(v12, v11, v10, v09, v08, v07, v06, v05, v04, v03, v00, v01, v02); | |
} | |
return 1 + swap(v02, v01, v00, v03, v04, v05, v06, v07, v08, v09, v10, v11, v12); | |
case 3: | |
switch (v03) { | |
case 0: | |
return 1; | |
case 1: | |
if (v02 == 0) return 2; | |
return 2 + swap(v02, v03, v01, v00, v04, v05, v06, v07, v08, v09, v10, v11, v12); | |
case 2: | |
if (v01 == 0) return 2; | |
return 2 + swap(v01, v02, v03, v00, v04, v05, v06, v07, v08, v09, v10, v11, v12); | |
case 4: | |
if (v04 == 0) return 2; | |
return 2 + swap(v04, v00, v01, v02, v03, v05, v06, v07, v08, v09, v10, v11, v12); | |
case 5: | |
if (v05 == 0) return 2; | |
return 2 + swap(v05, v04, v00, v01, v02, v03, v06, v07, v08, v09, v10, v11, v12); | |
case 6: | |
if (v06 == 0) return 2; | |
return 2 + swap(v06, v05, v04, v00, v01, v02, v03, v07, v08, v09, v10, v11, v12); | |
case 7: | |
if (v07 == 0) return 2; | |
return 2 + swap(v07, v06, v05, v04, v00, v01, v02, v03, v08, v09, v10, v11, v12); | |
case 8: | |
if (v08 == 0) return 2; | |
return 2 + swap(v08, v07, v06, v05, v04, v00, v01, v02, v03, v09, v10, v11, v12); | |
case 9: | |
if (v09 == 0) return 2; | |
return 2 + swap(v09, v08, v07, v06, v05, v04, v00, v01, v02, v03, v10, v11, v12); | |
case 10: | |
if (v10 == 0) return 2; | |
return 2 + swap(v10, v09, v08, v07, v06, v05, v04, v00, v01, v02, v03, v11, v12); | |
case 11: | |
if (v11 == 0) return 2; | |
return 2 + swap(v11, v10, v09, v08, v07, v06, v05, v04, v00, v01, v02, v03, v12); | |
case 12: | |
if (v12 == 0) return 2; | |
return 2 + swap(v12, v11, v10, v09, v08, v07, v06, v05, v04, v00, v01, v02, v03); | |
} | |
return 1 + swap(v03, v02, v01, v00, v04, v05, v06, v07, v08, v09, v10, v11, v12); | |
case 4: | |
switch (v04) { | |
case 0: | |
return 1; | |
case 1: | |
if (v03 == 0) return 2; | |
return 2 + swap(v03, v04, v02, v01, v00, v05, v06, v07, v08, v09, v10, v11, v12); | |
case 2: | |
if (v02 == 0) return 2; | |
return 2 + swap(v02, v03, v04, v01, v00, v05, v06, v07, v08, v09, v10, v11, v12); | |
case 3: | |
if (v01 == 0) return 2; | |
return 2 + swap(v01, v02, v03, v04, v00, v05, v06, v07, v08, v09, v10, v11, v12); | |
case 5: | |
if (v05 == 0) return 2; | |
return 2 + swap(v05, v00, v01, v02, v03, v04, v06, v07, v08, v09, v10, v11, v12); | |
case 6: | |
if (v06 == 0) return 2; | |
return 2 + swap(v06, v05, v00, v01, v02, v03, v04, v07, v08, v09, v10, v11, v12); | |
case 7: | |
if (v07 == 0) return 2; | |
return 2 + swap(v07, v06, v05, v00, v01, v02, v03, v04, v08, v09, v10, v11, v12); | |
case 8: | |
if (v08 == 0) return 2; | |
return 2 + swap(v08, v07, v06, v05, v00, v01, v02, v03, v04, v09, v10, v11, v12); | |
case 9: | |
if (v09 == 0) return 2; | |
return 2 + swap(v09, v08, v07, v06, v05, v00, v01, v02, v03, v04, v10, v11, v12); | |
case 10: | |
if (v10 == 0) return 2; | |
return 2 + swap(v10, v09, v08, v07, v06, v05, v00, v01, v02, v03, v04, v11, v12); | |
case 11: | |
if (v11 == 0) return 2; | |
return 2 + swap(v11, v10, v09, v08, v07, v06, v05, v00, v01, v02, v03, v04, v12); | |
case 12: | |
if (v12 == 0) return 2; | |
return 2 + swap(v12, v11, v10, v09, v08, v07, v06, v05, v00, v01, v02, v03, v04); | |
} | |
return 1 + swap(v04, v03, v02, v01, v00, v05, v06, v07, v08, v09, v10, v11, v12); | |
case 5: | |
switch (v05) { | |
case 0: | |
return 1; | |
case 1: | |
if (v04 == 0) return 2; | |
return 2 + swap(v04, v05, v03, v02, v01, v00, v06, v07, v08, v09, v10, v11, v12); | |
case 2: | |
if (v03 == 0) return 2; | |
return 2 + swap(v03, v04, v05, v02, v01, v00, v06, v07, v08, v09, v10, v11, v12); | |
case 3: | |
if (v02 == 0) return 2; | |
return 2 + swap(v02, v03, v04, v05, v01, v00, v06, v07, v08, v09, v10, v11, v12); | |
case 4: | |
if (v01 == 0) return 2; | |
return 2 + swap(v01, v02, v03, v04, v05, v00, v06, v07, v08, v09, v10, v11, v12); | |
case 6: | |
if (v06 == 0) return 2; | |
return 2 + swap(v06, v00, v01, v02, v03, v04, v05, v07, v08, v09, v10, v11, v12); | |
case 7: | |
if (v07 == 0) return 2; | |
return 2 + swap(v07, v06, v00, v01, v02, v03, v04, v05, v08, v09, v10, v11, v12); | |
case 8: | |
if (v08 == 0) return 2; | |
return 2 + swap(v08, v07, v06, v00, v01, v02, v03, v04, v05, v09, v10, v11, v12); | |
case 9: | |
if (v09 == 0) return 2; | |
return 2 + swap(v09, v08, v07, v06, v00, v01, v02, v03, v04, v05, v10, v11, v12); | |
case 10: | |
if (v10 == 0) return 2; | |
return 2 + swap(v10, v09, v08, v07, v06, v00, v01, v02, v03, v04, v05, v11, v12); | |
case 11: | |
if (v11 == 0) return 2; | |
return 2 + swap(v11, v10, v09, v08, v07, v06, v00, v01, v02, v03, v04, v05, v12); | |
case 12: | |
if (v12 == 0) return 2; | |
return 2 + swap(v12, v11, v10, v09, v08, v07, v06, v00, v01, v02, v03, v04, v05); | |
} | |
return 1 + swap(v05, v04, v03, v02, v01, v00, v06, v07, v08, v09, v10, v11, v12); | |
case 6: | |
switch (v06) { | |
case 0: | |
return 1; | |
case 1: | |
if (v05 == 0) return 2; | |
return 2 + swap(v05, v06, v04, v03, v02, v01, v00, v07, v08, v09, v10, v11, v12); | |
case 2: | |
if (v04 == 0) return 2; | |
return 2 + swap(v04, v05, v06, v03, v02, v01, v00, v07, v08, v09, v10, v11, v12); | |
case 3: | |
if (v03 == 0) return 2; | |
return 2 + swap(v03, v04, v05, v06, v02, v01, v00, v07, v08, v09, v10, v11, v12); | |
case 4: | |
if (v02 == 0) return 2; | |
return 2 + swap(v02, v03, v04, v05, v06, v01, v00, v07, v08, v09, v10, v11, v12); | |
case 5: | |
if (v01 == 0) return 2; | |
return 2 + swap(v01, v02, v03, v04, v05, v06, v00, v07, v08, v09, v10, v11, v12); | |
case 7: | |
if (v07 == 0) return 2; | |
return 2 + swap(v07, v00, v01, v02, v03, v04, v05, v06, v08, v09, v10, v11, v12); | |
case 8: | |
if (v08 == 0) return 2; | |
return 2 + swap(v08, v07, v00, v01, v02, v03, v04, v05, v06, v09, v10, v11, v12); | |
case 9: | |
if (v09 == 0) return 2; | |
return 2 + swap(v09, v08, v07, v00, v01, v02, v03, v04, v05, v06, v10, v11, v12); | |
case 10: | |
if (v10 == 0) return 2; | |
return 2 + swap(v10, v09, v08, v07, v00, v01, v02, v03, v04, v05, v06, v11, v12); | |
case 11: | |
if (v11 == 0) return 2; | |
return 2 + swap(v11, v10, v09, v08, v07, v00, v01, v02, v03, v04, v05, v06, v12); | |
case 12: | |
if (v12 == 0) return 2; | |
return 2 + swap(v12, v11, v10, v09, v08, v07, v00, v01, v02, v03, v04, v05, v06); | |
} | |
return 1 + swap(v06, v05, v04, v03, v02, v01, v00, v07, v08, v09, v10, v11, v12); | |
case 7: | |
switch (v07) { | |
case 0: | |
return 1; | |
case 1: | |
if (v06 == 0) return 2; | |
return 2 + swap(v06, v07, v05, v04, v03, v02, v01, v00, v08, v09, v10, v11, v12); | |
case 2: | |
if (v05 == 0) return 2; | |
return 2 + swap(v05, v06, v07, v04, v03, v02, v01, v00, v08, v09, v10, v11, v12); | |
case 3: | |
if (v04 == 0) return 2; | |
return 2 + swap(v04, v05, v06, v07, v03, v02, v01, v00, v08, v09, v10, v11, v12); | |
case 4: | |
if (v03 == 0) return 2; | |
return 2 + swap(v03, v04, v05, v06, v07, v02, v01, v00, v08, v09, v10, v11, v12); | |
case 5: | |
if (v02 == 0) return 2; | |
return 2 + swap(v02, v03, v04, v05, v06, v07, v01, v00, v08, v09, v10, v11, v12); | |
case 6: | |
if (v01 == 0) return 2; | |
return 2 + swap(v01, v02, v03, v04, v05, v06, v07, v00, v08, v09, v10, v11, v12); | |
case 8: | |
if (v08 == 0) return 2; | |
return 2 + swap(v08, v00, v01, v02, v03, v04, v05, v06, v07, v09, v10, v11, v12); | |
case 9: | |
if (v09 == 0) return 2; | |
return 2 + swap(v09, v08, v00, v01, v02, v03, v04, v05, v06, v07, v10, v11, v12); | |
case 10: | |
if (v10 == 0) return 2; | |
return 2 + swap(v10, v09, v08, v00, v01, v02, v03, v04, v05, v06, v07, v11, v12); | |
case 11: | |
if (v11 == 0) return 2; | |
return 2 + swap(v11, v10, v09, v08, v00, v01, v02, v03, v04, v05, v06, v07, v12); | |
case 12: | |
if (v12 == 0) return 2; | |
return 2 + swap(v12, v11, v10, v09, v08, v00, v01, v02, v03, v04, v05, v06, v07); | |
} | |
return 1 + swap(v07, v06, v05, v04, v03, v02, v01, v00, v08, v09, v10, v11, v12); | |
case 8: | |
switch (v08) { | |
case 0: | |
return 1; | |
case 1: | |
if (v07 == 0) return 2; | |
return 2 + swap(v07, v08, v06, v05, v04, v03, v02, v01, v00, v09, v10, v11, v12); | |
case 2: | |
if (v06 == 0) return 2; | |
return 2 + swap(v06, v07, v08, v05, v04, v03, v02, v01, v00, v09, v10, v11, v12); | |
case 3: | |
if (v05 == 0) return 2; | |
return 2 + swap(v05, v06, v07, v08, v04, v03, v02, v01, v00, v09, v10, v11, v12); | |
case 4: | |
if (v04 == 0) return 2; | |
return 2 + swap(v04, v05, v06, v07, v08, v03, v02, v01, v00, v09, v10, v11, v12); | |
case 5: | |
if (v03 == 0) return 2; | |
return 2 + swap(v03, v04, v05, v06, v07, v08, v02, v01, v00, v09, v10, v11, v12); | |
case 6: | |
if (v02 == 0) return 2; | |
return 2 + swap(v02, v03, v04, v05, v06, v07, v08, v01, v00, v09, v10, v11, v12); | |
case 7: | |
if (v01 == 0) return 2; | |
return 2 + swap(v01, v02, v03, v04, v05, v06, v07, v08, v00, v09, v10, v11, v12); | |
case 9: | |
if (v09 == 0) return 2; | |
return 2 + swap(v09, v00, v01, v02, v03, v04, v05, v06, v07, v08, v10, v11, v12); | |
case 10: | |
if (v10 == 0) return 2; | |
return 2 + swap(v10, v09, v00, v01, v02, v03, v04, v05, v06, v07, v08, v11, v12); | |
case 11: | |
if (v11 == 0) return 2; | |
return 2 + swap(v11, v10, v09, v00, v01, v02, v03, v04, v05, v06, v07, v08, v12); | |
case 12: | |
if (v12 == 0) return 2; | |
return 2 + swap(v12, v11, v10, v09, v00, v01, v02, v03, v04, v05, v06, v07, v08); | |
} | |
return 1 + swap(v08, v07, v06, v05, v04, v03, v02, v01, v00, v09, v10, v11, v12); | |
case 9: | |
switch (v09) { | |
case 0: | |
return 1; | |
case 1: | |
if (v08 == 0) return 2; | |
return 2 + swap(v08, v09, v07, v06, v05, v04, v03, v02, v01, v00, v10, v11, v12); | |
case 2: | |
if (v07 == 0) return 2; | |
return 2 + swap(v07, v08, v09, v06, v05, v04, v03, v02, v01, v00, v10, v11, v12); | |
case 3: | |
if (v06 == 0) return 2; | |
return 2 + swap(v06, v07, v08, v09, v05, v04, v03, v02, v01, v00, v10, v11, v12); | |
case 4: | |
if (v05 == 0) return 2; | |
return 2 + swap(v05, v06, v07, v08, v09, v04, v03, v02, v01, v00, v10, v11, v12); | |
case 5: | |
if (v04 == 0) return 2; | |
return 2 + swap(v04, v05, v06, v07, v08, v09, v03, v02, v01, v00, v10, v11, v12); | |
case 6: | |
if (v03 == 0) return 2; | |
return 2 + swap(v03, v04, v05, v06, v07, v08, v09, v02, v01, v00, v10, v11, v12); | |
case 7: | |
if (v02 == 0) return 2; | |
return 2 + swap(v02, v03, v04, v05, v06, v07, v08, v09, v01, v00, v10, v11, v12); | |
case 8: | |
if (v01 == 0) return 2; | |
return 2 + swap(v01, v02, v03, v04, v05, v06, v07, v08, v09, v00, v10, v11, v12); | |
case 10: | |
if (v10 == 0) return 2; | |
return 2 + swap(v10, v00, v01, v02, v03, v04, v05, v06, v07, v08, v09, v11, v12); | |
case 11: | |
if (v11 == 0) return 2; | |
return 2 + swap(v11, v10, v00, v01, v02, v03, v04, v05, v06, v07, v08, v09, v12); | |
case 12: | |
if (v12 == 0) return 2; | |
return 2 + swap(v12, v11, v10, v00, v01, v02, v03, v04, v05, v06, v07, v08, v09); | |
} | |
return 1 + swap(v09, v08, v07, v06, v05, v04, v03, v02, v01, v00, v10, v11, v12); | |
case 10: | |
switch (v10) { | |
case 0: | |
return 1; | |
case 1: | |
if (v09 == 0) return 2; | |
return 2 + swap(v09, v10, v08, v07, v06, v05, v04, v03, v02, v01, v00, v11, v12); | |
case 2: | |
if (v08 == 0) return 2; | |
return 2 + swap(v08, v09, v10, v07, v06, v05, v04, v03, v02, v01, v00, v11, v12); | |
case 3: | |
if (v07 == 0) return 2; | |
return 2 + swap(v07, v08, v09, v10, v06, v05, v04, v03, v02, v01, v00, v11, v12); | |
case 4: | |
if (v06 == 0) return 2; | |
return 2 + swap(v06, v07, v08, v09, v10, v05, v04, v03, v02, v01, v00, v11, v12); | |
case 5: | |
if (v05 == 0) return 2; | |
return 2 + swap(v05, v06, v07, v08, v09, v10, v04, v03, v02, v01, v00, v11, v12); | |
case 6: | |
if (v04 == 0) return 2; | |
return 2 + swap(v04, v05, v06, v07, v08, v09, v10, v03, v02, v01, v00, v11, v12); | |
case 7: | |
if (v03 == 0) return 2; | |
return 2 + swap(v03, v04, v05, v06, v07, v08, v09, v10, v02, v01, v00, v11, v12); | |
case 8: | |
if (v02 == 0) return 2; | |
return 2 + swap(v02, v03, v04, v05, v06, v07, v08, v09, v10, v01, v00, v11, v12); | |
case 9: | |
if (v01 == 0) return 2; | |
return 2 + swap(v01, v02, v03, v04, v05, v06, v07, v08, v09, v10, v00, v11, v12); | |
case 11: | |
if (v11 == 0) return 2; | |
return 2 + swap(v11, v00, v01, v02, v03, v04, v05, v06, v07, v08, v09, v10, v12); | |
case 12: | |
if (v12 == 0) return 2; | |
return 2 + swap(v12, v11, v00, v01, v02, v03, v04, v05, v06, v07, v08, v09, v10); | |
} | |
return 1 + swap(v10, v09, v08, v07, v06, v05, v04, v03, v02, v01, v00, v11, v12); | |
case 11: | |
switch (v11) { | |
case 0: | |
return 1; | |
case 1: | |
if (v10 == 0) return 2; | |
return 2 + swap(v10, v11, v09, v08, v07, v06, v05, v04, v03, v02, v01, v00, v12); | |
case 2: | |
if (v09 == 0) return 2; | |
return 2 + swap(v09, v10, v11, v08, v07, v06, v05, v04, v03, v02, v01, v00, v12); | |
case 3: | |
if (v08 == 0) return 2; | |
return 2 + swap(v08, v09, v10, v11, v07, v06, v05, v04, v03, v02, v01, v00, v12); | |
case 4: | |
if (v07 == 0) return 2; | |
return 2 + swap(v07, v08, v09, v10, v11, v06, v05, v04, v03, v02, v01, v00, v12); | |
case 5: | |
if (v06 == 0) return 2; | |
return 2 + swap(v06, v07, v08, v09, v10, v11, v05, v04, v03, v02, v01, v00, v12); | |
case 6: | |
if (v05 == 0) return 2; | |
return 2 + swap(v05, v06, v07, v08, v09, v10, v11, v04, v03, v02, v01, v00, v12); | |
case 7: | |
if (v04 == 0) return 2; | |
return 2 + swap(v04, v05, v06, v07, v08, v09, v10, v11, v03, v02, v01, v00, v12); | |
case 8: | |
if (v03 == 0) return 2; | |
return 2 + swap(v03, v04, v05, v06, v07, v08, v09, v10, v11, v02, v01, v00, v12); | |
case 9: | |
if (v02 == 0) return 2; | |
return 2 + swap(v02, v03, v04, v05, v06, v07, v08, v09, v10, v11, v01, v00, v12); | |
case 10: | |
if (v01 == 0) return 2; | |
return 2 + swap(v01, v02, v03, v04, v05, v06, v07, v08, v09, v10, v11, v00, v12); | |
case 12: | |
if (v12 == 0) return 2; | |
return 2 + swap(v12, v00, v01, v02, v03, v04, v05, v06, v07, v08, v09, v10, v11); | |
} | |
return 1 + swap(v11, v10, v09, v08, v07, v06, v05, v04, v03, v02, v01, v00, v12); | |
case 12: | |
switch (v12) { | |
case 0: | |
return 1; | |
case 1: | |
if (v11 == 0) return 2; | |
return 2 + swap(v11, v12, v10, v09, v08, v07, v06, v05, v04, v03, v02, v01, v00); | |
case 2: | |
if (v10 == 0) return 2; | |
return 2 + swap(v10, v11, v12, v09, v08, v07, v06, v05, v04, v03, v02, v01, v00); | |
case 3: | |
if (v09 == 0) return 2; | |
return 2 + swap(v09, v10, v11, v12, v08, v07, v06, v05, v04, v03, v02, v01, v00); | |
case 4: | |
if (v08 == 0) return 2; | |
return 2 + swap(v08, v09, v10, v11, v12, v07, v06, v05, v04, v03, v02, v01, v00); | |
case 5: | |
if (v07 == 0) return 2; | |
return 2 + swap(v07, v08, v09, v10, v11, v12, v06, v05, v04, v03, v02, v01, v00); | |
case 6: | |
if (v06 == 0) return 2; | |
return 2 + swap(v06, v07, v08, v09, v10, v11, v12, v05, v04, v03, v02, v01, v00); | |
case 7: | |
if (v05 == 0) return 2; | |
return 2 + swap(v05, v06, v07, v08, v09, v10, v11, v12, v04, v03, v02, v01, v00); | |
case 8: | |
if (v04 == 0) return 2; | |
return 2 + swap(v04, v05, v06, v07, v08, v09, v10, v11, v12, v03, v02, v01, v00); | |
case 9: | |
if (v03 == 0) return 2; | |
return 2 + swap(v03, v04, v05, v06, v07, v08, v09, v10, v11, v12, v02, v01, v00); | |
case 10: | |
if (v02 == 0) return 2; | |
return 2 + swap(v02, v03, v04, v05, v06, v07, v08, v09, v10, v11, v12, v01, v00); | |
case 11: | |
if (v01 == 0) return 2; | |
return 2 + swap(v01, v02, v03, v04, v05, v06, v07, v08, v09, v10, v11, v12, v00); | |
} | |
return 1 + swap(v12, v11, v10, v09, v08, v07, v06, v05, v04, v03, v02, v01, v00); | |
} | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment