Spanish Ayuda con un algoritmo.

Ingeniero Cognitivo

Active Member
Necesito ayuda con la parte mas dificil de mi proyecto, un asistente que incluye un sistema de recordatorios.
Necesito un algoritmo que determine si una tarea debe ejecutarse en base a criterios como fecha y hora de inicio, horario, frecuencia, etc establecidos previamente por el usuario.
Cada tarea puede estar vinculada a otros tipos de tareas que limitan y concretan el momento o periodo exacto en el que deben ejecutarse.
Cada dato de cada tarea se almacena en una matriz unidimensional y cada posicion de cada matrix corresponde al numero de posicion de la lista de tareas en otra matriz y por lo tanto, cada posicion de cada matriz identifica el nombre y demas datos de cada tarea.


Gracias.
 

josejad

Expert
Licensed User
Longtime User
Hola:

Me temo que es algo compleja y demasiado genérico como para que haya un algoritmo específico para hacerlo.
Se me ocurre, con algo de pseudocódigo, algo así, pero depende de las estructuras que hayas elegido, etc...

B4X:
Sub TimerTareas_Tick
   For each tarea as TipoTarea in matriz_tareas
     If tarea.fecha_hora_ejecucion = fecha_hora_actual Then
        TareaVinculada =  TareasVinculadas.Get(tarea.posicion)
        Comprobar condiciones TareaVinculada
        If Condiciones Then
            EjecutarTarea(tarea)
        End if
    End if
  Next
End Sub

Podrías echar un vistazo al código del compañero Ganso, y buscar algo de inspiración ahí.


saludos,
 

roerGarcia

Active Member
Licensed User
Longtime User
Se me ocurren dos alternativas:
#1 checar si en la fecha (dia y hora) actual hay cosas que hacer (que es la ya sugerida)

o

#2 crear las cosas que hay hacer cada dia ANTES. ¿como? Tomando en cuenta los criterios y especificaciones, crear una lista de tareas para el dia o para toda una semana.

En mi punto de vista particular la segunda me parece mas practica. De ese modo YA SABES que hay.
 

Ingeniero Cognitivo

Active Member
Hola:

Me temo que es algo compleja y demasiado genérico como para que haya un algoritmo específico para hacerlo.
Se me ocurre, con algo de pseudocódigo, algo así, pero depende de las estructuras que hayas elegido, etc...

B4X:
Sub TimerTareas_Tick
   For each tarea as TipoTarea in matriz_tareas
     If tarea.fecha_hora_ejecucion = fecha_hora_actual Then
        TareaVinculada =  TareasVinculadas.Get(tarea.posicion)
        Comprobar condiciones TareaVinculada
        If Condiciones Then
            EjecutarTarea(tarea)
        End if
    End if
  Next
End Sub

Podrías echar un vistazo al código del compañero Ganso, y buscar algo de inspiración ahí.


saludos,


Hola:

Me temo que es algo compleja y demasiado genérico como para que haya un algoritmo específico para hacerlo.
Se me ocurre, con algo de pseudocódigo, algo así, pero depende de las estructuras que hayas elegido, etc...

B4X:
Sub TimerTareas_Tick
   For each tarea as TipoTarea in matriz_tareas
     If tarea.fecha_hora_ejecucion = fecha_hora_actual Then
        TareaVinculada =  TareasVinculadas.Get(tarea.posicion)
        Comprobar condiciones TareaVinculada
        If Condiciones Then
            EjecutarTarea(tarea)
        End if
    End if
  Next
End Sub

Podrías echar un vistazo al código del compañero Ganso, y buscar algo de inspiración ahí.


saludos,

No se si te has fijado que ya le he respondido pero no me ha hecho caso.

Con solo el criterio de fecha y hora es facil y demasiado simple. Por algo mi asistente sera el mas avanzado del mundo, al menos en la categoria gratuita.

Gracias por el intento.
 

Ingeniero Cognitivo

Active Member
Se me ocurren dos alternativas:
#1 checar si en la fecha (dia y hora) actual hay cosas que hacer (que es la ya sugerida)

o

#2 crear las cosas que hay hacer cada dia ANTES. ¿como? Tomando en cuenta los criterios y especificaciones, crear una lista de tareas para el dia o para toda una semana.

En mi punto de vista particular la segunda me parece mas practica. De ese modo YA SABES que hay.
Puede haber tareas que hacer en cualquier momento, por eso tengo que comprobar si hay tareas constantemente.
Lo dificil es determinar que tarea se ejecuta antes en base a varios criterios como horario, frecuencia, dia de la semana, etc, no solo comprobar si hay algo que hacer un dia a una hora ni la tarea en si.
 

josejad

Expert
Licensed User
Longtime User
Top