fork download
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.Scanner;
  4.  
  5. /*
  6. プログラミングのお題スレ Part13
  7. //mevius.5ch.net/test/read.cgi/tech/1549160513/441
  8.  
  9. 441 名前:デフォルトの名無しさん[sage] 投稿日:2019/02/28(木) 21:58:37.50 ID:dSln4xk/
  10. お題
  11. 四角形の羅列を、'#'と'.'を使った表現から罫線を使った表現に変換せよ
  12.  
  13. (例)等幅フォントで見てください
  14. #
  15. ┌┬┐
  16. ├┼┤
  17. └┴┘
  18.  
  19. #..###.####.
  20. ..#.....##.#
  21. #.#....#.#.#
  22. ....#.#...#.
  23. ┌┬┐   ┌┬┬┬┬┬┐ ┌┬┬┬┬┬┬┬┐  
  24. ├┼┤   ├┼┼┼┼┼┤ ├┼┼┼┼┼┼┼┤  
  25. └┴┘ ┌┬┼┴┴┴┴┴┘ └┴┼┼┼┼┼┴┼┬┐
  26.     ├┼┤         ├┼┼┼┤ ├┼┤
  27. ┌┬┐ ├┼┤       ┌┬┼┴┼┼┤ ├┼┤
  28. ├┼┤ ├┼┤       ├┼┤ ├┼┤ ├┼┤
  29. └┴┘ └┴┘ ┌┬┐ ┌┬┼┴┘ └┴┼┬┼┴┘
  30.         ├┼┤ ├┼┤     ├┼┤  
  31.         └┴┘ └┴┘     └┴┘  
  32.  */
  33. class Ideone
  34. {
  35. public static void main(String[] args)
  36. {
  37. try (Scanner in = new Scanner(System.in))
  38. {
  39. ArrayList<String> list = new ArrayList<>();
  40. while (in.hasNextLine())
  41. {
  42. String line = in.nextLine();
  43. if (line.equals(""))
  44. {
  45. show(list);
  46. list.clear();
  47. continue;
  48. }
  49. list.add(line);
  50. }
  51. }
  52. }
  53.  
  54. static String STR = " ××└×│┌├×┘─┴┐┤┬┼";
  55. static void show(List<String> input)
  56. {
  57. if (input.isEmpty()) return;
  58. int w = input.get(0).length();
  59. int h = input.size();
  60. for (int i = 1; i < h; i++)
  61. if (input.get(i).length() != w) throw new IllegalArgumentException();
  62.  
  63. int[][] data = new int[h * 2 + 1][w * 2 + 1];
  64. for(int y = 0; y < h; y++)
  65. {
  66. for(int x = 0; x < w; x++)
  67. {
  68. if (input.get(y).charAt(x) == '#')
  69. {
  70. int px = x * 2;
  71. int py = y * 2;
  72. data[py + 0][px + 0] |= 6;
  73. data[py + 0][px + 1] |= 14;
  74. data[py + 0][px + 2] |= 12;
  75. data[py + 1][px + 0] |= 7;
  76. data[py + 1][px + 1] |= 15;
  77. data[py + 1][px + 2] |= 13;
  78. data[py + 2][px + 0] |= 3;
  79. data[py + 2][px + 1] |= 11;
  80. data[py + 2][px + 2] |= 9;
  81. }
  82. }
  83. }
  84.  
  85. StringBuilder sb = new StringBuilder();
  86. for (int y = 0; y < data.length; y++)
  87. {
  88. for (int x = 0; x < data[y].length; x++)
  89. sb.append(STR.charAt(data[y][x]));
  90. sb.append(System.lineSeparator());
  91. }
  92. sb.append("----------------------------------------");
  93. System.out.println(sb);
  94. }
  95. }
  96.  
Success #stdin #stdout 0.07s 2184192KB
stdin
#

.#

.
#

#..###.####.
..#.....##.#
#.#....#.#.#
....#.#...#.

....#.....####..#....#..
.#..#.......#...#.###.#.
.#.###.....#....#...##..
.##.#.#...####..#.#####.
#.##..#..#....#.#...#...
#.#..##...##..#.#.####..
.#.#.##...####..#.###.#.

stdout
┌┬┐
├┼┤
└┴┘
----------------------------------------
  ┌┬┐
  ├┼┤
  └┴┘
----------------------------------------
   
   
┌┬┐
├┼┤
└┴┘
----------------------------------------
┌┬┐   ┌┬┬┬┬┬┐ ┌┬┬┬┬┬┬┬┐  
├┼┤   ├┼┼┼┼┼┤ ├┼┼┼┼┼┼┼┤  
└┴┘ ┌┬┼┴┴┴┴┴┘ └┴┼┼┼┼┼┴┼┬┐
    ├┼┤         ├┼┼┼┤ ├┼┤
┌┬┐ ├┼┤       ┌┬┼┴┼┼┤ ├┼┤
├┼┤ ├┼┤       ├┼┤ ├┼┤ ├┼┤
└┴┘ └┴┘ ┌┬┐ ┌┬┼┴┘ └┴┼┬┼┴┘
        ├┼┤ ├┼┤     ├┼┤  
        └┴┘ └┴┘     └┴┘  
----------------------------------------
        ┌┬┐         ┌┬┬┬┬┬┬┬┐   ┌┬┐       ┌┬┐    
        ├┼┤         ├┼┼┼┼┼┼┼┤   ├┼┤       ├┼┤    
  ┌┬┐   ├┼┤         └┴┴┴┼┼┼┴┘   ├┼┤ ┌┬┬┬┬┬┼┴┼┬┐  
  ├┼┤   ├┼┤             ├┼┤     ├┼┤ ├┼┼┼┼┼┤ ├┼┤  
  ├┼┤ ┌┬┼┼┼┬┐         ┌┬┼┴┘     ├┼┤ └┴┴┴┼┼┼┬┼┴┘  
  ├┼┤ ├┼┼┼┼┼┤         ├┼┤       ├┼┤     ├┼┼┼┤    
  ├┼┼┬┼┴┼┼┼┴┼┬┐     ┌┬┼┼┼┬┬┬┐   ├┼┤ ┌┬┬┬┼┼┼┼┼┬┐  
  ├┼┼┼┤ ├┼┤ ├┼┤     ├┼┼┼┼┼┼┼┤   ├┼┤ ├┼┼┼┼┼┼┼┼┼┤  
┌┬┼┴┼┼┼┬┼┴┘ ├┼┤   ┌┬┼┴┴┴┴┴┴┴┼┬┐ ├┼┤ └┴┴┴┼┼┼┴┴┴┘  
├┼┤ ├┼┼┼┤   ├┼┤   ├┼┤       ├┼┤ ├┼┤     ├┼┤      
├┼┤ ├┼┼┴┘ ┌┬┼┼┤   └┴┼┬┬┬┐   ├┼┤ ├┼┤ ┌┬┬┬┼┼┼┬┐    
├┼┤ ├┼┤   ├┼┼┼┤     ├┼┼┼┤   ├┼┤ ├┼┤ ├┼┼┼┼┼┼┼┤    
└┴┼┬┼┴┼┬┐ ├┼┼┼┤     ├┼┼┼┼┬┬┬┼┴┘ ├┼┤ ├┼┼┼┼┼┼┴┼┬┐  
  ├┼┤ ├┼┤ ├┼┼┼┤     ├┼┼┼┼┼┼┼┤   ├┼┤ ├┼┼┼┼┼┤ ├┼┤  
  └┴┘ └┴┘ └┴┴┴┘     └┴┴┴┴┴┴┴┘   └┴┘ └┴┴┴┴┴┘ └┴┘  
----------------------------------------