मेरे पंखों के आदेश का अनुकूलन करें


17

यह ट्वीट को सूचीबद्ध करता है एक चीनी रेस्तरां के पंखों के लिए संभव आदेश 1 :

पंखों का मेनू

पिज्जा ऑर्डर करते समय मैं आमतौर पर गणना करता हूं कि कौन सा आकार मुझे सबसे अच्छा पिज्जा-मूल्य अनुपात देता है जो एक सरल गणना है। हालाँकि इस रेस्तरां में ऑर्डर की कीमत कम करना इतना आसान काम नहीं है, इसलिए मैं अपने अगले ऑर्डर के लिए तैयार रहना चाहूंगा।

चुनौती

पूर्णांक को 4 बराबर या उससे अधिक देने पर , आपका कार्य एक संभावित ऑर्डर वापस करना है जो मूल्य (समग्रतम सस्ता) और सौदों की संख्या को कम करता है।

उदाहरण

अगर मुझे 100 विंग का ऑर्डर देना था , तो पता चलता है कि सबसे अच्छा सौदा 111.20 $111.20 होगा । हालांकि कई आदेश हैं जो उस राशि को खर्च करेंगे, अर्थात्:

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

चूंकि पहला ऑर्डर कम से कम सौदों ( 2 ) का उपयोग करेगा, इसलिए परिणाम होगा [50,50]।

नियम

  • इनपुट होगा कुछ पूर्णांक n≥4
  • आउटपुट ऑर्डर आकार की एक सूची / सरणी / ... होगी जो कि n और ऑर्डर की कीमत को कम करती है
    • आप सभी संभावित ऑर्डर वापस करने का विकल्प चुन सकते हैं

परीक्षण के मामलों

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: आप डेटा को यहां CSV के रूप में पा सकते हैं ।


3
असली सवाल यह है कि 200 या 100 पंखों का आदेश कौन देता है? ...
— 21

2
@ क्विंट: क्यों, आपको अधिक टेस्टेस की आवश्यकता है?
— 24

1
दो उत्तरों ने आवश्यकताओं की गलत व्याख्या की है, क्योंकि केवल मूल्य को कम करने की आवश्यकता है। चूंकि सौदों की कीमत और संख्या को कम करना अस्पष्ट है (सौदों की निम्नतम संख्या के तरीकों से उपलब्ध सबसे कम कीमत, या सबसे कम कीमत के तरीकों से उपलब्ध सबसे कम सौदे) यह अधिक स्पष्ट होने की आवश्यकता को संपादित करने के लायक होगा
— ट्राइकोप्लेक्स


1
मैं ध्यान दें कि के लिए मूल्य द्वारा दिया जाता है 1n≤23, जबकि25<n<=50 केलिए कीमतोंको25औरn-25में विभाजित किया जा सकता है(n<29 के लिएआप उन्हें अलग से नहीं खरीद सकते हैं लेकिन सूत्र अभी भी उचित मूल्य देता है)। 70,80और125को पहले के मानों से भी प्राप्त किया जा सकता है, इसलिए यदि आप उनका उपयोग कर सकते हैं तो वे सौदों की संख्या कम कर देंगे। अन्य मूल्य असमान हैं। 120⌈(68n3)⌉25<n<=5025n-25n<297080125
— नील

जवाबों:


7

जावास्क्रिप्ट (ईएस 6), 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

31≤n≤50

25

  • n5
  • n=4940+928+219

51≤n≤53

504252×26n=5225+27

54≤n≤128n≠125

50

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

    10010000001000001001001000001(2)=302256705(10)


4

जावास्क्रिप्ट (Node.js) , 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):''

इसे ऑनलाइन आज़माएं!

Arnauld के उत्तर से अनुकूलित

मतभेद

  • 51n≤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})?$)

यदि ०, ६, ९, १२, १५, १ leaves, २५ या २ leaves पंखों को छोड़ दिया जाए तो Purchase० पंखों की खरीद करें।

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 पंखों की खरीद अगर हम कर सकते हैं और अगर हम अभी भी अधिक पंख खरीद सकते हैं। ध्यान दें कि हमारे पास विकल्प के अंत में ये विकल्प हैं ताकि पहले सटीक खरीद का परीक्षण किया जा सके।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.