elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ¿Medir variación de una serie? ¿obtener máxima variación?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Medir variación de una serie? ¿obtener máxima variación?  (Leído 3,039 veces)
Tachikomaia


Conectado Conectado

Mensajes: 1.180


Superhacker (es broma xD )


Ver Perfil
¿Medir variación de una serie? ¿obtener máxima variación?
« en: 9 Septiembre 2019, 06:02 am »

Creo que es más una duda matemática o de "algo" que de programación, pero un programa podría resolverla.

Supongamos que tengo un equipo de fútbol conformado por Alejandro, Beto, etc, ABCDEFGHIJK, o sea, cada letra representa a cada jugador y también está representado qué número tiene.

Ahora, yo quisiera variar las posiciones de los jugadores todo lo posible, aunque sin variar la formación (como 3-4-3).

Una respuesta que llega a la mente es KJIHGFEDCBA, pero ahí todos los jugadores están al lado de los mismos que antes, y su distancia hacia el centro también es la misma, por lo que no creo que esa sea la máxima variación.

Quisiera el pseudocódigo que la obtenga.

O un método para medir la variación de una serie, una vez que se plantea como posible respuesta.

Gracias.


« Última modificación: 9 Septiembre 2019, 06:06 am por Tachikomaia » En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.348


Ver Perfil
Re: ¿Medir variación de una serie? ¿obtener máxima variación?
« Respuesta #1 en: 9 Septiembre 2019, 16:23 pm »

Si tienes 10 elementos (jugadores), y estos deben guardar su 'formación' 3-4-3, como tu dices y donde creo entender sería ABC-DEFG-HIJ (aunque luego a ti te sale una K, que hablando de fútbol debo suponer que se refiere al portero)... entonces, el problema consiste en considerar como elementos individuales (y por tanto permutables), a cada grpo en si... esto es:

X = ABC
Y = DEFG
Z = HIJ

Luego son solo 3 elementos los permutables... con tan pocos se puede hacer de cabeza... de entradas todas las poibles son 1*2*3 = 6, luego:
0 - XYZ
1 - XZY
2 - YXZ
3 - YZX
4 - ZXY
5 - ZYX
Estas variaciones, pueden ser un array... y
Ya solo te basta remplazar cada aparición del ítem que identifica un grupo, por los items que están contenidos en dicho grupo...
Si el portero también participa en las permutaciones y no va siempre al final (como me fuerza suponer), entonces el resultado sería: 1*2*3*4 = 24, y lógicamente empezarías por:
0 - XYZK
1 - XYKZ
2 - XZYK
3 - XZKY
4 - XKYZ
5 - XKZY
rellena tu las otras 3 series de 6, que comienzn con Y, Z y K.

Si no te entendí bien, detalla todas las reglas, no dejes que quien te lea tenga siempre que suponer cosas que tú debes ofrecer y dejar claras, como parte de tu exposición...


En línea

Tachikomaia


Conectado Conectado

Mensajes: 1.180


Superhacker (es broma xD )


Ver Perfil
Re: ¿Medir variación de una serie? ¿obtener máxima variación?
« Respuesta #2 en: 9 Septiembre 2019, 22:06 pm »

Quiero que se varíen la posición de los jugadores individualmente, no como un grupo. Los puedes desparramar como quieras, por ejemplo
GIFDKCAHBJE

El golero sería el nombrado 1ero, en este caso G, pero eso es irrelevante al problema, simplemente son jugadores y números que se les asignan...

Lo de la formación lo dije porque dije "variar al equipo lo más posible" lo cual implicaría variar la formación (o sea, poner 6 delanteros por ejemplo, en lugar de 3) y otras cosas, pero en esta suposición sólo se variaría el número asignado a cada jugador (y por lo tanto la posición pero vinculada a una formación establecida).

Te doy más datos pero requiere más explicaciones. ¿Conoces este juegazo?
https://www.youtube.com/watch?v=wRT7Iqkczao
Ya lo pasé, incluso llegué a Argentina sin perder partidos (low level run), pero ahí me aburrí de tanto reintentar. Ahora años después se me dió por "investigar" el juego, así:

Lo que sigue es variar lo más posible todo eso basado en lo que probablemente es mejor basado en los datos obtenidos. Como si yo fuese una IA buscando la mejor forma de jugar. Y vos dirás "Tsubasa hizo los goles, por lo tanto es mejor que siga arriba", pero ¿y si hay otros jugadores que serían mejores arriba, o si Tsubasa sería mejor abajo? De hecho voy a usar trucos que permiten usar jugadores rivales (incluso poner de golero a jugadores que normalmente sería imposible y viceversa), así que sería demasiado simplón decir que Tsubasa conviene arriba (aunque sea el caso). En mi teoría, no se sabe hasta que se prueba. Bueno, pero obviamente no soy una IA, no puedo modificar de un momento a otro mi modo de actuar, por lo que en la siguiente prueba variaré pocas cosas. Quitaré al jugador que me parezca peor y pondré uno nuevo. También cambiaré la formación, por lo que el 5 que es defensa quedará en el centro.
Lo normal sería poner jugadores nuevos, totalmente, pero eso a mí me complica porque ya no tendría tan claro cual tiene el mejor tiro, el 2ndo en tenerlo, etc, o sea, no soy una IA como ya expliqué.

Si quieres puedes opinar de eso, me encanta investigar videojuegos y necesito mejorar mis métodos. Pero acá simplemente estoy preguntando cómo variar la posición de los jugares sin agregar nuevos ni todo lo que estoy haciendo ahí.

Citar
Si no te entendí bien, detalla todas las reglas, no dejes que quien te lea tenga siempre que suponer cosas que tú debes ofrecer y dejar claras, como parte de tu exposición...
Hice lo que pensé que era suficiente, no puedo saberlo a priori.

Aquí te dejo un posible acercamiento a la solución:

Dif = Diferencia
DifAbs = Diferencia absoluta
Dis ¿? = Distancia de un jugador a otro, o al centro "*".
...
El problema es que no sé cómo calcular la diferencia total, ya que las distancias me dan números negativos o positivos, no los puedo sumar y no entiendo qué debería poner en las filas, estoy trancado.

EDIT:
De momento tengo esto:



En Difer pongo =MAX(B2;B4)-MIN(B2;B4)
B4 va cambiando según en qué fila esté.
Lo que hace es tomar el valor más grande y restarlo por el más pequeño. De ese modo siempre da resultados positivos o 0.
Por ejemplo en ABCD   A está en la posición 1.
Y en DCBA en 4.
El valor más alto de esos es 4. 4-1=3
La diferencia en cuanto a la posición de A en esos dos órdenes es 3. Y así es, A se movió 3 posiciones hacia la derecha.

En DifAbs pongo =MAX(ABS(B2); ABS(B4))-MIN(ABS(B2); ABS(B4))
B4 va cambiando según en qué fila esté.
El funcionamiento es el mismo, sólo que acá antes de analizar qué número es más alto se los convierte a positivos.

¿Pero es este el mejor método para medir las diferencias? No lo creo. Y volvemos a lo que habías dicho al inicio. Seguiré pensando. Creo que a mí la distancia absoluta me importa más, o sea, aunque la diferencia de DCBA y BDAC, con respecto a ABCD, según este método sea de 44, para mí BDAC es más diferente que DCBA, porque los jugadores que tienen al lado han cambiado totalmente y las distancias hacia el centro también.

Las diferencias normal y abs en cuanto a posiciones parecen no variar, o sea, son valores repetidos.
Ejemplo en la fila 5 y 6:
Código:
0 0 1 1
0 0 1 1

BDAC tiene muchos más puntos en DifAbs que DCBA, supongo que por ahí está la clave pero de momento no me doy cuenta de más.
« Última modificación: 10 Septiembre 2019, 03:35 am por Tachikomaia » En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.348


Ver Perfil
Re: ¿Medir variación de una serie? ¿obtener máxima variación?
« Respuesta #3 en: 10 Septiembre 2019, 22:52 pm »

Citar
¿Conoces este juegazo?
¡https://www.youtube.com/watch?v=wRT7Iqkczao
Yo dejé los juegos atrás hace más de 25 años...

Precisamente un objetivo primordial de la informática se basa en resolver cualquier problema sin necesidad de tener que conocer el funcionamiento de algo. Siempre habrá quien haga un análisis de requisitos que si será alguien que conozca al menos parcialmente el tema, la función del programador es transformar esos requisitos en código, sin importar de que se trata. De otro modo los programadores serían personas capacitadas exclusivamente para un tema especifico y nada más.
...la informática hace lo mismo que las matemáticas, se abstrae del objetivo final centrándose exclusivamente en el problema, es sólo la interfaz final del usuario la que pudiera necesitar ser amigable con el problema específico que trata.

Es decir, si necesitas que alguien conozca eso juego para poder ayudarte, mal vamos. Se supone que basta que tú, seas el que esté versado en el juego, se supone tambié que debieras ser capaz de trasladar la problemática subyacente a una prosa para que cualquiera pueda orientarte en la soución.

Citar
Citar
...yo quisiera variar las posiciones de los jugadores todo lo posible, aunque sin variar la formación (como 3-4-3).
Quiero que se varíen la posición de los jugadores individualmente, no como un grupo.
Ya. Pero el problema contigo es que siempre te mueves en medio de la ambigüedad, jamás eres capaz de dar las reglas precisas, exactas que definan lo que pretendes, siempre hay que añadir suposiciones para rellenar huecos y al final incluso así uno nunca acierta. Al final añades 'reglas' que después, ni siquiera intervienen, luego con ello solo añdes más confusión.

Creo tu no vas a cambiar tu actitud te diga lo que te diga, ni tu aptitud por más que te aconseje 'estudia esto' o 'repasa aquello' así que  no voy a comentar más... voy a ceñirme al problema salvo que las escasa reglas dadas vuelvan a alterarse/redifirse en otro mensaje y se desdigan d elo que ahora pudiera entenderse .


De entrada tiene que quedarte claro que dado una serie de por ejemplo 10 valores tomando solo 1, cualquiera de las otros 9 restantes, son igualmente variantes de ese otro valor, siempre y cuando al sistema se le suponga ser aleatorio. Si fuera secuencial (1º, 2º,3º...), entonces cuanto más cercano y de valor menor, tanto más 'cercano', pués para llegar al 9º hay que pasar por el 8º antes, para llegar al 8º hay que pasar por el 7º, etc...

Luego cuando tu dices que "variar al equipo lo más posible", matemáticamente carece de sentido, cualquiera de las variaciones entre todas las combinaciones posibles es igual de variada, no existe un grado de 'más'.
Por otro lado la acotación está admitida, cuando se dan reglas (sin ellas no), por ejemplo ciñendo el problema a un asunto específico, uno puede añadir una regla adicional como por ejemplo: 'ninguno debe repetir posición de la vez anterior', ó 'no más de dos pueden repetir posición anterior', etc... eso descarta variaciones, peor todavías las restantes deben considerarse igualmente equiprobables y equidistantes salvo que nuevas reglas vengan a restringir y acotar aún más, entonces podría alegarse que con cada regla se acota un grado de 'distancia'.
Luego tu primer problema es definir cuantas y cuáles son las reglas que necesitas quese cumplan, y entre las variaciones que resten después de aplicar esas reglas serán de igual 'distancia'. Descartando una u otra regla la distancia puede considerarse variada, para las variaciones que que queda acotadas por esa regla...

Si con grupos intentaste decir la variación de cantidad de elementos en dicho grupo, tal que al final la suma de toso ellos se mantenga en un total, tampoco es difícil definir un algoritmo que realice la tarea, pero todavia son precisas algunas reglas, como cantidad máximo de grupos (el máximo sin esa restricción será el grupo formado por solo un elemento, luego siendo 11 jugadores serían 11 grupos), sin esa restricción el mínimo será un grupo, todos pertenecen a 1 solo grupo), también deeb definirse reglas que individualicen cada grupo, por ejemplo llamado a un grupo defensas ppodríaa cotarse que el vamos minimo de elemntos que admite sea 2 y el máximo (por ejemplo) 5... por supuesto debes asegurarte que esas acotaciones sean congruentes entre sí, es decir que si un grupo se acota a un máximo de 7 y otro a 5, y se consideran 4 grupos, y el total de elementos son 11, solo esos 2 grupos ya superan el total, por lo que cuando para un grupo se eligió el máximo, ser congruente implica  que el resto de grupos puesto a su mínimo no puede superar el total, si se supera ese límite debe ser reducido hasta el total de elementos.
Entonces tu primera tarea es definir esas reglas:
A - Cuantos elementos participan (al saber que se trata de jugadores de fútbol, sabemos que s elimita a 11).
B - Cuantos grupos debe haber
C - Para cada grupo, dar un valor mínimo y máximo.

Con esos 3 datos debe construirse entonces un algoritmo, primero que pruebe la congruencia de las reglas dadas, y luego que 'imprima' los resultados de las agrupaciones.

La segunda tarea es determinar que elementos pueden formar parte de qué grupo, por ejemplo quizás solo 3 jugadores sean admitidos como porteros.
Este algoritmo es distinto del anterior y no afecta aquel, aquél define los grupos y éste que elementos pueden participar en qué grupo. Obviamente si fuere muy restriuctivo, podría dejar elementos sin participación en grupo alguno, porque el grupo ya tiene su máximo y en los grupos que cabe alguno más no puede formar parte... no pasa nada, simplemente esa variación es decartada porque no cumple las premisas. El problema pasaría de latente a existente solo si con esas restricciones fuera imposible formar una sola variación. Llevando una cuenta d elas variaciones aceptadas y rechazadas, se puede al final conocer la 'tolerancia' de tales restricciones.


No obstante, y aunque pones una tabla, solo con poner números y algunas etiquetas, no alcanza a entender qué haces, porqué, y dónde quieres ir a parar. Las explicaciones que das resultan insuficientes, porque tu hablas como si previamente ya hubieras explicado todo y todos supieramos de que estás hablando, cuando la realidad es que todo está en tu cabeza.

'Creo', entender que con 'DifAbs', lo que pretendes es señalar la diferencia de posición para un elemento entre una permutación y otra. Si eso es todo lo que pretences, te señalo que no es correcto, porque ahondando por ahí el riesgo de llegar a variaciones cíclicas es casi seguro (es decir acabarias repintiendo ciertas combinaciones y otras 'lícitas' nunca se darían. Es harto difícil que dadas una reglas antojadas, generen todas las variaciones posibles (admitidas).
Si para tí eso de la 'distancia' entre la posición previa y la actal, es lo que buscas y te satisface, entonces considera la suma de todos como la distancia total. Aunque no veo que vaya a cambiar con eso de cambiar la distancia 'máxima'.
Básicamente la distancia máxima invidual será entre la primera posición y la última, la sumá máxima. Y La suma de distancias, para dar la máxima se conseguirá de varias formas: básicamente será la media de cada par por la mitad de elementos. Esto es, si tienes 10, la suma del (1+10), (2+9), (3+8), (4+7), (5+6) equivale a la suma de: (1+6), (2+7), (3+8), (4+9), (5+10).

Sobre tu problema de números negativos, al resultado de hacer la resta, súmale el valor mínimo alcanzable.
Es decir si antes tenias esto:
a) 5-8 = -3; b) 6-2 = 4; c) 3-9 = -6; d) 7-1 = 6
Ordenadas: -6, -3, 4, 6;  c,a,b,d

Y el valor mínimo alcanzable (aquella resta que da el valor menor), será: 1-9 = -8
Será equivalente a 8 + la resta:
a) 8+5-8 = 5; b) 8+6-2 = 12; c) 8+3-9 = 2; d) 8+7-1= 14
Ordenando: 2,5,12,14; c,a,b,d

c,a,b,d Que es el mismo resultado que tenías antes, pero ahora con valores positivos.
Con "es el mismo resultado", quiere decir que mantienen el orden y diferencias absolutas, el orden se ve 'c,a,b,d', y las diferencias pueden comprobarse:
d(0) - a(0) = 6 - (-6) = 12
d(1) - a(1) = 14 - (2) = 12

Si tu solución no yace en este tercer apartado, define claramente las dos tareas que te señalo (en el segundo apartado) para poder ayudarte...
En línea

Tachikomaia


Conectado Conectado

Mensajes: 1.180


Superhacker (es broma xD )


Ver Perfil
Re: ¿Medir variación de una serie? ¿obtener máxima variación?
« Respuesta #4 en: 11 Septiembre 2019, 02:09 am »

Yo dejé los juegos atrás hace más de 25 años...
Quizá haces bien, a veces es triste estar como zombie esperando ciertos acontecimientos para presionar las mismas teclas, ver los mismos posibles efectos... Pero si no puedo investigar un juego simple, qué sentido tiene jugar uno complejo.

Citar
Precisamente un objetivo primordial de la informática se basa en resolver cualquier problema sin necesidad de tener que conocer el funcionamiento de algo.
Pero luego me pides más información...

Citar
Es decir, si necesitas que alguien conozca eso juego para poder ayudarte, mal vamos.
No es necesario. Ni siquiera es necesario conocer el fútbol, de hecho.

Citar
Citar
Quiero que se varíen la posición de los jugadores individualmente, no como un grupo.
Ya. Pero el problema contigo es que siempre te mueves en medio de la ambigüedad, jamás eres capaz de dar las reglas precisas, exactas que definan lo que pretendes, siempre hay que añadir suposiciones para rellenar huecos y al final incluso así uno nunca acierta. Al final añades 'reglas' que después, ni siquiera intervienen, luego con ello solo añdes más confusión.
No sé qué puedo hacer en este sentido. Cómo dar las reglas precisas por ejemplo.
Y sí te entiendo, mira qué me pasó aquí:
http://rinconmatematico.com/foros/index.php?topic=110185.msg436435#msg436435

Citar
Creo tu no vas a cambiar tu actitud te diga lo que te diga, ni tu aptitud por más que te aconseje 'estudia esto' o 'repasa aquello' así que  no voy a comentar más...
Pero si simplemente describí qué quería hacer. Al principio sólo hablé del iceberg digamos, el variar las posiciones de los jugadores sin cambiar la formación, o sea, lo aclaro, porque se podría variar las posiciones cambiando la formación, pero no es lo que quiero. Creo que eso es parte de lo que es definir las cosas claramente. Puse un ejemplo. Probablemente debí poner más en que se notara que era variar posiciones de jugadores, no variar posiciones de un grupo, pero es que nunca se me pasó por la cabeza que alguien pudiera interpretar que querría variar la posición de grupos. Es más, si hiciéramos una encuesta a la gente sobre cómo interpreta lo que escribí, dudo mucho que mucha gente interprete eso de "grupos".
Luego hablé de un objetivo más a fondo por si te interesaba o podías ayudarme con eso, ya que tiene que ver con IA. Y es algo que ayuda a entender el problema, o sea, se quieren probar candidatos (como se dice a posibles soluciones en el artículo de fuerza bruta de Wikipedia) lo más distintos posibles, variar el equipo lo más posible... Qué tiene de ambiguo no lo sé. O sea, es cuestionable qué significa "variar lo más posible", no lo sé exacto, pero hay cosas básicas que sí... y que cualquiera se supone que sabe.

Citar
De entrada tiene que quedarte claro que dado una serie de por ejemplo 10 valores tomando solo 1, cualquiera de las otros 9 restantes, son igualmente variantes de ese otro valor, siempre y cuando al sistema se le suponga ser aleatorio. Si fuera secuencial (1º, 2º,3º...), entonces cuanto más cercano y de valor menor, tanto más 'cercano', pués para llegar al 9º hay que pasar por el 8º antes, para llegar al 8º hay que pasar por el 7º, etc...
No entendí. Quizá se confunde el termino "serie", no me refiero a un conjunto de elementos sueltos, sino que son una secuencia, tienen un orden, como una serie y sus capítulos...

Citar
Luego cuando tu dices que "variar al equipo lo más posible", matemáticamente carece de sentido, cualquiera de las variaciones entre todas las combinaciones posibles es igual de variada, no existe un grado de 'más'.
Entonces no has entendido. Me recomendaron esto:
https://es.wikipedia.org/wiki/Distancia_de_Hamming
Ahí se habla de más distancia o menos distancia, o más diferente o menos diferente, o sea que no es invento mío, ni es como dices que todo es igual de variado/diferente.
Esto no es virgen o no virgen, no modificado o modificado. Cuan modificado está algo se puede medir, la cuestión del tema, media filosófica si se quiere, es cómo.
Pero ojo, lo que dicen en ese artículo no es igual a lo que yo planteo, porque ahí varían la extensión y agregan elementos nuevos, pero yo no hago eso (la "cadena" es siempre de 11 caracteres, y siempre son los mismos 11 sin repetición). Además, para ellos intercambiar 2 letras vale lo mismo sean las 2 centrales o las de los extremos, pero para mí no. En términos prácticos, intercambiar al puntero derecho por el izquierdo hace poca diferencia, comparado con lo que sería intercambiar a Messi por el arquero. Eso ya lo intenté explicar con las tablas que puse, pero bue, dices que no es suficiente...

Citar
'ninguno debe repetir posición de la vez anterior'
Se deduce que eso es deseable, pero no es prioritario.
O sea, si no repiten sus posiciones eso contribuye a que la modificación del equipo sea mayor, pero obviamente si se modifica una y otra vez llegará un punto en que algún jugador repetirá sus posiciones. En ningún caso es una prioridad.
También el problema se puede plantear como que quiero que se realicen todas las combinaciones, órdenes o como se llame, digamos que se muestren en pantalla como una lista, pero que el orden de la lista sea de modo que cada combinación sea lo más diferente posible de las anteriores.
O sea, en vez de:
ABCDEFGHIJK
ABCDEFGHIKJ
ABCDEFGHKJI
etc.
sería... no estoy seguro de cómo, pero mucho más variado; en la lista que puse siempre el equipo inicia igual: ABCDE... cada jugador está al lado del mismo... La idea es que todo eso cambie.

Citar
Luego tu primer problema es definir cuantas y cuáles son las reglas que necesitas quese cumplan, y entre las variaciones que resten después de aplicar esas reglas serán de igual 'distancia'. Descartando una u otra regla la distancia puede considerarse variada, para las variaciones que que queda acotadas por esa regla...
Lo más parecido a reglas que puedo decirte es:
- Cada cadena debe estar compuesta de 11 caracteres.

- Los componentes de las cadena deben ser siempre los mismos, sin repetirse, es decir, sólo se puede variar el orden, su posición.

Nota: Esto tachado no va, lo quité de momento.
- Entre más diferente sea la nueva distancia que cada jugador tiene hacia el centro, con respecto a la serie anterior, mejor.
Por ejemplo si A está primero, entonces su distancia al centro (posición 6) es 5 (6-1), y lo deseable es que ahora esté a una distancia lo más diferente de esa, o sea, así estaba:
ABCDEFGHIJK
F está en el centro, la posición 6.
¿Podemos hacer que la distancia de A al centro aumente? No.
Si hacemos esto:
BACDEFGHIJK
Ahora la distancia es 4.
Si en vez de eso hacemos esto:
FBCDEAGHIJK
Entonces la distancia de A al centro es 0.
¿Qué es más diferente de 5: 4 o 0?
0, porque 5-4=1 y 5-0=5, o sea, entre mayor sea el resultado de la resta, más diferencia. Si estaba en 1 y ahora en 2, se movió sólo 1, pero si se mueve a 6, se movió 5, se movió más, cambió más.
Al hacer esto:
KBCDEFGHIJA
Es un poco confuso o discutible sí, ya me dijeron en otro sitio:
"no hay una forma objetiva de definir "serie más diferente". Depende de que y como quieras ponderar las diferencias."
Pero a ver, por un lado la diferencia hacia el centro sigue siendo la misma, sólo cambia la dirección. El jugador sigue igualmente alejado del centro. Es lo que llamo diferencia absoluta. Creo que no le prestaré más atención a eso, disculpa sí, en esto no estoy tan definido.
En este caso tenemos 6-11=-5 ¿-5 es más diferente de 5, de lo que lo es 0? Sí, porque hay 10 de distancia en un caso y 5 en la otra.


- Entre más se mueva cada jugador con respecto a su posición anterior, mejor.
Desde
ABCDEFGHIJK
a
KJIHGFEDCBA
Es perfecto el cambio de A a K, pero es pésimo que F no haya cambiado de sitio.

- Entre más cambien las distancias entre los jugadores, mejor.
Desde
ABCDEFGHIJK
a
BDFHJKIGECA
Es perfecto el cambio en la distancia entre A y B (*), pero es pésimo que K siga luego de J.
(*): El hecho de ser negativa también cuenta, o sea, antes para ir de A a B había que moverse 1 paso a la derecha, pero ahora son como 10 a la izquierda, -10. La distancia pasó de 1 a -10, o sea, el cambio fue de 9.

- Entre más cambien las distancias "absolutas" entre los jugadores, mejor.
Desde
ABCDEFGHIJK
a
KJIHGFEDCBA
la variación de la distancia normal entre A y K fue perfecta, pero la distancia absoluta sigue siendo la misma, o sea, siguen igual de alejados. En el juego de fútbol es relevante, ya que algunos jugadores son más eficaces si están cerca de otros, por lo que estar alejados es basicamente igual de malo sea que uno esté de delantero y el otro de defensa o viceversa, lo más diferente sería que estén al lado.

Citar
Si con grupos intentaste decir la variación de cantidad de elementos en dicho grupo, tal que al final la suma de toso ellos se mantenga en un total
No te entiendo, y yo a penas (o nunca) hablé de grupos aquí, en el fondo sólo hay 1 grupo que es el equipo de 11 jugadores.

Citar
tampoco es difícil definir un algoritmo que realice la tarea, pero todavia son precisas algunas reglas, como cantidad máximo de grupos (el máximo sin esa restricción será el grupo formado por solo un elemento, luego siendo 11 jugadores serían 11 grupos), sin esa restricción el mínimo será un grupo, todos pertenecen a 1 solo grupo)
Creo que estás hablando de tu algoritmo que hace variaciones de grupos sean grupos de individuos o individuos por separado.

No sé qué decirte a eso. Tienes 11 letras y debes ponerlas en 11 cajones, de modo que en cada cajón haya 1 sola letra. En ese sentido es simple... no veo grupos, pero si lo entiendes como grupos genial.

Olvida que hay defensas, etc, sólo hay 11 posiciones.

Citar
A - Cuantos elementos participan (al saber que se trata de jugadores de fútbol, sabemos que s elimita a 11).
B - Cuantos grupos debe haber
C - Para cada grupo, dar un valor mínimo y máximo.
A- 11
B y C- No entiendo la pregunta o relevancia. Supongo que la respuesta de B es 11 y para C se deduce que es 1 y 1.

Citar
Con esos 3 datos debe construirse entonces un algoritmo, primero que pruebe la congruencia de las reglas dadas, y luego que 'imprima' los resultados de las agrupaciones.
De acuerdo.

Citar
La segunda tarea es determinar que elementos pueden formar parte de qué grupo, por ejemplo quizás solo 3 jugadores sean admitidos como porteros.
No te compliques. Sí hay limitaciones en el juego, algunos no pueden ser goleros, pero tú asume que cualquiera puede serlo y yo me encargo de ajustar, que tampoco pretendo que sea tan perfecto. Además aún no sé cuales no pueden ser porteros, creo que tiene que ver con el dibujo o sprite del jugador, no he probado todos y no puedo saberlo a priori.

Citar
No obstante, y aunque pones una tabla, solo con poner números y algunas etiquetas, no alcanza a entender qué haces, porqué, y dónde quieres ir a parar. Las explicaciones que das resultan insuficientes, porque tu hablas como si previamente ya hubieras explicado todo y todos supieramos de que estás hablando, cuando la realidad es que todo está en tu cabeza.
Puede que lo haya explicado en otro sitio y me confundo, es decir, tengo la idea de que lo expliqué en este cuando no.
Lo que hice en las tablas fue:
1ero, en las 1eras columnas, marcar las posiciones de los jugadores.
Luego en esa misma fila (2) pero en columnas posteriores, puse la distancia que tenían entre sí, y con respecto al centro (que ahora me parece irrelevante).
Luego puse otras combinaciones, repetí el proceso, y luego debajo medí diferencias en ciertos aspectos, entre la combinación de la fila 2 y las que están arriba de los cálculos. Luego sumando esas diferencias obtuve una aproximación a lo que sería la diferencia total entre cada combinación y con respecto a la de la fila 2.

Citar
Creo', entender que con 'DifAbs', lo que pretendes es señalar la diferencia de posición para un elemento entre una permutación y otra.
Sí, pero diferencia absoluta en ese caso (DifAbs). Ya lo expliqué arriba.

Citar
Si eso es todo lo que pretences, te señalo que no es correcto, porque ahondando por ahí el riesgo de llegar a variaciones cíclicas es casi seguro (es decir acabarias repintiendo ciertas combinaciones y otras 'lícitas' nunca se darían. Es harto difícil que dadas una reglas antojadas, generen todas las variaciones posibles (admitidas).
Se permiten los ajustes necesarios para que no haya defectos... o tantos.

Citar
Si para tí eso de la 'distancia' entre la posición previa y la actal, es lo que buscas y te satisface, entonces considera la suma de todos como la distancia total.
Creo que eso hago en parte.

Citar
Aunque no veo que vaya a cambiar con eso de cambiar la distancia 'máxima'.
Básicamente la distancia máxima invidual será entre la primera posición y la última, la sumá máxima. Y La suma de distancias, para dar la máxima se conseguirá de varias formas: básicamente será la media de cada par por la mitad de elementos. Esto es, si tienes 10, la suma del (1+10), (2+9), (3+8), (4+7), (5+6) equivale a la suma de: (1+6), (2+7), (3+8), (4+9), (5+10).
Esto no lo entendí.

Citar
Sobre tu problema de números negativos
Creo que lo resolví en la última tabla y mostré las fórmulas.

Citar
al resultado de hacer la resta, súmale el valor mínimo alcanzable.
Es decir si antes tenias esto:
a) 5-8 = -3; b) 6-2 = 4; c) 3-9 = -6; d) 7-1 = 6
Ordenadas: -6, -3, 4, 6;  c,a,b,d

Y el valor mínimo alcanzable (aquella resta que da el valor menor), será: 1-9 = -8
Será equivalente a 8 + la resta:
a) 8+5-8 = 5; b) 8+6-2 = 12; c) 8+3-9 = 2; d) 8+7-1= 14
Ordenando: 2,5,12,14; c,a,b,d

c,a,b,d Que es el mismo resultado que tenías antes, pero ahora con valores positivos.
Con "es el mismo resultado", quiere decir que mantienen el orden y diferencias absolutas, el orden se ve 'c,a,b,d', y las diferencias pueden comprobarse:
d(0) - a(0) = 6 - (-6) = 12
d(1) - a(1) = 14 - (2) = 12
No entiendo.


Yo creo que he dado con la solución bruta de la 1era parte del problema (la 1era parte es hallar una serie lo más diferente de la que comienza como el abedecario). Lo digo, pero no creo que lo entiendas aunque seguramente sepas formas de hacerlo mejor. Hablamos en distinto idioma...
1- Creo 11 variables, una con valor 1, la otra con 2, etc, hasta 11. Cada una representa la posición de un jugador o letra distint@. Sus nombres son IV1, IV2, etc. I es por inicial.
2- Creo no sé cuántas variables más: En la serie inicial distancia de 1a2, de 1a3, etc. Sus nombres son ID1a2, ID1a3, etc. Sus valores son el resultado de IV(2ndo número) - IV(1er número), o sea, en el caso de ID1a2 sería IV2-IV1.
3- Creo 11 variables más, V1, V2, etc. Estas corresponden a la nueva serie que irá variando hasta cumplir los objetivos. Los valores iniciales serían como las IVs.
4- Más: Distancia de 1a2, de 1a3, etc. Sus nombres son D1a2, D1a3, etc. Por ahora no necesitan un valor.
5- 2 más: MayorDiferencia=0 y Diferencia, de momento sin valor requerido.
6- Aumento a V11, como si junto a las demás (V10, etc, hasta V1) fuesen un número de 11 cifras y de 11 posibles caracteres (sin 0). O sea, tengo 1, 2, 3... 10, 11, por lo que al aumentarle 1 quedaría: 1, 2, 3... 11, 1.
7- Chequeo que las variables Vs que se hayan modificado tengan valores distintos a las demás. Si eso no se cumple se regresa al paso 6.
8- Calculo los valores de D1a2, D1a3, etc, como se hizo con las IDs, sólo que usando Vs en vez de IVs.
9- Calculo la diferencia entre IV1 y V1, entre IV2 y V2, etc, como hice en la última tabla, por ejemplo en las coordenadas Pos A y Difer (fila 5): =MAX(B2;B4)-MIN(B2;B4), o sea, en el caso de IV1 y V1, tomaría la que tenga el valor mayor y le restaría el otro. La suma de esos cálculos quedaría grabada en Diferencia.
10- Calculo la diferencia entre ID1a2 y D1a2, entre ID1a3 y D1a3, etc. Como hice en la última tabla, o sea, al valor que sea mayor del par se le resta el menor. A la variable Diferencia se le suman esos cálculos.
11- Si Diferencia no es mayor que MayorDiferencia, regresa al paso 6.
12- MayorDiferencia=Diferencia. Y creamos unas variables (sería mejor antes, pero recién noté su necesidad y así es más claro) que marcan las Vs, o sea, llegado este punto obtuvimos una serie que respecto a la inicial es la más diferente de las que hemos probado, por lo tanto la guardamos.
13- Ir al paso 6.

Olvidé poner un límite, sería en el paso 6, o sea, lo que dice ese paso sólo puede aplicarse si el número que forman las Vs es aumentable. Cuando es 11, 10, 9, 8... 1, no es aumentable, ya no hay más combinaciones que probar.

Más allá de todas las variables lo que hay es:
1- Marcamos una serie de la cual queremos crear otra lo más distinta posible.
2- Se genera una nueva serie si es posible, sino el programa muestra la mejor serie hallada.
3- Medimos la diferencia entre la serie inicial y la nueva.
4- Si la diferencia es la mayor obtenida hasta el momento, guardamos la serie generada.
5- Volvemos al paso 2.
« Última modificación: 11 Septiembre 2019, 05:14 am por Tachikomaia » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
AYUDA con variacion en frecuencia de metronomo
Electrónica
ben9 1 2,502 Último mensaje 4 Enero 2006, 20:52 pm
por botboat
Variacion respecto al calor?
Materiales y equipos
itek 5 2,959 Último mensaje 6 Abril 2008, 18:55 pm
por Spanslus9mm
Obtener numero de serie del fabricante (usb)
Programación Visual Basic
Vampersy 1 15,183 Último mensaje 21 Enero 2009, 13:00 pm
por Fabricio
tengo variacion en velocidad de tarjetas wifi????
Hacking Wireless
SHACK 8 4,920 Último mensaje 3 Septiembre 2010, 13:33 pm
por AlexAltea
[C] Variación cifrado ROT.
Programación C/C++
The Swash 0 1,961 Último mensaje 3 Octubre 2011, 04:13 am
por The Swash
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines