Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Data.Char (chr)
- generate' _ 0 _ _ _ _ = Nothing
- generate' goal generations_left generation 0 _ _ =
- generate' goal (generations_left - 1) (generation + 1) (generation + 1) 0 [0]
- generate' goal generations_left generation left aggregate (x:xs)
- | value == goal = Just (reverse (map (chr . fromInteger . (+ 97)) (x:xs)))
- | value > goal = next_generate (left - 1) next_aggregate (0:(x - 1):xs)
- | x == 25 = next_generate (left - 1) (next_aggregate + 1) (0:x:xs)
- | otherwise = next_generate left aggregate ((x + 1):xs)
- where next_generate = generate' goal generations_left generation
- next_aggregate = aggregate * 17 + x
- padded_value 0 v = v
- padded_value padding v = padded_value (padding - 1) (v * 17 + 1)
- value = padded_value (left - 1) (next_aggregate + 1)
- generate max_length = generate' 248410397744610 max_length 1 1 0 [0]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement