타이밍이 전부입니다

코드 출현 2016 15일차



1 부


  • LCM 퍼즐?
  • 그냥 숫자를 세는 것보다 더 좋은 방법이 있을까요?

  • LCM 퍼즐?



    LCM: 최소공배수
  • 여러 숫자가 균등하게 나누는 가장 작은 숫자
  • 3,5 = 152,5 = 10
    이 경우 숫자는 경과 시간, 총 위치 및 각 디스크의 현재 위치의 조합일 수 있습니다.

    숫자를 세는 것보다 더 좋은 방법이 있을까요?



    Create a variable, answer
    Create a counter, starting at 0
    Do as long as answer has no value
      Determine whether each disc would be at position 0 when reached
      If so
        Set answer to counter
      Else
        Increment counter
    

    디스크가 위치 0에 있는지 여부를 결정하는 데 사용할 방정식은 무엇입니까?

    (time + disc number + position) % positions == 0
    


    예를 들어:


    따라서 각 디스크의 방정식이 한 번에 0이 되는 한, 나는 승리 시간을 찾았습니다!

    이 알고리즘은 쓰기에 충분히 쉬워 보입니다.

    내가 간다!

    ...

    그것은 효과가 있었다!

    2 부


    가장 쉬운 파트 2?


  • 이 내용을 올바르게 읽고 있다면 추가 디스크
  • 를 포함하도록 퍼즐 입력을 변경하기만 하면 됩니다.
  • 그런 다음 내 알고리즘을 다시 실행합니다. 이 여분의 디스크로 인해 처음으로 버튼을 눌러 수십억 또는 조 단위의 숫자가 되지 않기를 바랍니다
  • .

    내 퍼즐 입력에 이 줄을 추가한 후:

    Disc #7 has 11 positions; at time=0, it is at position 0.
    


    그리고 내 알고리즘을 다시 실행...

    거의 즉시 숫자가 생성되었습니다.

    정답입니다!

    해냈어!!


  • 두 부분 모두 해결했습니다!
  • 내가 예상했던 것보다 훨씬 빠르고 코드와 혼동이 훨씬 적습니다!
  • 방정식을 너무 빨리 추론했기 때문일 수 있습니다!

  • 이 15일차 퍼즐을 두 부분을 모두 푸는 데 15분이 채 걸리지 않아 기쁩니다!

    하지만 마지막 몇 개의 퍼즐을 푸는 데 필요한 노력을 감안할 때 다음으로 넘어가면 이 퍼즐을 기억하지 못할 것 같다는 생각이 조금 듭니다.

    좋은 웹페이지 즐겨찾기