카운터가 있습니다. 다음과 같은 작은 장치입니다.
디스플레이가에서 0000
로 바뀝니다 9999
. 상단에 작은 푸시 버튼이있어 카운트가 1 씩 증가하고 오른쪽에 작은 노브가있어 카운터를 다시 0으로 재설정하는 것이 목적입니다.
이제 작은 손잡이의 특징은 뒤로 돌리면 다시 앞으로 돌리면 원하는 숫자를 늘릴 수 있다는 것입니다. 따라서 카운터 버튼이 10 번 눌러 카운터가 표시 0010
되면 작은 딸깍 소리가 들릴 때까지 노브를 뒤로 돌린 다음 다시 앞으로 돌리면 바로 가십시오 0090
.
그러나 노브는 숫자를 앞으로 밀 때마다 항상 같은 숫자의 모든 발생을 1 씩 증가시킵니다. 그래서 카운터 표시되면 6060
, 당신은 단지이 증가 할 수 있습니다 7070
하지 않도록, 6070
또는 7060
. 또한, 손잡이가 출시됩니다 9
에의를 통해 0
, 수행하지 않고 지금 0990
에 진출하게됩니다 0000
대신 1000
나 1100
.
카운터를 특정 숫자로 설정하는 가장 효율적인 방법을 알고 싶습니다. 당신의 임무는 그렇게하는 데 필요한 가장 짧은 버튼 누름과 노브 전진을 결정하는 프로그램이나 기능을 작성하는 것입니다.
귀하의 프로그램에서 입력으로 4 자리 숫자를 취할 것 0000
으로 9999
, 다음과 같은 형식의 일련의 단계를 반환 :
> 0001
C
> 0093
C12345678C12345678CCC
> 1000
C12345678C12345678C12345678C12345678C12345678C12345678C12345678C
> 9999
012345678
어디 C
를 의미하고 숫자 "카운터 버튼을 눌러" D
"의 모든 발생을 사전에 노브를 사용하여 0 ~ 9 스탠드에서 D
1"을.
프로그램은 가능한 모든 4 자리 숫자 조합에 대해 유효한 단계 시퀀스를 생성해야하며 10,000 개의 모든 사례에 필요한 총 단계 수로 점수가 매겨집니다. 동점 인 경우 (최적의 알고리즘을 찾은 경우) 짧은 코드가 승리합니다.
0010
으로0020
그 경우에? 아니면 손잡이 만 뒤로 돌릴 수 있습니까? 또한 각 "D"는 노브의 "D"전진 횟수로 계산1234567
됩니까 (예 : 노브를 1 회, 2 회, 3 회 등으로 돌리는 것을 의미합니까)? 아니면 각각의 개별 노브 회전을1234567
의미 합니까 (예를 들어, 노브를 7 번 돌리는 것을 의미합니까?)