তারিখের বহুগুণ চ্যালেঞ্জ


19

( পাঁচ সপ্তাহের আট ডটকম-এ গত সপ্তাহের রিডলার দ্বারা অনুপ্রাণিত । স্যান্ডবক্স পোস্ট post )

2001 এবং 2099, ক্যালকুলেট মধ্যে একটি বছর দেওয়া এবং যে ক্যালেন্ডার বছর সময় দিনের সংখ্যা আসতে যেখানে mm * dd = yy(যেখানে yyহয় 2 অঙ্ক বছর)।

2018, উদাহরণস্বরূপ, 5 আছে:

  • 18 ই জানুয়ারী (1 * 18 = 18)
  • ফেব্রুয়ারী 9 (2 * 9 = 18)
  • মার্চ 6 (3 * 6 = 18)
  • জুন 3 য় (6 * 3 = 18)
  • ২ রা সেপ্টেম্বর (9 * 2 = 18)

ইনপুটটি 2 বা 4-সংখ্যার সাংখ্যিক বছর হতে পারে।

আউটপুট একটি পূর্ণসংখ্যা হওয়া উচিত। Alচ্ছিক ট্রেলিং স্পেস বা রিটার্ন ঠিক আছে।

সম্পূর্ণ ইনপুট / আউটপুট তালিকা:

Input = Output
 2001 = 1     2021 = 3     2041 = 0     2061 = 0     2081 = 2
 2002 = 2     2022 = 3     2042 = 4     2062 = 0     2082 = 0
 2003 = 2     2023 = 1     2043 = 0     2063 = 3     2083 = 0
 2004 = 3     2024 = 7     2044 = 3     2064 = 2     2084 = 5
 2005 = 2     2025 = 2     2045 = 3     2065 = 1     2085 = 1
 2006 = 4     2026 = 2     2046 = 1     2066 = 3     2086 = 0
 2007 = 2     2027 = 3     2047 = 0     2067 = 0     2087 = 1
 2008 = 4     2028 = 4     2048 = 6     2068 = 1     2088 = 3
 2009 = 3     2029 = 1     2049 = 1     2069 = 1     2089 = 0
 2010 = 4     2030 = 6     2050 = 3     2070 = 3     2090 = 5
 2011 = 2     2031 = 1     2051 = 1     2071 = 0     2091 = 1
 2012 = 6     2032 = 3     2052 = 2     2072 = 6     2092 = 1
 2013 = 1     2033 = 2     2053 = 0     2073 = 0     2093 = 1
 2014 = 3     2034 = 1     2054 = 4     2074 = 0     2094 = 0
 2015 = 3     2035 = 2     2055 = 2     2075 = 2     2095 = 1
 2016 = 4     2036 = 6     2056 = 4     2076 = 1     2096 = 4
 2017 = 1     2037 = 0     2057 = 1     2077 = 2     2097 = 0
 2018 = 5     2038 = 1     2058 = 0     2078 = 2     2098 = 1
 2019 = 1     2039 = 1     2059 = 0     2079 = 0     2099 = 2
 2020 = 5     2040 = 5     2060 = 6     2080 = 4

এটি একটি চ্যালেঞ্জ, প্রতিটি ভাষার জিততে সর্বনিম্ন বাইট গণনা।

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


যদি এটি আপনার ভাষায় এটি আরও সহজ করে তোলে তবে শতাব্দী নির্বিশেষে উত্তরটি একই হবে; 1924 এবং 2124 এর মতো সংখ্যক দিন 2024.
ব্র্যাডিসি

যদি মিমি * ডিডি এর ফলাফল 100 এর চেয়ে বড় হয় তবে এটি স্বয়ংক্রিয়ভাবে ফিল্টার হয়?
ড্যানিয়েলইন্ডি

@ ড্যানিয়েলআইডি সঠিক, কোনও "মোড়ক" তারিখ গণনা করা উচিত নয়। অন্য কথায়, 12 ডিসেম্বর, 2044 গণনা করা হচ্ছে না, যদিও 12 * 12 = 144.
ব্র্যাডিসি

যেহেতু আমাদের কেবল সীমিত সংখ্যক ইনপুট পরিচালনা করতে হবে, আমি সেগুলি সম্পাদনা করেছি roll
শেগি

1
@gwaugh যে আপনি বৈধ ইনপুট হিসাবে কোনটি গ্রহণ করবেন তা ঠিক করতে পারেন (যাতে আপনার দুজনের মধ্যে রূপান্তর করার জন্য অতিরিক্ত অক্ষর ব্যয় করতে হবে না)।
ব্র্যাডিসি

উত্তর:


14

এক্সেল, 48 বাইট

হুররে! অবশেষে কিছু এক্সেল আসলে ভাল।

=COUNT(VALUE(ROW(1:12)&"/"&A1/ROW(1:12)&"/"&A1))

বছরের প্রতিনিধিত্ব করে পূর্ণসংখ্যার 1-99 আকারে A1 থেকে ইনপুট নেয় এবং আপনি এই সূত্রটি যেখানেই প্রবেশ করান সেখানে আউটপুট দেয়। এটি একটি অ্যারে সূত্র, সুতরাং এটি প্রবেশের জন্য এন্টারের পরিবর্তে Ctrl-Shift-Enter ব্যবহার করুন।

এটি COUNTত্রুটিগুলি উপেক্ষা করে এর সুবিধা গ্রহণ করে, সুতরাং যে কোনও ত্রুটি যা মাসকে বছরের ভাগ না করার কারণে ঘটে (এক্সেলকে এমন কিছু 2/12.5/25বা পার্থক্য করার জন্য নেতৃত্ব দেয় যা বৈধ না হওয়ার মতো 2/29/58, যেমন , কেবল চুপচাপ উপেক্ষা করা হয়)।


1
খুব সুন্দর. সম্ভবত এটি উল্লেখযোগ্যভাবে এর জন্য একটি 2-অঙ্কের বছর প্রয়োজন A1। 4-অঙ্কের বছরে প্রবেশ করে কেবল ফিরে আসে 0
ব্র্যাডিসি

সত্য! আমি এটি বিবরণে সম্পাদনা করব।
সোফিয়া ল্যাটারের

এছাড়াও আমার উল্লেখ করা উচিত যে এটি স্থানীয়-নির্দিষ্ট; এটি একটি লোকেল যা মিমি / ডিডি / ওয়াই অর্ডার ব্যবহার করে তা নির্ভর করে। ডিডি / মিমি / ওয়াই অর্ডার সহ কোনও লোকালয়ে উত্তরটি অবশ্যই একই সংখ্যক বাইট হবে।
সোফিয়া ল্যাটারের

1
সুপার চালাক; আমি চাই আপনি কীভাবে বছরের প্রতিটি দিন চালিয়ে যাওয়ার পরিবর্তে কেবল 12 তারিখ প্রার্থী (প্রতি মাসে একজন) পরীক্ষা করছেন।
ব্র্যাডিসি

বর্ধিত একটি নন-লিপ একটি বছর ঠিক করুন?
l4m2

6

পাইথন 2 , 44 বাইট

[k/32%13*(k%32)for k in range(96,509)].count

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

একটি পদ্ধতি অবজেক্ট হিসাবে দেওয়া একটি বেনামী ফাংশন। এর সব পণ্য উত্পাদন করে (month, day)জোড়া (m, d)হিসাবে দ্বারা এনকোড k=32*m+dসঙ্গে 0≤m≤12, 0≤d≤31প্রায় মোড়কে। রেঞ্জ থেকে বাদ দিয়ে ২৯-৩১ ফেব্রুয়ারী বাদ দেয়।


5

জাভা (জেডিকে 10) , 65 বাইট

y->{int m=13,c=0;for(;m-->1;)if(y%m<1&y/m<29+m%2*3)c++;return c;}

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

ক্রেডিট


কোনও লিপ ইয়ার ফিট করে না 29*n, সুতরাং চেকের দরকার নেই
l4m2

আপনার ইনপুট জন্য ধন্যবাদ। আমি অন্যান্য পরিবর্তনগুলির একগুচ্ছ সহ মোট 27 টি বাইট সরিয়ে ফেলতে পারি।
অলিভিয়ার গ্রাগোয়ার

1
এখনও পরিবর্তন (m==2?29:32)করা 29+m%2*3সমস্ত OKফলাফল দেয় বলে মনে হচ্ছে । @ অ্যাসোনতুহহিদের রুবি উত্তরে ক্রেডিট ।
কেভিন ক্রুইজসেন

4

পাওয়ারশেল , 94 বাইট

param($a)for($x=Date 1/1/$a;$x-le(Date 12/9/$a);$x=$x.AddDays(1)){$z+=$x.Month*$x.Day-eq$a};$z

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

ইনপুটটিকে দুই-অঙ্কের বছর হিসাবে নেয়, তারপরে forথেকে একটি লুপ তৈরি 1/1/yearকরে 12/9/year(কারণ 12/10 এবং এর বাইরে কখনও গণনা করা যায় না এবং এটি একটি বাইট সংরক্ষণ করে)। প্রতিটি পুনরাবৃত্তি, আমরা $zযদি ইনপুট বছরের সাথে .Monthবারের .Dayসমান হয় তবে আমরা বৃদ্ধি করি । লুপের বাইরে $zপাইপলাইনে রেখে দেওয়া হয় এবং আউটপুট অন্তর্ভুক্ত থাকে।

সম্পাদনা করুন - এটি সংস্কৃতি নির্ভর। উপরের কোডটির জন্য কাজ করে en-us। অন্যান্য সংস্কৃতির জন্য তারিখের ফর্ম্যাট পরিবর্তনের প্রয়োজন হতে পারে।


2
"সংস্কৃতির"? আপনি কি "লোকেল" বলতে চাইছেন? ...
ব্যবহারকারী 202729

1
@ user202729 কথোপকথন, হ্যাঁ, তবে পাওয়ারশেল ডকুমেন্টেশন এটিকে "সংস্কৃতি"
অ্যাডমবর্কবর্ক

"সংস্কৃতি" হ'ল এমএস শব্দটি সাধারণত স্থানীয় লোকাল সম্পর্কে কথা বলতে ব্যবহার করে। সিস্টেম.গ্লোবালাইজেশন.কুলচারআইনফ ইন।
সূন্দর - মনিকা


4

আমি জানতাম একটি গাণিতিক সমাধান সংক্ষিপ্ত হবে তবে আমি আমার সংস্করণ দিয়ে মজা পেয়েছি :)
শেগি


3

জাভাস্ক্রিপ্ট (ES6), 91 বাইট

হার্ডকোডিং কীভাবে পুনরাবৃত্ত গণনার সাথে তুলনা করে তা জানতে আগ্রহী ছিলাম। এটি অবশ্যই দীর্ঘতর ( @ শ্যাগির উত্তর দেখুন ), তবে ভয়ঙ্কর আর বেশি নয়।

সম্পাদনা : এটি অবশ্য আরও সরাসরি সূত্রের চেয়ে অনেক বেশি দীর্ঘ ( @ l4m2 উত্তর দেখুন )।

[1..99] এ পূর্ণসংখ্যা হিসাবে ইনপুট নেয় ।

n=>(k=parseInt('8ijkskercdtbnqcejh6954r1eb2kc06oa3936gh2k0d83d984h'[n>>1],36),n&1?k>>3:k&7)

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

কিভাবে?

অদ্ভুত বছরগুলিতে এমনকি বছরের চেয়ে মিমি * ডিডি = ইয়ের সম্ভাবনা কম রয়েছে । আরও দৃ concrete়ভাবে, বিজোড় বছরগুলিতে 0 থেকে 3 ম্যাচ থাকে, এমনকি কয়েক বছরের মধ্যেও 0 থেকে 7 ম্যাচ থাকে। এটি আমাদের বছরের প্রতিটি জুটি মাত্র 5 টি বিট দিয়ে কোড করার অনুমতি দেয়, যা সুবিধামত বেস 36 এ একক অক্ষর হিসাবে উপস্থাপিত হতে পারে।




3

বাশ + জিএনইউ ইউটিলিটিস , 57

  • 1 সোফাইল্যাটারে বাইট সংরক্ষণ করা হয়েছে saved
seq -f1/1/$1+%gday 0 365|date -f- +%m*%d-%y|bc|grep -c ^0

নোট করুন যে seqকমান্ড সর্বদা 366 তারিখের একটি তালিকা তৈরি করে - নন-লিপ বছরের জন্য পরের বছরের 1 জানুয়ারী অন্তর্ভুক্ত করা হবে। তবে ২০০১ সালের..২০৯৯ তারিখের মধ্যে, এমএম * ডিডি এই বছরের কোনওটির জন্য পরের বছরের ১ লা জানুয়ারীর জন্য কখনই ওয়াইওয়াই হবে না, সুতরাং এই অতিরিক্ত দিন ফলাফলটিকে প্রভাবিত করবে না।

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


খুব সুন্দর - dateপার্স করার সময় আমি জানতাম না যে এই জাতীয় তারিখটি পার্স করার সময় করবে। seqএর পরে কোনও জায়গার দরকার নেই -f, তাই আপনি সেখানে একটি বাইট সংরক্ষণ করতে পারেন।
সোফিয়া ল্যাটারের

3

টি-এসকিউএল, 123 121 বাইট

আমাদের আইও নিয়ম অনুসারে , ইনপুট পূর্বে বিদ্যমান টেবিল টি এর মাধ্যমে পূর্ণসংখ্যা ক্ষেত্র y এর সাথে নেওয়া হয় , এতে 2-সংখ্যার বছর থাকে।

WITH c AS(SELECT 1m UNION ALL SELECT m+1FROM c WHERE m<12)
SELECT SUM(ISDATE(CONCAT(m,'/',y/m,'/',y)))FROM c,t WHERE y%m=0

লাইন বিরতি কেবল পঠনযোগ্যতার জন্য। সোফিয়ার এক্সেল সমাধান দ্বারা মূলত অনুপ্রাণিত ।

  • শীর্ষ লাইনটি একটি 12-আইটেম নম্বর টেবিল উত্পন্ন যা ইনপুট টেবিল যোগ করা থাকে টন
  • যদি এটি পাস হয়ে যায় তবে আমি ব্যবহার করে একটি তারিখ প্রার্থীকে একসাথে জাল করি CONCAT(), যা অন্তর্ভুক্ত varcharডেটাটাইপ রূপান্তরগুলি করে। অন্যথায় আমাকে একগুচ্ছ CASTবা CONVERTবিবৃতি দিতে হবে।
  • নিখুঁত মূল্যায়ন ফাংশনটি পেয়েছে ISDATE(), যা বৈধ তারিখের জন্য 1 এবং অবৈধ তারিখের জন্য 0 প্রদান করে।
  • এটিকে একটি সুমে জড়িয়ে দিন এবং আমার কাজ শেষ।
  • সম্পাদনা : 2 রাউজানসোকল ধন্যবাদ, 2 বাইট সংরক্ষণের জন্য ক্লিজে পূর্ণসংখ্যা বিভাগের চেক ( y%m=0) WHEREসরিয়ে নিয়েছে।

দুর্ভাগ্যক্রমে, এটি দেখার টেবিল সংস্করণের চেয়ে খুব ছোট নয় ( ওসডাভিসনের সংস্করণ থেকে স্ট্রিংটি ব্যবহার করে ):

টি-এসকিউএল লুকআপ, 129 বাইট

SELECT SUBSTRING('122324243426133415153317223416132126011504033106131204241006003213011306002122042005101305111014012',y,1)FROM t

সম্পাদনা করুন : আমার আসলটি উপরে রেখে, তবে আমরা কয়েকটি নতুন ফাংশন ব্যবহার করে কয়েকটি বাইট সংরক্ষণ করতে পারি:

  • STRING_SPLIT এমএস এসকিউএল 2016 এবং তারপরে উপলব্ধ।
  • CONCAT_WS এমএস এসকিউএল 2017 এবং এর উপরে উপলব্ধ।
  • উপরে হিসাবে, প্রতিস্থাপিত IIFসঙ্গেWHERE

এমএস-এসকিউএল 2017, 121 118 বাইট

SELECT SUM(ISDATE(CONCAT_WS('/',value,y/value,y)))
FROM t,STRING_SPLIT('1-2-3-4-5-6-7-8-9-10-11-12','-')
WHERE y%value=0

এমএস-এসকিউএল 2017, অতিরিক্ত চিট সংস্করণ: 109 বাইট

SELECT SUM(ISDATE(CONCAT_WS('/',number,y/number,y)))
FROM t,spt_values WHERE number>0AND y%number=0AND'P'=TYPE

আপনাকে masterডাটাবেসে থাকা দরকার, যাতে একটি সিস্টেম টেবিল থাকে spt_values(যখন ফিল্টার করা হয় TYPE='P'), আপনাকে 0 থেকে 2048 পর্যন্ত সংখ্যা গণনা করে।


অন্যান্য উত্তরের অনুরূপ, আমি তারিখটি সংগ্রহ করার ক্রমটি ( m/d/y) এসকিউএল উদাহরণের স্থানীয়তার সেটিংসের উপর নির্ভর করে। অন্যান্য অঞ্চলে আলাদা অর্ডার বা আলাদা বিভাজকের প্রয়োজন হতে পারে তবে আমি মনে করি না কোডের দৈর্ঘ্যের উপর প্রভাব ফেলবে।
ব্র্যাডিসি

আমি অনুমান করি আপনি বুঝতে পেরেছিলেন যে '2/29/64' তারিখে রূপান্তর করা 1964-02-29 (2064-02-29 নয়) দেয় তবে 2000 এবং 2100 বছর বাদ দেওয়া বিবেচনা করে, এটি একটি ছোট উপায় হওয়ার উপায় কোড।
রাজন সোসোল

SPLIT_STRINGসিটিই এর পরিবর্তে এটি ব্যবহার করে এটি 120 বাইটে নেমে আসে। CONCAT_WSপরিবর্তে ব্যবহার CONCATকরে অন্য চরিত্রটি সেভ করে, এটি 119 বাইটে পেয়ে যায়।
রাজ্জান সোসোল

@ রাজ্জানসোকল হ্যাঁ, আমি নিশ্চিত নই যে ২-অঙ্কের তারিখগুলির মধ্যে বিরতি কোথায় আছে যা ১৯৯০ সালে বনাম ২০০০ সালে হতে পারে, তবে উভয়ই একই উত্তর দেয়। আমি অন্য দুটি পরামর্শ একটি চেষ্টা করব, ধন্যবাদ!
ব্র্যাডিসি

1
IIFসঙ্গে প্রতিস্থাপন WHERE
রাজওয়ান সোসোল

3

জুলিয়া 0.6 , 49 44 42 বাইট

y->sum(y/i1:28+3(i%2i÷8)for i=1:12)

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

অসোন তুহিদের রুবি উত্তর দ্বারা অনুপ্রাণিত -5 বাইট।
-2 বাইট যোগফলের সাথে সংখ্যার পরিবর্তে

ব্যাখ্যা:

i1 থেকে 12 অবধি প্রতিটি মাসের জন্য , গণনা করুন y/iএবং এটি সেই মাসের কোনও এক দিন কিনা তা পরীক্ষা করে দেখুন। 31 দিনের সঙ্গে মাস বাকী আছে 1, 3, 5, 7, 8, 10, 12 - তাই তারা 8 নিচে করছি বিজোড় এবং এমনকি এবং সুতরাং হয় 8. উপরে i%2বা i÷8(যা <আমি 8 এবং 1> আমি 0 = 8 এখানে) 1 হওয়া উচিত, তবে উভয়ই নয় - তাই আমরা সেগুলি এক্সওআর করি। তাহলে XOR ফলাফলের সত্য, আমরা চেক তারিখ 1:28+3অর্থাৎ 1:31, অন্যথায় আমরা শুধু তারিখ পরীক্ষা 1:28

1:28বাকি মাসগুলিতে যথেষ্ট ( অসোন তুহিদের রুবি উত্তর দ্বারা অনুপ্রাণিত এই উন্নতি ) কারণ:

  • ফেব্রুয়ারির জন্য, একমাত্র সম্ভাবনা ছিল 2*29 = 58, তবে 2058একটি লিপ বছর নয়, তাই আমরা ধরে নিতে পারি ফেব্রুয়ারিতে সর্বদা ২৮ দিন থাকে।

  • 30 দিনের অন্যান্য মাসগুলি 4 মাস বা তারও বেশি মাসের জন্য - যার জন্য i*29(এবং i*30) 100 এর উপরে হবে, যা উপেক্ষা করা যায়।

পরিশেষে, আমরা y/iদিনের এই তালিকার কতগুলি সময় অন্তর্ভুক্ত তা গণনা করি ( sumএখানে বুলিয়ান ব্যবহার করে ) এবং তা ফিরে আসি।


3

জাভাস্ক্রিপ্ট, 91 85 82 81 77 বাইট

2-অঙ্কের স্ট্রিং (বা 1 বা 2 সংখ্যার পূর্ণসংখ্যার) হিসাবে ইনপুট নেয়।

সত্য যে সুবিধা গ্রহণ করে new Dateপরের মাসে রোলওভার হবে এবং এইটিকে অব্যাহত রাখুন , আপনি যদি প্রথম দিনটিতে এটি পাস করেন এমন মাসে যে দিনগুলির সংখ্যা ছাড়িয়ে যায় এমন কোনও দিনের মান দেয় তবে এটি পুনরায় নির্মাণের চেষ্টা করে তারিখ yyyy-01-345যা হয়ে যায় yyyy-12-11, বা yyyy-12-10লিপ বছরগুলিতে। আমাদের পরে 12*11+3-সংখ্যার ফলাফল হিসাবে তারিখগুলি পরীক্ষা করার দরকার নেই ।

y=>(g=d=>d&&([,M,D]=new Date(y,0,d).toJSON().split(/\D/),D*M==y)+g(--d))(345)

3 বাইট সংরক্ষণ করেছেন আর্নল্ডকে ধন্যবাদ ।


এটা পরীক্ষা করো

f=
y=>(g=d=>d&&([,M,D]=new Date(y,0,d).toJSON().split(/\D/),D*M==y)+g(--d))(345)
o.innerText=[...Array(99)].map((_,x)=>(2001+x++)+` = `+f(x)).join`\n`
pre{column-count:5;width:480px;}
<pre id=o></pre>



2

এক্সেল, 83 বাইট

{=SUM(IF(MONTH(DATE(A1,1,0)+ROW(1:366))*DAY(DATE(A1,1,0)+ROW(1:366))=A1-2000,1,0))}

A1ফর্ম্যাটে ইনপুটটি ঘরে রয়েছে yyyy। এটি একটি অ্যারে সূত্র এবং Ctrl+ Shift+ সহ প্রবেশ করা হয়েছেEnter কোঁকড়া বন্ধনী পেতে {}। এটি মোটামুটি সোজা এবং কোনও চালাকি ছাড়াই।

যখন একটি অ্যারে সূত্রে থাকে তখন DATE(A1,1,0)+ROW(1:366)আমাদের 366 তারিখের মানগুলির একটি অ্যারে দেয়। নন-লিপ বছরগুলিতে, এটি পরের বছরের 1 জানুয়ারিকে অন্তর্ভুক্ত করবে তবে এটি কোনও সমস্যা নয় কারণ 1*1=1এটি পরের বছরটি কেবলমাত্র একটি মিথ্যা ইতিবাচক হিসাবে গণ্য হবে 2001তবে, যেহেতু প্রয়োজনীয় বছরের পরিসীমা 2001 - 2099, তাই এটি কখনই উত্থিত হবে না সমস্যা.

আপনি যদি সেই বিটটি কেবল সরলভাবে সূচনা করেন ~তবে অনুসরণ করা খুব সহজ কারণ সূত্র:

{=SUM(IF(MONTH(~)*DAY(~)=A1-2000,1,0))}

আমি এর COUNTIF()পরিবর্তে ব্যবহার করার চেষ্টা করেছি SUM(IF())তবে এক্সেল আমাকে এটিকে অ্যারে সূত্র হিসাবে প্রবেশ করতে দেয় না, আমাকে খুব কম ফলাফল দেয়। আমি করেনি একটি এটি Google পত্রক ব্যবহার সমাধান CountIf()বেশিরভাগই কারণ এটি ব্যবহার করে নিষ্কাশিত 91 বাইট হতে অন্যথায় কিন্তু একই পদ্ধতি, ArrayFormula()পরিবর্তে কেবল { }

=CountIf(ArrayFormula(Month(Date(A1,1,0)+Row(1:366))*Day(Date(A1,1,0)+Row(1:366))),A1-2000)

আমি কোন sensক্যমত্য দেখিনি, তবে আমি সাধারণত আমার বাইট গণনাগুলিতে এক্সেলের জন্য বাইরের কোঁকড়ানো বন্ধনীগুলি অন্তর্ভুক্ত করি না। তারা আরও এমনভাবে অনুভব করেন যে সূত্রের অংশের চেয়ে এক্সেল তার প্রদর্শনকে ফর্ম্যাট করে। মতামত?
সোফিয়া ল্যাটারের

@ সোফিয়াএলচারার এটিকে অ্যারে সূত্র হিসাবে প্রবেশের জন্য প্রয়োজনীয় কী কী কী কী যুক্ত করতে হবে তা স্থির করার পরিবর্তে আমি সেগুলি অন্তর্ভুক্ত করেছি। একটা ব্যাপার মেটা প্রশ্ন সম্পর্কে যে এবং শুধুমাত্র উত্তর বলছেন CTRL + ALT + ENTER যে কমান্ড 1 কীস্ট্রোক যেমন গণনা করবে। আপনি যদি ভিএম ( প্রতি মেটা ) হিসাবে একই ব্যবহার করেন , তবে সেই কীস্ট্রোকটি 1 বাইট হিসাবে গণ্য হবে। তবে আমি অন্যান্য জবাবগুলিতে 1 বাইট হিসাবে সূত্র প্রবেশের শেষে ENTER গণনা করি না।
ইঞ্জিনিয়ার টোস্ট 21

2

রেটিনা 0.8.2 , 55 বাইট

..
$*
(?<=^(1{1,12}))(?=(?(?<=^11$)\1{0,27}|\1{0,30})$)

এটি অনলাইন চেষ্টা করুন! একটি দুই-অঙ্কের বছর নেয়; 4-অঙ্কের বছর সমর্থন করতে 1 বাইট যুক্ত করুন। ব্যাখ্যা: প্রথম পর্যায়ে কেবল অনারীতে রূপান্তরিত হয়। দ্বিতীয় পর্যায়টি মাসের প্রতিনিধিত্ব করে ম্যাচের অবস্থানের আগে 1 থেকে 12 টি অক্ষরের সাথে মিল রেখে শুরু হয় এবং তারপরে সেই মাসের পুরো সংখ্যা পুনরাবৃত্তির জন্য অপেক্ষা করার চেষ্টা করে। যাইহোক, চেহারাটিতে শর্তযুক্ত রয়েছে, যা মাসের উপর নির্ভর করে 27 বা 30 টি পর্যন্ত পুনরাবৃত্তি চয়ন করে। ম্যাচের অবস্থানগুলির গণনাটি তখন কাঙ্ক্ষিত ফলাফল result


2

আর , 22 122 বাইট

x=scan();substr("122324243426133415153317223416132126011504033106131204241006003213011306002122042005101305111014012",x,x)

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

দেখার সারণী পদ্ধতির সাথে যাওয়ার সিদ্ধান্ত নিয়েছে। ইনপুট বছরটি 2 ডিজিট হওয়া দরকার।


1
এছাড়াও টিআইওতে আপনি "লিঙ্ক" বোতামটি হিট করতে পারেন এবং এটি আপনার জন্য উত্তরটি স্বয়ংক্রিয়ভাবে ফর্ম্যাট করবে। এটি স্থাপনের জন্য ডেনিসকে ধন্যবাদ!
জিউসেপ

আপনি প্রারম্ভিক অপসারণ করতে পারেন if, যেহেতু ইনপুট হতে পারে পারেন 2 অঙ্ক বা 4 সংখ্যার, আপনার পছন্দ (আপনি শুধুমাত্র 2 অঙ্ক ইনপুট গ্রহণ করা চয়ন করতে পারেন, যাতে)। তবে দেখে মনে হচ্ছে কোডটি প্রতিমাসে 31 দিন ধারণ করে বলে বিবেচনা করে, সুতরাং উদাহরণস্বরূপ, 62 (2062 এর জন্য) 1 ফিরে আসে যেখানে এটি 0 ফিরে আসবে
সূন্দর - পুনরায় ইনস্টল করুন মনিকা

2
আমি ভুল বুঝেছিলাম. এটি বলা হচ্ছে, আমি নিশ্চিত যে লুকিং টেবিলটি বাইট গণনাতে অন্তর্ভুক্ত করতে হবে।
এনজিএম

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

আমি এখনও সব নিয়ম কি নিশ্চিত না!
এনজিএম

2

সি (জিসিসি), 65 60 59 বাইট

d(a,t,e){for(t=0,e=13;e-->1;)t+=a%e<1&a/e<(e-2?32:29);a=t;}

ব্যবহারকারীর পোর্ট 202729 এর জাভা উত্তর । এটি এখানে অনলাইনে চেষ্টা করুন । 1 বাইট গল্ফ করার জন্য জোনাথন ফ্র্যাচকে ধন্যবাদ ।


a=0,m=13;for(;for(a=0,m=13;। > ।
জোনাথন ফ্রেচ

@ জোনাথানফ্রেচ এটি নির্দেশ করার জন্য ধন্যবাদ, আমি সম্পাদনা করেছি।
ওবালান্স

2

জে , 29 বাইট

1#.(,x*i."+29+3*2~:x=.i.13)=]

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

কিভাবে এটা কাজ করে

1#.(,x*i."+29+3*2~:x=.i.13)=]    Input: year (2-digit, 1..99)
                   x=.i.13       array of 0..12; assign to x
                2~:              1 1 0 1 .. 1
              3*                 3 3 0 3 .. 3
           29+                   32 32 29 32 .. 32
       i."+                      for each item of above, generate a row 0 .. n
    ,x*                          each row times 0 .. 12 and flatten
                           =]    1 for each item == input, 0 otherwise
1#.                              sum

2 বার জেলি সলিউশনটি পেতে কঠোর চেষ্টা করা হয়েছে :)

সাইড নোট

যদি কেউ সত্যিই 99-সংখ্যার ডেটা হার্ডকোড করতে চায় তবে এখানে কিছু তথ্য দেওয়া হবে:

99-সংখ্যাকে 2 অঙ্কের অংশে ভাগ করুন। তারপরে প্রথম সংখ্যাটি <4এবং দ্বিতীয়টি <8, যার অর্থ পাঁচটি বিট দুটি সংখ্যা এনকোড করতে পারে। তারপরে পুরো ডেটা 250 বিট বা 32 বাইটে এনকোড করা যাবে।


2

পাইথন 3 , 158 162 215 241 বাইট

শর্তসাপেক্ষে গল্ফ করার জন্য স্টিফেনকে 4 টি সরানো হয়েছে।

সাদা স্থানটি নির্দেশ করার জন্য 53 টি স্টিফেনকে সরানো হয়েছে

কেয়ারড দ্বারা সরবরাহিত লিঙ্কটির জন্য 26 টি সরানো হয়েছে

আমি এ থেকে বেশ নতুন। এক মাসের দিনগুলি বর্ণনা না করে কীভাবে এটি করা যায় তা ভাবতে পারিনি।

r=range
def n(Y):
 a,b,c=31,30,0
 for x in r(12):
  for y in r([a,(28if Y%4else 29),a,b,a,b,a,a,b,a,b,a][x]):
   if(x+1)*(y+1)==int(str(Y)[2:]):c+=1
 return c

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


5
সাইটে স্বাগতম, এবং প্রথম প্রথম পোস্ট! আপনি গল্ফ করতে পারেন এমন কয়েকটি উপায় আছে যেমন কিছু শ্বেতস্থান সরিয়ে ফেলা, তাই পাইথনে গল্ফ করার জন্য এই টিপসগুলি
সিয়ারড কোইনারিংহাহিং

কায়ারডকয়েনেরিংহাহিং পরামর্শের জন্য লিঙ্কটি খুব কার্যকর ছিল বলে ধন্যবাদ!
আকোজি

1
158 বাইট - কিছুটা দূরে গল্ফ করেছে, তবে বেশিরভাগই আপনার তৃতীয় লাইনে ফাঁকা জায়গাগুলির একটি বড় দীর্ঘ রেখা ছিল, কীভাবে সেগুলি সেখানে পৌঁছেছে
স্টিফেন

@ স্টিফেন ধন্যবাদ :) আমি আপনাকে দুটি সম্পাদনা হিসাবে যুক্ত করেছি। একটি সাদা স্থানের জন্য এবং অন্যটি গল্ফিং হিসাবে।
আকোজি

(28if Y%4else 29)সংক্ষিপ্ত করা যেতে পারে [29,28][Y%4>0]। এছাড়াও, দীর্ঘ তালিকাটি সংক্ষিপ্ত করা যেতে পারে [a,...]+2*[a,b,a,b,a]a,b,cএকটি লাইন সংরক্ষণের জন্য প্যারামিটার তালিকায় যুক্ত করা যেতে পারে। int(str(Y)[2:])সংক্ষিপ্ত করা যেতে পারে Y%100। অবশেষে, কাউন্টার ভেরিয়েবলগুলি বেশিরভাগের lenতালিকা বোধগম্যকে সংক্ষিপ্ত করা যেতে পারে, এটি এটিকেও nতৈরি করতে দেয় lambda। এটি 118 করে
কালো আউল কাই

2

ফোর্থ (গফার্থ) , 60 59 বাইট

: f 0 13 1 do over i /mod swap 32 i 2 = 3 * + 0 d< - loop ;

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

এই সংস্করণটি প্রতি মাসে 1 টির বেশি মিলের দিন হতে পারে না এবং এই বছরটি মিলবে তার জন্য এই মাসটি বিভাজ্য হতে হবে the এই সুবিধাটি গ্রহণ করে।

ব্যাখ্যা

কয়েক মাস ধরে আইট্রেটস, বছরের পর বছর বিভাজ্য কিনা তা পরীক্ষা করে দেখানো হয় এবং ভাগফল <31 (ফেব্রুয়ারির জন্য 28) মাসের পরের মাসগুলি 25 দিনের বেশি দিনের জন্য মেলে না, তাই আমরা কেবলমাত্র সমস্ত মাস ধরে নিতে পারি (ফেব্রুয়ারী ব্যতীত) ধাঁধা উদ্দেশ্য জন্য 31 দিন আছে।

কোড ব্যাখ্যা

: f                   \ start new word definition
  0                   \ set up counter
  13 1 do             \ start a counted loop from 1 to 12
    over i /mod       \ get the quotient and remainder of dividing year by month
    swap              \ default order is remainder-quotient, but we want to swap them
    32 i 2= 3 * +     \ we want to compare to 32 days unless month is Feb
    0 d<=             \ treat the 4 numbers on the stack as 2 double-length numbers
                      \ and compare [1]
    -                 \ subtract result from counter (-1 is true in Forth)
  loop                \ end loop
;                     \ end word definition    

[1] - ফোরের দ্বিগুণ দৈর্ঘ্যের সংখ্যাগুলির ধারণা রয়েছে, যা স্ট্যাকের উপরে দুটি একক দৈর্ঘ্যের সংখ্যা হিসাবে সংরক্ষণ করা হয় (ফর্ম xy এর, যেখানে ডাবলের মান = y * 2^(l) + xযেখানে l এর মধ্যে একটি একক বিটের আকার হয়) আপনি বাস্তবায়নের সাথে কাজ করছেন)।

এই ক্ষেত্রে, আমি ভাগফল এবং বাকীটি 32 (বা 29) এর সাথে তুলনা করেছি 0 যদি বাকীটি 0 এর চেয়ে বড় হয় (বছর মাসে মাসে বিভাজ্য নয়) তবে প্রথম ডাবলটি স্বয়ংক্রিয়ভাবে 32 (বা 29) 0 এর চেয়ে বড় হবে এবং ফলাফল মিথ্যা হবে। যদি বাকীটি 0 হয়, তবে এটি কার্যকরভাবে ভাগফল <= 32 (বা 29) এর নিয়মিত পরীক্ষার সমাধান করে

চতুর্থ (গফার্ড) , 61 বাইট

: f 0 13 1 do i 2 = 3 * 32 + 1 do over i j * = - loop loop ; 

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

কেবলমাত্র ফেব্রুয়ারিতে মাসের সঠিক সংখ্যা থাকার দিক বিবেচনা করে কিছু বাইট সংরক্ষণ করা হয়েছে

ব্যাখ্যা

চতুর্থ (কমপক্ষে gforth) তুলনাগুলি সত্যের জন্য -1 এবং মিথ্যাটির জন্য 0 প্রদান করে

0                     \ place 0 on top of the stack to use as a counter
13 1 do               \ begin the outer loop from 1 to 12
  i 2 = 3 *           \ if i is 2 place -3 on top of the stack, otherwise 0
  32 + 1 do           \ begin the inner loop from 1 to 31 (or 28)
    over              \ copy the year from stack position 2 and place it on top of the stack
    i j * = -         \ multiply month and day compare to year, subtract result from counter 
  loop                \ end the inner loop
loop                  \ end the outer loop

1

জাভা (জেডিকে 10) , 79 72 70 বাইট

y->{int a=0,m=13;for(;m-->1;)a+=y%m<1&&y/m<(m==2?29:32)?1:0;return a;}

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


@ শেগি ধন্যবাদ! (পূর্ববর্তী সংস্করণ থেকে অবশিষ্ট যেখানে আমি সমস্ত d
আইস

যদি আপনি এটি পরিবর্তন &&করেন &তবে অলিভিগ্রগ্রোগায়ারের জাভা উত্তর হিসাবে একই উত্তর, যদিও তিনি 19 মিনিট আগে উত্তর দিয়েছিলেন।
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন এলোমেলো কাকতালীয়। যদিও আমার সংস্করণটি কিছুটা খারাপ (টার্নারির অপ্রয়োজনীয় ব্যবহার)।
ব্যবহারকারী 202729

1

জাভাস্ক্রিপ্ট (নোড.জেএস) , 108 বাইট

a=>'0122324243426133415153317223416132126011504033106131204241006003213011306002122042005101305111014012'[a]

f=a=>'0122324243426133415153317223416132126011504033106131204241006003213011306002122042005101305111014012'[a]
o.innerText=[...Array(99)].map((_,x)=>(2001+x++)+` = `+f(x)).join`\n`
pre{column-count:5;width:480px;}
<pre id=o></pre>


ব্রুট ফোর্স চেহারা, দুর্দান্ত!
ব্র্যাডিসি

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


1

পাইথন 3, 132 বাইট

এটি সত্যিই একটি প্রোগ্রাম দীর্ঘ দীর্ঘ কিন্তু আমি মনে করি এটি আগ্রহী হতে পারে।

সমস্ত মান 0-7 এর মধ্যে হয় তাই আমি প্রতিটি সংখ্যা দীর্ঘ বাইনারি স্ট্রিংয়ে 3 বিট সহ এনকোড করি। আমি আমার অজগর প্রোগ্রামে একটি কাঁচা বাইনারি স্ট্রিং আটকানোর চেষ্টা করেছি কিন্তু আমি এটি কাজ করতে পারি না, তাই আমি ফাইলটিতে বেস 64 এ স্থির হয়েছি।

আমি নিম্নলিখিত স্ট্রিংটিকে লুক টেবিল হিসাবে ব্যবহার করেছি (প্যাডিংয়ের জন্য 7 টি শেষ): 01223242434261334151533172234161321260115040331061312042410060032130113060021220420051013051110140127

প্রোগ্রামটি এই স্ট্রিংটি নেয় এবং এটিকে একটি সংখ্যা হিসাবে ডিকোড করে, তারপরে ফলাফলটি বের করতে বিট শিফটিং ব্যবহার করে।

import base64
lambda n:int.from_bytes(base64.b64decode(b'pNRRxYtw01s9Jw4tFYE0QNkYsoRQgYBosEsYBFIRAUgsUkgwFQM='),'big')>>(6306-3*n)&7

66 বাইট + 37 বাইট ফাইল = 103 বাইট

এটি কল করা একটি বাইনারি ফাইল পড়ে eএবং বেস 64 ব্যবহার করা এড়ানো হয়।

lambda n:int.from_bytes(open('e','rb').read(),'big')>>(6306-3*n)&7

এখানে পঠিত ফাইলের একটি হ্যাক্সডাম্প রয়েছে (প্যাডিং ছাড়াই):

00000000  a4 d4 51 c5 8b 70 d3 5b  3d 27 0e 2d 15 81 34 40  |..Q..p.[='.-..4@|
00000010  d9 18 b2 84 50 81 80 68  b0 4b 18 04 52 11 01 48  |....P..h.K..R..H|
00000020  2c 52 48 30 0a                                    |,RH0.|

1

হাস্কেল , 61 51 বাইট

f y=sum[1|i<-[96..508],mod(div i 32)13*mod i 32==y]

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

এক্সনোর পাইথন 2 উত্তর এবং লাইকনি দ্বারা অনুপ্রাণিত ।


1
52 বাইট: f y=sum[1|i<-[1..12],mod y i<1,div y i<29+mod i 2*3] এটি অনলাইনে চেষ্টা করুন!
লাইকনি

1

ওরাকল এসকিউএল, 115 বাইট

select count(decode(sign(decode(l,2,29,32)-y/l),1,1))from t,
xmltable('1to 12'columns l int path'.')where mod(y,l)=0

আমরা লক্ষ করতে পারি যে এপ্রিলের (এবং পরবর্তী মাসগুলি) 100/4 <28 সাল থেকে এটি আসলে কত দিন যায় না matter এছাড়াও বছরটি লিপ হয় কি না তাও খতিয়ে দেখার দরকার নেই। আমাদের কেবলমাত্র উল্লেখ করতে হবে যে ফেব্রুয়ারিতে ২৮ দিন রয়েছে (২৯ নয় কারণ সেই বৈধতাটি কেবল ২০৫৮ এর জন্য কার্যকর করা হবে যা লিপ নয়) অন্যথায় এটি কোনও মাসের জন্য কেবল 31 টি হতে পারে।

অন্যান্য পন্থা

ওরাকল এসকিউএল (12 সি রিলিজ 2 এবং তারপরে), 151 বাইট

select count(to_date(y/l||'-'||l||'-1' default '' on conversion error,'dd-mm-y'))from t,
(select level l from dual connect by level<=12)where mod(y,l)=0

ওরাকল এসকিউএল (12 সি রিলিজ 2 এবং তারপরে), 137 বাইট

select sum(validate_conversion(y/l||'-'||l||'-1'as date,'dd-mm-y'))from t,
(select level l from dual connect by level<=12)where mod(y,l)=0

উভয় সমাধান হয়েছে থাকতে পারে 8 বাইট খাটো যদি আমরা প্রতিস্থাপন (select level l from dual connect by level<=12)সঙ্গে xmltable('1to 12'columns l int path'.')কিন্তু ওরাকল বাগ (, সংস্করণ 12.2.0.1.0 উপর পরীক্ষা 18.3.0.0.0) উপর ভিত্তি করে একটি ব্যতিক্রম ছোঁড়ার।

SQL> select count(to_date(y/l||'-'||l||'-1' default '' on conversion error,'dd-mm-y'))from t,
  2  xmltable('1to 12'columns l int path'.')where mod(y,l)=0
  3  /
select count(to_date(y/l||'-'||l||'-1' default '' on conversion error,'dd-mm-y'))from t,
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected DATE got DATE


SQL> select sum(validate_conversion(y/l||'-'||l||'-1'as date,'dd-mm-y'))from t,
  2  xmltable('1to 12'columns l int path'.')where mod(y,l)=0
  3  /
select sum(validate_conversion(y/l||'-'||l||'-1'as date,'dd-mm-y'))from t,
*
ERROR at line 1:
ORA-43909: invalid input data type

উভয় সমাধানের ক্ষেত্রে একমাত্র ক্ষেত্রে যখন বছর হয় 2058 যা নন-লিপ তাই আক্ষরিক '-1' নন-লিপ বছর নির্দিষ্ট করতে ব্যবহৃত হত।

ওরাকল এসকিউএল, 128 বাইট

select count(d)from t,(select date'1-1-1'+level-1 d from dual connect by level<365)
where to_char(d(+),'mm')*to_char(d(+),'dd')=y

ওরাকল এসকিউএল, 126 বাইট

select substr('122324243426133415153317223416132126011504033106131204241006003213011306002122042005101305111014012',y,1)from t

হালনাগাদ

ওরাকল এসকিউএল, ১১০ বাইট

select-sum(least(sign(y/l-decode(l,2,29,32)),0))from t,
xmltable('1to 12'columns l int path'.')where mod(y,l)=0

ওরাকল এসকিউএল, 108 বাইট

select sum(decode(sign(decode(l,2,29,32)-y/l)*mod(y+1,l),1,1))from t,
xmltable('1to 12'columns l int path'.')

স্পার্ক এসকিউএল, 137 বাইট

select count(cast(regexp_replace(concat_ws('-','2001',l,y/l),'.0$','')as date))
from(select explode(array(1,2,3,4,5,6,7,8,9,10,11,12))l),t

2.3+ এসকিউএল, 126 বাইট স্পার্ক করুন

( replaceফাংশন উপলব্ধ হয়)

select count(cast(replace(concat_ws('-','2001',l,y/l),'.0')as date))
from(select explode(array(1,2,3,4,5,6,7,8,9,10,11,12))l),t

1

পিএইচপি , 73 বাইট

পাইপ ইনপুট এবং php -nR:

for(;++$m<13;$d=1)while($d<25+($m-2?$m>4?:7:4))$c+=$argn==$m*$d++;echo$c;

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

পিএইচপি , 76 বাইট

কমান্ড লাইন আরগ ইনপুট ব্যবহার করে php dm.php 18:

for(;++$m<13;$d=1)while($d<25+($m-2?$m>4?:7:4))$c+=$argv[1]==$m*$d++;echo$c;

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

Iterative পদ্ধতির। যেহেতু একমাত্র লিপ বছরটি দেখার জন্য 2 * 29 = 58, এবং 2058 একটি লিপ বছর নয়, ফেব্রুয়ারির দিনগুলিতে লিপ বছর বিবেচনা করার দরকার নেই। এবং যেহেতু র‌্যাপ্রাউন্ড কোনও উদ্বেগের বিষয় নয় - এপ্রিল থেকে, 25 দিনের বেশি যে কোনও দিন 100 ছাড়িয়ে যাবে আমরা কেবলমাত্র বলি বাকি মাসগুলিতে কেবল 25 দিন থাকে।

ইনপুট হ'ল কমান্ড লাইনের মাধ্যমে 2 ডিজিট বছর (প্রোগ্রাম হিসাবে -10 বাইট, @Titus এর পরামর্শ অনুসারে)।

বা:

পিএইচপি , 101 বাইট

$y=$argv[1];for($d=strtotime("$y-1");date(Y,$d)==$y;$d+=86400)eval(date("$\x+=j*n=='y';",$d));echo$x;

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

এখনও পুনরাবৃত্ত কিন্তু পিএইচপি এর টাইমস্ট্যাম্প ফাংশন ব্যবহার করে। বছরটিকে চার অঙ্কের সংখ্যা হিসাবে গ্রহণ করে। strtotime()পরিবর্তে ব্যবহারের পরামর্শের জন্য @ টিটিক্স থেকে @ টিটাস mktime()


প্রথম সংস্করণ 4-অঙ্ক বছরের জন্য ব্যর্থ হয়, দ্বিতীয়টি দুই-অঙ্কের জন্য ব্যর্থ হয়। তবে সুন্দর চিন্তা। $m<5?$m-2?31:28:25প্রথম এবং $d=strtotime("$y-1")দ্বিতীয়টির জন্য চেষ্টা করুন
টাইটাস

উহম ... আপনি কোটাকারে এভালটি কেন রেখেছিলেন y?
তিতাস

@ টাইটাস কারণ পিএইচপি 7 এখন অংকটিকে 0 হিসাবে অষ্টাল হিসাবে গণ্য করে, তাই 08 এবং 09 আসলে বৈধ নয়। tio.run/##K8go@G9jXwAkU5Mz8hUMFWxtFQwsrP//BwA তারিখ () ফাংশনটি ব্যবহার করে আপনি কেবল একটি 2 সংখ্যা, শূন্য প্যাডযুক্ত বছর পেতে পারেন।
640 কেবি

অকর্মা! অবশ্যই.
তিতাস

1
@ টিটাস, strtotime()পরিবর্তিত দ্বিতীয় সংস্করণ ব্যবহার করে mktime()প্রোগ্রাম হিসাবে পুনরায় প্রয়োগ করা হয়েছে, -7 বাইট। এছাড়াও, আমি বেশিরভাগ সাবমিশনের দিকে তাকিয়েছিলাম, শীর্ষে ভোট প্রাপ্তদের সহ, কেবল 2 বা 4 সংখ্যা হিসাবে বছর গ্রহণ করবে, সুতরাং আমি এটি গ্রহণ করতে যাচ্ছি মানে বোঝাতে যাচ্ছি। আবারও পরামর্শের জন্য!
640 কেবি

0

পিএইচপি, 74 70 বাইট

while(++$m<13)for($d=$m<5?$m-2?31:28:25;$d;)$n+=$d--*$m==$argn;echo$n;

শুধুমাত্র দুই-অঙ্কের বছর গ্রহণ করে।

আমি গৌগীর বিবেচনা গ্রহণ করেছি এবং সেগুলি গল্ফ করেছি; আমার 1 ম পদ্ধতির দীর্ঘ ছিল (92 বাইট):

for($y=$argn%100;++$m<13;)for($d=$m-2?30+($m+$m/8)%2:29-($y%4>0);$d;)$n+=$d--*$m==$y;echo$n;

%100 4-অঙ্কের বছর ব্যবহার করতে দেয়।


পাইপ হিসাবে চালনা করুন-nR বা তাদের অনলাইনে চেষ্টা করুন


আপনি% 100 কে সরিয়ে মাত্র 2 ডিজিটের ইনপুট নিয়ে 4 টি বাইট সংরক্ষণ করতে পারেন যা ঠিক আছে: কোডগল্ফ.স্ট্যাকেক্সেঞ্জার
640
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.