- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
//присваиваем массиву значения
for ($i=0; $i<7; $i++)
{
$rand[$i]=rand(1,52);
}
//проверяем 50 раз что бы исключить повторы
for ($i=0; $i<50; $i++)
{
//проверяем $rand[0] на совпадения
if ($rand[0]==$rand[1])
{
$rand[0]=rand(1,52);
}
else
{
if ($rand[0]==$rand[2])
{
$rand[0]=rand(1,52);
}
else
{
if ($rand[0]==$rand[3])
{
$rand[0]=rand(1,52);
}
else
{
if ($rand[0]==$rand[4])
{
$rand[0]=rand(1,52);
}
else
{
if ($rand[0]==$rand[5])
{
$rand[0]=rand(1,52);
}
else
{
if ($rand[0]==$rand[6])
{
$rand[0]=rand(1,52);
}
}
}
}
}
}
//проверяем $rand[1] на совпадения
if ($rand[1]==$rand[0])
{
$rand[1]=rand(1,52);
}
else
{
if ($rand[1]==$rand[2])
{
$rand[1]=rand(1,52);
}
else
{
if ($rand[1]==$rand[3])
{
$rand[1]=rand(1,52);
}
else
{
if ($rand[1]==$rand[4])
{
$rand[1]=rand(1,52);
}
else
{
if ($rand[1]==$rand[5])
{
$rand[1]=rand(1,52);
}
else
{
if ($rand[1]==$rand[6])
{
$rand[1]=rand(1,52);
}
}
}
}
}
}
Vasiliy 07.02.2012 18:52 # +1
nobody 07.02.2012 19:06 # +4
guest 07.02.2012 20:45 # −3
TheHamstertamer 07.02.2012 21:56 # +4
unu-foja 08.02.2012 07:33 # −1
> data Tree a = Leaf a | Node !Int (Tree a) (Tree a) deriving Show
>
> -- Convert a sequence (e1...en) to a complete binary tree
> build_tree = grow_level . (map Leaf)
> where
> grow_level [node] = node
> grow_level l = grow_level $ inner l
>
> inner [] = []
> inner x@[_] = x
> inner (e1:e2:rest) = (join e1 e2) : inner rest
>
> join l@(Leaf _) r@(Leaf _) = Node 2 l r
> join l@(Node ct _ _) r@(Leaf _) = Node (ct+1) l r
> join l@(Leaf _) r@(Node ct _ _) = Node (ct+1) l r
> join l@(Node ctl _ _) r@(Node ctr _ _) = Node (ctl+ctr) l r
>
> shuffle1 :: [a] -> [Int] -> [a]
> shuffle1 elements rseq = shuffle1' (build_tree elements) rseq
> where
> shuffle1' (Leaf e) [] = [e]
> shuffle1' tree (ri:r_others) = extract_tree ri tree
> (\tree -> shuffle1' tree r_others)
>
> extract_tree 0 (Node _ (Leaf e) r) k = e:k r
> extract_tree 1 (Node 2 l@Leaf{} (Leaf r)) k = r:k l
> extract_tree n (Node c l@Leaf{} r) k =
> extract_tree (n-1) r (\new_r -> k $ Node (c-1) l new_r)
> extract_tree n (Node n1 l (Leaf e)) k | n+1 == n1 = e:k l
>
> extract_tree n (Node c l@(Node cl _ _) r) k
> | n < cl = extract_tree n l (\new_l -> k $ Node (c-1) new_l r)
> | otherwise = extract_tree (n-cl) r (\new_r -> k $ Node (c-1) l new_r)
Коменты не влезли. Пишут, что у них проще, но в source разбросано по многим ф-ям (в том числе из Seq), так что не факт, и не видно картины в целом... Подумаешь, что чуть сложнее (n * log n), зато чистый хаскель, без всяких непартийных массивов.
TheHamstertamer 08.02.2012 15:24 # 0
unu-foja 09.02.2012 17:16 # +2
Хаскель хорош, но ведь это не серебрянная пуля...
roman-kashitsyn 08.02.2012 15:32 # 0
unu-foja 09.02.2012 17:19 # +1
roman-kashitsyn 09.02.2012 19:18 # 0
unu-foja 10.02.2012 00:00 # +1
Сам алгоритм интересен, немного спорен подход.
roman-kashitsyn 10.02.2012 10:31 # 0
А использовать в хаскеле императивный код вам никто не запрещает. Многие хаскелисты считают haskell лучшим из императивных языков :)
bugmenot 10.02.2012 14:44 # +3
Непоказательно. Дельфилюбы тоже самое о своей борландяшечке думают.
roman-kashitsyn 10.02.2012 16:07 # 0
> считают haskell лучшим из императивных языков
всяк сверчок хвалит свой шесток
SmackMyBitchUp 11.02.2012 14:42 # +1
а как в бане собираются
шесточками меряются
mkusher 07.02.2012 22:30 # +2
istem 07.02.2012 23:18 # +1
Steve_Brown 08.02.2012 11:43 # +3
if ($rand[0]==$rand[1] || $rand[0]==$rand[2] || ... || $rand[1]==$rand[0] || ... || $rand[6]==$rand[5])
throw new Exception("Worning: FATALE ERROR!!!");
govnokod-observer 08.02.2012 15:14 # +1
TarasB 08.02.2012 13:10 # +3
Xom94ok 08.02.2012 14:53 # 0
Xom94ok 08.02.2012 14:51 # 0
arrjj 08.02.2012 16:57 # 0
$rand=array();
while(count($rand)<7)
$rand[rand(1,52)]=0;
$rand=array_keys($rand);
govnokod-observer 08.02.2012 17:17 # +3
Lure Of Chaos 08.02.2012 22:21 # 0
bugmenot 09.02.2012 11:46 # 0
ваш ЕВП
Lure Of Chaos 09.02.2012 12:50 # 0
lord_rb 25.08.2021 06:02 # 0