계산하지 않고 두 개의 정수에 대해 긴 곱셈을 수행하는 좋은 방법이 있습니다. 가끔씩 인터넷에서 공유됩니다. 각 숫자의 자릿수를 기울어 진 선으로 기록하고 두 숫자는 90도 각도로 씁니다. 그런 다음 발생하는 별도의 열에서 교집합을 간단히 계산할 수 있습니다. 다이어그램은 아마도 이것을 분명히 할 것입니다. 다음은 계산 예입니다21 * 32
.
"비주얼 / 그래픽 긴 곱셈"에 대해 Google을 사용하는 경우 더 많은 예를 찾을 수 있습니다.
이 과제에서는 ASCII 아트를 사용하여 이러한 다이어그램을 생성해야합니다. 동일한 예에서 출력은 다음과 같습니다.
\ /
X /
\ / X /
\ X / X
X X / \ /
/ X X X /
/ X \ / X
/ \ X / \
X X
/ X \
/ \
일부 예제에서 아래의 구성 규칙을 알아내는 것이 가장 쉬운 방법이지만 (아래 참조) 여기에 몇 가지 세부 정보가 있습니다.
- 교차 세그먼트는
X
선의 교차하지 않는 세그먼트는/
또는\
입니다. - 가장 바깥 쪽 교차점 다음에 정확히 하나의 세그먼트가 있어야합니다.
- 서로 다른 숫자에 속하는 교차점 사이에는 정확히 하나의 세그먼트가 있어야합니다. 숫자가 0이면 연속
/
또는\
세그먼트가됩니다. - 양수 입력 (적어도 2 16 또는 2 32 와 같은 합리적인 한도까지 )과에서
0
까지의 숫자를 지원 해야9
합니다. 그러나 선행 또는 후행이 없다고 가정 할 수 있습니다.0
. - 불필요한 선행 공백 또는 선행 또는 후행 빈 줄을 인쇄해서는 안됩니다.
- 후행 공백을 인쇄 할 수 있지만 다이어그램의 축 정렬 경계 상자를 초과해서는 안됩니다.
- 선택적으로 단일 후행 줄 바꿈을 인쇄 할 수 있습니다.
- 두 개의 입력 번호를받는 순서를 선택할 수 있습니다. 그러나 어느 방향 으로든 임의의 숫자를 지원해야하므로 "큰 숫자가 먼저 주어짐"과 같은 것을 선택할 수 없습니다.
- 문자열로 입력하는 경우 두 숫자 사이에 숫자가 아닌 구분 기호를 사용할 수 있습니다.
STDIN (또는 가장 가까운 대안), 명령 행 인수 또는 함수 인수를 통해 입력을 받고 STDOUT (또는 가장 가까운 대안), 함수 리턴 값 또는 함수 (out) 매개 변수를 통해 결과를 출력하는 프로그램 또는 함수를 작성할 수 있습니다.
이것은 코드 골프이며, 가장 짧은 대답 (바이트)이 이깁니다.
예
1*1
\ /
X
/ \
2*61
\ /
\ X /
X X /
/ X X /
/ X X /
/ X X /
/ X X
/ X \ /
/ \ X
X \
/ \
45*1
\ /
\ X
\ X \
\ X \
\ X \
X \
\ / \
\ X
\ X \
\ X \
X \
/ \
21001*209
\ /
X /
/ X
/ / \
\ / / \ /
X / X /
\ / X / X /
\ X / \ / / X /
X X \ / / / X /
/ X \ X / / / X /
/ \ \ / X / / / X /
\ X / X / / / X /
X X / X / / / X /
/ X X / X / / / X
/ X X / X / / / \
/ X X / X / /
/ X X / X /
/ X X / X
/ X X / \
/ X X
/ X \
/ \