তারা কি সপ্তাহের একই দিন হতে পারে?


14

চ্যালেঞ্জ

একটি অ-নেতিবাচক পূর্ণসংখ্যা দেওয়া হয়েছে, দুটি তারিখের জন্য গ্রেগরিয়ান ক্যালেন্ডারের পক্ষে সম্ভব কিনা আউটপুট সপ্তাহের একটি দিন ভাগ করে নেওয়া বহু বছর ধরে পৃথক হয়ে যায়। কোনও বছর 4 দ্বারা বিভাজ্য হয় তবে 100 দ্বারা নয়, বা 400 দ্বারা বিভাজ্য হলে তা একটি লিপ বছর হিসাবে ধরে নেওয়া হয়।

আউটপুট হতে পারে:

  • ভুয়া / সত্যবাদী (উভয় দিকনির্দেশে)
  • যে কোনও দুটি স্বতন্ত্র মান
  • একটি স্বতন্ত্র মান এবং একটি অন্য কিছু
  • প্রোগ্রাম রিটার্ন কোড দ্বারা
  • সাফল্য / ত্রুটি দ্বারা
  • অন্য যে কোনও যুক্তিসঙ্গত উপায়ে - জিজ্ঞাসা করুন যদি আপনি সন্দেহ করেন যে এটি বিতর্কিত হতে পারে

তবে ভুয়া / সত্যবাদী ব্যতীত দুটি ভিন্ন-স্বতন্ত্র মানগুলির দ্বারা নয় (যেমন এটি কোনও অপশনের অনুমতি দেয়!)

বিস্তারিত

ইনপুটটি OEIS সিকোয়েন্স এ 230995 এর সদস্য কিনা তা ।

সদস্য:

0, 5, 6, 7, 11, 12, 17, 18, 22, 23, 28, 29, 33, 34, 35, 39, 40, 45, 46, 50, 51, 56, 57, 61, 62, 63, 67, 68, 73, 74, 78, 79, 84, 85, 89, 90, 91, 95, 96, 101, 102, 106, 107, 108, 112, 113, 114, 117, 118, 119, 123, 124, 125, 129, 130, 131, 134, 135, 136, 140, 141, 142, 145, 146, 147, 151, 152, 153, 157, 158, 159, 162, 163, 164, 168, 169, 170, 173, 174, 175, 179, 180, 181, 185, 186, 187, 190, 191, 192, 196, 197, 198, 202, 203, 204, 208, 209, 210, 213, 214, 215, 219, 220, 221, 225, 226, 227, 230, 231, 232, 236, 237, 238, 241, 242, 243, 247, 248, 249, 253, 254, 255, 258, 259, 260, 264, 265, 266, 269, 270, 271, 275, 276, 277, 281, 282, 283, 286, 287, 288, 292, 293, 294, 298, 299, 304, 305, 309, 310, 311, 315, 316, 321, 322, 326, 327, 332, 333, 337, 338, 339, 343, 344, 349, 350, 354, 355, 360, 361, 365, 366, 367, 371, 372, 377, 378, 382, 383, 388, 389, 393, 394, 395
plus
400, 405, 406, 407, 411, ...

অ সদস্য:

1, 2, 3, 4, 8, 9, 10, 13, 14, 15, 16, 19, 20, 21, 24, 25, 26, 27, 30, 31, 32, 36, 37, 38, 41, 42, 43, 44, 47, 48, 49, 52, 53, 54, 55, 58, 59, 60, 64, 65, 66, 69, 70, 71, 72, 75, 76, 77, 80, 81, 82, 83, 86, 87, 88, 92, 93, 94, 97, 98, 99, 100, 103, 104, 105, 109, 110, 111, 115, 116, 120, 121, 122, 126, 127, 128, 132, 133, 137, 138, 139, 143, 144, 148, 149, 150, 154, 155, 156, 160, 161, 165, 166, 167, 171, 172, 176, 177, 178, 182, 183, 184, 188, 189, 193, 194, 195, 199, 200, 201, 205, 206, 207, 211, 212, 216, 217, 218, 222, 223, 224, 228, 229, 233, 234, 235, 239, 240, 244, 245, 246, 250, 251, 252, 256, 257, 261, 262, 263, 267, 268, 272, 273, 274, 278, 279, 280, 284, 285, 289, 290, 291, 295, 296, 297, 300, 301, 302, 303, 306, 307, 308, 312, 313, 314, 317, 318, 319, 320, 323, 324, 325, 328, 329, 330, 331, 334, 335, 336, 340, 341, 342, 345, 346, 347, 348, 351, 352, 353, 356, 357, 358, 359, 362, 363, 364, 368, 369, 370, 373, 374, 375, 376, 379, 380, 381, 384, 385, 386, 387, 390, 391, 392, 396, 397, 398, 399
plus
401, 402, 403, 404, 408, ...

এটি তাই প্রতিটি ভাষার সংক্ষিপ্ত উত্তর জিতে যায়!


আউটপুটটি কি হতে পারে: প্রোগ্রামটি শেষ হয় (30 সেকেন্ডেরও কম সময়ের মধ্যে) যদি ইনপুটটি ক্রমটির অন্তর্ভুক্ত হয়, বা অন্যথায় অনির্দিষ্টকালের জন্য (অসীম লুপ) চলে?
লুইস মেন্ডো

@ লুইসমেন্দো আমি এমন একটি প্রোগ্রামের অনুমতি দেব যা এটির দীর্ঘমেয়াদে এমন একটি প্রোগ্রামের সাথে থাকে যতক্ষণ না এটি সময়সীমা সরবরাহ করে (যাতে কোনও ব্যক্তি তার হার্ডওয়ারের আগে এটি অর্জন করতে পারে)। যদিও এটি আসলেই বিতর্কিত :)
জোনাথন অ্যালান

কোন পরিস্থিতিতে একটি সংখ্যা 400 দ্বারা বিভাজ্য কিন্তু 100 দ্বারা বিভাজ্য নয়?
এটিাকো

পছন্দ করুন ব্যতিক্রম যে চতুর্থ বছরে নিয়ম বছর 4 এবং 100 দ্বারা বিভাজ্য হয়, কিন্তু না 400 দ্বারা
ডেনিস

@ এ্যাটাকো সম্ভবত শব্দটি এখন আরও স্পষ্ট
জোনাথন অ্যালান

উত্তর:


4

এমএটিএল , 17 বাইট

`0Gv@+5:YcYO8XOda

প্রোগ্রামটি থেমে থাকে যদি ইনপুটটি ক্রমটির সাথে থাকে বা অন্যথায় অনির্দিষ্টকালের জন্য (অসীম লুপ) চলে।

দিন nইনপুট করা আবশ্যক। কোড একটি লুপ যে বছর পরীক্ষা executes 1এবং 1+n; তারপর 2এবং 2+n; ... সপ্তাহের কোনও মিলের দিন না পাওয়া পর্যন্ত। কোনও মিল না থাকলে লুপটি অনির্দিষ্টকালের জন্য চলে।

এর সদস্যপদ nকার্যকাল পর্যায়ক্রমিক 400। সুতরাং, 400সিক্যুসের সাথে সম্পর্কিত হলে সর্বাধিক পুনরাবৃত্তির প্রয়োজন n। এটি অনলাইনে চেষ্টা করে 20 সেকেন্ডেরও কম সময় প্রয়োজন। এই উপরের গণ্ডির প্রমাণ হিসাবে, এখানে একটি পরিবর্তিত প্রোগ্রাম রয়েছে যা পুনরাবৃত্তির সংখ্যা 400 এ সীমাবদ্ধ করে ( @401<*শেষে যুক্ত করে)। এটিও নোট করুন যে এই সীমাটি আলগা এবং কয়েক সেকেন্ড সাধারণত পর্যাপ্ত usually

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

ব্যাখ্যা

`           % Do...while
  0Gv       %   Push column vector [0; n], where n is the input number
  @+        %   Add k, element-wise. Gives [k; k+n]
  5:        %   Push row vector [1, 2, 3, 4, 5]
  Yc        %   Horizontal "string" concatenation: gives the 2×6 matrix
            %   [k, 1, 2, 3, 4, 5; k+n, 1, 2, 3, 4, 5]. The 6 columns
            %   represent year, month, day, hour, minute, second
  YO        %   Convert each row to serial date number. Gives a column
            %   vector of length 2
  8XO       %   Convert each date number to date string with format 8,
            %   which is weekday in three letters ('Mon', 'Tue', etc).
            %   This gives a 2×3 char matrix such as ['Wed';'Fri']
  d         %   Difference (of codepoints) along each column. Gives a
            %   row vector of length 3
  a         %   True if some element is nonzero, or false otherwise
            % End (implicit). The loop proceeds with the next iteration
            % if the top of the stack is true

পুরানো সংস্করণ, 24 বাইট

400:"0G&v@+5:YcYO8XOdavA

আউটপুটটি হ'ল 0যদি ইনপুটটি ক্রমটির সাথে থাকে বা 1অন্যথায়।

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

ব্যাখ্যা

400         % Push row vector [1, 2, ..., 400]
"           % For each k in that array
  0G&v      %   Push column vector [0; n], where n is the input number
  @+        %   Add k, element-wise. Gives [k; k+n]
  5:        %   Push row vector [1, 2, 3, 4, 5]
  Yc        %   Horizontal "string" concatenation: gives the 2×6 matrix
            %   [k, 1, 2, 3, 4, 5; k+n, 1, 2, 3, 4, 5]. The 6 columns
            %   represent year, month, day, hour, minute, second
  YO        %   Convert each row to serial date number. Gives a column
            %   vector of length 2
  8XO       %   Convert each date number to date string with format 8,
            %   which is weekday in three letters ('Mon', 'Tue', etc).
            %   This gives a 2×3 char matrix such as ['Wed';'Fri']
  d         %   Difference (of codepoints) along each column. Gives a
            %   row vector of length 3
  a         %   True if some element is nonzero, or false otherwise
  v         %   Concatenate vertically with previous results
  A         %   True if all results so far are true
            % End (implicit). Display (implicit)

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

1
@ জোনাথান অ্যালান ধন্যবাদ আমি দেখি. আমি একটি সংশোধিত প্রোগ্রাম যুক্ত করেছি যা পুনরাবৃত্তির সংখ্যা 400 এ সীমিত করে ফেলেছে It এটি প্রায় 14 সেকেন্ড সময় নেয়, সুতরাং আমি 20
লুইস মেন্ডো

5

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

u=-abs(200-input()%400)-4
print u/100+5>(u-8)*5/4%7>u%4/-3

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

একটি সরাসরি সূত্র।


এটা সুন্দর. আমি বিশ্বাস করি আপনি এর 5*u/4%7-3পরিবর্তে 2 বাইট সংরক্ষণ করতে পারেন (u-8)*5/4%7
জোনাথন অ্যালান

এর 1/(...)পরিবর্তে সাফল্য / ত্রুটি বিকল্পটি ব্যবহার করে আরও 2 টি সঞ্চয় করুন print ...
জোনাথন অ্যালান

5

জেলি , 20 18 বাইট

99R4ḍj`‘ṡ%4ȷ$S€P7ḍ

আউটপুটস সদস্যদের জন্য 1 , অ-সদস্যদের জন্য 0

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

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

99R4ḍj`‘ṡ%4ȷ$S€P7ḍ  Main link. Argument: n

99                  Set the return value to 99.
  R                 Range; yield [01, .., 99].
   4ḍ               Test each element in the range for divisibility by 4.
     j`             Join the resulting array, using itself as separator.
                    The result is an array of 9801 Booleans indicating whether the
                    years they represent have leap days.
       ‘            Increment the results, yielding 1 = 365 (mod 7) for non-leap
                    years, 2 = 366 (mod 7) for leap years.
         %4ȷ$       Compute n % 4000.
        ṡ           Take all slices of length n % 4000 of the result to the left.
             S€     Take the sum of each slice.
               P    Take the product of the sums.
                7ḍ  Test for divisibility by 7.


1

হাস্কেল , 76 বাইট

-35 বাইট জনাথন অ্যালান ধন্যবাদ। -২ বাইট লিনকে ধন্যবাদ।

f i=or[c y==c$y+i|y<-[0..400]]
c n=(5*n#4+n%4-n#100+n#400)%7
(%)=mod
(#)=div

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

OEIS PARI প্রোগ্রামের অ্যালগরিদম ব্যবহার করে।


1
5*(n#4)হতে পারে 5*n#4!
লিন

1

পাইথ , 32 বাইট

iI7*FsM.:hMs.iKiIL4S99*98]K%Q400

এখানে চেষ্টা করুন! (আরও পরীক্ষার কেস একবারে যাচাই করতে "টেস্ট স্যুইটে" ক্লিক করুন)

কিভাবে?

একটি দুর্দান্ত কৌশল ব্যবহার করে আমি স্রেফ "পাইথের মধ্যে গল্ফ করার টিপস" থ্রেডে যুক্ত করেছি।

iI7 * FsM।: hMs.iKiIL4S99 * 98] কে% Q400 | পুরো প্রোগ্রাম। STDIN থেকে পড়া, STDOUT এ আউটপুট।

                   এস 99 | 1 ... 99 এ পূর্ণসংখ্যা তৈরি করুন।
                 এল | সেই তালিকায় প্রতিটি পূর্ণসংখ্যার এন ...
               ii 4 | 4 টি এনসিডির সাথে জিসিডি প্রয়োগের ক্ষেত্রে আক্রমণাত্মক কিনা তা পরীক্ষা করুন Check
                                 | এটি 4 | যাচাই করার সমতুল্য এন
              কে | ফলটি একটি পরিবর্তনশীল কেতে সংরক্ষণ করুন।
            .i * 98] কে | এবং ইন্টারলিভ কে কে মোড়ানো উপাদানগুলির সাথে
                                 | একটি তালিকায় এবং 98 বার পুনরাবৃত্তি।
           s | চেপ্টা।
         এইচএম | বৃদ্ধি.
       ।: | এবং সমস্ত সাবস্ট্রিংগুলি তৈরি করুন ...
                           % Q400 | দৈর্ঘ্য% 400।
     এসএম | প্রতিটি যোগফল।
   * চ | এবং ভাঁজ পণ্য প্রয়োগ করুন।
iI7 | 7 এর সাথে জিসিডি প্রয়োগ করার সময় অদম্য কিনা তা পরীক্ষা করুন
                                 | পণ্য (মূলত 7 | পণ্য কিনা তা পরীক্ষা করে দেখুন)।
                                 | সুস্পষ্টভাবে উপযুক্ত বুলিয়ান মান আউটপুট।

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