Class: Lista

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/lista.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeLista

Inicializa el objeto de la clase Lista



27
28
29
30
31
# File 'lib/lista.rb', line 27

def initialize
    @head = nil
    @tail = nil
    @size = 0
end

Instance Attribute Details

#headObject

Devuelve el valor del atributo



22
23
24
# File 'lib/lista.rb', line 22

def head
  @head
end

#sizeObject

Devuelve el valor del atributo



22
23
24
# File 'lib/lista.rb', line 22

def size
  @size
end

#tailObject

Devuelve el valor del atributo



22
23
24
# File 'lib/lista.rb', line 22

def tail
  @tail
end

Instance Method Details

#calculate_eficiencia_diariaFloat

Calcula la eficiencia diaria de los alimentos de la lista

Returns:

  • (Float)

    valor eficiencia diaria



128
129
130
131
132
133
134
135
136
# File 'lib/lista.rb', line 128

def calculate_eficiencia_diaria
	aux = @head
	while (aux != nil) do
		$eficiencia_diaria += aux["value"].get_eficiencia_energetica
		aux = aux["next"]
	end
	$eficiencia_diaria = $eficiencia_diaria.ceil(2)

end

#eachObject

Recorre los elementos de una lista y ejecuta acciones sobre el valor del elemento evaluado en ese momento



10
11
12
13
14
15
16
# File 'lib/lista.rb', line 10

def each
	aux = @head
	while (aux != nil) do
		yield aux["value"]
		aux = aux["next"]
	end
end

#emptyBoolean

Comprueba si la lista está vacía y devuelve verdadero o falso

Returns:

  • (Boolean)

    estado de la lista



110
111
112
113
114
115
116
# File 'lib/lista.rb', line 110

def empty
	if((@head == nil) && (@tail == nil) && (@size == 0))
		true
	else
		false
	end
end

#empty_to_sString

Devuelve un mensaje cuando la lista está vacía

Returns:

  • (String)

    mensaje lista vacía



121
122
123
# File 'lib/lista.rb', line 121

def empty_to_s
	"La lista está vacía y, por tanto, no es posible extraer más nodos"
end

#extract_headNode

Devuelve el nodo head de la lista

Returns:

  • (Node)

    nodo head



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/lista.rb', line 62

def extract_head
	if(!empty)
		aux = @head
		@head = @head["next"]

		if(@head != nil)
			@head["prev"] = nil
		else
			@tail = nil
		end
	
		@size -= 1
		aux["next"] = nil
		aux["value"]

	else
		empty_to_s
	end

end

#extract_tailNode

Devuelve el nodo tail de la lista

Returns:

  • (Node)

    nodo tail



86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/lista.rb', line 86

def extract_tail
        if(!empty)
                aux = @tail
                @tail = @tail["prev"]

                if(@tail != nil)
                        @tail["next"] = nil
                else
                        @head = nil
                end

                @size -= 1
                aux["prev"] = nil
						aux["value"]
		else
			empty_to_s

        end

end

#get_eficiencia_anualFloat

Calcula y devuelve la eficiencia anual de los alimentos de la lista

Returns:

  • (Float)

    valor eficiencia anual



148
149
150
151
152
153
154
155
# File 'lib/lista.rb', line 148

def get_eficiencia_anual
	if $eficiencia_diaria == 0.0
		$eficiencia_anual = get_eficiencia_diaria * 365
	else
		$eficiencia_anual = $eficiencia_diaria * 365
	end
	$eficiencia_anual = $eficiencia_anual.ceil(2)
end

#get_eficiencia_diariaFloat

Devuelve la eficiencia diaria de los alimentos de la lista

Returns:

  • (Float)

    valor eficiencia diaria



141
142
143
# File 'lib/lista.rb', line 141

def get_eficiencia_diaria
	calculate_eficiencia_diaria
end

#insert_many(arrayaliments) ⇒ Object

Inserta más de un nodo en la lista

Parameters:

  • arrayaliment (Array)

    array que contiene los alimentos a insertar



52
53
54
55
56
57
# File 'lib/lista.rb', line 52

def insert_many(arrayaliments)
	
	arrayaliments.each do | aliment |
		insert_one(aliment)
	end
end

#insert_one(aliment) ⇒ Object

Inserta un nodo en la lista

Parameters:

  • aliment (Node)

    nodo que contiene el alimento



36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/lista.rb', line 36

def insert_one(aliment)
	node = Node.new(aliment, nil, nil)
	if(empty)
		@head = node
		@tail = node
	else
		node["prev"] = @tail
		@tail["next"] = node
		@tail = node
	end
	@size += 1
end