স্ট্রাইকিং ক্লকটি ম্যাচ করুন


14

পরিচিতি:

বাড়িতে আমাদের একটি ঘড়ি থাকে যা প্রতি ঘণ্টায় বর্ণিত পরিমাণে আঘাত করে, তবে প্রতি আধ ঘন্টারও একবার স্ট্রাইক করে। সুতরাং 0:01 থেকে 12:00 সহ এটি এই ক্রমে আঘাত করে:

1, 1, 1, 2, 1, 3, 1, 4, 1, 5, 1, 6, 1, 7, 1, 8, 1, 9, 1, 10, 1, 11, 1, 12

চ্যালেঞ্জ:

একটি পূর্ণসংখ্যা দেওয়া হয়েছে n, সময়-ফ্রেমের একটি তালিকা আউটপুট করুন যাতে মোট স্ট্রাইক সমান n। এছাড়াও, এই সময়সীমার কমপক্ষে 1 মিনিটের আগে সর্বদা শুরু করুন এবং এই সময় ফ্রেমের কমপক্ষে 1 মিনিটের পরে (এবং বেশিরভাগ 29 মিনিট) শেষ করুন।
উদাহরণস্বরূপ, যদি ইনপুট হয় n=8তবে আউটপুটটি হতে পারে:

[00:59-03:01, 01:29-03:31, 02:59-04:01, 05:29-06:31, 06:29-07:01, 06:59-07:31, 07:59-08:01]

যার জন্য এই সময়সীমার নীচের পরিমাণগুলি রয়েছে, সমস্ত সমান 8:

[1+1+2+1+3, 1+2+1+3+1, 3+1+4, 1+6+1, 1+7, 7+1, 8]

চ্যালেঞ্জ নিয়ম:

  • আউটপুট নমনীয়। আপনি সময় (বা তারিখ / তারিখের সময়) অবজেক্টস, টাইমস্ট্যাম্পস, স্ট্রিংগুলি (অগ্রণী জিরো সহ বা তার সাথে), দশমিকের সাথে .29/ .31/ .59/ .01(অর্থাত্ 0.29-3.01পরিবর্তে 00:29-03:01) ইত্যাদি আউটপুট দিতে পারেন, যতক্ষণ না এটি পরিষ্কার হয় যতক্ষণ না এটি সময়সীমার আগে এবং পরে থাকে ।
    এছাড়াও, আপনি নিজেই পরিমাণটি চয়ন করতে পারেন। আমার সমস্ত উদাহরণে আমি 1 মিনিট ব্যবহার করি তবে আপনি 5 মিনিট, 15 মিনিট ইত্যাদিও চয়ন করতে পারেন এর অর্থ এটি আপনি .4/ .6/ .9/ ব্যবহার করতে পারবেন .1(অর্থাত0.4-3.1 পরিবর্তে00:24-03:06 উদাহরণস্বরূপ ) । তালিকাটি নমনীয়ও। কোনও তালিকা / সংগ্রহ, অ্যারে, ডিলিমিটার-বিভাজিত স্ট্রিং, স্ট্যান্ডউটে প্রতি লাইনে মুদ্রণ ইত্যাদি হতে পারে
    দয়া করে আপনি কোন আউটপুট পছন্দটি করেছেন তা উল্লেখ করুন।দ্রষ্টব্য: আপনাকে উপরের মতো টাইম-ফ্রেমের অঙ্কগুলি আউটপুট করার অনুমতি নেই, এটি কেবল স্পষ্টকরণ হিসাবে উল্লেখ করা হয়েছে। এর আগে এবং পরে সামান্য সময় সহ আপনাকে অবশ্যই সময়-ফ্রেমগুলি আউটপুট করতে হবে।
  • স্ট্রাইক থেকে চারপাশে মোড়ানো না 12:00করতে 00:30। সুতরাং n=14, সময় ফ্রেম দুটি হয় 11:29-00:31এবং 11:59-01:01
  • ইনপুটটি পরিসীমাটিতে থাকবে 1 <= n <= 90, যেখানে সম্ভাব্য স্ট্রাইকগুলির মোট যোগফল 90
  • আপনি যে সময়-ফ্রেমগুলি ফিরিয়ে আনবেন তা কোনও ক্রম হতে পারে।

সাধারণ নিয়ম:

  • এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।
    কোড-গল্ফ ভাষাগুলি আপনাকে নন-কোডগলফিং ভাষার সাথে উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না। 'যে কোনও' প্রোগ্রামিং ভাষার জন্য যতটা সম্ভব সংক্ষিপ্ত উত্তর নিয়ে আসার চেষ্টা করুন।
  • স্ট্যান্ডার্ড বিধি প্রয়োগ আপনার উত্তরের জন্য , সুতরাং আপনাকে সঠিক পরামিতি এবং রিটার্ন-টাইপ, সম্পূর্ণ প্রোগ্রাম সহ STDIN / STDOUT, ফাংশন / পদ্ধতি ব্যবহার করার অনুমতি দেওয়া হবে। আপনার কল
  • ডিফল্ট লুফোলগুলি নিষিদ্ধ।
  • যদি সম্ভব হয় তবে আপনার কোডের জন্য একটি পরীক্ষার সাথে একটি লিঙ্ক যুক্ত করুন।
  • এছাড়াও, প্রয়োজনে একটি ব্যাখ্যা যোগ করুন।

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

(প্রত্যেকে টাইম-ফ্রেম এবং নেতৃস্থানীয় জিরোগুলির 1 মিনিটের আগে / পরে ব্যবহার করছে)

Input: 8
Ouput:
[00:59-03:01, 01:29-03:31, 02:59-04:01, 05:29-06:31, 06:29-07:01, 06:59-07:31, 07:59-08:01]

Input: 14
Output:
[00:29-04:01, 00:59-04:31, 02:59-05:01, 04:29-06:31, 05:59-07:01, 11:29-00:31, 11:59-01:01]

Input: 90
Output:
[00:29-00:01, 00:59-00:31, 01:29-01:01, 01:59-01:31, 02:29-02:01, 02:59-02:31, 03:29-03:01, 03:59-03:31, 04:29-04:01, 04:59-04:31, 05:29-05:01, 05:59-05:31, 06:29-06:01, 06:59-06:31, 07:29-07:01, 07:59-07:31, 08:29-08:01, 08:59-08:31, 09:29-09:01, 09:59-09:31, 10:29-10:01, 10:59-10:31, 11:29-11:01, 11:59-11:31]

Input: 1
Output:
[00:29-00:31, 00:59-01:01, 01:29-01:31, 02:29-02:31, 03:29-03:31, 04:29-04:31, 05:29-05:31, 06:29-06:31, 07:29-07:31, 08:29-08:31, 09:29-09:31, 10:29-10:31, 11:29-11:31]

Input: 2
Output:
[00:29-01:01, 00:59-01:31, 01:59-02:01]

1
আমি সবচেয়ে নমনীয় যা জন্য যেতে চাই। এর মধ্যে দশমিক ঘন্টা সংখ্যা অন্তর্ভুক্ত থাকে, যতক্ষণ না ফলাফলের সংখ্যা দুটি রিংয়ের মধ্যে পড়ে।
অ্যাডম

@ অ্যাডাম অনুমান আপনি ঠিক বলেছেন। আমি আমার উত্তর অনুসারে সম্পাদনা করেছি। আপনার কমপক্ষে 1 মিনিট এবং সর্বাধিক 29 মিনিট হওয়া উচিত, সুতরাং .4/ .6/ .9/ .1অনুমোদিত (আপনি বলেছেন মত ​​6 মিনিট হওয়া: :24/ :36/ :54/ :06)।
কেভিন ক্রুইজসেন

1
সম্ভবত উল্লেখ করুন যে সময়ের ক্রমগুলি কোনও ক্রমে ফেরত দেওয়া যেতে পারে?
অ্যাডাম

ঠিক আছে এন 0..90 এ, আমি এন স্ট্রাইক গণনার সময়কাল কী তা পরিষ্কার করে দেখতে পাই না: এটি 12 ঘন্টা? তারা 24 ঘন্টা? 48 ঘন্টা হয়? 0..24: 0..60 ফর্ম্যাটে ফেরতের সময় অনুমোদিত কি?
রোজলুপি

@ রোসলুপি সময় ফ্রেম একটি নিয়মিত এনালগ ঘড়ি, তাই 00:01 থেকে 12:00 পর্যন্ত। সুতরাং 0..24: 0..60 এর পরিবর্তে এটি 0..12: 0..60 হওয়া উচিত। কীভাবে এটি কোনও বিভ্রান্তি দূর করে।
কেভিন ক্রুইজসেন

উত্তর:


3

এপিএল (ডায়ালগ ক্লাসিক) , 34 বাইট এসবিসিএস

12|.4 .1∘+¨.5×⍸⎕=⍉∘.-⍨+\,⍪⍨1,⍪⍳12

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

এই সমাধানটি ⎕io←1(1-ভিত্তিক সূচক) ব্যবহার করে।

ডান থেকে বাম:

⍳12 হয় 1 2 3...12

এটিকে একটি দীর্ঘ পাতলা 12x1 ম্যাট্রিক্সে পরিণত করে

1, বামে 1s কলাম যুক্ত করে

⍪⍨ একই ম্যাট্রিক্সকে উল্লম্বভাবে যুক্ত করে, সুতরাং এটি এখন 24x2 ম্যাট্রিক্স

, সারি-প্রধান ক্রমে ম্যাট্রিক্সকে সমতল করে, এটি 48 মাপের ভেক্টরে পরিণত হয়: 1 1 1 2 1 3...1 12 1 1 1 2...1 12

+\ আংশিক পরিমাণ: 1 2 3 5 6 9...

∘.-⍨ প্রতিটি জোড়া উপাদানগুলির মধ্যে পার্থক্য, একটি 48x48 ম্যাট্রিক্স

TRANSPOSE

⎕=মূল্যায়ন ইনপুট ( ) যেখানেই ঘটে সেখানে 1s সহ একটি 48x48 বুলিয়ান ম্যাট্রিক্স

1s যেখানে স্থানাঙ্কের জোড়া

.5× তাদের অর্ধেক

.4 .1∘+¨ প্রথম জোড়ায় 0.4 এবং প্রতিটি জোড়ের দ্বিতীয় স্থানাঙ্কিতে 0.1 যোগ করুন

12| মডুলো 12

অনন্য


.1আউটপুটে প্রতিনিধিত্ব করা সময়ের ব্যবধানটি কী ? এছাড়াও, সুন্দর উত্তর।
এরিক আউটগলফার

2
ওহ, এবং এই এটা কি করে সম্ভব এই 34 বাইট হতে জন্য, হয়তো এতে লিঙ্ক করেন অথবা লিখতে চাই <sup>SBCS</sup>শুধু আদমের উত্তর চাই।
এরিক আউটগলফার

@ এরিক অটগল্ফার সমস্যাটি পরিষ্কারভাবে: 01 /: 29 /: 31 /: 59 এর পরিবর্তে .1 / .4 / .6 / .9 এর অনুমতি দেয়। এই উত্তরের জন্য আমার বিশেষ এনকোডিংয়ের দরকার নেই, এটি ডায়ালগ ক্লাসিকের যার নিজস্ব সিঙ্গল-বাইট এনকোডিং রয়েছে।
ngn

ডায়ালগ ক্লাসিক না। এবং হ্যাঁ, আমি জানি যে এটি স্পষ্টভাবে অনুমোদিত হয়েছে, আমি ঠিক জানতে চেয়েছিলাম 0.1আউটপুটে কত মিনিট রয়েছে ;)
এরিক দ্য আউটগলফার

@ এরিকথিউটগল্ফার "এসবিসিএস" যোগ করেছেন, ধন্যবাদ; .1 × 60 মিনিট 6 মিনিট
ngn

5

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

H.MM,H.MMবিন্যাসে সময়ের ব্যবধানগুলি মুদ্রণ করে।

F=(n,f=0,s=n,t=f++)=>t<f+23?F(n,f,s-=t&1||t/2%12+1,++t,s||alert([f/2%12+.01,-~t/2%12+.01])):f<24&&F(n,f)

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

নীচে পুনরাবৃত্তিযোগ্য সংস্করণ হিসাবে মূলত একই অ্যালগরিদম ব্যবহার করে।


অ-পুনরাবৃত্ত সংস্করণ, 117 বাইট

H.MM,H.MMবিন্যাসে সময়ের ব্যবধানের একটি স্পেস-সীমিত স্ট্রিং আউটপুট দেয় ।

n=>[...Array(24)].map((_,f,a)=>a.map(_=>(s-=t++&1||t/2%12+.5)||(r+=[-~f/2%12+.01,-~t/2%12+.01]+' '),s=n,t=f),r='')&&r

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

মন্তব্য

n =>                           // n = input
  [...Array(24)].map((_, f, a) // FOR f = 0 TO 23:
    => a.map(_ =>              //   FOR t = f TO f + 23:
      (                        //     update s
        s -=                   //       by subtracting:
          t++ & 1 ||           //         - 1 if t is odd (half hour)
          t / 2 % 12 + .5      //         - the current hour if t is even
      ) || (                   //     if s is equal to zero:
        r += [                 //       update the result string by appending:
          -~f / 2 % 12 + .01   //         - the formatted 'from' time
          ,                    //         - a comma
          -~t / 2 % 12 + .01   //         - the formatted 'to' time
        ] + ' '                //       and a padding space
      ),                       //     inner map() initialization:
      s = n,                   //     - s = target number of strikes
      t = f                    //     - 'to' time = 'from' time
    ),                         //   end of inner map()
    r = ''                     //   start with r = empty string
  )                            // end of outer map()
  && r                         // return r

4

এপিএল (ডায়ালগ ইউনিকোড) , 62 59 বাইট এসবিসিএস

পুরো প্রোগ্রাম বডি। জন্য অনুরোধ n। দশমিক ঘন্টা ব্যবহার করে দ্বি-উপাদান তালিকার তালিকা মুদ্রণ করে।

∪(⎕=∊l+/¨⊂48⍴∊1,¨⍳12)/(¯.1 .1+⊃,⊢/)¨⊃,/(l←⍳48),/¨⊂.5×48⍴⍳24

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

⍳24d ndices 1… 24

48⍴ cyclically r দৈর্ঘ্য 48, অর্থাত 1 ... 12,1 ... থেকে 12 eshape

.5× যে দ্বারা একটি অর্ধেক গুণ

 ঘের (প্রতিটি বাম আর্গুমেন্টের জন্য ডান আর্গুমেন্ট হিসাবে এই সম্পূর্ণ অ্যারেটি ব্যবহার করার জন্য)

(),/¨ নিম্নলিখিত প্রত্যেকের জন্য, সেই দৈর্ঘ্যের সমস্ত উপ-তালিকাটি ফিরিয়ে দিন:

⍳48d ndices 1… 48

l← সংরক্ষণ করুন l( এল এনগ্রেথের জন্য)

এখন প্রতিটি রানের দৈর্ঘ্যের জন্য আমাদের কাছে রানের সমস্ত সম্ভাব্য তালিকা রয়েছে।

,/ উপ-তালিকার তালিকাগুলি সংযুক্তকরণ (লিট। কনটেনটেশন-হ্রাস)

 প্রকাশ (কারণ হ্রাস র‌্যাঙ্ক 1 থেকে 0 এ কমিয়েছে)

( প্রত্যেকের জন্য নিম্নলিখিত ফাংশন প্রয়োগ করুন:

⊢/ শেষ (লিট। ডান-হ্রাস) উপাদান (শেষ সময়)

⊃, প্রথম উপাদানটি প্রেন্ডেন্ড করুন (শুরুর সময়)

¯.1 .1+ যারা নেতিবাচক এবং ধনাত্মক দশম যোগ করুন

()/ এই প্রারম্ভের শেষে জোড়গুলি ফিল্টার করুন:

⍳12d ndices 1… 12

1,¨1প্রত্যেককে  একটি প্রিপেন্ড করুন

ε nlist (চেপ্টা)

48⍴ cyclically r দৈর্ঘ্য 48, অর্থাত্ 1,1,1,2 eshape ... 1,11,1,12

 ঘের (প্রতিটি বাম আর্গুমেন্টের জন্য ডান আর্গুমেন্ট হিসাবে এই সম্পূর্ণ অ্যারেটি ব্যবহার করার জন্য)

l+/¨ প্রতিটি l(1… 48) এর জন্য সেই দৈর্ঘ্যের সমস্ত উপ-তালিকার যোগফল প্রদান করে

ε nlist (চেপ্টা)

⎕= এর সাথে সংখ্যার ইনপুট তুলনা করুন

 কেবল অনন্য উপাদানগুলি (প্রারম্ভের শেষে জোড়া) ফিরিয়ে দিন


0.1 0.5হয়ে উঠতে পারে.1 .5
ব্যবহারকারীর 41805

হ্যাঁ, আমিও লক্ষ্য করেছি। ধন্যবাদ যদিও.
অ্যাডাম

3

পাইথন 3 , 118 116 বাইট

lambda n:[(a/2+.4,b%24/2+.1)for a in range(24)for b in range(48)if sum((sum(zip([1]*12,range(1,13)),())*2)[a:b])==n]

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

একটি সময়সীমার হিসাবে প্রতিনিধিত্ব করা হয় (t1, t2), t1এবং t2দশমিক দশককে প্রতিনিধিত্ব করে। অফসেটটি .1বা 6 মিনিট।


1

ব্যাচ, 196 বাইট

@for /l %%i in (0,1,23)do @set s=%1&for /l %%j in (0,1,23)do @call:c %%i %%j
:c
@set/at=%2+%1,s-=t%%2*(t/2%%12)+1,h=%1/2,i=%1%%2*30+15,t=-~t%%24/2,u=-~t%%2*30+15
@if %s%==0 echo %h%:%i% %t%:%u%

ব্যাখ্যা: tআধা ঘন্টা সময়, শুরু 0থেকে 00:30। সময় T এ কতগুলি স্ট্রাইক তারপর 1, 1, 1, 2, 1, 3ইত্যাদি বিয়োগ 1ক্রম দেয় 0, 0, 0, 1, 0, 2ইত্যাদি যা পূর্ণসংখ্যার শূন্য সঙ্গে ইন্টারলিভড্ হয়। এই তারপর ক্রম termwise গুণ পাওয়া যেতে পারে 0, 0, 1, 1, 2, 2ক্রম সঙ্গে ইত্যাদি 0, 1, 0, 1, 0,1 ইত্যাদি এই ক্রম উভয় নির্দ্ধিধায় মডিউল এবং (পূর্ণসংখ্যা) বিভাজন ব্যবহার করে হিসাব করা হয়।

এরপরে এটি সম্ভাব্য 23 টি প্রথম শুরুতে লুপ করতে থাকবে, তারপরে সমস্ত 24 টি স্ট্রাইকিং সময় নেবে এবং ইনপুট থেকে স্ট্রাইকগুলির সংখ্যা বিয়োগ করে, ফলাফলটি শূন্যের সময় মুদ্রণ করে।

কোডটি লুপের পরে আসে তবে কোনও ক্ষতি হয় না কারণ ইনপুট 90 এর বেশি হতে পারে না।


1

এপিএল NARS, 559 বাইট

∇r←l w;t;i;j;c;k;m;p
p←{0=2∣¯1+⍵:.01+2÷⍨¯1+⍵⋄¯0.19+2÷⍨¯1+⍵}
m←{0=2∣¯1+⍵:¯.41+2÷⍨¯1+⍵⋄¯0.21+2÷⍨¯1+⍵}
   r←⍬⋄i←0⋄t←∊(¯1+⍳13),¨13⍴1⋄t←t,2↓t⋄k←⍴t
A: j←i+←1⋄→0×⍳i≥k⋄c←0
B: c+←j⊃t⋄:if(c=w)∧(0≤(m i))∧(24≥(p j))⋄r←r,⊂(m i),(p j)⋄:endif⋄→A×⍳c≥w⋄j+←1⋄→B×⍳j≤k⋄→A
∇
∇r←g w;v;i;k;m
   v←{12≤⌊⍵:⍵-12⋄⍵}
   i←1⋄k←⍴w⋄r←⍬
A: →0×⍳i>k⋄r←r,⊂v¨i⊃w⋄i+←1⋄→A
∇   
h←g∘l

h (n) বা l (n) 0-24 ঘন্টাগুলিতে এমন সমস্ত প্রতিনিধি অন্তর দেয় যা n ঘড়ির স্ট্রাইক রয়েছে। h (n) এর ক্লক ফর্ম্যাটটি 0..11.0..59 হিসাবে রয়েছে; পরিবর্তে l (n) এর 0..23.0..59 পরীক্ষা হিসাবে ক্লক ফর্ম্যাট রয়েছে

  h 8
    0.59 3.01  1.29 3.31  2.59 4.01  5.29 6.31  6.29 7.01  6.59 7.31  
    7.59 8.01  0.59 3.01  1.29 3.31  2.59 4.01  5.29 6.31  6.29 7.01  
    6.59 7.31  7.59 8.01 
  h 14
    0.29 4.01  0.59 4.31  2.59 5.01  4.29 6.31  5.59 7.01  11.29 0.31  
    11.59 1.01  0.29 4.01  0.59 4.31  2.59 5.01 4.29 6.31  5.59 7.01 
  h 90
    0.29 0.01  0.59 0.31  1.29 1.01  1.59 1.31  2.29 2.01  2.59 2.31  
    3.29 3.01  3.59 3.31  4.29 4.01  4.59 4.31  5.29 5.01  5.59 5.31  
    6.29 6.01  6.59 6.31  7.29 7.01  7.59 7.31  8.29 8.01  8.59 8.31  
    9.29 9.01  9.59 9.31  10.29 10.01  10.59 10.31  11.29 11.01  11.59 11.31    
  h 1
    0.29 0.31  0.59 1.01  1.29 1.31  2.29 2.31  3.29 3.31  4.29 4.31  
    5.29 5.31  6.29 6.31  7.29 7.31  8.29 8.31  9.29 9.31  10.29 10.31  
    11.29 11.31  0.29 0.31  0.59 1.01  1.29 1.31  2.29 2.31  3.29 3.31  
    4.29 4.31  5.29 5.31  6.29 6.31  7.29 7.31  8.29 8.31  9.29 9.31  
    10.29 10.31  11.29 11.31 
  h 2
    0.29 1.01  0.59 1.31  1.59 2.01  0.29 1.01  0.59 1.31  1.59 2.01 
  l 2
    0.29 1.01  0.59 1.31  1.59 2.01  12.29 13.01  12.59 13.31  13.59 14.01 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.