Mancala 는 일반적으로 플레이어가 조작하는 구슬로 채워진 일련의 컵을 포함하는 보드 게임 제품군의 이름입니다. 이 도전은 게임의 솔리테어 변형에 대한 특정 규칙 세트를 사용합니다.
보드는 한쪽 끝에 "바구니"로 구성되고 그 뒤에 1부터 시작하여 번호가 매겨진 컵 수가 무한정으로 구성됩니다. 일부 컵에는 구슬이 몇 개 있습니다. n
th 컵에 n
구슬 이 정확히 있으면 구슬을 "뿌릴"수 있습니다. 파종은 n
컵에서 모든 비드를 꺼낸 다음 각 컵에 한 번에 하나씩 비드 를 담그는 것을 의미합니다 . 마지막 구슬이 바구니에 들어갑니다. 보드의 모든 구슬이 바구니에 있으면 플레이어가 승리합니다.
분명히, 두 번째 컵에 정확히 하나의 비드가있는 경우와 같이 획득 할 수없는 많은 보드가 있습니다. 구슬이 0 인 컵을 모두 뿌릴 수없고, 두 번째 컵에 뿌릴 구슬이 충분하지 않기 때문에 합법적 인 플레이가 없습니다. 이것은 분명히 재미가 없기 때문에 당신의 임무는 승리 가능한 보드를 만드는 것입니다.
직무
다수의 비드 출력을 나타내는 양의 정수가 주어지면, 전술 한 바와 같이 입수 가능한 보드를 만들기 위해 각 컵에 넣어야하는 비드의 수를 나타내는 음이 아닌 정수의리스트가 제공된다. 이 목록에는 후행 0이 포함되지 않아야합니다.
주어진 수의 구슬에 대해 항상 정확히 하나의 당길 수있는 보드 구성이 있습니다.
데모
Winnable 보드를 4 번 입력하는 방법을 보여줍니다 [0, 1, 3]
. Winnable 보드는 입니다. 우리는 유일하게 사용 가능한 움직임으로 시작하여 세 번째 컵에서 구슬을 뿌려서 얻습니다 [1, 2, 0]
. 이제 우리는 실제로 선택을 할 수 있지만, 유일한 올바른 것은 첫 번째 컵을 파종하는 것 [0, 2, 0]
입니다. 그런 다음 우리는 두 번째 컵 생산량 [1, 0, 0]
을 뿌리고 마침내 첫 번째 컵을 다시 뿌려서 모든 빈 컵을 얻습니다.
테스트 사례 :
1 => [1]
2 => [0, 2]
3 => [1, 2]
4 => [0, 1, 3]
5 => [1, 1, 3]
6 => [0, 0, 2, 4]
7 => [1, 0, 2, 4]
8 => [0, 2, 2, 4]
9 => [1, 2, 2, 4]
10 => [0, 1, 1, 3, 5]
11 => [1, 1, 1, 3, 5]
12 => [0, 0, 0, 2, 4, 6]
13 => [1, 0, 0, 2, 4, 6]
14 => [0, 2, 0, 2, 4, 6]
15 => [1, 2, 0, 2, 4, 6]
16 => [0, 1, 3, 2, 4, 6]
17 => [1, 1, 3, 2, 4, 6]
18 => [0, 0, 2, 1, 3, 5, 7]
19 => [1, 0, 2, 1, 3, 5, 7]
20 => [0, 2, 2, 1, 3, 5, 7]
테스트 케이스를 생성하는 프로그램을 만든 PeterTaylor 에게 감사드립니다 !