@tarp20

Как улучшить данный код?

задача :
иметься 3 вида картонов :
большой - 9 единиц
средний - 6 единиц
маленький -3 единицы .

в зависимости от количества заказа нужно расфасовать по картонам в оптимальный способ
например

601d3ff3a4766719595246.png

мой код
big_box, medium_box, small_box = 9, 6, 3
big_count, medium_count, small_count = 0, 0, 0

order = 50
rest = order
if 12 < rest :
    big_count = rest//big_box
    rest = rest % big_box
    if 1 <= rest <= 3:
        small_count = 1
    elif 4 <= rest <= 6:
        medium_count = 1
    elif 6 < rest < 9:
        big_count += 1
elif 9 < rest < 13:
    medium_count = 2
elif 0 < rest < 10:
    if 1 <= rest <= 3:
        small_count = 1
    elif 4 <= rest <= 6:
        medium_count = 1
    elif 6 < rest < 10:
        big_count += 1


но он мне кажется деревянным , возможно можно его улучшить?
  • Вопрос задан
  • 238 просмотров
Решения вопроса 1
@NicolayChe
В задаче есть логика

import math
order=50
box=[0, 0, 0]
box[2]=box[2]+order//18*2
order%=18
qty_box=[math.ceil(order/3), math.ceil(order/6), math.ceil(order/9)]
min_qty_box=min(qty_box)
index_min_qty_box=qty_box.index(min_qty_box)
free_place=[(min_qty_box*3-order), (min_qty_box*6-order),(min_qty_box*9-order)]
min_free_place=min(free_place[index_min_qty_box:])
box[free_place.index(min_free_place)]+=min_qty_box
print(box)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
profesor08
@profesor08
В задаче нет критериев расфасовки, значит их надо придумать самому. Можешь придумать что угодно, хоть по тупому первый в большую, второй в средний, остальные в мелкие, или еще тупее, все в большой, а остальные на лево.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
07 мар. 2021, в 18:25
35000 руб./за проект
07 мар. 2021, в 18:22
5000 руб./за проект
07 мар. 2021, в 17:45
9000 руб./за проект