আপনার রবিবার পরিকল্পনা করুন!


16

গ্রীষ্মে রবিবার সকালে শীতল বিয়ার এবং টিভি বা শীতকালে ব্যাডমিন্টন বা বন্ধুদের সাথে চূড়ান্ত খেলতে কে না পছন্দ করে?

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

তাই, সাহায্যের আমাকে একটা প্রোগ্রাম বা ফাংশন যা ইনপুট 2 ধনাত্মক পূর্ণসংখ্যা যেমন লাগে, লিখতে Yএবং Mএবং যে বিশেষ বছর (মধ্যে রবিবার সংখ্যা আউটপুট Y) এবং মাস ( M) (গ্রেগরিয়ান পঞ্জিকা অনুযায়ী), প্রতিটি রবিবার তারিখ অনুসারে অনুসরণ করে।

এছাড়াও, মনে রাখবেন যে সংক্ষিপ্ততম কোডটি জিতেছে।

ইনপুট সীমাবদ্ধতা

1000 <= Y <= 9999

1 <= এম <= 12

আউটপুট

এই পরীক্ষার ক্ষেত্রে ফর্ম্যাটে সেই বছরের প্রতিটি মাসে রবিবারের তারিখ থাকবে DD-MM-YYYY

নমুনা পরীক্ষার কেস

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

নমুনা ইনপুট

2017 1

নমুনা আউটপুট

5
01-01-2017
08-01-2017
15-01-2017
22-01-2017
29-01-2017

পরীক্ষার কেস ২

নমুনা ইনপুট

2018 2

নমুনা আউটপুট

4
04-02-2018
11-02-2018
18-02-2018
25-02-2018

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

নমুনা ইনপুট

2016 11

নমুনা আউটপুট

4
06-11-2016
13-11-2016
20-11-2016
27-11-2016

2
আমি কোনও Date()বস্তু সহ যে কোনও তারিখের ফর্ম্যাট এবং যে কোনও আউটপুট ফর্ম্যাট সহ [4, [<dateobj>, <dateobj>, <dateobj>, <dateobj>]](যেখানে <dateobj>একটি আসল তারিখের অবজেক্ট এবং []প্রকৃত অ্যারে রয়েছে) এর অনুমতি দেওয়ার পরামর্শ দিচ্ছি ।
wizzwizz4

2
যখন আউটপুট ফর্ম্যাটটি একটি চ্যালেঞ্জের সংজ্ঞায়িত অংশ, সম্প্রদায় conকমত্য এটি বিরক্তিকর। ভবিষ্যতে আমি স্যান্ডবক্স ব্যবহার করার পরামর্শ দিচ্ছি, তবে কারও উত্তর না পাওয়ায় আপনি এটি পরিবর্তন করে পালাতে পারবেন।
wizzwizz4

1
আমি একটি সম্পাদনা করব। আপনি যদি মনে করেন এটি চ্যালেঞ্জের ক্ষতি করে তবে আপনি এটি আবার রোল করতে পারেন।
wizzwizz4

1
তাহলে আউটপুট ফর্ম্যাটটি কতটা নমনীয়? উদাহরণস্বরূপ, এটি /পরিবর্তে থাকতে পারে -? নাকি মাস, দিন, পরে বছর হতে পারে?
লুইস মেন্ডো

1
কোন বিশেষ লোকেল? দ্রষ্টব্য যে ১৫২২ এর আগে জুলিয়ান ক্যালেন্ডার প্রচলিত ছিল, দেশগুলি গ্রিসে ১৯৫২ সাল নাগাদ গ্রেগরিয়ানে স্থানান্তরিত করে। ইংল্যান্ডে তারা 1752 সেপ্টেম্বর মাসে 11 দিন আগে ক্যালেন্ডারটি ছাপিয়েছিল এবং এর ফলে ব্যাপক দাঙ্গা হয়েছিল। সুপারিশটি হ'ল "প্রোলেপটিক গ্রেগরিয়ান ক্যালেন্ডার" নামক কিছু ব্যবহার করা যা বর্তমান ক্যালেন্ডারটি আপনার প্রয়োজন অনুসারে ব্যবহৃত হয়েছিল।

উত্তর:


0

এমএটিএল , 46 45 42 35 বাইট

8BhtYOw47B~+YOq&:t8XO!s310=)tnw24XO

ইনপুট ফর্মের একটি অ্যারে [2017 1]। আউটপুট ফর্ম্যাট হয় 29/01/2017

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

ব্যাখ্যা

8B       % Push [1 0 0 0] (8 in binary)
h        % Implicit input. Concatenate. Gives something like [2017 1 1 0 0 0],
         % corresponding to the first day of input year and month
tYO      % Duplicate. Convert to serial date number
w        % Swap
47B~     % Push [0 1 0 0 0 0] (47 in binary, then negated)
+        % Add. Gives something like [2017 2 1 0 0 0]: first day of next month
YO       % Convert to serial number
q        % Subtract 1. This corresponds to last day of input month
&:       % Binary range. Gives an array with 28, 29, 30 or 31 days
t8XO     % Duplicate. Convert each number to three letters telling day of the week
!s       % Transpose, Sum of each column
310=     % True for values that equal 310, which is the sum of 'Sun' in ASCII
)        % Apply as a logical index
tnw      % Duplicate, number of elements, swap. This is the first part of output
24XO     % Convert to date format 'dd/mm/yyyy'. Gives 2D char array. Implicit display

এটি কি পুরানো তারিখগুলি (1217 সালের মতো) নিয়ে কাজ করে?
তিতাস


ওপস টিও দেখতে পেল না।
তিতাস

4

পাইথন 2 , 150,148, 145 বাইট

from calendar import*
y,m=map(int,input().split())
z=filter(None,zip(*monthcalendar(y,m))[6])
print len(z)
for i in z:print'%02d-%02d-%s'%(i,m,y)

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

-3 বাইটস স্টাফকে আরও অজগর তৈরি করে (জিপ এবং ফিল্টার ব্যবহার করে!)


আপনি পূর্ববর্তী লাইনে মুদ্রণ বিবৃতিটি নিয়ে
এসেছেন

'%' প্রথম% d! হাহ। যে মিস। ধন্যবাদ! কোন পথে। দুটি বাইট না বাড়িয়ে বরং দু'টি বাড়িয়ে!
কীর্তন প্রভাকরণ 14

4

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

f=
(y,m,a=[...Array(32)].map((_,i)=>new Date(y,m-1,i)).filter(d=>d.getMonth()==m-1&!d.getDay()))=>[a.length,a]
<div oninput=o.textContent=[].concat(...f(y.value,m.value)).map((d,i)=&gt;i?d.toDateString():d).join`\n`><input id=y type=number min=1000 max=9999 value=2017><input id=m type=number min=1 max=12><pre id=o>

সম্পাদনা করুন: একটি স্পষ্ট গণনা যুক্ত করতে 15 বাইট খরচ হয়। আউটপুট ফর্ম্যাট করতে আউটপুট ফর্ম্যাটটি কতটা কঠোর তার উপর নির্ভর করে কমপক্ষে আরও 33 বাইট লাগবে।


> outputs the number of Sundays in that particular year and month; দেখে মনে হচ্ছে এটি বর্তমানে রবিবারের সংখ্যা আউটপুট করে না।
নম্বরমানিয়াক

আপনি ব্যবহার করতে পারে <input type='date'>
ম্যাথু রোহ

@ সিআইজিএসইজিভি এখনও ফায়ারফক্সে সমর্থিত নয়, যা আমি ব্যবহার করি।
নীল

2
@ নীল ক্রোম এম 8 ব্যবহার করুন
ম্যাথু রোহ

3
@ সিআইজিএসইজিভি আমি ক্রোমকে ইন্টারনেট এক্সপ্লোরারের চেয়ে কম পছন্দ করি।
নীল

2

শক্তির উৎস , 91 বাইট

param($y,$m)($a=(1..31|%{Date "$m/$_/$y"}|?{!$_.dayofweek})).count;$a|%{"{0:d-M-yyyy}"-f$_}

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

(বিশেষ দ্রষ্টব্য - এটি স্থানীয় এবং সংস্কৃতি সেটিংস নির্ভর। যেহেতু টিআইও চলছেen-us এটি যথাযথভাবে সেখানে কাজ করে This এই কোডটি বিভিন্ন লোকেলের জন্য পরিবর্তিত হতে পারে))

দুটি পূর্ণসংখ্যা হিসাবে ইনপুট নেয় $yএবং $m। থেকে লুপ 1করা 31, datetimeপ্রতিটি সম্ভাব্য তারিখের জন্য একটি নতুন অবজেক্ট পাওয়া ( Get-Dateসেমিডলেট মাধ্যমে )। 31 দিনেরও কম সময় সহ মাসের জন্য এসটিডিআরআর (কোড-গল্ফ চ্যালেঞ্জগুলিতে ডিফল্টরূপে উপেক্ষা করা) ত্রুটি টস করবে, তবে এটি আউটপুটকে প্রভাবিত করে না। আমরা এই সমস্ত datetimeবস্তুর প্রত্যেকটি গ্রহণ করি এবং এর উপর একটি Where-Object( |?{...}) ব্যবহার করি, যার ধারাটি রয়েছে !$_.dayofweek। সম্পত্তি .dayofweekথেকে একটি সংখ্যা 0থেকে 6সঙ্গে, 0সুবিধামত সংশ্লিষ্ট Sunday, তাই! truthy, যা একটি দম্পতি সংরক্ষণ মতো সমতা চেক তুলনায় বাইট যে -eq0

রবিবারগুলি পেরেনগুলিতে জমা হয় এবং এতে সংরক্ষণ করা হয় $a। তারপরে আমরা এটি .countনিই এবং এটি পাইপলাইনে স্থাপন করা হয়েছে। এরপরে, আমরা সঠিক আউটপুট ফর্ম্যাটটি তৈরি করতে ormat অপারেটরটি লুপ করব $aএবং ব্যবহার করব -f। মনে রাখবেন যে এটি দিন বা মাসের জন্য নেতৃস্থানীয় শূন্যগুলি আউটপুট দেয় না। সেই তারিখের স্ট্রিংগুলি পাইপলাইনেও ফেলে রাখা হয় এবং Write-Outputপ্রোগ্রামের সমাপ্তিতে একটি অন্তর্নিহিত তাদের নিউলাইন বিভাজকগুলির সাথে মুদ্রণ করে।


এনবি - যদি আউটপুট ফর্ম্যাটটি আরও নমনীয় হয় তবে আমরা কেবল $aপাইপলাইনে ছেড়ে যেতে পারতাম এবং এটির মধ্য দিয়ে লুপের দরকার পড়েনি। এটি datetimeসময়ের তথ্য সহ দীর্ঘ-তারিখের ফর্ম্যাট হিসাবে বস্তুগুলিকে শক্তিশালী করবে , তবে আমাদের 69 বাইটে নামিয়ে দেবে , যা (বর্তমানে) কেবল গণিত এবং এমএটিএল দ্বারা পরাজিত হবে।


1

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

@(y,m)cellfun(@disp,flip({datestr(x=nweekdate(1:6,1,y,m)(x>1)),nnz(x)}))

nweekdateNনির্দিষ্ট মাস / বছরে নির্দিষ্ট সপ্তাহের দিন-চতুর্থ ঘটনার সাথে সম্পর্কিত তারিখ সংখ্যাটি প্রদান করে । আমরা এক মাসে সমস্ত ঘটনাগুলি পেতে 1:6স্থানে অ্যারে ব্যবহার করি । যদি এক মাসে এই সপ্তাহের দিনের সংঘটনগুলির চেয়ে কম ঘটনা ঘটে তবে ফলাফলের তারিখের সংখ্যা । এই কারণে, আমরা কেবলমাত্র বৈধ তারিখগুলি ব্যবহার করে নির্বাচন করি এবং তারপরে তাদের ব্যবহার করে স্ট্রিংয়ে রূপান্তর করি ।NN0(x>1)datestr

তারপরে রবিবারের সংখ্যা গণনা করতে, আমরা ফলাফলটিতে শূন্য ( nnz) তারিখের সংখ্যা গণনা করি ।

তারপরে আমরা cellfunপ্রতিটি মান প্রদর্শন করতে পুরো জিনিসটি গুটিয়ে রাখি।


0

রুবি, 140 132 129 118 বাইট

require'date'
d=Date.parse gets.split*?-+'-1'
s=(d...d>>1).select &:sunday?
puts s.size,s.map{|d|d.strftime'%d-%m-%Y'}

0

এক্সেল - 103 টি অক্ষর

বছরের ঘরে ঘরে রাখুন A1, এবং মাসে সেল দিন A2

গণনাটি ঘরে D1থাকে এবং রবিবার কোষে থাকেD2:D6

অনুমান D2:D6ডিডি-এমএম-ওয়াইওয়াই ফর্ম্যাট করা হয়।

   A      B       C              D
1  [year] [month] =DATE(A1,B1,1) =COUNTIF(D2:D7,">0")
2                                =C1+7-WEEKDAY(C1,2)
3                                =D2+7
4                                =D3+7
5                                =D4+7
6                                =IF(MONTH(D5+7)=MONTH(C1),D5+7,"")

0

গণিত, 82 68 বাইট

d=DateObject;{Length[x=DayRange[d@{#,#2,1},d@{#,#2+1,0},Sunday]],x}&

বেনামে ফাংশন। দিনের সংখ্যার একটি তালিকা আউটপুট দেয় এবং তারপরে রবিবারের তালিকা অনুসারে DateObject। দেখা যাচ্ছে, গাণিতিকায় এক মাসের 0 তম দিনটিকে আগের মাসের শেষ দিন হিসাবে ব্যাখ্যা করা হয়।


0

সি #, 183 বাইট

y=>m=>{var s=new string[6];int i=1,n=0;for(DateTime d;i<=DateTime.DaysInMonth(y,m);)if((int)(d=new DateTime(y,m,i++)).DayOfWeek<1)s[++n]=d.ToString("dd-MM-yyyy");s[0]=n+"";return s;};

অজ্ঞাতনামা পদ্ধতি যা প্রথমে রবিবার সংখ্যা এবং তারপরে প্রতিটি বিন্যাসে নির্দিষ্ট বিন্যাসে স্ট্রিংয়ের একটি অ্যারে প্রদান করে। যদি এক মাসে মাত্র 4 রবিবার হয় তবে শেষ স্ট্রিংটি শূন্য হয়।

অসম্পূর্ণ পদ্ধতি এবং পরীক্ষার কেস সহ সম্পূর্ণ প্রোগ্রাম:

using System;

class P
{
    static void Main()
    {
        Func<int, Func<int, string[]>> f =
        y=>m=>
        {
            var s=new string[6];
            int i=1,n=0;
            for(DateTime d;i<=DateTime.DaysInMonth(y,m);)
                if((int)(d=new DateTime(y,m,i++)).DayOfWeek<1)
                    s[++n]=d.ToString("dd-MM-yyyy");

            s[0]=n+"";
            return s;
        };

        // test cases:
        var result = f(2017)(1);
        foreach (var x in result)
            Console.WriteLine(x);

        result = f(2018)(2);
        foreach (var x in result)
            Console.WriteLine(x);

        result = f(2016)(11);
        foreach (var x in result)
            Console.WriteLine(x);
    }
}

0

রেক্সএক্স, 168 বাইট

arg y m
signal on syntax
do d=1 to 31
  m=right(m,2,0);d=right(d,2,0)
  if date(w,y||m||d,s)='Sunday' then queue d'-'m'-'y
  end
syntax:n=queued()
say n
do n
  pull a
  say a
  end

আমার ধারণা এটি ছোট বছরগুলিতে কাজ করে না। আপনি চেষ্টা করেছেন 1217?
তিতাস

0

বাশ + বিএসডিমেইনটিলস, 94 বাইট

a=(`for i in $(cal $2 $1|cut -b1-2);{ echo $i-$2-$1;}`);echo $[${#a[@]}-1];fmt -1 <<<${a[@]:1}

কমান্ড ব্যবহার করে calক্যালেন্ডার মুদ্রণ করে , বেশ কয়েকটি ইউনিক্স / লিনাক্স / বিএসডি (দুর্ভাগ্যক্রমে টিআইওতে নেই) এ ডিফল্টরূপে ইনস্টল করা হয়।

এটি সংরক্ষণ চেষ্টা করতে file, chmod +x fileএবং রান./file 2017 9

"এমএম-ওয়াইওয়াইওয়াই" দ্বিতীয় এবং প্রথম প্যারামিটার হিসাবে পাস করা স্ট্রিংয়ের সাথে সংযুক্ত ক্যাল আউটপুটটির প্রথম দুটি বাইট অ্যারে সংরক্ষণ করে (যদি আপনার স্থানীয় রবিবার সপ্তাহে শুরু না হয় তবে পরিবর্তন প্রয়োজন)।

পরবর্তী প্রতিধ্বনিত হয় অ্যারের দৈর্ঘ্য এক দ্বারা বিয়োগ করা (প্রথম উপাদানটি রবিবারকে উপস্থাপনকারী শব্দ) এবং প্রথম এলিমেন্ট ছাড়াই অ্যারে, প্রতি লাইনে এক fmt -1


এটি বিশেষ কেস 1752 9
মার্কোস্ম

0

এসএএস, 182 বাইট

%macro s(y,m);%let c=%eval(%sysfunc(intck(week,%sysfunc(nwkdom(1,1,&m,&y)),%sysfunc(nwkdom(5,1,&m,&y))))+1);%put&c;%do i=1%to&c;%put%sysfunc(nwkdom(&i,1,&m,&y),ddmmyy10.);%end;%mend;

0

টি-এসকিউএল, 316 311 বাইট

DECLARE @ DATE=DATEADD(ww,-52*(2017-@y),'20170101')IF DATEPART(d,@)>7SET @=DATEADD(ww,-1,@);WITH c(d)AS(SELECT d FROM(SELECT DATEADD(ww,ROW_NUMBER()OVER(ORDER BY name)-1,@)d FROM sys.stats)a WHERE @y=DATEPART(yy,d)AND @m=DATEPART(m,d))SELECT CAST(COUNT(*)AS CHAR(1))FROM c UNION SELECT CAST(d AS CHAR(10))FROM c

যদিও এটি বৈধ উত্তর কিনা তা আমি জানি না, কারণ এটি তারিখের পরে সূর্যের সংখ্যাকে আউটপুট করে দেয়

এখানে চেষ্টা করুন

ungolfed:

DECLARE @m INT = 1,@y INT = 2017

DECLARE @ DATE=DATEADD(ww,-52*(2017-@y),'20170101')

IF DATEPART(d,@)>7
    SET @=DATEADD(ww,-1,@)

;WITH c(d)
AS
(SELECT d 
 FROM (SELECT DATEADD(ww,ROW_NUMBER()OVER(ORDER BY name)-1,@)d 
       FROM sys.stats) a 
 WHERE @y = DATEPART(yy,d)
   AND @m = DATEPART(m,d)
)

SELECT CAST(COUNT(*) AS CHAR(1))
FROM c 
UNION 
SELECT CAST(d AS CHAR(10))
FROM c

0

পিএইচপি, 127 118 112 107 বাইট

for([,$y,$m]=$argv;$d++<date(t,($t=strtotime)($y.-$m));)date(w,$t($s="
$d.$m.$y"))?:$r.=$s.!++$c;echo$c,$r;

কমান্ড লাইন আর্গুমেন্ট থেকে ইনপুট নেয়; এটি দিয়ে চালান -rবা এটি অনলাইনে পরীক্ষা করুন

ভাঙ্গন

for([,$y,$m]=$argv;                     # import arguments to $y and $m
    $d++<date(t,strtotime($y.-$m))      # loop while ($d < number of days in that month)
    ;)
    date(w,strtotime($s="\n$d.$m.$y"))?:    # if date(w) is falsy (0 == sunday)
        $r.=$s.!++$c;                       # then append date to $r and increment $c
echo$c,$r;                              # print result

0

এক্সেল ভিবিএ, 190 বাইট

Function p(y, m)
d = CDate("1/" & m & "/" & y)
e = DateAdd("m", 1, d)
Do While d < e
    If Weekday(d) = 1 Then Debug.Print d: i = i + 1
    d = d + 1
Loop
Debug.Print i
End Function

পি এর জন্য নমুনা আউটপুট (2000, 1) (এটি নিশ্চিত কিনা তা নিশ্চিত নয়)

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