Class: Lista
Instance Attribute Summary collapse
-
#head ⇒ Object
Devuelve el valor del atributo.
-
#size ⇒ Object
Devuelve el valor del atributo.
-
#tail ⇒ Object
Devuelve el valor del atributo.
Instance Method Summary collapse
-
#calculate_eficiencia_diaria ⇒ Float
Calcula la eficiencia diaria de los alimentos de la lista.
-
#each ⇒ Object
Recorre los elementos de una lista y ejecuta acciones sobre el valor del elemento evaluado en ese momento.
-
#empty ⇒ Boolean
Comprueba si la lista está vacía y devuelve verdadero o falso.
-
#empty_to_s ⇒ String
Devuelve un mensaje cuando la lista está vacía.
-
#extract_head ⇒ Node
Devuelve el nodo head de la lista.
-
#extract_tail ⇒ Node
Devuelve el nodo tail de la lista.
-
#get_eficiencia_anual ⇒ Float
Calcula y devuelve la eficiencia anual de los alimentos de la lista.
-
#get_eficiencia_diaria ⇒ Float
Devuelve la eficiencia diaria de los alimentos de la lista.
-
#initialize ⇒ Lista
constructor
Inicializa el objeto de la clase Lista.
-
#insert_many(arrayaliments) ⇒ Object
Inserta más de un nodo en la lista.
-
#insert_one(aliment) ⇒ Object
Inserta un nodo en la lista.
Constructor Details
#initialize ⇒ Lista
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
#head ⇒ Object
Devuelve el valor del atributo
22 23 24 |
# File 'lib/lista.rb', line 22 def head @head end |
#size ⇒ Object
Devuelve el valor del atributo
22 23 24 |
# File 'lib/lista.rb', line 22 def size @size end |
#tail ⇒ Object
Devuelve el valor del atributo
22 23 24 |
# File 'lib/lista.rb', line 22 def tail @tail end |
Instance Method Details
#calculate_eficiencia_diaria ⇒ Float
Calcula la eficiencia diaria de los alimentos de la lista
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 |
#each ⇒ Object
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 |
#empty ⇒ Boolean
Comprueba si la lista está vacía y devuelve verdadero o falso
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_s ⇒ String
Devuelve un mensaje cuando la lista está 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_head ⇒ Node
Devuelve el nodo head de la lista
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_tail ⇒ Node
Devuelve el nodo tail de la lista
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_anual ⇒ Float
Calcula y devuelve la eficiencia anual de los alimentos de la lista
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_diaria ⇒ Float
Devuelve la eficiencia diaria de los alimentos de la lista
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
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
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 |