এখন কটা বাজে?


25

আমার কব্জিতে তিনটি ঘড়ি পরে আমি বেশ আক্ষরিকভাবে সময় বাঁচাতে চাই ... সমস্যা কি তারা প্রত্যেকেই আলাদা সময় দেয়। একটি ঘড়ি আসল সময়ের চেয়ে মিনিট পিছনে। একটি ঘড়ি প্রকৃত সময়ের চেয়ে x মিনিট এগিয়ে। শেষ ঘড়িটি আসল সময়টি দেখায়।

সমস্যাটি হ'ল, কোন ঘড়ির সঠিক সময় আছে তা আমি বলতে পারি না ...

প্রতিটি ঘড়িতে প্রদর্শিত সময় থেকে আসল সময়টি নির্ধারণ করুন। যদি সময় নির্ধারণ করা সম্ভব না হয় তবে "সূর্যের দিকে তাকান" মুদ্রণ করুন।

ইনপুট: তিনটি H1:M1 H2:M2 H3:M3 পঠন, একক স্থানের অক্ষর দ্বারা পৃথক: প্রতিটি পাঠের মধ্যে H1, H2, H3 প্রদর্শিত সময়গুলি প্রতিনিধিত্ব করে (0 <H1, H2, H3 <13), এবং M1, M2, M3 প্রদর্শিত মিনিটের প্রতিনিধিত্ব করে (0 <= M1 , এম 2, এম 3 <60)। যদি মিনিটের সংখ্যা 10 এর চেয়ে কম হয় তবে ইনপুটটিতে একটি শীর্ষস্থানীয় 0 চাপ দেওয়া হয়। একইভাবে, কি ঘন্টাগুলির সংখ্যা 10 এর চেয়ে কম হয়, একটি শীর্ষস্থানীয় 0 ইনপুটটিতে চাপিত হয়।

আউটপুট: The correct time is HH:MM যেখানে এইচএইচ: এমএম সঠিক সময়। যদি কোনও সঠিক সময় নির্ধারণ করা না যায় তবে এটি প্রদর্শিত হয় Look at the sun

ইনপুট 1: 05:00 12:00 10:00

আউটপুট 1: The correct time is 05:00

ইনপুট 2: 11:59 12:30 01:01

আউটপুট 2: The correct time is 12:30

ইনপুট 3: 12:00 04:00 08:00

আউটপুট 3: Look at the sun

সংক্ষিপ্ততম কোড জয় ... কোনও বিশেষ জরিমানা প্রযোজ্য নয়। এছাড়াও, মনে রাখবেন যে আমরা একটি 12-ঘন্টা ঘড়ি নিয়ে কাজ করছি ... আমি AM বা প্রধানমন্ত্রীর কোনও যত্ন করি না ... কল্পনা করুন আমরা অ্যানালগ ঘড়িগুলি নিয়ে কাজ করছি ...


সঠিক সময় দ্বারা, আপনি বর্তমান স্থানীয় সময় মানে?
অপ্টিমাইজার 6

7
@ সানচাইজস কারণ তারা 4 ঘন্টা আলাদা। 12:00ঠিক মধ্যে 8:00এবং 4:00খুব, আপনি কি জানেন ...
Siguza

1
আপনি বলছেন আউটপুট The correct time is HH:MMসম্পূর্ণ স্টপ ছাড়াই ফর্মের , তবে তারপরে প্রথম দুটি উদাহরণে একটি সম্পূর্ণ স্টপ অন্তর্ভুক্ত করার জন্য এগিয়ে যান। কোন সংস্করণটি সঠিক?
Sp3000

1
কমান্ড লাইন আর্গুমেন্ট হিসাবে সময় পড়ার অনুমতি দেওয়া হয়?
ডেনিস

1
যেমন আছে whattimeisit 07:21 08:39 08:00? নিশ্চিত!
ওয়েলওয়েস্ট

উত্তর:


10

সিজেম, 86 83 77 75 71 বাইট

"The correct time is "ea{aea+':f/60fb(f-:+720%!},{];"Look at the sun"}*

আমার কোড থেকে 6 বাইট বন্ধ গল্ফ করার জন্য @ জিমি 23013 কে ধন্যবাদ।

অনলাইনে এটি ব্যবহার করে দেখুন সিজেএম ইন্টারপ্রেটারে

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

$ cjam time.cjam 05:00 12:00 10:00; echo
The correct time is 05:00
$ cjam time.cjam 11:59 12:30 01:01; echo
The correct time is 12:30
$ cjam time.cjam 12:00 04:00 08:00; echo
Look at the sun

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

"The correct time is "
        e# Push that string.
ea      e# Push the array of command-line arguments.
{       e# Filter; for each time T:
  a     e#   Wrap T in an array.
  ea+   e#   Concatenate with the array of all times.
  ':f/  e#   Split each time at the colon.
  60fb  e#   Consider it a base 60 integer.
  (f-   e#   Shift out the converted T and subtract it from the remaining times.
  :+    e#   Add them.
  720%! e#   Push 1 is the sum is 0 modulo 720 and 0 if not.
},      e#   Keep the time iff a 1 has been pushed.

        e# The array on the stack now contains one or three times.

{       e# Reduce; for each time but the first:
  ];    e#   Discard the entire stack.
  "Look at the sun"
        e#   Push that string.
}*      e#

1
qS/_':f/60fb_f{f-:+720%!,}\"The correct time is "f\2/.e&$("Look at the sun"@?bবোঝা :i
জিমি 23013

3
"The correct time is "lS/_':f/60fb:T.{Tf-:+720%{}@?}{];"Look at the sun"}*
জিমি 23013

আপনি
কেসটি

@ লক্ষ্যাগার্গ: প্রশ্ন বলছে যে তারা প্রত্যেকে আলাদা আলাদা সময় দেয় । এটা মিথ্যা হবে যদি x = 0
ডেনিস

@ ডেনিস আপনি এটি আরও কমাতে সক্ষম হতে পারেন, শেষের পুরো
স্টপটির

7

জাভাস্ক্রিপ্ট ( ES6 ), 164 168 172

প্রতিটি পড়ার জন্য, অন্য দুটি থেকে দূরত্বটি গণনা করুন। যেটির একই দূরত্ব রয়েছে তা হ'ল আপনার যা প্রয়োজন। যদি একের বেশি থাকে তবে আপনি বলতে পারবেন না।

F=s=>(s=s.split(' '))
  .map(x=>([h,m]=x.split(':'),+m+(h%12)*60))
  .map((v,i,z)=>(v+v-z[++i%3]-z[++i%3])%720||'The correct time is '+s[k+=i],k=-2)
[k]||'Look at the sun'


// TEST

out=x=>O.innerHTML += x+'\n';

['12:30 01:01 11:59', '11:50 11:55 12:00', '05:00 12:00 10:00', '12:10 04:10 08:10', '07:00 06:00 08:00']
.forEach(x => out(x + ' -> ' + F(x)))

go=_=>out(I.value + ' -> ' + F(I.value))
<pre id=O></pre>
<input id=I><button onclick="go()">Test</button>


এটি ইনপুট 3:00 3:00 3:00 এর জন্য 3:00 না দেওয়া উচিত। কখন x = 0: পি
লক্ষী গার্গ

4
@ লক্ষ্যাগার্গ নং। Problem is they each give a different timeসুতরাং এক্স 0 হতে পারে না
edc65

প্রতিটি আপভোটের সাথে আপনি পাবেন, আপনার উচিত edc65++
অ্যালেক্স এ।

4

পাইথন 3, 166 163 বাইট

L=input().split()
f=lambda x:int(x[:2])*60+int(x[3:])
s=""
for a in L:s=[s,s and"Look at the sun"or"The correct time is "+a][(sum(map(f,L))-3*f(a))%720<1]
print(s)

ব্যবহারসমূহ

      a-b == b-c
<==>  a+c-2*b == 0
<==>  (a+b+c)-3*b == 0

পাটিগণিতের সাথে মিনিটগুলি মডিউল 720।


একটি অনুরূপ পদ্ধতির ব্যবহার করে (a + abc == 0) আমি খুঁজে পেয়েছি যে বাছাই করার প্রয়োজন নেই। আপনি কি এড়াতে চেষ্টা করেছেন?
edc65

@ edc65 এর পরিবর্তে আমি একটি গণনা রাখার চেষ্টা করেছি তবে আমার মনে হয় এটি আরও দীর্ঘ হয়ে গেছে। আমারও শুরুতে একটি + এবিসি ছিল তবে f
এটিতে

2

পাইথন 2, 254 ... 199 207 203 194 200 বাইট

সম্ভবত এটি সংক্ষিপ্ত করার কয়েকটি উপায়, আমাকে কিছু সময় দিন ..

t=[x.split(':')for x in raw_input().split()]
a,b,c=[int(x[0])*60+int(x[1])for x in t]
print["The correct time is "+':'.join(t[[(c+a)%720%(b/2)<1,2][(a+b)%720%(c/2)<1]]),"Look at the sun"][(a-b)%240<1]

আমাকে এটিকে ঠিক করতে সহায়তা করে Sp3000 ধন্যবাদ to

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