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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ... 192
71  Foros Generales / Dudas Generales / ¿Qué condiciones deben cumplir las condiciones en dudas de 2 (condiciones)? en: 11 Marzo 2024, 01:28 am
Una de las dudas más sencillas es: ¿Qué número es > 0?

Se puede expresar como: ... > 0
entendiendo que en los puntos suspensivos hay que poner un número.
Es lo mismo decirlo así: 0 < ...
Hay 1 número conocido, 1 comparador conocido, y 1 número que debe elegirse. Estructuralmente es A B C. Es una condición que debe cumplirse mediante elegir cierto valor, que según la duda puede ser A o C, pero como son lo mismo como ya expliqué, para simplificar asuman que lo elegible es A.

La duda también podría ser algo como 0 ... 2, en tal caso lo que debe elegirse sería un comparador, podemos decirles B A C.
C A B sería lo mismo.

Esas dudas se pueden complicar un poco si las condiciones que deben cumplirse son 2. Sin agregar valores ni comparadores las posibilidades son:

1a:
A B C
y/o
A C B
La y/o significa que la duda se resuelve si se cumple una condición y/o la otra.
En este caso cada cosa es un comparador (A el único elegible), pero cuando se compara es texto, por ejemplo:
... == "=="
... == "=="
Otras posibilidades pueden ser como esta en ese sentido o no. En estos casos los comparadores sólo pueden ser == o <>.

1b:
A B C
y
A C B
La y significa que deben cumplirse ambas condiciones.

2a:
A B C
y/o
B A C

2b:
A B C
y
B A C

3a:
A C B
y/o
B A C

3b:
A C B
y
B A C

¿De acuerdo? Es difícil para mí tener mucha idea de si lo que digo sobre esto tiene sentido o no, pero básicamente tenemos que lo de la derecha es igual a lo de la izquierda:
ABC   CBA
ACB   BCA
BAC   CAB
Lo que nos deja con 3 posibilidades, que al formar pares sólo pueden ser 3, y hay 2 relaciones posibles, por lo que son 3*2 posibilidades tal como en la lista que puse.

Ahora sería lo mismo pero agregando 1 valor, por ejemplo:
A B C
y/o
A D C
Pero en ese par de condiciones sólo puede haber una redundancia o una contradicción ¿no? Ejemplo de redundancia en relación y/o:
... <= 10
y/o
... < 10
Si B y C son conocidos entonces la condición alternativa no aporta, es más restrictiva que la anterior, está incluída en ella, no tiene sentido decirla.
Ejemplo de redundancia en relación y:
... < 10
y
... <= 10
Aquí es al revés: La condición más amplia no sirve, si A debe ser < 10 entonces no tiene sentido decir que también puede ser == 10.
Ejemplo de contradicción:
... < 10
y
... > 10
No puede ser < y > al mismo tiempo, es una contradicción. En una relación y/o esto debería convertirse a una única condición con comparador <>.

Teniendo en cuenta eso ¿cuales pares de estructuras de condiciones son válidas? ¿qué condiciones o reglas deben cumplir?

Se me ocurren:
- Si se mencionó la relación entre 2 variables, no hay que mencionar otra relación entre esas 2. Para las condiciones y/o mencionar la menos restrictiva y para las y mencionar las más.
- Si se dice que una incógnita es igual a una variable, no hay que dar más datos de la incógnita.

¿Qué otras se les ocurren?
72  Informática / Software / ¿Cómo averiguo los passwords de archivos rar o extraigo sus contenidos sin saberlos? en: 10 Marzo 2024, 13:23 pm
Hace años en distintas circunstancias puse archivos en archivos rar y ya no recuerdo los passwords.

Googlé sobre eso, entré a una página que se veía sospechosa porque era promocional, recomendó Passper, se descargó free, y al momento de usarlo me querían cobrar.

Luego hice una búsqueda en el foro mostrando sólo temas y ordenando por lo más reciente 1ero, aquí está el resultado:
https://foro.elhacker.net/index.php?dummy=1;action=search2
Raro el link, pero en fin, lo que mejor me parece que se ajusta es esto:
https://foro.elhacker.net/buscador-t455711.0.html

https://foro.elhacker.net/buscador-t440262.0.html
o
https://foro.elhacker.net/buscador2-t440262.0.html;msg2033301#msg2033301
o
https://foro.elhacker.net/buscador-t440251.0.html

O podría ser esto:
https://foro.elhacker.net/buscador-t423741.0.html

Pero mejor confírmenme que siguen sirviendo, gratis, o díganme otro, gracias.
73  Programación / Programación General / Re: No logro que el programa cuente bien los nuevos píxeles pintados. en: 9 Marzo 2024, 21:53 pm
Probablemente hallé el problema.

Cuando se insertaba un pixel se hacía:
Código:
if (Puntero/PixelesdeLargo == Math.floor(Puntero/PixelesdeLargo) or Puntero>MinPixelInferior) {
// Sí, actualizar SumadePintadosNuevos:
SumadePintadosNuevos = SumadePintadosNuevos+1;
}

Y cuando se lo reseteaba:
Código:
if (Puntero/MaxPosiciondePuntero == Math.floor(Puntero/MaxPosiciondePuntero) or Puntero>=MinPixelInferior) {
// Sí, actualizar SumadePintadosNuevos:
SumadePintadosNuevos = SumadePintadosNuevos-1;
}

No sé por qué estaba tan distinto >___<
74  Programación / Scripting / Re: Conteo continuo con Batch (Ayuda) en: 9 Marzo 2024, 20:48 pm
¿No se puede hacer algo como:
Código:
Repetir:
  Actualizar el tiempo.
  Si el jugador presiona tecla:
    Hacer tarea.
mientras...
?
75  Programación / Scripting / Re: Conteo continuo con Batch (Ayuda) en: 9 Marzo 2024, 18:30 pm
¿Puedes captar la hora del sistema?

Los RPG son de mis juegos favoritos, pero de batch casi nada sé. Quizá para uno de esos deberías cambiar de lenguaje.

ChatGPT:
Citar
En Batch, puedes utilizar el comando `timeout` para realizar una espera durante un período de tiempo determinado. Sin embargo, Batch no permite la interacción directa con el usuario mientras se ejecuta un comando de tiempo de espera. Por lo tanto, no es posible tener un código Batch que cuente el tiempo y permita que un usuario realice acciones simultáneamente.

Si necesitas una solución que cuente el tiempo y permita la interacción del usuario al mismo tiempo, sería más apropiado utilizar un lenguaje de programación más avanzado como Python, Java o C#. Estos lenguajes ofrecen bibliotecas y funcionalidades para gestionar el tiempo y la interacción con los usuarios de manera simultánea.

Aquí tienes un ejemplo en Python que cuenta el tiempo y permite que el usuario realice acciones al mismo tiempo:

```python
import time

# Definir el tiempo límite en segundos
tiempo_limite = 60

# Obtener el tiempo de inicio
inicio = time.time()

# Bucle principal
while True:
    # Obtener el tiempo actual
    tiempo_actual = time.time()
    
    # Calcular el tiempo transcurrido
    tiempo_transcurrido = tiempo_actual - inicio
    
    # Verificar si se ha alcanzado el tiempo límite
    if tiempo_transcurrido >= tiempo_limite:
        print("Tiempo límite alcanzado.")
        break
    
    # Realizar acciones del usuario
    accion = input("Ingresa una acción: ")
    print("Realizando la acción:", accion)
```

Este código utiliza la biblioteca `time` de Python para calcular el tiempo transcurrido y establece un tiempo límite de 60 segundos. El bucle principal permite que el usuario realice acciones ingresando datos a través de `input()`. El programa seguirá ejecutándose hasta que se alcance el tiempo límite o el usuario decida salir del bucle.

Recuerda que este es solo un ejemplo básico y puedes adaptarlo según tus necesidades específicas.

¿hay algún modo de captar la hora del sistema y restarle la hora inicial?

Citar
Sí, en Batch puedes utilizar el comando `wmic` para obtener la fecha y hora actual del sistema. Luego, puedes realizar la resta con la hora inicial para obtener la diferencia en tiempo transcurrido. Aquí tienes un ejemplo de cómo hacerlo:

```batch
@echo off

REM Obtener la hora inicial
for /F "tokens=1-3 delims=:." %%a in ("%time%") do (
    set /A "hora_inicial=%%a*3600 + %%b*60 + %%c"
)

REM Bucle principal
:loop
REM Obtener la hora actual
for /F "skip=1 delims=" %%a in ('wmic path win32_localtime get Hour,Minute,Second /format:list') do (
    for /F "tokens=2 delims==" %%b in ("%%a") do set "hora_actual=%%b"
)

REM Calcular la diferencia
for /F "tokens=1-3 delims=:." %%a in ("%hora_actual%") do (
    set /A "hora_actual=%%a*3600 + %%b*60 + %%c"
)

REM Restar la hora inicial a la hora actual
set /A "diferencia=hora_actual - hora_inicial"

REM Mostrar la diferencia en tiempo transcurrido
echo Tiempo transcurrido: %diferencia% segundos

REM Esperar un segundo antes de verificar nuevamente
ping -n 2 127.0.0.1 >nul

REM Volver al inicio del bucle
goto loop
```

En este código, se utiliza un bucle infinito (`:loop`) para obtener continuamente la hora actual del sistema utilizando el comando `wmic`. Luego, se convierte la hora inicial y la hora actual en segundos para realizar la resta y obtener la diferencia en tiempo transcurrido. Esta diferencia se muestra en la consola.

El comando `ping -n 2 127.0.0.1 >nul` se utiliza para introducir una pausa de 1 segundo antes de obtener la hora actual nuevamente. Puedes ajustar este valor si deseas una frecuencia de actualización diferente.

Recuerda que Batch no es el lenguaje más adecuado para este tipo de tareas, ya que su capacidad de manejar el tiempo y la interacción con el usuario es limitada. Si necesitas una solución más robusta, te recomendaría utilizar un lenguaje de programación más avanzado como Python, como se mencionó anteriormente.
Si logras que se actualicen los segundos podría haber una simulación de que el tiempo pasa, pero como comentaste parece que para hacer eso tendrías que estar en un bucle constante chequeando si el tiempo cambió o no.

¿Seguro que lo hizo en Batch?
76  Programación / Programación General / ¿Código que elimine ifs o llamadas a funciones? en: 9 Marzo 2024, 00:48 am
Si el código está en un archivo convertido a binario quizá sea complicado, pero imaginen esto:
Si es la 1era vez que el mouse se mueve:
  Anotar cuando se movió.
Si es la 1era vez que se hace clic:
  Anotar cuando se cliqueó.
etc, etc, chequeándose hasta... ¿que el programa se cierre, o qué? Supongan que se quiere saber cuando fue el 1er caso de cada evento, hasta que no ocurran todos o no termine el juego o lo que sea, no hay fin, a menos que se ponga otro if para que cuando hayan ocurrido todos los eventos deje de ejecutar todo ese código.

Sería bueno poder hacer:
Si es la 1era vez que el mouse se mueve:
  Anotar cuando se movió.
  Borrar este if.
Si es la 1era vez que se hace clic:
  Anotar cuando se cliqueó.
  Borrar este if.
etc, etc, es decir, puede ser que cuando va a ejecutarse el código, se haga una copia del mismo, y se borren cosas de esa copia; el código real queda intacto. ¿Es posible hacer eso en algún lenguaje?

En Flash hay una forma que se me acaba de ocurrir, pero es un poco impredecible cómo funciona:
Cuando se llega al punto de querer chequear cuando ocurre el 1er evento de algo, se inserta una película que tiene el if. Cuando el if se cumple, la película se autoelimina. La película puede ser vacía y sólo tener código, así que es algo ligero. Lo que digo que es impredecible es que no sé si su código se ejecuta antes o después del "main", pero en este caso no importa. Pruebo y les cuento.

Edit:
Correcto, así lo hice:
- Crear una película vacía y llamarle "Vacía".
- Crear otra, llamarle "Captar 1er movimiento", y ponerle la Vacía.
- A esa vacía ponerle el if para captar el 1er movimiento y que al cumplirse remueva a su padre (que es "Captar 1er movimiento").
- Donde se necesite, insertar (con attach, sino no es removible) "Captar 1er movimiento".

Para captar otras cosas repetir desde el 2ndo paso cambiando los nombres y códigos.
77  Programación / Programación General / Contar los frames en que se presiona una tecla, *2 si son 2, etc. en: 9 Marzo 2024, 00:15 am
El problema es que, tal como lo programé, se deja de contar cuando se detecta que se dejó de presionar una tecla, así que si hay otra presionándose no la cuenta, o más o menos es lo que pasa:
Caso A: Presiono "A" y no la suelto, presiono "S" y no la suelto, suelto "A", deja de contar, luego reempieza.
Caso B: Presiono "A" y no la suelto, presiono "S" y no la suelto, suelto "S", deja de contar.

Quiero que el programa detecte cuántas teclas se están presionando, que cuente todas las presiones por frame en una misma variable (si hay 2 teclas presionándose, debe aumentar 2, por ejemplo), y que al soltar una deje de contar esa, no las demás. ¿Cómo puedo hacer?

Ah, importante: En el programa se distingue una presión, de los frames presionándose, es decir, si una tecla se presiona, eso cuenta como "Clac", presiones, pero la cantidad de clacs sólo aumenta si se suelta y se vuelve a presionar, en cambio "FramesClaqueando" aumenta en cada frame si se está presionando una tecla. Básicamente lo que me interesa es eso último, lo demás está bien. Miren lo relativo a Claqueando:
Código
  1. onClipEvent (load) {
  2. Moviendose = "No";
  3. Cliqueando = "No";
  4. Claqueando = "No";
  5. ActualXMouse = _level0._xmouse;
  6. ActualYMouse = _level0._ymouse;
  7. }
  8. onClipEvent (enterFrame) {
  9. // Frames:
  10. _level0.Frames = _level0.Frames+1;
  11. // Movimiento:
  12. // Si el mouse se movió:
  13. if (ActualXMouse != _level0._xmouse or ActualYMouse != _level0._ymouse) {
  14. _level0.FramesMoviendose = _level0.FramesMoviendose+1;
  15. // Si el mouse estaba quieto:
  16. if (Moviendose == "No") {
  17. Moviendose = "Sí";
  18. _level0.Movimientos = _level0.Movimientos+1;
  19. }
  20. } else if (Moviendose == "Sí") {
  21. // No se movió pero estaba moviéndose:
  22. Moviendose = "No";
  23. _level0.Frenadas = _level0.Frenadas+1;
  24. }
  25. ActualXMouse = _level0._xmouse;
  26. ActualYMouse = _level0._ymouse;
  27. // FramesCliqueando:
  28. if (Cliqueando == "Sí") {
  29. _level0.FramesCliqueando = _level0.FramesCliqueando+1;
  30. }
  31. // FramesClaqueando:
  32. if (Claqueando == "Sí") {
  33. _level0.FramesClaqueando = _level0.FramesClaqueando+1;
  34. }
  35. }
  36. onClipEvent (mouseDown) {
  37. Cliqueando = "Sí";
  38. _level0.Clics = _level0.Clics+1;
  39. }
  40. onClipEvent (mouseUp) {
  41. Cliqueando = "No";
  42. _level0.Desclics = _level0.Desclics+1;
  43. }
  44. onClipEvent (keyDown) {
  45. if (Claqueando == "No") {
  46. Claqueando = "Sí";
  47. _level0.Clacs = _level0.Clacs+1;
  48. }
  49. }
  50. onClipEvent (keyUp) {
  51. if (Claqueando == "Sí") {
  52. Claqueando = "No";
  53. _level0.Desclacs = _level0.Desclacs+1;
  54. }
  55. }
78  Informática / Software / Problema con archivos pcx. en: 8 Marzo 2024, 19:49 pm
Tengo varios, son fotos de algún emulador de NES. Quiero abrirlos a ver si los borro o no. Antes los abría sin problema, ahora ni con el visualizador de imágenes, ni Paint, ni Chrome, ni Flash. Abrí uno con un visualizador online, todo bien, pero no quiero abrir tantos así. Descargué Microsoft Photo Editor, que yo solía tener, y me dice que el formato es desconocido.

¿Hay alguna manera de cambiarle las extensiones a JPEG o algo así normal y que funcionen? ¿o qué programa debo usar? Yo nunca tuve Photoshop, no quiero algo pesado.
79  Foros Generales / Foro Libre / Re: Fallece Akira Toriyama, creador de series míticas como Dragon Ball y Dr. Slump en: 8 Marzo 2024, 19:23 pm
DEP

¿Esperaron 7 días y lo anunciaron justo el día de la mujer? m...
80  Programación / Programación General / No logro que el programa cuente bien los nuevos píxeles pintados. en: 7 Marzo 2024, 21:10 pm
Intento hacer un generador de dibujos cada vez de más píxeles (2x2, 3x3, etc), por ahora solo negros con fondo blanco. Aquí se ve algo parecido:
https://www.youtube.com/watch?v=0x5fEw8LGP4

Quiero evitar que se generen dibujos repetidos. Para eso exijo a los dibujos 2 cosas (no es suficiente pero 1ero debo resolver esto):
1- La cantidad de píxeles pintados debe ser >= Píxeles que entran en el largo de la hoja. Si en la hoja puede haber 2x2, debe haber mínimo 2.
2- La cantidad de nuevos pixeles pintados debe ser > 0. Cuando la hoja es de 2x2, los nuevos (N) son:
ON
NN
Cuando es de 3x3 son:
OON
OON
NNN
Es decir, los del extremo derecho y los inferiores.

Intento que los cuente para así determinar si debe mostrar el dibujo o salteárselo, pero llega un punto en que la cifra no disminuye o aumenta cuando no debe, no sé, estoy viendo cual puede ser el problema.
Código
  1.   actions for fotograma 1
  2.      PixelesdeLargo = 1;
  3.      // En F3 se repite:
  4.      function Variar () {
  5.         PixelaModificar = "ColordePixel"+Puntero;
  6.         ColordePixelaModificar = eval(PixelaModificar);
  7.         // ¿El pixel puede cambiar de color?
  8.         if (ColordePixelaModificar<1) {
  9.            // Sí, hacer los cambios:
  10.            set (PixelaModificar, ColordePixelaModificar+1);
  11.            Col = new Color("Pixel"+Puntero);
  12.            Col.setRGB(parseInt(0, 16));
  13.            trace ("Se pintó el pixel "+PixelaModificar);
  14.            // Para juzgar: ¿El dibujo es repetido?
  15.            SumadePintados = SumadePintados+1;
  16.            // ¿El píxel está en el extremo derecho o abajo, donde no había en una hoja más chica?
  17.            if (Puntero/PixelesdeLargo == Math.floor(Puntero/PixelesdeLargo) or Puntero>MinPixelInferior) {
  18.               // Sí, actualizar SumadePintadosNuevos:
  19.               SumadePintadosNuevos = SumadePintadosNuevos+1;
  20.            }
  21.            trace ("SumadePintadosNuevos: "+SumadePintadosNuevos);
  22.            // ¿El dibujo tiene píxeles donde no había en una hoja más chica...
  23.            // y son al menos (PixelesdeLargo) píxeles?
  24.            if (SumadePintadosNuevos>0 && SumadePintados>=MinSumadePintados) {
  25.               // Sí, hacer dibujo y dar tiempo para verlo:
  26.               Puntero = MaxPosiciondePuntero;
  27.               trace ("\tMostrando dibujo.");
  28.               // trace ("SumadePintados: "+SumadePintados);
  29.               trace ("SumadePintadosNuevos: "+SumadePintadosNuevos);
  30.               play ();
  31.            } else {
  32.               // No, el dibujo es repetido, no mostrarlo y hacer otro:
  33.               Puntero = MaxPosiciondePuntero;
  34.               trace ("\tRepetido, salteándolo.");
  35.               // trace ("SumadePintados: "+SumadePintados);
  36.               trace ("SumadePintadosNuevos: "+SumadePintadosNuevos);
  37.               Variar();
  38.            }
  39.         } else {
  40.            // El pixel no puede cambiar de color, resetearlo:
  41.            set (PixelaModificar, 0);
  42.            Col = new Color("Pixel"+Puntero);
  43.            Col.setRGB(parseInt("FFFFFF", 16));
  44.            trace ("Se reseteó el pixel "+PixelaModificar);
  45.            SumadePintados = SumadePintados-1;
  46.            // ¿El píxel está en el extremo derecho o abajo, donde no había en una hoja más chica?
  47.            if (Puntero/MaxPosiciondePuntero == Math.floor(Puntero/MaxPosiciondePuntero) or Puntero>=MinPixelInferior) {
  48.               // Sí, actualizar SumadePintadosNuevos:
  49.               SumadePintadosNuevos = SumadePintadosNuevos-1;
  50.            }
  51.            trace ("SumadePintadosNuevos: "+SumadePintadosNuevos);
  52.            // ¿Hay un pixel anterior?
  53.            if (Puntero>1) {
  54.               // Sí, apuntar a ese:
  55.               Puntero = Puntero-1;
  56.               // Continuar haciendo el dibujo:
  57.               trace ("\tHaciendo dibujo, apuntando al pixel anterior.");
  58.               // trace ("SumadePintados: "+SumadePintados);
  59.               trace ("SumadePintadosNuevos: "+SumadePintadosNuevos);
  60.               Variar();
  61.            } else {
  62.               // No, aumentar tamaño de hoja y reiniciar.
  63.               gotoAndPlay (2);
  64.            }
  65.         }
  66.      }
  67.   actions for fotograma 2
  68.      PixelesdeLargo = PixelesdeLargo+1;
  69.      // Colocados:
  70.      Pixeles = 0;
  71.      DistanciaEntrePixeles = 384/PixelesdeLargo;
  72.      PosicionX = 64-DistanciaEntrePixeles;
  73.      EnlaFilaActual = 0;
  74.      PosicionY = 0;
  75.      MaxPosiciondePuntero = PixelesdeLargo*PixelesdeLargo;
  76.      Puntero = MaxPosiciondePuntero;
  77.      // Píxeles pintados:
  78.      SumadePintados = 0;
  79.      // Esta variable parece eliminable pero antes era-1,
  80.      // y podría ser que deba aumentar en ciertos casos:
  81.      MinSumadePintados = PixelesdeLargo;
  82.      MinPixelInferior = PixelesdeLargo*(PixelesdeLargo-1);
  83.      // Píxeles pintados que no estaban en hojas de menos píxeles:
  84.      SumadePintadosNuevos = 0;
  85.      // Agregar píxeles en blanco:
  86.      do {
  87.         Pixeles = Pixeles+1;
  88.         if (EnlaFilaActual<PixelesdeLargo) {
  89.            EnlaFilaActual = EnlaFilaActual+1;
  90.            PosicionX = PosicionX+DistanciaEntrePixeles;
  91.         } else {
  92.            PosicionX = 64;
  93.            EnlaFilaActual = 1;
  94.            PosicionY = PosicionY+DistanciaEntrePixeles;
  95.         }
  96.         trace ("El pixel "+Pixeles+" se colocó en "+PosicionX+", "+PosicionY);
  97.         attachMovie("mPixel", "Pixel"+Pixeles, Pixeles);
  98.         setProperty ("Pixel"+Pixeles, _x, PosicionX);
  99.         setProperty ("Pixel"+Pixeles, _y, PosicionY);
  100.         setProperty ("Pixel"+Pixeles, _width, DistanciaEntrePixeles);
  101.         setProperty ("Pixel"+Pixeles, _height, DistanciaEntrePixeles);
  102.      } while (Pixeles<MaxPosiciondePuntero);
  103.      stop ();
  104.   actions for fotograma 3
  105.      stop ();
  106.   actions for Vacío
  107.      onClipEvent (enterFrame) {
  108.         _level0.Variar();
  109.      }
  110.   actions for fotograma 4
  111.      stop ();
  112.   actions for fotograma 5
  113.      gotoAndPlay (3);
  114.  

¿Cómo lo soluciono?
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ... 192
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines