Estoy retomando esto.
La duda más simple, digamos, la de decir un número mayor a otro X, conocido, tiene estas características:
- Sólo tiene 1 variable, X.
- La variable es de tipo número positivo entero.
- El candidato (el valor que se prueba como posible solución) no tiene partes, es sólo 1 variable de tipo número positivo entero.
- Sólo tiene 1 condición a cumplir.
- La condición es de tipo "candidato", "símbolo comparador", "valor". El candidato es el valor que se prueba como posible solución.
- Se puede resolver mediante 1 acción.
Pueden nombrarse más, pero no tiene mucho sentido hacerlo, me parece.
¿Cuales serían las siguientes dudas, un poquito más complicadas?
Si agregamos más variables como X, es decir, si por ejemplo hay varios números a superar, eso implica que la condición a cumplir se complicará ¿verdad? Por eso por ahora, prefiero aumentar o complicar otra cosa, algo que no implique complicar otras cosas.
En cuanto a complicar X:
Si lo hacemos negativo, la duda podría ser cual es su número contrario, pero eso implica complicar la condición a cumplir, ya no es comparar 2 números sino que se requiere cierto proceso. Otro ejemplo no se me ocurre, decir un número menor al negativo implicaría complicar al candidato pues ya no podría ser positivo.
Si a X la hacemos decimal, si es positivo, no habría diferencia. Si la duda fuese adivinar X, eso implica complicar al candidato y especialmente el modo conque varía, ya que no es lo mismo sumarle 1 que sumarle distintas cantidades decimales.
Si a X la hacemos un texto, ya no es algo que se pueda superar (si hablamos de longitud, eso es complicar la condición a cumplir). Si la duda fuese adivinar el texto, eso implica complicar al candidato y cómo varía.
Hacer que el candidato tenga partes parece que complica su aplicación, por ejemplo si la duda fuese hallar 2 números que al multiplicarse resulten X, entonces hay que multiplicarlos en vez de simplemente comparar uno.
Además no se me ocurren muchas dudas así, que dado un número haya que decir varios números que deban cumplir alguna condición. ¿Se les ocurre?
Que el candidato sea negativo, decimal o texto, complica el cómo varía. Además X es un positivo entero, así que:
Si el candidato es un negativo ¿para qué? No para superar a X. ¿Para ser superado? Sería demasiado fácil. Otros objetivos complican la condición, creo.
Si el candidato es un decimal ¿para qué? Podría ser porque la situación lo requiere, como si fuese un desafío. Bueno, pero no tiene mucho sentido.
Si el candidato es un texto, no podrá superar a un número. En longitud, ya se ha dicho, es otra cosa. Si el texto representa otro sistema de numeraciòn, puede ser, pero no me gustan ese tipo de dudas, de convertir gramos en moles, número en texto, etc xP
Agregar una condición parece implicar agregar una variable o complicar la complejidad de la condición. Por ejemplo, en vez de que el candidato (C) simplemente deba ser mayor a X, puede ser X < C < Y. Se agregó la variable Y. Si decimos que C deba ser un número primo, eso implica procesos, no una comparación simple.
El tipo de condición a cumplir, sí, por fin, parece poder complicarse sin que eso implique complicar otras cosas. Es lo que quiero complicar, por eso. Teníamos que C > X. Podemos cambiarlo, por ejemplo, a que C sea más largo que X. Esto me lleva a la pregunta de cuales son los procesos que se pueden aplicar en C, que resulten en un valor no azaroso. Ordenados por complejidad.
Dificultad 0: No hay proceso, C se usa como tal:
C > X, o C == X, etc, depende del contexto.
A continuación digo procesos y ejemplos de condición a cumplir, en definitiva son dudas o desafíos, quisiera que agreguen a la lista, y los ordenen por complejidad.
Ah, los procesos no deben implicar variables, más allá de X y C. Por ejemplo C+Y > X no sirve porque se agregó la variable Y.
Y los procesos los clasifico en 4 tipos para más claridad.
Procesos que sólo quitan caracteres (recuérdese que C es entero positivo, así que el caracter 0 no siempre se podría quitar):
- C quita el caracter nro C a X ¿qué valor debe tener C para que luego del proceso se cumpla que C+C < X?
- A X se le quitan caracteres, desde el inicial hasta X ¿qué valor debe tener C para que luego del proceso X sea un número más divisible que antes?
- A X se le quitan caracteres, desde el último hasta X ¿qué valor debe tener C para que luego del proceso X sea un número menos simétrico que antes?
Procesos que no cambian los caracteres, sólo los cambian de lugar:
- Desde el inicio de X se busca un caracter C, y se pone en el lugar C ¿qué valor debe tener C para que luego del proceso X sea mayor que antes?
- Desde el final de X se busca un caracter C, y se pone en el lugar C ¿qué valor debe tener C para que luego del proceso X sea menos ordenado que antes?
- El caracter nro C de X se pone en la posición C+C ¿qué valor debe tener C para que luego del proceso, la potenciación de los caracteres de X sea mayor que antes?
Procesos que sólo agregan caracteres:
- A X se le agrega C en la posición C ¿qué valor debe tener C para que luego del proceso X sea divisible entre C?
- El caracter C de X se agrega en su posición C ¿qué valor debe tener C para que luego del proceso X sea la suma de los caracteres del X original?
- X se agrega al final de X, C veces ¿qué valor de C logra que luego del proceso X sea lo más cercano posible a C*X (el original)?
Procesos matemáticos (que pueden hacer cambios de los otros tipos):
- X=X/C ¿qué valor debe tener C como mínimo para que luego del proceso se cumpla que C>X?
- X=X*C ¿qué valor debe tener C para que los caracteres del nuevo X sean todos iguales?
- X=C/X ¿qué valor debe tener C para que el nuevo X tenga C decimales?
Los procesos que impliquen más de un tipo de proceso, son más complejos que los simples, claro. Parece haber 2 aspectos aquí: El proceso y la condición a cumplir. ¿Se pueden separar? ¿se puede complicar el proceso sin complicar la condición? ¿y viceversa? Creo que me desvié, me suele pasar xP Ahora me siento algo perdido ¿sugerencias?
A ver, el código:
X = Un número entero positivo
C = 1
Repetir
Si C > X
// Solución hallada, fin
sino
C++
Supongamos que la mínima complicación que puede hacerse a eso, del tipo de complicación que mencioné, es:
X = Un número entero positivo
C = 1
Repetir
Si C+C > X
// Solución hallada, fin
sino
C++
Ahí el proceso está en la condición, pero puede ser algo anterior ¿o no?
BaseX = Un número entero positivo
C = 1
Repetir
// Proceso que implica definir X usando BaseX y C.
Si C > X
// Solución hallada, fin
sino
C++
Supongo que me falta práctica, pero quiero practicar desde lo más sencillo a lo más complicado, así que necesito entender cual es el orden...
La condición puede ser X > BaseX por ejemplo. O SimetriaDeX > SimetriaDeBaseX. No son variables nuevas realmente, son propiedades de las otras. En fin ¿sugerencias? Se me acabaron los puntos para GPT hoy, mañana le pregunto.