fork(1) download
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Generic;
  4.  
  5. public class Test
  6. {
  7. public static void Main()
  8. {
  9. for (int i = 1 ; i != 16 ; i++) {
  10. Cycle(Enumerable.Range(1, 2*i).ToArray());
  11. }
  12. }
  13. static void Cycle(int[] data) {
  14. int n = data.Length / 2;
  15. int p = 0;
  16. var seen = new bool[n];
  17. while (true) {
  18. int last = data[p];
  19. do {
  20. var tmp = data[p];
  21. data[p] = last;
  22. last = tmp;
  23. if (p < n) {
  24. seen[p] = true;
  25. }
  26. p = (p/2) + (p%2 == 0 ? n : 0);
  27. } while (p >= n || !seen[p]);
  28. data[p] = last;
  29. while (p != n && seen[p]) {
  30. p++;
  31. }
  32. if (p == n) {
  33. break;
  34. }
  35. }
  36. Console.WriteLine(string.Join(" ", data));
  37. }
  38. }
Success #stdin #stdout 0.03s 15988KB
stdin
Standard input is empty
stdout
2 1
2 4 1 3
2 4 6 1 3 5
2 4 6 8 1 3 5 7
2 4 6 8 10 1 3 5 7 9
2 4 6 8 10 12 1 3 5 7 9 11
2 4 6 8 10 12 14 1 3 5 7 9 11 13
2 4 6 8 10 12 14 16 1 3 5 7 9 11 13 15
2 4 6 8 10 12 14 16 18 1 3 5 7 9 11 13 15 17
2 4 6 8 10 12 14 16 18 20 1 3 5 7 9 11 13 15 17 19
2 4 6 8 10 12 14 16 18 20 22 1 3 5 7 9 11 13 15 17 19 21
2 4 6 8 10 12 14 16 18 20 22 24 1 3 5 7 9 11 13 15 17 19 21 23
2 4 6 8 10 12 14 16 18 20 22 24 26 1 3 5 7 9 11 13 15 17 19 21 23 25
2 4 6 8 10 12 14 16 18 20 22 24 26 28 1 3 5 7 9 11 13 15 17 19 21 23 25 27
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29