Entry 874

Permutations

   

Submitted by Tonal on June 26, 2008 at 1:24 p.m.
Language: Haskell. Code size: 507 bytes.

import List

-- 1) Генератор перестановок
perms [] = [[]]
perms xs = [x : ps | x <- xs , ps <- perms ( xs\\[x])]

-- 2) Проверка является ли список x перестановкой списка xs
is_perm x xs = elem x (perms xs)

-- 3) Фильтровать перестановки списка xs по предикату p
only_need p xs = filter p (perms xs)

-- 3.1) Подходит ли заданный список под шаблон [_, _, 3]
is_patrn [_, _, 3] = True
is_patrn xs = False

-- Тесты
perms [1, 2, 3]
is_perm [1, 3, 2] [1, 2, 3]
only_need is_patrn  [1, 2, 3]

This snippet took 0.01 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).