alvaro101 escribió:array_diff entiendo que estás sobre PHP ??
Yo no entendí mucho, pero básicamente veo que incurre mucho en comparaciones entre arrays.
Si especificas un poco mas puedo hacerte algo en .JS que estoy mas puesto, pero básicamente sería varios bucles recorriendo los diferentes arrays en busca de similitudes / diferencias, y a partir de ahí modificar uno de ellos o crear uno nuevo para el propósito. Éste método no sería muy distinto entre lenguajes de programación, o depende de cual sea, puede haber comandos mas escuetos que hagan ésto.
Saludos
alvaro101 escribió:Uff me cuesta entenderlo jej. Si me he enterado bien:
- Tienes un array que contiene años.
- La funcion f1 le das un año y retorna cantidades y descripciones en vectorValoresDefault.
- fTratar hace lo mismo que la anterior pero solo con descripciones en vectorDescripciones, que es lo que quieres comparar. Entiendo que las descripciones aquí mostradas son las mismas que las que ofrece la fumcion f1.
Mi preguntas son:
1 año = 1 descripción o varias?
Las comparaciones las quieres hacer entre años? entre descripciones del mismo año? O ambas?
Quieres comparar todo el array de años? O solo los años que le indiques?
Las fechas donde están? Son las cantidades? Múltiples fechas por cada año imagino...
Creo que necesitaría ejemplos de todos esos arrays para comprenderlo completamente. Y luego lo que te decía, ayudarte de varios bucles, sería recorrer cada uno de los arrays que quieras comparar, tantas veces como elementos quieras comparar. O tirar de alguna función ya existente que haga precisamente eso, segín el lenguaje habrá algo.
Crearte uno o varios arrays extra que te sirvan de "caché" para facilitarte las comparaciones, no es nada malo, si lo necesitas tendrás que hacerlo.
Saludos
Newton escribió:alvaro101 escribió:array_diff entiendo que estás sobre PHP ??
Yo no entendí mucho, pero básicamente veo que incurre mucho en comparaciones entre arrays.
Si especificas un poco mas puedo hacerte algo en .JS que estoy mas puesto, pero básicamente sería varios bucles recorriendo los diferentes arrays en busca de similitudes / diferencias, y a partir de ahí modificar uno de ellos o crear uno nuevo para el propósito. Éste método no sería muy distinto entre lenguajes de programación, o depende de cual sea, puede haber comandos mas escuetos que hagan ésto.
Saludos
Simplificando todo un poco:
vectorAnyos // es un vector que contiene anyos, por ejemplo 2019, 2018, 2017
f1($anyo) // función que devuelve un vector con cantidades y descripciones para un determinado anyo que facilito cómo parámetro.No hay descripciones repetidas durante un anyo.
vectorValoresDefault // es un vector que contiene cantidades y descripciones para un determinado anyo; obtenido de f1.
fTratar(vectorValoresDefault) // función que trata el vector y devuelve otro vector únicamente con descripciones.
vectorDescripciones // vector obtenido de la función fTratar que únicamente contiene descripciones.
Los distintos vectorDescripciones serían los que me interesa comparar entre ellos, para saber:
1) Qué descripciones únicamente se encuentran en un determinado vector de una fecha (sólo existirían en 1 fecha).
2) Qué descripciones se encuentran en 1 fecha concreta y en alguna fecha más. (Existiría mínimo en 2 fechas o más).
3) Qué descripciones se encuentran en los vectores, pero NO se encuentra encuentra en la fecha concreta que tomo de referencia.
Pero si el proceso de obtener vectorDescripciones lo hago mientras estoy recorriendo el vectorAnyos, según cómo se hace, no sería capaz de tener al mismo momento distintos vectorDescripciones por todos los anyos que deseo analizar; el problema que veo es que actualizo el vectorDescripciones, cuando no sé si lo correcto sería hacer alguna copia o algo similar.
Una chapuza podría ser, hacer una lista dónde vaya metiendo los distintos valores de los vectores y si se repiten elementos, podría decir que existen en distintos vectores, pero no creo que sea la manera óptima de hacerlo.
dark shadow escribió:No entiendo nada. De todas formas, y viendo que recurres a usar varios vectores... En cuanto a eficiencia, no es ni de lejos una buena solución. No estás usando una estructura de datos apropiada para este caso. Ponerse a comparar elementos entre varios vectores no es un proceso, por decirlo de algún modo, "eficiente".
alvaro101 escribió:A veces resulta "complicado" comunicarse verbalmente acerca de programación, pero creo que ésta se lleva la palma jej. Empezando porque ni se de que lenguaje estamos hablando.. como dije arriba pueden existir funciones mativas del lenguaje que ya hagan eso.
Vector == array ?? Al menos yo lo entendí así.. xD
alvaro101 escribió:Pues eso, sin especificar lenguaje, y sin aprovechar funciones propias de cada uno, sino tirando a lo mas básico, sería recorrer cada array las veces que necesites para comparar.
Con vector == array, me refería a que si cada vez que dices vector, te refieres a un array? jej