fork(1) download
  1. import java.io.*;
  2. import java.util.*;
  3.  
  4. class Ideone {
  5. public static PrintWriter out;
  6. public static void main(String[] args) {
  7.  
  8. List<List<Short>> boards = genBoardsOfLength(2);
  9.  
  10. out.println(boards.size());
  11. out.println(boardListToString(boards));
  12.  
  13. out.close();
  14. }
  15.  
  16. public static String boardListToString(List<List<Short>> boards) {
  17. StringJoiner ret = new StringJoiner("\n");
  18. for (List<Short> board : boards) {
  19. StringJoiner sj = new StringJoiner("\n");
  20. for (short line : board)
  21. sj.add(lineToString(line));
  22. ret.add(sj.toString() + "\n");
  23. }
  24. return ret.toString();
  25. }
  26.  
  27. public static boolean conflicts(List<Short> board, short line) {
  28. if (board == null || board.size() == 0)
  29. return false;
  30.  
  31. short lastRow = board.get(board.size() - 1);
  32. if (hasJumps(lastRow) && hasJumps(line))
  33. return true;
  34.  
  35. return false;
  36. }
  37.  
  38. public static boolean hasJumps(short line) {
  39. return Integer.bitCount(line) > 1;
  40. }
  41.  
  42. public static List<List<Short>> genBoardsOfLength(int n) {
  43. List<List<Short>> ret = new ArrayList<>();
  44. if (n == 0) {
  45. return ret;
  46. } else if (n == 1) {
  47. for (short line: genRows()) {
  48. List<Short> board = new ArrayList<Short>();
  49. board.add(line);
  50. ret.add(board);
  51. }
  52. return ret;
  53. } else {
  54. List<List<Short>> prevBoards = genBoardsOfLength(n - 1);
  55. for (List<Short> board : prevBoards) {
  56. for (short line : genRows()) {
  57. if (conflicts(board, line))
  58. continue;
  59. List<Short> newBoard = new ArrayList<Short>(board);
  60. newBoard.add(line);
  61. ret.add(newBoard);
  62. }
  63. }
  64. }
  65. return ret;
  66. }
  67.  
  68.  
  69. public static String lineToString(short line) {
  70. StringBuilder sb = new StringBuilder();
  71. int count = Integer.bitCount(line);
  72. sb.append((line & 1) > 0 ? '<' : '.');
  73. sb.append((line & 2) > 0 ? '^' : '.');
  74. sb.append((line & 4) > 0 ? 'v' : '.');
  75. sb.append((line & 8) > 0 ? '>' : '.');
  76. return sb.toString();
  77. }
  78.  
  79. public static List<Short> genRows() {
  80. List<Short> ret = new ArrayList<>();
  81. for (short i = 0; i < (short)Math.pow(2, 4); i++) {
  82. if (Integer.bitCount(i) <= 2)
  83. ret.add(i);
  84. }
  85. return ret;
  86. }
  87.  
  88.  
  89. static class MyScanner {
  90.  
  91. public MyScanner() {
  92. }
  93.  
  94. public boolean hasNext() {
  95. try {
  96. boolean a = br.ready();
  97. return a;
  98. } catch (IOException e) {
  99. return false;
  100. }
  101. }
  102.  
  103. public String next() {
  104. while (st == null || !st.hasMoreElements()) {
  105. try {
  106. st = new StringTokenizer(br.readLine());
  107. } catch (IOException e) {
  108. e.printStackTrace();
  109. }
  110. }
  111. return st.nextToken();
  112. }
  113.  
  114. public int nextInt() {
  115. return Integer.parseInt(next());
  116. }
  117.  
  118. public long nextLong() {
  119. return Long.parseLong(next());
  120. }
  121.  
  122. public double nextDouble() {
  123. return Double.parseDouble(next());
  124. }
  125.  
  126. public char nextChar() {
  127. return next().charAt(0);
  128. }
  129.  
  130. public String nextLine() {
  131. String str = "";
  132. try {
  133. str = br.readLine();
  134. } catch (IOException e) {
  135. e.printStackTrace();
  136. }
  137. return str;
  138. }
  139. }
  140. }
  141.  
Success #stdin #stdout 0.04s 711168KB
stdin
Standard input is empty
stdout
85
....
....

....
<...

....
.^..

....
<^..

....
..v.

....
<.v.

....
.^v.

....
...>

....
<..>

....
.^.>

....
..v>

<...
....

<...
<...

<...
.^..

<...
<^..

<...
..v.

<...
<.v.

<...
.^v.

<...
...>

<...
<..>

<...
.^.>

<...
..v>

.^..
....

.^..
<...

.^..
.^..

.^..
<^..

.^..
..v.

.^..
<.v.

.^..
.^v.

.^..
...>

.^..
<..>

.^..
.^.>

.^..
..v>

<^..
....

<^..
<...

<^..
.^..

<^..
..v.

<^..
...>

..v.
....

..v.
<...

..v.
.^..

..v.
<^..

..v.
..v.

..v.
<.v.

..v.
.^v.

..v.
...>

..v.
<..>

..v.
.^.>

..v.
..v>

<.v.
....

<.v.
<...

<.v.
.^..

<.v.
..v.

<.v.
...>

.^v.
....

.^v.
<...

.^v.
.^..

.^v.
..v.

.^v.
...>

...>
....

...>
<...

...>
.^..

...>
<^..

...>
..v.

...>
<.v.

...>
.^v.

...>
...>

...>
<..>

...>
.^.>

...>
..v>

<..>
....

<..>
<...

<..>
.^..

<..>
..v.

<..>
...>

.^.>
....

.^.>
<...

.^.>
.^..

.^.>
..v.

.^.>
...>

..v>
....

..v>
<...

..v>
.^..

..v>
..v.

..v>
...>