Jump to content
  • Buscar en
    • Más opciones...
    Encontrar resultados que contengan...
    Encontrar resultados en...

Archivado

Este tema ahora está archivado y cerrado a otras respuestas.

Tachikomaia

Where did it all go so wrong? Código.

Publicaciones recomendadas

Tachikomaia Yojimbo

Publicado
vida restante: 100%

Ayer:




SC1P1 = 1;
SC1P2 = 1;
SC1P3 = 0;
Op1 = " < ";
Op2 = " <= ";
Op3 = " == ";
Op4 = " != ";
Op5 = " > ";
Op6 = " => ";
function PassorPrint () {
    if (SC1P1<SC1P3) {
        if (SC1P2<5) {
            trace ("V"+SC1P1+eval("Op"+SC1P2)+"V"+SC1P3);
        } else {
            trace ("V"+SC1P3+eval("Op"+(SC1P2-4))+"V"+SC1P1);
        }
    }
}
do {
    if (SC1P3<2) {
        SC1P3 = SC1P3+1;
        PassorPrint();
    } else {
        SC1P3 = SC1P1;
        if (SC1P2<6) {
            SC1P2 = SC1P2+1;
            PassorPrint();
        } else {
            SC1P2 = 1;
            SC1P1 = SC1P1+1;
            PassorPrint();
        }
    }
} while (SC1P1<2);

Output:


V1 < V2

V1 <= V2

V1 == V2

V1 != V2

V2 < V1

V2 <= V1

 


raf,360x360,075,t,fafafa:ca443f4786.jpg


 


Hoy: 




// Partes de la subcond.
SC1P1 = 1;
SC1P2 = 1;
SC1P3 = 0;
// Cosas para evitar ifs.
Op1 = " < ";
Op2 = " <= ";
Op3 = " == ";
Op4 = " != ";
Op5 = " > ";
Op6 = " => ";
CursorMax1 = 2;
CursorMax2 = 6;
CursorMax3 = 2;
Reset2 = 1;
Reset3 = SC1P1;
// Otras cosas.
Cursor = 3;
function PassorPrint () {
    if (SC1P1<SC1P3) {
        if (SC1P2<5) {
            trace ("V"+SC1P1+eval("Op"+SC1P2)+"V"+SC1P3);
        } else {
            trace ("V"+SC1P3+eval("Op"+(SC1P2-4))+"V"+SC1P1);
        }
    } else {
        Reset3 = SC1P1;
    }
    Cursor = 3;
}
do {
    if (eval("SC1P"+Cursor)<eval("CursorMax"+Cursor)) {
        set ("SC1P"+Cursor, eval("SC1P"+Cursor)+1);
        PassorPrint();
    } else {
        set ("SC1P"+Cursor, eval("Reset"+Cursor));
        Cursor = Cursor-1;
    }
} while (SC1P1<2);

mp,550x550,matte,ffffff,t.3u2.jpg



El output está bien.

 

La idea es generar todas las condiciones (o sentencias condicionales) posibles formadas por "V"s, o sea, nada de cosas como

NJND+FSN < V1*3

 

Ambos códigos generan condiciones formadas por sólo 1 subcondición (SC), pero el 2ndo es una aproximación a lo que sería generar más, formadas por más de 1 SC, como

V3 < V1 && V2 == V4

El problema es que quedó confuso y poco eficiente. ¿Ideas?

 

Explicación del 1er código:

Spoiler
Es como un número así:
110

aumenta 1.

111

Como la 1era cifra es igual a la última, se saltea. Es para evitar V1 (op) V1. Cualquiera sea el operador, es un sin sentido. Teniendo esto en cuenta el valor es mejor que arranque como 1 en vez de 0, no me había dado cuenta.

112 --> V1<V2

Los números extremos se muestran en pantalla como "V"+el número. En cambio el número central se muestra como el valor de la variable "Op"+número.

Llegado este punto el número último no puede aumentar mas, asi que se resetea al mismo valor que la 1era cifra. Porque las combinaciones, permutaciones o como se llame, que se hagan con la cifra delantera mayor que la trasera ya se habrán hecho.

Cuando el último número se resetea, el anterior aumenta.

122 --> V1<=V2

132 --> V1==V2

etc

El 2ndo número tiene un máximo valor distinto a los demás. Es porque los otros sólo pueden ser 2: V1 o V2, pero este puede ser 6, porque son 6 operadores distintos.

 

Cuando toca el turno de los operadores > y =>, en pantalla se invierte todo, o sea, por ejemplo se muestra < en vez de <=, y la traducción del  3er número se muestra 1ero y la del 1er número se muestra última. Ej: 152

Es V1>V2 pero se muestra como V2<V2. Hago eso porque donde usaré las condiciones estas me queda más cómodo verlas así.



 


Explicación del 2ndo código:


Spoiler
Es como el 1ero pero evtando algunos ifs. Cuando se necesite crear 10 SC, si no se hace "algo", serían como 30 ifs, y encima anidados. El "algo" que se me ocurrió hacer (probablemente no sea el único posible) es usar un Cursor que marca qué número está variando. Uno de los problemas es que como los números se resetean diferente y tienen límites diferentes, tuve que crear algunas variables que son llamadas en ciertos casos, para evitar usar ifs. Sin embargo, hay un reseteo que ocurre siempre,pero no sería necesario. El tema es que para que sólo ocurra cuando es necesario tendría que meter un if y no quiero. Quizá haya otra forma, no sé. Esto es más o menos lo que puedo explicar por ahora.


 


Más detalles de lo que quiero hacer (si alguien quiere hacer algo de esto, genial, pero me tiene que explicar cómo lo hizo sino es al pedo):




Spoiler
Paso 2:
Hacer un código que genere todas las condiciones que estén formadas por 2 SC, igual que antes pero usando "V3" también y pudiendo usar "V4" (sólo si está compuesta de V1, V2 y V3), evitando repeticiones como

V1 < V2 or V1 < V2 contradicciones como

V1 < V2 && V2 < V1

y tonterías como


V1 <= V2 or V2 < V1, 

 


Paso 3:


Código generador de hasta 2 SC. Significa que 1ero generaría todas las condiciones compuestas de una sóla subcondición, y luego generaría las compuestas por 2. Es lo hecho en el 1er código + el paso 2. Combinados.

 

Paso 4a:


Generador de todas las condiciones posibles. Como el paso 3 pero cuando termina con las compuestas por 2 SC comienza a crear las compuestas por 3 y así sucesivamente, El nro de Vs posibles es SC*2.

 

Paso 4b:

Lo mismo que el paso 3 pero que también puedan generarse condiciones con paréntesis no redundantes.

 

Paso 5:

Lo mismo que el paso 4a pero... paréntesis.





 

Gracias.


 


Compartir este mensaje


Enlace al mensaje
Compartir en otros sitios web

Reibacs Adramalech

Publicado
vida restante: 100%
Si estás intentando hackear el blog/la bloga de Sánchez Castejón, me interesa.

En construcción.

Compartir este mensaje


Enlace al mensaje
Compartir en otros sitios web

Tachikomaia Yojimbo

Publicado
vida restante: 100%

¿Y para qué dices que sirve todo esto?

El siguiente código busca un número que cumpla una condición:

N = 1

Fin = ""

Repetir

   N++

   Si N > 10

      Imprimir "la solución es "+N

      Fin = "Sí"

   fin del si

mientras Fin != "Sí"

Es muy obvio todo eso pero creo que es la base para buscar soluciones a problemas en que las cosas no son tan obvias, por ejemplo en un videojuego de Final Fantasy. Habría más variables y más complejas, más condiciones y más complejas, las acciones posibles no serían simples números tomados como tales sino que causarían efectos, etc. Mi idea es ir complicando el código de arriba. Para eso, por ejemplo, tengo que complicar la condición que diga ahí. Tendré que hacerlo muchas veces. Entonces, pienso que sería bueno tener un generador de condiciones, o sea, que un programa las haga.

 

Además de eso, hay veces que yo no sé expresar la condición, o se me complica. Entonces, tener un generador de condiciones me ayudaría a ver opciones, y me puede inspirar.

 

Incluso, y está muy relacionado con todo lo anterior, el problema a resolver con el método que te puse, puede ser, en vez de hallar un número, hallar una condición. Has visto que podemos ver "todos" los números naturales haciendo

N=0

N++

pero ver "todas" las condiciones es más complicado. Es lo que quiero ver... o mejor dicho que vayan apareciendo en pantalla, por los motivos que te expliqué. O sea, en realidad no es que las quiera ver todas, son infinitas.

 

Supuestamente está relacionado con esto:

https://es.wikipedia...de_fuerza_bruta

 

No mames wey te salió caldo

Ya vi de dónde viene eso. Eres un...

 

Compartir este mensaje


Enlace al mensaje
Compartir en otros sitios web

Carmelotazo Bang

Publicado
vida restante: 100%

El siguiente código busca un número que cumpla una condición:

N = 1

Fin = ""

Repetir

   N++

   Si N > 10

      Imprimir "la solución es "+N

      Fin = "Sí"

   fin del si

mientras Fin != "Sí"

Es muy obvio todo eso pero creo que es la base para buscar soluciones a problemas en que las cosas no son tan obvias, por ejemplo en un videojuego de Final Fantasy. Habría más variables y más complejas, más condiciones y más complejas, las acciones posibles no serían simples números tomados como tales sino que causarían efectos, etc. Mi idea es ir complicando el código de arriba. Para eso, por ejemplo, tengo que complicar la condición que diga ahí. Tendré que hacerlo muchas veces. Entonces, pienso que sería bueno tener un generador de condiciones, o sea, que un programa las haga.

 

Además de eso, hay veces que yo no sé expresar la condición, o se me complica. Entonces, tener un generador de condiciones me ayudaría a ver opciones, y me puede inspirar.

 

Incluso, y está muy relacionado con todo lo anterior, el problema a resolver con el método que te puse, puede ser, en vez de hallar un número, hallar una condición. Has visto que podemos ver "todos" los números naturales haciendo

N=0

N++

pero ver "todas" las condiciones es más complicado. Es lo que quiero ver... o mejor dicho que vayan apareciendo en pantalla, por los motivos que te expliqué. O sea, en realidad no es que las quiera ver todas, son infinitas.

 

Supuestamente está relacionado con esto:

https://es.wikipedia...de_fuerza_bruta

 

Ya vi de dónde viene eso. Eres un...

 

Em... bueno gracias por tomarte la molestia de responder.


n0kezP3.jpeg

Compartir este mensaje


Enlace al mensaje
Compartir en otros sitios web

Flapjack_old Usuario PREMIUM

Publicado
vida restante: 100%
Chorrada

:paloma: Usuario PREMIUM cy7MiMi.gif NO A LA MEDIOCRIDAD :paloma:

Compartir este mensaje


Enlace al mensaje
Compartir en otros sitios web

Lazarus_Jones Gwyn, Señor de la Ceniza

Publicado
vida restante: 100%

¿En el primer código no te falta un Else?. Me refiero al Else del primer If.



7POJeL4.png

Compartir este mensaje


Enlace al mensaje
Compartir en otros sitios web

  • Explorando recientemente

    No hay usuarios registrados viendo esta página.

  • Crear nuevo...