소개
커닝 이란 텍스트 문자 사이의 간격을 조정하는 것을 의미합니다. 예를 들어, Top
다음 세 가지 글리프로 작성된 단어를 고려하십시오 .
##### ..... .....
..#.. ..... .....
..#.. ..##. .###.
..#.. .#..# .#..#
..#.. .#..# .#..#
..#.. ..##. .###.
..... ..... .#...
..... ..... .#...
글리프 사이의 틈을 점으로 채우고 완성 할 수는 있지만 틈이 너무 넓게 보입니다. 대신 글리프를 왼쪽으로 밀면 거의 닿습니다.
#####........
..#..........
..#..##..###.
..#.#..#.#..#
..#.#..#.#..#
..#..##..###.
.........#...
.........#...
이것은 훨씬 좋아 보인다! 의 막대 T
가의 왼쪽 테두리 위에 어떻게 표시되는지 확인하십시오 o
. 이 도전에서, 당신의 임무는 그러한 직사각형 글리프에 대한 간단한 커닝 프로그램을 구현하는 것입니다.
커닝 과정
두 사각형의 2 차원 문자 배열 고려 .
와 #
같은 모양을. 간단한 커닝 과정에서 먼저 배열을 나란히 놓고 .
s 열 하나 를 사이에 둡니다. 그런 다음 왼쪽과 오른쪽 배열 중 #
일부 #
가 직교 또는 대각선으로 인접 할 때까지 오른쪽 배열에서 각각 한 단계 씩 왼쪽 으로 이동합니다. 커닝의 결과는 인접한 s를 소개 하기 전 단계 #
입니다. 당신의 임무는이 프로세스를 구현하는 것입니다.
예를 들어 보자.
Inputs:
..###
#....
#....
..##.
...#.
...##
..###
....#
Process:
..###....#.
#........##
#.......###
..##......#
..###...#.
#.......##
#......###
..##.....#
..###..#.
#......##
#.....###
..##....#
..###.#.
#.....##
#....###
..##...#
..####.
#....##
#...###
..##..#
마지막 배열에는 인접한 새로운 쌍이 #
있으므로 두 번째에서 마지막 배열은 커닝 프로세스의 결과입니다.
입력과 출력
간단하게하기 위해 두 글리프의 커닝 만 처리하면됩니다 . 입력은 다음 형식 중 하나 인 두 개의 직사각형 2D 배열입니다.
- 0은
.
1,에 1 은 정수의 2D 배열입니다#
. - 의 여러 줄 문자열
.#
. - 의 문자열 배열
.#
. - 문자의 2D 배열
.#
.
입력을 단일 문자열로 가져 오는 경우 적절한 구분 기호를 사용할 수 있습니다. 그러나 구분 기호는 두 배열 사이에 있어야합니다. 즉, 이미 쌍을 이루고있는 두 입력을 사용할 수 없습니다.
출력은이 두 배열에 적용된 커닝 프로세스의 결과이며 입력과 동일한 형식의 직사각형 2D 배열입니다. .
s 의 선행 또는 후행 열을 추가하거나 제거 할 수 있지만 출력 은 직사각형 이어야 하며 입력과 높이가 동일 해야합니다 . 커닝 프로세스는 두 번째 입력의 왼쪽 가장자리가 첫 번째 입력의 왼쪽 가장자리 위로 미끄러지기 전에 끝나는 것이 보장됩니다.
규칙과 득점
각 프로그래밍 언어에서 가장 낮은 바이트 수가 이깁니다. 표준 코드 골프 규칙이 적용됩니다.
테스트 사례
복사 붙여 넣기를 돕기 위해 이러한 테스트 사례는 문자열 목록으로 제공됩니다.
["#"] ["#"] -> ["#.#"]
["#.","..",".#"] ["##","..","##"] -> ["#..##",".....",".#.##"]
["..#","#..","#.."] ["...","..#","###"] -> ["..#..","#...#","#.###"]
["###.","##..","#...","...."] ["....","...#","..#.",".#.."] -> ["###..","##..#","#..#.","..#.."]
["..##...","#......","#......"] [".....##",".....##",".#...#."] -> ["..##..##","#.....##","#.#...#."]
["...#.",".....",".....",".....","....#"] [".....","....#","#....",".....","....."] -> ["...#..",".....#",".#....","......","....#."]
["..#..",".....",".....",".....","....#"] [".....","....#","#....",".....","....."] -> ["..#..","....#","#....",".....","....#"]
["######","#.....","#.....","#.....","######"] ["......",".....#",".#...#",".....#","......"] -> ["######..","#......#","#..#...#","#......#","######.."]
["######","#.....","#.....","#.....","######"] ["......","......",".#....","......","......"] -> ["######","#.....","#.#...","#.....","######"]
["#...#","#..#.","#.#..","##...","#.#..","#..#.","#...#"] ["...#.","..#..",".#...",".#...",".#...","..#..","...#."] -> ["#...#..#","#..#..#.","#.#..#..","##...#..","#.#..#..","#..#..#.","#...#..#"]