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.
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...
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.
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#msg436435Creo 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.
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...
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_HammingAhí 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...
'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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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í.
Sobre tu problema de números negativos
Creo que lo resolví en la última tabla y mostré las fórmulas.
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.