유클리드 알고리즘은 두 양의 정수의 최대 공약수 (GCD)를 계산하기 위해 널리 알려진 알고리즘입니다.
알고리즘
이 과제를 위해 알고리즘은 다음과 같이 설명됩니다.
특정 문자의 인접 라인으로 두 개의 입력 디스플레이
의 입력 예3,4
인접하는 선에 의해 표현 될 수000
및0000
첫 돌려
length(short_line)
다른 문자로 긴 줄에 문자를 말하는-
그 모습 지금000
과---0
length(short_line)
긴 줄에서 첫 문자를 제거하십시오 .
지금000
,0
두 단계를 반복하여도 2 및도 3은 각각의 반복 후에는 짧고 긴 선을 이용하여, 동일한 길이를 갖도록, 예를 들어
000
,0
-00
,0
00
,0
-0
,0
0
,0
- 여기서 중지 할 것인지 반복을 계속할 것인지를 선택하고 한 줄을 빈 줄로 바꿀 수 있습니다.
이러한 각 단계는 0.3과 1.5 사이의 간격으로 분리해야합니다.
도전
두 개의 자연수를 입력으로하여 위 알고리즘의 출력과 정확히 동일한 출력을 생성하는 프로그램을 작성하십시오. 공백 이외의 인쇄 할 수없는 ASCII 문자는 0
및 이외의 문자를 사용할 수 -
있지만 일관되며 두 문자 만 사용할 수 있습니다. 타이밍을 포함하여 출력이 위 알고리즘에서 생성 된 것과 정확히 동일하다면 대체 알고리즘을 사용할 수도 있습니다.
예
이것은 input을 가진 예제이며 24,35
, coprimes이므로 GCD는 1입니다.
이것은 input과 함께 16,42
GCD 2를 가진 예제입니다 .
규칙
설명
- 숫자를 나타내는 선은 원래 순서대로 유지되어야합니다. 즉, 첫 번째로 표시되는 "프레임"의 첫 번째와 두 번째 줄은 이후의 모든 프레임에서 첫 번째와 두 번째 줄이어야합니다.
- 알고리즘이 종료 된 후에는 추가로 보이는 엔티티가 나타나지 않습니다. 그러나 이는 마지막 "프레임"이 블랭킹하기 전에 다른 모든 프레임과 동일한 시간 동안 표시되도록하는 경우에는 라인을 비워도됩니다.
:-)