থ্যাঙ্কসগিভিং কখন?


38

পটভূমি

কিছু ছুটির দিনগুলি 31 অক্টোবর, 25 ডিসেম্বর ইত্যাদির মতো নির্দিষ্ট, সহজে মনে রাখার তারিখগুলি নির্দিষ্ট করে রেখেছিল Some কিছু কিছু অবশ্য সমস্যা হতে চায়। এগুলি "সেপ্টেম্বরের প্রথম সোমবার" বা "নভেম্বর মাসে চতুর্থ বৃহস্পতিবার" এর মতো জিনিস হিসাবে নির্দিষ্ট করা হয়েছে। আমি কখন তা জানতে পারি?

আমি যতটুকু জানি তা হল থ্যাঙ্কসগিভিং দ্রুত এগিয়ে আসছে, সুতরাং কখন এটি হবে তা খুঁজে বের করার জন্য আমার একটি প্রোগ্রাম প্রয়োজন। কিছু লোক এমনকি এও বলে যে এটি আগামীকাল , সুতরাং আপনার প্রোগ্রামটি যথাসম্ভব সংক্ষিপ্ত হওয়া দরকার যাতে আমি সময় মতো এটি পুনরায় টাইপ করতে পারি make

চ্যালেঞ্জ

একটি প্রোগ্রাম বা ফাংশন তৈরি করুন যা আপ-টু-চার-ডিজিট বছরের (উদাহরণস্বরূপ 2015 বা 1984) দেওয়া হয়, সেই বছরে মার্কিন যুক্তরাষ্ট্রের থ্যাঙ্কসগিভিংয়ের তারিখকে আউটপুট দেয় বা ফিরিয়ে দেয়। থ্যাঙ্কসগিভিং উইকিপিডিয়া পৃষ্ঠা অনুসারে নভেম্বরের চতুর্থ বৃহস্পতিবার হিসাবে সংজ্ঞায়িত করা হয়েছে । (ইঙ্গিত: সেই পৃষ্ঠাটিতে তারিখের ধরণ সম্পর্কে কিছু আকর্ষণীয় তথ্য রয়েছে)

ইনপুট : সাধারণ যুগের (সিই) এক বছরের প্রতিনিধিত্ব করে সর্বাধিক চার অঙ্কের দশমিক সংখ্যা। উদাহরণ: 987, 1984, 2101

আউটপুট : মাস এবং দিন সহ সেই তারিখ, যার উপর থ্যাঙ্কসগিভিং পড়ে, বা যদি তা বিদ্যমান থাকে তবে পড়ে যাবে that এটি কোনও যুক্তিসঙ্গত বিন্যাসে হতে পারে; আপনার সেরা রায় ব্যবহার করুন। গ্রেগরিয়ান ক্যালেন্ডারটি সমস্ত ক্ষেত্রে ব্যবহার করুন, এমনকি যদি এটি তখন ব্যবহৃত না হয়।

(দ্রষ্টব্য: লিপ বছরগুলি সঠিকভাবে পরিচালনা করতে ভুলবেন না!)

পরীক্ষার কেস ইনপুট 1:

2015

আউটপুট 1:

Nov 26

ইনপুট 2:

1917

আউটপুট 2:

Nov 22

স্কোরিং

বাইটে জমা দেওয়া হবে । আমি এই ওয়েবসাইটটি আপনার বাইট গণনা সম্পর্কে নজর রাখার পরামর্শ দিচ্ছি , যদিও আপনি নিজের পছন্দ মতো কাউন্টার ব্যবহার করতে পারেন।

বোনাসেস

আপনার স্কোরের 25 % যদি আপনি বিসিই তারিখগুলি নেতিবাচক সংখ্যার হিসাবে পরিচালনা করেন (যেমন -480 থার্মোপিলাইয়ের যুদ্ধের বছর হবে)।

নেতিবাচক পরীক্ষার কেস ইনপুট:

-480

সংশ্লিষ্ট আউটপুট:

Nov 25

এটি , তাই সর্বনিম্ন স্কোর জয়!

সম্পাদনা করুন: আমি স্বীকৃত হিসাবে টমাস কোয়ার টিআই-বেসিক জমাটি চিহ্নিত করছি। এটি আপনাকে নতুন এন্ট্রি জমা দেওয়া থেকে নিরুৎসাহিত করবেন না!

লিডারবোর্ড

নিয়মিত লিডারবোর্ড এবং ভাষার দ্বারা বিজয়ীদের একটি সংক্ষিপ্ত বিবরণ উভয়ই তৈরি করতে এখানে একটি স্ট্যাক স্নিপেট।

আপনার উত্তরটি প্রদর্শিত হয়েছে তা নিশ্চিত করতে, দয়া করে নীচের মার্কডাউন টেমপ্লেটটি ব্যবহার করে আপনার উত্তরটি শিরোনাম দিয়ে শুরু করুন:

# Language Name, N bytes

Nআপনার জমা দেওয়ার আকারটি কোথায় ? আপনি যদি নিজের স্কোরটি উন্নত করেন তবে আপনি পুরানো স্কোরগুলি শিরোনামে রেখে দিতে পারেন । এই ক্ষেত্রে:

# Ruby, <s>104</s> <s>101</s> 96 bytes

যদি আপনি নিজের শিরোনামে একাধিক সংখ্যা অন্তর্ভুক্ত করতে চান (যেমন আপনার স্কোর দুটি ফাইলের সমষ্টি বা আপনি পৃথকভাবে দোভাষী পতাকা দণ্ডের তালিকা করতে চান), নিশ্চিত করুন যে আসল স্কোরটি শিরোনামের শেষ সংখ্যা:

# Perl, 43 + 2 (-p flag) = 45 bytes

আপনি ভাষাটির নামটিকে একটি লিঙ্কও বানাতে পারেন যা লিডারবোর্ড স্নিপেটে প্রদর্শিত হবে:

# [><>](http://esolangs.org/wiki/Fish), 121 bytes


25
এই বছর থ্যাঙ্কসগিভিং কখন আসবে ভাবছেন এমন কারও জন্য: থ্যাঙ্কসগিভিং আগামীকাল হবে।
TheNumberOne

6
তবে আমার 10 ই অক্টোবর থ্যাঙ্কসগিভিং ছিল? আপনার প্রশ্নটি দেরিতে হয়েছে বলে আমি দুঃখিত।
জিমি জাজজেক্স

5
@ ডাউনগোট আপনি যে কোনও বাইট কাউন্টার চাই তা ব্যবহার করুন। আমি ব্যক্তিগতভাবে এটি ব্যবহার করি এবং এটিই সুপারিশ করব।
বেকুল

22
"কিছু ছুটির দিনগুলি 31, ডিসেম্বর 25-এর মতো স্মরণে রাখতে সহজ তারিখগুলি স্থির করেছে" এই উদাহরণগুলি মনে রাখা সহজ কারণ তারা সত্যই একই দিন: অক্টোবর 31 == দশমিক 25. ;-)
অ্যাড্রিয়ান ম্যাকার্থি

7
বোনাস দেয় এমন উত্তরের জন্য, -1 এবং 1 এর মধ্যে 0 সাল থাকা উচিত বা না?
শুক্রবার

উত্তর:


40

টিআই-বেসিক, 15 বাইট * 0.75 = 11.25

আমার টিআই -৪৪ + ক্যালকুলেটর পরীক্ষিত

1129-dayOfWk(Ans+ᴇ4,9,1

থ্যাঙ্কসগিভিং ২৯ শে নভেম্বর, বিগত 1 সেপ্টেম্বর সপ্তাহের বিয়োগ দিন, যেখানে 1 রবিবার এবং 7 শনিবার। বিন্যাসে এই আউটপুট MMDD

পরীক্ষার কেসগুলি: 2015-> 1126, 1917-> 1122, -480-> 1125যাচাই করা হয়েছে। টিআই-বেসিক সমস্ত তারিখের জন্য গ্রেগরিয়ান ক্যালেন্ডার ব্যবহার করে বলে মনে হচ্ছে।

টিআই-বেসিক নেতিবাচক বছরগুলিকে সমর্থন করে না, তবে এটি বোনাস পায় কারণ আমরা ইনপুটটিতে 10000 যুক্ত করি। গ্রেগরিয়ান ক্যালেন্ডারে 400 বছর সময়কাল থাকার কারণে এটি সপ্তাহের দিন পরিবর্তন করে না।


5
পবিত্র জঞ্জাল। xD আমি কখনই ভাবিনি যে এটি এমনভাবে কাজ করবে, +1।
অ্যাডিসন ক্র্যাম্প

10000 যুক্ত করার জন্য ভাল ধারণা N
agtoever

আমি 23 টি চিঠি গণনা করি। এটি কীভাবে 15 বাইট হতে পারে?
স্টিফান শিনকেল

1
@ স্টাফেনশিন্কেল টিআই-বেসিক টোকেনগুলি ব্যবহার করে যা ক্যালকুলেটর মেমরিতে সঞ্চিত থাকে, আমি বিশ্বাস করি টোকেন ব্যতীত এখানে সমস্ত অক্ষর 1 বাইট dayofWK(এবং Ansপ্রতিটি 2 এবং 1 বাইট রয়েছে।
FryAmTheEggman

আপনি এটি একটি ক্যালকুলেটর পরীক্ষা করেছেন? কি দারুন.

23

পিএইচপি, 65 48 42 41 36 (+2 জন্য -F) = 38 বাইট

<?date(Md,strtotime("4thuXI$argn"));

প্রথম কমান্ড লাইন আর্গুমেন্ট হিসাবে ইনপুট নেয়। সতর্কতা সহ চালানো হয়, যা আমাদের বিধি দ্বারা গ্রহণযোগ্য। প্রিন্টস NovDD, DDথ্যাঙ্কসগিভিংয়ের দিনটি কোথায় ।

কোনও অনলাইন লিঙ্ক নেই কারণ আইডিয়োন কমান্ড লাইন আরোগুলি সমর্থন করে না এবং আমি কোনও অনলাইন দোভাষীর কথা জানি না যা তা করে।

আমাকে একটি নতুন কৌশল শেখানোর জন্য আলেকজান্ডার ও'মারাকে ধন্যবাদ জানাতে এবং উল্লেখযোগ্যভাবে হ্রাসের জন্য প্রিমোকে ধন্যবাদ


2
এটি ম্যাথমেটিকার চেয়ে মজাদার।
লিরটোসিয়াসট

2
@Tryth এমনকি খাটো: "4thuXI"। এমনকি আপনি বছরের মধ্যে স্থান ফেলে দিতে পারেন "4thuXI2015"
আলেকজান্ডার ও'মারা

1
কমান্ড লাইন বিকল্প ব্যবহার -F, ইনপুট সংক্ষিপ্ত করা যেতে পারে "4thuXI$argn"
প্রিমো

3
অপেক্ষা করুন, এটি আসলে কাজ করে? এটি ... এটি ঠিক ... আমি এমনকি করি না ...
ইটিএইচ প্রোডাকশন

1
আমার জন্য কাজ করে । আমি যখন এটিতে আছি, তখন Mdকোনও E_NOTICEঅক্ষম অক্ষরের সাথে কোনও উদ্ধৃতি দরকার নেই ।
primo

18

গণিত, 59 38 বাইট

DayRange[{#,11},{#,12},Thursday][[4]]&

+1 চালাক সেখানে WolframAlpha["Thanksgiving " <> #] &স্ট্রিং হিসাবে তারিখটি প্রবেশ করানো হয়।
ডেভিডসি

ওল্ফ্রামআল্ফা মার্কিন থ্যাঙ্কসগিভিং দিনের তারিখগুলি 1863 সাল থেকে ফেরত দিয়েছে (যখন লিংকন এটিকে নভেম্বরের শেষ বৃহস্পতিবার হিসাবে ঘোষণা করেছিল) ward মার্কিন 1789. যেহেতু কৃতজ্ঞতাজ্ঞাপন পরিলক্ষিত হয়েছে
DavidC

@ ডেভিডকারারহর যাইহোক, ওপিতে বলা হয়েছে যে প্রোগ্রামটি কমপক্ষে 0 - 9999 সিইয়ের জন্য কাজ করতে হবে
লেজিওনম্যামাল 978

17

জাভাস্ক্রিপ্ট (ES6), 42 40 31 বাইট - 25% = 23.25

a=>28.11-new Date(a,8).getDay()

যেহেতু তারিখটি "কোনও যুক্তিসঙ্গত বিন্যাসে থাকতে পারে", তাই এই ফাংশনটি ব্যবহার করে DD.MM। আমি একটি আলাদা কৌশল দিয়ে একটি টিস্ক্রিপ্ট উত্তর লিখেছি , তবে এই সূত্রটি আরও ছোট ছিল।

ব্যাখ্যা

মাসগুলি শূন্য ভিত্তিক হওয়ায় নির্দিষ্ট বছরের ১ নভেম্বর প্রতিনিধিত্ব করে এমন new Date(a,10)একটি Dateবস্তু প্রদান করে।

যেহেতু আমরা মানচিত্র করতে চাই তা getDay()থেকে সপ্তাহের দিনের প্রতিনিধিত্ব করে এমন একটি নম্বর ফেরত দেয়0..6

Su Mo Tu We Th Fr Sa 
0  1  2  3  4  5  6  
to to to to to to to
4  3  2  1  0  6  5  

তারপর 22. যোগ এটা পরিনত হয় যে (11 - new Date(a,10).getDay()) % 7কৌতুক করতে হবে। @ থমাস কোওয়া যেমন উল্লেখ করেছেন, এটি 28-new Date(a,8).getDay()1 সেপ্টেম্বর সপ্তাহের 28 মাইনাসের সমান ।


ভাল সমাধান, আমি এটি সংক্ষিপ্ত এবং এটি এন্ট্রিগুলির বেশিরভাগের চেয়ে আরও বোধগম্য love
মার্কো গ্রেইক

16

জাপট , 43 37 36 35 29 বাইট - 25% = 21.75

Japt একটি সংক্ষিপ্ত সংস্করণ জা vaScri পর্তুগীজ ভাষায়

`{28.11-?w D?e(U,8).getDay()}

হাহাহা, আমি একটি সত্যই প্রতারণামূলক কৌশল পেয়েছি : অনুবাদক স্ট্রিংয়ের অভ্যন্তরে যে কোনও বন্ধনীগুলি সংশোধন করার সময় (কোড সন্নিবেশ করানোর জন্য ব্যবহৃত) উপেক্ষা করে, তাই বাইট সংরক্ষণ করতে আমরা পুরো উত্স কোডটি সংকোচিত করতে পারি>: ডি

দুটি ?গুলি যথাক্রমে ইউনিকোডের ছাপ ছাপানো U + 0098 এবং U + 0085 হওয়া উচিত। এটি অনলাইন চেষ্টা করুন!

সংক্ষেপণের পরে, কোডটি এটিকে মূল্যায়ন করে:

"{28.11-new Date(U,8).getDay()}"

যা মূল্যায়ন করে:

""+(28.11-new Date(U,8).getDay())+""

যা সঠিক আউটপুট দেয়।

বিন্যাসে আউটপুট তৈরি, ইন্ট্রিপিডকোডার এর কৌশল ব্যবহার করে dd.mm। সঠিকভাবে নেতিবাচক বছর সমর্থন করে। পরামর্শ স্বাগত!

সম্পাদনা করুন: ২ রা ডিসেম্বর পর্যন্ত আপনি এখন এই 11-বাইট কোডটি ব্যবহার করতে পারেন ( 8.25 পয়েন্ট স্কোর করে ):

28.11-ÐU8 e

(আমি আশা করি এটি খুব তাড়াতাড়ি বাস্তবায়ন করতাম!)


খুব সুন্দরভাবে সম্পন্ন হয়েছে।
বেকুল

এটি এখন ভ্যানিলা জাভাস্ক্রিপ্টের চেয়ে দীর্ঘ। টমাস কোয়ার একটি আরও সংক্ষিপ্ত সূত্র রয়েছে
ইন্ট্রিপিডকোডার

@ সিন্ট্রেপিডকোডার ধন্যবাদ, স্থির।
ETH প্রোডাকশনগুলি

12

Vitsy , 44 বাইট

আমি খাঁটি গণিত নিয়ে গণনা করছি !

Golfed:

Ve2 * থেকে V2-V41m + + Vaa থেকে * Dv1m-Vv4 * 1 মি + + 7 মিটার-Baa * / + + এন
/ D1M-

অবহেলিত (এটিকে পাঠ্যযোগ্য করার জন্য পদ্ধতি কলটি প্রথম লাইনে সরিয়ে নিয়েছে):

Ve2 * থেকে V2-V4 / D1M- + + Vaa থেকে * DV / D1M - Vv4 * / D1M- + + 7 মিটার-Baa * / + + এন

ভি চূড়ান্ত পরিবর্তনশীল হিসাবে ইনপুট সংরক্ষণ করুন।
 e2 * স্ট্যাকের দিকে 28 চাপুন।
    ভি স্ট্যাকের ইনপুট পুশ করুন।
     2- দুটি বিয়োগ।
       ভি 4 / ডি 1 এম- মেঝে পান (ইনপুট / 4)।
              এটি মোট যোগ করুন।
               বাহ * ডিভি / ডি 1 এম- মেঝে পান (ইনপুট / 100), এবং অস্থায়ী হিসাবে 100 সংরক্ষণ করুন
                                    প্রক্রিয়া পরিবর্তনশীল।
                          - এটি মোট থেকে বিয়োগ করুন।
                           ভিভি 4 * / ডি 1 এম- মেঝে পান (ইনপুট / 400)।
                                    এটি মোট যোগ করুন।
                                     সাত এম দ্বারা মডেলো।
                                       - 28 থেকে ফলাফল বিয়োগ করুন।
                                        বা * * + + যোগ করুন .11
                                              সংখ্যা হিসাবে এন আউটপুট।

বোধহয় এই জন্য একটি ভাল অ্যালগোরিদম (এবং এই সম্ভবত horridly golfed হয়), কিন্তু হতাশ তাদের জন্য, আমার অ্যালগরিদম থেকে আসে এখানে

এটি অনলাইন চেষ্টা করুন!

আমি এটি গণনা এবং ঠিক 42 বাইট জন্য বোনাস পয়েন্ট পেতে পারি? স্বপ্ন নষ্ট হয়ে গেছে।

আমি হোস্ট 250 এর প্রতি ধন্যবাদ জানাই যে আমি এটি ভুল করছি to : ডি স্থির।


2
না, তবে আপনি আমার কাছ থেকে একটি +1 পান;)
কনর ও'ব্রায়েন

এরা বলছে যে 2016 সালে কৃতজ্ঞতাজ্ঞাপন নভেম্বর 28. এটি সত্যিই নভেম্বর 24. হয়
Hosch250

@ হোছ 250 আপনি ঠিক বলেছেন - এখনই ঠিক হয়ে গেছে।
অ্যাডিসন ক্রম্প

10

পাইথন, 38 * 0.75 = 28.5 বাইট

lambda x:28.11-(x-2+x/4-x/100+x/400)%7

এটি প্রশ্নের মধ্যে নির্দিষ্ট পদ্ধতিতে নেতিবাচক বছরগুলির সাথে কাজ করে, যদিও এটি আমার নজরে এসেছে যে গ্রেগরিয়ান ক্যালেন্ডারে 0 বছর নেই তাই এই আচরণটি কিছুটা সন্দেহজনক।


1
আপনি ড্রপ করতে পারেন f=
শুক্রবার

1
নেতিবাচক তারিখগুলির জন্য এটি কীভাবে কাজ করে? পাইথনের মডুলো কি নেতিবাচক ক্ষেত্রে প্রযোজ্য? : ও
অ্যাডিসন ক্রম্প

স্ট্রিং "Nov "+`...`
রেপগুলি

@ ভোটটোক্লোস পাইথন মডুলো দ্বিতীয় যুক্তির মতো একই চিহ্ন সহ একটি উত্তর দেয়। সুতরাং -40%7==2তবে-40%-7==-5
কুইন্টোপিয়া

@ কুইন্টোপিয়া অপেক্ষা করুন, ধরে থাকুন, আমি একজন বোকা। ঠিক আছে. এটা বোধগম্য.
অ্যাডিসন ক্রম্প

10

জাভাস্ক্রিপ্ট (ES6), 43.5

আসল বাইট গণনা 58. -25% এর বোনাস প্রযোজ্য => 58 * 0.75 = 43.5

s=>new Date(s,10,(a=new Date(s,10).getDay())<5?26-a:a+21)

কোনও জটিল কাজকর্ম বা গণনা ছাড়াই দুর্দান্ত সোজা এবং নির্বোধ উপায়।

ডি-গল্ফ (ES5) + ডেমো:

function t(s) {
    a = new Date(s, 10).getDay();
    alert(new Date(s,10,a<=4?26-a:a+21))
}

t(prompt())

দ্রষ্টব্য, যে প্রবেশের বছর 0-100 1900-2000 বছর উত্পাদন করে। যদিও, দেখে মনে হচ্ছে 0-100 বছর অন্যান্য উত্তর থেকে বিচার করে 1900-2000 হিসাবে একই তারিখ দেয়।


এর সাথে প্রতিস্থাপন a+18করা হচ্ছে 22, কারণ এটি কেবল "অন্য" তে বলা হয়, এবং "অন্য" কেবল তখনই ঘটে যখন ক না 4 বা তার চেয়ে কম হয়, ঠিক 4 হয়।


a<4?26-a:a>4?a+21:22সঙ্গে প্রতিস্থাপনa<=4?26-a:a+21


2
আমি ভুল হলে ক্ষমা করি, তবে এর a<4?x:a>4?y:a+18সমান নয় a<4?x:a>4?y:22?
ETH প্রোডাকশনগুলি

বিটিডাব্লু, এটি আমাকে ০ থেকে ৯৯ এর মধ্যে কোনও ইনপুট দেওয়ার জন্য ভুল বছরটি বলে।
ETH প্রোডাকশনগুলি

@ ইও এলএল অবশ্যই আপনি ঠিক বলেছেন, 4 + 18 বলে মনে করেন না: ডি
নিকেল

@ এইচএম, 0 থেকে 99 আসলেই ভুল, আমার এটি ঠিক করার চেষ্টা করুন।
নিকেল

@ এটিকে দেখে মনে হচ্ছে 0-100 একই তারিখটি দিয়েছে 1900-2000, অন্য উত্তরগুলি থেকে বিচার করে।
নিকেল

8

টিস্ক্রিপ্ট, 35 33 24 বাইট - 25% = 18

28.11-new D(x,8).getDay¡

এটি আমার জাভাস্ক্রিপ্ট উত্তরের মতো একই পদ্ধতি , যা থমাস কোয়ার চালাক সূত্র ব্যবহার করে।

ব্যাখ্যা সহ বিকল্প সংস্করণ

r(22,28)F(#/h/t(new D(x,10,l)))+'-11'

r(22,28)    // Range from 22 to 28
        F(    // filter, keeps elements for which the function returns true. 
          #    // Expands to function(l,i,a,b)
           /h/    // RegExp literal, Thursday is the only day with an 'h'.
              t(    // test, true if date string contains an 'h'.
                new D(x,10,l) // Create date object
                             ))+'-11' // Append '-11' for the month.

এটি 35 টি অক্ষর, তবে :) কারণে 36 বাইট
নিকেল

@ এনিকায়েল এই সাইটের দ্বারা নয় , এটি নয়;)
ইটিএইচ প্রোডাকশনস

এইচএম, মোটেরেফ.ইন . / এর সাথে 36 পেয়ে যাচ্ছে getting
নিকেল

@ ডাউনগোট সাধারণত এই ফর্ম্যাটটি ব্যবহার করে , এতে ইউ + 00 এফএফ পর্যন্ত সমস্ত অক্ষর 1 বাইট হয়।
ETH প্রোডাকশনগুলি

5

জাইথন, 141 155 বাইট

পাইথন সিনট্যাক্স সহ জাভা ক্যালেন্ডার এবং স্ক্যানার ক্লাস ব্যবহার করে।

import java.util.Scanner as s;import java.util.Calendar as c
d=c.getInstance();k=s(System.in);d.set(c.YEAR,k.nextInt());d.set(c.DAY_OF_WEEK,c.THURSDAY)

সম্পাদনা করুন: গৌণ সিনট্যাক্স সমস্যাগুলি, 14 বাইট যুক্ত করা হয়েছে।

আমার ব্রেইনফাক সংস্করণটিও দেখুন।


5

পাইথন, 83 81 78 বাইট

from datetime import*
lambda a:'Nov '+`((10-datetime(a,11,1).weekday())%7)+22`
  • -২ বাইট: আমদানিতে একটি নাম যুক্ত করেছেন (ধন্যবাদ @ Κριτικσι Λίθος)
  • -1 বাইট: * আমদানি ** এ পরিবর্তিত হয়েছে (ধন্যবাদ @ ফ্রাইএইমডিজম্যান)
  • -২ বাইট: দিনটি রূপান্তর করতে পুনরায় পরিবর্তন করা হয়েছে (ধন্যবাদ @ উইলিয়াম)

1
বাইট গণনা হ্রাস করার জন্য কেবলমাত্র একটি পরামর্শ: ব্যবহার করুন import datetime as dএবং তারপরে আপনি আপনার প্রোগ্রামে dপ্রতিটি সময় ব্যবহার করতে পারবেন datetime
ক্রিটসি লিথোস

2
আপনি পান্ডার চেষ্টা করতে পারেন। import pandas;print'Nov '+`((10-pandas.datetime(input(),11,1).weekday())%7)+22`
উইলেম

@ ΚριτικσιΛίθος কিন্তু তারপরে ডেটটাইম.ডেটটাইম কেবলমাত্র ডেটটাইম হবে, তাই না?
তানমাথ

2
from datetime import*এমনকি আরও খাটো, কারণ আপনার আর d.কোনও প্রয়োজন হবে না
FryAmTheEggman

5

এক্সেল, 367 154 53 - 25% = 39.75 বাইট

ধরে নিই বছর তারিখ ফরম্যাটে সেল এ 1 তে অনুষ্ঠিত হয়। নভেম্বর মাসে দিনের পূর্ণসংখ্যার সংখ্যাটি দেয় যেখানে থ্যাঙ্কসগিভিং অনুষ্ঠিত হয়।

এটি কেবল সাধারণ লিপ বছরের জন্য অ্যাকাউন্টগুলি। 2100, 2200, 2300 বছরগুলি লিপ বছর নয় এই সত্যের জন্য এটি অ্যাকাউন্টে আসে না।

এটি কেবল 1621 এর জন্য কাজ করার জন্য ডিজাইন করা হয়েছে - যেহেতু থ্যাঙ্কসগিভিং অনুষ্ঠিত হতে শুরু করে। (যদিও এটি অবশ্যই 0 খ্রিস্টাব্দে সমস্ত পথে কাজ করবে)।

=IF(MOD(YEAR(A1),4)=0,IF(WEEKDAY(305+DATEVALUE(("01/01/"&TEXT(A1,"yyyy"))))<6,1127-WEEKDAY(305+DATEVALUE(("01/01/"&TEXT(A1,"yyyy")))),1134-WEEKDAY(305+DATEVALUE(("01/01/"&TEXT(A1,"yyyy"))))),IF(WEEKDAY(304+DATEVALUE(("01/01/"&TEXT(A1,"yyyy"))))<6,1127-WEEKDAY(304+DATEVALUE(("01/01/"&TEXT(A1,"yyyy")))),1134-WEEKDAY(304+DATEVALUE(("01/01/"&TEXT(A1,"yyyy"))))))

প্রিটি-প্রিন্ট:

=IF(MOD(YEAR(A1),4)=0,
    IF(WEEKDAY(305+DATEVALUE(("01/01/"&TEXT(A1,"yyyy"))))<6,
       1127-WEEKDAY(305+DATEVALUE(("01/01/"&TEXT(A1,"yyyy")))),
       1134-WEEKDAY(305+DATEVALUE(("01/01/"&TEXT(A1,"yyyy"))))),
    IF(WEEKDAY(304+DATEVALUE(("01/01/"&TEXT(A1,"yyyy"))))<6,
       1127-WEEKDAY(304+DATEVALUE(("01/01/"&TEXT(A1,"yyyy")))),
       1134-WEEKDAY(304+DATEVALUE(("01/01/"&TEXT(A1,"yyyy"))))))

গাহ! ২৯ শে জানুয়ারীর উপর ভিত্তি করে গণনা করার পরিবর্তে, ২৯ শে ফেব্রুয়ারির সাথে লড়াই করার জন্য প্রচুর লিপ ইয়ার গণনা করা উচিত নয়, আমার 1 ই নভেম্বর তারিখের উপর ভিত্তি করে গণনা করা উচিত ছিল। এনবি এখন 2100, 2200 এবং 2300 বছরের সাথে সঠিকভাবে ডিল করে , কিন্তু বাস্তবায়নটিকে আপনার এক্সেল ইনস্টলেশনের ডিফল্ট তারিখের বিন্যাসের উপর নির্ভর করে। এই সংস্করণটি ডিডি / মিমি / ইয়াহির জন্য ডিজাইন করা হয়েছে:

 =IF(WEEKDAY(DATEVALUE(("01/11/"&TEXT(C1,"yyyy"))))<6,  
     1127-WEEKDAY(DATEVALUE(("01/11/"&TEXT(C1,"yyyy")))),
     1134-WEEKDAY(DATEVALUE(("01/11/"&TEXT(C1,"yyyy")))))

এবং এখন যেহেতু আমি স্মলটালকে একটি সংশ্লেষ গণনা পাওয়ার জন্য পেফিং করেছি, এটি এক্সেলের ফলাফলকে ব্যাকপোর্ট করে ফলাফল:

=DATE(A1,11,MOD(12-WEEKDAY(DATE(9600+A1,11,1)),7)+22)

(বছরটি এখনও এ 1 এ রয়েছে তবে পূর্ণসংখ্যা হিসাবে) এটি থমাস কোয়ের তারিখের পুনরাবৃত্তি কৌশল ব্যবহার করে 7700০০ বিবিসি / ই থেকে সমস্ত তারিখের জন্য 2100, 2200 এবং 2300 বছর ধরেও কাজ করে।


1
যখন আমি 1900 এর পূর্বের তারিখগুলি সহ এটি চেষ্টা করি তবে এটি আমার এক্সেলের অনুলিপিটিতে কাজ করে না।
অ্যাঞ্জেলো ফুকস

দীর্ঘ সংস্করণটি তেমন কাজ করে না।
অ্যাঞ্জেলো ফুকস

পুরানো তারিখগুলির জন্য, এক্সেল ব্যবহারকারীর 1900 পূর্বের তারিখের কার্য পুস্তকটি ব্যবহার করুন। < exceluser.com/downloads/example/post_900_123/index.html >
ইউয়ান এম

এটি একপাশে কাজ করে কিনা সে সম্পর্কে প্রশ্নগুলি, আমি মনে করি না আপনাকে নভেম্বরের ঠিক তারিখের আউটপুট দেওয়ার অনুমতি দেওয়া হয়েছে; আপনার কোনও রূপে একটি "নভেম্বর" বা "11" দরকার।
lirtosiast

@ থমাস কোওয়া তারিখের ইনপুটটি বছর, তারিখের ফর্ম্যাটে। তারপরে গণনাটি সপ্তাহের প্রথম দিনটি কার্যকর করে যে ১ লা নভেম্বর পড়েছে, তারপরে নভেম্বরে চতুর্থ বৃহস্পতিবার কোন তারিখটি গণনা করে।
ইউয়ান এম

4

পাওয়ারশেল, 67 64 84 72 58 45 বাইট

param($a)'Nov';28-(date "00$a/9/1").DayOfWeek

আমরা আমাদের ইনপুট পূর্ণসংখ্যার হিসাবে $aএবং অবিলম্বে আউটপুট Novএবং একটি নতুন লাইন নিই take তারপরে আমরা নতুন জেনারেট $aকরার 00$a/9/1আগে dateএবং DayOfWeekএটি কী তা নির্ধারণের আগে 1 লা সেপ্টেম্বর জিরো এবং এটিকে প্রিপেন্ড করি । যদি 1 লা সেপ্টেম্বর রবিবার হয় ( .DayOfWeekসমান 0), থ্যাঙ্কসগিভিং 28 তারিখে। যদি 1 লা সেপ্টেম্বর সোমবার হয় ( .DayOfWeekসমান 1) তবে থ্যাঙ্কসগিভিং 27 তারিখে। ইত্যাদি। সুতরাং, আমরা 28আমাদের উত্তর আউটপুট থেকে সপ্তাহের সেই দিনটি বিয়োগ করি ।

ডাবল-শূণ্যগুলির সাথে প্রস্তুতি তিন বা চার-অঙ্ক বছরের জন্য পার্সিং ব্যাহত না করে একক এবং দ্বিগুণ অঙ্কের বছরগুলিতে অ্যাকাউন্ট করে। Nণাত্মক সংখ্যার জন্য কাজ datetimeকরে না , যেমন নেট নেট বছরের চেয়ে কম বছর সমর্থন করে না 0

এটিতে সহায়তার জন্য টেসেল্লাটিংহেকলার এবং টবি স্পিডকে ধন্যবাদ ।


"{0:D3}/Nov/$_" -f $aএর চেয়ে সংক্ষিপ্ত "$($a.ToString("000"))/Nov/$_"এবং একই ফলাফল উত্পাদন করে এবং আমি মনে করি আপনি এর 11পরিবর্তে ব্যবহার করতে পারবেনNov
n0rd

@ n0rd আহ, দুর্দান্ত! হ্যাঁ - Novআমি যখন দু'বছরের বছরটি সঠিকভাবে সনাক্ত করার চেষ্টা করছিলাম তখন থেকে সেই অবশিষ্টাংশটি ছিল, তাই আমি এটিকেও সরিয়ে দেব। ধন্যবাদ!
অ্যাডমবর্কবার্ক

@ টেসেল্লাটিংহেকলার যে পদ্ধতির কাজ করে, তবে আপনাকে এক অঙ্কের বছর হিসাবে হিসাব করতে দুটি জিরোকে কিনে ফেলতে হবে, অন্যথায় আপনি যে 20XX এ এসেছিলেন সেখানে ফিরে এসেছেন। সহায়তার জন্য ধন্যবাদ - আমি উত্তর আপডেট করেছি।
অ্যাডমবর্কবার্ক

1
@ টেসেল্লাটিংহেকলার আমার সিস্টেমে কমপক্ষে সিঙ্গেল-ডিজিট বছরগুলিকে date "11/1/$a"ফলাফলের মধ্যে ইনপুট করে Thursday, November 1, 2007 12:00:00 AM। এটি কারণ আমরা ক্যালেন্ডার সম্পাদনা করছি না wo দু'ডিজিটইয়ারম্যাক্স সম্পত্তিটি, সুতরাং এটি যখন বিশ্লেষণ করে তখন আমরা তার কাছাকাছি যেতে ডাবল-শূন্য-প্যাডিংয়ের সাথে আটকে থাকি।
অ্যাডমবর্কবর্ক

ঠিক, ঠিক. ডাবল প্যাডিং এটি।
টেসেল্ল্যাটিংহেকলার

3

গল্ফস্ক্রিপ্ট, 25 * 0.75 = 18.75 বাইট

~.4/.25/.4/2---+7%28\--11

এটি সপ্তাহের দিনের জন্য সাকামোটোর সূত্র ব্যবহার করে। যেহেতু লোকেরা এটি করছে তাই আউটপুটটি আকারে dd-mm। আমার আগের জমাটি নীচে পাওয়া যাবে:

~.4/.25/.4/2---+7%"Nov "28@-

3

টিএসকিউএল, 478 296 বাইট

শুধু মজাদার জন্য। সাধারণত, এটিকে একটি সাধারণ করার জন্য আপনার কাছে একটি তারিখের মাত্রিক সারণী থাকতে হবে select * from dimDate where [Year] = @Year and [Holiday] = 'Thanksgiving'তবে তার অভাবে ...

create function a(@y varchar(4))returns date as begin declare @d date,@i int=0 set @d=convert(date,@y+'-11-01')declare @t table(d date,c int identity)while @i<28 begin if datepart(weekday,@d)=5 insert @t(d) select @d select @d=dateadd(d,1,@d),@i+=1 end select @d=d from @t where c=4 return @d end

Ungolfed:

if exists(select * from sys.objects where name='a' and [type]='FN') drop function a
go

create function a(@y varchar(4))returns date
-- select dbo.a('2015')
as
begin
    declare @d date,@i int=0;

    set @d=convert(date,@y+'-11-01'); -- cannot golf out dashes for dates <year 1000

    declare @t table(d date,c int identity)

    while @i<28 
    begin -- populate "November" array
        if datepart(weekday,@d)=5 insert @t(d) select @d -- assumes @@datefirst = 7
        select @d=dateadd(d,1,@d),@i+=1
    end;

    select @d=d from @t where c=4 

    return @d

end

আসলেই কি এটাই সবচেয়ে ছোট?
lirtosiast

আমি মনে করি আমি কোড গল্ফের নিয়মগুলির সাথে পরিচিত নাও হতে পারি, তবে উত্তরটি এমন একটি ডিবি অবজেক্ট তৈরি করে যা ইনপুট গ্রহণ করে এবং ওপির সাথে মিলিয়ে আউটপুট ফেরত দেয়। কিছু স্পষ্ট সংক্ষিপ্তকরণ ঘটতে পারে যা ইনপুটটিকে ইনলাইন কোডে গ্রহণ করা যেতে পারে তবে ফাংশন অবজেক্টের ধরণের জন্য এটি আমার চিন্তা ছিল। আমি নিশ্চিত যে এটি উভয় ক্ষেত্রে আরও গল্ফ করা যেতে পারে। @ থমাসকওয়া, আপনার কি পরামর্শ আছে?
পিটার ভ্যান্ডিভিয়ার

ঠিক আছে, আমার কাছে মনে হচ্ছে আপনি খাঁটি গণিত সূত্রটি ব্যবহার করতে পারেন যা এই উত্তরে উল্লেখ করা হয়েছে এবং সমস্ত তারিখের অবজেক্টের জিনিস নিয়ে বিরক্ত করবেন না।
lirtosiast

খাঁটি গণিতের সমাধানটি কঠোরভাবে নয়, তবে এই উত্তরটি পড়ার ফলে আমার 200 টি চরিত্রের গল্ফ সম্পর্কে কিছু ধারণা পাওয়া গেছে। ধন্যবাদ !!
পিটার ভ্যানডিভিয়ার

(আমি বোঝাতে চেয়েছিলাম (28 - ( x - 2 + floor(x / 4) - floor(x / 100) + floor(x / 400) ) % 7) হ্যাঁ, অন্যান্য উত্তরগুলি পড়তে অনেক সাহায্য হয়।
lirtosiast

3

পাইথ, 30 28 * 75% = 21 বাইট

আমি 100% ইতিবাচক যে এটি আরও ছোট করা যেতে পারে, তবে ওহে, এটি আমার প্রথম পাইথ প্রোগ্রাম! \ ণ /

-28.11%+-+-Q2/Q4/Q100/Q400 7

পরীক্ষা স্যুট

dd.mmফর্ম্যাটে তারিখ আউটপুট করে ।

দয়া করে গলফ করার উপায় এই যদি আপনি করতে পারেন সুপারিশ! আমি পাইথ সম্পর্কে আরও জানতে চাই।


2

সীমা অতিক্রম করা, 64 48

এ 1 সালে বছর

= তারিখ (A1,11, CHOOSE (WEEKDAY এ (তারিখ (A1,11,1)), 26,25,24,23,22,28,27))

=DATE(A1,11,MOD(12-WEEKDAY(DATE(A1,11,1)),7)+22)

এক্সেল যেমন স্থানীয়করণ ভিত্তিক এবং আমি এটি পরীক্ষা করতে চাই। ফাংশনগুলি কী করে তা দয়া করে ব্যাখ্যা করুন, তাই আমি আমার ভাষায় যথাযথটি নির্বাচন করতে পারি।
অ্যাঞ্জেলো ফুকস

1
এছাড়াও, এটি 1900 এর পূর্বে তারিখগুলির জন্য কাজ করে না (কমপক্ষে আমার এক্সেলের অনুলিপিতে)
অ্যাঞ্জেলো ফুকস

এছাড়াও, আপনি 13বাইটগুলি সংরক্ষণ TEXTকরেছেন =TEXT(DATE(A1,11,MOD(12-WEEKDAY(DATE(A1,11,1)),7)+22),"d mmm")- আউটপুট বিন্যাস ছাড়াই একটি পূর্ণসংখ্যা।
ব্যবহারকারী 3819867

@ ব্যবহারকারী 3819867, এটিই এক্সেল তার তারিখগুলি সঞ্চয় করে। বিন্যাসটি ব্যবহারকারীর কাছে রেখে দেওয়া হয়েছে
SeanC

@ অ্যাঞ্জেলোফুচস, তারিখটি বছর, মাস, দিনকে প্যারামিটার হিসাবে ব্যবহার করে একটি তারিখের মান দেয়। এমওডি একটি বিভাগের বাকি অংশ (মডুলাস) প্রদান করে। উইকএডিএই এক তারিখের সপ্তাহের দিন (1 = রবিবার, 2 = সোমবার, ইত্যাদি) ফেরত দেয়।
সানসি

2

বেফুঞ্জ, 41 বাইট

47*&:::4"d"*/\"d"/-\4/++5+7%-" voN",,,,.@

চালান এই ব্যাখ্যাকারী

ব্যাখ্যা: একটি সাধারণ বছর ৩ 36৫ = ১ মডি days দিন, সুতরাং বছরটি প্রতি চার তম বছরে বিয়োগফল প্রতি ১০০ তম ( dএসসিআই তে) প্রতি বছর ৪০০ তম বছরে যে কোনও লিপ দিবস (বর্তমান বছর সহ) জন্য অ্যাকাউন্ট করে । এর ফলস্বরূপ :::4"d"*/\"d"/-\4/++5 মার্চ , ফেব্রুয়ারির পরের প্রথম দিনটি সাধারণ বছরের মধ্যে বছরের প্রথম দিন হিসাবে একই দিনে পড়ার কথা ভাবা যেতে পারে । এর পরে আমরা নভেম্বরের 5+7%-২৮ তম ( 47*পূর্বে সঞ্চিত) থেকে সপ্তাহের বেশ কয়েকটি দিন বিয়োগ করে প্যাটার্নটিতে ক্যালিব্রেট করি । তারপরে প্রিন্ট করুন।

বিসি বছরগুলিতে সংশোধন করার একটি সংস্করণ বর্তমানে বোনাসের সরবরাহের চেয়ে দীর্ঘতর, 59 -25% = 44.25 বাইটে:

47*&v
!`0:<+*"(F"_v#
" voN",,,,.@>:::4"d"*/\"d"/-\4/++5+7%-


2

রুবি, 60 58 57 * 0.75 = 42.75 বাইট

->y{puts"Nov #{[5,4,3,2,1,7,6][Time.new(y,11).wday]+21}"}

58 বাইট

->y{puts "Nov #{[5,4,3,2,1,7,6][Time.new(y,11).wday]+21}"}

60 বাইট

->y{puts "Nov #{[5,4,3,2,1,7,6][Time.new(y,11,1).wday]+21}"}

Ungolfed:

-> y {
  puts "Nov #{[5,4,3,2,1,7,6][Time.new(y,11).wday]+21}"
}

ব্যবহার:

->y{puts"Nov #{[5,4,3,2,1,7,6][Time.new(y,11).wday]+21}"}

=> Nov 26

0

ভিবিএ, 124 বাইট * 75% = 93 বাইট

Function e(y)
For i = 1 To 7
x = DateSerial(y, 11, 21) + i
If Weekday(x) = 5 Then e = Format(x, "mmm dd")
Next
End Function

আমি নিশ্চিত নই যে স্পেসগুলি গণনা করা হয়, এটি কোথাও 102 এবং 124 এর মধ্যে, সম্পাদনা করতে নির্দ্বিধায়।
পূর্ণসংখ্যাগুলি যদি একটি বৈধ আউটপুট হয় তবে আমি Formatঅংশটি সরিয়ে খুশি ।


স্পেস গণনা; যদি তারা প্রোগ্রামটির অপ্রয়োজনীয় হয় তবে আপনি এগুলি সরাতে পারেন।
lirtosiast

0

পিএইচপি 5.3+, 59 বাইট

strtotimeতারিখটি বিশ্লেষণ করতে এটি পিএইচপি বিল্টিন ফাংশন ব্যবহার করে।

<?=gmdate('M d',strtotime("Next Thursday $_GET[Y]-11-19"));

এটি প্রত্যাশা করে যে মানটি জিইটি প্যারামিটার Y বা ওভারের বাইরে চলে যাবে php-cli Y=<year>

এটি 19 নভেম্বর পরে পরবর্তী বৃহস্পতিবার সন্ধান করার চেষ্টা করে।
এখনও অবধি, আমি যে পরীক্ষাগুলি দিয়েছি তা দিয়ে ঠিকঠাক কাজ করে।

সচেতন থাকুন যে 2-অঙ্কের বছরগুলি আলাদাভাবে ব্যাখ্যা করা যেতে পারে।

আমি gmdateটাইমজোন সমস্যাগুলি এড়াতে ব্যবহার করি তবে এটি date(কমপক্ষে, আমি যেখানে থাকি) ব্যবহার করে এটি সমানভাবে ভাল কাজ করে।


1
একটি ইনপুট পদ্ধতির বৈধতা নিয়ে আলোচনা করার জন্য একটি উত্তর উপযুক্ত জায়গা নয়। আমি ডিফল্ট আই / ও মেটা পোস্টে এই বিকল্পটি তৈরি করেছি (যাতে সম্প্রদায়টি এতে ভোট দিতে পারে) এবং আপনার কথোপকথনে চ্যাটে সরিয়ে নিয়েছে । (সিসি @ মেগো)
ডেনিস

0

টি-এসকিউএল 215 বাইট 248 * 0.75 = 186 বাইট

create function t(@y int)returns table return select x=convert(char(6),x,107)from(select x=cast(dateadd(dd,d,dateadd(yy,@y-2015+7600,'20151101'))as date)from(select d=21+n from(values(0),(1),(2),(3),(4),(5),(6))b(n))c)t where datepart(weekday,x)=5

Ungolfed

set nocount on;
if object_id('dbo.t') is not null drop function dbo.t
go

create function t(@y int)returns table return
    select x=convert(char(6),x,107)
    from (
        select
        x=cast(dateadd(dd,d,dateadd(yy,@y-2015+7600,'20151101'))as date)
        from (
            select d=21+n 
            from (values (0),(1),(2),(3),(4),(5),(6))b(n)
        )c
    )t
    where datepart(weekday,x)=5
go

যা এই পরীক্ষার ভারা দিয়ে

select 
  [ 2015 = Nov. 26]=(select x from dbo.t( 2015))
 ,[ 1917 = Nov. 22]=(select x from dbo.t( 1917))
 ,[ 1752 = Nov. 23]=(select x from dbo.t( 1752))
 ,[ 1582 = Nov. 25]=(select x from dbo.t( 1582))
 ,[ 1400 = Nov. 27]=(select x from dbo.t( 1400))
 ,[ -480 = Nov. 25]=(select x from dbo.t( -480))
 ,[-5480 = Nov. 28]=(select x from dbo.t(-5480))
;
go

পছন্দসই হিসাবে ফলন

2015 = Nov. 26  1917 = Nov. 22  1752 = Nov. 23  1582 = Nov. 25  1400 = Nov. 27  -480 = Nov. 25 -5480 = Nov. 28
--------------- --------------- --------------- --------------- --------------- --------------- ---------------
Nov 26          Nov 22          Nov 23          Nov 25          Nov 27          Nov 25          Nov 28

0

পাইক , 87 91 107 77 76 বাইট - 25% = 57

string t(int y){return"Nov "+((11-Calendar.Day(y,11,1)->week_day())%7+22);}

পুরানোটিকে তুলনা করার জন্য ছেড়ে দেওয়া কারণ আমি ক্যালেন্ডার মডিউলটির সুবিধা নেওয়ার ক্ষেত্রে এটি আরও চালাক বলে মনে করি, তবে উপরেরটিটি আরও ছোট sh

string t(int y){object n=Calendar.Month(y,11);return"Nov "+(n->weeks()->day(4)&n->days())[3]->month_day();}

এটি ইনপুট নেবে বলে মনে হচ্ছে না।
পিটার টেলর

হ্যাঁ, আমি এতে বিভ্রান্ত হয়ে পড়েছিলাম, কিছু সমাধানের একটি ফাংশন সংজ্ঞা রয়েছে এবং কিছু কিছু কেবল এমন একটি পরিবর্তনশীল ব্যবহার করে যা কোথাও সংজ্ঞায়িত হয় না, তাই বাইটকাউন্টের জন্য আমার কী ব্যবহার করা উচিত তা আমি নিশ্চিত নই।
ইএমবি

আমি মনে করি যে আপনি যে উত্তরগুলি " যে কোনও স্থানে সংজ্ঞাযুক্ত নয় এমন ভেরিয়েবল " হিসাবে ব্যবহার করছেন তা বাস্তবে খুব সংক্ষিপ্ত ফাংশন ডিক্লেয়ারেশন সিনট্যাক্স ব্যবহার করছেন। এমন এক বা দুটি উত্তর রয়েছে যা এসোলাংগুলি ব্যবহার করে যার স্টিডিনের জন্য বিশেষ চিকিত্সা রয়েছে এবং তাই পুরো প্রোগ্রামগুলি লেখার পক্ষে। আমি পাইকে চিনি না, তবে আপনি যদি হোয়াইটস্পেস সরিয়ে ফাংশনটির নামটি সংক্ষিপ্ত করতে পারেন string t(int y){object n=Calendar.Month(y,11);return"Nov "+(n->weeks()->day(4)&n->days())[3]->month_day();}তবে আমি এটিকে 107 বাইট হিসাবে গণনা করি।
পিটার টেলর

আমি ভেবেছিলাম যে আমি কয়েকটি দেখেছি যা ফাংশন ঘোষণা ছিল না, তবে সেগুলি স্থির হয়ে গেছে বলে মনে হচ্ছে, কেবল ছোট্টালকের উদাহরণই খাপ খায় না। যদি তা বৈধ হয় তবে আমি
এইটির

স্মার্টটাক সংস্করণটি একটি প্রোগ্রাম হিসাবে লেখা - বিশেষত একটি ওয়ার্কস্পেস এক্সপ্রেশন। আমাদের জানানো হয়েছিল যে ইনপুট চাওয়ার চেয়ে আমাদের একটি ইনপুট দেওয়া হয়েছে।
ইউয়ান এম

0

স্মলটাক - স্কেক এবং ফরো , 69 57 54 49 35 34 33 32 - 25% = 24 বাইট

"নভে এনএন": 69 বি 49 বি (-25% = 36.75 বি) 11
এনএন (অ্যান্ট): 57 54 32 বি (-25% = 24 বি)

"Year supplied as an integer value, y  
 Result provided as an integer value, 11nn
 Methods Date>>y:m:d: and >>w created as duplicates 
 of year:month:day and weekdayIndex"
(12-(Date y:y m:11d:1)w)\\7+1122

পূর্বের সংস্করণসমূহ

11nn আউটপুট

"Year supplied as an integer value, y  
 Result provided as an integer value, 11nn"
(12-(Date year:y month:11 day:1) weekdayIndex)\\7+1122

"Year supplied as an integer value, y  
 Result provided as an integer value, d, prefixed by 11"
d:=(12-(Date year:y month:11 day:1) weekdayIndex)\\7+1122

নভেম্বর এনএন আউটপুট

"Year supplied as an integer value, y  Result provided as a string, 'Nov nn'"
'Nov ', (12-(Date year:y month:11 day:1) weekdayIndex\\7+22) asString

এনএন আউটপুট

"Year supplied as an integer value, y  Result provided as an integer value, d"
d:=(12-(Date year:y month:11 day:1) weekdayIndex)\\7+22

nb এটি একটি প্রোগ্রাম হিসাবে সরবরাহ করা হয় - বিশেষত একটি ওয়ার্কস্পেস এক্সপ্রেশন - কোনও পদ্ধতি হিসাবে নয়।

এটি ধরে নিয়েছে ইনপুটটি একটি প্রদত্ত (বাক্স অনুসারে "আপ-টু-চার-অঙ্কের বছর দেওয়া হয়েছে"।
ইনপুটটি ঘোষণা করা এবং দেওয়া সহ আরও ১১ টি অক্ষর যুক্ত হবে:

|y|y:=2015.(12-(Date y:y m:11 d:1)w)\\7+1122

ইএমবিকে ধন্যবাদ, কীভাবে আরও একটি চর সরিয়ে নেওয়া যায় তা দেখানোর জন্য - 'ডাব্লু' এর পূর্বে হোয়াইটস্পেস।

আসলে, এটি আমাকে 'd:' এর আগে সাদা স্থান সরিয়ে দেওয়ার চেষ্টা করতে অনুপ্রাণিত করেছিল:
|y|y:=2015.(12-(Date y:y m:11d:1)w)\\7+1122
কোনটি কার্যকর!


ওপি'র স্পষ্টতা অনুসারে , দিনের নম্বর সংস্করণটি বৈধ নয়।
মেগো

আমি সম্মত - তবে তালিকায় বেশ কয়েকটি দিন-সংখ্যা-সংস্করণ দেওয়া আছে, আমি এটি আপেল থেকে আপেল তুলনা করার জন্য রেখেছি
ইউয়ান এম

0

জিএনইউ কোর্টিলস, 35 বাইট

seq -f$1-11-2%g 2 8|date -f-|grep h

কেবল বৃহস্পতিবারের জন্য 22-28 নভেম্বর সাপ্তাহিক সন্ধান করে। এটি কোনও সি বা পসিক্স লোকালে চালান, কারণ আমি বৃহস্পতিবারের উপর নির্ভর করি যে এটি 'এইচ' রাখার একমাত্র দিনের সংক্ষেপণ।


একটি চালক উত্তর এখানে, একটি বাইট দীর্ঘ দীর্ঘ যদিও:

echo Nov $((28-`date -d$1-5-5 +%w`))

আমরা মার্চ থেকে সেপ্টেম্বরের মধ্যে মোটামুটি স্বেচ্ছাচারিত সপ্তাহে একটি দিনের তারিখের সংখ্যাটি পুনরুদ্ধার করি (সুতরাং দিন এবং মাস প্রতিটি ডিজিট হয়, এবং আমরা সম্ভাব্য লিপ দিবসে প্রভাবিত হই না)। %w==0থ্যাঙ্কসগিভিং ২৮ শে তারিখে থাকাকালীন আমরা দিনটি বেছে নিই। তারপরে উপযুক্ত বৃহস্পতিবারটি পাওয়ার জন্য আমরা 28 থেকে এই মানটি বিয়োগ করতে পারি।


2
শন কনারি এটি চালনা না করে এটি কাজ করে।
বকুল

0

টিএসকিউএল, 53 52 বাইট

DECLARE @ CHAR(4)=2000

PRINT DATEADD(d,59,DATEDIFF(d,1,DATEADD(m,9,@))/7*7)

বেহালা

২ রা সেপ্টেম্বর বা তার আগে সোমবার গণনা করা এবং 59 দিন যুক্ত করা

(অক্টোবরের ৪ র্থ এর আগে বা অক্টোবরে সোমবার গণনা করা এবং ৩১ দিন যোগ করার চেয়ে ভাল কারণ অক্টোবরের দশম মাস তাই এভাবে 1 বাইট সংরক্ষণ করে)


-1

পার্ল, 92 বাইট

use Time::Local;(localtime(timelocal 0,0,0,$_,10,$ARGV[0]))[6]==4?print "Nov $_":0for 22..28

সম্পাদনা: স্থির আউটপুট ফর্ম্যাট, ফিক্সড বাগ যেমন 2012 ফলাফল, "ফরমেট" এর জন্য সংক্ষিপ্ত ব্যবহৃত হয়েছে used ধন্যবাদ msh210।


এই খাটো এবং একই জিনিস করে: use Time::Local;(localtime(timelocal 0,0,0,$_,10,$ARGV[0]))[6]==4?print:0for 22..29। তবে উভয় স্ক্রিপ্ট একই ত্রুটিগুলি ভুগছে: (1) তারা প্রয়োজন হিসাবে মাসের একটি উপস্থাপনা মুদ্রণ করে না; (২) উদাহরণস্বরূপ 2012 এর জন্য তাদের ভুল আউটপুট রয়েছে
msh210
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.