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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Generar 2 condiciones que tenga sentido relacionarlas con &&.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Generar 2 condiciones que tenga sentido relacionarlas con &&.  (Leído 2,376 veces)
Tachikomaia


Desconectado Desconectado

Mensajes: 1.411


Hackentifiko!


Ver Perfil
Generar 2 condiciones que tenga sentido relacionarlas con &&.
« en: 23 Diciembre 2017, 05:01 am »

Superado esto
https://foro.elhacker.net/programacion_general/mostrar_o_o_o_en_pantalla-t478377.0.html
...pasamos a cosas más interesantes, lamentablemente más difíciles.

A bote pronto es como si quisiéramos generar un texto de 7 palabras que representan:
1: La variable1 de condición1
2: El símbolo comparador de la condición1
3: La variable2 de la condición1
5: La variable1 de condición2
6: El símbolo comparador de la condición2
7: La variable2 de la condición2

La parte 4 no representa algo, siempre es "&&".

Las partes 2 y 6 pueden ser ==, !=, <= o <. Y pueden ser iguales entre sí o no.

La parte 1 o la 3 debe ser V.
La parte 5 o la 7 debe ser V.
En otras palabras, en cada condición debe estar la variable V.

Las partes 1, 3, 5 y 7 que no sean V, pueden ser V, A o B, pero no puede haber B si no hubo A. Pueden ser iguales entre sí o no.

V, A y B digamos que representan un número entero.

A < B.

Las condiciones que se generen debe haber casos en que se cumplan y otros en que no, y no deben tener redundancia. Tienen redundancia cuando una condición exige lo mismo que la otra y más aún. Por ejemplo: A == V && A <= V. En este caso alcanzaría con decir A == V.

Si no hay problema, quisiera que las variables menores aparezcan 1ero, por ejemplo así:
A < V && V < B
...en vez de así:
V < B && A < V
Por eso también, es que no uso los signos > y =>. No son necesarios ¿no?

-------------------------------------------------------------------------------

Si tienen dudas respecto a qué se quiere hacer, pregunten. Si se entendió, pasamos a cómo hacerlo.

Se me ocurren algunos métodos... aunque ninguno es del todo bueno o completo...

-------------------------------------------------------------------------------

Método 1:
Ponerme a pensar "manualmente" cuales son las combinaciones de condiciones que sirven, y escribirlas en una lista, en el código.

Esto no sólo carece de "gracia" (hacer que piense/escriba/etc la máquina, no ponerme a hacerlo yo), sino que además no me sirve porque más adelante quiero generar condiciones más complejas y tomaría mucho tiempo pensar una a una cual sirve y cual no, y escribirlas.

-------------------------------------------------------------------------------

Método 2:
Asignar valores al azar hasta que se cumplan los requisitos.

Poco eficiente ¿y cómo escribir en el código a los requisitos?

Se me ocurre algo así:
Código:
// La parte 1 o la 3 debe ser V.
Requisitos = "No"
Si V1C1 == "V" or V2C1 == "V"
    // La parte 5 o la 7 debe ser V.
    Si V1C2 == "V" or V2C2 == "V"
        // no puede haber B si no hubo A.
        Si V1C1 == "A"
           Requisitos = "Ok"
        sino si V1C1 != "B"
           Si V2C1 == "A"
              Requisitos = "Ok"
           sino si V2C1 != "B"
              Si V1C2 == "A"
                 Requisitos = "Ok"
              sino si V1C2 != "B" && V2C1 != "B"
                    Requisitos = "Ok"
fin de los si
Si Requisitos == "Ok"
   // A < B
   Si condición1 es "V < A" o "V <= A"
      Si condición2 es "B < V" o "B <= V" o "B == V" o "V == B"
         Requisitos = "No"
fin de los si

Esto vendría luego pero no sólo me parece dudoso, sino incompleto.
Código:
Si Requisitos = "Ok"
   Requisitos = "No"
   // Las condiciones que se generen debe haber casos en que se cumplan y otros en que no, y no deben tener redundancia.
   A = 10
   B = 20
   V = 5
   Caso1 = "No"
   Caso2 = "No"
   Caso3 = "No"
   Caso4 = "No"
   Hacer
      Si condición1 se cumple
         Si condición2 se cumple
            Caso1 = "Ok"
         sino
            Caso2 = "Ok"
         fin del si
      sino si condición2 se cumple
         Caso3 = "Ok"
      sino
         Caso4 = "Ok"
      fin del si
      V = V+5
   mientras 30 < V
   Si todos los casos son "Ok"
      Requisitos = "Ok"
   fin del si
fin del si

Según HABÍA pensado (ahora no me estoy concentrando en eso), que se den los 4 casos significa que la condición puede cumplirse o no, y que no hay redundancia. Pero tendría que analizarlo de nuevo.

Además, cada condición que se nombra en el pseudocódigo debería ser nombrada mediante sus partes, que sería algo así:
Código:
Si V1C1 C1S V2C1
Pero si alguna vez puse algo así en un if, ya no lo recuerdo bien.

Esto
"Si no hay problema, quisiera que las variables menores aparezcan 1ero."
...creo que se cumple con el código para A < B.

--------------------------------------------------------------------------------

Método 3:
Partiendo del método 2, pensar algunas cosas como cómo generar las condiciones de modo que cumplan los requisitos, con lo cual, ya no sería necesario chequearlos.

También me parece que carece de gracia, no tanto pero sí.

Nota: A partir de ahora invierto el orden de los nombres de algunas variables, por ejemplo V1C1 cambia a C1V1. No sé bien por qué, pero estoy más acostumbrado a eso, antes lo hice de la otra forma porque con palabras normales lo había planteado de ese modo.

Código:
// La parte 1 o la 3 debe ser V.
C1V1 = random("V" o "A")
Si C1V1 == "V"
   C1V2 = "A"
sino
   C1V2 = "V"
fin del si
// La parte 5 o la 7 debe ser V.
C2V1 = random("V" o "B")
Si C2V1 == "V"
   C2V2 = "B"
sino
   C2V2 = "V"
fin del si
// Considero que no tiene sentido comparar A dos veces. Pero no tengo una demostración...
// no puede haber B si no hubo A.
// Eso está hecho.
// A < B.

Bueno, habría que seguir, pero no me gusta este método y por hoy ya escribí mucho.

--------------------------------------------------------------------------------

Vuestro turno, gracias.


« Última modificación: 23 Diciembre 2017, 05:11 am 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