fork(1) download
  1. #include <stdio.h>
  2. #include <inttypes.h>
  3. #include <string.h>
  4.  
  5. void uintprint4(uint32_t *a)
  6. {
  7. printf("%u %u %u %u\n", a[0], a[1], a[2], a[3]);
  8. }
  9.  
  10. typedef union {
  11. uint8_t integral;
  12. struct {unsigned char a3: 2, a2: 2, a1: 2, a0: 2;} at;
  13. } indices;
  14.  
  15. void sort4(uint32_t a[static 4])
  16. {
  17. uint8_t bits = ((a[0] <= a[1]) ) | ((a[1] <= a[2]) << 1) | ((a[2] <= a[3]) << 2)
  18. | ((a[0] <= a[2]) << 3) | ((a[1] <= a[3]) << 4) | ((a[0] <= a[3]) << 5);
  19. static const char b2[] = "LKH><;@ABCFBORMAND(-4-$-)&&&&&&&///////\x12\x12\x13\x12\x12\x0f\x0f\x0f\x0f\x0f-1-1-!!!!\x1a\n\x19\r\x19\t";
  20. indices index = {b2[bits]*3};
  21. uint32_t out[4] = {a[index.at.a0], a[index.at.a1], a[index.at.a2], a[index.at.a3]};
  22. memcpy(a, out, 4*sizeof(uint32_t));
  23. }
  24.  
  25. int main(void)
  26. {
  27. uint32_t a[] = {0, 1, 2, 3};
  28. uint32_t b[] = {0, 1, 3, 2};
  29. uint32_t c[] = {0, 2, 1, 3};
  30. uint32_t d[] = {0, 2, 3, 1};
  31. uint32_t e[] = {0, 3, 1, 2};
  32. uint32_t f[] = {0, 3, 2, 1};
  33. uint32_t g[] = {1, 0, 2, 3};
  34. uint32_t h[] = {1, 0, 3, 2};
  35. uint32_t i[] = {1, 2, 0, 3};
  36. uint32_t j[] = {1, 2, 3, 0};
  37. uint32_t k[] = {1, 3, 0, 2};
  38. uint32_t l[] = {1, 3, 2, 0};
  39. uint32_t m[] = {2, 0, 1, 3};
  40. uint32_t n[] = {2, 0, 3, 1};
  41. uint32_t o[] = {2, 1, 0, 3};
  42. uint32_t p[] = {2, 1, 3, 0};
  43. uint32_t q[] = {2, 3, 0, 1};
  44. uint32_t r[] = {2, 3, 1, 0};
  45. uint32_t s[] = {3, 0, 1, 2};
  46. uint32_t t[] = {3, 0, 2, 1};
  47. uint32_t u[] = {3, 1, 0, 2};
  48. uint32_t v[] = {3, 1, 2, 0};
  49. uint32_t w[] = {3, 2, 0, 1};
  50. uint32_t x[] = {3, 2, 1, 0};
  51.  
  52. sort4(a); sort4(b); sort4(c); sort4(d); sort4(e); sort4(f);
  53. sort4(g); sort4(h); sort4(i); sort4(j); sort4(k); sort4(l);
  54. sort4(m); sort4(n); sort4(o); sort4(p); sort4(q); sort4(r);
  55. sort4(s); sort4(t); sort4(u); sort4(v); sort4(w); sort4(x);
  56.  
  57. uintprint4(a); uintprint4(b); uintprint4(c); uintprint4(d); uintprint4(e); uintprint4(f);
  58. uintprint4(g); uintprint4(h); uintprint4(i); uintprint4(j); uintprint4(k); uintprint4(l);
  59. uintprint4(m); uintprint4(n); uintprint4(o); uintprint4(p); uintprint4(q); uintprint4(r);
  60. uintprint4(s); uintprint4(t); uintprint4(u); uintprint4(v); uintprint4(w); uintprint4(x);
  61. return 0;
  62. }
  63.  
Success #stdin #stdout 0s 9432KB
stdin
Standard input is empty
stdout
0 1 2 3
0 1 2 3
0 1 2 3
0 1 2 3
0 1 2 3
0 1 2 3
0 1 2 3
0 1 2 3
0 1 2 3
0 1 2 3
0 1 2 3
0 1 2 3
0 1 2 3
0 1 2 3
0 1 2 3
0 1 2 3
0 1 2 3
0 1 2 3
0 1 2 3
0 1 2 3
0 1 2 3
0 1 2 3
0 1 2 3
0 1 2 3