আমার ডানার ক্রমটি অপ্টিমাইজ করুন


17

এই টুইটটিতে চাইনিজ রেস্তোরাঁ 1 এর উইংসগুলির জন্য সম্ভাব্য অর্ডারগুলি তালিকাভুক্ত করা হয়েছে :

উইংস মেনু

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

চ্যালেঞ্জ

একটি পূর্ণসংখ্যা বৃহত্তর বা সমান দেওয়া , আপনার কাজটি হ'ল এক সম্ভাব্য ক্রমটি ফেরত দেওয়া যা দাম (সামগ্রিক সস্তার) এবং ব্যবসার সংখ্যা হ্রাস করে।4

উদাহরণ

যদি আমি উইংস অর্ডার করি তবে এটি সর্বাধিক দর ব্যয় হবে । তবে একাধিক অর্ডার রয়েছে যার পরিমাণ সেই পরিমাণ পড়বে, যথা:100$111.20

[50,50],[25,25,50],[25,25,25,25]

যেহেতু প্রথম আদেশটি সর্বনিম্ন পরিমাণে ডিল ব্যবহার করবে ( ) ফলাফল হবে ।2[50,50]

বিধি

  • ইনপুটটি কিছু পূর্ণসংখ্যাn4
  • আউটপুট হ'ল অর্ডার আকারের একটি তালিকা / অ্যারে / ... হবে যা সমষ্টি এবং অর্ডারটির দাম হ্রাস করবে n
    • আপনি সমস্ত সম্ভাব্য অর্ডার ফিরিয়ে দিতে বেছে নিতে পারেন

Testcases

4 -> [4]  (4.55)
23 -> [23]  (26.10)
24 -> [6,18],[9,15],[12,12]  (27.20)
31 -> [6,25]  (34.60)
32 -> [4,28],[6,26],[7,25]  (35.75)
33 -> [4,29],[5,28],[6,27],[7,26],[8,25]  (36.90)
34 -> [6,28],[9,25]  (38.00)
35 -> [35]  (39.15)
125 -> [125]  (139.00)
200 -> [25,50,125]  (222.40)
201 -> [26,50,125]  (223.55)
250 -> [125,125]  (278.00)
251 -> [26,50,50,125]  (279.15)
418 -> [15,28,125,125,125],[18,25,125,125,125]  (465.20)
1001 -> [26,50,50,125,125,125,125,125,125,125]  (1113.15)
12345 -> [15,80,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125],[25,70,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125],[45,50,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125]  (13728.10)

দ্রষ্টব্য: এই টেস্টকেসগুলি দাম সহ সমস্ত সম্ভাব্য আউটপুটগুলির তালিকা করে, আপনার কেবলমাত্র একটি আউটপুট প্রয়োজন এবং আপনাকে দাম আউটপুট দেওয়ার প্রয়োজন হয় না !


1: আপনি এখানে সিএসভি হিসাবে ডেটা খুঁজে পেতে পারেন ।


3
আসল প্রশ্নটি হচ্ছে, কে 200 বা 100 টি উইংস অর্ডার করে? ...
এরিক দ্য আউটগল্ফার ২

2
@ কুইন্টেক: কেন, আপনার আরও টেস্টকেস লাগবে?
ბიმო

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


1
আমি লক্ষ্য করেছি যে জন্য মূল্য 1 দিয়ে দেওয়া হয়েছেn23120(68n3)25<n<=5025n25n<297080125

উত্তর:


7

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

স্থানটিকে পৃথক পৃথক স্ট্রিং হিসাবে অর্ডার প্রদান করে।

f=n=>n?(x=n>128|n==125?125:n>50?n<54?25:n-70?302256705>>n-80&n>79&n<109?80:50:n:n-24&&n-49?n<31|n%5<1?n:25:9)+' '+f(n-x):''

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

কিভাবে?

n

n>128n=125

125n129n125

125<n<1294

n<31

n<31n=242×1218+615+99

31n50

25

  • n5
  • n=4940+928+219

51n53

504252×26n=5225+27

54n128n125

50

  • n=70
  • n{80,86,89,92,98,105,108}8080108

    10010000001000001001001000001(2)=302256705(10)


4

জাভাস্ক্রিপ্ট (নোড.জেএস) , 112 108 106 105 বাইট

f=n=>n?(x=n>128|n==125?125:n>53&n!=70?1629>>n/3+6&n<99==n%3/2?80:50:~n%25?n>30&&n%5?25:n:9)+' '+f(n-x):''

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

আরনাউল্ডের উত্তর থেকে অপ্টিমাইজড

পার্থক্য

  • 51≤n≤53 31≤n≤50 (8 বাইট সংরক্ষণ) মধ্যে একীভূত করা হয়েছে
  • বিটম্যাপটি পুনরায় লিখুন (3 বাইট সংরক্ষণ করুন)
  • কিছু যুক্তি পুনরায় সাজান ( 4 6 7 বাইট সংরক্ষিত)

2

রেটিনা 0.8.2 , 160 155 বাইট

.+
$*
{`\b(1{80}(?=((111){2,6}|1{25}|1{28})?$)|1{70}$|1{9}(?=.{15}$|.{40}$)|(1{5}){6,9}$|1{26,29}$|1{4,23}$|1{125}|1{50}|1{25})+$
$1,$&
(1+),\1(1*)$
$.1,$2

nn

.+
$*

অ্যানারিতে রূপান্তর করুন।

{`

আর কোনও ডিল কেনা না যাওয়া পর্যন্ত পুনরাবৃত্তি করুন।

{`\b(1{80}(?=((111){2,6}|1{25}|1{28})?$)|1{70}$|1{9}(?=.{15}$|.{40}$)|(1{5}){6,9}$|1{26,29}$|1{4,23}$|1{125}|1{50}|1{25})+$
$1,$&

ডিল ক্রয়ের একটি উপায় সন্ধান করুন এবং ডিলগুলির মধ্যে একটি ক্যাপচার এবং নকল করুন।

(1+),\1(1*)$
$.1,$2

n

ডিলগুলি নিম্নলিখিত শর্তে ক্রয় করা হয়:

1{80}(?=((111){2,6}|1{25}|1{28})?$)

যদি 0, 6, 9, 12, 15, 18, 25 বা 28 উইংস ছেড়ে যায় তবে 80 টি উইং কিনুন।

1{70}$

আমাদের যদি প্রয়োজন হয় তবে 70 টি উইং কিনুন।

1{9}(?=.{15}$|.{40}$)

যদি 15 বা 40 টি ডানা ছেড়ে যায় তবে 9 ডানা কিনুন।

(1{5}){6,9}$

আমাদের যদি প্রয়োজন হয় তবে 30, 35, 40 বা 45 টি উইং কিনুন।

1{26,29}$

আমাদের যদি প্রয়োজন হয় তবে 26, 27, 28 বা 29 টি উইং কিনুন।

1{4,23}$

আমাদের যদি প্রয়োজন হয় তবে 4 থেকে 23 টি উইং কিনুন।

1{125}|1{50}|1{25}

আমরা পারলে 125 এবং 50 বা 25 টি উইং কিনুন এবং আমরা এখনও আরও ডানা কিনতে পারি কিনা if নোট করুন যে বিকল্পগুলির শেষে আমাদের এই বিকল্পগুলি রয়েছে যাতে সঠিক ক্রয়গুলি প্রথমে পরীক্ষা করা হয়।

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