Проблемы для программы с логикой размещения элементов в таблице списка, если n последовательных элементов могут быть помPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Проблемы для программы с логикой размещения элементов в таблице списка, если n последовательных элементов могут быть пом

Сообщение Anonymous »

Мне нужно создать программу Python, которая помещает high_priority_order = "Order B" в Schedule_table, следуя следующей логике:
Это означает, что мне нужно добавить 2 часа подряд в столбце «Машина 3» таблицы Schedule_table,
затем добавьте 2 часа подряд в столбец «Машина 2» таблицы Schedule_table,
затем добавьте 3 последовательных часа часов в столбце «Машина 4» таблицы Schedule_table,
а затем добавьте 1 час в столбец «Машина 1» таблицы Schedule_table.
j_column_order = [['Machine 3', 2], ['Machine 2', 2], ['Machine 4', 3], ['Machine 1', 1]]

и другие необходимые данные...
# What should be filled into the cells of the schedule_table
highest_priority_order = "Order B"

# The table where the cells should be filled in the available spaces
schedule_table = [
['Hour', 'Machine 1', 'Machine 2', 'Machine 3', 'Machine 4', 'Deadline'],
[1, 'Order A', None, None, None, None],
[2, 'Order A', None, None, None, None],
[3, 'Order A', None, None, None, None],
[4, None, 'Order A', None, None, None],
[5, None, 'Order A', None, None, None],
[6, None, None, 'Order A', None, None],
[7, None, None, 'Order A', None, None],
[8, None, None, None, 'Order A', None],
[9, None, None, None, None, None],
[10, None, None, None, None, 'Order A'],
[11, None, None, None, None, 'Order B'],
[12, None, None, None, None, None],
[13, None, None, None, None, 'Order C'],
[14, None, None, None, None, 'Order D'],
[15, None, None, None, None, None]
]

Поместите часы в ячейки, где указано «Нет» в соответствующих столбцах машин, указанных в j_column_order, гарантируя, что часы для каждого показания могут быть размещены последовательно в указанный столбец.
schedule_table = [
['Hour', 'Machine 1', 'Machine 2', 'Machine 3', 'Machine 4', 'Deadline'],
[1, 'Order A', None, 'Order B', None, None],
[2, 'Order A', None, 'Order B', None, None],
[3, 'Order A', None, None, None, None],
[4, None, 'Order A', None, None, None],
[5, None, 'Order A', None, None, None],
[6, None, 'Order B', 'Order A', None, None],
[7, None, 'Order B', 'Order A', None, None],
[8, None, None, None, 'Order A', None],
[9, None, None, None, 'Order B', None],
[10, None, None, None, 'Order B', 'Order A'],
[11, None, None, None, 'Order B', 'Order B'],
[12, None, None, None, None, None],
[13, None, None, None, None, 'Order C'],
[14, None, None, None, None, 'Order D'],
[15, None, None, None, None, None]
]

Ниже приведен мой код, но он дает сбой, поскольку не учитывает ограничение, согласно которому рабочее задание не может быть запланировано одновременно на двух или более разных машинах одновременно.
def find_consecutive_slots(table, column, duration):
"""Finds consecutive empty slots in the column of the table."""
slots = []
for row in range(1, len(table)):
if table[row][column] is None:
if len(slots) > 0 and slots[-1] != row - 1:
slots = [] # Reset if not consecutive
slots.append(row)
if len(slots) == duration:
return slots
return None

def assign_order(table, j_column_order, order):
"""Assigns the order to available slots in the table following j_column_order."""
for machine, required_hours in j_column_order:
column = table[0].index(machine) # Find the column of the machine
consecutive_slots = find_consecutive_slots(table, column, required_hours)
if consecutive_slots:
for row in consecutive_slots:
table[row][column] = order

assign_order(schedule_table, j_column_order, highest_priority_order)

for row in schedule_table: print(row)


Подробнее здесь: https://stackoverflow.com/questions/790 ... if-n-succe
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»