우리 대부분은 터미널에서 SQL 결과를 보았을 것입니다. 모두 행과 열로 깔끔하게 형식화되었습니다. 그렇지 않은 경우 예를 들면 다음과 같습니다.
+----------+-----------+----------------+
| column 1 | column 2 | column 3 |
+----------+-----------+----------------+
| data | more data | even more data |
| etc | just goes | on and on |
+----------+-----------+----------------+
이 과제의 목표는 테이블의 열과 행 데이터가 주어지면이 스타일로 테이블을 그립니다. 표의 상단과 하단에 수평선이 있어야하고 머리글 행 바로 아래에 수평선이 있어야합니다. 모든 열과 테이블의 양쪽에 하나의 세로선이 있어야합니다. 세로선에는 파이프, 가로선에는 하이픈 및 교차하는 곳에 플러스를 사용해야합니다.
사양 :
- 데이터는 stdin을 통해 또는 함수의 인수로 입력 할 수 있지만 문자열 형식이어야합니다.
- 문자열 구분 기호로 데이터를 분할해야합니다
;
- 데이터는 ASCII 문자로만 구성되며 따옴표로 묶지 않으며 구분 기호를 포함하지 않습니다.
- 데이터의 첫 번째 행은 열 머리글에 사용됩니다
- 데이터는 항상 같은 수의 열을 갖습니다
- 입력에는 항상 최소한 두 개의 행 (하나의 헤더, 하나의 데이터)이 포함됩니다. 빈 세트를 처리 할 필요가 없습니다.
- 후행 또는 선행 개행이 허용됩니다.
- 각 열은 가장 넓은 요소만큼 넓어야하며 오른쪽에 더 짧은 요소를 채 웁니다 (왼쪽에 숫자를 채울 경우 -5 %)
- 열이 더 넓은 경우를 제외하고 머리글과 데이터 앞뒤에 1 개의 패딩 공간이 있어야합니다.
- 실제
mysql
프로그램을 사용하여 테이블을 생성 할 수 없습니다. - 표준 허점 적용
샘플 입력 :
column 1;column 2;column 3
hello;world;test
longer data;foo;bar
산출
+-------------+----------+----------+
| column 1 | column 2 | column 3 |
+-------------+----------+----------+
| hello | world | test |
| longer data | foo | bar |
+-------------+----------+----------+
채점 :
물론 가장 적은 바이트 수가 이깁니다. 왼쪽의 패딩 숫자에 대해 -5 % 보너스 (세부 사항 참조).
프로그램 런타임에 시간 제한이 있습니까?
—
Downgoat
아니; 실제로 끝나는 한 원하는 시간을 가져야합니다.
—
Glenn Smith
입력 행이 하나 뿐인 경우 출력은 어떻게됩니까?
—
Zgarb
항상 최소한 두 개의 입력 행이 있다고 가정 할 수 있습니다. MySQL은 빈 세트에 대한 테이블도 표시하지 않습니다. 당신도 할 필요가 없습니다.
—
Glenn Smith