Ver Mensaje Individual
  #9  
Viejo 15/11/21, 19:36:07
Avatar de Caravantes
Caravantes Caravantes no está en línea
Usuario muy activo
Mensajes: 2,200
Compra y venta: (1)
 
Fecha de registro: feb 2011
Mensajes: 2,200
Modelo de smartphone: Samsung Galaxy S9
Versión de ROM: Android 8
Tu operador: Lowi
Mencionado: 59 comentarios
Tagged: 4 hilos
Cita:
Originalmente Escrito por WillyWeb Ver Mensaje
Sin bucle. Sin Comparaciones. Sin inicializar variables. Con menos acciones. Y ahora tenemos un array con los precios ordenados de menor a mayor.
Pues parecía una buena idea pero creo que no funciona. (o yo me he equivocado en algún detalle)

A1: Solicitud HTTP [
Método: GET
URL: https://api.esios.ree.es/archives/70...json?locale=es
Tiempo Límite (Segundos): 30
Structure Output (JSON, etc): Encendido ]

A2: Establecer Variable [
Nombre: %campo
A: PCB
Dígitos de Redondeo Máximos: 3
Structure Output (JSON, etc): Encendido ]

A3: Establece Array [
Matriz de Variables (array): %pmwh
Valores: %http_data[%campo]()
Separador: , ]

A4: Flash [
Texto: Elementos: %pmwh(#) - %pmwh()
Largo: Encendido ]

A5: Procesar Array [
Matriz de Variables (array): %pmwh
Tipo: Orden Numérico, Coma-Flotante ]

A6: Establecer Variable [
Nombre: %pmin
A: %pmwh(>)
Calcular: Encendido
Dígitos de Redondeo Máximos: 3
Structure Output (JSON, etc): Encendido ]

A7: Establecer Variable [
Nombre: %pmax
A: %pmwh(<)
Calcular: Encendido
Dígitos de Redondeo Máximos: 3
Structure Output (JSON, etc): Encendido ]

A8: Flash [
Texto: Elementos: %pmwh(#) - %pmwh()
Largo: Encendido ]

A9: Flash [
Texto: %campo Min:%pmin . Max:%pmax
Largo: Encendido ]


El array se genera en la acción 3, y he insertado una acción 4 que muestra el número de elementos y luego el array completo, y resulta que el array tiene 48 elementos porque Tasker confunde el separador de elementos con las comas decimales que tienen los valores obtenidos.


ArrayPrecios48.jpg

Puesto que hay un valor que es 210,00 y tasker considera que eso son dos elementos del array, al final de la tarea resulta que el valor mínimo %pmin es 00. Y también resulta que el valor máximo %pmax es 316 (cuando debería ser 316,13).

Cita:
Originalmente Escrito por WillyWeb Ver Mensaje
Si ahora quieres una lista de los cuatro precios más bajos simplemente haces esto... %pbajos = %pmwh(:4) Genial, pero ¿a qué horas?
Yo había pensado un array de dos dimensiones, o (creo que lo prefiero) dos arrays, uno para las horas y otro para los precios; haría un bucle (con otro bucle interno) para ordenar los precios por el procedimiento clásico, pero si hay que intercambiar valores (porque están en el orden incorrecto), no solo intercambio los precios sino también las horas. De esta forma al final tengo un array con los precios ordenados y otro array paralelo con las horas correspondientes a esos precios. La hora que estuviera en primera posición sería la del precio más bajo y la última sería la del precio más caro.


Luego haría un segundo bucle para encontrar la hora más barata de la mañana (AM) y la hora más barata de la tarde (PM), tal como indiqué en el enunciado incial para encender el termo en esas dos horas (salvo que esas horas estén muy próximas (diferencia<6), en cuyo caso enciendo el termo solo una de ellas, la más barata). Sé que todo esto hace tareas muy largas, pero eso es algo que a mí nunca me ha preocupado; no soy bueno optimizando ni abreviando, por lo que suelo acabar con tareas largas, y no me importa porque funcionan y las entiendo.

Pero todos estos detalles posteriores siguen supeditados a que encontremos primero la forma de evitar la confusión entre comas decimales y separadores de array. En la acción 3 que genera el array he probado a poner como separador un punto y coma (;) y también he probado a poner un punto (.) pero tampoco sirve; en ambos casos la acción 4 me dice que el array obtenido tiene un solo elemento (muy largo). Por otro lado, puede haber una solución fácil porque mi tarea de ayer sí que terminaba con un array de 24 elementos.
ArrayPrecios24.jpg

Última edición por Caravantes Día 15/11/21 a las 19:44:46
Responder Con Cita