ক্রিসমাস পূর্বের বিন্যাসে তারিখটি এনকোড করুন


51

যেদিন এই পোস্টটি প্রকাশিত হয়েছিল সেদিন ছিল ক্রিসমাসের আগের দিন। আগামীকাল বড়দিন হবে। গতকাল ছিল ক্রিসমাসের আগের দিন। দুদিনেই হবে

Christmas Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve Eve

আপনার কাজটি হল প্রোগ্রামটি চালুর তারিখ গ্রহণ করা এবং ক্রিসমাস পূর্বের বিন্যাসে এটি এনকোড করা।

  • যদি আপনার প্রোগ্রামটি ক্রিসমাসে চালিত হয় তবে এর "ক্রিসমাস" স্ট্রিংটি আউটপুট করা উচিত।
  • যদি আপনার প্রোগ্রামটি ক্রিসমাসে না চালিত হয় তবে এর "ক্রিসমাস" স্ট্রিংটি আউটপুট করা উচিত, এরপরে "ইভ" বারবার nবার বলা উচিত, যেখানে nক্রিসমাস অবধি কত দিনের সংখ্যা থাকে।
    • নোট করুন যে এটি অবশ্যই পরবর্তী ক্রিসমাসের উপর ভিত্তি করে তৈরি করা উচিত । উদাহরণস্বরূপ, দিনটি 26 এপ্রিল, 2019 হয়, আপনাকে অবশ্যই 25 ডিসেম্বর, 2019 এর ভিত্তিতে আপনার গণনা করতে হবে, অন্য কোনও ক্রিসমাস নয়।
    • লিপ দিন গণনা মনে রাখবেন।
  • ক্রিসমাস প্রতি বছরের 25 শে ডিসেম্বর।

এটি , তাই সংক্ষিপ্ততম কোডটি জয়ী! যদিও লক্ষ্য করুন যে লক্ষ্যটি কোনও ভাষার মধ্যে সংক্ষিপ্ততম প্রোগ্রামটি নয়, প্রতিটি নির্দিষ্ট ভাষায় সংক্ষিপ্ততম প্রোগ্রামটি সন্ধান করা। উদাহরণস্বরূপ, যদি আপনি সবচেয়ে কম সি ++ প্রোগ্রামটি সন্ধান করেন তবে এটি সি ++ এর জন্য এই প্রতিযোগিতাটি জিতবে, এমনকি যদি কেউ পাইথনে একটি ছোট প্রোগ্রাম খুঁজে পায় finds


7
কোনওভাবে আমি জানতাম যে কার্টুনটি দেখেছি - এই মুহুর্তে এটি একটি পিপিজিজি চ্যালেঞ্জ হতে চলেছে - আমার কাছ থেকে +1
ব্ল্যাক আউল কাই

25
একটি এক্সকেসিডি কার্টুন যা আজ প্রকাশিত হয়েছিল। imgs.xkcd.com/comics/christmas_eve_eve.png
কালো আউল

7
@ ব্ল্যাকওলকাই LMBO আপনার মন্তব্য না হওয়া পর্যন্ত আমি সেই কমিকটিও দেখিনি। আমি ইতিমধ্যে এটি পোস্ট করার পরিকল্পনা করেছিলাম, এবং কেবল ক্রিসমাস পূর্বের অপেক্ষায় ছিলাম। মহান মন একসাথে ভাবেন, আমার ধারণা?
পাইরুলেজ

1
তারিখ একটি পরামিতি হতে পারে?
অলিভিয়ার গ্রাগোয়ার

1
@ অলিভিগ্রগ্রোওরে আহ, আমি যদি ভাষাটি বর্তমান উপায়ে অন্য কোনও উপায়ে পাওয়ার ক্ষমতা না রাখে তবে আমি এটির অনুমতি দেব।
পাইরুলেজ

উত্তর:


52

স্মাইলব্যাসিক, 73 71 67 বাইট

?"Christmas";
@L?" Eve"*(D!=P);
P=D
DTREAD OUT,M,D
IF M/D-.48GOTO@L

প্রোগ্রামটি "ক্রিসমাস" মুদ্রণ করে, তারপরে 25 ডিসেম্বর না হওয়া পর্যন্ত প্রতিবার যতবার পাস হয় "ইভ" মুদ্রণ করে। (12/25 = 0.48)
চালাতে এক বছর সময় লাগতে পারে।


7
খাঁটি প্রতিভা ...
ফ্লিপট্যাক

7
এটি আমাকে হাসিয়ে দিয়েছে ...
নীল

3
নিস! আমার জাভাস্ক্রিপ্ট সমাধানগুলির মধ্যে একটি একই ধরণের পদ্ধতি গ্রহণ করে। তবে জাভাস্ক্রিপ্টে অপেক্ষা করার সময়টি কেবল সেরা চেষ্টা। এই ক্ষেত্রে স্মাইলব্যাসিক কীভাবে চলছে?
তারগুমন

4
@ 12Me21 যা লিপ সেকেন্ডের কারণে স্পষ্টতই ব্যর্থ হবে, এই সংস্করণটি আরও ভাল দেখাচ্ছে।
আর

5
বক্সের বাইরে চিন্তা করতে এবং আমাকে হাসানোর জন্য +1।
টম

24

এক্সেল সূত্র, 59 বাইট

="Christmas"&REPT(" Eve",DATE(YEAR(NOW()+6),12,25)-TODAY())

4
আমি মনে করি YEAR(TODAY()+6)সবসময় সঠিক বছরটি ফিরে আসে, এইভাবে শর্তটি এড়িয়ে চলে।
নিল

3
আমি মনে করি YEAR(NOW()+6)2 টি কম বাইটের পাশাপাশি কাজ করে।
ইঞ্জিনিয়ার টোস্ট

2
আমি মনে করি = "ক্রিসমাস" এবং পুনরায় ("ইভ", তারিখ (বছর (এখন +)), 12,26) - এখন () খুব কম এবং আমি বিশ্বাস করি এটির কাজ করা উচিত।
জেরোয়েডেক

1
NOW()সময়টি অন্তর্ভুক্ত করে, সুতরাং এটি কোনও পূর্ণসংখ্যার হবে না এবং আমি নিশ্চিত না যে এটির REPTঅনুমতি দেয়।
12

2
তবে এটি ক্রিসমাসের দিন "ক্রিসমাস" দেয় না। চেক="Christmas"&REPT(" Eve",DATE(YEAR(DATE(2018,12,25)+6),12,26)-DATE(2018,12,25))
অ্যান্টনি

12

পার্ল 6 , 61 47 বাইট

'ক্রিসমাস' বলুন Eve 'ইভ'এক্স (তারিখ.আজ আজ ... month {। মাস == 12 && দিন; == 25})

say 'Christmas'~' Eve'x(Date.today...^/12\-25/)

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

-14 বাইট (!) জো কিংকে ধন্যবাদ

Date.today ...^ /12\-25/আজ থেকে শুরু হয়ে ক্রিসমাসের আগের দিন শেষ হওয়ার তারিখগুলির ক্রম। ( /12\-25/তারিখগুলির স্ট্রিং প্রতিনিধিত্বের সাথে নিয়মিত প্রকাশের সাথে মিলে যায়)) স্ট্রিংটি " Eve"সেই ক্রমের দৈর্ঘ্যের সমান সংখ্যক বারে প্রতিলিপি করা হয় এবং স্ট্রিংয়ের পরে আউটপুট হয় "Christmas"


বাইট সংরক্ষণ করতে আপনি কি "মাস> 11" করতে পারেন?
chrixbittinx

2
চান /12.25/কাজ করে?
কৃতিমিক লিথোস

2
@ চেক না, কারণ তারপরে এটি বছরের সাথে মিলতে পারে12025-12-24
জো কিং

আমি মনে করি এটি কখনই ঘটবে না এটি ধারণা করা নিরাপদ
12

8

আর , 112 106 72 বাইট

@ ডিজিএমএল এবং @ জে.ডো এর মাধ্যমে

x=Sys.Date()-1;cat('Christmas');while(!grepl('12-25',x<-x+1))cat(' Eve')

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

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

function(x,z=as.Date(paste0(strtoi(format(x,"%Y"))+0:1,"-12-25"))-x)cat("Christmas",rep("Eve",z[z>=0][1]))

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

ব্যাখ্যা: প্রত্যেকেরই গির্জার কাছে রয়েছে তাই আমার এই কাজ করার সময় আছে। বছরটি বের করুন, পূর্ণসংখ্যার জন্য বাধ্য করুন। সেই বছরের ক্রিসমাস এবং পরের বছরের ক্রিসমাসের ভেক্টর তৈরি করুন এবং ইনপুট তারিখ এবং সেই দুটি এক্সমাসের মধ্যে দুটি পার্থক্যের ভেক্টর পেতে ইনপুট তারিখটি বিয়োগ করুন।

catঅনেকগুলি "ইভস" এর সাথে অ-নেতিবাচক এবং "ক্রিসমাস" বেছে নিন ।


আপনি কেবল yএকবার ব্যবহার করেন যাতে আপনি এটি 108 বাইটের জন্য সরাসরি ব্যবহার করতে পারেন।
জিউসেপ

z[z>=0][1]পরিবর্তে কাজ করবে min?
জিউসেপ

73 বাইট । শেষ মন্তব্য অনুসারে, প্রোগ্রামটি চালনার দিনটির উপর ভিত্তি করে পাঠ্যটিকে আউটপুট দিতে হবে। মেরি ক্রিসমাস বিটিডাব্লু! : ডি
digEmAll

1
@ ডিগএমএল , 72 বাইটের জন্য আপনার টুইট করা হয়েছে। মেরি ক্রিসমাস!
J.Doe

8

উইন্ডোজ পাওয়ারশেল , 67 64 63 বাইট

for(;1225-'{0:Md}'-f(date|% *ys $i)){$i++}'Christmas'+' eve'*$i

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

পরিবর্তে ormat অপারেটরটি ব্যবহার করে 3 বাইট 4 বাইট (ধন্যবাদ গরু-f কোয়াক ) অফ শেভ করার ব্যবস্থা করা হয়েছে .ToString()এবং তারপরে তুলনা করার পরিবর্তে সংখ্যার মান 1225 থেকে তারিখের স্ট্রিংটি বিয়োগ করুন -ne। ফলস্বরূপ পূর্ণসংখ্যার শর্তসাপেক্ষে 0(যা ক্রিসমাসে ঘটবে) বোঝানো হবে False(লুপটি প্রবেশ করবেন না ) হিসাবে ব্যাখ্যা করা হবে এবং অন্য কোনও মান True(লুপটি প্রবেশ করান) হিসাবে ব্যাখ্যা করা হবে।

যেহেতু পূর্ণসংখ্যাটি এখন বামে রয়েছে, তারিখের স্ট্রিংটি পূর্ণসংখ্যায় রূপান্তরিত হবে এবং গণিতটি করা হবে, পূর্ববর্তী সংস্করণটির বিপরীতে যেখানে 1225তুলনাটির জন্য পূর্ণসংখ্যাটি স্ট্রিংয়ে রূপান্তরিত হয়েছিল।

মূল সংস্করণ


উইন্ডোজ পাওয়ারশেল , 67 বাইট

for(;(date|% *ys $i|% tost* Md)-ne1225){$i++};'Christmas'+' eve'*$i

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

মূলত forলুপ হিসাবে একটি whileলুপ ব্যবহার করা , কারণ এটি খাটো। লুপ অবস্থায় আমরা বর্তমান তারিখ (পরীক্ষা date, একটি সংক্ষিপ্ত রূপ Get-Date), জন্য বাঁশি বাজালাম ForEach-Objectএর ওরফে %, ফর্ম যে ওয়াইল্ডকার্ডযুক্ত নামে একটি পদ্ধতি ডাকা যাবে ব্যবহার করা; এই ক্ষেত্রে পদ্ধতি AddDays()উপর DateTimeবস্তু, এবং মান আমরা এটা দিতে $i

ফর্ম্যাট স্ট্রিং সহ (মাস, তারপরের দিন, ন্যূনতম অঙ্কগুলি যেহেতু আমরা পরবর্তী কী আসবে তার যত্ন নিই না) দিয়ে পদ্ধতিটি ForEach-Objectপুনরায় চাওয়ার জন্য এটি আবার পাইপ হয় । এই স্ট্রিংটি তখন এটির সংখ্যার সমান নয় কিনা তা পরীক্ষা করে পরীক্ষা করা হয় , যা আমার তুলনাগুলি সংরক্ষণ করে তুলনার জন্য একটি স্ট্রিংয়ে রূপান্তরিত হবে savingToString()Md-ne1225

এই কারণেই এটি বিবেচনা করে না যে মাস এবং দিনগুলি একক অঙ্ক, এটি কখনই দ্ব্যর্থক হবে না কারণ বছরের অন্য কোনও দিন নেই যা রূপান্তরিত হবে 1225

লুপ চলতে থাকে যতক্ষণ স্ট্রিং হয় 1225 । প্রোগ্রামের শুরুতে, $iশূন্য হবে সুতরাং এটি আজকের তারিখের সাথে তুলনা করা হবে, এবং লুপটি কখনই কার্যকর হবে না, তবে অন্য কোনও দিনের $iজন্য লুপের শরীরে বর্ধিত হবে, যাতে আমরা কত দিন অবধি গণনা করতে পারি পরবর্তী ক্রিসমাস, স্বয়ংক্রিয়ভাবে লিপ বছরের জন্য অ্যাকাউন্টিং এবং এই বছর ক্রিসমাস কেটে গেছে কিনা।

লুপ পরে আমরা মাত্র আউটপুট স্ট্রিং Christmasস্ট্রিং গুন ফলাফল নিয়ে ঘনিভূত eveসময়ের মান $i(যা, বড়দিনের দিনে হবে 0, কোন ফলে eveগুলি)।


দৃশ্যত ;পর {$i++}অপ্রয়োজনীয়? (এছাড়াও আপনি আবার
বাশের

পছন্দ করুন আমি কীভাবে তা লক্ষ্য করিনি ?!
ব্রিটিশবাদী

7

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 89 বাইট

Write("Christmas");for(var t=DateTime.Now;$"{t:Md}"!="1225";t=t.AddDays(1))Write(" Eve");

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

-3 বাইটস @ জেপ্পস্টিগনিয়েলসকে ধন্যবাদ!

আমার কৌশলটি বেশ সোজা:

  1. tবর্তমান তারিখের জন্য একটি লুপ পরিবর্তনশীল আরম্ভ করুন
  2. বড়দিন না Eveহলে মুদ্রণ করুনt
  3. একটি দিন যোগ করুন tএবং পুনরাবৃত্তি করুন

আমি কয়েকটি কল্পিত জিনিস চেষ্টা করেছিলাম, তবে এই পথে কয়েকটি বাইটের প্রয়োজন।


... আপনার কি ইনক্রিমেন্টরে নিজেকে টি বরাদ্দ করতে হবে? আমার সামনে ডক্স নেই, তবে তা না হলে আপনি আরও দুটি বাইট সংরক্ষণ করতে পারেন।
স্ট্যাকস্টাক

1
ওহ, এটি একটি কাঠামো অবশ্যই এটা. কিছু মনে করো না.
স্ট্যাকস্টাক

1
আপনি t.Month<12|t.Day!=25সংক্ষিপ্ত সঙ্গে বিকল্প করতে পারেন $"{t:Md}"!="1225"। এটি একটি ইন্টারপোল্টেড স্ট্রিং এবং একটি কাস্টম ডেটটাইম ফর্ম্যাটিং স্ট্রিং ব্যবহার করে।
জেপ্পে স্টিগ নীলসেন

6

টি-এসকিউএল, 92 88 বাইট

PRINT'Christmas'+REPLICATE(' Eve',DATEDIFF(D,GETDATE(),STR(YEAR(GETDATE()+6))+'-12-25'))

সম্পাদনা করুন: ব্র্যাডসিকে ধন্যবাদ 4 টি বাইট সংরক্ষণ করুন


চমৎকার কাজ. এর পরিবর্তে PRINT'Christmas'+...2 এবং আরও 2 টি সংরক্ষণ করুনDATEDIFF(D,DATEDIFF(DAY,
ব্র্যাডিসি

@ ব্র্যাডিস ভাল লাগল, ধন্যবাদ!
নীল

5

এপিএল (ডায়ালগ ইউনিকোড) , 76 63 বাইট এসবিসিএস

পুরো প্রোগ্রাম। অনুমান ⎕IO←0(শূন্য-সূচক)।

⎕CY'dfns'
'Christmas',' Eve'⍴⍨4×12 25⍳⍨⍉2↑1↓⍉date(⍳366)+days⎕TS

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

⎕CY'dfns'dfns গ্রন্থাগারে c o p y

⎕TS বর্তমান টি IME গুলি tamp যেমন [বছর, মাস, দিন, ঘন্টা, মিনিট, সেকেন্ড, MS]
days[গ]  দিনের সংখ্যা খুঁজে বের [এন] 1899-12-31 যেহেতু 00: 00: 00,000
(⍳366) প্রথম 366 পূর্ণসংখ্যার যোগ (0 … ৩5৫) এর সাথে
date[সি]  সেই তারিখগুলি সন্ধান করুন [এন] যেগুলি সংখ্যার সাথে মিল (366 × 7 টেবিল; ইউনিট প্রতি এক কলাম)
 ট্রান্সপোজ (7 × 366 টেবিল; ইউনিটে প্রতি সারি)
1↓ এক সারি বাদ দিন (বছরগুলি)
2↑ নিন প্রথম দুটি সারি (মাস এবং দিন)
12 25⍳⍨ প্রথম ক্রিসমাসের সূচকটি খুঁজে বের করে
 যে চারটি দ্বারা
' Eve'⍴⍨ অক্ষরের তালিকাটি পুনরায় আকার দেওয়ার
'Christmas ', জন্য এটি যুক্ত করে

[সি]  function ফাংশনের কোড
[এন]  এই ফাংশনের জন্য নোট


5

পাইথন 2 , 111 103 বাইট

from datetime import*
d=date.today()
print"Christmas"+" Eve"*(date((d+timedelta(6)).year,12,25)-d).days

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

রিচার্ড ক্রসলের উত্তর দ্বারা অনুপ্রাণিত আপডেট ।

ব্যাখ্যা:

from datetime import*
# get today as a date, so we don't have to worry about rounding errors due to time
d=date.today()
                              # get the year of the Christmas to compare to
                              # if the current date is after this year's Christmas, the 6 day offset will give the next year
                              # otherwise, returns this year
                              (d+timedelta(6)).year
                         # next Christmas minus the current date
                         date(.....................,12,25)-d
# Christmas, plus (number of days until next Christmas) " Eve"s
print"Christmas"+" Eve"*(...................................).days

4

রুবি , 80 বাইট

require'date'
t=Date.today
puts'Christmas'+' Eve'*(Date.new((t+6).year,12,25)-t)

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

তার ধারণার জন্য tsh ধন্যবাদ


77 বাইট (অর্থাত, 3 বাইট সংরক্ষণ) প্রতিস্থাপন putsসঙ্গে p: অনলাইনে লিংক ব্যবহার করে দেখুন
স্পেন্সর ডি


4

জাভাস্ক্রিপ্ট, 135 131 121 92 88 বাইট

আমার প্রথম ( নিষ্পাপ ) সমাধান ( 135 বি ):

t=new Date();n=new Date();n.setMonth(11);n.setDate(25);'Christmas'+' Eve'.repeat((n>=t?n-t:(n.setFullYear(n.getFullYear()+1)-t))/864e5)

এটি 2 তারিখ নির্ধারণ করে: এখন এবং এই বছরের ক্রিসমাস। যদি পরবর্তীটি এখনও পাস না হয় তবে এটি কেবল তাদের পার্থক্য করে, যদি এটি পাশ হয়ে যায়, পরের বছরের ক্রিসমাসের সাথে পৃথক হয়। পুনরাবৃত্তি সংখ্যার জন্য হয় হয় পৃথক।

(চেষ্টা করে) বাক্সের বাইরে চিন্তা করুন ( 131 বি ):

i=0;f=_=>{t=new Date();if(t.getMonth()!=11||t.getDate()!=25){i++;setTimeout(f,864e5)}else{alert('Christmas'+' Eve'.repeat(i))}};f()

চ্যালেঞ্জটি নির্দিষ্ট দিনে প্রোগ্রামটি চালানোর সময় WHICH আউটপুট প্রয়োজন তা নির্দিষ্ট করে, তবে WHEN এটিকে ফেরত দেওয়ার জন্য নির্দিষ্ট করে না ...

এটি একটি দিনের জন্য কেবল 'ঘুম' করবে, 1 টির তুলনায় বাড়বে এবং আউটপুট দেওয়ার জন্য ক্রমাস অবধি পুনরাবৃত্তি করবে।

যেহেতু জাভাস্ক্রিপ্ট 'ঘুম' সময়ের গ্যারান্টি দেয় না, তাই আসল ফলাফলটি বন্ধ হতে পারে।

এটি alertফাংশনটি ব্যবহার করার জন্যও কুৎসিত , যার অর্থ সত্যিকারেরভাবে খাঁটি জাভাস্ক্রিপ্ট নিয়ে কাজ করা নয়, তবে ব্রাউজারের এপিআইগুলিও রয়েছে (আমরা console.logঅতিরিক্ত 6 টি বাইট ব্যবহার করতে পারি )।

একটি ভাল পদ্ধতির ( 121 বি ):

t=new Date();i=0;while(t.getMonth()!=11||t.getDate()!=25){t=new Date(t.valueOf()+864e5);i++};'Christmas'+' Eve'.repeat(i)

আজ থেকে শুরু করে, দিনটিকে ক্রিসমাস না হওয়া পর্যন্ত এক দিন বাড়িয়ে দিন, তারপরে প্রয়োজনীয় পুনরাবৃত্তির সংখ্যার জন্য সেই লুপের কাউন্টারটি ব্যবহার করুন।

উন্নতিকরণ (একটি মিনিফায়ার দিয়ে যাওয়া এবং অতিরিক্ত 5 বি শেভ করার জন্য 12Me21 এর কৌশল ব্যবহার সহ) ( 92 বি ):

for(s='Christmas',t=new Date;t.getMonth()/t.getDate()-.44;)t=new Date(t*1+864e5),s+=' Eve';s

চূড়ান্ত ছোঁয়া ( 88 বি ):

for(s='Christmas',t=new Date;t.getMonth()/(d=t.getDate())-.44;t.setDate(d+1))s+=' Eve';s
  • উপরোক্ত সকলের জন্য, আরপিএল ধরে নেওয়া হয়।
  • ভাদিমের জমা দেখুন - আমার চেয়ে অনেক ভাল!

1
আমার মনে হয় আপনি t.getMonth()/t.getDate-.48তারিখটি 25 শে ডিসেম্বর
12

1
সাইটে স্বাগতম! আপনার কোড ব্লকগুলি আরও ভাল দেখানোর জন্য আপনি একটি 4 স্পেস ইন্ডেন্ট ব্যবহার করতে পারেন।
গম উইজার্ড

1
পিপিসিজিতে আপনাকে স্বাগতম!
শেগি

1
৯৮ , printএটি প্রয়োজনীয় কারণ এটি একটি প্রোগ্রাম নয়, যদি না আপনি ১ টি ল্যাম্বডায় পরিণত করেন বা ২. আপনি উল্লেখ করেন যে আপনি একটি REPL ব্যবহার করছেন
ASCII- কেবল

1
t=new Date(+t+864e5)1 বাইট সংক্ষিপ্ত।
অ্যান্ড্রু সুইটলিচনি

3

ভিবিএ (এক্সেল), 108 বাইট

ফাঁকা মডিউলটিতে অনুলিপি করুন। তাত্ক্ষণিক উইন্ডোতে মুদ্রণ:

Sub X:s="Christmas":d=Now:For t=1 To (DateSerial(Year(d+6),12,25)-d):s=s &" Eve":Next:Debug.Print s:End Sub

দ্রষ্টব্য:: লাইন ব্রেকগুলির পরিবর্তে ব্যবহার করা প্রতি লাইনে দুটি বাইট সংরক্ষণ করে।

লক্ষ্য করুন যে ভিবিএ সম্পাদক সাব ডেফিনেশনের পরে কীওয়ার্ড, অপারেটর ইত্যাদির ... এবং প্রথম বন্ধনীগুলির মধ্যে অতিরিক্ত স্পেস সন্নিবেশ করবে, তবে আপনি এই কোডটি অনুলিপি করে আটকে দিলে এটি কার্যকর হবে (আমি সেই স্পেস থেকে মুক্তি পেতে পারি না &)।

ভিবিএর জন্য খারাপ নয় (একবারের জন্য)।


1
* Christmas: |
ASCII- কেবল

@ এএসসিআইআই-কেবল: &ত্রুটি ছুঁড়ে মারার আগে জায়গাটি সরিয়ে ফেলা
বারানকা

-1 বাইট। কেবল
টাইপগুলি

1
আপনি এটিকে তাত্ক্ষণিক উইন্ডো ফাংশনে রূপান্তর করে এবং এর জন্য অস্থায়ী পরিবর্তনশীলটি সরিয়ে 71 টি অক্ষরে কেটে ফেলতে পারেন now। আপনি যখন এটি করেন, এটির মতো দেখতে হবে?"Christmas";:For i=1To DateSerial(Year(Now+6),12,25)-Now:?" Eve";:Next
টেলর স্কট

3

বাশ + জিএনইউ তারিখ, 72 73 বাইট

for((d=0;1`date +%d%m -d$d\day`-12512;d++));{ x+=\ Eve;};echo Christmas$x
  • এক বাইট প্রতিস্থাপন !=সঙ্গে সংরক্ষণ করা-
  • অন্য অতিরিক্ত স্থান অপসারণ
  • -3 বাইট স্থির করুন d=0, কারণ date -ddayতারিখটি +1 এবং 25/12 এ কাজ করে না

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


হুঁ, কেন =~লুপ শর্তসাপেক্ষে কাজ করে না?
ক্রিটিকি লিথোস

কারণ লুপ শর্তটি একটি পাটিগণিতের বহিঃপ্রকাশ, শব্দগুলি 0 দিয়ে শুরু করে সংখ্যাটিও জোর করে
অষ্টালে

3

পাইথন 2, 128 বাইট / পাইথন 3, 130 বাইট

অবশ্যই, পাইথন 2 এর সাথে দুটি কম বাইট

from datetime import date as D
T=D.today()
Y=T.year
a=(D(Y,12,25)-T).days
print("Christmas"+" Eve"*[a,(D(Y+1,12,25)-T).days][a<0])


@tsh এটি একটি আশ্চর্যজনক পদ্ধতির!
iBug



3

বাশ , 68 65 61 বাইট

Golfed 4 বাইট ধন্যবাদ Nahuel Fouilleul ব্যবহার করে ``কমান্ড প্রতিকল্পন এবং evalকিন্তু স্থানে eএবংxargs

echo Christmas `eval date\ -d{0..366}day\;|sed /c.25/Q\;cEve`

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

`` কমান্ড সাবস্টিটিউশন ভিতরে , আমরা আছে

eval শেল কমান্ড হিসাবে নিম্নলিখিত স্ট্রিং চালান

  • date\ -d{0..366}day\;অধীনে বক্রবন্ধনী সম্প্রসারণ এর {0..366}, এই স্ট্রিং ফলাফল date -d0day; date -d1day; date -d2day; ... date -d366day;, এই স্ট্রিং প্রতিটি কমান্ড উপস্থিত থেকে 0 এবং 366 দিনের মধ্যে তারিখ বিন্যাস আউটপুট ফলে কম্পিউটিং Wed Dec 26 18:22:33 UTC 2018, তার নিজস্ব লাইনে সাথে

|sed যার উপর, নিম্নলিখিত সেড কমান্ডগুলি কল করুন

  • /c.25/Qযদি রেজেক্সটি /c.25/মিলে Qযায় তবে প্রিন্ট ছাড়াই uit

  • \;cEve অন্যথায় লাইনটি পরিবর্তন করুন Eve

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

echo Christmas ...

প্রতিটি আর্গুমেন্ট echoফাঁকা স্থান দ্বারা পৃথক করে মুদ্রিত হয়, যার ফলে কাঙ্ক্ষিত আউটপুট হয়।


bashএই সমাধানটি সম্পর্কে সত্যিকারের নির্দিষ্ট কিছুই নেই । এটি GNU প্রয়োজন date, sedএবং seqযদিও।
কুসালানন্দ


@ নাহুয়েলফিউলুল ধন্যবাদ, জার্গস এড়ানোর জন্য ব্যাকটিক কমান্ড প্রতিস্থাপন ব্যবহার এবং সিক এ
যাওয়ার জন্য এভাল

2

সি (জিসিসি) , 157 বাইট

আমি ভেবেছিলাম যে আমি অন্তর্ভুক্ত এড়াতে সক্ষম হব time.hতবে এটি কেবলমাত্র বিভাগের ত্রুটিগুলি দিয়েছে।

#include <time.h>
*t,u;f(){time(&u);t=localtime(&u);t[5]+=t[4]>10&t[3]>25;t[4]=11;t[3]=25;u-=mktime(t);printf("Christmas");for(u/=86400;u++;printf(" Eve"));}

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


আইএমওটি আপনাকে ছেড়ে দেওয়া উচিত #include <stdlib.h>, এটি এখানে কিছু করার মতো নয়
ASCII- কেবল

সুপারিশ *t;f(u)পরিবর্তে *t,u;f()এবং #import<time.h>পরিবর্তে #include <time.h>এবং 5[t=localtime(&u)]পরিবর্তেt=localtime(&u);t[5]
ceilingcat

2

গ্রোভি , 66 বাইট tes

d=[]as Date
print'Christmas'+' Eve'*(new Date((d+6).year,11,25)-d)

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

কেবলমাত্র @ ASCII- এর সৌজন্যে


আপনাকে এটি মুদ্রণ করতে হবে যেহেতু এটি একটি সম্পূর্ণ প্রোগ্রাম কোনও ফাংশন নয়
ASCII-

> Chistmas: /
ASCII- কেবল



আপনার প্রথমটি গ্রহণ করা এবং গ্রোভি 2.5 ব্যবহার করে এটি 115 এ নামিয়ে নিন ।
বিডিকোসার


2

স্কালা , 116 113 বাইট

var d=new java.util.Date
print("Christmas")
while(!(""+d).contains("c 25")){print(" Eve");d.setDate(d.getDate+1)}

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

যেখানে c 25সংক্ষিপ্ত Dec 25


1
আমার মনে হয় আপনি ব্যবহার করতে পারেন contains("c 25")পরিবর্তেmatches(".*c 25.*")
12Me21

ধন্যবাদ, তিন বাইট কম! 😁
কেজেটিল এস

বাহ, সুন্দরভাবে সম্পন্ন, টু স্ট্রিং তারিখটি দুর্দান্ত ছিল
ভি। কুর্তোইস

2

জাভাস্ক্রিপ্ট, 86 77 বাইট

REPL ব্যবহার করে এটি হবে

for(c='Christmas',d=new Date;!/c 25/.test(d);d=new Date(+d+864e5))c+=' Eve';c

এএসসিআইআই-তে কেবল -9 বাইটের জন্য কুদোস



বলিহারি! তুমি আমার চেয়ে অনেক ভাল কাজ করেছ আমি কি একটি অতিরিক্ত বাইট শেভ করার প্রস্তাব দিতে পারি? for(c='Christmas',d=new Date;!/c 25/.test(d=new Date(+d+864e5));)c+=' Eve';c বা এই বৈকল্পিক: for(s='Christmas',t=Date.now();!/c 25/.test(new Date(t+=864e5));)s+=' Eve';s উভয়ই 76 বাইট।
তারগুমুন

2

লুয়া , 137 118 বাইট।

118 বাইট

t,d,month,day=os.time,os.date,1,-6year=d"%Y"+(d"%D">"12/25"and 2or 1)print("Christmas",d" Eve":rep(d("%j",t(_G)-t())))

137 বাইট (পূর্ববর্তী)

t,d=os.time,os.date a=d"*t"a.year,a.month,a.day=a.year+(d"%m%d">"1225"and 1 or 0),12,25 print("Christmas",("Eve "):rep((t(a)-t())/86400))

এটি লক্ষণীয় যে এটি লুয়াজিটিতে কাজ করে না (সিনট্যাক্স ত্রুটি)


পিপিসিজিতে আপনাকে স্বাগতম! প্রথম প্রথম পোস্ট!
Rɪᴋᴇʀ


1

ম্যাটল্যাব, 91 বাইট

n=datetime
x=datetime(year(n+6),12,25)
s='Christmas'
while days(x-n)>=1 n=n+1 s=[s,' Eve'] end

ম্যাটল্যাব নন-লুপার, 100 বাইট

x=datenum(datetime(floor((now+5)/365.2425),12,25))
d=x-now
['Christmas' repmat(' Eve',1,min(d(d>=0)))]

1

scala , 123 বাইট

শুধুমাত্র ASCII- এর কাজকে ধন্যবাদ।

print("Christmas")
var d=new java.util.Date
while(d.getMonth()<11||d.getDate()!=25){print(" Eve");d.setDate(d.getDate()+1)}

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

স্কালা + জোদা-সময় , 140 বাইট

import org.joda.time._
var s="Christmas"
var d=DateTime.now
while(d!=d.withDate(d.year().get(),12,25)){d=d.plusDays(1);s+=" Eve"};println(s)

টিআইওতে চালিত হয় না কারণ এটিতে জোডা-টাইম লাইব্রেরি প্রয়োজন।


না জোদা, 154 । দুর্ভাগ্যক্রমে java.util.Dateএখানে কাজ করতে পারবেন না : /
ASCII- কেবল


আহ @ এএসসিআইআই-কেবল আমি object Main extends App{}আমার গণনায় অক্ষর গণনা করি নি (কারণ আমি আমার অন্যান্য স্কালার উত্তরগুলিতেও পাইনি)। যদি আমরা
এটির

withDate()কল তাই ব্যয়বহুল ...
ভি Courtois

১. মনে রাখবেন যে আপনি কোনও বাহ্যিক গ্রন্থাগার ব্যবহার করেন এবং ২. আমার পরিবর্তনগুলি ব্যবহার করতে যাচ্ছেন না তাই আপনাকে "স্কাল + জোদা-সময়" হিসাবে ভাষা নির্দিষ্ট করা দরকার? এটি সংক্ষিপ্ত প্লাসের জন্য একটি লাইব্রেরির প্রয়োজন নেই: পি
ASCII- কেবল

1

05 এ বি 1 ই , 93 89 বাইট

žežfžg)V'ŒÎ[Y¨JŽ9ÚQ#Y`2ô0Kθ4ÖUD2Qi\28X+ë31s<7%É-}‹iY¬>0ëYT`ǝDÅsD12‹i>1ë\1Dǝ¤>2}}ǝVð'»ˆ}J™

অনলাইনে চেষ্টা করুন বা 'আজ' এর একটি এমুলেটেড স্ব-নির্দিষ্ট তারিখের সাথে অনলাইনে চেষ্টা করুন

ব্যাখ্যা:

বর্তমান বছর / মাস / দিন / ঘন্টা / মিনিট / সেকেন্ড / মাইক্রোসেকেন্ড গ্রহণ ব্যতীত 05 এ বি 1 ই এর তারিখগুলির জন্য কোনও বিল্টিন নেই, তাই ম্যানুয়াল গণনার জন্য বেশিরভাগ বাইট ব্যবহার করা হয়।

žežfžg)V   # Get the current date and save it in variable `Y`
'ŒÎ       '# Push compressed string "christmas"
[          # Start an infinite loop
 Y¨JŽ9ÚQ   #  If the current date is December 25th:
        #  #   Stop the infinite loop
 Y`2ô0Kθ4ÖUD2Qi\28X31s<7%É-}‹iY¬>0ëYTDÅsD12i>1ë\1Dǝ¤>2}}ǝV
           #  Go to the next day, and set `Y` to it
 ð         #  Push a space " "
 '»ˆ      '#  Push compressed string "eve"
}          # After the infinite loop:
 J         # Join everything on the stack together
          # And make every word title-case (and output the result implicitly)

আমরা পরের দিন কীভাবে যাব তা বুঝতে আমার এই উত্তরটি দেখুন । (পিএস: 1¾ǝপ্রতিস্থাপন করা হয়েছে T`ǝ, যেহেতু আমরা counter_variableঅন্য কোথাও ব্যবহার করি ))

আমার এই 05AB1E টিপটি দেখুন (বিভাগগুলি কীভাবে ব্যবহার করবেন? এবং কীভাবে বড় পূর্ণসংখ্যা সংকোচিত করবেন? ) কেন '»ˆতা বোঝার জন্য "eve"; 'ŒÎহয় "christmas"; এবং Ž9Úহয় 1225


চতুর গল্ফিং!
মিল্কিওয়ে 90

0

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 141 বাইট

var g=DateTime.Now;Write("Christmas"+string.Concat(Enumerable.Repeat(" Eve",(new DateTime(g.Year+(g.Day>25&g.Month>11?1:0),12,25)-g).Days)));

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


1
আমি মনে করি না এটি 30 শে নভেম্বর এর জন্য কাজ করে ...
নীল

এখনই স্থির হয়েছি, আমি ডিসেম্বর কিনা তা একটি চেক যুক্ত করতে ভুলে গেছি
অবজ্ঞানের

আপনি কি মাস> 25 সম্পর্কে নিশ্চিত?
নিল

এটি এখনই স্থির করে দিন ...
অজ্ঞতার প্রতিমূর্তি

? 1: 0 nessesary হয়? পূর্ণসংখ্যা ফেরত দেয় না?
12

0

লাল , 89 86 84 78 76 বাইট

-10 বাইট শুধুমাত্র ASCII- এর জন্য ধন্যবাদ!

does[a: now prin"Christmas"while[a/3 * 31 + a/4 <> 397][prin" Eve"a: a + 1]]

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



@ ASCII- কেবল হুম, অবশ্যই! ধন্যবাদ!
গ্যালেন ইভানোভ



: @ হওয়া ASCII শুধুমাত্র তোমার 76-বাইট সংস্করণ সঠিক ফলাফলের যখন ক্রিসমাস চালানো দেয় না একটি আর্গুমেন্ট হিসাবে তারিখ আমি শুধুমাত্র ব্যবহার না করার জন্য মূঢ় মনে nowএবং now/date। আপনার উন্নতির জন্য আপনাকে ধন্যবাদ!
গ্যালেন ইভানভ

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.