0votos

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

por josejuan hace 2 meses

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.