Cung hoàng đạo của năm


9

2015 là năm con dê! Trong thử thách này, bạn sẽ tìm ra con vật nào đại diện cho năm. Để tránh làm cho thách thức này trở nên phức tạp, bạn sẽ không cần tính toán năm mới của Trung Quốc.

Bởi vì chúng chỉ có 12 con trong Hoàng đạo, mã của bạn sẽ cần phải càng ngắn càng tốt.

Ví dụ

Chương trình của bạn phải lấy năm hệ thống , dòng đầu tiên chỉ để tham khảo

2015
Goat

1924
Rat

1923
Pig

2008
Rat

Sự chỉ rõ

Thứ tự của Zodiac là:

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

Ratbắt đầu từ năm 2008, Piglà năm 2007, Oxnăm 2009, v.v ... cuối cùng thì vòng lặp này quay trở lại.

Đầu ra phải được viết hoa đúng.


Có bất cứ điều gì trước năm 2008 được coi là Rat?
Zach Gates

@ZachGates không, đó chỉ là một ví dụ. Tôi sẽ cập nhật
Hạ cấp

Nó có thể sử dụng năm trong múi giờ của người dùng không?
LegionMammal978


1
Tôi bối rối bởi các yêu cầu năm hệ thống. Vì vậy, không có đầu vào? Vậy năm 2015, nó có in hình con dê không, và bây giờ, nó có nên in Khỉ không?
TanMath

Câu trả lời:


5

Bình thường, 54 byte

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

Dùng thử trực tuyến: Trình diễn

Bạn có thể thay thế 3 ký tự cuối cùng .d3bằng bất kỳ số năm nào để kiểm tra các động vật Zodiac khác.

Giải trình:

     ."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 byte

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

Hãy thử trực tuyến tại đây .

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

Bạn có thể thêm một lời giải thích?
TanMath

@TanMath nó thực sự đơn giản, nhưng chắc chắn
Maltysen

Bạn có thể lưu ít nhất 3 byte bằng cách thu hẹp không gian ký tự. bản demo Ngoài ra, bạn có thể muốn đăng mã không thể in dưới dạng hexdump và bao gồm một phiên bản có thể in được.
PurkkaKoodari

4

JavaScript ES6, 106 105 104 103 byte

Đã lưu 1 byte nhờ Maltysen, 1 byte cho insertusernamehere 1 byte cho edc65!

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

Khá tự giải thích.


Tôi cảm thấy như chuỗi đó có thể sử dụng một số btoa và atob. (Bạn cũng có thể thay đổi mã hóa byte, nếu điều đó được cho phép).
Mama Fun Roll

btoaKết quả của @ ן nɟuɐɯɹɐ oɯ s có vẻ dài hơn 1,5 lần chiều dài của chuỗi mã hóa cứng.
Conor O'Brien

Không, sử dụng atob để mã hóa và btoa để giải mã.
Mama Fun Roll

5
Bạn có thể lưu 1 byte : Xóa 0dấu phân cách và sử dụng biểu thức chính quy này để phân tách chuỗi : /(?=[A-Z])/. Chúc mừng năm mới. :)
insertusernamehere

1
match(/.[a-z]+/g)thay vì chia (giá trị gia tăng: chia với chụp không phải là ES6, là tính năng chỉ dành cho FireFox) (và ngắn hơn 1 byte)
edc65


3

Japt , 72 65 byte

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

Hãy thử trực tuyến!


Umm ... điều này là khá tốt, nhưng chắc chắn có một số không thể in được trong đó. Bạn có thể cho chúng tôi một liên kết?
Sản phẩm ETH

@Eth eh, không có tài khoản mà không thể in được bị tước. Gonna khôi phục nó: D
nicael

BTW, thay vì $[$Ð i -4 %12], bạn có thể sử dụng g(Ð i -4 %C.
Sản xuất ETH

@Eth ok, và tôi cũng sẽ loại bỏ -4, bằng cách thay đổi thứ tự phần tử.
nicael

@Eth Chờ đã, bản sửa lỗi của bạn dường như không hoạt động, xuất ra NaN ...
nicael

1

MATL , 85 byte

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

Sử dụng phát hành 6.0.0 của ngôn ngữ / trình biên dịch. Hoạt động trong Octave.

Thí dụ

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

Giải trình

Lưu ý rằng chuỗi ban đầu được dịch chuyển theo chu kỳ bằng 3 để tránh phép trừ.

'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

Dải ngân hà 1.6.1 , 101 96 byte

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

Đã lưu 5 byte nhờ lời nhắc của Luis Mendo .


Giải trình

Mã điều chỉnh hệ thống năm 12 và đưa ra động vật thích hợp.


Sử dụng

./mw <path-to-code>

1
Có lẽ bạn có thể tránh 2008-bằng cách sắp xếp lại chuỗi như trong câu trả lời của tôi?
Luis Mendo

Ồ, tôi nghĩ rằng bạn đã làm điều đó trong câu trả lời của CJam
Luis Mendo

Bạn đúng! Tôi có thể sử dụng chuỗi từ câu trả lời CJam của tôi ngược lại. Cảm ơn đã nhắc nhở tôi @LuisMendo
Zach Gates

1

CJam, 69 byte

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

Chứa một loạt các dấu vết. Hãy thử nó ở đây.


4
Bạn không thể mất một năm làm đầu vào, nó phải sử dụng thời gian hệ thống hiện tại.
Maltysen

À, cố định. @Maltysen
Lynn

1

Python 3, 126 116 112 byte

Chỉnh sửa: Tôi đang giữ câu trả lời khác vì nó hay, nhưng nó ngắn hơn.

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

Nếu khoảng trắng theo dõi là ok, thì đó là 126 byte. Nếu không, nó là 134 byte sau khi thêm .strip()vào cuối mã.

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

0

R, 119 byte

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")trả về năm dưới dạng một chuỗi ký tự, (format(Sys.Date(),"%Y"):1)[1]là cách ngắn nhất tôi có thể nghĩ đến để ép nó thành một số nguyên để chúng ta có thể áp dụng %%cho chuỗi đó (trình tạo chuỗi :thực sự tự động ép buộc thành số nguyên). +1bởi vì các chỉ số R dựa trên 1 và không dựa trên 0.


0

PHP> = 5,6, 84 byte

Rất thẳng về phía trước:

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

0

Python 129 126 byte

EDIT : Tôi vừa học s.split ('') = s.split ()

Mặc dù đây không phải là phương pháp ngắn nhất, nhưng đây là câu trả lời thay thế cho phương pháp của @ Sherlock9:

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

Hãy thử nó ở đây


Ồ Tôi chỉ chỉnh sửa câu trả lời của mình và nó khá gần với những gì tôi đã chỉnh sửa nó. Tôi sẽ thử một cái gì đó với timetiếp theo.
Sherlock9

0

PowerShell, 92 byte

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

Tương tự về tinh thần với các câu trả lời khác, được thêm vào đây chỉ vì mục đích của danh mục. Cái này lấy chuỗi "Monkey ... Goat"-splits trên các khoảng trắng để tạo một mảng, rẻ hơn so với chỉ định các phần tử riêng lẻ với ("Monkey","Rooster",...). Chúng tôi lập chỉ mục vào mảng đó với yearmod hiện tại 12, đưa ra kết quả. Không có gì quá lạ mắt.


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]);}}

Phiên bản có thể đọc / không đọc

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 byte

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

Sử dụng:

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

Giải trình:

;:      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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.