সি #, 630 611 604 572 570 বাইট, 120 বছর
(যদি আপনি অফসেটটি জানেন তবে প্রতি অতিরিক্ত বছরে ~ 2⅔ বাইট যোগ করুন)
এটি 24-জানু -2020-এর মাধ্যমে 31-জানুয়ারী -1900 জন্মগ্রহণকারীদের পক্ষে ভাল এবং সম্ভবত এই ব্যাপ্তির বাইরে ক্রাশ হবে। বর্ধিত বছরের সংখ্যা জন্য বোনাস পয়েন্ট আছে?
string Z(DateTime date)
{
int[] days = new int[] { 3, 22, 11, 1, 19, 7, -3, 16, 5, -6, 13, 2,
21, 9, -2, 17, 6, -5, 14, 4, 23, 11, 0, 19,
8, -3, 16, 5, -5, 13, 2, 20, 9, -2, 17, 7,
-4, 14, 3, 22, 11, -1, 18, 8, -3, 16, 5, -6,
13, 1, 20, 9, -1, 17, 6, -4, 15, 3, 21, 11,
0, 18, 8, -3, 16, 5, -7, 12, 2, 20, 9, -1,
18, 6, -5, 14, 3, 21, 10, 0, 19, 8, -3, 16,
5, 23, 12, 1, 20, 9, -1, 18, 7, -5, 13, 3,
22, 10, 0, 19, 8, -4, 15, 4, -6, 12, 1, 21,
10, -2, 17, 6, -5, 13, 3, 22, 11, 0, 19, 8 };
string[] signs = "Rat,Ox,Tiger,Rabbit,Dragon,Snake,Horse,Goat,Monkey,Rooster,Dog,Pig".Split(',');
string[] elements = "Metal,Water,Wood,Fire,Earth".Split(',');
string[] polarities = new string[] { "Yang", "Yin" };
int year = date.Year - 1900;
int x = year - (date.DayOfYear < days[year] + 28 ? 1 : 0);
return signs[x % 12] + " - " + elements[x / 2 % 5] + " - " + polarities[x % 2];
}
বা ঘনীভূত (যুক্ত লাইন বিরতি সহ):
string Z(DateTime d){
int y=d.Year-1900,
x=y-(d.DayOfYear<new[]{3,22,11,1,19,7,-3,16,5,-6,13,2,21,9,-2,17,6,-5,14,4,23,11,0,19,8,-3,16,5,-5,13,2,20,9,-2,17,7,-4,14,3,22,11,-1,18,8,-3,16,5,-6,13,1,20,9,-1,17,6,-4,15,3,21,11,0,18,8,-3,16,5,-7,12,2,20,9,-1,18,6,-5,14,3,21,10,0,19,8,-3,16,5,23,12,1,20,9,-1,18,7,-5,13,3,22,10,0,19,8,-4,15,4,-6,12,1,21,10,-2,17,6,-5,13,3,22,11,0,19,8}[y]+28?1:0);
return "Rat,Ox,Tiger,Rabbit,Dragon,Snake,Horse,Goat,Monkey,Rooster,Dog,Pig".Split(',')[x%12]+" - "+"Metal,Water,Wood,Fire,Earth".Split(',')[x/2%5]+" - "+new[]{"Yang","Yin"}[x%2];
}
কৌশলগুলির মধ্যে একটি ছিল অফসেট টেবিলের উত্সটি 28-জানুয়ারীতে। এটি সর্বনিম্ন চরিত্রের গণনা প্রমাণ করেছে।
যদি সুযোগক্রমে এটির জোর দেওয়া হয় তবে ইনপুটটি একটি স্ট্রিং, পদ্ধতিটির স্বাক্ষরটিতে 22 টি অক্ষর যুক্ত করুন:
string Z(string i){
এবং লাইন যুক্ত করুন:
var d=DateTime.Parse(i);
সম্পাদনাগুলি:
- সমস্ত স্ট্রিংকে একটি অ্যারেতে রেখে আউটপুট সিলেক্টারে অফসেট যুক্ত করুন।
- দিনটি অফসেটে ২৮-জানুয়ারীতে পরিবর্তন করা হয়েছে।
string.Split()
এডুয়ার্ড ফ্লোরিয়েন্স্কুর উত্তর থেকে অনুপ্রেরণা নেওয়া ।
- সমস্ত অ্যারে ইনলাইনড। এটি কেবল আমাকে 2 টি অক্ষর সংরক্ষণ করেছে। : - /