Class: Comida::Lista
Overview
Clase utilizada para almacenar un conjunto de alimetnos que vamos a unir para formar un plato
Instance Attribute Summary collapse
-
#head ⇒ Object
readonly
Variable utilizada para trabajar con la lista por delante, Variable utilizada para trabajar con la lista por detras.
-
#tail ⇒ Object
readonly
Variable utilizada para trabajar con la lista por delante, Variable utilizada para trabajar con la lista por detras.
Instance Method Summary collapse
-
#calculo_emisiones_ei ⇒ Object
Metodo empleado para el calculo de las emisiones de efecto invernadero.
-
#calculo_emisiones_ei_anuales ⇒ Object
Metodo para calcular las emisinoes de efecto invernadero anuales.
-
#calculo_terreno(lista) ⇒ Object
Metodo para calcular el terreno empleado en funcion de los alimetnos de la lista.
-
#each ⇒ Object
Metodo del Enumerable para poder moverse por la lista e implementar metodos como collect sort,select min, max,.
-
#extract_head ⇒ Object
Metodo utilizado para extraer elementos de la lista por la cabeza, simplemente tenemos que asignar la cabeza al siguiente elemento del que esta apuntando actualmente.
-
#extract_tail ⇒ Object
Metodo utilizado para extraer elementos de la lista por la cola, simplemente tenemos que asignar la cola al anterior elemento del que esta apuntando actualmente.
-
#initialize ⇒ Lista
constructor
Metodo para inizializar los atributos de la clase, que en este caso son a nil.
-
#insert_head(value) ⇒ Object
Metodo utilizado para insertar datos en la lista por la cabeza por delante.
-
#insert_muchos_head(value) ⇒ Object
Metodo utilizado para insertar mas de un dato a la vez en la lista por la cabeza.
-
#insert_muchos_tail(value) ⇒ Object
Metodo utilizado para insertar mas de un dato a la vez en la lista por la cola.
-
#insert_tail(value) ⇒ Object
Metodo utilizado para insertar datos en la lista por la cola.
Constructor Details
#initialize ⇒ Lista
Metodo para inizializar los atributos de la clase, que en este caso son a nil
49 50 51 52 |
# File 'lib/comida/lista.rb', line 49 def initialize @head = nil # Variable utilizada para trabajar con la lista por delante @tail = nil # Variable utilizada para trabajar con la lista por detras end |
Instance Attribute Details
#head ⇒ Object (readonly)
Variable utilizada para trabajar con la lista por delante, Variable utilizada para trabajar con la lista por detras
35 36 37 |
# File 'lib/comida/lista.rb', line 35 def head @head end |
#tail ⇒ Object (readonly)
Variable utilizada para trabajar con la lista por delante, Variable utilizada para trabajar con la lista por detras
35 36 37 |
# File 'lib/comida/lista.rb', line 35 def tail @tail end |
Instance Method Details
#calculo_emisiones_ei ⇒ Object
Metodo empleado para el calculo de las emisiones de efecto invernadero. Para ello solo tenemos que recorrer cada elemetno de la lista e ir sumando el valor de gei
130 131 132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/comida/lista.rb', line 130 def calculo_emisiones_ei i = 0 suma = 0 nodo = self.head while nodo != nil suma = suma + nodo.value.gei nodo = nodo[:next] i += 1 end return suma end |
#calculo_emisiones_ei_anuales ⇒ Object
Metodo para calcular las emisinoes de efecto invernadero anuales. SOlo tenemos que obtener el valor de las emisione de efecto invernadero en un dia y multiplicarlo por 365
146 147 148 |
# File 'lib/comida/lista.rb', line 146 def calculo_emisiones_ei_anuales return self.calculo_emisiones_ei * 365 end |
#calculo_terreno(lista) ⇒ Object
Metodo para calcular el terreno empleado en funcion de los alimetnos de la lista. Para ello solo tenemos que recorrer la lista e ir sumando el valor del terreno de cada alimento
153 154 155 156 157 158 159 160 161 162 163 164 165 |
# File 'lib/comida/lista.rb', line 153 def calculo_terreno(lista) i = 0 suma = 0 nodo = lista.head while nodo != nil suma = suma + nodo.value.terreno nodo = nodo[:next] i += 1 end suma end |
#each ⇒ Object
Metodo del Enumerable para poder moverse por la lista e implementar metodos como collect sort,select min, max,
39 40 41 42 43 44 45 46 |
# File 'lib/comida/lista.rb', line 39 def each inicio = head while inicio != nil yield inicio.value inicio = inicio.next end end |
#extract_head ⇒ Object
Metodo utilizado para extraer elementos de la lista por la cabeza, simplemente tenemos que asignar la cabeza al siguiente elemento del que esta apuntando actualmente
102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/comida/lista.rb', line 102 def extract_head() if (@head != nil && @tail != nil) then if (@head == @tail) then @head = nil @tail = nil else @head = @head[:next] @head[:prev] = nil end end end |
#extract_tail ⇒ Object
Metodo utilizado para extraer elementos de la lista por la cola, simplemente tenemos que asignar la cola al anterior elemento del que esta apuntando actualmente
116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/comida/lista.rb', line 116 def extract_tail() if (@head != nil && @tail != nil) then if (@head == @tail) then @head = nil @tail = nil else @tail = @tail[:prev] @tail[:next] = nil end end end |
#insert_head(value) ⇒ Object
Metodo utilizado para insertar datos en la lista por la cabeza por delante
68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/comida/lista.rb', line 68 def insert_head(value) if (@head == nil && @tail == nil) then nodo = Nodo.new(value, nil, nil) @head = nodo @tail = nodo else nodo = Nodo.new(value,@head,nil) @head[:prev] = nodo @head = nodo end end |
#insert_muchos_head(value) ⇒ Object
Metodo utilizado para insertar mas de un dato a la vez en la lista por la cabeza
81 82 83 84 85 86 87 88 |
# File 'lib/comida/lista.rb', line 81 def insert_muchos_head(value) i = 0 while i < value.length insert_head(value[i]) i += 1 end end |
#insert_muchos_tail(value) ⇒ Object
Metodo utilizado para insertar mas de un dato a la vez en la lista por la cola
91 92 93 94 95 96 97 98 |
# File 'lib/comida/lista.rb', line 91 def insert_muchos_tail(value) i = 0 while i < value.length insert_tail(value[i]) i += 1 end end |
#insert_tail(value) ⇒ Object
Metodo utilizado para insertar datos en la lista por la cola
55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/comida/lista.rb', line 55 def insert_tail(value) if (@head == nil && @tail == nil) then nodo = Nodo.new(value, nil, nil) @head = nodo @tail = nodo else nodo = Nodo.new(value,nil,@tail) @tail[:next] = nodo @tail = nodo end end |