시즌 결정


11

소개:

에서 북반구 (즉, 유럽, 북미 등), 계절은 다음과 같이 나누어집니다 :
- 봄 : 3 월, 4 월, 5 월
- 여름 : 6 월, 7 월, 8 월
- 가을 : 9 월, 10 월, 11 월
- 겨울 : 12월 1 월, 2 월

에서 남반구 하지만 (즉, 호주, 남미 등), 계절은 다음과 같이 나누어집니다 :
- 봄 : 9 월, 10 월, 11 월
- 여름 : 12 월, 1 월, 2 월
- 가을 : 3 월, 4 월, 5 월
- 겨울 : 6 월, 7 월, 8 월

이 차이는 북반구와 남반구의 계절이 서로 다른 적도에 관한 태양의 위치 때문입니다.

입력:

이 과제에서는 두 가지 입력을받습니다.

  • 한 달에 하나 ( 1 <= m <= 12또는 0 <= m <= 11) (예 및 테스트 사례는 모두 1- 인덱싱 됨)
  • 그리고 남극이있는 지구의 위도 ( -2 <= p <= 2) 에있는 5 개의 '위치 그룹'중 하나 -2는 남극을 -1제외한 남반구 0이며, 적도에 근접한 열대 지역이며 1북극을 제외한 북반구 2입니다. 북극.
    물론 북극, 남극 및 열 대 지방은 여전히 ​​계절이 있지만,이 도전을 위해 우리는 북극 및 남극 대륙이 일정한 상태에 Winter있고 열 대 지방이 일정한 상태에 있다고 말합니다 Summer.

여기에이 다섯 그룹의 시각적 표현이 있습니다 -2. -1염소 자리의 트로픽과 남극권 사이; 0염소 자리의 트로픽과 암의 트로픽 사이; 1북극권과 암 트로픽 사이; 그리고 -2북극권.

여기에 이미지 설명을 입력하십시오여기에 이미지 설명을 입력하십시오 출처 : COSMOS-천문학의 SAO 백과 사전

산출:

하나 Spring, Summer, Autumn, 또는 Winter이 규칙에 따라 :

  • 위치 입력 2또는 -2(북극 또는 남극), 항상 출력 Winter입니다.
  • 위치 입력 0(Tropics)이며 항상 출력 Summer합니다.
  • 위치 입력된다 1(북반구), 달 입력에 기초 사계의 출력은 하나 : Spring( m = [3,5]); Summer( m = [6,8]); Autumn( m = [9,11]); Winter( m = 12 or m = [1,2]).
  • 위치 입력 -1(남반구)이며 월 입력을 기준으로 4 계절 중 하나를 출력합니다. Spring( m = [9,11]); Summer( m = 12 or m = [1,2]); Autumn( m = [3,5]); Winter( m = [6,8]).

도전 규칙 :

  • 출력을 나타내는 당신의 선택의 네 가지 값 Spring, Summer, Autumn, 또는 Winter(당신이 당신의 대답에 사용했던 것을 명시하시기 바랍니다).
    -15 보너스 바이트 는 출력하면 Spring, Summer, Autumn, 또는 Winter텍스트로 (대소 문자를 구분하므로 완전히 소문자 또는 완전히 대문자뿐만 아니라 수 있습니다 대신에 사용 된 타이틀의 경우에,).
  • 월 입력은 임의의 합리적인 형식 일 수 있습니다. 0 인덱스 또는 1 인덱스 정수, Date-object, Month-String 등이 될 수 있습니다.
  • 위치 입력이 항상이 가능한 오 개 입력 중 하나가 될 것입니다 -2, -1, 0, 1, 2.

일반 규칙:

  • 이것은 이므로 바이트 단위의 최단 답변이 이깁니다.
    코드 골프 언어가 코드 골프 언어 이외의 언어로 답변을 게시하지 못하게하십시오. '모든'프로그래밍 언어에 대한 가능한 한 짧은 대답을 생각해보십시오.
  • 표준 규칙이 답변에 적용 되므로 STDIN / STDOUT, 적절한 매개 변수 및 반환 유형의 전체 프로그램과 함께 함수 / 방법을 사용할 수 있습니다. 당신의 전화.
  • 기본 허점 은 금지되어 있습니다.
  • 가능하면 코드 테스트 링크를 추가하십시오.
  • 또한 필요한 경우 설명을 추가하십시오.

테스트 사례 :

Position    1-indexed Month    Output

-2          8  (August)        Winter
-2          12 (December)      Winter
-1          3  (March)         Autumn
-1          5  (May)           Autumn
-1          8  (August)        Winter
-1          12 (December)      Summer
0           1  (January)       Summer
0           7  (July)          Summer
1           1  (January)       Winter
1           4  (April)         Spring
1           7  (July)          Summer
1           12 (December)      Winter
2           2  (February)      Winter
2           9  (September)     Winter

계절에 네 개의 다른 값을 사용할 수없는 이유는 무엇입니까?
아웃 골퍼 Erik

나는 그 규칙을 읽었 기 때문에 내가 물었다. 또한 왜 "마법 정수 계산"을 두려워합니까?
아웃 골퍼 Erik

계산 만 보는 데 나쁜 점은 없습니다. 어쨌든 인덱싱에 사용될 것입니다. 그것은 당신의 도전이지만, 이것이 불필요한 합병증이라고 말하고 싶습니다. 편집 : 복사에 관해서는, 실제로 피할 수는 없습니다.
아웃 골퍼 Erik

2
보너스가 필요하다고 생각하지 않습니다. 출력을 해당 문자열로 변환하지 않으면 프로그램이 여전히 작동합니다.
아웃 골퍼 Erik

1
텍스트의 바이트 크기를 상쇄하는 바이트 보너스는 완전히 괜찮다고 생각합니다. "다른 작업을 수행하는 경우 Bonus X 포인트"중 하나가 아닙니다. 도전은 계절을 중심으로하기 때문에 실제로 계절을 인쇄하는 것이 좋습니다.
Nathan Merrill

답변:



6

파이썬 2 , 29 바이트

lambda p,m:[0,m+6,6,m][p]/3%4

온라인으로 사용해보십시오!

GB의 Ruby 접근 방식의 포트는 내 것보다 몇 바이트 더 짧은 것으로 판명되었습니다.

32 바이트

lambda p,m:(p%2*(p+m/3+5)or p)%4

온라인으로 사용해보십시오!

계절을 0에서 3까지 숫자로 반환하는 익명 함수로, 여름, 가을, 겨울 및 봄을 순서대로 나타냅니다.

실제 시즌 이름을 인쇄하는 경우 :

63-15 = 48 바이트

lambda p,m:"SAWSuuipmtnrmutiemenrnrg"[(p%2*(p+m/3+5)or p)%4::4]

온라인으로 사용해보십시오!

원하는 경우 결합 된 문자열이 있습니다.


3

C (gcc) , 78 75 (-15 보너스) = 60 바이트

1 기반 월을 사용합니다.

편집 : 수학 연산자를 재정렬하고 줄였습니다.

f(m,a){puts("Summer\0Autumn\0Winter\0Spring"+7*(a*a&1?(++a+m/3)%4:2*!!a));}

온라인으로 사용해보십시오!


1
(++a+m/3)%4→를 사용 하여 2 바이트를 저장할 수 있습니다 ++a+m/3&3. 또한 a*a정확한 경우 홀수 a이므로 검사 a&1가 잘되어야합니다.
Lynn

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.