0votos

Recursividad para compara la suma de la mitad de los numeros enteros de un arraeglo en Haskell

por josejuan hace 12 días

Dos implementaciones diferentes. Entiendo que el interés que puede tener el desafío es que los "arreglos" no tengan longitud predefinida y no admitan acceso aleatorio (ej. son listas enlazadas).

Hola como estan, no logro terminarlo,denme una mano por favor :desarrollar un programa en Ruby que devuelva verdadero si la suma de la primera mitad de los enteros del arreglo es igual a la suma de la segunda mitad de los enteros del arreglo.

1
2
3
4
5
6
7
8
9
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
-- avanza uno la vanguardia, mantiene la retaguardia 
tic xs ys (_:zs) = tac xs ys zs 
tic xs ys    []  = sum xs == sum ys 
 
-- avanza uno la vanguardia, avanza uno la retaguardia 
tac (x:xs) ys (_:zs) = tic xs (x:ys) zs 
tac (_:xs) ys    []  = sum xs == sum ys 
 
-- la función solicitada 
tictac xs = tic xs [] xs 
 
 
 
 
-- la función anterior requiere T[n] = n + 3n/2 = 5n/2 operaciones 
-- puede acumularse para evitar las cuentas finales 
tic' xs yc (z:zs) zc = tac' xs yc zs (zc + z) 
tic'  _ yc    []  zc = zc == yc + yc 
 
tac' (x:xs) yc (z:zs) zc = tic' xs (yc + x) zs (zc + z) 
tac' (x: _) yc    []  zc = zc - x == yc + yc 
 
tictac' xs = tic' xs 0 xs 0 
 
-- que realiza T[n] = n operaciones 
 
 
{- 
 
# podemos testear que ambas implementaciones son equivalentes 
 
> quickCheckWith (stdArgs {maxSuccess = 100000}) (\xs -> tictac xs == tictac' xs) 
+++ OK, passed 100000 tests. 
 
-} 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.