プログラミングのお題スレ Part22 (831レス)
前次1-
抽出解除 レス栞

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
304
(6): 2024/03/09(土)22:47 ID:v99WCN19(1) AAS
お題

460円 580円 600円 の3種類の商品があります
これらを組み合わせて合計10個買ったら5360円になりました
組み合わせを求めるプログラムを書いてください

ちなみに答えの一つは
・600円×2
・580円×4
・460円×4
だそうです

2chスレ:cigaret
305: 2024/03/09(土)23:59 ID:C74EWG6S(2/2) AAS
>>304
面倒なのでRで全探索
外部リンク:ideone.com
306
(1): 2024/03/10(日)01:20 ID:8NU5B5F+(1) AAS
>>304
面倒なので全て460円を引くと
A=0円 B=120円 C=140円
10個で760円という問題

面倒なのでさらに20で割ると
A=0円 B=6 C=7円
10個で38円という問題

つまり唯一奇数のCは偶数個が確定
Cが6個以上だと42円以上でオーバーしてNG
Cが4個だと28円で残り10円をA,Bで作れないからNG
省3
308: 2024/03/10(日)19:06 ID:qBLPZ6x8(1) AAS
>>304
Rで全探索でなくちゃんと解くと
外部リンク:ideone.com

解が複数ある場合と全くない場合の例として、600円を540円と520円に変更したときの出力も載せた。
311: 2024/03/27(水)23:42 ID:sRZ89+IF(1) AAS
>>304

a = (600, 580, 460)
m = min(a)
h = set()

def buy(b, yen):
if yen < m: return
for i in range(0, len(a)):
v = a[i]
if yen >= v:
b[i] += 1
省7
312: 2024/03/27(水)23:55 ID:qNf/D02g(1) AAS
>>304
Haskell

[(a, b, c) | a <- [0..20], b <- [0..20], c <- [0..20], a * 460 + b * 580 + c * 600 == 5360]

output: [(0,2,7),(4,4,2)]
316: 2024/03/31(日)22:30 ID:4FIGx2uN(1) AAS
>>304
ぶっちゃけ、他の言語の人と同じっぽくないので心配なんだが…。
自分なりにHaskellで全探索じゃないバージョン書いてみた。

Haskell

[(a, b, c) | a <- [0..10], b <- [0..10 - a], c <- [0..10 - (a + b)], a * 460 + b * 580 + c * 600 == 5360, a + b + c == 10]

答えは同じ[(4,4,2)]。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.037s