Conseguir otra PC fue difícil, por acá no me ofrecían usadas ni algo parecido. Alguien me dijo que averiguaría pero no me llamó, y no es que esa persona me caiga del todo bien, ya está. Lo más parecido que me habían ofrecido era una por $20000 uruguayos, no recuerdo las especificaciones, me parecía demasiado. Conseguí esta por $5000 uruguayos:
Intel(R) Core(TM) i3-6100 CPU @ 3.70GHz 3.70 GHz
4,00 GB
Disco de 500 GB
Incluye grabadora de DVD creo, en realidad sólo quería que se le pudiera poner, que ya tengo, pero no la uso mucho claro, sólo quiero ir pasando cosas.
Mi antigua tenía Windows 7. Esta el 10. Parece mucho más lento, o es que no paraban de actualizarse cosas, y visualmente es como demasiado aburrido.
Al presionar el tilde me aparecía esto { o algo parecido. La IA insistía en que ponga que era teclado latinoamericano, pero eso es lo que estaba puesto. Probé el de españa y sirvió.
Puse que la resolución sea de 1024x768 o algo así, sino todo se me ve demasiado chico. Resultó que la pantalla no se estiraba del todo. Descargué drivers, un asistente, todo recomendado por la IA, pero lo que me sirvió fue algo que ni me acuerdo, una especie de configurador de Intel en Microsoft Store, algo como Centro de comandos de Intel. Parece que como mi monitor es demasiado antiguo, tipo 4:3, cuando los de ahora son más anchos, los nuevos drivers no funcionan bien. Deberían funcionar para todo, déjense de joder.
El sonido no funcionaba, usando el solucionador de problemas me dijo que podía ser por unos efectos que tenía configurados, los sacó y funcionó.
Macromedia Flash 5 decía que no podía modificar el registro. La IA me dijo que cree un acceso directo que tenga permisos de administrador. También me aparecía un cartel de si quería permitir que haga cambios en el equipo. Luego no me abría archivos. Capaz que uds me habían dicho cómo resolver todo eso, pero no recuerdo, por ahora tuve que cambiar la seguridad de Windows, que no me paralice Flash, la IA me dijo que no es posible poner exepciones, que sino los virus se pondrían como excepciones, o sea Windows te advierte de cada programa sospechoso según él, o de ninguno, no hay termino medio. Luego continuando la charla me dijo que hay programas que crean accesos directos especiales y que cambiando el registro se puede lograr que Windows abra los fla usando ese acceso directo, pero está complicado. Si me pueden ayudar con esto, estaría bueno.
En cuanto a lo vistual, aún no he tocado mucho, por ahora la esperanza es un tal tema Aerolite que según la IA Microsoft puso pero es complicado hacer que funcione. Joder, qué pesados.
Microsoft Edge parece empecinarse en ser el navegador predeterminado, sobre eso voy a tener que actuar también, y no quiero que se estén actualizando y ejecutando cosas que no uso. Les iré preguntando en otros momentos.
En mis proyectos no he avanzado mucho, más bien sólo en el de la IA para Signos en línea, tengo esto cerca de terminarlo:
Código
// 3 en línea muy simplificado: // 2 jugadores rivales, A y B. // No hay tablero, hay una cadena de texto. // La acción es poner 0 o 1 en el 1er sitio disponible. // Hay victoria de A cuando la cadena tiene 3 "0", // victoria de B cuando la cadena tiene 3 "1", // y empate cuando no hay victoria y... // la cadena tiene 4 caracteres: // // Situaciones a investigar: S1 = ""; S2 = "0"; S3 = "1"; S4 = "00"; S5 = "01"; S6 = "10"; S7 = "11"; S8 = "001"; S9 = "010"; S10 = "011"; S11 = "100"; S12 = "101"; S13 = "110"; // // Indica de qué nro de situación se cargarán datos: NDeSInvestigandose = 13; do { SInvestigandose = eval("S"+NDeSInvestigandose); // Se ponen valores malos o peores que los posibles... // para que sean fáciles de superar por... // valores obtenidos y no se sustituyan por iguales: // Averiguar de quién es el turno: if (SInvestigandose.length%2 == 0) { Turno = "A"; // Asumiendo que ambos juegan bien // (usan su BestAction), // indica el ganador (A o B) o empate (E); // el resultado no es necesariamente inmediato: EndEsperadoDeBest = "B"; // Si A siempre usa su BestAction y B juega al azar // (esto se va sustituyendo por mejores resultados): // PROBABLEMENTE EN VEZ DE ALOSE Y BLOSE SE PODRÍA USAR DRAW // PORQUE EL LOSE DE UNO ES IGUAL AL WIN DEL OTRO. ALoseChanceDeBest = 101; AWinChanceDeBest = 0; // Si B siempre usa su BestAction y A juega al azar // (a esto se le va sumando para luego promediarlo): BLoseChanceDeBest = 0; BWinChanceDeBest = 0; } else { Turno = "B"; // Básicamente todo es al revés: EndEsperadoDeBest = "A"; ALoseChanceDeBest = 0; AWinChanceDeBest = 0; BLoseChanceDeBest = 101; BWinChanceDeBest = 0; } trace ("Investigando la situación "+SInvestigandose+", es el turno de "+Turno); // Acción a realizar 1ero: Action = 0; // PROBABLEMENTE AÚN INNEC // Mejor acción hallada hasta ahora en la NDeSInvestigandose: BestAction = 0; // PROBABLEMENTE AÚN INNEC // Usando siempre BestAction indica cuántas acciones... // faltan para llegar a un final, contando esta: DistanciaDeBest = 0; // Si ambos jugaran al azar // (a esto se le va sumando para luego promediarlo): ALoseChance = 0; AWinChance = 0; BLoseChance = 0; BWinChance = 0; do { // Nueva situación al aplicarle una acción... // a la investigada: NewS = SInvestigandose+Action; // Para evitar reconcatenar al cargar datos... // de la nueva situación: SNewS = "S"+NewS; trace ("Se realizó la acción "+Action+", el resultado es "+NewS); // Para evaluar el resultado: CantidadDe0s = 0; CantidadDe1s = 0; CaracterRevisandose = 0; do { if (NewS.charat(CaracterRevisandose) == "0") { CantidadDe0s++; } else { CantidadDe1s++; } CaracterRevisandose++; } while (CaracterRevisandose<NewS.length); /////////////////////////////////////////////////////////// // Turno de A: /////////////////////////////////////////////////////////// if (Turno == "A") { if (CantidadDe0s == 3) { trace ("Victoria de A"); BLoseChanceDeBest = BLoseChanceDeBest+100; AWinChance = AWinChance+100; BLoseChance = BLoseChance+100; if (EndEsperadoDeBest != "A") { trace ("Se sustituyen datos sobre qué hacer en la investigada y por qué"); BestAction = Action; EndEsperadoDeBest = "A"; DistanciaDeBest = 0; ALoseChanceDeBest = 0; AWinChanceDeBest = 100; } } else if (CantidadDe1s == 3) { trace ("Derrota de A"); BWinChanceDeBest = BWinChanceDeBest+100; ALoseChance = ALoseChance+100; BWinChance = BWinChance+100; if (ALoseChanceDeBest == 101) { trace ("Es el mejor resultado hallado, se sustituyen datos sobre qué hacer en la S investigada y por qué"); BestAction = Action; DistanciaDeBest = 0; ALoseChanceDeBest = 100; AWinChanceDeBest = 0; } } else if (NewS.length == 4) { trace ("Empate"); if (EndEsperadoDeBest == "B") { trace ("Es el mejor resultado hallado, se sustituyen datos sobre qué hacer en la S investigada y por qué"); BestAction = Action; EndEsperadoDeBest = "E"; DistanciaDeBest = 0; ALoseChanceDeBest = 0; AWinChanceDeBest = 0; } } else { trace ("No es un final, se vará qué tan conveniente es"); NewEndEsperadoDeBest = eval(SNewS+"EndEsperadoDeBest"); if (NewEndEsperadoDeBest == "A") { trace ("Se espera victoria"); if (NewEndEsperadoDeBest != EndEsperadoDeBest) { trace ("Es el mejor resultado hallado, se sustituyen datos sobre qué hacer en la S investigada y por qué"); BestAction = Action; EndEsperadoDeBest = "A"; DistanciaDeBest = eval(SNewS+"DistanciaDeBest"); ALoseChanceDeBest = eval(SNewS+"ALoseChanceDeBest"); BWinChanceDeBest = eval(SNewS+"BWinChanceDeBest"); } else if (NewEndEsperadoDeBest == EndEsperadoDeBest) { // inútil aquí quizá trace ("Es igual al mejor resultado hallado, se verá la distancia"); NewDistanciaDeBest = eval(SNewS+"DistanciaDeBest"); if (NewDistanciaDeBest<DistanciaDeBest) { trace ("Es menor, se sustituyen datos sobre qué hacer en la S investigada y por qué"); BestAction = Action; DistanciaDeBest = NewDistanciaDeBest; ALoseChanceDeBest = eval(SNewS+"ALoseChanceDeBest"); AWinChanceDeBest = eval(SNewS+"AWinChanceDeBest"); } else if (NewDistanciaDeBest == DistanciaDeBest) { trace ("Es igual, se verá la chance de perder"); NewALoseChanceDeBest = eval(SNewS+"ALoseChanceDeBest"); if (NewALoseChanceDeBest<ALoseChanceDeBest) { trace ("Es menor, se sustituyen datos sobre qué hacer en la S investigada y por qué"); BestAction = Action; ALoseChanceDeBest = NewALoseChanceDeBest; AWinChanceDeBest = eval(SNewS+"AWinChanceDeBest"); } else if (NewALoseChanceDeBest == ALoseChanceDeBest) { trace ("Es igual, se verá la chance de ganar"); NewAWinChanceDeBest = eval(SNewS+"AWinChanceDeBest"); if (NewAWinChanceDeBest>AWinChanceDeBest) { trace ("Es mayor, se sustituyen datos sobre qué hacer en la S investigada y por qué"); BestAction = Action; AWinChanceDeBest = NewAWinChanceDeBest; } else if (NewAWinChanceDeBest == AWinChanceDeBest) { trace ("Es igual, se verán las chances por azar"); // falta esto } } } } } else if (NewEndEsperadoDeBest == "E") { trace ("Se espera empate"); if (EndEsperadoDeBest == "B") { trace ("Es el mejor resultado hallado, se sustituyen datos sobre qué hacer en la S investigada y por qué"); BestAction = Action; EndEsperadoDeBest = "E"; DistanciaDeBest = eval(SNewS+"DistanciaDeBest"); ALoseChanceDeBest = eval(SNewS+"ALoseChanceDeBest"); BWinChanceDeBest = eval(SNewS+"BWinChanceDeBest"); } else if (EndEsperadoDeBest == "E") { // ESTA PARTE ES CASI IGUAL A UNA ANTERIOR, AQUÍ SE DEFINE DISTANCIA trace ("Es igual al mejor resultado hallado, se verá la chance de perder"); NewALoseChanceDeBest = eval(SNewS+"ALoseChanceDeBest"); if (NewALoseChanceDeBest<ALoseChanceDeBest) { trace ("Es menor, se sustituyen datos sobre qué hacer en la S investigada y por qué"); BestAction = Action; DistanciaDeBest = eval(SNewS+"DistanciaDeBest"); ALoseChanceDeBest = NewALoseChanceDeBest; AWinChanceDeBest = eval(SNewS+"AWinChanceDeBest"); } else if (NewALoseChanceDeBest == ALoseChanceDeBest) { trace ("Es igual, se verá la chance de ganar"); NewAWinChanceDeBest = eval(SNewS+"AWinChanceDeBest"); if (NewAWinChanceDeBest>AWinChanceDeBest) { trace ("Es mayor, se sustituyen datos sobre qué hacer en la S investigada y por qué"); BestAction = Action; DistanciaDeBest = eval(SNewS+"DistanciaDeBest"); AWinChanceDeBest = NewAWinChanceDeBest; } else if (NewAWinChanceDeBest == AWinChanceDeBest) { trace ("Es igual, se verán las chances por azar"); // falta esto } } } } else { trace ("Se espera derrota"); if (NewEndEsperadoDeBest == EndEsperadoDeBest) { trace ("Es igual al mejor resultado hallado, se verá la chance de perder"); // ESTA PARTE ES IGUAL A UNA ANTERIOR (se define distancia) NewALoseChanceDeBest = eval(SNewS+"ALoseChanceDeBest"); if (NewALoseChanceDeBest<ALoseChanceDeBest) { trace ("Es menor, se sustituyen datos sobre qué hacer en la S investigada y por qué"); BestAction = Action; DistanciaDeBest = eval(SNewS+"DistanciaDeBest"); ALoseChanceDeBest = NewALoseChanceDeBest; AWinChanceDeBest = eval(SNewS+"AWinChanceDeBest"); } else if (NewALoseChanceDeBest == ALoseChanceDeBest) { trace ("Es igual, se verá la chance de ganar"); NewAWinChanceDeBest = eval(SNewS+"AWinChanceDeBest"); if (NewAWinChanceDeBest>AWinChanceDeBest) { trace ("Es mayor, se sustituyen datos sobre qué hacer en la S investigada y por qué"); BestAction = Action; DistanciaDeBest = eval(SNewS+"DistanciaDeBest"); AWinChanceDeBest = NewAWinChanceDeBest; } else if (NewAWinChanceDeBest == AWinChanceDeBest) { trace ("Es igual, se verán las chances por azar"); // falta esto } } } } // Se suman las chances de la situación obtenida: ALoseChance = ALoseChance+eval(SNewS+"ALoseChance"); AWinChance = AWinChance+eval(SNewS+"AWinChance"); BLoseChance = BLoseChance+eval(SNewS+"BLoseChance"); BWinChance = BWinChance+eval(SNewS+"BWinChance"); ALoseChanceDeBest = ALoseChanceDeBest+eval(SNewS+"ALoseChanceDeBest"); AWinChanceDeBest = AWinChanceDeBest+eval(SNewS+"AWinChanceDeBest"); BLoseChanceDeBest = BLoseChanceDeBest+eval(SNewS+"BLoseChanceDeBest"); BWinChanceDeBest = BWinChanceDeBest+eval(SNewS+"BWinChanceDeBest"); } } else { /////////////////////////////////////////////////////////// // Turno de B: /////////////////////////////////////////////////////////// if (CantidadDe1s == 3) { trace ("Victoria de B"); ALoseChanceDeBest = ALoseChanceDeBest+100; BWinChance = BWinChance+100; ALoseChance = ALoseChance+100; if (EndEsperadoDeBest != "B") { trace ("Se sustituyen datos sobre qué hacer en la investigada y por qué"); BestAction = Action; EndEsperadoDeBest = "B"; DistanciaDeBest = 0; BLoseChanceDeBest = 0; BWinChanceDeBest = 100; } } else if (CantidadDe0s == 3) { trace ("Derrota de B"); AWinChanceDeBest = AWinChanceDeBest+100; BLoseChance = BLoseChance+100; AWinChance = AWinChance+100; if (BLoseChanceDeBest == 101) { trace ("Es el mejor resultado hallado, se sustituyen datos sobre qué hacer en la S investigada y por qué"); BestAction = Action; DistanciaDeBest = 0; BLoseChanceDeBest = 100; BWinChanceDeBest = 0; } } else if (NewS.length == 4) { trace ("Empate"); if (EndEsperadoDeBest == "A") { trace ("Es el mejor resultado hallado, se sustituyen datos sobre qué hacer en la S investigada y por qué"); BestAction = Action; EndEsperadoDeBest = "E"; DistanciaDeBest = 0; BLoseChanceDeBest = 0; BWinChanceDeBest = 0; } } else { trace ("No es un final, se vará qué tan conveniente es"); NewEndEsperadoDeBest = eval(SNewS+"EndEsperadoDeBest"); if (NewEndEsperadoDeBest == "B") { trace ("Se espera victoria"); if (NewEndEsperadoDeBest != EndEsperadoDeBest) { trace ("Es el mejor resultado hallado, se sustituyen datos sobre qué hacer en la S investigada y por qué"); BestAction = Action; EndEsperadoDeBest = "B"; DistanciaDeBest = eval(SNewS+"DistanciaDeBest"); BLoseChanceDeBest = eval(SNewS+"BLoseChanceDeBest"); AWinChanceDeBest = eval(SNewS+"AWinChanceDeBest"); } else if (NewEndEsperadoDeBest == EndEsperadoDeBest) { // inútil aquí quizá trace ("Es igual al mejor resultado hallado, se verá la distancia"); NewDistanciaDeBest = eval(SNewS+"DistanciaDeBest"); if (NewDistanciaDeBest<DistanciaDeBest) { trace ("Es menor, se sustituyen datos sobre qué hacer en la S investigada y por qué"); BestAction = Action; DistanciaDeBest = NewDistanciaDeBest; BLoseChanceDeBest = eval(SNewS+"BLoseChanceDeBest"); BWinChanceDeBest = eval(SNewS+"BWinChanceDeBest"); } else if (NewDistanciaDeBest == DistanciaDeBest) { trace ("Es igual, se verá la chance de perder"); NewBLoseChanceDeBest = eval(SNewS+"BLoseChanceDeBest"); if (NewBLoseChanceDeBest<BLoseChanceDeBest) { trace ("Es menor, se sustituyen datos sobre qué hacer en la S investigada y por qué"); BestAction = Action; BLoseChanceDeBest = NewBLoseChanceDeBest; BWinChanceDeBest = eval(SNewS+"BWinChanceDeBest"); } else if (NewBLoseChanceDeBest == BLoseChanceDeBest) { trace ("Es igual, se verá la chance de ganar"); NewBWinChanceDeBest = eval(SNewS+"BWinChanceDeBest"); if (NewBWinChanceDeBest>BWinChanceDeBest) { trace ("Es mayor, se sustituyen datos sobre qué hacer en la S investigada y por qué"); BestAction = Action; BWinChanceDeBest = NewBWinChanceDeBest; } else if (NewBWinChanceDeBest == BWinChanceDeBest) { trace ("Es igual, se verán las chances por azar"); // falta esto } } } } } else if (NewEndEsperadoDeBest == "E") { trace ("Se espera empate"); if (EndEsperadoDeBest == "A") { trace ("Es el mejor resultado hallado, se sustituyen datos sobre qué hacer en la S investigada y por qué"); BestAction = Action; EndEsperadoDeBest = "E"; DistanciaDeBest = eval(SNewS+"DistanciaDeBest"); BLoseChanceDeBest = eval(SNewS+"BLoseChanceDeBest"); AWinChanceDeBest = eval(SNewS+"AWinChanceDeBest"); } else if (EndEsperadoDeBest == "E") { // ESTA PARTE ES CASI IGUAL A UNA ANTERIOR, AQUÍ SE DEFINE DISTANCIA trace ("Es igual al mejor resultado hallado, se verá la chance de perder"); NewBLoseChanceDeBest = eval(SNewS+"BLoseChanceDeBest"); if (NewBLoseChanceDeBest<BLoseChanceDeBest) { trace ("Es menor, se sustituyen datos sobre qué hacer en la S investigada y por qué"); BestAction = Action; DistanciaDeBest = eval(SNewS+"DistanciaDeBest"); BLoseChanceDeBest = NewBLoseChanceDeBest; BWinChanceDeBest = eval(SNewS+"BWinChanceDeBest"); } else if (NewBLoseChanceDeBest == BLoseChanceDeBest) { trace ("Es igual, se verá la chance de ganar"); NewBWinChanceDeBest = eval(SNewS+"BWinChanceDeBest"); if (NewBWinChanceDeBest>BWinChanceDeBest) { trace ("Es mayor, se sustituyen datos sobre qué hacer en la S investigada y por qué"); BestAction = Action; DistanciaDeBest = eval(SNewS+"DistanciaDeBest"); BWinChanceDeBest = NewBWinChanceDeBest; } else if (NewBWinChanceDeBest == BWinChanceDeBest) { trace ("Es igual, se verán las chances por azar"); // falta esto } } } } else { trace ("Se espera derrota"); if (NewEndEsperadoDeBest == EndEsperadoDeBest) { trace ("Es igual al mejor resultado hallado, se verá la chance de perder"); // ESTA PARTE ES IGUAL A UNA ANTERIOR (se define distancia) NewBLoseChanceDeBest = eval(SNewS+"BLoseChanceDeBest"); if (NewBLoseChanceDeBest<BLoseChanceDeBest) { trace ("Es menor, se sustituyen datos sobre qué hacer en la S investigada y por qué"); BestAction = Action; DistanciaDeBest = eval(SNewS+"DistanciaDeBest"); BLoseChanceDeBest = NewBLoseChanceDeBest; BWinChanceDeBest = eval(SNewS+"BWinChanceDeBest"); } else if (NewBLoseChanceDeBest == BLoseChanceDeBest) { trace ("Es igual, se verá la chance de ganar"); NewBWinChanceDeBest = eval(SNewS+"BWinChanceDeBest"); if (NewBWinChanceDeBest>BWinChanceDeBest) { trace ("Es mayor, se sustituyen datos sobre qué hacer en la S investigada y por qué"); BestAction = Action; DistanciaDeBest = eval(SNewS+"DistanciaDeBest"); BWinChanceDeBest = NewBWinChanceDeBest; } else if (NewBWinChanceDeBest == BWinChanceDeBest) { trace ("Es igual, se verán las chances por azar"); // falta esto } } } } // Se suman las chances de la situación obtenida: BLoseChance = BLoseChance+eval(SNewS+"BLoseChance"); BWinChance = BWinChance+eval(SNewS+"BWinChance"); ALoseChance = ALoseChance+eval(SNewS+"ALoseChance"); AWinChance = AWinChance+eval(SNewS+"AWinChance"); BLoseChanceDeBest = BLoseChanceDeBest+eval(SNewS+"BLoseChanceDeBest"); BWinChanceDeBest = BWinChanceDeBest+eval(SNewS+"BWinChanceDeBest"); ALoseChanceDeBest = ALoseChanceDeBest+eval(SNewS+"ALoseChanceDeBest"); AWinChanceDeBest = AWinChanceDeBest+eval(SNewS+"AWinChanceDeBest"); } } Action++; } while (Action<2); trace ("No hay más acciones posibles, anotando datos"); /////////////////////////////////////////////////////////// // Guardar datos descubiertos de las situaciones: /////////////////////////////////////////////////////////// set ("S"+SInvestigandose+"BestAction", BestAction); set ("S"+SInvestigandose+"EndEsperadoDeBest", EndEsperadoDeBest); set ("S"+SInvestigandose+"DistanciaDeBest", DistanciaDeBest+1); set ("S"+SInvestigandose+"AWinChance", AWinChance/2); set ("S"+SInvestigandose+"BWinChance", BWinChance/2); if (Turno == "A") { set ("S"+SInvestigandose+"ALoseChanceDeBest", ALoseChanceDeBest); set ("S"+SInvestigandose+"AWinChanceDeBest", AWinChanceDeBest); set ("S"+SInvestigandose+"BLoseChanceDeBest", BLoseChanceDeBest/2); set ("S"+SInvestigandose+"BWinChanceDeBest", BWinChanceDeBest/2); } else { set ("S"+SInvestigandose+"ALoseChanceDeBest", ALoseChanceDeBest/2); set ("S"+SInvestigandose+"AWinChanceDeBest", AWinChanceDeBest/2); set ("S"+SInvestigandose+"BLoseChanceDeBest", BLoseChanceDeBest); set ("S"+SInvestigandose+"BWinChanceDeBest", BWinChanceDeBest); } // Investigar la situación anterior de la lista: NDeSInvestigandose--; } while (NDeSInvestigandose>0);
Cuando termine de explicármelo con Excel se los explico. Y lo tengo bastante aplicado a la versión definitiva que sí es un tablero.
En cuanto al dibujante, he pensado que debería unir 2 puntos, o sea formar líneas, y luego 3 y luego pintar el interior, formar triángulos. Todavía no me entra en la cabeza que se requiera T A N T A matemática para hacer estas cosas. Sé que tiene que ver con reglas de 3, pero el hecho de que a veces los valores bajen cuando el otro sube, distancias negativas y yo que sé qué, me complicada. Lo estoy pensando.
Ah, tuve que comprar un adaptador VGA a HDMI o algo así, mi monitor tiene conexión antigua...





Autor



En línea

