প্রধানমন্ত্রী বুধবার


22

প্রধানমন্ত্রী বুধবার

আপনার কাজটি হ'ল বুধবারের সংখ্যাটি নির্দিষ্ট বছরের মধ্যে মাসের প্রথম দিনটিতে পড়ে count উদাহরণস্বরূপ, 7-13-16একটি প্রধান বুধবার। ধারাবাহিকতার জন্য সমস্ত তারিখের জন্য গ্রেগরিয়ান ক্যালেন্ডার ব্যবহার করুন।

ইনপুট

আপনার প্রোগ্রাম / ফাংশনে ইনপুটটি এক বছর হবে (যেমন 2016) এবং নমনীয়। বছরটি 1912 এবং 2233 সমেতের মধ্যে পূর্ণসংখ্যা হবে।

আউটপুট

আউটপুটটিও নমনীয় এবং প্রধান বুধবারের সংখ্যা হওয়া উচিত (উদাঃ 18)।

স্কোরিং

এটি তাই বাইট জেতে সংক্ষিপ্ততম কোড!

পরীক্ষার মামলা

ইনপুট -> আউটপুট
--------------------
1912 -> 19
1914 -> 16
1984 -> 17
1996 -> 19
2063 -> 19
2150 -> 16
2199 - > 18
2233 -> 18

উত্তর:


7

এমএটিএল , 38 36 34 বাইট

FT+"@llI$YO]q&:t8XO!s9\~)9#1$ZOZps

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন (কয়েক সেকেন্ড সময় নেয়)।

ব্যাখ্যা

FT+     % Input year implicitly. Add [0 1] element-wise. Gives array with input year
        % and next year
"       % For each of those two years
  @     %   Push year
  ll    %   Push 1 twice. This indicates January 1.
  I$YO  %   Convert year, month, day to serial date number
]       % End for each. We now have the serial date number for January 1 of the input
        % year and that of the following year
q       % Subtract 1 to the latter, to yield December 31 of the input year
&:      % Inclusive range between those two numbers. This gives an array of serial date
        % numbers for the whole input year
t       % Push another copy of that array
8XO     % Convert to date string with format 8. This gives weekday as "Mon", "Tue" etc.
        % The result is a 3-column 2D char array, where each row is a day
!s      % Transpose, sum of each column. 'Wed' gives 288 (sum of ASCII codes)
9\~     % 288 gives 0 modulo 9, and is the only weekday to do so. So we compute modulo 9
        % and negate. This gives true for Wednesdays, false for the rest
)       % Apply as logical index into the array of serial date numbers
9#1$ZO  % Array of month numbers corresponding to those serial date numbers
Zp      % Array that contains true for prime numbers, false for the rest
s       % Sum of array. Display implicitly

আমি নিশ্চিত যে তারিখ-ভিত্তিক চ্যালেঞ্জগুলিতে এমএটিএলকে পরাজিত করা যাবে না। আমাদের DATL তৈরি করা উচিত যা তারিখ-ভিত্তিক চ্যালেঞ্জগুলি পরিচালনা করতে আরও অনুকূলিত।
সোয়েভার

@ স্যুভার হা হা, সুন্দর নাম
লুইস মেন্ডো

20

পাইথন 2, 95 93 68 67 বাইট

lambda y:0x10ea2c8dbb06c5619/5**((y+((y-22)/99-y/2002)*16)%28)%5+16

@ জোসে কে 1 বাইট বন্ধ করে দেওয়ার জন্য ধন্যবাদ!

আইডিয়নে এটি পরীক্ষা করুন ।


3
0x10ea2c8dbb06c5619পরিবর্তে আপনি 1 চর সংরক্ষণ করতে পারেন 19501370182350951961
সিলভাইনড

আমি বুঝতে পারি big_constant//5**long_expressionতবে পৃথিবীতে আপনি কীভাবে এই ধ্রুবক এবং সেই অভিব্যক্তিটি নিয়ে এসেছিলেন? এটি পাগল: ডি
শার্লক 9

2
ধ্রুবকটি বেস 5 অঙ্কগুলি ব্যবহার করে একটি সন্ধানের টেবিলটি সহজ, তবে বেস 10 তে রূপান্তরিত হয়, যাতে স্ট্রিং সূচক ব্যবহার না করে অঙ্কগুলি সংখ্যাসূচকভাবে বের করা হয়। অভিব্যক্তিটি আমার কাছে চিরন্তন ক্যালেন্ডারের মতো লাগে। (সমস্যাটি খুব সহজ হবে যদি এটি ১৯০১ থেকে ২০৯৯ সাল পর্যন্ত সীমাবদ্ধ ছিল, কারণ উত্তরগুলি সেই বিরতিতে প্রতি ২৮ বছর পরে পুনরায় পুনর্বার হয়, তাই এটি কেবল বছরের ২৮ শে মডেল নেওয়ার এবং টেবিলে দেখার বিষয়টি হবে। )
নীল

13

ব্রেন-ফ্লাক , 6588 , 2310 , 2308 , 2290 বাইট

প্রথম জিনিসগুলি, আমি এই প্রোগ্রামের প্রায় 100% লিখিনি, যা সম্ভবত প্রোগ্রামের বিশাল আকার দ্বারা প্রমাণিত। এই কোডটির বেশিরভাগটি আমার নিজের ব্রেইন-ফ্লাক গল্ফিং অ্যালগরিদম দ্বারা রচিত হয়েছিল । অতিরিক্ত পাইথন স্ক্রিপ্টের পাশাপাশি আমি এটিকে সঠিক দিকে প্রম্পট করার জন্য লিখেছিলাম।

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

({}<(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()()())){}{}){})[()()])())()())[()()()()])())()()())[()()()])()())[()()()])()())[()]))())()())[()()()()])())()()())[()()()])())())[()])[()])()()())[()()])()())[()()()()])()())())[()()])())()())[()()()()])()())[()])()()())[()()])()())[()()()()])()())())[()()])())()())[()()()()])())()()())[()()()])()())[()()()])()())[()]))())()())[()()()()])())()()())[()()()])())())[()])[()])()()())[()()])()())[()()()()])()())())[()()])())()())[()()()()])())()()())[()()()])()())[()()()])()())[()]))())()())[()()()()])())()()())[()()()])())())[()])[()])()()())[()()])()())[()()()()])()())())[()()])())()())[()()()()])())()()())[()()()])()())[()()()])()())[()]))())()())[()()()()])())()()())[()()()])())())[()])[()])()()())[()()])()())[()()()()])()())())[()()])())()())[()()()()])())()()())[()()()])())()())[()()()()])()())())[()()])())()())[()()()()])())()()())[()()()])()())[()()()])()())[()]))())()())[()()()()])())()()())[()()()])())())[()])[()])()()())[()()])()())[()()()()])()())())[()()])())()())[()()()()])())()()())[()()()])()())[()()()])()())[()]))())()())[()()()()])())()()())[()()()])())())[()])[()])()()())[()()])()())[()()()()])()())())[()()])())()())[()()()()])())()()())[()()()])()())[()()()])()())[()]))())()())[()()()()])())()()())[()()()])())())[()])[()])()()())[()()])()())[()()()()])()())())[()()])())()())[()()()()])())()()())[()()()])()())[()()()])()())[()]))())()())[()()()()])())()()())[()()()])())())[()])[()])()()())[()()])()())[()()()()])()())())[()()])())()())[()()()()])())()()())[()()()])()())[()()()])()())[()]))())()())[()()()()])())()()())[()()()])())())[()])[()])()()())[()()])()())[()()()()])()())())[()()])())()())[()()()()])())()()())[()()()])()())[()()()])()())[()]))())()())[()()()()])())()()())[()()()])())())[()])[()])()()())[()()])()())[()()()()])()())())[()()])())()())[()()()()])())()()())[()()()])()())[()()()])()())[()]))())()())[()()()()])())()()())>[(((((((((()()()()())){}{}){}){}){}){}[()]){}){}){}]){({}[()]<{}>)}{}({}<{{}}>)

কোড গল্ফের জন্য এই প্রোগ্রামটি বেশ দীর্ঘ হলেও ব্রেন-ফ্লাকের পক্ষে এটি অত্যন্ত শালীন। বর্তমানে পূর্ণসংখ্যা বিভাগের বিশ্ব রেকর্ডটি 1000 বাইটেরও বেশি।

ব্যাখ্যা

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

যেহেতু বেশিরভাগ 321 সংখ্যার গড় প্রায় 18 এবং তারা পৃথকভাবে সমস্ত সংখ্যার দিকে চাপ দেওয়ার পরিবর্তে বছরের পর বছর খুব সামান্য পৃথক হয় আমি প্রথম বছরটিকে (2233) সাধারণভাবে ধাক্কা দেয় এবং তারপরে প্রতিলিপি করে প্রতিবছরের জন্য মানটি কিছুটা পরিবর্তন করি পরে। এইভাবে সমস্ত 321 বছরের জন্য 18 ডলার চাপ দেওয়ার পরিবর্তে আমি কেবল প্রতি বছরের জন্য ~ 2 চাপিয়ে দিতে পারি।

সমস্ত উত্তর একবারে ধাক্কা পরে এটি ইনপুট থেকে 1912 কে বিয়োগ করে ({}[(((((((((()()()()())){}{}){}){}){}){}[()]){}){}){}])(এটি সাবঅপটিমাল হতে পারে, আমি নির্দিষ্ট মানগুলিকে এড়িয়ে যেতে অপ্টিমাইজারটি পুনরায় লিখেছিলাম যে আমি বিশ্বাস করি যে অনুকূল হবে না কারণ হার্ডকোডিং সংখ্যাগুলি একটি অতি-তাত্পর্যপূর্ণ প্রক্রিয়া এবং এটি সমাপ্তির দিকে চালানো থাকতে পারে) কয়েক দিন সময় নিয়েছে)।

এরপরে এটি প্রথম উপাদান থেকে একটিকে বিয়োগ করে ফলাফল শূন্যে পৌঁছা পর্যন্ত দ্বিতীয় উপাদানটিকে পপ করে {({}[()]<{}>)}

এটি শূন্য {}এবং শীর্ষ উপাদানগুলির নীচে সমস্ত উপাদানকে পপ করে ({}<{{}}>)


গল্ফিং সংখ্যার সাধারণ পদ্ধতি কী?
নীল

সহজ ধারণাটি হ'ল যদি আপনার এন এবং এম ফ্যাক্টরগুলির সাথে সংখ্যা থাকে তবে আপনি এন এম -1 বার চাপুন এবং তারপরে এম -1 বার পপ করুন। প্রাথমিক ধাক্কা n হিসাবে মূল্যায়ন করে এবং প্রতিটি পপ অতিরিক্ত n হিসাবে মূল্যায়ন করে (1 + এম -1) (এন) যা এমএন এর সমান হয়। এটি পুনরাবৃত্তভাবে সম্পন্ন করা হয় কারণ n টিপানোর জন্য আমাদের পাশাপাশি গল্ফ এন করতে হবে। যেহেতু এই পদ্ধতিটি কয়েকটি সংখ্যার বিশেষত প্রাইমগুলির জন্য ভালভাবে কাজ করে না, আমরা আরও কাছাকাছি আরও কার্যকর নম্বর আছে কিনা তা দেখতেও প্রায় ঘুরে দেখি এবং যদি তাই হয় তবে আমরা এটির সংখ্যার যোগফল এবং পার্থক্য হিসাবে প্রকাশ করি।
গম উইজার্ড

আমি দেখছি ... সুতরাং দুটি সংখ্যা দেওয়া হয়েছে nএবং mযার দৈর্ঘ্য রয়েছে kএবং l, আমি ধরে নিচ্ছি n+mদৈর্ঘ্য হবে k+l? কি হবে n*m?
নিল

n*mহবে k+4m-4বা l+4n-4। কারণ হ'ল গুণটি হার্ডকোডযুক্ত। আমরা প্রথম n m-1বার ধাক্কা । এটি করার জন্য আমাদের kপুশগুলি প্রকাশ করার জন্য চিহ্ন nএবং 2m-2চিহ্নগুলি প্রয়োজন (প্রতিটি ধাক্কা 2 টি প্রতীক)। তারপরে আমরা m-1বার বার পপ করি , আমাদের অতিরিক্ত অতিরিক্ত ব্যয় করে 2m-2(পপসের জন্য 2 টি প্রতীকও ব্যয় হয়)। এটি মোট k+4m-4। আমরা পেতে গুণগত m*n(পরিবর্তনীয় সম্পত্তি) করতে পারেন l+4n-4। ফল দু'জনেরই কম হবে।
গম উইজার্ড

1
ঠিক আছে, যদি এটি সত্য হয় তবে তার +1দাম 2, *24 টি, *38 এর *4দাম, 12 এর দাম, যা এর চেয়ে বেশি ব্যয়বহুল *2*2, তাই মূল্যহীন নয় (1000 এর নীচে সংখ্যাগুলির মধ্যে আমি কেবল 10 পেয়েছি যা ব্যবহার করেনি *2: 1, 2, 3 , 4, 5, 9, 15, 27, 45, 135)। 1912 এর জন্য আমি ((((((1+1+1)*2+1)*2*2+1)*2+1)*2+1)*2+1)*2*2*252 এর দৈর্ঘ্যের সাথে সেরাটি করতে পারি
নীল

7

বাশ + সাধারণ ইউটিলিটিস, 39

ncal $1|grep W|factor|egrep -c ': \S+$'

ইনপুট বছরকে কমান্ড-লাইন প্যারামিটার হিসাবে নেয়। সাধারণত এসটিডিআরআরে এই জাতীয় বার্তাগুলি আউটপুট করে - আমার মনে হয় এই মেটা-উত্তর অনুসারে এটি আইনী :

factor: We is not a valid positive integer

আপনি যদি স্পষ্টভাবে STDERR আউটপুটটি দমন করতে চান তবে 43 এর স্কোরের পরিবর্তে আপনি এটি করতে পারেন :

ncal $1|grep W|factor 2>-|egrep -c ': \S+$'

নোট করুন যে এটি একটি ইংরেজি বা সি / পসিক্স লোকেল ধরেছে। এটি এতটা ভাল কাজ করে না gd_GB.utf8, যেখানে সমস্ত দিনের নাম সংক্ষেপ করে Di
টবি স্পিড

6

অক্টাভা, 86 বাইট

এটি কোনও প্রসারিত দ্বারা দ্রুত নয় । কিন্তু এটি আসলে কোনও কোড গল্ফের লক্ষ্য নয়, তাই না?

function r=p(y)r=0;for(i=698346:7:815953)d=datevec(i);r+=d(1)==y*isprime(d(3));end;end

অষ্টাভে "তারিখ সংখ্যা" অনুসারে তারিখগুলি ট্র্যাক করতে পারে - 1 জানুয়ারীর প্রথম দিন যেখানে 1 দিন কেটে গেছে এমন দিন সংখ্যা 1। এই পরিমাপের মাধ্যমে, 3 জানুয়ারী, 1912 (আমাদের সেটের প্রথম বুধবার) দিনটি 698,346। সেখানে শুরু করুন এবং 2233 এর শেষ অবধি প্রতি 7 তম দিনে (সমস্ত বুধবার) পুনরাবৃত্তি করুন, এবং বছরটি লক্ষ্য বছর এবং মাস-দিনটি প্রধান হলে 1 যুক্ত করুন।


5

পাইথন 2.7, 166 , 165 , 150 বাইট

from datetime import*
y=input()
d,c=date(y,1,1),0
while d.year==y:n=d.day;c+=n>1<2==d.weekday()>0<all(n%x for x in range(2,n));d+=timedelta(1)
print c

এখানে অবশ্যই উন্নতির অবকাশ রয়েছে। আমি অজগরে গল্ফিংয়ের পরিবর্তে নতুন। এটি datetimeমডিউলটি ব্যবহার করে । এটি মাপদণ্ডের সাথে মানিয়ে নিলে বছরের সমস্ত দিন জুড়ে যায় an এটি তখন ফলাফল মুদ্রণ করে। ভারী উত্তোলনের বেশিরভাগটি মডিউলে থাকে যাতে কোডটি বেশ স্লিম হতে পারে।

একটি বাইট মরগান থ্রাপ এবং পিটু 1998 দ্বারা সংরক্ষিত 15 বাইটকে ধন্যবাদ রক্ষা করেছে


1
আপনাকে স্যুইচ করার পর এক বাইট সংরক্ষণ করতে পারবেন n%x==0করার n%x<1
মরগান থ্রাপ

2
-1যেমন প্রয়োজন হয় না rangeএর শেষ সূচক স্বতন্ত্র। অতিরিক্তভাবে, আপনি filterজেনারেটরে রূপান্তর করতে পারেন । [0for x in range(2,n)if n%x<1]
পূর্কাকাডারী

আপনি ব্যবহার করতে পারেন any(...)বা all(...)পরিবর্তে not filter(...)
কেনেটিএম

1
শৃঙ্খলিত তুলনা একত্রিত করে এবং allআপনি একটি সম্পূর্ণ গুচ্ছ সংরক্ষণ করতে পারেন। c+=n>1<2==d.weekday()>0<all(n%x for x in range(2,n))
পুরক্কা কুডারী

3

জে, 44 বাইট

+/@(valdate*3=weekday)@,.&(,/(>:,"0/p:)i.12)

আমি সবেমাত্র আবিষ্কার করেছি যে জেতে তারিখের কারসাজির জন্য বিল্টিন রয়েছে।

ব্যবহার

একাধিক ইনপুট / আউটপুট ফর্ম্যাট করার জন্য অতিরিক্ত কমান্ড ব্যবহার করা হয়।

   f =: +/@(valdate*3=weekday)@,.&(,/(>:,"0/p:)i.12)
   (,.f"0) 1912 1914 1984 1996 2063 2150 2199 2233
1912 19
1914 16
1984 17
1996 19
2063 19
2150 16
2199 18
2233 18

ব্যাখ্যা

+/@(valdate*3=weekday)@,.&(,/(>:,"0/p:)i.12)  Input: year
                                       i.12   The range [0, ..., 11]
                              >:              Increment each to get the months [1, ..., 12]
                                    p:        Get the first 12 primes [2, ..., 37]
                                ,"0/          Make a table between each month and prime
                           ,/                 Join the rows
                       ,.&                    Prepend the year to each
                                              The date format is YYYY MM DD
            3=weekday                         Check if each date occurs on Wednesday
    valdate*                                  and is a valid date
+/@                                           Count the number of true values and return

1

পাওয়ারশেল v3 +, 99 95 বাইট

নিষ্ঠুর শক্তি পদ্ধতির -

param($y)(1..12|%{$m=$_;2,3,5,7,11,13,17,19,23,29,31|?{(date "$m-$_-$y").DayofWeek-eq3}}).Count

ইনপুট লাগে $yথেকে লুপ 1থেকে 12মাস সাময়িকভাবে মধ্যে, দোকানে $m, তারপর থেকে প্রধানমন্ত্রী ওভার loops 2জন্য 31। তাদের প্রত্যেকের জন্য, আমরা Get-Dateসেই নির্দিষ্ট দিনের একটি নির্মাণ করি , তারপরে কেবলমাত্র DayOfWeek -eqইউলযুক্ত 3(যেমন, বুধবার) সাথে নির্বাচন করি। একটি প্যারেন্সে সমস্ত অ্যারে তৈরি করতে সক্ষম .Countকরে এবং সেগুলি গ্রহণ করে।


বিকল্পভাবে, গাণিতিক পদ্ধতির -

পাওয়ারশেল v3 +, 105 বাইট

param($y)(16,19,18,20,16,18,19)[($a=(date "1-1-$y").DayOfWeek)]+(1,-3,0,1,2)[$y%5]*($a-in0,2,3,4)*!($y%4)

নিষ্ঠুর বলের পদ্ধতির চেয়ে কেবল একটি চুল বেশি দীর্ঘ হয় তবে এটি অন্যদের পক্ষে উপকারী হতে পারে বলে আমি এখানে এটি অন্তর্ভুক্ত করছি।

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

এটি নিম্নলিখিত পর্যবেক্ষণের ভিত্তিতে তৈরি। প্রথম কলামটি 1 লা জানুয়ারী সপ্তাহের কোন দিন, দ্বিতীয়টি হ'ল স্বাভাবিক আউটপুট। বছরটি মধ্যম সংখ্যাগুলির মধ্যে একটি না হলে তার পরিবর্তে এটি প্যারেন্সে সংখ্যা। চূড়ান্ত কলামে% 5 সূচক কীভাবে কাজ করে তা বর্ণনা করে।

Jan-1 -> #  ... Except if $y=       (then it's this number) | $y % 5 =
Sun   -> 16 ... 1928 1956 1984 etc. (17)                    |    3
Mon   -> 19
Tue   -> 18 ... 1924 1952 1980 etc. (20)                    |    4
Wed   -> 20 ... 1936 1964 1992 etc. (17)                    |    1
Thur  -> 16 ... 1920 1948 1976 etc. (17)                    |    0
Fri   -> 18
Sat   -> 19

দ্রষ্টব্য: এই দুটি অনুমান en-usসংস্কৃতি / তারিখের তথ্যের জন্য বর্তমান পাওয়ারশেল সেটিং। তারিখ বিন্যাস এবং DayOfWeekনম্বর অন্যান্য সংস্কৃতি বৈকল্পিকের জন্য সেই অনুযায়ী সামঞ্জস্য করা প্রয়োজন হতে পারে।


1

রুবি, 83 + 15 ( -rdate -rprimeপতাকা) = 98 বাইট

এটি অনলাইন চেষ্টা করুন! (আমদানি করা মডিউলগুলি ইনডেল করা হয়েছে কারণ আইডিপি যদি আমি repl.it- তে পতাকা ব্যবহার করতে পারি)

->y{k=0;Prime.each(31){|d|k+=(1..12).count{|m|Date.new(y,m,d).wday==3 rescue p}};k}

1

জাভাস্ক্রিপ্ট ES6, 187 182 181 179 বাইট

179 কিছুক্ষণের জন্য লুপটির জন্য অদলবদল হয়

z=y=>{D=new Date("1/3/1912");N=0;a=()=>D.getFullYear();b=()=>D.getDate();c=()=>D.setDate(b()+7);for(;a()<=y;c())N+=y-a()?0:-1<[2,3,5,7,11,13,17,19,23,29,31].indexOf(b());return N}

181 তিনটি সংক্ষিপ্ত করা

z=y=>{D=new Date("1/3/1912");N=0;a=()=>D.getFullYear();b=()=>D.getDate();c=()=>D.setDate(b()+7);while(a()<=y){N+=y-a()?0:-1<[2,3,5,7,11,13,17,19,23,29,31].indexOf(b());c()}return N}

182 দুটি লুপ একত্রিত

z=y=>{D=new Date("1/3/1912");N=0;a=()=>D.getFullYear();b=()=>D.getDate();c=()=>D.setDate(b()+7);while(a()<=y){N+=a()==y?-1<[2,3,5,7,11,13,17,19,23,29,31].indexOf(b()):0;c()}return N}

187

z=y=>{D=new Date("1/3/1912");N=0;a=()=>D.getFullYear();b=()=>D.getDate();c=()=>D.setDate(b()+7);while(a()<y)c();for(;a()==y;c())N+=-1<[2,3,5,7,11,13,17,19,23,29,31].indexOf(b());return N}

আপনি উদাহরণ হিসাবে নির্দিষ্ট বছরের জন্য প্রথম প্রাথমিক বুধবার দিয়েছেন বলে আমি মনে করি না।
ওপি'র

"আপনার প্রোগ্রাম / ফাংশনটির ইনপুটটি এক বছর হবে" - তবে আপনি কী নির্দেশ করছেন তা তা নয়। আমি ১৯১২ সালের প্রথম বুধবার একটি বীজ হিসাবে ব্যবহার করি কারণ এটি ওপি প্রদত্ত সময়কালে প্রতি বুধবারের আগে বা হয়, তবে আমি খুব সহজেই 1911 সাল থেকে বা খুব সহজেই এটি বীজ করার জন্য যে কোনও নির্বিচার বুধবার ব্যবহার করতে পারি। আমার ফাংশনটির ইনপুটটি এখনও একবছর, এবং ফাংশনটি এখনও ওপি দ্বারা প্রস্তাবিত সময়সীমার কোনও নির্দিষ্ট বছরে প্রধান বুধবারের সংখ্যা গণনা করে, সুতরাং আমি নিশ্চিত না যে এটি কীভাবে চ্যালেঞ্জের সাথে খাপ খায় না।
পান্ডাকোডার

আহ, ক্ষমা চাই ... আমি প্রথমে বুঝতে পারি নি যে আপনি এটি একটি বীজ উপাদান হিসাবে ব্যবহার করছেন ... দুর্দান্ত ধারণা ... বিশেষত আপনার সমাধান বিবেচনা করে আমার প্রায় 30
মারবে W

1
ধন্যবাদ। আমি ইমন অলিভের ব্রেইন-ফ্লাক বাস্তবায়ন থেকে অনুপ্রেরণা পেয়েছি, যার উত্তরটি পূর্বের প্রোগ্রামিত রয়েছে, তার ব্যাখ্যা অনুসারে।
পান্ডাকোডার

1

ব্যাচ, 248 বাইট

@set/ad=0,l=1,n=20
@for /l %%i in (1913,1,%1)do @set/ad=(d+l+1)%%7,l=!(%%i%%4)-!(%%i%%100)+!(%%i%%400)
@goto %l%%d%
:03
:06
@set/an-=1
:12
:13
:16
@set/an-=1
:01
:04
:14
@set/an-=1
:00
:05
:10
:15
@set/an-=1
:02
:11
@echo %n%

ব্যাখ্যা: dসপ্তাহের দিন, 0সোমবারের সাথে, যা সুবিধামত 1 জানুয়ারী 1912 12 lবছরটি একটি লিপ বছর কিনা 1912 সালের জন্য এটি একটি পতাকা 1We আমরা তখন 1913 থেকে ইনপুট বছরে লুপ করব, দিনটি আপডেট করে সপ্তাহে এবং লিপ ইয়ার পতাকা হিসাবে আমরা যেতে পুনরায় গণনা। অবশেষে আমরা লিপ ইয়ার পতাকা এবং সপ্তাহের দিনটিকে কার্যকরভাবে নির্ধারণ করতে একটি বড় স্যুইচ স্টেটমেন্ট n, প্রধান বুধবারের সংখ্যা নির্ধারণের জন্য ব্যবহার করি। n20 এ সেট করা এবং প্রবাহ নিয়ন্ত্রণ যুক্তি ব্যবহারের তুলনায় সস্তা হলেও পতনের সাথে এটি হ্রাস করা, তবে উতসাহটি হ'ল যদি একটি লিপ-বর্ষের 1 জানুয়ারী বৃহস্পতিবার বা রবিবার হয় তবে অন্যদিকে 16 টি প্রধান বুধবার এবং আরও অনেক কিছু রয়েছে ।


1

জাভাস্ক্রিপ্ট ES6 206 203 199 197 195 183 182 179

সবচেয়ে সংক্ষিপ্ত নয়, তবে এখনই আমি সবচেয়ে ভাল করতে পারি ... গল্ফিংয়ের পরামর্শগুলি স্বাগত ...

p=n=>--d-1?n%d&&p(n):1;v=Date;D=(x,y)=>new v(x.setDate(x.getDate()-y));W=a=>eval('for(Z=0,z=D(w=new v(a,11,31),(w.getDay()+4)%7);z>new v(a,0,1);)Z+=~~p(d=z.getDate()),z=D(z,7);Z')

পরিবর্তন করুন:

  1. এর থেকে তিনটি অংশের পরিবর্তন: 3>=x?3-x:10-xথেকে 6-(x+10)%7, সংরক্ষণ: 3 ঘোষণার স্থানে পরিবর্তন;
  2. একত্রিত x=w.getDay();z=D(w,6-(x+10)%7)হয়েছে z=D(w,6-(w.getDay()+10)%7), সংরক্ষণ করা: 4
  3. লুপ থেকে তারিখের ঘোষণায় স্থানান্তরিত Z=0হয়ে forলুপে সাফ z=D(w,6-(x+10)%7)করাতে ধাক্কা দিয়ে forসংরক্ষণ করা: 2 2
  4. w=new Date(a,Z=0,1)ঘোষণাকে forলুপে স্থানান্তরিত করা , বিদ্যমান wঘোষণার সাথে মার্জ করা , সংরক্ষণ করা: 2
  5. প্রাইম ফাইন্ডিং ফাংশনটিকে একটি প্রাইম টেস্টিং ফাংশনে পুনরায় লেখা, সংরক্ষণ করা: 12
  6. হ্রাস +!!করতে পরিবর্তন করা ~~এবং এখনও p(d=1)থেকে রূপান্তর NaNকরা 0, প্রাইম টেস্ট ফাংশনটিকে এখনও কাজ করার অনুমতি দেয়, সংরক্ষণ করুন: 1
  7. প্রধান কলিং ফাংশন সব অতিরিক্ত ফাংশন সরানো হয়েছে W, পুনরায় সংজ্ঞায়িত forলুপ - 31 ডিসেম্বর থেকে বিপরীত যাচ্ছে, লেখা Dateএকটি পৃথক পরিবর্তনশীল হিসেবে বস্তু, তারপর পুনরায় লিখেছেন forলুপ মধ্যে evalকল; সাশ্রয় 3।

@ পান্ডা কোডার, আমি আপনাকে ধরছি, সাথী!


1

আর, 149 147 বাইট

y=function(x){s=strftime;b=ISOdate
a=seq(b(x,1,1),t=b(x,12,31),b='d')
length(a[s(a,'%u')==3&trimws(s(a,'%e'))%in%c(2,3,5,7,11,13,17,19,23,29,31)])}

আইডিয়নে এটি পরীক্ষা করুন ।


0

গ্রোভি, 126

গ্রোভির প্রাথমিক সংখ্যা বৈধতা নেই, এটিও তৈরি করতে হয়েছিল।

{n->p={x->x<3||(2..Math.sqrt(x)).every{x%it}};(new Date("1/1/$n")..new Date("12/31/$n")).collect{it[7]==4&&p(it[5])?it:0}-[0]}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.