2016-12-13 7 views
0

У меня есть список A := [3,1,7,2,4,9] в Maple.Сумма минимальных значений в Maple

Как я могу получить минимальные значения n?

мне нужно суммировать n минимальные значения, так что я думаю, я должен использовать что-то вроде

n := 3: 
A := [3, 1, 7, 2, 4, 9]: 
add([ seq(min(A), i=1..n) ]); 

, но это будет просто просуммировать 1 + 1 + 1, так как минимальное значение равно 1 каждый раз. Мне нужно удалить минимальное значение, когда оно впервые произошло.

ответ

1

Простой подход заключается в первом сортировке A.

restart; 

A := [3,1,7,2,4,9]: 
n := 3: 

B := sort(A); 
         B := [1, 2, 3, 4, 7, 9] 

add(B[i], i=1..n); 
            6 

Что вы хотите, если какое-то значение происходит более одного раза?

[отредактировано] Вопрос о том, как 0 может быть удален из списка. Вот несколько способов.

restart; 

A := [3,1,0,7,2,0,4,0,9]: 

remove(x->x=0, A); 

        [3, 1, 7, 2, 4, 9] 

remove(type, A, identical(0)); 

        [3, 1, 7, 2, 4, 9] 

map(x->`if`(x=0,NULL,x), A); 

        [3, 1, 7, 2, 4, 9] 

Кстати, вы не уточнили, что вы хотели сделать, когда ненулевые значения происходят более одного раза.

+0

Будет работать, но можно ли удалить 0 из списка перед сортировкой? Я попытался 'remove (0, A)', но он не работает – Jamgreen