fork download
  1. <?php
  2. function uintprint5($a)
  3. {
  4. return sprintf("%u %u %u %u %u", $a[0], $a[1], $a[2], $a[3], $a[4]);
  5. }
  6.  
  7. function sort5(&$a)
  8. {
  9. $mask = gmp_init('29c05310a60c4c15182838506620ca8194232817102d405a10b40c68109c2133026444c851908b8116222c28584630887110d421a303444688', 16);
  10. $bits = (intval($a[0] <= $a[1]) ) | (intval($a[1] <= $a[2]) << 1) | (intval($a[2] <= $a[3]) << 2) | (intval($a[3] <= $a[4]) << 3)
  11. | (intval($a[0] <= $a[2]) << 4) | (intval($a[1] <= $a[3]) << 5) | (intval($a[2] <= $a[4]) << 6)
  12. | (intval($a[0] <= $a[3]) << 7) | (intval($a[1] <= $a[4]) << 8) | (intval($a[0] <= $a[4]) << 9);
  13. $b = array(
  14. 0x000 => 0,
  15. 0x001 => 228,
  16. 0x002 => 303,
  17. 0x004 => 168,
  18. 0x005 => 396,
  19. 0x008 => 57,
  20. 0x009 => 285,
  21. 0x00a => 360,
  22. 0x011 => 75,
  23. 0x012 => 150,
  24. 0x013 => 378,
  25. 0x019 => 132,
  26. 0x01a => 207,
  27. 0x01b => 435,
  28. 0x022 => 246,
  29. 0x024 => 111,
  30. 0x026 => 414,
  31. 0x032 => 93,
  32. 0x044 => 153,
  33. 0x045 => 381,
  34. 0x048 => 42,
  35. 0x049 => 270,
  36. 0x04c => 210,
  37. 0x04d => 438,
  38. 0x064 => 96,
  39. 0x085 => 339,
  40. 0x091 => 18,
  41. 0x093 => 321,
  42. 0x095 => 186,
  43. 0x0a4 => 54,
  44. 0x0a5 => 282,
  45. 0x0a6 => 357,
  46. 0x0b2 => 36,
  47. 0x0b3 => 264,
  48. 0x0b5 => 129,
  49. 0x0b6 => 204,
  50. 0x0b7 => 432,
  51. 0x0c5 => 324,
  52. 0x0e4 => 39,
  53. 0x0e5 => 267,
  54. 0x10a => 345,
  55. 0x11a => 192,
  56. 0x122 => 231,
  57. 0x126 => 399,
  58. 0x12a => 288,
  59. 0x132 => 78,
  60. 0x13a => 135,
  61. 0x148 => 27,
  62. 0x14a => 330,
  63. 0x14c => 195,
  64. 0x164 => 81,
  65. 0x166 => 384,
  66. 0x16a => 273,
  67. 0x16c => 138,
  68. 0x16e => 441,
  69. 0x1a6 => 342,
  70. 0x1b2 => 21,
  71. 0x1b6 => 189,
  72. 0x1e4 => 24,
  73. 0x1e6 => 327,
  74. 0x219 => 117,
  75. 0x21b => 420,
  76. 0x249 => 255,
  77. 0x24d => 423,
  78. 0x259 => 102,
  79. 0x291 => 3,
  80. 0x293 => 306,
  81. 0x295 => 171,
  82. 0x299 => 60,
  83. 0x29b => 363,
  84. 0x2b3 => 249,
  85. 0x2b5 => 114,
  86. 0x2b7 => 417,
  87. 0x2c5 => 309,
  88. 0x2cd => 366,
  89. 0x2d5 => 156,
  90. 0x2d9 => 45,
  91. 0x2dd => 213,
  92. 0x2e5 => 252,
  93. 0x2f5 => 99,
  94. 0x31a => 177,
  95. 0x31b => 405,
  96. 0x33a => 120,
  97. 0x348 => 12,
  98. 0x349 => 240,
  99. 0x34a => 315,
  100. 0x34c => 180,
  101. 0x34d => 408,
  102. 0x359 => 87,
  103. 0x35a => 162,
  104. 0x35b => 390,
  105. 0x36a => 258,
  106. 0x36c => 123,
  107. 0x36e => 426,
  108. 0x37a => 105,
  109. 0x39b => 348,
  110. 0x3b2 => 6,
  111. 0x3b3 => 234,
  112. 0x3b6 => 174,
  113. 0x3b7 => 402,
  114. 0x3ba => 63,
  115. 0x3bb => 291,
  116. 0x3cd => 351,
  117. 0x3d9 => 30,
  118. 0x3db => 333,
  119. 0x3dd => 198,
  120. 0x3e4 => 9,
  121. 0x3e5 => 237,
  122. 0x3e6 => 312,
  123. 0x3ec => 66,
  124. 0x3ed => 294,
  125. 0x3ee => 369,
  126. 0x3f5 => 84,
  127. 0x3f6 => 159,
  128. 0x3f7 => 387,
  129. 0x3fa => 48,
  130. 0x3fb => 276,
  131. 0x3fd => 141,
  132. 0x3fe => 216,
  133. 0x3ff => 444,
  134. );
  135. $mask >>= $b[$bits];
  136. $i4 = gmp_intval(gmp_mod($mask,8));
  137. $mask >>= 3;
  138. $i3 = gmp_intval(gmp_mod($mask,8));
  139. $mask >>= 3;
  140. $i2 = gmp_intval(gmp_mod($mask,8));
  141. $mask >>= 3;
  142. $i1 = gmp_intval(gmp_mod($mask,8));
  143. $mask >>= 3;
  144. $i0 = gmp_intval(gmp_mod($mask,8));
  145. $tmp = array($a[$i0], $a[$i1], $a[$i2], $a[$i3], $a[$i4]);
  146. $a = $tmp;
  147. }
  148.  
  149. $mutations = array(
  150. array(0, 1, 2, 3, 4),
  151. array(0, 1, 2, 4, 3),
  152. array(0, 1, 3, 2, 4),
  153. array(0, 1, 3, 4, 2),
  154. array(0, 1, 4, 2, 3),
  155. array(0, 1, 4, 3, 2),
  156. array(0, 2, 1, 3, 4),
  157. array(0, 2, 1, 4, 3),
  158. array(0, 2, 3, 1, 4),
  159. array(0, 2, 3, 4, 1),
  160. array(0, 2, 4, 1, 3),
  161. array(0, 2, 4, 3, 1),
  162. array(0, 3, 1, 2, 4),
  163. array(0, 3, 1, 4, 2),
  164. array(0, 3, 2, 1, 4),
  165. array(0, 3, 2, 4, 1),
  166. array(0, 3, 4, 1, 2),
  167. array(0, 3, 4, 2, 1),
  168. array(0, 4, 1, 2, 3),
  169. array(0, 4, 1, 3, 2),
  170. array(0, 4, 2, 1, 3),
  171. array(0, 4, 2, 3, 1),
  172. array(0, 4, 3, 1, 2),
  173. array(0, 4, 3, 2, 1),
  174. array(1, 0, 2, 3, 4),
  175. array(1, 0, 2, 4, 3),
  176. array(1, 0, 3, 2, 4),
  177. array(1, 0, 3, 4, 2),
  178. array(1, 0, 4, 2, 3),
  179. array(1, 0, 4, 3, 2),
  180. array(1, 2, 0, 3, 4),
  181. array(1, 2, 0, 4, 3),
  182. array(1, 2, 3, 0, 4),
  183. array(1, 2, 3, 4, 0),
  184. array(1, 2, 4, 0, 3),
  185. array(1, 2, 4, 3, 0),
  186. array(1, 3, 0, 2, 4),
  187. array(1, 3, 0, 4, 2),
  188. array(1, 3, 2, 0, 4),
  189. array(1, 3, 2, 4, 0),
  190. array(1, 3, 4, 0, 2),
  191. array(1, 3, 4, 2, 0),
  192. array(1, 4, 0, 2, 3),
  193. array(1, 4, 0, 3, 2),
  194. array(1, 4, 2, 0, 3),
  195. array(1, 4, 2, 3, 0),
  196. array(1, 4, 3, 0, 2),
  197. array(1, 4, 3, 2, 0),
  198. array(2, 0, 1, 3, 4),
  199. array(2, 0, 1, 4, 3),
  200. array(2, 0, 3, 1, 4),
  201. array(2, 0, 3, 4, 1),
  202. array(2, 0, 4, 1, 3),
  203. array(2, 0, 4, 3, 1),
  204. array(2, 1, 0, 3, 4),
  205. array(2, 1, 0, 4, 3),
  206. array(2, 1, 3, 0, 4),
  207. array(2, 1, 3, 4, 0),
  208. array(2, 1, 4, 0, 3),
  209. array(2, 1, 4, 3, 0),
  210. array(2, 3, 0, 1, 4),
  211. array(2, 3, 0, 4, 1),
  212. array(2, 3, 1, 0, 4),
  213. array(2, 3, 1, 4, 0),
  214. array(2, 3, 4, 0, 1),
  215. array(2, 3, 4, 1, 0),
  216. array(2, 4, 0, 1, 3),
  217. array(2, 4, 0, 3, 1),
  218. array(2, 4, 1, 0, 3),
  219. array(2, 4, 1, 3, 0),
  220. array(2, 4, 3, 0, 1),
  221. array(2, 4, 3, 1, 0),
  222. array(3, 0, 1, 2, 4),
  223. array(3, 0, 1, 4, 2),
  224. array(3, 0, 2, 1, 4),
  225. array(3, 0, 2, 4, 1),
  226. array(3, 0, 4, 1, 2),
  227. array(3, 0, 4, 2, 1),
  228. array(3, 1, 0, 2, 4),
  229. array(3, 1, 0, 4, 2),
  230. array(3, 1, 2, 0, 4),
  231. array(3, 1, 2, 4, 0),
  232. array(3, 1, 4, 0, 2),
  233. array(3, 1, 4, 2, 0),
  234. array(3, 2, 0, 1, 4),
  235. array(3, 2, 0, 4, 1),
  236. array(3, 2, 1, 0, 4),
  237. array(3, 2, 1, 4, 0),
  238. array(3, 2, 4, 0, 1),
  239. array(3, 2, 4, 1, 0),
  240. array(3, 4, 0, 1, 2),
  241. array(3, 4, 0, 2, 1),
  242. array(3, 4, 1, 0, 2),
  243. array(3, 4, 1, 2, 0),
  244. array(3, 4, 2, 0, 1),
  245. array(3, 4, 2, 1, 0),
  246. array(4, 0, 1, 2, 3),
  247. array(4, 0, 1, 3, 2),
  248. array(4, 0, 2, 1, 3),
  249. array(4, 0, 2, 3, 1),
  250. array(4, 0, 3, 1, 2),
  251. array(4, 0, 3, 2, 1),
  252. array(4, 1, 0, 2, 3),
  253. array(4, 1, 0, 3, 2),
  254. array(4, 1, 2, 0, 3),
  255. array(4, 1, 2, 3, 0),
  256. array(4, 1, 3, 0, 2),
  257. array(4, 1, 3, 2, 0),
  258. array(4, 2, 0, 1, 3),
  259. array(4, 2, 0, 3, 1),
  260. array(4, 2, 1, 0, 3),
  261. array(4, 2, 1, 3, 0),
  262. array(4, 2, 3, 0, 1),
  263. array(4, 2, 3, 1, 0),
  264. array(4, 3, 0, 1, 2),
  265. array(4, 3, 0, 2, 1),
  266. array(4, 3, 1, 0, 2),
  267. array(4, 3, 1, 2, 0),
  268. array(4, 3, 2, 0, 1),
  269. array(4, 3, 2, 1, 0),
  270. );
  271.  
  272. foreach($mutations as $mutation) {
  273. $tmp = $mutation;
  274. sort5($tmp);
  275. echo '(' . uintprint5($mutation) . ') -> (' . uintprint5($tmp) . ')' . PHP_EOL;
  276. }
  277.  
Success #stdin #stdout 0s 82560KB
stdin
Standard input is empty
stdout
(0 1 2 3 4) -> (0 1 2 3 4)
(0 1 2 4 3) -> (0 1 2 3 4)
(0 1 3 2 4) -> (0 1 2 3 4)
(0 1 3 4 2) -> (0 1 2 3 4)
(0 1 4 2 3) -> (0 1 2 3 4)
(0 1 4 3 2) -> (0 1 2 3 4)
(0 2 1 3 4) -> (0 1 2 3 4)
(0 2 1 4 3) -> (0 1 2 3 4)
(0 2 3 1 4) -> (0 1 2 3 4)
(0 2 3 4 1) -> (0 1 2 3 4)
(0 2 4 1 3) -> (0 1 2 3 4)
(0 2 4 3 1) -> (0 1 2 3 4)
(0 3 1 2 4) -> (0 1 2 3 4)
(0 3 1 4 2) -> (0 1 2 3 4)
(0 3 2 1 4) -> (0 1 2 3 4)
(0 3 2 4 1) -> (0 1 2 3 4)
(0 3 4 1 2) -> (0 1 2 3 4)
(0 3 4 2 1) -> (0 1 2 3 4)
(0 4 1 2 3) -> (0 1 2 3 4)
(0 4 1 3 2) -> (0 1 2 3 4)
(0 4 2 1 3) -> (0 1 2 3 4)
(0 4 2 3 1) -> (0 1 2 3 4)
(0 4 3 1 2) -> (0 1 2 3 4)
(0 4 3 2 1) -> (0 1 2 3 4)
(1 0 2 3 4) -> (0 1 2 3 4)
(1 0 2 4 3) -> (0 1 2 3 4)
(1 0 3 2 4) -> (0 1 2 3 4)
(1 0 3 4 2) -> (0 1 2 3 4)
(1 0 4 2 3) -> (0 1 2 3 4)
(1 0 4 3 2) -> (0 1 2 3 4)
(1 2 0 3 4) -> (0 1 2 3 4)
(1 2 0 4 3) -> (0 1 2 3 4)
(1 2 3 0 4) -> (0 1 2 3 4)
(1 2 3 4 0) -> (0 1 2 3 4)
(1 2 4 0 3) -> (0 1 2 3 4)
(1 2 4 3 0) -> (0 1 2 3 4)
(1 3 0 2 4) -> (0 1 2 3 4)
(1 3 0 4 2) -> (0 1 2 3 4)
(1 3 2 0 4) -> (0 1 2 3 4)
(1 3 2 4 0) -> (0 1 2 3 4)
(1 3 4 0 2) -> (0 1 2 3 4)
(1 3 4 2 0) -> (0 1 2 3 4)
(1 4 0 2 3) -> (0 1 2 3 4)
(1 4 0 3 2) -> (0 1 2 3 4)
(1 4 2 0 3) -> (0 1 2 3 4)
(1 4 2 3 0) -> (0 1 2 3 4)
(1 4 3 0 2) -> (0 1 2 3 4)
(1 4 3 2 0) -> (0 1 2 3 4)
(2 0 1 3 4) -> (0 1 2 3 4)
(2 0 1 4 3) -> (0 1 2 3 4)
(2 0 3 1 4) -> (0 1 2 3 4)
(2 0 3 4 1) -> (0 1 2 3 4)
(2 0 4 1 3) -> (0 1 2 3 4)
(2 0 4 3 1) -> (0 1 2 3 4)
(2 1 0 3 4) -> (0 1 2 3 4)
(2 1 0 4 3) -> (0 1 2 3 4)
(2 1 3 0 4) -> (0 1 2 3 4)
(2 1 3 4 0) -> (0 1 2 3 4)
(2 1 4 0 3) -> (0 1 2 3 4)
(2 1 4 3 0) -> (0 1 2 3 4)
(2 3 0 1 4) -> (0 1 2 3 4)
(2 3 0 4 1) -> (0 1 2 3 4)
(2 3 1 0 4) -> (0 1 2 3 4)
(2 3 1 4 0) -> (0 1 2 3 4)
(2 3 4 0 1) -> (0 1 2 3 4)
(2 3 4 1 0) -> (0 1 2 3 4)
(2 4 0 1 3) -> (0 1 2 3 4)
(2 4 0 3 1) -> (0 1 2 3 4)
(2 4 1 0 3) -> (0 1 2 3 4)
(2 4 1 3 0) -> (0 1 2 3 4)
(2 4 3 0 1) -> (0 1 2 3 4)
(2 4 3 1 0) -> (0 1 2 3 4)
(3 0 1 2 4) -> (0 1 2 3 4)
(3 0 1 4 2) -> (0 1 2 3 4)
(3 0 2 1 4) -> (0 1 2 3 4)
(3 0 2 4 1) -> (0 1 2 3 4)
(3 0 4 1 2) -> (0 1 2 3 4)
(3 0 4 2 1) -> (0 1 2 3 4)
(3 1 0 2 4) -> (0 1 2 3 4)
(3 1 0 4 2) -> (0 1 2 3 4)
(3 1 2 0 4) -> (0 1 2 3 4)
(3 1 2 4 0) -> (0 1 2 3 4)
(3 1 4 0 2) -> (0 1 2 3 4)
(3 1 4 2 0) -> (0 1 2 3 4)
(3 2 0 1 4) -> (0 1 2 3 4)
(3 2 0 4 1) -> (0 1 2 3 4)
(3 2 1 0 4) -> (0 1 2 3 4)
(3 2 1 4 0) -> (0 1 2 3 4)
(3 2 4 0 1) -> (0 1 2 3 4)
(3 2 4 1 0) -> (0 1 2 3 4)
(3 4 0 1 2) -> (0 1 2 3 4)
(3 4 0 2 1) -> (0 1 2 3 4)
(3 4 1 0 2) -> (0 1 2 3 4)
(3 4 1 2 0) -> (0 1 2 3 4)
(3 4 2 0 1) -> (0 1 2 3 4)
(3 4 2 1 0) -> (0 1 2 3 4)
(4 0 1 2 3) -> (0 1 2 3 4)
(4 0 1 3 2) -> (0 1 2 3 4)
(4 0 2 1 3) -> (0 1 2 3 4)
(4 0 2 3 1) -> (0 1 2 3 4)
(4 0 3 1 2) -> (0 1 2 3 4)
(4 0 3 2 1) -> (0 1 2 3 4)
(4 1 0 2 3) -> (0 1 2 3 4)
(4 1 0 3 2) -> (0 1 2 3 4)
(4 1 2 0 3) -> (0 1 2 3 4)
(4 1 2 3 0) -> (0 1 2 3 4)
(4 1 3 0 2) -> (0 1 2 3 4)
(4 1 3 2 0) -> (0 1 2 3 4)
(4 2 0 1 3) -> (0 1 2 3 4)
(4 2 0 3 1) -> (0 1 2 3 4)
(4 2 1 0 3) -> (0 1 2 3 4)
(4 2 1 3 0) -> (0 1 2 3 4)
(4 2 3 0 1) -> (0 1 2 3 4)
(4 2 3 1 0) -> (0 1 2 3 4)
(4 3 0 1 2) -> (0 1 2 3 4)
(4 3 0 2 1) -> (0 1 2 3 4)
(4 3 1 0 2) -> (0 1 2 3 4)
(4 3 1 2 0) -> (0 1 2 3 4)
(4 3 2 0 1) -> (0 1 2 3 4)
(4 3 2 1 0) -> (0 1 2 3 4)