이 질문은이 영감 대답 . 우연히도, 나는 어렸을 때 이디오피아 곱셈을 사용했지만 최근까지 방법의 이름을 알지 못했습니다.
에티오피아 곱셈은 더하기, 배가, 반만 사용하여 정수를 곱하는 방법입니다.
방법:
- 두 숫자를 곱하고 두 열의 맨 위에 적습니다.
- 왼쪽 열에서 마지막 숫자의 반을 반복하여 나머지를 버리고 값을 1로 쓸 때까지 같은 열의 마지막 아래에 결과를 씁니다.
- 오른쪽 열에 마지막 숫자를 두 번 반복하여 아래에 결과를 쓰십시오. 왼쪽 열에 1이 표시되는 것과 같은 행에 결과를 추가하면 중지됩니다.
- 생성 된 테이블을 검사하고 왼쪽 열의 값이 고른 행을 삭제하십시오. 원래 두 숫자를 곱한 결과를 생성하기 위해 남아있는 오른쪽 열의 값을 합산하십시오.
예를 들어 : 17 x 34
17 34
첫 번째 열을 반반 씩 :
17 34
8
4
2
1
두 번째 열을 두 배로 :
17 34
8 68
4 136
2 272
1 544
첫 번째 셀이 짝수 인 줄 바꿈 행을 오른쪽에 대괄호로 묶어이 작업을 수행합니다.
17 34
8 [68]
4 [136]
2 [272]
1 544
오른쪽 열의 나머지 숫자를 합산하십시오.
17 34
8 [68]
4 [136]
2 [272]
1 544
=====
578
17에 34를 곱한 값에는 에티오피아 방법이 578입니다.
작업:
1에서 1000 사이의 두 숫자를 사용하고 동일한 레이아웃과 알고리즘을 수행하여 아래 제품을 표시하는 골프 코드.
입력 방법 : 그러나 당신은 선택 ...
입력 예 :
19 427
결과 출력 :
19 427
9 854
4 [1708]
2 [3416]
1 6832
======
8113
숫자의 정렬에 유의하십시오. 이것은 레이아웃에서 가장 중요합니다. 또한 등호로 표시된 이중선은 전체 답보다 2 자 이상 길어야하며 가운데 정렬되어야합니다.
테스팅
이것을 어떻게 테스트 할 것입니까? 두 개의 숫자를 사용하여 프로그램을 제공합니다. 이 번호는 사용자 ID 번호에서 추출 할 수 있습니다 (이는 상단 창의 아바타 위로 커서를 가져 가면 얻을 수 있습니다). 숫자를 취하고 마지막 세 자리를 취하십시오.이 숫자는 B입니다. 앞에 남아있는 것을 취하십시오. 숫자는 A입니다. 그런 다음 A 곱하기 B를 테스트하십시오.
테스트 예 :
내 사용자 ID 번호는 8555이므로 내 번호는 8과 555입니다. 따라서 내 출력은 다음과 같아야합니다.
8 [555]
4 [1110]
2 [2220]
1 4440
======
4440
제한 사항 :
알고리즘에 언급 된대로 "곱셈"을 사용할 경우 기본 곱셈 연산자를 사용할 수 없습니다. 즉, *와 같은 연산자를 사용하는 경우 2 만 곱하는 데만 사용할 수 있습니다.
이를 준수하지 않는 항목은 고려되지 않으며 사용자는 소지품으로 가득 찬 골판지 상자로 구내에서 에스코트됩니다. 각 항목에는 코드와 사용자 ID 번호에 따른 테스트가 있습니다.
이것은 코드 골프입니다. 가장 짧은 바이트 수는 동료의 상, 영광 및 존경을받을 것입니다 ... (그리고 아마도 람보르기니 ... 나는 "아마도"라고 말했다!)
*
또는x
),하지만 곱셈을 사용하거나하지 않을 경우 탐지하는 것은 불가능합니다. 그 부분을 제외하고는 도전이 흥미 롭습니다.