У меня есть список и значение, как я могу вставить элементы списка в новый список, пока сумма этих элементов не превысит этого значения?SML: Как вставить элементы списка в новый список с условиями?
Вопрос в том, как вернуть вышеупомянутый новый список и первоначальный список без элементов нового списка?
Например, у меня есть список [13,8,7,6,4,2,2,1]
и значение 21
. Итак, я хочу вставить элементы этого списка в новый список, сумма которого равна less than or equal to 21
. в этом примере новый список будет [13,8]
, а 13,8
должен быть удален из первоначального списка.
поэтому окончательный вывод функции должны быть два списка: [13,8]
, [7,6,4,2,2,1]
Я написал этот код, но он имеет некоторые запутанные ошибки:
fun Scheduler (w:Wopt , L:PTList)=
let
val ptl1=[List.hd L]
val TempL=L
val head=List.hd L
in
if ListSum(ptl1) = w
then (ptl1, Delete(L))
else (
if ListSum(ptl1) + head <= w
then Scheduler(Insert(head,ptl1), Delete(TempL))
else (ptl1,Delete(L))
)
end
к примеру у меня есть list [13,8,7,6,4,2,2,1] и значение 21. Итак, я хочу вставить элементы этого списка в новый список, сумма которого меньше или равна 21. в этом примере новый список будет [13,8], а 13,8 должны быть удалены из первоначального списка. поэтому окончательный вывод функции должен состоять из двух списков: [13,8], [7,6,4,2,2,1]. –
Было бы яснее, если бы вы могли включить ваш комментарий как часть вашего вопроса. – afxentios