코드로 크리스마스 카운트다운

1959 단어
12월이 되면 우리는 크리스마스를 카운트다운합니다. 사람들은 종종 초콜렛이나 심지어 레고로 가득 찬 강림절 달력을 가지고 있습니다.

그러나 당신이 프로그래머라면 어떻게 크리스마스까지 날짜를 셀 수 있습니까? 매일 크리스마스를 주제로 코딩 챌린지를 한다면 어떨까요? 음www.adventofcode.com이 답입니다.

매일 새로운 도전이 가능합니다. 지금까지 도전 과제는 크리스마스와 산타가 선물을 배달하는 것과 관련이 있습니다. 도전 과제는 밀접하게 연결된 두 부분으로 나뉩니다. 임의로 생성된 입력이 제공되며 짧은 문자열이나 숫자를 사용하여 답을 제공해야 합니다.

도전은 점점 더 어려워지고 일부는 나를 완전히 패배시키고 있습니다(제한된 프로그래밍 지식으로 놀라운 일이 아닙니다). 문제는 언어와 무관하므로 javascript 또는 C#에서 시도해 볼 수 있습니다. 저는 Visual Studio와 C#을 사용해 왔으며 제 코드는 github에서 볼 수 있습니다.

지금까지 챌린지 1~6과 10을 완료했습니다. 7번 챌린지가 매우 어려웠기 때문이기도 하지만 한 번 더 도전해 보고 싶습니다.

이러한 과제를 통해 코딩하는 동안 상당한 양의 리팩토링을 수행했습니다. 저는 대부분의 코드가 하나의 메서드에 포함된 간단한 콘솔 앱으로 시작했습니다. 챌린지의 수가 증가함에 따라 각 챌린지의 코드를 챌린지에 고유한 메서드와 속성을 사용하여 자체 클래스로 옮기기 시작했습니다. 실행할 챌린지를 선택할 수 있도록 메인 메뉴도 추가했습니다. 챌린지에 답하는 내 코드 중 일부는 실행하는 데 약간의 시간이 걸리므로 각 챌린지를 순서대로 실행하는 것보다 상당한 시간을 절약할 수 있습니다.

이러한 도전은 저에게 코딩에 대해 많은 것을 가르쳐줍니다. 데이터 구조, 이 정보를 저장하는 가장 좋은 방법, 클래스 및 메서드 및 반환 유형, 데이터를 화면에 출력하는 방법, 데이터를 입력/가져오는 방법에 대해 생각해야 합니다.

다음 챌린지를 시도하고 작업하기 전에 첫 번째 챌린지를 살펴보겠습니다.

Santa is trying to deliver presents in a large apartment building, 
but he can’t find the right floor – 
the directions he got are a little confusing. 
He starts on the ground floor (floor 0) 
and then follows the instructions one character at a time.

An opening parenthesis, (, means he should go up one floor, and a closing parenthesis, ), 
means he should go down one floor.



이것은 ( 및 )의 긴 문자열을 통한 간단한 루프이며 산타가 끝나는 층을 계산하기 위해 현재 층 번호를 추적합니다. 챌린지의 두 번째 부분은 입력 문자열의 어느 지점에서 산타가 지하실(층 -1)에 도달하는지 묻습니다.

좋은 웹페이지 즐겨찾기