올해의 중국 12 궁도


9

2015 년은 염소의 해였습니다! 이 도전에서, 당신은 어떤 동물이 연도를 나타내는 지 알아낼 것입니다. 이 도전을 복잡하게 만들지 않으려면 중국의 설날을 계산할 필요가 없습니다.

조디악에서는 12 마리에 불과하므로 코드는 가능한 짧아야합니다.

프로그램은 시스템 연도를 받아야합니다 . 첫 번째 줄은 참조 용입니다.

2015
Goat

1924
Rat

1923
Pig

2008
Rat

사양

조디악의 순서는 다음과 같습니다.

Rat, Ox, Tiger, Rabbit, Dragon, Snake, Horse, Goat, Monkey, Rooster, Dog, Pig

Rat2008 년에 시작하여 Pig2007 년에, Ox2009 년에 등이 반복됩니다.

출력은 올바르게 대문자 여야합니다.


2008 년 이전의 것으로 추정되는 것은 Rat무엇입니까?
Zach Gates

@ZachGates 아니오, 그것은 단지 예일뿐입니다. 업데이트하겠습니다
Downgoat

사용자 시간대에서 연도를 사용할 수 있습니까?
LegionMammal978


1
시스템 연도 요구 사항에 혼동됩니다. 입력이 없습니까? 2015 년에는 염소를 인쇄했을 것이고 이제 원숭이를 인쇄해야합니까?
TanMath

답변:


5

Pyth, 54 바이트

@rR3c."ayÖÚ©*ÐPk<`eüµÜxþ!¬Ì ¾½hÑðÙBwp"\c.d3

온라인으로 사용해보십시오 : 데모

.d3다른 3 개의 조디악 동물을 테스트 하기 위해 마지막 3 개의 문자 를 연도 숫자로 바꿀 수 있습니다 .

설명:

     ."ayö..."        packed string, decrypts to "monkeycroostercdogcpig..."
    c         \c      split this string at "c"s
 rR3                  make the first letter of each animal uppercase
                .d3   current year
@                     take the correct animal of the list and print

6

Pyth-65 바이트

@c." y=CÅQ¯@îR
°©ÀáëªfÞ­#[õNqÀN8Ô'¼ô,n7˶~fB").d3

여기에서 온라인으로 사용해보십시오 .

@                     Modular indexing
 c           )        Split string, use default of spaces
  ."ajs&^asd"         Packed string to compress space separated zodicas
 .d3                  Current year

설명을 추가 할 수 있습니까?
TanMath

@TanMath 정말 간단하지만 확실합니다
Maltysen

문자 공간을 좁 히면 최소 3 바이트를 절약 할 수 있습니다. 데모 또한 인쇄 할 수없는 코드를 16 진 덤프로 게시하고 인쇄 가능한 버전을 포함 할 수 있습니다.
PurkkaKoodari

4

자바 스크립트 ES6, 106 105 104 103 바이트

Maltysen 1 개 바이트 덕분에, insertusernamehere에 1 바이트, 저장 edc65에 1 바이트를!

x=>"RatOxTigerRabbitDragonSnakeHorseGoatMonkeyRoosterDogPig".match(/.[a-z]+/g)[new Date().getYear()%12]

꽤 자명하다.


그 문자열이 btoa와 atob을 사용할 수 있다고 생각합니다. 허용되는 경우 바이트 인코딩을 변경할 수도 있습니다.
Mama Fun Roll

@ ן nɟuɐɯɹɐ ן oɯ btoa의 결과는 하드 코딩 된 문자열의 길이의 1.5 배 이상인 것으로 보입니다.
코너 O'Brien

아니요, atob을 사용하여 인코딩하고 btoa를 사용하여 디코딩하십시오.
Mama Fun Roll

5
1 바이트 를 저장할 수 있습니다 . 0구분 기호를 제거 하고이 정규식을 사용하여 문자열을 분할하십시오 /(?=[A-Z])/. 새해 복 많이 받으세요. :)
insertusernamehere

1
match(/.[a-z]+/g)split 대신 (추가 된 값 : 캡처를 통한 split은 ES6이 아니고 FireFox 전용 기능 임) (및 1 바이트 더 짧음)
edc65


3

Japt , 72 65 바이트

`Mkey RooÐP Dog Pig R Ox Tig Rabb Dg Snake HÆ  Go`¸gÐ i %C

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


음 ... 이건 꽤 좋지만 거기에는 확실히 인쇄 할 수없는 것들이 있습니다. 우리에게 링크를 줄 수 있습니까?
ETHproductions

@Eth eh, 인쇄 할 수없는 부분이 제거되었다고 설명하지 않았습니다. Gonna 그것을 복원 : D
nicael

BTW 대신을 $[$Ð i -4 %12]사용할 수 있습니다 g(Ð i -4 %C.
ETHproductions

@Eth ok, 그리고 요소 순서를 변경하여 -4도 처리합니다.
nicael

@Eth 잠깐 만요, 당신의 수정이 작동하지 않는 것처럼 보입니다, NaN을 출력합니다.
nicael

1

MATL , 85 바이트

'Rooster Dog Pig Rat Ox Tiger Rabbit Dragon Snake Horse Goat Monkey'YbZ'10H$XOU12X\)

언어 / 컴파일러 6.0.0 릴리스를 사용합니다 . 옥타브에서 작동합니다.

>> matl
 > 'Rooster Dog Pig Rat Ox Tiger Rabbit Dragon Snake Horse Goat Monkey'YbZ'10H$XOU12X\)
 >
Monkey

설명

뺄셈을 피하기 위해 초기 문자열은 3 씩 주기적으로 바뀝니다.

'Rooster Dog Pig Rat Ox Tiger Rabbit Dragon Snake Horse Goat Monkey'
Yb                    % split at spaces
Z'                    % number representing current date and time
10H$XO                % get year as a string
U                     % convert to number
12X\                  % modulo 12, with 0 converted to 12
)                     % index (and implicitly print)

1

은하수 1.6.1 , 101 96 바이트

M" "\=A12n"Goat Horse Snake Dragon Rabbit Tiger Ox Rat Pig Dog Rooster Monkey"" "\;>=<&{~1-;^};!

Luis Mendo 의 알림으로 5 바이트를 절약했습니다 .


설명

이 코드는 12 년 단위로 시스템을 모듈화하고 적절한 동물을 출력합니다.


용법

./mw <path-to-code>

1
2008-내 대답에서와 같이 문자열을 다시 정렬하여 피할 수 있습니까?
Luis Mendo

오, 나는 당신이 이미 CJam 답변에서 그렇게 생각합니다
Luis Mendo

네가 옳아! CJam 답변의 문자열을 반대로 사용할 수 있습니다. @LuisMendo를 상기시켜 주셔서 감사합니다
Zach Gates

1

CJam, 69 바이트

"SKiN<lEz=2)aFBY8H[$h-0|4=K`T2Cp%-a)o6"132b26b'`f+'`/et0==(eu\

인쇄 할 수없는 항목이 포함되어 있습니다. 여기에서 시도하십시오.


4
1 년은 입력 할 수 없으며 현재 시스템 시간을 사용해야합니다.
Maltysen

아 고정 @Maltysen
Lynn

1

파이썬 3 126 116 112 바이트

편집 : 다른 답변은 시원하기 때문에 유지하지만 더 짧습니다.

from time import*
"Monkey Rooster Dog Pig Rat Ox Tiger Rabbit Dragon Snake Goat".split()[localtime().tm_year%12]

후행 공백이 정상이면 126 바이트입니다. 그렇지 않은 경우 .strip()코드 끝에 추가 한 후 134 바이트 입니다.

from datetime import*
"MRDPROTRDSHGoooiaxiarnoonoggt gbaaraks    ebgkstet    rioee ye     tn    r"[datetime.now().year%12::12]

0

R, 119 바이트

scan(t="Monkey Rooster Dog Pig Rat Ox Tiger Rabbit Dragon Snake Horse Goat",w="")[(format(Sys.Date(),"%Y"):1)[1]%%12+1]

format(Sys.Date(),"%Y")연도를 문자열로 반환하고 (format(Sys.Date(),"%Y"):1)[1]정수로 강제 변환하여 적용 할 수있는 가장 짧은 방법입니다 %%(시퀀스 생성기는 :실제로 자동으로 정수로 강제 변환합니다). +1R 인덱스는 1을 기준으로하고 0을 기준으로하지 않기 때문입니다.


0

PHP> = 5.6, 84 바이트

매우 똑바로 :

<?=[Monkey,Rooster,Dog,Pig,Rat,Ox,Tiger,Rabbit,Dragon,Snake,Horse,Goat][date(Y)%12];

0

파이썬 129126 바이트

편집 : 방금 s.split ( '') = s.split ()을 배웠습니다.

이것이 가장 짧은 방법은 아니지만 @ Sherlock9의 대안에 대한 대안입니다.

from datetime import*
print 'Monkey Rooster Dog Pig Rat Ox Tiger Rabbit Dragon Snake Horse Goat'.split()[date.today().year%12]

여기 사용해보십시오


와. 방금 내 답변을 편집했고 그것은 내가 편집 한 것과 거의 비슷했습니다. 나는 time다음으로 무언가를 시도 할 것입니다 .
Sherlock9

0

PowerShell, 92 바이트

(-split"Monkey Rooster Dog Pig Rat Ox Tiger Rabbit Dragon Snake Horse Goat")[(date).Year%12]

다른 답변과 마찬가지로, 목록 작성을 위해서만 여기에 추가되었습니다. 이 문자열을 얻어 "Monkey ... Goat"-split개별적 요소를 지정하는 것보다 저렴 배열을 만드는 공간에 S는 ("Monkey","Rooster",...). 현재 yearmod 로 해당 배열에 색인을 생성 12하여 결과를 출력합니다. 너무 멋진 것은 없습니다.


0

C # 159

using System;class P{static void Main(){Console.Write("Monkey;Rooster;Dog;Pig;Rat;Ox;Tiger;Rabbit;Dragon;Snake;Horse;Goat".Split(';')[DateTime.Now.Year%12]);}}

읽기 가능 / 골프없는 버전

using System;
class Program
{
    static void Main(string[] args)
    {
        Console.Write("Monkey;Rooster;Dog;Pig;Rat;Ox;Tiger;Rabbit;Dragon;Snake;Horse;Goat".Split(';')[DateTime.Now.Year % 12]);
    }
}

0

J , 78 바이트

(>;:'Monkey Rooster Dog Pig Rat Ox Tiger Rabbit Dragon Snake Horse Goat'){~12|

용법:

    (>;:'Monkey Rooster Dog Pig Rat Ox Tiger Rabbit Dragon Snake Horse Goat'){~12| 2015
 Goat

설명:

;:      separates the string into boxed array according to the spaces
>       opens the boxed array so that it becomes a normal array
x {~ y  is choose the y-th element from x.
        the ~ reverses the argument, so x { y is choose the x-th element from y.
12|     is the residue when the year is divided by 12
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.