এনালগ হ'ল অবটুস!


23

একটি অ্যানালগ ঘড়ির 2 হাত রয়েছে: ঘন্টা এবং মিনিট।
এই হাতগুলি সময়ের সাথে সাথে ঘড়ির মুখটি বৃত্তাকার করে। মিনিটের হাতের প্রতিটি সম্পূর্ণ ঘূর্ণন ঘন্টার হাতের ঘূর্ণনের 1/12 তম ফলাফলের ফলাফল। ঘন্টা হাতের 2 টি পূর্ণ ঘূর্ণন পুরো দিনটিকে বোঝায়।

যেহেতু এই হাতগুলি একই কেন্দ্রীয় বিন্দুতে স্থির থাকে এবং সেই বিন্দুর চারদিকে ঘোরানো হয়, আপনি সর্বদা হাতের মধ্যবর্তী কোণটি গণনা করতে পারেন। আসলে যে কোনও সময় 2 টি কোণ রয়েছে; একটি বৃহত্তর এবং একটি ছোট (কখনও কখনও তারা উভয়ই 180 এর সমান হবে তবে এটি গুরুত্বপূর্ণ নয়)

* আমাদের অনুমানের ঘড়িগুলির দ্বিতীয় হাত নেই

কার্য

24 ঘন্টা বিন্যাসে একটি সময় দেওয়া হয়, হাতের মধ্যে ছোট কোণটি ডিগ্রিতে আউটপুট করুন। যদি হাতগুলি প্রত্যেকে বিপরীত হয় (যেমন 6:00, 18:00ইত্যাদি) আউটপুট 180

বিধি

একজন বিভেদক স্ট্রিং পৃথক: -: যেমন ইনপুট নেয়া হতে পারে 6:32, 14.26 - 2 পৃথক মূল্যবোধ, স্ট্রিং বা ints: 6, 32, 14, 26 - 2 মূল্যবোধ, স্ট্রিং বা ints একটি অ্যারে: [6, 32],[14, 26]

বিকল্প হিসাবে আপনি উল্লেখ করতে পারেন যে আপনার উত্তর ইনপুট 2 সংখ্যায় পর্যবসিত প্যাডেড হতে প্রয়োজন (আপনি স্ট্রিং নিতে অভিমানী), অর্থাৎ: 06:32, 06, 32,[06, 32]

বিকল্প হিসাবে আপনি ইনপুট ক্রম বিপরীত হতে পারে ঘন্টা, মিনিট তারপর গ্রহণ অর্থাত: 32:6, 32, 6,[26, 14]

ঘন্টা 0এবং 23(অন্তর্ভুক্ত) মিনিটের মধ্যে একটি পূর্ণসংখ্যার মান হবে 0এবং 59(অন্তর্ভুক্ত) এর মধ্যে একটি পূর্ণসংখ্যা হবে

আপনি ধরে নিতে পারেন যে মিনিটের হাতটি মুখের সাথে বরাবর 6 ডিগ্রি বৃদ্ধি পায় (প্রতিটি মিনিটের মানের জন্য একটি সমান-দুরত্বের অবস্থান)
আপনি ধরে নিতে পারেন যে ঘন্টাটি মুখের সাথে 0.5 ডিগ্রি বর্ধনের দিকে যায় (এক জন্য সমান-ব্যবধানযুক্ত অবস্থান) প্রতি মিনিটের মান প্রতি ঘন্টা মান)

আউটপুট অবশ্যই ডিগ্রিগুলিতে দিতে হবে, রেডিয়ান নয়। আপনি .0সম্পূর্ণ সংখ্যার পিছনে অন্তর্ভুক্ত করতে পারেন

স্কোরিং

এই তাই অল্পসংখ্যক পরিষেবা বাইট প্রতিটি ভাষার মধ্যে জিতেছে!

Testcases

Input: 06:32
Output: 4

Input: 06:30
Output: 15

Input: 18:32
Output: 4

Input: 06:01
Output: 174.5

Input: 00:00
Output: 0

Input: 00:01
Output: 5.5

Input: 12:30
Output: 165

Input: 6:00
Output: 180

Input: 23:59
Output: 5.5


2
@ ফ্রাইআম দ্য এজিগম্যান "আউটপুট অবশ্যই ডিগ্রি দিতে হবে, রেডিয়ান নয়", তাই আমি অনুমান করব না
থিও


4
প্রস্তাবিত পরীক্ষার কেস: 00:59 -> 35.5( এম এর বড় মান সহ একটি ছোট মান কিছু বাস্তবায়ন ব্যর্থ হতে পারে)। hm
আর্নল্ড

1
ধন্যবাদ, @ আর্নল্ড, আপনি আমাকে মাত্র একটি বাইট খরচ করেছেন! : পি
শেগি

উত্তর:


14

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

হিসাবে ইনপুট লাগে (h)(m)

h=>m=>((x=4+h/3-m*.55/9)&2?12-x:x)%4*90

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

কিভাবে?

পরিবর্তে সীমার মধ্যে সরাসরি কাজ করার [0..360] , আমরা একটি অস্থায়ী পরিবর্তনশীল সংজ্ঞায়িত এক্স সীমার মধ্যে [0..4] :

এক্স=|412+ +4মি60×12-4মি60|গেলিক ভাষার4
এক্স=|412-44মি60×12|গেলিক ভাষার4
এক্স=|3-11মি180|গেলিক ভাষার4

ডিগ্রিগুলিতে কোণটি দেওয়া হয়:

সর্বনিম্ন(4-এক্স,এক্স)×90

তবে সূত্রটি জেএস কোডে কিছুটা ভিন্নভাবে প্রয়োগ করা হয়েছে, কারণ আমরা অবশ্যই দীর্ঘ Math.abs()এবং ব্যবহারটি এড়াতে চাই Math.min()

পরম মানটি গণনা করার পরিবর্তে, আমরা একটি ইতিবাচক মানকে বাধ্য করি [0..12]:

এক্স'=4+ +3-11মি180

এবং সর্বনিম্ন গণনা করার পরিবর্তে আমরা নির্ধারণ করি যে আমরা কোন ক্ষেত্রে কেবল কিছুটা পাশ দিয়ে এবং 2 দিয়ে আছি2 কিছুটা - এবং এই কারণেই আমরা প্রথম স্থানে 2 শক্তিতে আবদ্ধ একটি অন্তর্বর্ত বেছে নিয়েছি ।


5

জেলি , 14 12 বাইট

ד<¿‘Iæ%Ø°AH

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

একটি মোনাডিক লিঙ্ক যা সময় দুটি সংখ্যার তালিকা হিসাবে সময় নেয়: ঘন্টা, মিনিট।

2 জোড় বাঁচানোর জন্য @ জোনাথন অ্যালানকে ধন্যবাদ!

ব্যাখ্যা

ד<¿‘        | Multiply hour by by 60 and minute by 11
     I       | Find difference
      æ%Ø°   | Symmetric mod 360 [equivalent to (x + 360) mod 720 - 360]
          A  | Absolute
           H | Half

প্রতিসম মোড? কিভাবে কাজ?
শেজি

@ শেগি খুব স্বাচ্ছন্দ্যে, এটি (-180, 180]সমতুল্য ( সমাপ্ত মডেল 360) এর ব্যবধানে মান দেয় । এই বিল্টিনগুলি ...
নীল

1
অর্ধেক ডিগ্রীতে কাজ ব্যবহারের সঙ্গে দুটি বাইট সংরক্ষণ Ø°জন্য 360এবং “<¿‘জন্য 60,11ד<¿‘Iæ%Ø°AH টিআইও
জোনাথন অ্যালান

আমি 12 টি অক্ষর বলতে যাচ্ছিলাম , তবে এটি উইন্ডোজ -1222 (এবং কয়েকটি অন্যান্য এনকোডিংগুলি) আসলে 12 বাইটে এটিকে এনকোড করতে পারে। নন-এএসসিআইআইয়ের বিভিন্ন চরিত্রের মধ্যে আমি ভাবিনি যে একটি একক নন-ইউনিকোড এনকোডিং সমস্তগুলি কভার করবে তবে স্পষ্টতই আমি সেখানে খুব ভুল।
থানাটোস

@ থানাটোস কোড-গল্ফিংয়ে বিশেষীকৃত কিছু ভাষার 256 টি অক্ষরের জন্য তাদের নিজস্ব কোড পৃষ্ঠা রয়েছে যা তারা প্রতিটি বাইটে 1 টি এনকোড করে। এই কাস্টম কোড পৃষ্ঠা সহ জেলি হ'ল তাদের মধ্যে অন্যতম । 05 এ বি 1 ই, চারকোল, ম্যাথগল্ফ, স্ট্যাক্স ইত্যাদি কাস্টম কোড-পৃষ্ঠা সহ অন্যান্য ভাষা। যদিও বেশিরভাগ উইন্ডোজ -১২২২ এর উপর ভিত্তি করে তৈরি। :)
কেভিন ক্রুইজসেন

4

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

30*i5.5*-t360-|hX<

মিনিটের পরে দু'ঘন্টার ইনপুট গ্রহণ করে। এই উত্তর হিসাবে একই পদ্ধতি ব্যবহার করে

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

ব্যাখ্যা

      % Implicitly grab first input (hours)
30*   % Multiply by 30
i     % Explicitly grab second input (minutes)
5.5*  % Multiply by 5.5
-     % Take the difference
t     % Duplicate the result
360-  % Subtract 360
|     % Take the absolute value
h     % Horizontally concatenate
X<    % Determine the minimum value
      % Implicitly display the result

এটি মধ্যরাতের জন্য ব্যর্থ হবে না, 180পরিবর্তে আউটপুট 0?
শেগি

4

ওল্ফ্রাম ভাষা (গণিত) , 30 29 28 বাইট

5Abs@Mod[#.{6,-1.1},72,-36]&

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

অবারিত সংস্করণ:

Abs[Mod[#.{30,-5.5}, 360, -180]] &

ফাংশনের যুক্তিটিতে # = {h,m}ঘন্টা এবং মিনিট থাকে। এই দৈর্ঘ্য দুটি তালিকা একটি ভেক্টর এবং ডট পণ্য হিসাবে ব্যাখ্যা করা হয় {30,-5.5}হিসাব করা হয়: #.{30,-5.5} = 30*h-5.5*m। তারপরে আমরা Mod[#.{30,-5.5}, 360, -180]বিরতি -180 .. + 180 এ কোণ দিয়ে 360 এর প্রতিসাম্য মডুলাস গণনা করি । Absএর পরম মূল্য গ্রহণ করে।

যেহেতু সমস্ত জড়িত অপারেটরগুলি লিনিয়ার, আমরা সমস্ত উপস্থিত নম্বরগুলি বহুগুণ এবং ভাগ করতে পারি তবে তারা সবচেয়ে সুবিধাজনক। 5এক্সপ্রেশনটির বাইরে কোনও উপাদানকে টেনে নিয়ে এবং সমস্ত সংখ্যাকে 5 দিয়ে ভাগ করে, বাইট-গণনাটি হ্রাস করা হয়।


3

অ্যালকেমিস্ট , 134 বাইট

_->In_h+In_m+720d+360a+f
h->60d
m+11d->
0m+d+a+0r->b
0a+0x->r
d+b+r->r+a
r+0b->
b+0d+0h+0y->5y
b+0d+5y->x
0b+0d+f->Out_x+Out_"."+Out_y

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

ব্যাখ্যা

_->In_h+In_m+720d+360a+f

প্রাথমিক সেটআপ. এর মধ্যে কয়েক ঘন্টা এবং মিনিট ইনপুট করে hএবং m, বর্তমান কোণটি d360 ডিগ্রিতে (720 অর্ধ-ডিগ্রি) সেট করে a, মূল কোণটি গণনা করার জন্য সেট আপ করে এবং আউটপুট পতাকা সেট করে।

h->60d
m+11d->

প্রতি ঘন্টা 30 ডিগ্রি যোগ করে এবং প্রতিটি মিনিট 5.5 ডিগ্রি বিয়োগ করে।

0m+d+a+0r->b
0a+0x->r

যদিও r(রিভার্স) পতাকা সেট না করা হয়, প্রতিটি dঅণু এক সরানো উচিত aকাছে পরমাণু b। এটি "রেসের শর্ত" এড়ানোর জন্য কয়েক মিনিট পরে সমস্ত ব্যবহৃত হয়ে যাওয়ার পরে ঘটে। যখন কোনও aপরমাণু অবশিষ্ট নেই, সেট করুনr এই প্রবাহটি বিপরীতে ।

নোট করুন যে এই দ্বিতীয় নিয়মটি একাধিকবার ট্রিগার করতে পারে এবং এমনকি প্রাথমিক সেটআপ নিয়মের আগে ট্রিগারও করতে পারে। এটি কোনও কিছুর ক্ষতি করে না, সুতরাং এটি প্রতিরোধ করার প্রয়োজন নেই। 0xশর্ত একটি প্রান্ত কেস পরিচালনা: যখন ইনপুট 6:00 থাকে, তখন কোনো হয় aপরমাণু যখন প্রোগ্রাম বন্ধ, কিন্তু আছে xপরমাণুর যদি চূড়ান্ত ফলাফল অন্তত 1 ডিগ্রী।

d+b+r->r+a
r+0b->

বিপরীত: স্বাক্ষরিত কোণটি 180 ডিগ্রির চেয়ে বেশি হলে আউটপুটে কোণ হ্রাস করতে bপরমাণুগুলিকে সরান a। কোণটি "360" এ পৌঁছালে বিপর্যস্ত হওয়া বন্ধ করুন।

b+0d+0h+0y->5y
b+0d+5y->x

সমস্ত ডিগ্রি পরমাণু ব্যবহার করা হয়, আউটপুট কোণ পেতে 2 দ্বারা বিভক্ত।

0b+0d+f->Out_x+Out_"."+Out_y

এটি সম্পন্ন হওয়ার পরে, fপ্রাথমিক সেটআপ থেকে পতাকাটি ব্যবহার করে ঠিক একবার আউটপুট নিন ।


3

পাইথন ৩.৮ (প্রাক রিলিজ) , 45 43 বাইট

-২ বাইট ধন্যবাদ এরিককে

lambda h,m:min(x:=abs(h%12*30-m*5.5),360-x)

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

h%12- ঘন্টা 12-ঘন্টা বিন্যাসে
h%12*30- পুরো ঘন্টা
m/2এ ঘন্টা হাত कोण - ঘন্টা হাত mকয়েক মিনিটে সরানো
h%12*30+m/2- ঘন্টা হিসাবে হাতের বর্তমান অবস্থান
m*6- মিনিটের হাতের কোণ ( 360°/60 = 6°)




2

কাঠকয়লা , 22 বাইট

I↔⁻¹⁸⁰﹪⁻׳⁰⁺⁶N×⁵·⁵N³⁶⁰

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। দুটি পূর্ণসংখ্যা হিসাবে ইনপুট নেয়। ব্যাখ্যা:

             N          First input
           ⁺⁶           Plus literal 6
        ׳⁰             Multiplied by literal 30
       ⁻                Minus
                  N     Second input
              ×⁵·⁵      Multiplied by literal 5.5
      ﹪            ³⁶⁰  Modulo literal 360
  ⁻¹⁸⁰                  Subtracted from literal 180
 ↔                      Absolute value
I                       Cast to string
                        Implicitly print


2

পাইথন 3 , 40 বাইট

lambda h,m:180-abs(180-(h*30-m*5.5)%360)

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

h*30- hমিনিট যখন হয় দুপুর এবং ঘন্টা মধ্যে কোণ 0; যদি ঘন্টাটি 12 এর চেয়ে বেশি বা বৃহত্তর হয় তবে এই কোণটি 360 or এর চেয়ে সমান বা বৃহত্তর হতে পারে
m*6- দুপুর এবং মিনিটের হাতের মধ্যে
m*.5কোণ - ঘন্টার হাত কয়েক mমিনিট পরে পুরো ঘন্টা থেকে এগিয়ে যায় (যেমন: যদি এটি 4:24 হয়, ঘন্টা হাতটি 4 টায় অবস্থিত অবস্থান থেকে 12 ডিগ্রি সামনে এগিয়ে যায়)
h*30-m*5.5- ঘন্টা হাত এবং মিনিটের হাতের মধ্যে দুটি কোণগুলির মধ্যে একটি; জন্য সহগ mহয় 5.5কারণ m*6-m*.5=m*5.5; এটি এখনও উত্তর নয় কারণ এটি 360 ° (যেমন: যদি h,m=13,0) বা 0 than এর চেয়ে কম মান হতে পারে (যেমন: যদিh,m=12,30 )
(h*30-m*5.5)%360- এই মডুলোগুলি এমন কেসগুলিতে বিবেচনা করে যেখানে উপরে গণনা করা মান 0 এবং 360 between এর মধ্যে নয়; এটি এখনও উত্তর নয় কারণ এটি দুটি কোণগুলির পরিপূরক হতে পারে, যদিও আমরা সবচেয়ে সংকীর্ণ চাই
180-abs(180-(h*30-m*5.5)%360)- এটি চূড়ান্ত ফলাফল; সাধারণ নিয়মটি x-abs(x-y)এটির সমতুল্য min(y,x-y), যা সঠিক ফলাফল দেয়



1

পাইথন 3, 58 57 বাইট

-1 / -2 @ শেগি ধন্যবাদ

h,m=eval(input())
x=(30*h-5.5*m)
print(abs(min(x,360-x)))

নিষ্পাপ বাস্তবায়ন, আকারে ইনপুট নেয় [6,32] । কিছু বাইট সম্ভবত বিশেষত শেষ লাইন থেকে শেভ করা যেতে পারে।

পাইথন 2, 52 50 বাইট

h,m=input()
x=(30*h-5.5*m)
print abs(min(x,360-x))

30*h-5.5*mআপনি কয়েক বাইট সংরক্ষণ করা উচিত।
শেগি

1
একটি defস্টাইল ফাংশন কিছু বাইট পাশাপাশি সংরক্ষণ করা উচিত।
নেতিবাচক সাত

@ চ্যালেঞ্জ শব্দটি থেকে নেতিবাচক ধারণা দেখে মনে হয়েছিল এটি স্টিডিন / স্টাডাউট ব্যবহার করা উচিত
থিও

আপনি দ্বিতীয় লাইনে প্রথম বন্ধনী ফেলে দিতে পারেন।
শেগি

সঠিকভাবে কাজ করতে সমাধানগুলিতে আসলে কয়েকটি পরিবর্তন (পাইথন 2) প্রয়োজন। ফলাফলটি 180 এর চেয়ে কম বা সমান হতে হবে এবং 0 এর চেয়ে বড় বা সমান হতে হবে
এরিক দি আউটগলফার




0

> <> , 17 বাইট

b*$6a**-:0)12,-*n

এটি অনলাইন চেষ্টা করুন! (6:32)

স্ট্যাকের উপর h, মি হিসাবে ইনপুট নেয়।

ব্যাখ্যা

b*$6a**-:0)12,-*n
b*                Multiplies m by 11
  $               Swaps m & h
   6a**           Multiplies h by 60
       -          Subtracts m & h (v)
        :0)       Checks if v > 0 (b=0/1)
           12,-   Subtracts .5 from b (-.5/.5)
               *  Multiplies v by b (halve & abs)
                n Outputs result
b*                Errors

0

05 এ বি 1 ই , 16 বাইট

60*+5.5*D(‚360%ß

প্রথম ইনপুট হিসাবে কয়েক মিনিট সময় লাগে minutes

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

মূলত নিম্নলিখিত সূত্রটি প্রয়োগ করে:

টি=(60+ +মি)×5.5
R=মিআমিএন(টিগেলিক ভাষার360,-টিগেলিক ভাষার360)

60*               # Multiply the (implicit) hours-input by 60
   +              # Add it to the (implicit) minutes-input
    5.5*          # Multiply it by 5.5
        D(‚       # Pair it with it's negative
           360%   # Take modulo-360 on both
               ß  # And then pop and push the minimum of the two
                  # (which is output implicitly as result)

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