needmoreeasy EN 한국어
배우기

75 — 게임: 간단한 상대

★★★★★ (5/5)게임/전략
선수 지식
26 — Adventure, 10 — Random
결과물
돌을 1-3개 가져가며 마지막 돌이 지는 Nim 게임에서 컴퓨터가 전략으로 대응하기

게임 상대에게는 운이 아니라 규칙이 필요합니다. Nim에서는 1~3개 돌을 가져가며, 마지막 돌을 가져가는 쪽이 집니다. 컴퓨터는 승리 위치를 유지하는 전략으로, 공정 모드에서는 주사위처럼 대응할 수 있습니다.

단계

  1. 돌무더기를 시작하고 규칙을 설명하세요:

    pile = 12
    show f"The pile has {pile} stones. Take 1, 2, or 3."
    
    실행해 보기 →
  2. 한 턴은 돌을 제거합니다: pile = pile - taken. 무더기가 0이 되면 게임이 끝나고, 마지막 돌을 가져간 쪽이 집니다:

    while pile > 0:
        ask take, "How many (1-3)? "
        taken = int(take)
        if taken < 1 or taken > 3:
            show "Take 1, 2, or 3."
            continue
        pile = pile - taken
    
    실행해 보기 →

    continue는 컴퓨터 차례를 건너뛰고 올바른 숫자를 다시 물어봅니다.

  3. 컴퓨터 전략: 당신이 움직인 뒤 무더기가 n이면, 컴퓨터가 n % 4개의 돌을 가져가면(0이 아닐 때) 4의 배수를 남겨 당신에게 지는 위치를 만듭니다. n % 4가 0이면 어떤 움직임도 당신에게 이기는 위치를 주므로 공정 모드에서 1~3 중 무작위로 가져갑니다:

    move = pile % 4
    if move == 0:
        move = random_number(1, 3)
    pile = pile - move
    
    실행해 보기 →
  4. 전체 게임. nim.nme로 저장하세요:

    # nim.nme — 1-3개 돌 가져가기; 마지막 돌이 집니다.
    # 실행: nme 실행 nim
    
    use random latest
    
    pile = 12
    show f"The pile has {pile} stones. Take 1, 2, or 3."
    
    while pile > 0:
        ask take, "Your turn — how many (1-3)? "
        taken = int(take)
        if taken < 1 or taken > 3:
            show "Take 1, 2, or 3."
            continue
        pile = pile - taken
        if pile == 0:
            show "You took the last stone. You lose!"
            break
        move = pile % 4
        if move == 0:
            move = random_number(1, 3)
        pile = pile - move
        show f"Computer takes {move}. Pile is now {pile}."
        if pile == 0:
            show "The computer took the last stone. You win!"
    
    실행해 보기 →
  5. 플레이어가 2, 2, 1을 가져가며 실행하세요:

    printf '2\n2\n1\n' | nme 실행 nim
    
    The pile has 12 stones. Take 1, 2, or 3.
    Your turn — how many (1-3)? Computer takes 2. Pile is now 8.
    Your turn — how many (1-3)? Computer takes 2. Pile is now 4.
    Your turn — how many (1-3)? Computer takes 3. Pile is now 0.
    The computer took the last stone. You win!
    

    컴퓨터의 움직임 후 무더기는 4의 배수가 됩니다. 전략이 통하는 이유입니다.

직접 해보기

시작 무더기를 15로 바꿔 다시 플레이하세요: 공정 모드가 도와주지 않으면 전략이 여전히 이깁니다. 몇 번 이겼는지 세는 best 카운터를 추가하세요.

배운 것

  • %(모듈로)가 나머지를 알려 주며, 이것이 Nim 전략의 핵심입니다.
  • continue는 잘못된 움직임에서 다음 반복 턴으로 건너뜁니다.
  • 전략은 게임 상태에서 계산한 규칙일 뿐입니다.
  • 전략이 못 이길 때 무작위 폴백이 상대를 정직하게 만듭니다.

GitHub에서 이 문서 보기