Class: Lista
Instance Attribute Summary collapse
-
#head ⇒ Object
Returns the value of attribute head.
-
#tail ⇒ Object
Returns the value of attribute tail.
Instance Method Summary collapse
-
#dieta_gases_anuales(gramos) ⇒ Object
Calcula el total de gases anuales que tiene la lista de alimentos.
-
#dieta_gases_diarios(gramos) ⇒ Object
Calcula el total de gases diarios que tiene la lista de alimentos.
-
#dieta_terreno(gramos) ⇒ Object
Calcula el total de uso del terreno que tiene la lista de alimentos.
-
#each ⇒ Object
Se utiliza el módulo Enumerable, para enumerar cualquier lista enlazada.
-
#extract_head ⇒ Object
Se extrae el nodo situado en la cabeza de la lista.
-
#extract_tail ⇒ Object
Se extrae el nodo situado en la cola de la lista.
-
#imprimir ⇒ Object
Se visualiza la lista.
-
#initialize(head, tail) ⇒ Lista
constructor
Se asignan la cabecera de la lista y la cola de la lista.
-
#insert(nodos) ⇒ Object
Se insertan por la cola un conjunto de nodos.
-
#insert_head(value) ⇒ Object
Se inserta un nodo por la cabeza de la lista.
-
#insert_tail(value) ⇒ Object
Se inserta un nodo por la cola de la lista.
Constructor Details
#initialize(head, tail) ⇒ Lista
Se asignan la cabecera de la lista y la cola de la lista. Inicialmente apuntan a nil.
26 27 28 29 |
# File 'lib/alimentacion/lista.rb', line 26 def initialize(head,tail) @head = nil @tail = nil end |
Instance Attribute Details
#head ⇒ Object
Returns the value of attribute head.
23 24 25 |
# File 'lib/alimentacion/lista.rb', line 23 def head @head end |
#tail ⇒ Object
Returns the value of attribute tail.
23 24 25 |
# File 'lib/alimentacion/lista.rb', line 23 def tail @tail end |
Instance Method Details
#dieta_gases_anuales(gramos) ⇒ Object
Calcula el total de gases anuales que tiene la lista de alimentos
102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/alimentacion/lista.rb', line 102 def dieta_gases_anuales(gramos) aux = @head suma_gases = 0 i = 0 while (!aux.nil?) suma_gases += aux[:value].auxiliar(gramos[i]) aux = aux[:next] i = i+1 end return suma_gases.round(2) end |
#dieta_gases_diarios(gramos) ⇒ Object
Calcula el total de gases diarios que tiene la lista de alimentos
116 117 118 119 |
# File 'lib/alimentacion/lista.rb', line 116 def dieta_gases_diarios(gramos) gases_diarios = dieta_gases_anuales(gramos)/365 return gases_diarios.round(3) end |
#dieta_terreno(gramos) ⇒ Object
Calcula el total de uso del terreno que tiene la lista de alimentos
122 123 124 125 126 127 128 129 130 131 132 133 134 |
# File 'lib/alimentacion/lista.rb', line 122 def dieta_terreno(gramos) aux = @head suma_terreno = 0 i = 0 while (!aux.nil?) suma_terreno += aux[:value].auxiliar2(gramos[i]) aux = aux[:next] i = i+1 end return suma_terreno.round(2) end |
#each ⇒ Object
Se utiliza el módulo Enumerable, para enumerar cualquier lista enlazada.
15 16 17 18 19 20 21 |
# File 'lib/alimentacion/lista.rb', line 15 def each aux = @head while !aux.nil? yield aux[:value] aux = aux[:next] end end |
#extract_head ⇒ Object
Se extrae el nodo situado en la cabeza de la lista
54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/alimentacion/lista.rb', line 54 def extract_head() if @head.nil? raise RuntimeError, "La lista está vacía" else if @head == @tail @head, @tail = nil else @head = @head[:next] @head[:prev] = nil end end end |
#extract_tail ⇒ Object
Se extrae el nodo situado en la cola de la lista
69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/alimentacion/lista.rb', line 69 def extract_tail() if @head.nil? raise RuntimeError, "La lista está vacía" else if @head == @tail @head, @tail = nil else @tail = @tail[:prev] @tail[:next] = nil end end end |
#imprimir ⇒ Object
Se visualiza la lista
90 91 92 93 94 95 96 97 98 99 |
# File 'lib/alimentacion/lista.rb', line 90 def imprimir aux = @head lista = [] while (!aux.nil?) lista << aux[:value].to_s aux = aux[:next] end return lista end |
#insert(nodos) ⇒ Object
Se insertan por la cola un conjunto de nodos
83 84 85 86 87 |
# File 'lib/alimentacion/lista.rb', line 83 def insert(nodos) for i in (0.. nodos.size-1) insert_tail(nodos[i]) end end |
#insert_head(value) ⇒ Object
Se inserta un nodo por la cabeza de la lista
32 33 34 35 36 37 38 39 40 |
# File 'lib/alimentacion/lista.rb', line 32 def insert_head(value) if @head.nil? @head = Nodo.new(value, nil, nil) @tail = @head else @head[:prev] = Nodo.new(value, @head, nil) @head = @head[:prev] end end |
#insert_tail(value) ⇒ Object
Se inserta un nodo por la cola de la lista
43 44 45 46 47 48 49 50 51 |
# File 'lib/alimentacion/lista.rb', line 43 def insert_tail(value) if @head.nil? @head = Nodo.new(value, nil, nil) @tail = @head else @tail[:next] = Nodo.new(value, nil, @tail) @tail = @tail[:next] end end |