ASCII 아트로 긴 나눗셈을 시각화하는 프로그램을 작성하십시오. 입력은 선택한 입력 형식을 사용하여 분자와 분모의 두 정수로 구성됩니다.
예 :
1234 ÷ 56 :
22
----
56|1234
112
---
114
112
---
2
1002012 ÷ 12 :
83501
-------
12|1002012
96
---
42
36
--
60
60
--
12
12
--
0 ÷ 35
0
-
35|0
규칙 :
- 프로그래밍 언어의 나누기 연산자 를 사용할 수 있습니다.
- 큰 정수 지원도 허용됩니다.
- 일관성을 위해 :
- 몫이 0이면 다이빙 보드의 끝에 단일 0을 인쇄하십시오.
- 나머지가 0이면 인쇄하지 마십시오.
- 숫자에 선행 0을 인쇄하지 마십시오.
- 오른쪽 끝에 과다한 줄 바꿈과 후행 공백이 허용됩니다.
- 문자 수가 가장 적은 솔루션이 승리합니다.
제한:
- 0 <= 분자 <= 10 72 - 1
- 1 <= 분모 <= 9999999
이는 출력이 80 열보다 넓지 않음을 의미합니다.
테스트 스위트 및 샘플 구현 :
당신이 사용할 수있는 긴 division.c ( 요지를 프로그램을 테스트하기 위해). 실제로 C 프로그램이있는 bash 스크립트입니다. 테스트 스위트에서 프로그램을 호출하도록 조정하십시오. 참조 구현을 보려면 맨 아래에있는 C 코드를보십시오. 샘플 프로그램 또는 테스트 스위트에 문제가 있으면 알려주십시오.
$ ./long-division.c 10 7
1
--
7|10
7
--
3
$ ./long-division.c
PASS 1234 ÷ 56
PASS 1002012 ÷ 12
PASS 1 ÷ 1
--- snip ---
Score: 35 / 35
All tests passed!
편집 : 요청에 따라 테스트 스위트 입력 및 예상 출력 을 텍스트 파일 ( gist )에 넣습니다 . 샘플 사용량 (bash) :
cat input | while read nd; do
./program $nd |
sed 's/\s*$//' | sed -e :a -e '/^\n*$/{$d;N;};/\n$/ba'
done > output
diff -u expected output
이상한 sed 명령은 프로그램 출력에서 후행 줄 바꿈과 공백을 필터링합니다.