erwise = (z,t,w,s+w) : rt (s+w)bs ((r,c,v):ys)
{-
*Main> round_trip $ CGraph [0..5] (\ x y -> mod (x+y) 4)
[(0,4,0,0),(4,5,1,1),(5,3,0,1),(3,1,0,1),(1,3,0,1),(3,2,1,2),(2,3,1,3),(3,5,0,3),(5,4,1,4),(4,0,0,4)]
-}
Have fun!
/BR, Mirko Rahn
cate 148 ' ' ++ "X"
in mapM_ putStrLn $ take 1 $ iterate f init
is only 3 times slower than your quite complex, hard to follow and hard
to debug implementation.
As always, I prefer to write most code in Haskell, quick, easy, nice,
reasonable fast, ...
hat a Haskell program that verifies these values will depend on
an external intset implementation. Or uses another data structure, for
example some Set_of_Intervals...
/BR, Mirko Rahn
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
s able
to calculate a_{23448481} = 594261577728 and a_{2500} = 192365946 in
50s and ~1GB memory usage.
/BR, Mirko Rahn
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
P is the number of processes involved. There are also some
O(log P) algorithms, counting activation messages and summing up in two
wave fronts these numbers. These algorithms are formulated for message
passing environments with the capability to send a message to a speci
The Rabbit Sequence:
1,0,1,1,0,1,0,1,1,0,1,1,0,1,0,1,1,0,1,0,1,1,0,1,1,0,1,0,1,1,0,1,1,0,...
This nasty acquaintance of mine asked the students to write down a simple
procedure which generates the sequence after the infinite number of units
of time. Of course, any finite prefix of it.
In te
pref_eq k xs ys = take k xs == take k ys
This seems to be a straightforward implementation with good properties.
Actually, no, at least not if implemented naively.
I choosed this example, since I stumbled on this question last week.
Reputable mathematicians doing "combinatorics on word
take 1000 [1..3] still yields [1,2,3]
You can think about take n as: Take as much as possible, but at most n
elements. This behavior has some nice properties as turned out by
others, but there are some pitfalls. We have
length . take n /= const n
in general, instead only
length . take
countCS :: [Char] -> [(Char, Int)]
I use this
count :: (Ord a, Num b) => [a] -> (a -> b,[(a,b)])
count xs = ( flip (Map.findWithDefault 0) m , Map.assocs m )
where m = Map.fromListWith (+) $ zip xs $ repeat 1
which returns the frequencies list as well as a query function that I
found m
div n 5 of
0 -> mzero
q -> return (q,q)
)
I tend to not use |iterate|, when it is known in advance, which prefix
of the so constructed infinite list is used.
/BR
--
-- Mirko Rahn -- Tel +49-721 608
some
common idioms, where others need some help...
/BR
--
-- Mirko Rahn -- Tel +49-721 608 7504 --
--- http://liinwww.ira.uka.de/~rahn/ ---
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
using
memcpy()
I like to hear that you would reject it either.
/BR
--
-- Mirko Rahn -- Tel +49-721 608 7504 --
--- http://liinwww.ira.uka.de/~rahn/ ---
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
d for?
So rewriting it in Haskell (of any size) is a good idea to actually
understand the code. Please, could you do it.
/BR
--
-- Mirko Rahn -- Tel +49-721 608 7504 --
--- http://liinwww.ira.uka.de/~rahn/ ---
___
Haskell-Cafe mailing list
Haskell-Cafe@h
the library documentation states it very clearly.
/BR
--
-- Mirko Rahn -- Tel +49-721 608 7504 --
--- http://liinwww.ira.uka.de/~rahn/ ---
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
| x == y = diff g f xs ys
| otherwise=f xs ys
diff g _xs ys = g xs ys
diff_eq_0 :: Eq a => [a] -> [a] -> Bool
diff_eq_0 = diff (\ u v -> null u && null v) (const . const $ False)
/BR
--
-- Mirko Rahn -- Tel +49-721 608 7504 --
---
rks for infinite lists, btw.
/BR
--
-- Mirko Rahn -- Tel +49-721 608 7504 --
--- http://liinwww.ira.uka.de/~rahn/ ---
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
gt;= \ (l,r) ->
[ Branch a b | a <- the_trees l, b <- the_trees r ]
nonempty_splits (x:y:ys) = ([x],y:ys)
: [ (x:l,r) | (l,r) <- nonempty_splits (y:ys) ]
nonempty_splits _= []
/BR
--
-- Mirko Rahn -- Tel +49-721 608 7504 --
--- http://l
the correction even three times). As a consequence my version is faster
and eats less memory.
/BR
--
-- Mirko Rahn -- Tel +49-721 608 7504 --
--- http://liinwww.ira.uka.de/~rahn/ ---
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://w
nch (Leaf 3) (Branch (Branch (Leaf 2) (Leaf 1)) (Branch (Leaf 4)
(Leaf 5)))
So please, what's going on here?
--
-- Mirko Rahn -- Tel +49-721 608 7504 --
--- http://liinwww.ira.uka.de/~rahn/ ---
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.o
, b <- insert x part]
all_trees [] = []
all_trees (x:xs) =
let this = Leaf x
more = all_trees xs
in this : more ++ concatMap (insert this) more
/BR
--
-- Mirko Rahn -- Tel +49-721 608 7504 --
--- http://liinwww.ira.uka.de
s _ v = Just (v-1)
upd m y = case Map.updateLookupWithKey ins y m of
(Nothing,_ ) -> mzero
(_ ,m') -> return m'
in not . null . foldM upd mx
Thanks for your time,
BR,
--
-- Mirko Rahn -- Te
s) = del_acc (x:v) xs
super u = not . null . foldM (flip del) u
main = interact $ unlines . filter ("ubuntu" `super`) . lines
BR,
--
-- Mirko Rahn -- Tel +49-721 608 7504 --
--- http://liinwww.ira.uka.de/~rahn/ ---
___
Haskell-Cafe ma
!
Correct (and more natural):
nOf 0 _ = [[]]
nOf n (x:xs) = map (x:) (nOf (n-1) xs) ++ nOf n xs
nOf _ [] = []
BR,
--
-- Mirko Rahn -- Tel +49-721 608 7504 --
--- http://liinwww.ira.uka.de/~rahn/ ---
___
Haskell-Cafe mailing list
Haskell-Cafe
lso preserves sorting)
...but is exponentially slower than necessary, and fails on infinite
lists. Try this one:
sublistsN 0 _ = [[]]
sublistsN n (x:xs) = map (x:) (sublistsN (n-1) xs) ++ sublistsN n xs
sublistsN _ _ = []
triples = sublistsN 3
BR,
--
-- Mirko Rahn -- Tel +49
va solution; but do you expect them to understand
Haskell?)
Add 1: This statement contradicts your "easyness" claim!?
Add 2: In contrast, the Haskell solution does'nt uses "advanced Haskell
features" (whatever this might be), it consists of 6 lines of plain
Haskell 9
of mirror and rel are the same as before. Try
this in your favorite language!
Regards,
--
-- Mirko Rahn -- Tel +49-721 608 7504 --
--- http://liinwww.ira.uka.de/~rahn/ ---
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
A. understand the problem
B. decompose or reduce it into subproblems
C. solve the subproblems
D. compose a solution from the sub-solutions
--
-- Mirko Rahn -- Tel +49-721 608 7504 --
--- http://liinwww.ira.uka.de/~rahn/ ---
___
Haskell-Cafe mailing
constructed function.
Regards,
--
-- Mirko Rahn -- Tel +49-721 608 7504 --
--- http://liinwww.ira.uka.de/~rahn/ ---
module Main where
import System.Posix.DynamicLinker as DL
import System.Process ( runInteractiveProcess , waitForProcess )
import Foreign.C ( CString , withCString )
import Foreign ( FunPtr
xss) = [ x:y | x <- xs, y <- combinations xss ]
BTW, I think 'cross_many' would be a better name.
--
-- Mirko Rahn -- Tel +49-721 608 7504 --
--- http://liinwww.ira.uka.de/~rahn/ ---
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
htt
error prone.
In contrast the sum-type technique first reads all options and then
post-processes the complete set. Here the order of options on the
commandline has no impact on the final result.
Regards, Mirko Rahn
--
-- Mirko Rahn -- Tel +49-721 608 7504 --
--- http:/
topic several times and came up with a solution that works for me
but is far from being perfect. It uses existentials and a main
disadvantage is the need of explicit traversing. Moreover some new
boilerplate code is necessary.
You can find the interface in
http://liinwww.ira.uka.de/~rahn/src/
t))
What is the general problem?
Thanks, MR
[1] http://www.haskell.org/pipermail/haskell-cafe/2006-March/014947.html
--
-- Mirko Rahn -- Tel +49-721 608 7504 --
--- http://liinwww.ira.uka.de/~rahn/ ---
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
32 matches
Mail list logo