시간 보정

코드 출현 2018 1일 차



작업: X에 대해 풀기 여기서...



1 부




X = the resulting frequency - starting from 0 - after all of the changes in frequency have been applied


2 부




X = the first frequency my device reaches twice


예시 입력




+1
-2
+3
+1


다음을 나타냅니다.
  • 일련의 주파수 변경
  • +는 주파수
  • 의 증가입니다.
  • -는 주파수
  • 의 감소입니다.

    1 부



    세 친구: split() , map() , reduce()



    내가 제안한 알고리즘:

    Generate an ordered list of numbers from the input
    For each number
      Accumulate a sum - starting at 0
    Return the sum
    

    split() , map()reduce() 를 사용하여 매우 간단한 작업으로 만들겠습니다.

    input.split('\n').map(Number).reduce((a,c) => a + c)
    


    예상대로 작동하여 정답을 생성했습니다!

    2 부



    돌고 돌고, 겉보기에는 영원할 것 같아




    Set a list of frequency history, starting with one element: 0
    Set frequency as 0
    Set index as 0
    Do as long as the last item in the list is not found elsewhere in the list
      If index is equal to the length of the list
        Reset index to 0
      Increment frequency by the number change at the current index in the list of frequency changes
      Insert the new frequency at the end of history
      Increment index by 1
    Return the last item in the history list
    


    이 애니메이션은 내 알고리즘이 어떻게 작동하는지 보여줍니다.


    실행하는 데 30초가 넘게 걸렸지만 정답을 생성했습니다!

    해냈어!!


  • 두 부분 모두 해결했습니다!
  • 간결한 코드 한 줄을 사용하여 파트 1을 해결했습니다!

  • 버머:
  • 파트 2의 알고리즘을 실행하는 데 시간이 오래 걸림...예상보다 오래 걸림
  • 몇 초가 아닌 밀리초 단위로 정답을 생성하는 보다 성능이 뛰어난 알고리즘을 작성하는 방법을 모르겠습니다
  • .

    검토 중인 연도




  • 35개의 골드 스타를 얻었습니다!
  • 내 최저 점수를 1점 이겼어!
  • 8개의 시뮬레이터를 만들었습니다! 그것은 지금까지 1년 만에 가장 적은 액수이지만, 하나하나 만드는 것이 즐거웠습니다.
  • 올해가 제일 힘들었던 것 같다
  • Day 24를 풀지 ​​못한 것이 아직도 답답합니다. 그 시뮬레이터를 만들면 재미있을 텐데.

  • 4년 검문소




  • 지금까지 시도한 퍼즐 100개!
  • 가능한 별 200개 중 143개를 얻었습니다!
  • 별의 거의 75%입니다!
  • 교육을 받은 소프트웨어 엔지니어, 컴퓨터 과학자 또는 프로그래머가 아닌 나와 같은 사람에게는 나쁘지 않습니다
  • .

    2017년까지!

    좋은 웹페이지 즐겨찾기