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


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ¿Por qué dice que no hay solución si se supone que sí?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Por qué dice que no hay solución si se supone que sí?  (Leído 846 veces)
Tachikomaia


Desconectado Desconectado

Mensajes: 1.693


Hackentifiko!


Ver Perfil
¿Por qué dice que no hay solución si se supone que sí?
« en: 3 Febrero 2026, 14:24 pm »

Código
  1. Action1 = "";
  2. Action2 = "";
  3. // Usada repetidamente por un objeto en el frame 1:
  4. function FuerzaBruta () {
  5.    Mensaje = "Probando "+Action1+" y "+Action2;
  6.    if (Action1<Action2) {
  7. trace("Action1<Action2");
  8.        // Solución; mostrar en pantalla y fin.
  9.        Mensaje = "Se recomiendan las acciones "+Action1+" y "+Action2;
  10.        gotoAndStop (2);
  11.    } else if (Action1<"111") {
  12.        Action1 = Action1+"1";
  13. trace("Action1");
  14.    } else if (Action2<"111") {
  15.        Action1 = "";
  16.        Action2 = Action2+"1";
  17. trace("Action2");
  18.    } else {
  19.        Mensaje = "No se pudo hallar una solución";
  20.        gotoAndStop (2);
  21.    }
  22. }
  23. stop ();
  24.  

Ni siquiera me muestra los traces, o sea nunca se cumplen estas condiciones:
    if (Action1<Action2) {
    } else if (Action1<"111") {
    } else if (Action2<"111") {

Pero según GPT cuando una cadena se compara con otra se mira el valor ASCII o algo así de cada caracter, algo parecido a que se chequea qué cadena va 1ero en orden alfabético.

    if (Action1<Action2) {
deberia cumplirse en el par "" y "1", o en el par "1" y "11", etc. Salvo que cuando no haya caracteres diga "no hay con qué comparar, false".

    } else if (Action1<"111") {
Action1 empieza como "", y "" < "111", así que esta condición debería cumplirse.

En fin, intentaba hacer un código simple, sin usar lenght ¿es realmente necesario?

Citar
Operadores > < (menor que)

< (menor que)
Sintaxis

expresión1 < expresión2
Argumentos

expresión1, expresión2 Números o cadenas.

Descripción

Operador (de comparación); compara dos expresiones y determina si expresión1 es menor que expresión2 (true), o si expresión1 es mayor o igual que expresión2 (false). Las expresiones de cadena se evalúan y comparan basándose en el número de caracteres de la cadena.

Reproductor

Flash 4; Flash 5 o posterior. En Flash 5 < es un operador de comparación capaz de manejar varios tipos de datos. En Flash 4, < es un operador numérico. Los archivos de Flash 4 que se incorporen a un entorno de creación de Flash 5 sufren un proceso de conversión para mantener la integridad de los tipos de datos. El primer ejemplo a continuación muestra el proceso de conversión.

Ejemplo

A continuación se muestra un ejemplo de conversión de un archivo de Flash 4 que contenga una comparación de cualidad numérica.

Archivo de Flash 4:

x < y
Archivo de Flash 5 convertido:

Number(x) < Number(y)
El ejemplo siguiente muestra las devoluciones de true y false tanto para cadenas como para números:

3 < 10 or "Al" < "Jack" return true
10 < 3 or "Jack" < "Al" return false

Hmp. Tampoco es como dijo GPT del código ASCII, es por la longitud de la cadena, no es necesario poner length ¿pero entonces qué pasa?
Se debería cumplir esto
 } else if (Action1<"111") {
"" < "111"
¿por qué no se cumple?

Edit: El bot de acá tampoco acertó, dijo:
Citar
Ejemplo 1: "" < "1" → false

En ActionScript, una cadena vacía ("") no es menor que ninguna otra cadena en términos de comparación lexicográfica (basada en el orden de caracteres Unicode, no en longitud).
Pero acabo de poner que las variables Action inicien como "1" y al resetearse también, y el resultado es el mismo.
"1" no es < "11"

Edit2: Más simple:
Código
  1. Action1 = "1";
  2. Action2 = "1111";
  3.    if (Action1<Action2) {
  4. trace("jdbhbdhbdf");
  5. }
No se cumple.

Código
  1. Action1 = "1";
  2. Action2 = "a";
  3.    if (Action1<Action2) {
  4. trace("jdbhbdhbdf");
  5. }
Se cumple.

Código
  1. Action1 = "1";
  2. Action2 = "aaa";
  3.    if (Action1<Action2) {
  4. trace("jdbhbdhbdf");
  5. }
Se cumple.

O sea, lo que copié del manual parece que está equivocado ¿?
"Las expresiones de cadena se evalúan y comparan basándose en el número de caracteres de la cadena."
¿Quizá lo tradujeron mal del inglés?

Edit3: Creo que ya entendí al bot.
"1" < "11" no se cumple porque
"1" == "1"
"" nada "1" o sea se considera false según dijo.


« Última modificación: 3 Febrero 2026, 14:44 pm por Tachikomaia » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines