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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


  Mostrar Temas
Páginas: 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ... 36
61  Media / Multimedia / ¿Por qué este video de YT es tan difícil de descargar? en: 11 Febrero 2024, 18:20 pm
Como último recurso probaré los métodos que uds me dijeron en un tema que hice hace tiempo sobre un video en otro lado, aquí no estoy preguntando cómo descargar este sino por qué es tan difícil hacerlo, qué tiene de especial, si alguien sabe. Probé diversas páginas de descarga sin instaladores como debe ser y en muchos casos me dice esto:
Se denegó el acceso a rr5---sn-p5qlsn7s.googlevideo.comNo tienes autorización para ver esta página.
HTTP ERROR 403

Por cierto a mí no me interesa ver esta basura, es para una abuela:
https://www.youtube.com/watch?v=NBv6qxKxWEY




https://www.youtube.com/watch?v=NBv6qxKxWEY
62  Programación / Programación General / ¿Cuando mostrar cosas en pantalla? en: 5 Febrero 2024, 21:46 pm
Otra duda aparentemente tonta que me ha tenido trancado demasiado tiempo.

En programas que hacen poco, el print o lo que sea se pone casi al final, para mostrar el resultado de la tarea. Nada más.

En programas que hacen muchas cosas, lo mismo pero los prints también se ponen antes de ciertos procesos o después para indicar en qué parte del programa va, o qué está analizando en el momento. Lo vemos cuando copiamos muchos archivos por ejemplo, se indica cual se está copiando.

Parece una cuestión obvia de resolver.

Pero yo tengo un programa que me cuesta decidir o entender dónde quisiera poner los prints si tuviera un criterio que me parezca bueno. En cierto punto sólo ponía uno al final. Luego poco a poco pasé a seguir este patrón generalmente: Comentario, cambio, print. Luego empecé a creer que no tiene sentido hacer print de cada cambio porque si una cosa funciona bien no es necesario indicar que otra lo hizo, por ejemplo indicar que una variable cambió parece innecesario si enseguida se aplicará para algo. Así, quité todos los prints (en mi caso traces) del fotograma 1 excepto uno que muestra lo mismo que otra cosa así que lo quitaré también, no me di cuenta. Ahora iba a analizar el resto y, no sé bien qué hacer...
Código
  1.   actions for fotograma 1
  2.      function InsertarNodoyFlecha () {
  3.         // Insertar Nodo:
  4.         Imagenes = Imagenes+1;
  5.         Nodos = Nodos+1;
  6.         Grafo.attachMovie("mNodo", "Nodo"+Nodos, Imagenes);
  7.         // Especificar la situación que representa:
  8.         set ("Grafo.Nodo"+Nodos+".EnHP", EnHP);
  9.         // Insertar flecha:
  10.         Imagenes = Imagenes+1;
  11.         Grafo.attachMovie("mFlecha", "Flecha"+Nodos, Imagenes);
  12.         // Especificar el sitio donde se insertan:
  13.         PosicionY = PadrePosicionY+33;
  14.         setProperty ("Grafo.Nodo"+Nodos, _y, PosicionY);
  15.         setProperty ("Grafo.Flecha"+Nodos, _x, PadrePosicionX);
  16.         setProperty ("Grafo.Flecha"+Nodos, _y, PadrePosicionY+6.5);
  17.         Hijos = Hijos+1;
  18.         // Como por ahora casi todo padre tiene 1 hijo, este if agiliza el proceso creo:
  19.         if (Hijos == 1) {
  20.            PosicionX = PadrePosicionX;
  21.            setProperty ("Grafo.Nodo"+Nodos, _x, PosicionX);
  22.         } else {
  23.            Hijo = 0;
  24.            MinPosicionX = PadrePosicionX-16.5*(Hijos-1);
  25.            SAquedebeActualizarse = SAs-Hijos;
  26.            do {
  27.               Hijo = Hijo+1;
  28.               PosicionX = (Hijo-1)*33+MinPosicionX;
  29.               setProperty ("Grafo.Nodo"+(Nodos-Hijos+Hijo), _x, PosicionX);
  30.               // Actualizar datos de las posiciones guardadas:
  31.               SAquedebeActualizarse = SAquedebeActualizarse+1;
  32.               set ("SA"+SAquedebeActualizarse+"PosicionX", PosicionX);
  33.               // Establecer rotación 0 a la flecha para que su altura de se modifique bien:
  34.               setProperty ("Grafo.Flecha"+(Nodos-Hijos+Hijo), _rotation, 0);
  35.               // Especificar rotación y tamaño de flecha:
  36.               DistanciaXPadreHijo = Math.abs(Math.abs(PadrePosicionX)-Math.abs(PosicionX));
  37.               setProperty ("Grafo.Flecha"+(Nodos-Hijos+Hijo), _height, Math.sqrt(DistanciaXPadreHijo*DistanciaXPadreHijo+20*20));
  38.               Rotacion = 180/Math.PI*Math.atan(DistanciaXPadreHijo/20*-1);
  39.               // Si el hijo está a la izquierda del padre, invertir la rotación:
  40.               if (PosicionX<PadrePosicionX) {
  41.                  Rotacion = Rotacion*-1;
  42.               }
  43.               setProperty ("Grafo.Flecha"+(Nodos-Hijos+Hijo), _rotation, Rotacion);
  44.            } while (Hijo<Hijos);
  45.         }
  46.      }
  47.      Respuesta = "Vencer al enemigo mediante acciones, el enemigo tiene 11 HP. Se recomienda la serie... ";
  48.      // Situación inicial:
  49.      // HP inicial del enemigo:
  50.      EnBaseHP = 33;
  51.      trace ("EnBaseHP: "+EnBaseHP);
  52.      // Guardar situación y cómo se produjo:
  53.      // Parte inicial del nombre de los datos (en este caso S11):
  54.      SitID = "S"+EnBaseHP;
  55.      // Acción realizada en la situación anterior (en este caso ninguna):
  56.      set (SitID+"ActionAnterior", "Ninguna");
  57.      // En este caso la variable es S11Action y su valor es "Ninguna".
  58.      // Posición X e Y del nodo que representa la situación desde la cual se originó la que será representada por otro nodo...
  59.      // ...pero en este caso es la posición del 1er nodo.
  60.      PadrePosicionX = 0;
  61.      PadrePosicionY = 0;
  62.      // Cantidad de imágenes insertadas:
  63.      Imagenes = 1;
  64.      // Cantidad de nodos del grafo a mostrar:
  65.      Nodos = 1;
  66.      // Insertar nodo inicial:
  67.      Grafo.attachMovie("mNodo", "Nodo1", 1);
  68.      // Especificar la situación que representa:
  69.      Grafo.Nodo1.EnHP = EnBaseHP;
  70.      // Hijos del nodo de la situación que se está analizando:
  71.      Hijos = 0;
  72.      // Acción que será usada 1ero:
  73.      Action = 1;
  74.      // Variables sobre situaciones anotadas:
  75.      // Total de situaciones anotadas:
  76.      SAs = 0;
  77.      // Situación anotada que será investigada 1ero:
  78.      SiguienteSAaInvestigar = 0;
  79.   actions for fotograma 2
  80.      trace ("Reset de la situación, aplicación de la acción, la situación ahora es:");
  81.      EnHP = EnBaseHP-Action;
  82.      trace ("EnHP: "+EnHP);
  83.      // ¿Se logró el objetivo?
  84.      if (EnHP<=0) {
  85.         trace ("Solución hallada, iniciando proceso para mostrar cómo causarla.");
  86.         Serie = Action;
  87.         InsertarNodoyFlecha();
  88.         gotoAndPlay (5);
  89.      } else {
  90.         trace ("No se logró el objetivo.");
  91.         // ¿La situación producida está anotada?
  92.         if (eval("S"+EnHP+"ActionAnterior") == undefined) {
  93.            trace ("La situación producida no está anotada.");
  94.            trace ("Se anotará y cómo se logró.");
  95.            SitID = "S"+EnHP;
  96.            set (SitID+"EnHPAnterior", EnBaseHP);
  97.            set (SitID+"ActionAnterior", Action);
  98.            trace ("Ahora está anotada: "+SitID);
  99.            trace ("Su antecedente fue ("+SitID+"EnHPAnterior): "+EnBaseHP);
  100.            trace ("y la acción fue ("+SitID+"ActionAnterior): "+Action);
  101.            // También se agrega como situación a investigar y se anota en qué consiste:
  102.            SAs = SAs+1;
  103.            SitID = "SA"+SAs;
  104.            set (SitID+"EnHP", EnHP);
  105.            trace ("Situaciones anotadas: "+SAs);
  106.            trace ("La última consiste en (EnHP): "+eval(SitID+"EnHP"));
  107.            // Se inserta el nodo que la representa y se guarda su posición:
  108.            InsertarNodoyFlecha();
  109.            set (SitID+"PosicionX", PosicionX);
  110.            trace (SitID+"PosicionX: "+PosicionX);
  111.            set (SitID+"PosicionY", PosicionY);
  112.         } else {
  113.            trace ("La situación producida ya está anotada.");
  114.         }
  115.      }
  116.   actions for fotograma 3
  117.      // ¿Modificar acción es posible?
  118.      if (Action<7) {
  119.         trace ("Es posible modificar acción.");
  120.         Action = Action+1;
  121.         trace ("Action fue modificada, es: "+Action);
  122.         gotoAndPlay (2);
  123.      } else {
  124.         trace ("No es posible modificar la acción.");
  125.         if (SiguienteSAaInvestigar<SAs) {
  126.            // Aún hay situaciones anotadas sin investigar, investigar una (probablemente lo ideal sería investigar la más diferente a las investigadas, pero me es difícil programar eso):
  127.            trace ("Aún hay situaciones anotadas sin investigar.");
  128.            SiguienteSAaInvestigar = SiguienteSAaInvestigar+1;
  129.            EnBaseHP = eval("SA"+SiguienteSAaInvestigar+"EnHP");
  130.            trace ("Se investigará la situación anotada nro: "+SiguienteSAaInvestigar);
  131.            trace ("Consiste en EnBaseHP: "+EnBaseHP);
  132.            // Guardar su posición para saber dónde poner a sus posibles hijos:
  133.            PadrePosicionX = eval("SA"+SiguienteSAaInvestigar+"PosicionX");
  134.            trace ("Nuevo PadrePosicionX: "+PadrePosicionX);
  135.            PadrePosicionY = eval("SA"+SiguienteSAaInvestigar+"PosicionY");
  136.            Hijos = 0;
  137.            // Reset de la acción a usar:
  138.            Action = 1;
  139.            trace ("Reset de la acción a usar, es: "+Action);
  140.            gotoAndPlay (2);
  141.         } else {
  142.            trace ("No hay situaciones anotadas sin investigar ni es posible lograr el objetivo.");
  143.            Respuesta = "No es posible lograr el objetivo.";
  144.         }
  145.      }
  146.   actions for fotograma 5
  147.      // Obtener acción anterior:
  148.      ActionAnterior = eval("S"+EnBaseHP+"ActionAnterior");
  149.      trace ("La acción anterior fue: "+ActionAnterior);
  150.      // ¿Hubo?
  151.      if (ActionAnterior != "Ninguna") {
  152.         // Sí, agregarla en la lista:
  153.         Serie = ActionAnterior+" "+Serie;
  154.         trace ("Acción agregada en la serie.");
  155.         // Averiguar cual fue la situación anterior:
  156.         EnBaseHP = eval("S"+EnBaseHP+"EnHPAnterior");
  157.         trace ("Se realizó en la situación: S"+EnBaseHP);
  158.         // Repetir este frame.
  159.         gotoAndPlay (4);
  160.      } else {
  161.         // No hubo una acción anterior, mostrar la serie:
  162.         trace (Respuesta+Serie);
  163.         stop ();
  164.      }

Además hay cosas como esta:
// Aún hay situaciones anotadas sin investigar, investigar una (probablemente lo ideal sería investigar la más diferente a las investigadas, pero me es difícil programar eso):
trace ("Aún hay situaciones anotadas sin investigar.");
Es decir un trace que dice lo mismo que el comentario, por lo que parece que debería borrar el comentario, pero el comentario dice más cosas que no tiene sentido decir en un trace. Ahora se me ocurre poner el trace y luego el comentario quitando lo que ya se dice en el trace, sí, puede que sea una solución muy obvia pero no me di cuenta en parte por intentar seguir el patrón que mencioné.

63  Programación / Programación General / 1, acciones, incremento VS 0, incremento, acciones. en: 3 Febrero 2024, 08:51 am
¿Qué se ha dicho que es mejor o qué opinan?

¿Cuales son las ventajas/desventajas de cada uno?

¿No hay diferencia casi?

Por si no se entiende me refiero a:
Código:
Contador = 1
Repetir:
  // Acciones.
  Contador++

VS

Código:
Contador = 0
Repetir:
  Contador++
  // Acciones.

No parece haber diferencia pero me pregunto si cuando el código se pone medio spaguetti sí...
64  Foros Generales / Dudas Generales / ¿Cómo copio rápido los temas que hice en un foro? en: 2 Febrero 2024, 19:09 pm
1er post y en lo posible todas las respuestas y páginas.

El admin me dijo:
Citar
Lo más fácil es que tú mismo hagas un script con wget o curl.

Yo no sé cuándo tendré tiempo.

Teniendo los temas, puedes entrenar un LLM y preguntarle para que te responda como cualquier usuario del foro.
Estoy ya bastante liado con mis cosas como para meterme en esas, no tengo idea de cómo se hace. Son unos 3000 temas, hacerlo a mano no parece buena idea.
65  Programación / Programación General / Hacer que un generador de una lista haga excepciones y agregue elementos. en: 28 Enero 2024, 12:58 pm
La lista que se genera es de cosas/eventos contables en un programa, por ejemplo la cantidad de clics.

Pero "sólo un clic" no es lo mismo que un "clic mientras se hace algo", por ejemplo. Para diferenciar eso puse +Nada, +Algo y +Lo que sea (Nada/Algo). Supongo que eso es lo más raro a primera vista. "Casos de Nada" está mal, no debe ir, puede haber otras cosas que tampoco.

Citar
0:   Casos de Nada
1:   1er Frame en que ocurrió Nada
2:   Frames en que ocurrió Nada
3:   En 10 Frames, mínimos casos de Nada
4:   En 10 Frames, máximos casos de Nada
5:   En 10 Frames, mínima cantidad de Frames en que ocurrió Nada
6:   En 10 Frames, máxima cantidad de Frames en que ocurrió Nada
1:   Casos de Mov + Nada
2:   1er Frame en que ocurrió Mov + Nada
etc, etc, son 1344 líneas (7*4*4*4*3, permutaciones o como se llame, 7 posibilidades en una variable, 4 en otra, etc).

El código es:
Código
  1.   actions for fotograma 1
  2.      // Frames.
  3.      V1 = -1;
  4.      Max1 = 6;
  5.      V1Texto0 = "Casos de ";
  6.      V1Texto1 = "1er Frame en que ocurrió ";
  7.      V1Texto2 = "Frames en que ocurrió ";
  8.      V1Texto3 = "En 10 Frames, mínimos casos de ";
  9.      V1Texto4 = "En 10 Frames, máximos casos de ";
  10.      V1Texto5 = "En 10 Frames, mínima cantidad de Frames en que ocurrió ";
  11.      V1Texto6 = "En 10 Frames, máxima cantidad de Frames en que ocurrió ";
  12.      // Mov.
  13.      V2 = 0;
  14.      Max2 = 3;
  15.      V2Texto0 = "";
  16.      V2Texto1 = "Mov + ";
  17.      V2Texto2 = "Frenada + ";
  18.      V2Texto3 = "Moviéndose + ";
  19.      // Clic.
  20.      V3 = 0;
  21.      Max3 = 3;
  22.      V3Texto0 = "";
  23.      V3Texto1 = "Clic + ";
  24.      V3Texto2 = "Desclic + ";
  25.      V3Texto3 = "Cliqueando + ";
  26.      // Clac.
  27.      V4 = 0;
  28.      Max4 = 3;
  29.      V4Texto0 = "";
  30.      V4Texto1 = "Clac + ";
  31.      V4Texto2 = "Desclac + ";
  32.      V4Texto3 = "Claqueando + ";
  33.      // Final.
  34.      V5 = 0;
  35.      Max5 = 2;
  36.      V5Texto0 = "Nada";
  37.      V5Texto1 = "Algo";
  38.      V5Texto2 = "Lo que sea";
  39.      Puntero = 0;
  40.      Completado = "No";
  41.      function Variar () {
  42.         Puntero = Puntero+1;
  43.         Nombre = "V"+Puntero;
  44.         Valor = eval(Nombre);
  45.         Max = eval("Max"+Puntero);
  46.         // ¿La variable puede aumentar?
  47.         if (Valor<Max) {
  48.            // Sí, aumentarla:
  49.            set (Nombre, Valor+1);
  50.            // Obtener suma:
  51.            Suma = V1+V2+V3+V4+V5;
  52.            // Obtener texto:
  53.            Texto = eval("V1Texto"+V1)+eval("V2Texto"+V2)+eval("V3Texto"+V3);
  54.            Texto = Suma+":\t"+Texto+eval("V4Texto"+V4)+eval("V5Texto"+V5);
  55.            trace (Texto);
  56.            Puntero = 0;
  57.            // Esta función se repetirá.
  58.         } else {
  59.            // No, resetearla:
  60.            set (Nombre, 0);
  61.            // ¿Hay otra variable aumentable?
  62.            if (Puntero<5) {
  63.               // Podríhacer, apuntar a esa.
  64.               // Esta función se repetirá.
  65.            } else {
  66.               // Esta variable se pone para que del F3 no vuelva al 2.
  67.               Completado = "Sí";
  68.               stop ();
  69.            }
  70.         }
  71.      }
  72.   actions for fotograma 2
  73.      Variar();
  74.   actions for fotograma 3
  75.      Variar();
  76.      if (Completado == "No") {
  77.         gotoAndPlay (2);
  78.      }
  79.  

Quisiera que:

1:
Moviéndose, Cliqueando y Claqueando sólo aparezcan en frames, o sea:
"Casos de Moviéndose" no debe producirse, porque ¿cómo se cuentan los casos en que el mouse se está moviendo o algo se está presionando? Que yo sepa no se puede, se cuenta el tiempo (frames) en que eso sucede.
"1er Frame en que ocurrió Moviéndose" está bien.
"Frames en que ocurrió Moviéndose", ok.
"En 10 Frames, mínimos casos de Moviéndose", no, por lo ya explicado.
"En 10 Frames, máximos casos de Moviéndose", idem.
"En 10 Frames, mínima cantidad de Frames en que ocurrió ", ok.
"En 10 Frames, máxima cantidad de Frames en que ocurrió ", ok.
Lo mismo se aplica cuando lo único que hay es "Nada" o "Lo que sea", porque no se pueden contar los casos de Nada ¿cuántos puede haber en un frame? Lo que puede contarse es la cantidad de tiempo (frames) en que ocurre Nada. "Lo que sea" puede ser Nada también así que se le aplica lo mismo.

2:
Se generaran también expresiones que en vez de Clac tengan 2Clac y otras de 3Clac. Esto probablemente sea lo más fácil de lograr. Y es que no es posible hacer 2 clics al mismo tiempo (o al menos no en lo que estoy haciendo, sólo se usa el clic izquierdo) ni hacer 2 movimientos de mouse al mismo tiempo (quizá arriba+derecha, etc, pero no me refiero a eso), pero tocar varias teclas a la vez sí.

3:
Se generaran también expresiones como "Casos de Mov+Nada, Mov+Nada", "1er Frame en que ocurrió Clic+Clac+Algo, Mov+Lo que sea", etc. Significa que ocurrió una cosa y luego (,) otra. Si dice + es que son "a la vez", no es lo mismo que "luego". No debe haber más de 2 comas.

4:
No se generen combinaciones imposibles como "Clic+Desclic".


Por otro lado ¿qué otras cosas relativas a lo que el usuario haga se les ocurre que se pueden contar en un programa? Por ejemplo: Variedad de teclas presionadas, hay muchas cosas que no he puesto aún.
66  Foros Generales / Foro Libre / Ajedrez simplificado: Rey vs Rey y Peón en: 28 Enero 2024, 10:51 am


Blancas deben sobrevivir durante la mayor cantidad de turnos posible. Destruir el peón o quedar encerradas sería infinito, pero se supone que no ocurrirá.

Negras deben ganar en la mínima cantidad posible de turnos.

¿Qué deben hacer blancas para que la partida sea más larga? Bloquear al peón, pero hay varias formas de hacerlo, me refiero a eso. Uno puede ser obligado a permitir el paso antes o después dependiendo de cómo se acerque...

¿Y qué deben hacer para intentar quedar encerradas? Sé posibles situaciones en que ocurre eso, pero no sé bien cómo provocarlas, me refiero a eso.

¿Cómo jugarían negras para ganar lo más rápido posible? Coronar al peón en reina protegiéndolo con el rey y luego dar mate, pero el asunto es cómo hacer eso de la forma más rápida posible.

No sé si hay otra cosa que deba tenerse en cuenta, digan. Plantearé más ejercicios como este si les interesa.
67  Programación / Programación General / ¿Cómo recomiendan dar instrucciones a una persona o IA para que jugue como una? en: 28 Enero 2024, 05:19 am
Tengo algo así para el juego The Wizard's Castle de DOS, es un RPG/Rogue no muy complicado. Quisiera que me digan cómo se puede mejorar, en el sentido de cómo expresarlo de modo más claro.

Código:
Estado 1: Antes de entrar en el castillo:
- Elige raza elfo, hombre.
- Da puntos de modo que tus estadísticas estén equilibradas.
- Compra una espada y una plate mail.

Estado 2: Estando en el castillo, mientras no hayas conseguido todo el dinero tirado y de cofres, flares y tesoros, que no estuvieran completamente rodeados de warps/sinkholes:
- Evita los sinkholes y los warps.
- Consigue dinero de cofres y del suelo, flares del suelo y tesoros. Ignora el resto de cosas (si te cruzas con un monstruo, huye). Cuando tengas todo, sube a otro piso. Si la escalera está rodeada por warps/sinkholes, prefiere pasar por el warp.

Estado 3: Cuando tienes todo lo que buscaste, salvo lo que estaba rodeado por warps/sinkholes:
- Busca lo antes mencionado que te faltó, evitando warps a menos que sea necesario.
Nota: En cada nuevo estado las instrucciones anteriores se mantienen a menos que se mencionen cambios.

Estado 4: Tienes lo que buscaste, salvo lo que estaba rodeado por sinkholes:
- Mira si en el piso de arriba de donde haya algo así, hay un sinkhole que te lleve a donde necesitas ir. Si es así ve a esos sinkholes evitando warps y otros sinkholes. Sino. usa warps hasta que te lleven al lugar deseado. Uno de los warps no funciona como tal, si lo ves evítalo (anota donde está).

Estado 5: Tienes lo que buscaste, hay libros no leídos y ninguna de tus estadísticas está al máximo:
- Lee libros hasta que alguna de tus estadísticas se maximice.

A partir de ahí no sé bien qué decir, depende de qué estadística se maximice, luego contra qué monstruo se vaya a pelear o se esté peleando, si se tiene arma, cuales son las estadísticas... Se me pone complicado. Pero no sé si eso se relaciona con el tema, yo quiero saber si hay algo mejor que esos "Estados" y en caso de que convenga dividir alguno (si tiene ifs), cómo.
68  Programación / Programación General / ¿Una red neuronal es como un grafo? en: 26 Enero 2024, 10:59 am
GPT:
Citar
Sí, una red neuronal se puede representar como un grafo. En la teoría de grafos, un grafo es una estructura compuesta por nodos (también llamados vértices) y aristas (también llamadas bordes) que conectan los nodos. Las redes neuronales también se pueden representar como un grafo, donde los nodos representan las neuronas artificiales y las aristas representan las conexiones entre estas neuronas.

En una red neuronal, los nodos se organizan en capas, como la capa de entrada, capas ocultas y la capa de salida. Cada nodo en una capa está conectado a todos los nodos de la capa siguiente mediante aristas ponderadas. Estas aristas representan los pesos sinápticos, que determinan la fuerza y la dirección de la señal transmitida entre las neuronas.

La representación de una red neuronal como un grafo permite visualizar y comprender la estructura y las conexiones entre las neuronas. Además, los algoritmos de aprendizaje utilizados en las redes neuronales, como el algoritmo de retropropagación, se basan en la propagación de información a través de este grafo para ajustar los pesos sinápticos y mejorar el rendimiento de la red neuronal en tareas específicas.

Si el programa puede hacer crecer la cantidad de nodos, entonces me gusta la idea.

Las explicaciones que he visto respecto a qué es una red neuronal me han dejado siempre un mal sabor.

A GPT:
si hago un programa que averigue cómo es mejor actuar en ciertas situaciones y esa información se puede representar mediante un grafo ¿es una red neuronal?

Citar
No necesariamente. Si bien una red neuronal puede utilizarse para aprender y tomar decisiones en función de ciertas situaciones, la representación de la información mediante un grafo no implica automáticamente que estemos hablando de una red neuronal.

Un grafo puede utilizarse para representar cualquier tipo de estructura de datos o relaciones entre elementos. En tu caso, si estás desarrollando un programa que busca determinar la mejor acción en ciertas situaciones y esa información se puede representar mediante un grafo, es posible que estés utilizando un enfoque basado en grafos para resolver el problema. Esto implica que estás utilizando la estructura de grafo para modelar las relaciones y tomar decisiones.

Por otro lado, una red neuronal es un tipo específico de modelo de aprendizaje automático inspirado en el funcionamiento del cerebro. Consiste en una serie de capas de neuronas interconectadas, donde cada conexión tiene un peso asociado. La red neuronal utiliza algoritmos de aprendizaje para ajustar los pesos de las conexiones y aprender a tomar decisiones o hacer predicciones a partir de los datos de entrada.

En resumen, si estás utilizando un grafo para representar información y tomar decisiones, no necesariamente estás utilizando una red neuronal. La red neuronal es solo uno de los muchos enfoques posibles para resolver problemas de aprendizaje automático o toma de decisiones basados en datos.

un programa que aprenda usando una red neuronal ¿hace que ella aumente de tamaño o sólo cambia pesos?

Citar
Cuando un programa aprende usando una red neuronal, normalmente se refiere a que los pesos sinápticos de la red neuronal se ajustan a través de un algoritmo de aprendizaje, como la retropropagación del error. Durante el proceso de entrenamiento, los pesos se actualizan para mejorar el rendimiento de la red neuronal en una tarea específica.

En este proceso de aprendizaje, la red neuronal no aumenta de tamaño en términos de la cantidad de neuronas o capas. La arquitectura de la red neuronal, es decir, el número de capas y la cantidad de neuronas en cada capa, se define previamente y se mantiene constante durante el entrenamiento.

Lo que cambia son los valores de los pesos sinápticos, que se ajustan iterativamente para minimizar una función de pérdida o error. Estos pesos determinan la fuerza y la dirección de las conexiones entre las neuronas y son fundamentales para el funcionamiento de la red neuronal.

En resumen, el aprendizaje en una red neuronal implica actualizar los pesos sinápticos para mejorar el rendimiento de la red, pero no implica un aumento en el tamaño de la red neuronal en términos de su estructura o número de neuronas.

Bue, si conocen buenos videos sobre el tema quisiera que me digan, a ver por qué esa técnica es tan buena.
69  Foros Generales / Dudas Generales / ¿Cuales son los mitos más comunes sobre los hackeos? en: 24 Enero 2024, 08:34 am
Por ejemplo ¿puede un hacker hacer que en otra pantalla se muestre lo que el víctimo está viendo en la suya?

¿Puede un hacker escribir cosas en la computadora del víctimo mientras éste lee atónito? Por ejemplo que el víctimo esté escribiendo y de repente en el cuadro de texto en vez de que aparezca lo que escribe aparezca lo que escriba el hacker, que podría ser algo como "No pude comunicarme de otra manera, soy un espíritu, necesito que vayas a...".

¿Que cosas que se suele creer que son imposibles para un hacker, son posibles?

¿Y qué cosas que algunos creen posibles para un hacker, en realidad no lo son (por ahora al menos)?
70  Media / Juegos y Consolas / Ideas para juego de Matemática. en: 21 Enero 2024, 10:17 am
Sería una versión mejorada de este:
https://www.youtube.com/watch?v=i_aPn9W2WF8
mezclada con Magic The Gathering y Yu-gi-oh.

N = Nro de jugadores.
??? = Cantidades a decidir.

- Cada jugador debe hacer un mazo de cartas.
- Hay 3 tipos de cartas:
--- Números.
--- Operadores.
--- Personas o personajes que han sido relevantes en las Matemáticas.
- Cada jugador baraja su mazo. Luego pone cartas boca arriba, formando cada uno un cuadro de ???x??? cartas.
- Debe haber al menos 1 carta de tipo número en cada cuadro. Cada jugador puede devolver sus cartas a su mazo y volver a poner otras, pero cada vez que lo haga tendrá que poner 1 carta menos. Si llega un punto en que sólo puede poner 1 carta y la que pone no es un número, pierde.
- El órden de los turnos podría ser decidido según la cantidad de números que hayan puesto, o su suma, o cual sea el mayor, o no sé, qué sería mejor. En caso de empate se vería quien tiene la 2nda cantidad mayor, o la suma mayor, o lo que se haya decidido, y así sucesivamente. En caso de que no sea posible desempatar así se comienza a ver quién tiene el número mayor al final de su mazo.
- Podría ser que, quien inicia, no toma una carta de su mazo en esa ocasión. En los demás casos sí, al inicio de su turno, el jugador toma una carta de su mazo.
- En cada turno se puede lanzar sólo 1 operación (1 número, 1 operador y otro número) y sólo a 1 personaje.
- El contexto podría ser:
A: Los números en el cuadro de cada jugador son candados, gana quien abre todos los del adversario.
B: Los cuadros son murallas, gana quien hace un camino vertical en la muralla rival. En este caso al inicio debería haber al menos 1 número en cada columna de cada cuadro.
C: Alguna de esas 2 con el agregado de que luego debe quitarle puntos de vida.

Los personajes causarían efectos especiales en el juego, como obtener 2 cartas del mazo, ver la mano del rival, etc.

Sería bueno que durante el juego los jugadores pudieran poner números en sus cuadros y/o intercambiar sus otras cartas de ahí por números pero no sé si así nomás o de algún modo especial. Se requieren 2 y 1 operador para destruir 1 rival... Si se pudiera poner un número en el cuadro cada vez que se tenga en la mano entonces ¿para qué usar 3 cartas en destruir 1 si se podrían poner 3? Por eso no puede ser. ¿Para poner 1 hay que descartar 2 cartas? Podría ser. También, que si en el cuadro se tiene una carta no número y en la mano un número, se puedan intercambiar.

Podría haber cartas tipo trampa también, estarían en el cuadro y se podrían activar cuando se destruye un número al lado. En este caso las cartas que no sean número estarían boca abajo y se pondrían boca arriba cuando un número sea destruido ¿está bien? O en caso de jugarse en el modo "hacer camino", se activarían cuando deja de haber un número delante y el rival decide pasar.

Tal vez sería bueno que en vez de tomar 1 carta por turno se tomen 2, el problema es que entre más cartas más se tarda en jugarlas porque debe pensarse más, por tener más opciones.

Otra posibilidad es que en vez de jugar con 1 mazo en que están todos los tipos de cartas mezclados, se juegue con varios mazos a la vez. Está bien mientras no se mezclen todas en la mano y en la pila de descarte, sino habría que reacomodarlas al final de cada partida (por supuesto si es un videojuego no sería problema).

Una idea que me gustó es que un efecto especial sea "obtén el menor resultado posible". Ambos jugadores podrían usar todos los números y operadores que quieran intentando eso y el ganador obtendría algún beneficio especial (tomar del mazo el doble de cartas que haya usado, por ejemplo), pero si en general no se tendrá muchas cartas en la mano no tiene mucha gracia.

Ahora que me doy cuenta, debería permitirse lanzar operaciones más grandes, es decir, con más números y más operadores.

En fin ¿qué más se les ocurre?
Páginas: 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ... 36
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines