0votos

Mezclador de frases en Haskell

por josejuan hace 4 años

Es posible enumerar los elementos de la secuencia resultante en base a las enumeraciones de las secuencias de entrada (es decir, no hacen falta las secuencias para poder fusionarlas).

Haz un programa que acepte dos cadenas y que cree una cadena con un par de caracteres de la primera, dos de la segunda y así hasta acabar con la cadena.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-- Los caracteres de la secuencia resultante pueden enumerarse 
-- usando los números naturales e invirtiendo sus dos LSB bits. 
 
join' :: [a] -> [a] -> [a] 
join' x y = concat $ take (10^4) [ ([x,y]!!a)!?z | i <- [0..] 
                                               , let b = testBit i 0 
                                                     a = if testBit i 1 then 1 else 0 
                                                     z = (if b then setBit else clearBit) (i `div` 2) 0 ] 
 
 
 
-- una variante de index 
(!?) :: [a] -> Int -> [a] 
xs !? n = if n < 0 || n >= length xs then [] else [xs!!n] 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.