কাজের সময়সীমা পরীক্ষা করুন


16

ভূমিকা

এখানে জার্মানিতে কাজের সময় সম্পর্কে রায় দেওয়া খুব কঠোর। আপনি যদি দিনে 6 বা ততোধিক ঘন্টা কাজ করেন তবে আপনাকে কমপক্ষে 30 মিনিটের বিরতি নিতে হবে। আপনি যদি 9 বা তার বেশি ঘন্টা কাজ করেন তবে আপনার 45 মিনিটের বিরতি নেওয়া উচিত। আপনি যদি 6 ঘন্টােরও কম কাজ করেন তবে আপনাকে কোনও বিরতি নিতে হবে না।

অবশ্যই আপনি এই বিরতিগুলি বিভক্ত করতে পারেন তবে প্রতিটি অংশ গণনা করতে কমপক্ষে 15 মিনিট দীর্ঘ হতে হবে।

চ্যালেঞ্জ

এই চ্যালেঞ্জটিতে আপনি কাজের সময়কালগুলির একটি তালিকা পাবেন এবং নিম্নলিখিত বিধিগুলি ব্যবহার করে আপনার যথেষ্ট বিরতি নেওয়া হয়েছে কিনা তা পরীক্ষা করে দেখতে হবে:

যাক wঘন্টার মধ্যে কাজ সময় হতে:

w < 6         -> No breaks needed
6 <= w < 9    -> 30 minute break needed
w >= 9        -> 45 minute break needed

অতিরিক্তভাবে, প্রতিটি বিরতি কমপক্ষে 15 মিনিট দীর্ঘ হতে হবে। এছাড়াও আপনি সর্বদা প্রয়োজনের চেয়ে বেশি বিরতি নিতে পারেন। এগুলি সমস্ত "কমপক্ষে" মান।

ইনপুট

আপনার ইনপুটটি কাজের সময়কালের একটি তালিকা হবে। সঠিক ফর্ম্যাটটি আপনার উপর নির্ভর করে তবে এতে কেবল সময়ের মানগুলি সময় এবং মিনিট হিসাবে থাকতে হবে।

উদাহরণ:

এখানে ফর্ম্যাটটি টিপলগুলির একটি তালিকা রয়েছে যখন প্রতিটি টিপল একটি কাজের সময়কে উপস্থাপন করে। একটি টুপলে প্রথম উপাদানটি শুরু সময় হবে, দ্বিতীয়টি শেষ সময় হবে।

[("07:00","12:00"),("12:30","15:30"),("15:45","17:15")]

এটি 9.5 ঘন্টা মোট কাজের সময় এবং মোট 45 মিনিটের বিরতি সময় হিসাবে ফলাফল।

মনে রাখবেন যে সেই কার্যকালীন সময়গুলিকে বিরতি দিয়ে আলাদা করতে হবে না। কার্যকালীন সময়ও থাকতে পারে যা একে অপরকে অনুসরণ করে (উদাহরণস্বরূপ পরীক্ষার কেসগুলি দেখুন)।

এছাড়াও নোট করুন বিরতি কাজের সময় গণনা করা হয় না। এগুলি দুটি পৃথক মান।

আপনি ধরে নিতে পারেন যে কাজের সময়সীমা অর্ডার করা হয়েছে।

আউটপুট

এই ইনপুটটি দেওয়া হয়েছে, পর্যাপ্ত বিরতি নেওয়া হলে একটি সত্যবাদী মান আউটপুট দেয় এবং না হলে একটি মিথ্যা মান।

বিধি

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

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

উপরের উদাহরণের মতো একই ইনপুট ফর্ম্যাট।

[("07:00", "12:00"), ("12:30", "15:30"), ("15:45", "17:15")] -> সত্য // 9: 30 ঘন্টা কাজ, 45 মিনিটের বিরতি -> ঠিক আছে
[("07:20", "07:45"), ("07:59", "11:30"), ("11:55", "15:00")] -> মিথ্যা // 7: 01 ঘন্টা কাজ, 39 মিনিটের বিরতি, তবে প্রথম বিরতি গণনা হয় না কারণ <15 মিনিট
[("06:00", "09:00"), ("09:00", "11:50")] -> সত্য // শুধুমাত্র 5: 50 ঘন্টা কাজ, তাই বিরতির প্রয়োজন নেই
[("07:30", "12:00"), ("12:30", "16:00")] -> সত্য // 8 ঘন্টা কাজ, 30 মিনিটের বিরতি -> ঠিক আছে
[("08:00", "12:30"), ("13:05", "17:45")] -> মিথ্যা // 9: 10 ঘন্টা কাজ, প্রয়োজনীয় 45 এর পরিবর্তে 35 মিনিটের বিরতি
[("08:00", "14:00")] -> মিথ্যা // h ঘন্টা কাজ, বিরতি নেই, তবে 30 মিনিটের প্রয়োজন


শুভ কোডিং!

উত্তর:


1

পাইথ, 56 52 বাইট

La.*bgsm*ydgyd15cPt_Jmid60Q2@[0030 45)hS,/syRcJ2C\´3

[[hh,mm], [hh,mm], ...]কোনও নেতৃস্থানীয় 0গুলি ছাড়াই ফর্মটিতে ইনপুট নেয়

ব্যাখ্যা:

La.*bgsm*ydgyd15cPt_Jmid60Q2@[0030 45)hS,/syRcJ2C\´3

La.*b                                                - def y(b): return absdiff(*b)

                    Jmid60Q                          - Unpack the input to mins and assign to J
                    J                                - autoassign J = V
                     m    Q                          - [V for d in Q]
                      id60                           - conv_base(V, 60)

      sm*ydgyd15cPt_J      2                         - Get the total break
                   _J                                - reverse(J)
                 Pt                                  - ^[1:-1]
                c          2                         - chop(2, ^)
                                                     -
       m                                             - [V for d in ^]
            yd                                       - y(d)
           g  15                                     - >= 15
         yd                                          - y(d)
        *                                            - y(d) * (y(d)>=15)
                                                     -
      s                                              - sum(^)

                            @[0030 45)hS,/syRcJ2C\´3 - Get the break required
                                             cJ2     - chop(J, 2)
                                           yR        - map(y, ^)
                                          s          - sum(^)
                                                     - Now have the total time worked in mins
                                         /      C\´  - ^/ord("`")
                                                     - (^/180)
                                                     - Now have the time worked in 3 hour intervals
                                      hS,          3 - sorted([^, 3])[0]
                                                     - (min(^, 3))
                                                     - Now have hours worked in 3 hour intervals capped at 9 hours
                            @[0030 45)               - [0,0,30,45][^]
                                                     - Get the break required for that time

     g                                               - break >= break required

এখানে চেষ্টা করুন

বা সমস্ত পরীক্ষার কেস এখানে চেষ্টা করে দেখুন


5

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

m=>(k=t=0,m.map(l=>(a=l[0]*60+l[1],k+=t?a-b<15?0:a-b:0,b=l[2]*60+l[3],t+=b-a)),t/=60,t<6||k>44||t<9&&k>29)

অ্যারেগুলির একটি অ্যারে নেয়। প্রতিটি অভ্যন্তরীণ অ্যারে প্রতিটি সময়কালের জন্য যথাক্রমে শুরুর ঘন্টা এবং মিনিট এবং শেষ ঘন্টা এবং মিনিট থাকে।


3

পাইথন 3, 135

ডিএসএমকে 3 টি বাইট সংরক্ষণ করা হয়েছে।

এটি কিছু সময়ের মধ্যে আমার গণিত সমাধানগুলির মধ্যে একটি।

def f(l):
 h=r=e=0
 for(a,b)in l:a+=a%1*2/3;b+=b%1*2/3;h+=b-a;r-=(e-a)*(e and(a-e)>.24);e=b
 return(h<6)|(6<=h<9and.5<=r)|(h>9and.74<r)

এখানে আমার পরীক্ষার কেসগুলি রয়েছে এটি এটিও দেখায় যে আমি কীভাবে ফাংশনটি ডাকা হবে আশা করি।

assert f([(07.00, 12.00), (12.30, 15.30), (15.45, 17.15)])
assert not f([(07.20, 07.45), (07.59, 11.30), (11.55, 15.00)])
assert f([(06.00, 09.00), (09.00, 11.50)])
assert f([(07.30, 12.00), (12.30, 16.00)])
assert not f([(08.00, 12.30), (13.05, 17.45)])
assert not f([(08.00, 14.00)])
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.