2017 সালে সমস্ত রবিবার মুদ্রণ করুন


27

নিম্নলিখিত বিন্যাসে 2017 সমস্ত রবিবার তারিখ মুদ্রণ করুন: dd.mm.yyyy
প্রত্যাশিত আউটপুট:

01.01.2017
08.01.2017
15.01.2017
22.01.2017
29.01.2017
05.02.2017
12.02.2017
19.02.2017
26.02.2017
05.03.2017
12.03.2017
19.03.2017
26.03.2017
02.04.2017
09.04.2017
16.04.2017
23.04.2017
30.04.2017
07.05.2017
14.05.2017
21.05.2017
28.05.2017
04.06.2017
11.06.2017
18.06.2017
25.06.2017
02.07.2017
09.07.2017
16.07.2017
23.07.2017
30.07.2017
06.08.2017
13.08.2017
20.08.2017
27.08.2017
03.09.2017
10.09.2017
17.09.2017
24.09.2017
01.10.2017
08.10.2017
15.10.2017
22.10.2017
29.10.2017
05.11.2017
12.11.2017
19.11.2017
26.11.2017
03.12.2017
10.12.2017
17.12.2017
24.12.2017
31.12.2017

1
আপনার রবিবার পরিকল্পনার সম্ভাব্য দ্বিগুণ ? যদিও এটি একটি নির্দিষ্ট বছর।
xnor

1
পোস্ট করার আগে আমি আপনার রবিবারের পরিকল্পনাটি পরীক্ষা করে দেখলাম , তবে এটি নির্দিষ্ট মাসে রবিবারগুলি মুদ্রণ করতে বলে। @ এক্সনোর
শিনমিগামি

1
নির্দিষ্ট আউটপুট বিন্যাসের জন্য কোনও বিশেষ কারণ? আপনি কিছুটা খুলতে পারেন।
আর

4
আমি প্রকৃতপক্ষে একে সঠিক পাঠ্য কলমোগোরভ চ্যালেঞ্জ হিসাবে পছন্দ করি। ডেট ফর্ম্যাটিং ডান পাওয়া কিছু আকর্ষণীয় অপ্টিমাইজেশন আছে।
xnor

5
যাইহোক, আমি মনে করি কাছের ভোটগুলি প্রত্যাহার করা উচিত।
এরিক আউটগল্ফার

উত্তর:


16

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

x=0
exec"print'%05.2f.2017'%(x%30.99+1.01);x+=7+'0009ANW'.count(chr(x/7+40));"*53

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

কোনও তারিখ লাইব্রেরি নেই, সরাসরি তারিখগুলি গণনা করে। মূল কৌশলটি dd.mmদশমিক মান হিসাবে আচরণ করা । উদাহরণস্বরূপ, 16.04.2017(এপ্রিল 16) সংখ্যার সাথে মিল রাখে 16.04। সংযুক্ত হিসাবে সংখ্যাটি ফর্ম্যাট করা xx.xxহয় .2017

দিন এবং মাস গণিতগতভাবে গণনা করা হয়। প্রতি সপ্তাহে 7 দিন হিসাবে সম্পন্ন করা হয় x+=7। দিনের সংখ্যা যখনই খুব বড় হয়ে যায় তখন বিয়োগ করে xমডুলো 30.99হ্যান্ডলগুলি রোলওভার গ্রহণ করে 30.99। এটি মাসের ইনক্রিমেন্টের -31সাথে দিনগুলি পুনরায় সেট করার সাথে সম্মিলিত হয় +0.01

রোলওভার ধরে নেয় প্রতি মাসে 31 দিন থাকে। কয়েক দিনের সাথে মাসগুলি xনির্দিষ্ট সপ্তাহের সংখ্যার সাথে উপরে টান দিয়ে সামঞ্জস্য করা হয় +[8,8,8,17,25,38,47].count(x/7)। এই তালিকাটি এই সংক্ষিপ্ত মাসগুলিতে সমাপ্ত সপ্তাহের সংখ্যাগুলির সাথে 8তিনগুণ বৃদ্ধি পাবে কারণ ফেব্রুয়ারিতে ৩১ দিনের কম দিন।

এই তালিকাটি ASCII মানগুলি প্লাস 40 নিয়ে একটি স্ট্রিংয়ে সংকুচিত +40হতে পারে un


কি সুন্দর উত্তর! '888z!}+'.count(chr(x%146))একটি বাইট সংরক্ষণ করে।
লিন

10

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

while($t<53)echo gmdate("d.m.2017
",605e3*$t++);

পিএইচপি, 46 বাইট (অ-নেতিবাচক ইউটিসি অফসেটের জন্য)

while($t<53)echo date("d.m.2017
",605e3*$t++);

1
gmdateটাইমজোন সুরক্ষার জন্য কি তা করা উচিত নয় ? এটি অনলাইনফফফিউশন.কম এ ব্যর্থ হয়। অন্য সব দিক থেকে দুর্দান্ত কাজ!
তিতাস

9

পাইথন 2 , 90 79 বাইট

Xnor এর সাহায্যে -5 বাইট (সপ্তাহগুলি নিজেই গণনা এড়াতে)
-1 বাইট xnor কে ধন্যবাদ (605000 এর জন্য 605e3 হিসাবে ই তে ফিরে যোগ করুন)

from time import*
i=0
exec"print strftime('%d.%m.2017',gmtime(i));i+=605e3;"*53

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

0সেকেন্ড যেহেতু পর্বটি পহেলা জানুয়ারী 1 ই জানুয়ারি 00:00:00, যা 2017 এর মতো লিপ বছর ছিল না। 605000সেকেন্ড 1 সপ্তাহ, 3 মিনিট, 20 সেকেন্ড is এই "সপ্তাহ" এর 52 টি যোগ করা আমাদের মধ্য রাতের বাইরে যায় না।


পাটিগণিতের অগ্রগতি উত্পন্ন করার জন্য এখানে একটি ছোট্ট উপায়
xnor

@ এক্সনর ধন্যবাদ, আমি একই ধরণের জিনিস নিয়ে কাজ করছিলাম এবং নীচে যাওয়ার চেষ্টা করছিলাম, তবে ৮১ টি লাইব্রেরির পদ্ধতির সাথে অনেক কিছু করা উচিত বলে মনে হচ্ছে।
জোনাথন অ্যালান

@ এক্সনর ... না।
জোনাথন অ্যালান

1
নিস! নম্বর হতে পারে 605e3। যদিও আমার কিছু ধারণা আছে :)
xnor

7

বাশ + কোর্টিলস, 44 বাইট

seq -f@%f 0 605e3 32e6|date -uf- +%d.%m.2017

-uজিএমটি ধরে নিলে 2 বাইট সংরক্ষণ করতে পারে

  • ধন্যবাদ ডিজিটাল ট্রমা পয়েন্ট আউট -fপ্যারামিটার dateযার জন্য 10 বাইট সংরক্ষণ করে;
  • এবং ফর্ম্যাট স্ট্রিংয়ে 2017 ব্যবহার করে আরও বেশি বাইট সংরক্ষণ করা হয় যা ব্যবহারকারীর 6396 দ্বারা দেওয়া উত্তর থেকে ধারণাটি

  • @0 1970-1-1 হয়
  • 605000এক সপ্তাহ ( 604800) এবং আরও 200 সেকেন্ড
    • 200 সেকেন্ড বছরে মাত্র 52 সপ্তাহ থাকায় কেবল কাজ করা উচিত
  • @32000000 এক বছরের চেয়ে একটু বেশি

seq -f@%1.f 14833e5 605e3 1515e6|date -uf- +%d.%m.%Yআপনার 10 টি বাইট সংরক্ষণ করে যদিও আপনার সম্ভবত এটি বাশ + কোর্টিল হিসাবে দাবি করা উচিত ।
ডিজিটাল ট্রমা

7

পাওয়ারশেল, 51 47

0..52|%{date((date 2017-1-1)+7.*$_)-u %d.%m.%Y}

মোটামুটি সহজবোধ্য. 2017-01-01 রবিবার, তাই প্রতি সাত দিন পর পর হয়। আমাদের জীবদ্দশায় কেবলমাত্র স্ক্রিপ্টটি কাজ করা দরকার হলে আমরা দুটি বাইট সংরক্ষণ করতে পারি:

0..52|%{date((date 17-1-1)+7.*$_)-u %d.%m.%Y}

1
আপনি যদি একটি স্ট্রিংয়ের পরিবর্তে, ডাবল প্রতিনিধিত্বমূলক দিনের সংখ্যা যুক্ত করেন তবে আপনি কয়েকটি বাইট সংরক্ষণ করতে পারেন (date 2017-1-1)+7.*$_এই উত্তরটি
ডানকো দুর্বিć

@ ড্যাঙ্কোডুরবিć: ওহ, বাহ! আমি কেবল intএতদিন ধরে টিকিট এবং স্ট্রিং যুক্ত করার বিষয়ে জানতাম । জেনে ভালো লাগল.
জোয়ে

5

এক্সেল ভিবিএ 106 91 79 বাইট

Sub p()
For i = #1/1/2017# To #12/31/2017#
If Weekday(i) = 1 Then MsgBox i
Next
End Sub

@ রাধাতোকে ধন্যবাদ 15 বাইট

ধরুন 1/1/2017 রবিবার এটি আরও 12 টি বাইট সাশ্রয় করবে।

Sub p()
For i = #1/1/2017# To #12/31/2017#
MsgBox i
i = i + 6
Next
End Sub

ধন্যবাদ @ টুথব্রাশ by 66 বাইট

Sub p:For i=#1/1/2017# To #12/31/2017#:MsgBox i:i=i+6:Next:End Sub

সম্পাদনা করুন (সাব এবং শেষ সাব প্রয়োজনীয় নয়) 52 বাইট

For i=#1/1/2017# To #12/31/2017#:MsgBox i:i=i+6:Next

Chanching দ্বারা উন্নত করা যায় আমি 42736 43100 করতে = জন্য করতে 1/1/2017 # টি # 12/31/2017 # i = জন্য # এবং তারপর বিন্যাস সরানোর (...) ঠিক সঙ্গে প্রতিস্থাপন আমি
Radhato

@ রাধাতো কিন্তু বাইট আকার বাড়বে না?
রোহান

আমি এটা .. 96 থেকে এটি হ্রাস অন্তত না না আমি কি গণনা করা হয়েছে এ মনে তোমার
Radhato

হ্যাঁ আমি করেছি. ধন্যবাদ
রোহান

1
@ নিউগুই Sub p:For i=#1/1/2017# To #12/31/2017#:MsgBox i:i=i+6:Next:End Subপুরোপুরি বৈধ ভিবিএ কোড এবং এটি মাত্র 66 বাইট। ভিবিএ সম্পাদক অতিরিক্ত স্পেসে যুক্ত হওয়া বিষয়টি অপ্রাসঙ্গিক।
টুথব্রাশ

4

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

পিএইচপি স্বয়ংক্রিয়ভাবে অঘোষিত লুপ ভেরিয়েবলগুলিকে মান 1 নির্ধারণ করে এবং লিনাক্স যুগের সময় ব্যবহার করে,

<?php for(;54>$t+=1;)echo date("d.m.Y\n",604800*($t)+1482624000);?>

পিপিসিজিতে আপনাকে স্বাগতম! আমি বিশ্বাস করি এটি 59 বাইট হিসাবে গণনা করা যায় (যদিও আমি নিজে পিএইচপি তে গল্ফ করি না)।
জোনাথন অ্যালান

4
<?for(;54>++$t;)echo date("d.m.Y\n",605e3*$t+148263e4);ঠিক ঠিক হওয়া উচিত
tsh

2
কিছু নতুন পিএইচপি গল্ফার দেখে সর্বদা সুন্দর! আপনার ব্যবহারের জন্য অনুমোদিত করছি php -rযাতে আপনি প্রয়োজন হবে না <?phpএবং ?>এই নির্ভর করতে পারেন এবং সেইজন্য 59 bytesমত @JonathanAllan সঠিকভাবে বলেন। আপনার চারপাশে বন্ধনী প্রয়োজন নেই $t। অন্যান্য আরও কয়েকটি golfs এবং আপনার সাথে শেষ for(;++$t<54;)echo date("d.m.Y\n",605e3*$t+14827e5);জন্য 51 bytes(আমার সময় অঞ্চলে)। আপনি "\ n" কে একটি আসল লাইন বিরতিতে প্রতিস্থাপন করতে পারেন যা কেবল 1 বাইট তাই এটি 51 বাইট।
ক্রিস্টোফ

1
ধন্যবাদ @ ক্রিসটফ আমি অন্য পদ্ধতির চেষ্টা করছি, শিগগিরই আপডেট হবে
শিনমিগামি

অন্যান্য সমস্ত ইঙ্গিতগুলি ছাড়াও, আপনি সময় অঞ্চল সুরক্ষার gmdateপরিবর্তে ব্যবহার করতে চাইতে পারেন date
তিতাস

4

k6, 32 বাইট

`0:("."/|"."\)'$2017.01.01+7*!53

সংক্ষিপ্ত বর্ণনা:

                2017.01.01+7*!53 /add 0, 7, 14, ..., 364 to January 1st
   ("."/|"."\)'$                 /convert to string, turn Y.m.d into d.m.Y
                                 /   split by ".", reverse, join by "."
`0:                              /output to stdout (or stderr), line by line

হায়, এটি কেবলমাত্র বন্ধ-উত্সে, কেবলমাত্র অনুরোধ-অনুলিপিতে কাজ করবে বলে মনে হচ্ছে।

ক্লোজড-সোর্স ইন্টারপ্রেটারে কমান্ড চালানো।


4

পাইকে , 26 24 বাইট

53 Fy17y"RVs6)c"%d.%m.%Y

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

53 F                     - for i in range(53):, printing a newline between each
    y17y"                -  Create a time object with the year 2017. (Month and days are initialised to 1.)
         RV  )           -  Repeat i times:
           s6            -   Add 1 week
              c"%d.%m.%Y -  Format in "dd.mm.yyyy" time

বা 11 বাইট

যদি আউটপুট ফর্ম্যাটটিকে উপেক্ষা করার অনুমতি দেওয়া হয়

y17y"52VDs6

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

y17y"       - Create a time object with the year 2017. (Month and days are initialised to 1.)
     52V    - Repeat 52 times:
        D   -  Duplicate the old time
         s6 -  Add 1 week

3

আর, 79 67 58 বাইট

cat(format(seq(as.Date("2017/01/01"),,7,53),"\n%d.%m.%Y"))

জানুয়ারীর প্রথম রবিবার, এই স্নিপেট 01-01-2017 থেকে 31-12-2017 থেকে শুরু করে প্রতি 7 দিনের মধ্যে কয়েক দিনের অনুক্রম তৈরি করে, তাদের পছন্দসই বিন্যাসে ফর্ম্যাট করে মুদ্রণ করুন।


এটি এটিকে 41 বাইটে নামিয়ে আনতে হবেprint(as.Date("2017-01-01")+seq(7,365,7))
গণনা করুন

@ গণ্য ধন্যবাদ তবে এটি প্রয়োজনীয় আউটপুট (যেমন "2017/01/01" পরিবর্তে "2017.01.01" মুদ্রণ করবে না)
প্ল্যানাপাস

3

বেফুঞ্জ -98 (পাইফুঞ্জ) , 99 95 93 85 বাইট, পাতাগুলি নতুন লাইনে রয়েছে

সমস্ত অপ্টিমাইজেশন তাদের জন্য অনেক ধন্যবাদ @ জোকিং দ্বারা তৈরি করা হয়েছিল

s :1g2/10g\%:d1p10g\`+:b`#@_:1\0d1g#;1+:a/'0+,a%'0+,'.,j;a"7102"4k,d1g7+
>8><><>><><>

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

আমি অনুভব করেছি যে আমরা এখানে কিছু esotericity মিস করছি তাই আমি আমার প্রিয় এসোস্টেরিক ভাষায় একটি সমাধান করেছি।

ব্যাখ্যা :
>8><><>><><>12 মাসের দৈর্ঘ্যকে এনকোড করে
sপুরানো দিনটি ফাঁকা জায়গায় সঞ্চয়
:1g2/করুন নীচের সারিতে একটি ASCII মান পান এবং দুটি দিয়ে ভাগ করুন এটি আমাদের দেওয়া মাসের দৈর্ঘ্য দেয় Ex: 8 = 56 এএসসিআই => 56 / ২ = ২৮ => মাসের (ফেব্রুয়ারি) ২৮ দিন রয়েছে
10g\%পূর্বের সংরক্ষিত দিনটি পান এবং মাসের দৈর্ঘ্য অনুসারে এটিকে মডুলো করুন যা আমাদের তারিখটি পরের মাসে রূপান্তর করতে দেয়, পুরানো তারিখ হলে
:d1pনতুন আপডেট হওয়া দিনের
10g\`+পরীক্ষার অনুলিপি সংরক্ষণ করুন > নতুন তারিখ => আমরা পরের মাসে রূপান্তরিত হয়েছি>> মাসের পাল্টা
:b`পরীক্ষায় 1 যোগ করুন > 11 এর অর্থ আমরা বছরের শেষের দিকে পৌঁছেছি (0 সূচক ব্যবহার করে)
#@_পূর্ববর্তীটির ভিত্তিতে যদি প্রোগ্রামটি সমাপ্ত হয়
:1\0d1gতবে স্ট্যাকটিকে পুনরায় অর্ডার করুন সুতরাং এটির মতো দেখাচ্ছে:Month, 1, Month, 0, Day
#পরবর্তী insctruction (duh) লাফালাফি
1+:a/'0+,a%'0+,'.,,, 1 ইন্ডেক্স নম্বর রূপান্তর করুন প্রিন্ট একটি যোগ .শেষে
j;লাফ না স্ট্যাকের ব্যবহারের 0 এবং ব্যবহার ;মুদ্রণ সময়সূচি যেতে আবার তারপর 1 ব্যবহার উপর তিড়িং লাফ করতে ;আগামী সময়
a"7102"4k,মুদ্রণ 2017\n
d1gদিনটির পুনরায় মূল্য পান 7+পুনরাবৃত্তি করার এক সপ্তাহ আগে


@ জোকিং ওমকে এরূপ একটি সুস্পষ্ট অপ্টিমাইজেশন! আমি কিভাবে এটি মিস করতে পারে? ধন্যবাদ.
IQuick 143

1
আরও কয়েক বাইট বন্ধ। এটি অনলাইন চেষ্টা করুন! পরিবর্তে একটি মন্তব্যে -17 লাফ পরিবর্তন করা থেকে এক, মাসের কাউন্টারটির জন্য 0 ভিত্তিক সূচক ব্যবহার করা এবং একে একে ওয়ান-লাইনারে পরিবর্তন করা
জো কিং

@ জোকিং ওয়াও আপনি সেখানে প্রচুর গল্ফ করছেন। লেমে এটি উত্তরে যুক্ত করুন।
আইকিক 143

1
হেল, কেন 0 দিনগুলিকে পাশাপাশি সূচিযুক্ত করা হবে না এবং আর কোনও সূচনা করার জন্য সংরক্ষণ করা! 85 বাইট
জো কিং

3

জাভাস্ক্রিপ্ট, 111 106 বাইট

for(i=14833e8;i<1515e9;i+=605e6)console.log(new Date(i).toJSON().replace(/(....).(..).(..).*/,'$3.$2.$1'))

দ্রষ্টব্য: পুরো তালিকাটি প্রদর্শনের জন্য স্ট্যাক এক্সচেঞ্জের কনসোলটি যথেষ্ট দীর্ঘ নয়, সুতরাং পৃথক স্নিপেট হিসাবে এখানে প্রথমার্ধটি এখানে রয়েছে:

for(i=14833e8;i<15e11;i+=605e6)console.log(new Date(i).toJSON().replace(/(....).(..).(..).*/,'$3.$2.$1'))

কাস্টম ফর্ম্যাটটির জন্য আমার 40 বাইট খরচ হয় ...


2

পার্ল 5 , 64 বাইট

use POSIX;print strftime"%d.%m.%Y\n",0,0,0,7*$_+1,0,117for 0..52

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

প্রদত্ত টাস্কটি ছিল 2017, কোনও বছর নয়, তাই আমি হার্ডকোড করেছি:

  • 117 (যা বছরের 2017, 1900 + 117 এর জন্য শেষ)
  • +1 কারণ 1 লা জানুয়ারী 2017 এ রবিবার
  • 0..52 কারণ 2017 এর 53 টি রবিবার রয়েছে

পসিক্স একটি মূল মডিউল এবং সর্বদা পার্ল 5 এর সাথে ইনস্টল থাকে। 101 বাইটে মডিউল ব্যবহার না করে একই কাজ, সাদা স্থান সরিয়ে:

$$_[5]==117&&printf"%02d.%02d.%d\n",$$_[3],$$_[4]+1,$$_[5]+1900
  for map[gmtime(($_*7+3)*86400)],0..1e4

2

রুবি, 75 বাইট

এর সাথে তারিখগুলি বের করার সোজা সমাধান Time

t=Time.new 2017
365.times{puts t.strftime("%d.%m.%Y")if t.sunday?
t+=86400}

1
যদি আপনি একটি পুরো সপ্তাহ জুড়ে থাকেন (604800 সেকেন্ড), তবে আপনাকে রবিবার যাচাই করতে হবে না, কেবল 53 বার পুনরাবৃত্তি করুন।
জিবি

1
আপনি রবিবার জন্য কৌতুক @GB দ্বারা প্রস্তাবিত এবং আর চেক করেন, তবে আপনি আরম্ভ সঙ্গে এটিও করতে পারেন t=Time.new 1এবং তারপর কি t.strftime"%d.%m.2017"জন্য -1 বাইট।
মূল্য কালি

2

এসএএস, 52 50 বাইট

@ ব্যবহারকারী 3490 এর জন্য 2 বাইট সংরক্ষণ করা হয়েছে।

data;do i=20820to 21184 by 7;put i ddmmyyp10.;end;

আপনার কোনও ডেটাসেট নির্দিষ্ট করার দরকার নেই - কেবল data;পরিবর্তে ব্যবহার করুন data c;এবং এটি 2 বাইট সংরক্ষণ করে। আমার মনে হয় আপনার কিছুটা দরকার আছে run;
ব্যবহারকারী 3490

@ ব্যবহারকারী 3490 ধন্যবাদ, আমি এটি সম্পর্কে অবগত ছিলাম না। আমি অনুমান করি যে এর সমতুল্য data _null_? এছাড়াও, runবিবৃতিটি অনুপস্থিত থাকলে তা বোঝানো হয়েছে।
জে_লার্ড

একেবারে সমতুল্য নয় - আপনি datanনামকরণের কনভেনশন অনুসরণ করে একটি আউটপুট ডেটাসেট দিয়ে শেষ করেন ।
ব্যবহারকারী 3490

2

গণিত 90 90 বাইট

মোটামুটি শব্দযুক্ত। নম্বরমানিয়াক এবং স্কট মিলনার যথাক্রমে 5 এবং 1 বাইট সংরক্ষণ করেছেন।

Column[#~DateString~{"Day",".","Month",".","Year"}&/@DayRange["2017","2018",Sunday]]

আপনার কি দরকার Most@? আউটপুটটি এটি ছাড়া অভিন্ন বলে মনে হচ্ছে।
নম্বরমানিয়াক

1
@ নাম্বারমানিয়াক, ধন্যবাদ Most2018 সালে প্রথম রবিবার এড়াতে সেখানে ছিল I আমি Mostবছরের পর বছর, ২০১১, ২০১২ ছাড়া কোডটি প্রাথমিকভাবে পরীক্ষা করেছিলাম , এই ক্ষেত্রে ২০১২ সালের প্রথম রবিবারটি আউটপুটে অন্তর্ভুক্ত রয়েছে। (এজন্যই আমি এটিকে কোডের মধ্যে অন্তর্ভুক্ত করেছি)) আশ্চর্যের বিষয় Mostহল , 2017-18-এর জন্য প্রয়োজন নেই। Mostবা ফলাফলের উপর কোনও আপাত প্রভাব নেই । রহস্যময়!
ডেভিডসি

1

ভিবিএ, ৮১ বাইট (সম্ভবত )৪)

Sub p()
For i = 0 To 52
MsgBox format(42736 + i * 7, "dd.mm.yyyy")
Next i
End Sub

আমার প্রথম পোস্ট। সপ্তাহের দিনগুলির জন্য চেকটি সরিয়ে এবং প্রতি 7 তম দিনে নির্দিষ্ট করে নিউগুইয়ের সমাধানে বিল্ডিং। তারিখগুলি সরিয়ে 12 টুকরা টুকরো সংরক্ষণ করে। 42736 1/1/2017 হয়। আউটপুট তারিখের ফর্ম্যাট সিস্টেম সেটিংয়ের উপর নির্ভর করে। এটা কি অনুমোদিত? যদি তা হয় তবে এটি 64 বাইট কারণ আপনার বিন্যাস পদ্ধতিটির প্রয়োজন নেই।

MsgBox #1/1/2017# + i * 7

আপনি স্বয়ংক্রিয়ভাবে তৈরি অনেকগুলি সাদা স্থানও মুছে ফেলতে পারেন । উদাহরণস্বরূপ, For i=0To 52এবং Format(42736+i*7,"dd.mm.yyyy")। এছাড়াও, আপনি কেবল Nextপরিবর্তে ব্যবহার করতে পারেন Next i
ইঞ্জিনিয়ার টোস্ট

1

এএইচকে , 67 বাইট

d=20170101
Loop,52{
FormatTime,p,%d%,dd.MM.yyyy
Send,%p%`n
d+=7,d
}

এখানে যাদুকর কিছুই হয় না। আমি তার চেয়ে ছোট একটি উপায় খুঁজে বের করার চেষ্টা করেছি FormatTime তবে আমি ব্যর্থ হয়েছি।


1

জাভা 8+, 104 100 99 বাইট

()->{for(int t=0;t<53;)System.out.printf("%1$td.%1$tm.2017%n",new java.util.Date(t++*604800000L));}

জাভা 5+, 109 105 104 বাইট

void f(){for(int t=0;t<53;)System.out.printf("%1$td.%1$tm.2017%n",new java.util.Date(t++*604800000L));}

printfফর্ম্যাটটির তারিখ-ক্ষমতা ব্যবহার করে ।

নিজেই পরীক্ষা করে দেখুন!

জমা

  1. 104 -> 100: লুপের মান এবং গুণকটি পরিবর্তন করেছে।
  2. 100 -> 99: লুপটি গল্ফ করেছে

1

টি এসকিউএল, 94 বাইট

DECLARE @ INT=0,@_ DATETIME='2017'W:SET @+=1SET @_+=7PRINT FORMAT(@_,'dd.MM.yyy')IF @<52GOTO W

আপনি যদি এসকিউএল গোটো বা WHOL পছন্দ না করেন তবে এখানে একটি 122 বাইট সিটিই সমাধান রয়েছে

WITH C AS(SELECT CAST('2017'AS DATETIME)x UNION ALL SELECT x+7FROM C WHERE X<'12-31-17')SELECT FORMAT(x,'dd.MM.yyy')FROM C

আপনার প্রথম সমাধানটি শুরু হয় 08.01.2017না01.01.2017
গ্র্যাথথিশ ফিশ

1
আপনার সমাধান খুব ভাল কৌশল। ভাল করেছ. আমি তাদের ধার নিতে প্রতিহত করতে পারি না। ;)
এক্সএমআইএম

1

রুবি, 60 + 7 = 67 বাইট

-rdateপতাকা ব্যবহার করে ।

(d=Date.new 1).step(d+365,7){|d|puts d.strftime"%d.%m.2017"}

1

গ্রোভি, 81 77 63 60 56 বাইট

d=new Date(0);53.times{printf('%td.%<tm.2017%n',d);d+=7}

উপরেরগুলি গ্রোভি স্ক্রিপ্ট হিসাবে চালানো যেতে পারে।

আমার প্রথম কোড গল্ফ এন্ট্রি। ভাগ্যক্রমে, 1970 সালটি একটি লিপ বছর ছিল না, সুতরাং এটি বেস হিসাবে ব্যবহার করতে পারে।

ডেনিসকে ধন্যবাদ, এখানে একটি: অনলাইন চেষ্টা করে দেখুন!


প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ স্বাগতম! আপনি যদি আগ্রহী হন তবে এখানে একটি পারমিলিংক রয়েছে: অনলাইনে চেষ্টা করে দেখুন!
ডেনিস

ধন্যবাদ আপনি @Dennis আমি এই অস্তিত্ব জানেন না :)
Krystian

আপনি টাইম ব্লকের 53.times{printf('%td.%<tm.2017%n',new Date(0)+it*7)}, 52 বাইটের মধ্যে তারিখটি সরিয়ে চারটি বাইট সংরক্ষণ করতে পারেন ।
গ্রোভির

1

সি #, 138 111 102 বাইট

জোহান ডু টোইটের জন্য আরও 9 টি বাইট সংরক্ষণ করা হয়েছে !

কেভিন ক্রুইজসেনের পরামর্শের জন্য 27 বাইট সংরক্ষিত !

()=>{for(int i=0;i<53;)Console.Write(new DateTime(2017,1,1).AddDays(7*i++).ToString("dd.MM.yyyy\n"));}

বেনামে ফাংশন যা 2017 এর সমস্ত রবিবার মুদ্রণ করে।

অসম্পূর্ণ পদ্ধতি সহ সম্পূর্ণ প্রোগ্রাম:

using System;

class P
{
    static void Main()
    {
        Action f =
        ()=>
        {
            for (int i = 0; i < 53; )
                Console.Write(new DateTime(2017, 1, 1).AddDays(7 * i++).ToString("dd.MM.yyyy\n"));
        };



        f();
    }
}

1
শুধু ব্যবহার করা .AddDays(7*i++)কি সহজ নয় ? তাহলে .DayOfWeek<1চেকের দরকার নেই । আমরা জানি যে 01-01-2017 একটি রবিবার, এবং সেখান থেকে আমরা কেবল 7 দিন যুক্ত রাখতে পারি।
কেভিন ক্রুইজসেন

2
এটি সম্পর্কে নিশ্চিত নয় - আমি যে সমস্ত কোড গল্ফগুলিতে অংশ নিয়েছি, আমি সর্বদা সম্পূর্ণ নামস্থানটি ব্যবহার করি - তবে Systemআপনি সেখানে কিছু হারিয়ে ফেলছেন না - System.DateTimeএবং System.Console.Write?
ahhmaan

দুর্দান্ত তবে আপনি কয়েকটি বাইট সংরক্ষণ করতে পারেন:()=>{for(int i=0;i<53;)Console.Write(new DateTime(2017,1,1).AddDays(7*i++).ToString("dd.MM.yyyy\n"));};
জোহান ডু টোইট

@ অহমন: হ্যাঁ, হয় পুরো নেমস্পেসগুলি ব্যবহার করা উচিত, বা usingবিবৃতিগুলি বাইট গণনায় অন্তর্ভুক্ত করা উচিত।
রাজনগুল

3
@ অ্যাড্রিয়ান্প: usingকোড চালানোর জন্য প্রয়োজনীয় বিবৃতি অবশ্যই গণনা করতে হবে। এই মেটা প্রশ্নটি দেখুন: আমার কি আমদানিগুলি ব্যবহার করা দরকার বা আমি কোনও শ্রেণীর এক্সপ্লিটালিটি বলতে পারি?
রাজনগুল

1

সি #, 110 109 বাইট

using System;()=>{for(int i=42729;i<43100;Console.Write(DateTime.FromOADate(i+=7).ToString("dd.MM.yyy\n")));}

আপনি এই প্রোগ্রামটি অনলাইনে উপভোগ করতে পারেন

এই দ্রাবণে আমরা:

  • তারিখের সময় থেকে "অ্যাডডে ()" এড়াতে ওলে অটোমেশন ডেট (ওএডেট) ব্যবহার করুন।
    FromOADate()বড় মনে হয় তবে এটি সমানnew DateTime(2017,1,1)

  • আমাদের +=কেবলমাত্র অপারেটর দিয়ে বাড়ানোর অনুমতি দিতে 2016 এর শেষ রবিবার লুপটি শুরু করুন । এই অপারেটরটি ইনক্রিমেন্ট সম্পন্ন হওয়ার পরে মানটি ফিরিয়ে দেয়।

  • তারিখটি মুদ্রণের আগে রবিবার থেকে রবিবারে লাফিয়ে days দিন বাড়ানো by

  • ২০১ 2017 সালের শেষ রবিবারে একবার আঘাত হানে আমরা থামি।

  • দুটি অক্ষর সংরক্ষণ করার Debugপরিবর্তে ব্যবহার করুনConsole

  • সুস্পষ্ট পরিবর্তনশীল ঘোষণা এবং কার্যনির্বাহী হওয়া এড়িয়ে চলুন


অন্যথায় নির্দিষ্ট না করা পর্যন্ত, আমাদের ডিফল্টরা বলে যে আপনার কোনও ফাংশন বা প্রোগ্রাম সরবরাহ করা উচিত (যেমন একটি স্নিপেট নয়), এবং আপনাকে ডিবাগ এবং ডেটটাইম যোগ্য করতে হবে : আমি যুক্ত করতে এবং এ থেকে using System;স্যুইচ করার প্রস্তাব দিই (যা নিজেই একটি কুশলী, তবে আমি করতে পারি) এটি সম্পর্কে মেটা সম্পর্কে কোনও মন্তব্য খুঁজে পাওয়া যাবে না)। ConsoleDebug
ভিজুয়ালমেলন

1
@VisualMelon আমি মেনে করেছি "একটি ফাংশন প্রদান" এবং আমি এও প্রতিস্থাপন আছে Debugজন্য Consoleযেহেতু Debugএকটি নির্দিষ্ট অন্তর্ভুক্ত প্রয়োজন। তবে আমি 'ইউজ সিস্টেমটি' মেনে চলিনি কারণ এই ভাষায় আমার প্রতিযোগী এটি করেন না। এছাড়াও, আপনি কোনও শ্রেণীর বাইরে কোড করতে পারবেন না যা নিজের নামে একটি স্থানের মধ্যে সংজ্ঞায়িত করা দরকার। আমি নিশ্চিত যে এই সাইটের বেশিরভাগ সি # উত্তর এর মধ্যে নেই। তাহলে এখন কী, আমরা এই সমস্ত জঞ্জাল নিক্ষেপ করব? আমরা কি তাদের সবাইকে বাধ্য হয়ে বাধ্য করতে বাধ্য করি? যদি তা হয় তবে সম্প্রদায়টি কোডগলফ থেকে পুরোপুরি সি # নিষিদ্ধ করতে পারে।
এক্সএমআইএম

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

1
@ ভিজুয়ালমেলন ফেয়ার পর্যাপ্ত, আমি যাইহোক এখানে কেবল একজন পথিক। আমি এখানে থাকাকালীন আমি আপনার বিধিগুলি গ্রহণ করব। অতএব, আমি আমার উত্তরটি এবার মেনে চলার চেষ্টা করেছি।
এক্সএমআইএম

1
আমার কাছে ভালই লাগছে! মূল পদ্ধতির জন্য +1 এবং আপনার পরে জায়গার দরকার নেই using System;(আমি ধরে নিই যে এটি উদ্দেশ্যমূলক ছিল না) সুতরাং এটি 109 বাইট।
ভিজুয়ালমেলন

1

TSQL, 112 105 বাইট

SELECT CONVERT(VARCHAR,DATEADD(d,number*7,42734),104)FROM master..spt_values WHERE type='p' AND number<53

ডেমো

টি-এসকিউএল রূপান্তর সিন্ট্যাক্স


আপনি প্রতিস্থাপন DAYকরে 2 বাইট সংরক্ষণ করতে পারেন d। এটি একই কাজ করে।
এক্সএমআইএম

+1 টি আপনি প্রতিস্থাপন দ্বারা অন্য 3 বাইট সংরক্ষণ করতে পারবেন '20170101'সঙ্গে 42734। তারিখ সংখ্যা। সময় হ'ল সংখ্যার দশমিক অংশ।
এক্সএমআইএম

1

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

এটি এখানে আমার প্রথম পোস্ট, হ্যালো!

a=x=>`0${x}.`.slice(-3);[].map.call('155274263153',(x,i)=>{for(j=0;j<4+(2633>>i&1);j++)console.log(a(+x+j*7)+a(i+1)+2017)})

এই সমাধানটি হার্ডকোডযুক্ত ডেটা ব্যবহার করে এবং ২০১৪ সালের জন্য বিশেষভাবে কাজ করার জন্য ডিজাইন করা হয়েছে It এটি কোনও তারিখ / সময় এপিআইয়ের উপর নির্ভর করে।

স্ট্রিংয়ের অঙ্কগুলি হিসাবে 155274263153, প্রতিটি অঙ্ক তার নিজস্ব একটি সংখ্যা এবং প্রতিটি টানা মাসের প্রথম রবিবারকে বোঝায়। পুরো বছরের জন্য আউটপুট ক্রমাগত তাদের মধ্যে 7 যুক্ত করে উত্পন্ন করা যেতে পারে।

লুপটিতে 2633ব্যবহৃত ম্যাজিক নম্বর সম্পর্কে কী বলা যায় ?
ভাল ... 2633(দশমিক) 101001001001বাইনারি হয়। এখন 1এর মানে কী হতে পারে? ডান থেকে শুরু করে, 1 ম, চতুর্থ, 7 তম, 10 তম এবং দ্বাদশ বিট সেট করা হয়েছে। এটি এমন কয়েক মাসের সাথে মিলে যায় যা পাঁচটি রবিবারের সাথে ঘটে থাকে, কেবলমাত্র চারটি সংখ্যার বিপরীতে। এই ঝরঝরে অভিব্যক্তি নিচে Golfed, এটা প্রাথমিকভাবে দেখতে এমন ছিল: for(j=0;j<4+ +[0,3,6,9,11].includes(i);j++)

আমার ধারণা বাকি অংশগুলি মোটামুটি স্ব-বর্ণনামূলক।


@ সিগএসইজিভি: আমার সাথে পরিবর্তন ECMAScript 2015করতে Javascript (ES6)আমার আপত্তি নেই , তবে ... আপনি আমার কোডটি ভেঙে দিয়েছিলেন এবং আমাকে এটি পুনরায় ফিরিয়ে দিতে হয়েছিল।
গন্ডার

ওহ, এই সম্প্রদায়ের sensকমত্য, কেবল ল্যাম্বডা অংশ থাকার অনুমতি রয়েছে।
ম্যাথু রোহ

@ সিআইজিএসইজিভি এটি এখানে নয়। এই ল্যাম্বডায় কোডের একটি ছোট্ট অংশ রয়েছে এবং এটি অন্য কোথাও ব্যবহার করতে সক্ষম হওয়ার জন্য আমার সেই শনাক্তকারী দরকার। ছাড়া a=কোড আসলে হয় ভাঙ্গা
গণ্ডার

1

টি-এসকিউএল, 79 77 বাইট

সালমান এ সাহায্য করার পরে তার উত্তরটি উন্নত করুন । আমি লুপ ব্যবহার করে নিজের লেখার সিদ্ধান্ত নিয়েছি এবং PRINT

আমি এই 90 বাইট সমাধান দিয়ে শেষ করেছি।

DECLARE @d DATETIME=42734 WHILE @d<43100BEGIN PRINT CONVERT(VARCHAR,@d,104)SET @d=@d+7 END

তারপরে আমি টি-এসকিউএল-এর বর্তমান নেতার দিকে তাকিয়েছিলাম যা এই উত্তরের সাথে ওয়ার্ল্ড সব থেকে 94 বাইট ছিল । এই লোকটি খুব ভাল কৌশল খুঁজে পেয়েছিল।

  1. কেবলমাত্র ভেরিয়েবলের নাম দিন @
  2. সঙ্গে লুপ GOTOপ্রকৃত লুপের পরিবর্তে
  3. এর FORMATপরিবর্তে একটি অক্ষর সংরক্ষণ করুন CONVERT। (কেবলমাত্র এসএসএমএস ২০১২ +

এই কৌশলগুলি ব্যবহার করে, এই সমাধানটি নীচের সমাধানে ছাঁটাই করা হয়েছিল যা 79 বাইট।

DECLARE @ DATETIME=42734G:PRINT FORMAT(@,'dd.MM.yyy')SET @+=7IF @<43100GOTO G

আপনি @ = @ + 7 থেকে @ + = 7 পরিবর্তন করে এবং 7 এবং আইএফ এর মধ্যে স্থানটি সরিয়ে 2 বাইট সংরক্ষণ করতে পারেন।
সমস্ত

এই পোস্টে আমি যেখানে সমস্ত কৌশল পেয়েছি সেখানে আপনাকেও সহায়তা করতে পারে।
সমস্ত

1
@ ওয়ার্ল্ডল আশ্চর্যজনক, আমি জানতাম না যে আমরা এটি করতে পারি। অনেক ধন্যবাদ.
এক্সএমআইএম

1

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

অন্যান্য সমস্ত নন-গল্ফিং ভাষার চেয়ে অনেক ছোট এবং এটি জেলির সাথেও বাঁধা! অষ্টাভে যাওয়ার উপায়! :)

disp(datestr(367:7:737,'DD.mm.2017'))

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

ভাগ্যক্রমে, বছরটি হ'ল বছরের 2 ADমতো 2017 AD। উভয়ই রবিবার শুরু এবং শেষ হয় এবং উভয়ই একটি লিপ বছর নয় is এটি অনেকটা বাইট সংরক্ষণ করে, যেহেতু এর 367:7:737চেয়ে খানিকটা খাটো 736696:7:737060

এটি পরবর্তী দিনগুলির সংখ্যাকে রূপের সাথে 01.01.0001ফরম্যাটের একটি স্ট্রিংয়ে রূপান্তর করে ।DD.mm.2017


1

হাস্কেল , 133 130 বাইট

import Data.Time.Calendar
((\[f,g,h,i,j]->i:j:'.':f:g:".2017\n").drop 5.show)=<<take 53(iterate(addDays 7)$fromGregorian 2017 1 1)

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

কোনও ক্যালেন্ডার লাইব্রেরি ছাড়াই, 148 144 140 বাইট

(\l->last l!l++length l!l++"2017\n").fst.span(>0).(<$>scanl((+).(+28))0[3,0,3,2,3,2,3,3,2,3,2]).(-)=<<[1,8..365]
a!_=['0'|a<=9]++show a++"."

এই মজার প্যাডিং ফাংশনের জন্য একটি অপারেটর ব্যবহার যেহেতু দুই বাইট যদিও দ্বিতীয় যুক্তি, অব্যবহৃত কারণ কম প্রথম বন্ধনী প্রয়োজন হয় সংরক্ষণ - p(last l)চেয়ে দীর্ঘতর হয় last l!lday/monthবছরের দিন থেকে সংখ্যাসমূহের শুরু তারিখগুলি বিয়োগ করে জোড়া গণনা করে কাজ করে । মাস শুরুর তারিখগুলি ( scanl((+).(+28))0[3,0,3,2,3,2,3,3,2,3,2]) হিসাবে সংকুচিত হয় । মাসের সংখ্যাটি ধনাত্মক উপাদানগুলির সংখ্যা এবং দিনের সংখ্যাটি সর্বশেষ ধনাত্মক উপাদান।

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


0

সি #, 116 114 113 বাইট

for(long i=(long)636188256e9;i<636502857e9;i+=(long)605e10)Out.Write(‌​new DateTime(i).ToString("dd.MM.yyyy\n"));

ভিজ্যুয়াল স্টুডিওর ইন্টারেক্টিভ উইন্ডোতে চালানো যেতে পারে (বা রোজলিনের উপর ভিত্তি করে অন্য কোনও সি # রিপ্লে)

113 বাইট নিচে: কেভিন ক্রুইজসেনকে ধন্যবাদ।


1
আপনি কি ট্রাইটনিউ লিঙ্কটি যুক্ত করতে পারেন ? এছাড়াও, আপনি কিছুক্ষণ লুপের পরিবর্তে ফর-লুপ ব্যবহার করে এটি কিছুটা গল্ফ করতে পারেন:for(long i=(long)636188256e9;i<636502857e9;i+=(long)605e10)Out.Write(new DateTime(i).ToString("dd.MM.yyyy\n"));
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন আনফরফুনালি আমি প্রদত্ত পৃষ্ঠায় একটি প্রযোজ্য সংকলক খুঁজে পাচ্ছি না। আপনি যদি এর সাথে যোগাযোগ করতে চান তবে ব্যবহৃত প্রযুক্তির একটি লিঙ্ক এখানে রয়েছে: লিঙ্ক । যাইহোক নতুন লুপ জন্য ধন্যবাদ। :)
rmrm

1
অন্যথায় নির্দিষ্ট না করা পর্যন্ত, আমাদের ডিফল্টরা বলে যে আপনার কোনও ফাংশন বা প্রোগ্রাম সরবরাহ করা উচিত (যেমন একটি স্নিপেট নয়), এবং আপনাকে ডিবাগ এবং ডেটটাইম যোগ্য করতে হবে : আমি যোগ using System;এবং ব্যবহারের পরামর্শ দেবConsole.WriteLine(string)
ভিজুয়ালমেলন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.