6

В Haskell дан список элементов, xs, самый простой способ для перебора всех пар перестановок с повторениями является:перебрать все комбинации пар без повторения в Haskell

[(x,y) | x <- xs, y <- xs] 

Я хочу быть в состоянии сделать то же, но только по комбинациям. Если х и у сравнимы, я мог бы сделать

[(x,y) | x <- xs, y <- xs, x > y] 

Но я предпочел бы решение, которое является более общим и более эффективным (я знаю, что asympotitic сложности будет оставаться в квадрате, но мы можем вдвое сократить фактическую сложность выполнения, избегая использование условия фильтрации)

ответ

15

насчет:

[ (x,y) | (x:rest) <- tails xs , y <- rest ] 
Смежные вопросы