দুমের ঘড়ি হাত


9

আপনি একটি চেয়ারে বেঁধে আছেন আপনি নীচে একটি বিশাল আগ্নেয়গিরি। আপনার পাশের একটি 12 ঘন্টা একটি ঘড়ি অশুভভাবে টিক দেয়, এবং আপনি দেখতে পাচ্ছেন যে এতে তারের পিছন থেকে একটি শৃঙ্খলে পৌঁছে যা আপনাকে পৃথিবীর কেন্দ্রে ফেলে দেবে। ঘড়িতে টেপ করা একটি নোট:

প্রতিটি ঘড়ির হাতের একটি বৈদ্যুতিন থাকে। উভয় ঘড়ির হাত একই অবস্থানে থাকলে শক্তি প্রবাহিত হয় এবং আপনি মারা যান। এটি হ'ল যদি না আপনি আমাকে সঠিক সময়টি বলতে না পারেন তবে নিকটতম মুহূর্তে occur

আপনার কাছে এমন একটি কম্পিউটার রয়েছে যা প্রতিটি প্রোগ্রামিংয়ের ভাষা জানে। আপনার সবচেয়ে ছোট তৈরি করা দরকার (এটি হ'ল is, এবং স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ করা হয়েছে) আপনি পারেন প্রোগ্রাম এবং দুষ্ট বিজ্ঞানীকে সময়টি কেমন হবে তা বলুন। আপনার প্রোগ্রামটি ঘন্টা এবং মিনিটের সমন্বয়ে ইনপুট নিতে হবে (যে কোনও পদ্ধতিতে)। এটি ঘটে তার পরের ঘন্টা এবং মিনিটে (কোনও পদ্ধতিতে) ফিরে আসা উচিত।

ওইআইএস পৃষ্ঠা অনুসারে এগারোটি ওভারল্যাপ সময়গুলি হ'ল :

00:00:00 plus 0/11 s, 01:05:27 plus 3/11 s,
02:10:54 plus 6/11 s, 03:16:21 plus 9/11 s,
04:21:49 plus 1/11 s, 05:27:16 plus 4/11 s,
06:32:43 plus 7/11 s, 07:38:10 plus 10/11 s,
08:43:38 plus 2/11 s, 09:49:05 plus 5/11 s,
10:54:32 plus 8/11 s.

পরের বার 12:00:00 হবে। এই চ্যালেঞ্জের জন্য সেকেন্ড এবং তাদের ভগ্নাংশের প্রয়োজন নেই। কেবল নিকটতম মিনিটে গোল করুন to

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

0:00 (Or 12:00) > 1:05
1:00 > 1:05
11:56 > 12:00 (Or 0:00)
6:45 > 7:38
5:00 > 5:27
6:30 > 6:33 (round up)

প্রোগ্রামটি কোনও ফাংশন বা সম্পূর্ণ প্রোগ্রাম হতে পারে। আপনি চয়ন করেন 0:00বা না 12:00, এবং উভয়ই গ্রহণযোগ্য কিনা তা আমি বিবেচনা করি না । শুভকামনা!


মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
মেগো

উত্তর:


6

জাভাস্ক্রিপ্ট (নোড.জেএস) , 54 47 বাইট (নিকটতম গোলাকার)

-7 বাইট। ধন্যবাদ @ ব্যবহারকারী 202729

a=>b=>[(a+=b>5.46*a)+a/11|0,a%12*65.46%60+.5|0]

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


জাভাস্ক্রিপ্ট (নোড.জেএস) , 40 33 44 বাইট (0 টির দিকে রাউন্ড)

-3 বাইটস @ আরনাউল্ডকে ধন্যবাদ

-4 বাইটস কেভিন ক্রুইজসেনকে ধন্যবাদ

a=>b=>[(a+=b>5.46*a)+a/11|0,a%12*65.46%60|0]

ব্যাখ্যা

a=>b=>[(a+=b>5.46*a)+a/11|0,a%12*65.46%60|0]    Full Code
a                                               Hours
   b                                            Minutes
    =>[                    ,               ]    return array with
       (a+=        )                            add to the current hour
           b>5.46*a                             1 if the minute's clock hand has 
                                                passed the hour's clock hand. Here we use
                                                equation 60*a/11 which is the same as 5.46*a
                    +a/11                       and add 1 when hour is 11
                         |0                     floor the result

                            a%12*65.46%60|0     Here we do equation ((720/11)*a) (mod 60)
                            a%12                In case of hour 12 we take 0
                                *65.46          multiply hour by 720/11 which can be shortened to
                                                65.46 to save 1 byte.
                                      %60       mod 60
                                         |0     floor the result

পার্শ্ব দ্রষ্টব্য: আমি খুব নিশ্চিত যে এটি গণিতে আরও জ্ঞানের সাথে কেউ গল্ফ হতে পারে। আমি সবেমাত্র কিভাবে যোগফল এবং গুণন করতে জানি

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


আপনি যদি সত্যিকারের ঘড়িটি কীভাবে কার্যক্রমে কাজ করে তা গ্রহণ করলে এটি ঠিক দেখাচ্ছে না: ডেটাজেনেটিক্স
নোভেমবার

আপনার কিছু গোলাকার ত্রুটি রয়েছে। পরিবর্তে 05:00আউটপুট 05:27কিন্তু আউটপুট উচিত 05:25, এবং 06:45আউটপুট 07:38কিন্তু 07:35পরিবর্তে আউটপুট উচিত । এখানে সম্ভবত একটি কার্যকর ওয়েস ক্রম: A178181
কেভিন ক্রুইজসেন

1
@ লুইসেলপডিজেসুস মুনোজ আমি যে দুটি পরীক্ষার পরীক্ষা দিয়েছি তা এখন সত্যই সঠিক, তবে আপনার (বা ) পরিবর্তে 11:56আউটপুট বলে মনে হচ্ছে । 00:0500:0012:00
কেভিন ক্রুইজসেন 14

@ কেভিন ক্রুজসেন সম্পন্ন হয়েছে আমার মনে হয় a=(a+=b>=a*5)%12কিছুটা ছোট করা যায় তবে আমি এতে খুব একটা ভাল না
লুইস ফেলিপ দে জেসুস মুনোজ

1
Math.round(x)শুধু তাই না 0|x+.5?
ব্যবহারকারী 202729

5

জে , 31 বাইট

0.5<.@+>:@<.&.(11r720*12 60&#.)

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

জেতে কোনও সংখ্যার বৃত্তাকার উপায় হ'ল 0.5মেঝে যুক্ত করা এবং নেওয়া <.। অনেকগুলি বাইট নেয় ...


ব্যাখ্যা

12 60&#. (মিশ্র বেস রূপান্তর) [ঘন্টা, মিনিট] এর অ্যারে থেকে 0:00 সাল থেকে পাস হওয়া মিনিটে রূপান্তর করে।

নোট করুন যে প্রতি 12/11 ঘন্টা (অর্থাৎ 720/11 মিনিট) 0:00 থেকে শুরু হয়ে দুটি হাত একবার ওভারল্যাপ করে।

সুতরাং, মিনিটের মান প্রদত্ত, কেবল এটি 720/11 (নিজের থেকে পৃথক) এর নিকটতম একাধিক পর্যন্ত গোল করুন। *এটি এর দ্বারা 11/720 (জে এর যৌক্তিক সংখ্যাটি আক্ষরিক রয়েছে 11r720) দ্বারা অর্জন করা যেতে পারে , মেঝে নিন <., বর্ধন করুন >:, তারপরে এটি 720/11 দ্বারা গুণ করুন।

নোট করুন যে "11/720 দ্বারা গুণ করুন" এবং "720/11 দ্বারা গুণ করুন" 2 বিপরীত ক্রিয়া, পাশাপাশি "[ঘন্টা, মিনিট] থেকে পাস হওয়া মিনিটের সংখ্যায় রূপান্তর" এবং তদ্বিপরীত। ভাগ্যক্রমে জে এর অন্তর্নির্মিত &.(আন্ডার) রয়েছে, যা রূপান্তর প্রয়োগের পরে কিছু ক্রিয়াকে বিপরীত করে।

তারপরে কেবল গোলটি করা: 0.5 +তারপরে <.


5

আর , 68 বাইট

a=round(1:30*720/11);a[a>sum(scan()*c(60,1))][1]%/%c(60,1)%%c(12,60)

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

  • -2 বাইট জিউসেপ্পিকে ধন্যবাদ
  • রাউন্ডিং হারিয়ে যাওয়ার কারণে +7 বাইট :(

সমীকরণটি অনুসন্ধান করা:

same_position_minutes = 720/11 * index

indexপ্রথম ওভারল্যাপিং অবস্থানের জন্য 0 যেখানে রয়েছে (00:00), ২ য় জন্য এবং আরও অনেক কিছু ...


1
আমার মনে হয় আপনার কাছে চারপাশে এক্সট্রাণস সেট রয়েছে(a[...]...c(60,1))
জিউসেপ

@ জিউসেপ: হ্যাঁ, আপনি ঠিক বলেছেন ... ধন্যবাদ!
digEmAll সমস্ত

@ DigEmAll এটির জন্য ভুল উত্তর দেয় 6:30 > 6:33
mbomb007

@ এমবম্ব ২০০7: আপনি ঠিক বলেছেন, স্থির;)
ডিগইমআল

4

আর , 88 বাইট

i=scan();d=1+60*i[1]+i[2];while(abs(60*(h=d%/%60%%12)-11*(m=d%%60))>5){d=d+1};paste(h,m)

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

এক মিনিট সময় বাড়ান। কোণটি পরীক্ষা করে। পর্যাপ্ত কাছাকাছি না থাকলে, কোনও সমাধান না পাওয়া পর্যন্ত লুপ হয়।


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

3

পাইথন 3 , 80 78 বাইট

এটি আমার প্রথম জমা, সুতরাং গঠনমূলক সমালোচনা স্বাগত :)

-২ বাইটস @ জো কিংকে ধন্যবাদ

def f(h,m):n=65.45;r=round(((60*h+m)//n%11+1)*n);print('%i:%02i'%(r//60,r%60))

এটি অনলাইন চেষ্টা করুন! (78) এটি অনলাইনে ব্যবহার করে দেখুন! (80)


2
পিপিসিজিতে আপনাকে স্বাগতম! ভাল উত্তর!
mbomb007

2

জাভা 8, 89 82 বাইট

(h,m)->(m=m<(m=(int)(h%12*720d/11%60))?m:(int)(++h%12*720d/11%60))*0+h%12%11+" "+m

সংশোধন করা হয়েছে। আমি পরে এটি গল্ফ করতে পারি কিনা তা দেখতে পাবেন (সম্ভবত অন্য কোনও উত্তর পোর্ট করে) ..

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

ব্যাখ্যা:

করতে


একইভাবে ইস্যু (স্পষ্টতই) উত্তর আপনি পোর্ট করেছেন - যেমন: f.apply(56).apply(10)ফলন11 59
জোনাথন অ্যালান

@ জোনাথান অ্যালান ফিক্সড আমি পরে কিছু বাইট অপসারণ করতে পারি কিনা তা দেখতে পাবে ..
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন এটির জন্য ভুল উত্তর দেয় 6:30 > 6:33
mbomb007

@ mbomb007 আমি জানি আমি এটি ঠিক করার আগে ওপির প্রতিক্রিয়ার জন্য অপেক্ষা করছি। আমাদের মেঝে করা উচিত, বৃত্তাকার, সিল, বা উভয়ই অনুমোদিত (যদি আমি চ্যালেঞ্জটি পোস্ট করতাম তবে আমি চতুর্থ বিকল্পটি ব্যবহার করতাম তবে প্রথমে ওপিটির জন্য অপেক্ষা করব)।
কেভিন ক্রুইজসেন 20

@ কেভিন ক্রুইজসেন ওপি'র মন্তব্যের কারণে পরীক্ষার কেসটি প্রশ্নে সম্পাদিত হয়েছিল । রাউন্ডের সর্বাধিক প্রচলিত সংজ্ঞাটি ব্যবহার করে ওপির অভিপ্রায়টি পরিষ্কার clear
mbomb007

2

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

((⍳11),⍪0,+\∊5/⊂5 6)(⍸⌷1⊖⊣)⎕

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


ব্যাখ্যা

((⍳11),⍪0,+\∊5/⊂5 6)হ'ল ওভারল্যাপ (টিও লিঙ্কের শেষে মুদ্রিত)
(⍸⌷1⊖⊣)⎕এমন এক সময়ের ম্যাট্রিক্স যা ইনপুটটি ম্যাট্রিক্সে থাকে এবং এর নীচে সূচিগুলির চারপাশে মোড়ানো থাকে finds


2

সি # (.নেট কোর) , 70 বাইট

(h,m)=>{h%=12;int n=(5*h+h/2)%60;return (m>n||h>10)?f(h+1,0):h+":"+n;}

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

আমি মনে করি এটি সমস্ত পরীক্ষার কেস পাস করে। যদিও এইচ = 11 কেসটি কুৎসিত

ব্যাখ্যা:

(h,m)=>{ // Lambda receiving 2 integers
    h%=12; // Just to get rid of the 0/12 case
    int n=(5*h+h/2)%60; // get the minute at which the hands overlap 
                        //for current hour.
    return 
    (m>n||h>10)? // if current minute > n or h=11
        f(h+1,0) // it will happen next hour
    :
        h+":"+n; // return result
}

এটি এর জন্য ভুল উত্তর দেয় 6:30 > 6:33
mbomb007

@ mbomb007 ধন্যবাদ, আমি এটি একবার দেখতে যাচ্ছি। ওভারল্যাপ সময়গুলির সম্পূর্ণ তালিকা যুক্ত হওয়ার আগে আমি প্রথম চেষ্টা করেছি।
এফ.ক্যারেট 21

এটা এখন ঠিক করা উচিত। যেহেতু কারেন্টটাইম == ওভারল্যাপটাইম এমন ক্ষেত্রে আমাদের করণীয় সম্পর্কে আমাদের পরিষ্কার নির্দেশনা নেই, আমি এই ক্ষেত্রে বর্তমান সময়টি ফিরিয়ে দিই (প্রদত্ত (1,5) "1: 5" রিটার্ন দেয় এবং "2:11" নয়) ।
এফ.ক্রেটারে

1

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

p=>q=>(p+=q>=(5.5*p|0),p%=11,[p,5.5*p|0])


1

জেলি , 25 বাইট

‘2¦ɓ;W}Ṣi¹ịḷø5,6ẋ5ÄĖØ0W¤;

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

একটি মোনাডিক লিঙ্ক যা সময়টিকে দ্বি-সংখ্যার তালিকা হিসাবে গ্রহণ করে এবং হাতের স্পর্শের কারণে পরবর্তী সময়ের সাথে মিল রেখে একটি দ্বি-সংখ্যার তালিকা প্রদান করে।


0

পার্ল 6 , 43 বাইট

(* *60+*+33).round(65.45).round.polymod(60)

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

একটি বেনামে যাই হোক না কেন লাম্বদা যে দুটি সংখ্যক ঘন্টা এবং মিনিট উপস্থাপন করে এবং ঘন্টা এবং মিনিটকে বিপরীত ক্রমে ফিরিয়ে দেয়। এখন আপনি সামঞ্জস্যপূর্ণ সময় ইনপুট করার সময় এটি সামঞ্জস্যপূর্ণ নয়, এটি পরবর্তী সারিবদ্ধ সময়কে আউটপুট দেয় বা একই সাথে থাকে কিনা। আমি ওপিতে অপেক্ষা করছি এই বিষয়ে প্রতিক্রিয়া জানাতে, তবে এখনই আমি এটিকে অপরিজ্ঞাত হিসাবে গণ্য করছি।

ব্যাখ্যা

(* *60+*+33)   # Converts the two inputs to number of minutes
            .round(65.45)   # Round to the nearest multiple of 65.45
                         .round  # Round to the nearest integer
                               .polymod(60) # Repeatedly modulo by 60 and return the list of results
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.