fork(1) download
  1. import java.util.Arrays;
  2.  
  3. class Graph26 {
  4. private static final int A = 0;
  5. private static final int B = 1;
  6. private static final int C = 2;
  7. private static final int D = 3;
  8. private static final int E = 4;
  9. private static final int F = 5;
  10. private static final int G = 6;
  11.  
  12. private final static boolean rule1(final int[] n) {
  13. return n[A] != 2;
  14. }
  15.  
  16. private final static boolean rule2(final int[] n) {
  17. return n[A] + n[B] == n[F];
  18. }
  19.  
  20. private final static boolean rule3(final int[] n) {
  21. return n[C] - n[D] == n[G];
  22. }
  23.  
  24. private final static boolean rule4(final int[] n) {
  25. return n[D] + n[E] == 2*n[F];
  26. }
  27.  
  28. private final static boolean rule5(final int[] n) {
  29. return n[E] + n[G] == n[F];
  30. }
  31.  
  32.  
  33. private final static boolean isValid(final int[] nodes) {
  34. return rule1(nodes) && rule2(nodes) && rule3(nodes) && rule4(nodes)
  35. && rule5(nodes);
  36. }
  37.  
  38. class Permutation {
  39. private final int[] o;
  40. private boolean perms = true;
  41.  
  42. public boolean hasPerms() {
  43. return perms;
  44. }
  45.  
  46. Permutation(final int[] obj) {
  47. o = obj.clone();
  48. }
  49.  
  50. private int[] nextPerm() {
  51. int temp;
  52. int j = o.length - 2;
  53. while (o[j] > o[j + 1]) {
  54. j--;
  55. if (j < 0) {
  56. perms = false;
  57. break;
  58. }
  59. }
  60. if (perms) {
  61. int k = o.length - 1;
  62. while (o[j] > o[k]) {
  63. k--;
  64. }
  65. temp = o[k];
  66. o[k] = o[j];
  67. o[j] = temp;
  68. int r = o.length - 1;
  69. int s = j + 1;
  70. while (r > s) {
  71. temp = o[s];
  72. o[s] = o[r];
  73. o[r] = temp;
  74. r--;
  75. s++;
  76. }
  77. }
  78. return o.clone();
  79. }
  80. }
  81.  
  82. public static void main(final String[] args) {
  83. int[] nodes = new int[] { 1, 2, 3, 4, 5, 6, 7};
  84. final Graph26 graph = new Graph26();
  85. final Permutation p = graph.new Permutation(nodes);
  86. int i = 0;
  87. while (p.hasPerms()) {
  88. if (isValid(nodes)) {
  89. System.out.println(Arrays.toString(nodes));
  90. }
  91. i++;
  92. nodes = p.nextPerm();
  93. }
  94. System.out.println(i);
  95. }
  96. }
  97.  
Success #stdin #stdout 0.04s 213440KB
stdin
Standard input is empty
stdout
[3, 2, 7, 6, 4, 5, 1]
5040