翼の順序を最適化する


17

このツイートは、中華料理店1の翼の可能な注文のリストです。

翼メニュー

ピザを注文するとき、私は通常、簡単な計算である最高のピザ価格比を与えるサイズを計算します。しかし、このレストランでの注文の価格を最小化することはそれほど単純な作業ではないため、そこでの次の注文に備えたいと思います。

チャレンジ

4

100$111.20

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

2[50,50]

ルール

  • n4
  • 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つだけで、価格を出力する必要はありません


1:ここで CSVとしてデータを見つけることができます。


3
本当の問題は、誰が200羽、さらには100羽を注文するのでしょうか?...
エリック・ザ・アウトゴルファー

2
@Quintec:なぜ、さらにテストケースが必要なのですか?
24分

1
価格を最小化するだけでよいため、2つの答えが要件を誤って解釈しました。価格やお得な情報の数を最小限に抑えることあいまいな(取引の最低数、または最低価格での方法から利用できる取引の数が最も少ない方法から入手最低価格)であるので、それは価値がより明確にするための要件を編集するだろう
トリコプラックス


1
n23120(68n3)25<n<=5025n25n<297080125

回答:


7

JavaScript(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

JavaScriptの(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の答えから最適化

違い

  • 51≤n≤53は31≤n≤50にマージされます(8バイト保存)
  • ビットマップを書き換えます(3バイト保存)
  • いくつかのロジックを再配置(4 6 7バイト保存)

2

網膜0.8.2160の 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*)$
$.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羽を購入し、さらに多くの翼を購入できる場合。正確な購入が最初にテストされるように、交替の最後にこれらのオプションがあることに注意してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.