আমার মাইক্রোওয়েভ ওভেন প্রোগ্রাম [বন্ধ]


12

আমি খুব অলস তাই আমি সর্বদা সম্ভব সর্বনিম্নতম বোতাম টিপে আমার মাইক্রোওয়েভ প্রোগ্রাম করার চেষ্টা করি । আমার মাইক্রোওয়েভে নিম্নলিখিত বোতাম রয়েছে:

  • একটি "মিনিট প্লাস" বোতাম যা কেবলমাত্র প্রথমে চাপতে পারে এবং "সূচনা" বোঝায়। এটি একাধিক মিনিটের জন্য একাধিকবার চাপতে পারে তবে এটি ম্যানুয়ালি প্রবেশের সময়টিতে এক মিনিট যোগ করবে নাআউটপুট+
  • 0-9 বোতাম একটি সেট। সময় এন্ট্রি এমএমএসএস (অর্থাত "130" মানে 1 মিনিট 30 সেকেন্ড)। সেকেন্ডগুলি 0..99 হতে পারে। সুতরাং "130" এবং "90" সমতুল্য এন্ট্রি। একথাও ঠিক যে প্রতি মিনিটে 60 সেকেন্ড এমনকি যদি এন্ট্রির সেকেন্ড অংশ 59. অতিক্রম আউটপুট 0..9
  • একটি "শুরু" বোতাম যা মাইক্রোওয়েভ শুরু করার জন্য টিপতে হবে যদি সময়টি ম্যানুয়ালি প্রবেশ করানো হয়। আউটপুটS

আমার খাদ্য প্যাকেজগুলি এমএম: এসএসে সময় নির্দিষ্ট করে এবং তাই প্রোগ্রামটিকে অবশ্যই এই ইনপুটটি গ্রহণ করতে হবে।

উদাহরণ

  • 1:00 হ'ল +(মনে রাখবেন "মিনিট প্লাস" সূচিত করে)
  • 1:01 হ'ল 61S(সেকেন্ডগুলি 59 ছাড়িয়ে যেতে পারে তবে "মিনিট প্লাস" অঙ্কের সাথে একত্রে কাজ করে না - আমি মনে করি এটি আমার মাইক্রোওয়েভের ডিজাইনের ত্রুটি)
  • 9:00 হয় 900S(এর চেয়ে কম +++++++++)

6
উত্তরগুলি কি আপনার রাতের খাবারের সাথে যাচাই করা হবে?
আরডনিউ

1
এছাড়াও যা অগ্রাধিকার লাগে: 400Sবা ++++?
আরডনিউ

1
@ অর্ডনিউ: আমার ধারণা টাইব্রেক হওয়াটা ন্যূনতম আঙুলের চলাচল হওয়া উচিত, সুতরাং এটি ++++জিতবে। :)
বেন জ্যাকসন

আঙুলের নড়াচড়া? এর 888Sচেয়েও খাটো 928S, তবে 900Sখাটো 860S? আমার আপনার বোতামগুলির যথাযথ জ্যামিতি এবং তাদের প্রতিটি অবস্থানের দরকার আছে।
২৪

4
যদি আমাকে 1:59 এর জন্য আমার "পেডেন্টস খাবারের জন্য" মাইক্রোওয়েভ করতে হয় তবে আমি ++ টিপব (1:59 অপেক্ষা করুন) এবং তারপরে শেষের এক সেকেন্ড আগে "বাতিল" চাপুন। আপনার কাছে একটি "বাতিল" বোতাম রয়েছে এবং ধরে নিয়ে টাইমারকে ঘুরে দেখাই একটি সস্তা প্রক্রিয়া বলে মনে করে তিনটি বোতাম টিপুন। সম্ভবত আপনি পরবর্তী খাবারের জন্য এই বিকল্পটি বিবেচনা করতে পারেন! (বা পরবর্তী চ্যালেঞ্জের জন্য)
জনো

উত্তর:


3

APL

এপিএল একটি খারাপ খ্যাতি আছে যে এটি অপঠনযোগ্য, এটি সম্পূর্ণরূপে যদি এটি গল্ফ না করা হয় না।

নিয়ম:

  • পুরো মিনিট <= 4 ++++, +++ এবং ++++ পান
  • 960-999 1000-1039 এর উপরে পছন্দ করা হয়। 9960-9999 ইত্যাদি 10000-10039 এর উপরে পছন্দ করা হয় ইত্যাদি
  • সময়টি যদি আবার এমনভাবে লেখা যায় যে সেকেন্ডগুলি 66, 77, 88, বা 99 হয় তবে এটি করা হয়। (এটি কখনও খারাপ সমাধান দেয় না এবং সাধারণত একটি ভাল সমাধান দেয়, যেমন 928 এর পরিবর্তে 888))
∇ মাইক্রোওয়েভ; সময়; সেকেন্ড; মিনিট; এফএমটি; ⎕ এমএল

 ⎕ML ← 3

 ⎕ the 'সময় প্রবেশ করুন (এম +: এস)'
 সময় ← ⍞
 মিনিট সেকেন্ড time ⍎¨ (সময় ≠ ':') সময়

Minute 'মিনিট প্লাস' কেবল পুরো মিনিট ≤ 4 এ ব্যবহার করা যেতে পারে
 : যদি (সেকেন্ড = 0) ∧ (মিনিট 4)
     ⎕ ← mins⍴ +
     : ফিরে
 :যদি শেষ
Possible যদি সম্ভব হয় তবে সেকেন্ড> 60 ব্যবহার করে একটি কী চাপুন save
যদি মিনিট দশের একটি শক্তি হয় is
 : যদি (মিনিট> 0)
     : যদি ((⌈10⍟mins) = (⌊10⍟mins)) ∧ (সেকেন্ড <40)
         ⎕ ← ('BI2'⎕FMT মিনিট -1), (⎕FMT সেকেন্ড + 60),' এস '
         : ফিরে
     :যদি শেষ
 :যদি শেষ
Finger 'আঙুলের চলাচল' প্রয়োজনীয়তার জন্য আমরা যতগুলি চাই
Yp কী-চাপগুলি যতটা সম্ভব একই কী হতে পারে।
88 সুতরাং 888 এস আইপিভি 928 এস।
 : যদি সেকেন্ড∊∊ 77 77 88 99-60
     ⎕ ← ('BI2'⎕FMT মিনিট -1), (⎕FMT সেকেন্ড + 60),' এস '
     : ফিরে
 :যদি শেষ
⍝ অন্যথায়, কেবল আউটপুট এমএমএসএস, এর চেয়ে ভাল বিকল্প আর ছিল না।
 : যদি মিনিট> 0
    শীর্ষস্থানীয় শূন্যের সাথে আউটপুট সেকেন্ড
     ⎕ ← ('BI2'⎕FMT মিনিট), (' G⊂99⊃'⎕FMT সেকেন্ড), 'এস'
 : অন্য
    Output কেবলমাত্র আউটপুট সেকেন্ড, শীর্ষস্থানীয় শূন্যের সাথে নয়
     ⎕ ← ('BI2'⎕FMT সেকেন্ড),' এস '
 :যদি শেষ
∇

আমি কোনও বিজয়ী মানদণ্ড নির্দিষ্ট করে নি, তাই আমি এপিএল সম্পর্কে আমাকে সবচেয়ে বেশি শিক্ষা দেয় এমন একটিটিকে আমি প্রত্যাবর্তন করে বেছে নেব।
বেন জ্যাকসন

@ বেনজ্যাকসন চ্যালেঞ্জগুলির একটি উদ্দেশ্যমূলক বিজয়ী মানদণ্ড প্রয়োজন। আপনার ব্যবহৃত [কোড-চ্যালেঞ্জ] ট্যাগের বিবরণ দেখুন।
mbomb007

4

জাভাস্ক্রিপ্ট

var x = /(\d+):(\d\d)/.exec('<time here>');
x[1] === '0' ? +x[2] + 'S' :
x[1] < 4 && x[2] === '00' ? (
    x[1] === '1' ? '+' :
    x[1] === '2' ? '++' : '+++') :
x[2] < 40 ?
    (x[1] - 1 ? x[1] - 1 : '') + '' + (6 + +x[2][0]) + x[2][1] + 'S' :
x[1] + x[2] + 'S'

3

পার্ল

প্রয়োজনীয়তা পূরণ করে, তবে আমি কীভাবে বোতামগুলিতে প্রবেশ করব তা নয় (যেমন "860 এস" বনাম "900S") হ'ল একটি বিশেষ কেস হিসাবে ঠিক 60 সেকেন্ড

use strict;
use warnings;

sub cook
{
  my ($mins, $secs) = @_;

  my $plus = $secs =~ /00/ ? $mins : undef;

  my $secs_total = $mins * 60 + $secs;
  my $mins_total = 0;

  while ($secs_total > 99)
  {
    ++$mins_total;
    $secs_total -= 60;
  }

  $plus = "+" x $plus if defined $plus;

  my $nums = "";
  my $even = ($mins_total > 0 and $secs_total == 60);

  $secs_total *= not $even;
  $mins_total += $even;

  if ($mins_total > 0)
  {
    $nums = sprintf "%s%02dS", $mins_total, $secs_total;
  }
  else
  {
    $nums = sprintf "%2dS", $secs_total;
  }

  return ($nums, $plus)
    [defined $plus and length $plus < length $nums];
}

die "usage:$/\tperl $0 <MINUTES>:<SECONDS>$/"
  unless @ARGV > 0 and shift =~ /([0-9]{1,2}):([0-9]{1,2})/;

print cook($1, $2), $/;

আউটপুট

andrew@gidget:~$ perl mic.pl 9:00
900S
andrew@gidget:~$ perl mic.pl 1:00
+
andrew@gidget:~$ perl mic.pl 1:01
61S
andrew@gidget:~$ perl mic.pl 1:30
90S
andrew@gidget:~$ perl mic.pl 0:07
 7S
andrew@gidget:~$ perl mic.pl 4:00
400S

1

চুনি

#Build a string for the microwave
def build_result(minutes, seconds)
  duration = minutes * 60 + seconds  
  if duration < 99
    result = "%iS" % [ duration]    #shortcut '90S' instead '130S'
  else
    result = "%i%02iS" % [ minutes, seconds]
  end  
  result
end

#Call microwave optimizer
def microwave( input )
  minutes  = input.split(/:/).first.to_i 
  seconds = input.split(/:/).last.to_i

  #build result
  result = build_result(minutes, seconds)
  #try a shorter result, make 999S out of '10:39':
  if seconds < 40 and minutes > 0
    result2 = build_result(minutes - 1, seconds + 60)   #try a 
    result = ( result.size <= result2.size ? result : result2 )
  end

  #Check if a version with only '+' is shorter
  if seconds == 0 and minutes <= result.size
    result = '+' * minutes
  end
  result
end

#Test if called with an argument
if ARGV.empty?
  require 'test/unit'   #Exceute a test
  class MicrowaveTest < Test::Unit::TestCase
    def test_007
      assert_equal('7S', microwave('0:07'))
    end  
    def test_100
      assert_equal('+', microwave('1:00'))
    end
    def test_101
      assert_equal('61S', microwave('1:01'))
    end  
    def test_130
      assert_equal('90S', microwave('1:30'))
    end  
    def test_400
      #~ assert_equal('400S', microwave('4:00'))
      assert_equal('++++', microwave('4:00'))
    end  
    def test_500
      assert_equal('500S', microwave('5:00'))
    end  
    def test_900
      assert_equal('900S', microwave('9:00'))
    end 
    def test_1000
      #~ assert_equal('1000S', microwave('10:00'))
      assert_equal('960S', microwave('10:00'))
    end 
    def test_1015
      #~ assert_equal('1015S', microwave('10:15'))
      assert_equal('975S', microwave('10:15'))
    end 
    def test_1039
      #~ assert_equal('1039S', microwave('10:39'))
      assert_equal('999S', microwave('10:39'))
    end 
  end
else  #started via shell, evaluate input
  puts microwave(ARGV.first)
end

মন্তব্য:

  • এটি দিয়ে শুরু করুন ruby program-my-microwave-oven.rbএবং একটি ইউনিট পরীক্ষা মূল্যায়ন করা হয়।
  • এটি দিয়ে শুরু করুন ruby program-my-microwave-oven.rb 10:00এবং এটি লেখেন960S

বিধি সম্পর্কে কিছু মন্তব্য (এবং আমার ব্যাখ্যা):

  • জন্য সবচেয়ে কম 10:00হয় 960S(9 মিনিট এবং 60 সেকেন্ড -> 10 মিনিট)।
  • সবচেয়ে সংক্ষিপ্ততমটি 10:39হল 999S(9 মিনিট এবং 99 সেকেন্ড -> 10 মিনিট এবং 39 সেকেন্ড)।
  • জন্য 4:00এটা পছন্দ ++++(কম আঙুল আন্দোলন)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.