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


Tema destacado: Recopilación de Tutoriales y Manuales del blog ordenados por categorías


  Mostrar Mensajes
Páginas: 1 ... 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 [35] 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 ... 274
341  Programación / Programación General / Elección al azar de punto de elipse o rectángulo. Misma probabilidad para cada punto. en: 14 Agosto 2025, 13:56 pm
Si elipse es muy complicado será rectángulo.

Quiero imitar una nube cambiando, más o menos. Circulos aparecerían detrás, crecerían y se achicarían hasta desaparecer. Hay un video que me gustó que más o menos hace eso pero no lo encuentro.

Entonces, tenemos una elipse de 200 de ancho y 100 de alto. Supongamos que está colocado en las coordenadas 0, 0. ¿Cómo los circulos podrían aparecer en cualquier parte del perímetro con igual probabilidad? No en el área.

Si es muy complicado, tenemos un rectángulo, digamos de la misma medida y lugar. Y misma pregunta.
Sobre este lo pensé y no supe. Puedo hacer que aparezca en el perímetro, pero con igual chance cada punto no sé.
342  Programación / Programación General / ¿Por qué el meteoro no va a donde le digo? en: 14 Agosto 2025, 12:13 pm
https://youtu.be/TmACx8Du3as

Cuando el meteoro se está acercando a la nave de abajo, si presiono A o S aparece una mira, que se va moviendo a la izquierda si apreté A y a la derecha si apreté S.
Cuando el meteoro toque la nave de abajo, debe ir hacia donde haya quedado la mira.

Pueden ver que a veces funciona, y a veces no, no sé por qué...

La pantalla es de 800 pixeles de ancho y 600 de largo. Las coordenadas avanzan a la derecha y abajo, así que arriba a la izquierda es 0, 0
y abajo a la derecha es 800, 600
El 1er número corresponde a X, el 2ndo a Y.

La mira es algo provisorio para mostrar la falla, no habrá mira en el juego.

Creo que el error está acá:
Código
  1. if (Meteor.hitTest(Player) && MeteorYSpeed>0) {
  2. // Determinar velocidad Y al azar:
  3. MeteorYSpeed = -Math.random()*(2+Dificultad)-1;
  4. // Distancia Y desde el meteoro hasta el punto hacia donde se lo apuntó:
  5. DistanciaY = Meteor._y-20.5;
  6. // Cuánto tardará el meteoro en recorrerla:
  7. TardanzaY = Math.ceil(DistanciaY/-MeteorYSpeed);
  8. // Distancia X desde el meteoro hasta el punto hacia donde se lo apuntó:
  9. DistanciaX = Meteor._x-400+Apuntando;
  10. // Determinar la velocidad X para que el meteoro llegue...
  11. // al punto X apuntado justo cuando llega al punto Y apuntado:
  12. MeteorXSpeed = DistanciaX/TardanzaY;

Código completo:
Código
  1. // Algo como esto if (MeteorYSpeed>0) { se está haciendo 2 veces,
  2. // pero evitarlo implicaría unir cosas del jugador y la IA?
  3. //
  4. fscommand ("fullscreen", "true");
  5. // Varía según diferencia de puntajes:
  6. Dificultad = 0;
  7. // Player:
  8. attachMovie("sShip", "Player", 1);
  9. setProperty ("Player", _x, 400);
  10. setProperty ("Player", _y, 579.5);
  11. PlayerSpeed = 3;
  12. PlayerScore = 0;
  13. // IA:
  14. attachMovie("sIA", "IA", 2);
  15. setProperty ("IA", _x, 400);
  16. setProperty ("IA", _y, 20.5);
  17. IASpeed = 3;
  18. IAScore = 0;
  19. // Meteor:
  20. attachMovie("sMeteor", "Meteor", 3);
  21. setProperty ("Meteor", _x, 400);
  22. setProperty ("Meteor", _y, 544.5);
  23. // Se define acá para que luego el programa considere que...
  24. // hubo contacto entre la nave del jugador y el meteoro:
  25. MeteorYSpeed = 1;
  26. // Para que la curvatura dependa de MeteorYSpeed
  27. // (1 es hacia arriba, -1 hacia abajo):
  28. MeteorYDirection = -1;
  29. // Valores del color más brillante del meteoro (F0D9C8):
  30. MaxRojo = 255;
  31. MaxVerde = 217;
  32. MaxAzul = 200;
  33. // /////////////////////////////////////////////
  34. // /////////////////// Ship ////////////////////
  35. // /////////////////////////////////////////////
  36. function ControlShip () {
  37. if (Key.isDown(39)) {
  38. // Derecha.
  39. // Para evitar que se vaya demasiado al extremo derecho:
  40. if (Player._x<722) {
  41. Player._x = Player._x+PlayerSpeed;
  42. } else {
  43. Player._x = 725;
  44. }
  45. } else if (Key.isDown(37)) {
  46. // Izquierda.
  47. // Para evitar que se vaya demasiado al extremo izquierdo:
  48. if (Player._x>78) {
  49. Player._x = Player._x-PlayerSpeed;
  50. } else {
  51. Player._x = 75;
  52. }
  53. }
  54. // Si el meteoro va hacia abajo:
  55. if (MeteorYSpeed>0) {
  56. // Si aún no se eligió hacia dónde rebotarlo:
  57. if (Apuntando == 0) {
  58. if (Key.isDown(65)) {
  59. Apuntando = -1;
  60. attachMovie("sMira", "Mira", 4);
  61. setProperty ("Mira", _x, 399);
  62. setProperty ("Mira", _y, 20.5);
  63. } else if (Key.isDown(83)) {
  64. Apuntando = 1;
  65. attachMovie("sMira", "Mira", 4);
  66. setProperty ("Mira", _x, 401);
  67. setProperty ("Mira", _y, 20.5);
  68. }
  69. } else if (Apuntando < 0) {
  70. Apuntando = Apuntando-3;
  71. if (Apuntando < -400) {
  72. Apuntando = -400;
  73. }
  74. setProperty ("Mira", _x, 400+Apuntando);
  75. } else {
  76. Apuntando = Apuntando+3;
  77. if (Apuntando > 400) {
  78. Apuntando = 400;
  79. }
  80. setProperty ("Mira", _x, 400+Apuntando);
  81. }
  82. }
  83. }
  84. // /////////////////////////////////////////////
  85. // ////////////////////  IA  ///////////////////
  86. // /////////////////////////////////////////////
  87. function IATurn () {
  88. // Si el meteoro va hacia arriba:
  89. if (MeteorYSpeed<0) {
  90. // La IA se moverá hacia él:
  91. Distancia = IA._x-Meteor._x;
  92. } else {
  93. // La IA irá hacia el centro:
  94. Distancia = IA._x-400;
  95. }
  96. if (Distancia < 0) {
  97. IA._x = IA._x+IASpeed;
  98. // Para evitar que se vaya demasiado a la derecha:
  99. if (IA._x > 725) {
  100. IA._x = 725;
  101. }
  102. } else if (Distancia > 0) {
  103. IA._x = IA._x-IASpeed;
  104. // Para evitar que se vaya demasiado a la izquierda:
  105. if (IA._x < 75) {
  106. IA._x = 75;
  107. }
  108. }
  109. }
  110. // /////////////////////////////////////////////
  111. // /////////////////  Meteor  //////////////////
  112. // /////////////////////////////////////////////
  113. function VariarMeteoro () {
  114. Diametro = 44;
  115. Radio = Diametro/2;
  116. // Insertarle imágenes:
  117. Imagen = 0;
  118. do {
  119. Imagen++;
  120. Name = "Imagen"+Imagen;
  121. Meteor.attachMovie("sCirculo", Name, Imagen);
  122. Name = "Meteor."+Name;
  123. // Para los tamaños y rotación:
  124. setProperty (Name, _xscale, 400*Math.random());
  125. setProperty (Name, _yscale, 400*Math.random());
  126. setProperty (Name, _rotation, 360*Math.random());
  127. // Para las posiciones:
  128. X = Math.random()*Diametro - Radio;
  129. setProperty (Name, _x, X);
  130. MaxY = Math.sqrt(Radio*Radio - X*X);
  131. Y = Math.random() * (MaxY*2) - MaxY;
  132. setProperty (Name, _y, Y);
  133. // Para los colores:
  134. ColorDeName = new Color(Name);
  135. Brillo = 0.2 + 0.8 * Math.random();
  136. Rojo = Math.round(MaxRojo * Brillo);
  137. Verde = Math.round(MaxVerde * Brillo);
  138. Azul = Math.round(MaxAzul * Brillo);
  139. ColorElegido = (Rojo << 16) | (Verde << 8) | Azul;
  140. ColorDeName.setRGB(ColorElegido);
  141. } while (Imagen < 1000);
  142. }
  143. VariarMeteoro ();
  144. function MeteorMoves () {
  145. MeteorXSpeed = MeteorXSpeed+MeteorRotation/1000*MeteorYDirection;
  146. MeteorRotation = MeteorRotation/1.01;
  147. Meteor._x = Meteor._x+MeteorXSpeed;
  148. Meteor._y = Meteor._y+MeteorYSpeed;
  149. Meteor._rotation = Meteor._rotation+MeteorRotation;
  150. // Choque con nave derecha:
  151. if (Meteor._x > 752.5) {
  152. MeteorXSpeed = -MeteorXSpeed;
  153. if (MeteorYSpeed > 0) {
  154. // Si va hacia abajo:
  155. MeteorYSpeed = Math.max (MeteorYSpeed, MeteorYSpeed-MeteorRotation/50);
  156. } else if (MeteorYSpeed < 0) {
  157. MeteorYSpeed = Math.min (MeteorYSpeed, MeteorYSpeed+MeteorRotation/50);
  158. }
  159. MeteorRotation = Math.random()*10*(2*random(2)-1);
  160. } else if (Meteor._x < 47.5) {
  161. // Choque con nave izquierda:
  162. MeteorXSpeed = -MeteorXSpeed;
  163. if (MeteorYSpeed > 0) {
  164. // Si va hacia abajo:
  165. MeteorYSpeed = Math.max (MeteorYSpeed, MeteorYSpeed+MeteorRotation/50);
  166. } else if (MeteorYSpeed < 0) {
  167. MeteorYSpeed = Math.min (MeteorYSpeed, MeteorYSpeed-MeteorRotation/50);
  168. }
  169. MeteorRotation = Math.random()*10*(2*random(2)-1);
  170. }
  171. if (Meteor.hitTest(Player) && MeteorYSpeed>0) {
  172. // Determinar velocidad Y al azar:
  173. MeteorYSpeed = -Math.random()*(2+Dificultad)-1;
  174. if (Apuntando < -400) {
  175. Apuntando = -400;
  176. } else if (Apuntando > 400) {
  177. Apuntando = 400;
  178. }
  179. // Distancia Y desde el meteoro hasta el punto hacia donde se lo apuntó:
  180. DistanciaY = Meteor._y-20.5;
  181. // Cuánto tardará el meteoro en recorrerla:
  182. TardanzaY = Math.ceil(DistanciaY/-MeteorYSpeed);
  183. // Distancia X desde el meteoro hasta el punto hacia donde se lo apuntó:
  184. DistanciaX = Meteor._x-400+Apuntando;
  185. // Determinar la velocidad X para que el meteoro llegue...
  186. // al punto X apuntado justo cuando llega al punto Y apuntado:
  187. MeteorXSpeed = DistanciaX/TardanzaY;
  188. MeteorRotation = 0;
  189. // MeteorRotation = Math.random()*(180+Dificultad)*(2*random(2)-1);
  190. MeteorYDirection = 1;
  191. trace("MeteorYSpeed: "+MeteorYSpeed);
  192. trace("Apuntando: "+Apuntando);
  193. trace("DistanciaY: "+DistanciaY);
  194. trace("TardanzaY: "+TardanzaY);
  195. trace("DistanciaX: "+DistanciaX);
  196. trace("MeteorXSpeed: "+MeteorXSpeed);
  197. removeMovieclip("Mira");
  198. } else if (Meteor.hitTest(IA) && MeteorYSpeed<0) {
  199. MeteorYSpeed = Math.random()*(2+Dificultad)+1;
  200. MeteorXSpeed = Math.random()*(3+Dificultad)*(2*random(2)-1);
  201. MeteorRotation = Math.random()*(180+Dificultad)*(2*random(2)-1);
  202. MeteorYDirection = -1;
  203. Apuntando = 0;
  204. } else if (Meteor._y<0) {
  205. setProperty ("Meteor", _x, 400);
  206. setProperty ("Meteor", _y, 55.5);
  207. PlayerScore++;
  208. Dificultad++;
  209. PlayerSpeed = PlayerSpeed+0.1;
  210. IASpeed = IASpeed+0.11;
  211. ShowScore();
  212. } else if (Meteor._y>600) {
  213. setProperty ("Meteor", _x, 400);
  214. setProperty ("Meteor", _y, 544.5);
  215. IAScore++;
  216. Dificultad--;
  217. PlayerSpeed = PlayerSpeed-0.1;
  218. IASpeed = IASpeed-0.11;
  219. ShowScore();
  220. }
  221. }
  222. //
  223. function ShowScore () {
  224. attachMovie("sPuntaje", "Mensaje", 4);
  225. setProperty ("Mensaje", _x, 400);
  226. setProperty ("Mensaje", _y, 300);
  227. setProperty ("Player", _x, 400);
  228. setProperty ("IA", _x, 400);
  229. gotoAndStop (3);
  230. }
  231. // stop ();
343  Media / Juegos y Consolas / Ayuda para hacer experimentos eficientemente en videojuegos. en: 13 Agosto 2025, 06:42 am
Kung Fu Master de NES es sencillo, ya lo pasé hace mucho, e hice experimentos recientemente, pero quiero hacerlos mejor. Elijo ese juego porque es sencillo y suficientemente bueno.
https://www.youtube.com/watch?v=e7PIr6hpaBY

La idea es empezar también por un experimento sencillo, por ejemplo sólo usar puñetazos normales (no agachado ni saltando). Supongamos que así vencí a 0 jefes. Tengo que anotar datos sobre el resultado:
Usar 1 ataque: 0
Ataque tipo puñetazo: 0
Ataque tipo normal: 0
Puñetazo: 0

El siguiente experimento debe ser lo más distinto posible a ese pero sin complicarme demasiado: 2 ataques, preferentemente que no sean tipo puñetazo, ni normal, y claro que no sean puñetazo.  Por ejemplo patada agachado y patada saltando sin avanzar. Luego pongo los resultados de eso.

Poco a poco se complica comprender cual es el siguiente experimento que conviene hacer, pero mi pregunta es ¿cómo se recomienda que sea la tabla de Excel para anotar los datos o cómo los anotarían? Ciertos datos deben llenarse automáticamente cuando se pone algo en ciertas celdas.

Para empezar pienso en algo así:

Ahí nada se está llenando automáticamente, parece innecesario, es poca cosa.

Luego pienso en algo así:

No sé si tiene sentido tanto dato, creo que es para en el futuro ir viendo qué combinaciones no volver a probar aún, o cuales probar preferentemente, la cosa es que siendo así, ya varios datos se tendrían que llenar automáticamente y probablemente ajustar la tabla para eso o para que quede mejor. Además, si algo tiene puntaje en varias columnas, veo 2 opciones:
A- Crear otra columna que haga un promedio.
B- Que en cada columna se use el nuevo puntaje para promediarlo con el anterior. Creo que esto hace que los últimos puntajes tengan más influencia, no es bueno.

Se va a complicar aún más. El tema es cómo automatizar que se llenen los datos. Lo de las combinaciones lo estoy hablando con GPT.

Pensé en algo así:

Los datos se llenarían así:
Usar 1 ataque: Si en Ataques dice 1, se pone el contenido de Puntaje.
2 ataques: Si en Ataques dice 2, contenido de Puntaje.
Ataque tipo puñetazo: Se busca eso (Ataque tipo puñetazo) en el rango de datos de la columna (hasta donde dice Tipo 2 de Ataque 2). Si se encuentra alguna vez, se pone el Puntaje.
Y así sucesivamente, se busca lo que marca la celda en la fila, y si se encuentra se pone el puntaje.
Entonces llegamos a:
2 ataques   Ataque tipo patada:
Si en Ataques dice 2 y se encuentra "Ataque tipo patada" en el rango de datos, se pone el puntaje.
Más adelante llegamos a:
Ataque tipo patada   Ataque tipo agachado:
Desde ahí se me complica porque lo que se preguntaría es ¿en el experimento se hicieron ataques tipo patada y además otro ataque tipo agachado? Y se se pondría el puntaje si la respuesta es sí, pero no es cuestión de buscar y si aparecen ambas palabras ya está, porque si por ejemplo hubo patadas agachado y puñetazos normales no es que hubo ataques tipo patadas y otro tipo agachado, sino que 1 ataque cumple ambas condiciones, no es lo mismo...
Dicho de otro modo, si es un juego de cartas Pokemon y pongo:
Carta tipo Pokemon   Carta tipo Pokemon tipo planta
lo que se pregunta es ¿hubo una carta Pokemon y otra Pokemon tipo planta? Si hubo un Pokemon tipo planta, eso cumple una condición u otra, no ambas a la vez, para que se cumplan ambas debe haber uno de esos y otro cualquiera.
¿Cómo puedo poner los datos y fórmulas para que se llenen automáticamente la mayoría de datos teniendo en cuenta eso?
344  Programación / Programación General / Re: ¿Error al convertir nùmero grande a binario? en: 12 Agosto 2025, 03:38 am
No sé qué alternativas tengo.

Consigo en binario la cantidad de dibujos que se van a mostrar en pantalla. DIBUJOS.

Esa cantidad la necesito dividir entre el número de cuadros (o minipantallas), que está en decimal. CUADROS.
Salvo que pudiera hallar alguna regla, que luego comento.

Así que debo convertir el binario en decimal, y luego hacer la división. DIBUJOS/CUADROS.
Una alternativa, trabajar con binarios, lo veo complicado. Supongamos que convierto la cantidad de cuadros, a binario. Luego puedo hacer una división entre binarios, puedo preguntarle a GPT cómo. Pero luego a DIBUJOS tengo que irle restando eso, o sea, hacer restas en binario, y no sé realmente si voy a obtener los números que preciso.
Pero sea como sea, las divisiones van a tener que ser con strings.

Lo de la regla es que los dibujos podrían empezar de cierta forma sin que haya mucho problema. Por ejemplo si hay 4 cuadros de 3*3 cuadraditos cada uno y ponemos que empiecen así:
NNN  NNN
NBB  NBN
NBB  NBB  

NNN  NNN
NBB  NBB
NNB  NBN
Hay que ver si el cuadro inferior derecho queda todo negro (los dibujos van variando) después de que los otros cuadros mostraran todos los dibujos que deben. Si es así y se sigue cumpliendo cuando aumenta la cantidad de cuadros y cuadraditos, bueno, no sería la solución ideal, pero podría ser una solución. Como es difícil saberlo, prefiero hacer una división como se debe. Supongamos que se van a mostrar 512 dibujos. Son menos pero supongamos. Hacemos eso /4, entonces:
512   384
256   128
Me refiero a que un cuadro mostrará el dibujo 512, otro el nro 384, otro el 256, y así. Enseguida, cada uno mostrará el anterior, así:
511  383
255  127
Y así seguirán variando hasta que el inferior derecho llegue a 0 (todo negro), es decir, se muestran todos los dibujos posibles.
Cada número al convertirse a binario se convierte en una representación del dibujo, 0 es negro, 1 blanco.
Más o menos es eso, me puedo haber confundido en algo.
Si los convierto a binario ¿para qué inician como decimales? No sé, me pareció más fácil, lo pensé así, para entender mejor qué estoy haciendo. No creo que sea el problema...

En fin, que yo sepa, para empezar, tengo un binario enorme que debo convertir a decimal pero que sea string. Espero no confundirme en esto.

GPT:
Citar
Para no perder precisión en Flash 5 necesitas hacer aritmética “grande” con strings (sin usar Number para el valor completo). La idea: recorre el binario de izquierda a derecha y mantén el acumulado en decimal como un arreglo de dígitos; en cada bit haces “decimal = decimal*2 + bit”. Multiplicar por 2 y sumar 1 se hacen dígito a dígito.

Aquí tienes una función ActionScript (Flash 5) que convierte un string binario a su string decimal sin pérdida:

```actionscript
Código
  1. // Convierte un string binario (p.ej. "1101") a string decimal exacto (p.ej. "13")
  2. // No usa Number para representar el valor completo, solo dígitos individuales.
  3. function binToDecString(bin) {
  4.  // Saltar ceros líderes
  5.  var i = 0;
  6.  var n = bin.length;
  7.  while (i < n && bin.charAt(i) == "0") { i++; }
  8.  if (i >= n) return "0";
  9.  
  10.  // digits almacena el número decimal en dígitos base 10, LSB primero (digits[0] es las unidades)
  11.  var digits = [0];
  12.  
  13.  for (; i < n; i++) {
  14.    var c = bin.charAt(i);
  15.    if (c != "0" && c != "1") {
  16.      // Si hay caracteres no binarios, puedes elegir lanzar error o ignorar; aquí se ignoran.
  17.      continue;
  18.    }
  19.  
  20.    // decimal *= 2
  21.    var carry = 0;
  22.    var j;
  23.    for (j = 0; j < digits.length; j++) {
  24.      var x = digits[j] * 2 + carry; // x siempre pequeño, seguro
  25.      digits[j] = x % 10;
  26.      carry = Math.floor(x / 10);
  27.    }
  28.    while (carry > 0) {
  29.      digits[digits.length] = carry % 10;
  30.      carry = Math.floor(carry / 10);
  31.    }
  32.  
  33.    // decimal += bit (0 o 1)
  34.    if (c == "1") {
  35.      var k = 0;
  36.      var add = 1;
  37.      while (add > 0) {
  38.        if (k >= digits.length) digits[digits.length] = 0;
  39.        var y = digits[k] + add;
  40.        digits[k] = y % 10;
  41.        add = Math.floor(y / 10);
  42.        k++;
  43.      }
  44.    }
  45.  }
  46.  
  47.  // Construir string (invertir los dígitos)
  48.  var s = "";
  49.  for (var t = digits.length - 1; t >= 0; t--) {
  50.    s += digits[t];
  51.  }
  52.  return s;
  53. }
  54.  
  55. // Ejemplos:
  56. trace(binToDecString("0"));                // "0"
  57. trace(binToDecString("1"));                // "1"
  58. trace(binToDecString("10"));               // "2"
  59. trace(binToDecString("11111111"));         // "255"
  60. trace(binToDecString("10000000000000000"));// "131072"
```

Notas:
- Complejidad aproximada O(bits × dígitos_decimales). Para binarios muy largos funciona bien en Flash 5 si no son cientos de miles de bits.
- Si quieres validar estrictamente el input, en vez de “continue” cuando c != '0'/'1', lanza un error o retorna null.

Ahora tengo que intentar entender ese código... Ya había conseguido uno parecido y no pude. Le puedo ir preguntando a GPT lo que no entienda pero... si alguien pudiera hacer un código más comprensible y explicarlo con un ejemplo estaría bueno.
345  Programación / Programación General / Re: ¿Error al convertir nùmero grande a binario? en: 22 Julio 2025, 03:01 am
Intento resumir y corregir algunos posibles errores que haya cometido en posts anteriores.

Se consigue el número binario que forma la L invertida, aunque es un string:
"1111111011111110111111101111111011111110111111101111111000000000"

Se intenta convertir a decimal, pero como el número resultante es tan grande, Flash falla:
9.22337203685478e+18
Según GPT, el resultado debería ser 18374686492081295424 y el número raro que pone Flash es casi la mitad de eso. Falla.

Entonces, en principio necesito un método de convertir un string que representa un número binario, en un string que represente un decimal, pero sin que dicho método use variables tipo número que sean demasiado grandes, porque sino falla.

El método que usaba, para convertir DibujoEnBinario en DibujoaMostrar, es:
Código
  1. // Convertirlo en decimal:
  2. DibujoaMostrar = 0;
  3. do {
  4. DibujoaMostrar = DibujoaMostrar+(Number(DibujoEnBinario.charat(NroDelCaracter))*Math.round(Math.pow(2, DibujoEnBinario.length-1-NroDelCaracter)));
  5. trace("Convirtiendo en decimal... "+DibujoaMostrar);
  6. NroDelCaracter++;
  7. } while (NroDelCaracter<Cuadraditos);
  8. DibujoaMostrar = Number(DibujoaMostrar);

Le expliqué a GPT y me dijo esto:
Código
  1. function binaryToDecimalString(binStr) {
  2.    var decimal = "0";
  3.    var i = 0;
  4.  
  5.    while (i < binStr.length) {
  6.        // Multiplicar el decimal actual por 2
  7.        decimal = multiplyDecimalStringByTwo(decimal);
  8.  
  9.        // Sumar el bit actual si es 1
  10.        if (binStr.charAt(i) == "1") {
  11.            decimal = addDecimalString(decimal, "1");
  12.        }
  13.  
  14.        i++;
  15.    }
  16.  
  17.    return decimal;
  18. }
  19.  
  20. // Multiplica un string decimal por 2
  21. function multiplyDecimalStringByTwo(decimal) {
  22.    var result = "";
  23.    var carry = 0;
  24.  
  25.    for (var i = decimal.length - 1; i >= 0; i--) {
  26.        var digit = Number(decimal.charAt(i)) * 2 + carry;
  27.        carry = Math.floor(digit / 10);
  28.        result = String(digit % 10) + result;
  29.    }
  30.  
  31.    if (carry > 0) {
  32.        result = String(carry) + result;
  33.    }
  34.  
  35.    return result;
  36. }
  37.  
  38. // Suma dos strings decimales
  39. function addDecimalString(a, b) {
  40.    var result = "";
  41.    var carry = 0;
  42.    var i = a.length - 1;
  43.    var j = b.length - 1;
  44.  
  45.    while (i >= 0 || j >= 0 || carry > 0) {
  46.        var digitA = i >= 0 ? Number(a.charAt(i)) : 0;
  47.        var digitB = j >= 0 ? Number(b.charAt(j)) : 0;
  48.        var sum = digitA + digitB + carry;
  49.        carry = Math.floor(sum / 10);
  50.        result = String(sum % 10) + result;
  51.        i--;
  52.        j--;
  53.    }
  54.  
  55.    return result;
  56. }

Lo voy a pensar.

Luego creo que tendría que dividir un número entre otro, pero siendo strings, y también tendría que hacer restas usando strings.
346  Foros Generales / Sugerencias y dudas sobre el Foro / No sé qué título. en: 12 Julio 2025, 14:46 pm
Quizá debería aprender a no prestar atención a asuntos ajenos. Probablemente. Pero mirar temas de foros parece algo normal.

En Quora, gente postea chistes, curiosidades de la historia, respuestas varias a preguntas de los usuarios... En general, nada me parece tonto, nomás bloqueé a uno que daba mensajes "espirituales" crípticos disfrazados de sabiduría y a otro no recuerdo exactamente por qué, algo como que daba información irrelevante o le ponía demasiada opinión suya con la que no estaba de acuerdo.

Acá, El_Andaluz postea, no cualquier cosa sobre guerras, pero muchas cosas sobre guerras ¿demasiadas? Para mí sí, considerando que es un foro de Informática y que en teoría no se puede opinar de política. Lo que postea sobre eso es generalmente casi todo noticias copiadas de otro lado, que quien quiera verlas las podría leer en otro lado, así que no entiendo para qué. Se puede decir que es un tema importante, preocupante, y que cada uno puede postear de lo que se le de la gana, pero a mí me choca que casi siempre se esté hablando de lo mismo, como si te tiraran el tema en la cara, una y otra vez, donde para colmo no se puede opinar casi y no parece que corresponda, por ser un foro de informática, no de guerras ni tan general como otros foros. No entiendo la intención, me parece incomprensible, esa manía de copiar cosas de guerra de un diario hacia un foro de informática.
También de vez en cuando postea videos de cosas paranormales. Que me hacen sentir más o menos lo mismo: ¿Para qué muestra videos random? ¿por qué tengo que leer sobre eso en un foro de informática? Se lee acá:
https://foro.elhacker.net/unread.html;all
y sí entro porque quiero creer que es algo importante, revolucionario, como pareció que fue lo de la esfera de buga, aunque pasó mucho tiempo y no la abrieron, así que quedó en probable farsa, pero ese video que puso sí estuvo bueno.

Por otro lado, Elektro publicó un tema donde casi que dice haber alcanzado la iluminación, la sabiduría, y hace muchas recomendaciones pero parece decir nada, que tienes que ver los videos enteros o leer los libros para poder opinar debidamente. Para mí si alguien tiene algo importante y sabio que decir lo debería poder resumir un poco, pero bueno, no quise creer que fuera una tontería, aunque ese no resumen inspira desconfianza. Leí un resumen, el señor que recomienda cree que la vida es un videojuego, un montaje de la consciencia para evolucionar.

Ante tanta "espiritualidad" en el foro, me pregunté: ¿Esta gente ha experimentado algo paranormal alguna vez o...?
Por eso en parte hice el tema preguntando si alguna vez experimentaron algo paranormal. Y me pareció interesante. Videos probablemente hechos para lucrar, no. Tampoco me gusta asustarme al pedo.

Electro me insultó más o menos, y el tema se desvió.

Ahora, hice este tema que están leyendo porque quería preguntar cómo se supone que evite que se desvíe si me insulta y casi cualquier cosa menos decir lo que más me interesaba. Si él cree que la vida es un videojuego o no sé qué cosa aparentemente paranormal, podría explicar por qué ¿ha tenido alguna experiencia que lo induzca a creer eso? No explicó. ¿Qué debo pensar? Probablemente nada, pero ese tipo de gente me cansa. Si tienen algo importante que decir, que lo digan, sino es como una burla, no sé explicarlo, como si uno tuviese hambre (de sabiduría) y estos tipos nos intentaran hacer ver que están comiendo, pero algo probablemente falso, que probablemente ni ellos se dan cuenta, así que siento una mezcla de rabia y pena.

Más allá de eso, no sé lo que quiero, explicar algunas cosas sí.

Y bueno, no quiero que se prohíban ciertos temas en el foro, ni quiero que la gente se dedique sólo a cosas "inteligentes", pero siento que algo está mal, que no encaja, puede que sea yo, que necesite unas vacaciones de las redes sociales, o de este foro, pero como digo en Quora es muy difícil que te llegue una notificación de un video random de YT de dudosa credibilidad, de cada puñetero ataque en una guerra, o si llegan, como los mensajes espirituales crípticos, se tiene la opción de bloquear, de ignorar.

Quizá, por ejemplo, podrían hacer que los temas del foro libre no aparezcan acá:
https://foro.elhacker.net/unread.html;all
o denme un link donde no aparezcan, aunque igual me siento un poco mal, se me olvida esto: ¿Por qué no hacen algo más importante o relacionado con la Informática? Avances en la IA por ejemplo. No sé, es como que siento que está mal que alguien pierda su tiempo viendo o leyendo "estupideces", no sé, porque lo que siento cambia a veces, me olvido qué era, yo puedo pensar, en teoría, que son unos locos e ignorarlos, pero los temas me aparecen en el link, así que los veo, no puedo ignorarlos... Además a veces me da como rabia que pierdan el tiempo en "estupideces" pudiendo hacer algo mejor, aunque claro no debo obligarlos, pero me molesta ser obligado a ver esos temas.

En mi barrio hay gente durmiendo en la calle, y varios más revisan contenedores de basura, buscando sobras de comida o algo que vender. Yo no me siento tan distinto. Muy cerca se reúnen unos hinchas de políticos a charlar. ¿Debería spamearles una y otra vez lo mal que está el país? No lo hago porque hacer propaganda, joder una y otra vez con lo mismo, me parece mal.

No sé, lamento si soy el problema, demasiado intolerante, intentaré no prestar atención a temas que no sean de informática aquí y no dar importancia a lo "no importante" que hagan otros, pero sería bueno, y quizá importante, que haya una mejora en el foro como para que nos llegue lo que nos interesa, y no lo que no. ¿Qué sentido tiene que se pueda publicar cualquier cosa y que a la gente le llegue cualquier cosa aunque no quieran?
347  Programación / Programación General / Re: ¿Error al convertir nùmero grande a binario? en: 12 Julio 2025, 12:56 pm
Según GPT, Flash falla en guardar números demasiado grandes. Asumo que el problema es ese.

A ver, tengo una cadena que representa a un binario.

Necesito convertirlo en decimal, pero si es un número falla, así que necesito que sea una cadena.
¿Cómo convierto una cadena que representa a un binario, en una cadena que representa a un decimal? Sin convertirlo todo junto a número porque sino falla.

Luego a la cadena obtenida, que representa a un decimal, necesito dividirla por otro número, nunca tan grande. Y que el resultado sea una cadena también, porque puede ser muy grande.
¿Cómo a una cadena que representa a un decimal, la puedo dividir por un número, de modo que el resultado sea representado por una cadena? Mismo comentario.

Con eso tenemos Decimal y ResultadoDeDivision.

Por último, a Decimal necesito restarle ResultadoDeDivision varias veces, en un loop. Esto parece lo más sencillo, como hacer una resta manualmente, viendo cuales son los últimos caracteres.
¿Cómo a una cadena que representa a un decimal, le puedo restar otra que representa a otro? Mismo comentario.

O quizá sería más fácil hacer las operaciones usando las cadenas binarias, creo que no necesito los decimales.

Le preguntaré a GPT si nadie responde.
348  Foros Generales / Foro Libre / Re: ¿Alguna vez experimentaste algo paranormal? en: 12 Julio 2025, 11:36 am
Yo no te he atacado
Dijiste que cruzarías la acera para alejarte porque me parece paranormal lo que comenté, que te parece preocupante.
Además me diste otra definición de paranormal, como si la mía hubiera estado demasiado mal.
Y me explicaste que los niños imaginan cosas, como si yo no supiera.
Lo peor es lo 1ero, pero si sumas todo, es como que me trataste como a un idiota.

Este tema no es para debatir, si ya sabés que en este foro no se puede casi. Es para contar experiencias.

Citar
parece que tienes algún problema si de todo mi extenso comentario eso es lo único que te importa y lo que quieres escribir.
Según recuerdo te pedí un video de la lata y no lo hiciste. Acá es Invierno y no compro latas, bueno compré una de conservas, pero son pesadas. Y las botellas tienen como patitas, no sé explicarlo ¿esta imagen la puedes ver?

Yo la veo. No voy a comprar una lata para hacer un experimento en invierno cuando dices que es en verano, y no me sobra como para comprar latas, lo pequeño suele ser poco económico aquí, se compra de a 2l o más.

Me comentaste que no sabes cómo es la llave, y que los "magos" doblan cucharas a escondidas, y que a algunos se les quebraron cosas que parece imposible. No tengo mucho que decir sobre eso, conozco gente a quien se le rompió algún pedacito de llave cuando se le cayó, pero a mí lo que comenté me parece distinto. Lo que podría hacer es preguntarle a mi padre si estaba doblada o no y cómo pudo haberse doblado, pero con este tema no intento comprender los misterios del universo, ni demostrar que fue paranormal, así que no lo tengo pensado hacer, además a mi padre le molesta casi cualquier cosa que le diga, especialmente preguntas, así que prefiero no hablarle en general.

Te pedí que expliques por qué te parecen respetables las creencias de quienes mencionaste y no lo explicaste.

Yo no veo que se pueda decir mucho más de ese post.
No quisiste hacer el video, así que no insistí.
No quisiste explicar por qué son respetables las creencias "religiosas" que mencionaste, idem.
Yo no voy a andar averiguando de qué está hecha la llave, como dije este tema no es para intentar demostrar que algo es paranormal, si no lo crees está bien, no voy a intentar convencerte.

En cuanto al boomerang es más o menos lo mismo.

Citar
¿Entonces para qué me preguntas sobre todo lo demás, si solo te importa eso?
Tuve la esperanza de que me lo respondieras o hicieras el video. No sólo me importan los ataques.

Citar
Seguro que en tus próximos hilos, cuando veas que ningún usuario se toma la molestia de participar —como he hecho yo en este—, no tendrás ningún problema... total, así tampoco habrá nadie con quien puedas discutir, por lo que a lo mejor llegas a agradecer que te ignoren por completo tus hilos.
No tengo problema en discutir pero no creo que este fuera un tema adecuado para eso. Ni la forma en que discutiste.

Citar
a mi me sigue pareciendo motivo de preocupación que un adulto le de validez a un recuerdo difuso de una experiencia vivida dese la percepción y la creatividad e imaginación de un niño de 9 años, y esto no es un ataque, es simplemente como pienso.
Bueno, a mí no me parece que haya sido creatividad e imaginación, hubo un caso en que algo había soñadp. posiblemente era más chico, esa vez grité, mis padres vinieron, luego la luz hizo un parpadeo o quizá parapedeé yo y dije "¿ven?", como si eso hubiera sido algo manipulando la eñlectricidad, pero eso no lo mencioné, porque parece claro que fue mi imaginación, lo del boomerang no. No es que yo anduviera "creando" cosas brillantes y ruidosas a esa edad, y en toda mi vida jamás vi ni escuché algo parecido. El ruido fueron 2 veces como comenté. Lo más parecido sería lo de la "anemia", pero fue bastante diferente.
Eso lo digo para que se sepa por qué lo creo, aunque no debería ser necesario. Si alguien no lo cree, está bien.
349  Foros Generales / Foro Libre / Re: ¿Alguna vez experimentaste algo paranormal? en: 12 Julio 2025, 08:21 am
Pero ese tipo de ataques, sobran
No los empieces entonces.
350  Foros Generales / Foro Libre / Re: ¿Alguna vez experimentaste algo paranormal? en: 12 Julio 2025, 01:59 am
Si puedes reproduce, graba y muestra cómo gotitas de agua hacen girar una lata porque no lo entendí.

Tampoco entiendo cómo explicas que un niño haya doblado una llave. Si es que no estaba ya así, no sé.

Lo del boomerang no fue un sueño ni parálisis del sueño, aunque pudo haber sido pocos nutrientes en donde se necesitan para que el cerebro funcione bien, algo parecido. A veces cuando me despierto y me he sonado la nariz, he visto estrellitas a mi alrededor. Y una vez que me sacaron sangre luego de pincharme mucho, caminaba y dejé de escuchar y todo se puso blanco. Pero bueno, dudo que sea lo mismo.

Cuando digo OVNI no me refiero a una luz que va en línea recta y se apaga luego de un tiempo, ni a algo que se me acercaba sin que yo supiera qué era y resultó ser una flecha de juguete. Sí, eso era un OVNI al principio, o más bien un OCNI, objeto cayendo...
Yo me refiero a cosas que no parecen explicables o de este mundo. Por ejemplo un disco negro que al principio tenía luces que parecían láseres.

Citar
En torno a lo 2º, lo veo más como un motivo para cambiarme de acera si veo a esa persona caminando por la calle. En realidad no, por que te ocurrió con 9 años, pero me parece un poco preocupante que de adulto sigas tomando por válido una experiencia difusa y vivida dese la percepción y la creatividad e imaginación de tu 'yo' de 9 años...
Entonces quisiera que me expliques cómo te parece admirable o respetable un viejo que dice que la vida es un videojuego y otro que cree haber conversado con Dios, o cosas parecidas, a quienes recomiendas en un tema tuyo reciente.
No voy a ver los videos completos como tampoco voy a leer la biblia.
Páginas: 1 ... 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 [35] 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 ... 274
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines