Supongo que te estás apresurando a escribir código en lugar de analizar el rompecabezas o que tu análisis es débil, de lo contrario no tendrías este problema.
Para evitar darse cuenta de que ha abordado el problema desde el ángulo incorrecto cuando ya casi ha terminado, debe analizar el problema en la medida en que pueda prever el problema antes de comenzar la programación.
Esto no es fácil y requiere mucha práctica, pero si no sabe por dónde comenzar, le daré algunos consejos 🙂
- ¿Qué hace que un gran motor de 'recomendación de personas'?
- ¿Cómo podría un algoritmo que crea un cambio en el comportamiento del consumidor crear valor?
- ¿Qué es un algoritmo para el reemplazo de página (memoria virtual) LRU y FIFO?
- ¿Qué temas matemáticos necesito aprender antes de comenzar a aprender inducción, recursión y programación dinámica?
- ¿Hay alguna diferencia entre los algoritmos estocásticos y los probabilísticos?
Hasta que comprenda el núcleo del problema, todos los problemas serán extremadamente difíciles. La única razón por la que un problema parece ser más difícil que el otro es que obviamente es mucho más fácil analizar un problema con pocos parámetros en mente que un problema más complejo.
Si bien es posible que no piense que divide un problema en “microproblemas” individuales, su cerebro sí lo hace, solo necesita ser consciente de lo que hace en segundo plano (es más fácil decirlo que hacerlo)
Cuando me acerco a un nuevo problema, generalmente:
- Escribe el objetivo del algoritmo. Si no puede especificar el objetivo, no ha entendido el problema que está tratando de resolver.
- Al igual que su cerebro analiza problemas más pequeños para usted, debe analizar problemas más complejos para el cerebro. Tu cerebro es INCREÍBLE cuando se trata de resolver problemas menos complejos, ¡deja que haga su trabajo! Cuanto más pequeño sea cada micro problema, más fácil será para su cerebro procesarlo, ¡tómese su tiempo para realmente resolver el problema tanto como sea posible!
- Averigua cómo vas a resolver cada micro problema, esto no será tan difícil si hiciste el paso 2 a fondo. Si encuentra más de 1 solución para uno o más de los micro problemas, escríbalos todos.
- Una vez que se hayan definido todos los microproblemas, ordénelos en pequeños grupos de microproblemas relacionados entre sí, escriba por qué los microproblemas de cada grupo están relacionados entre sí, así como la relación entre cada problema, esto es importante en para obtener una mejor visión general y para el siguiente paso.
- Cada grupo ahora contiene un par de micro problemas que son responsables de una tarea específica y / o parte de una tarea más grande. Defina qué grupos están relacionados entre sí y colóquelos en un grupo más grande y especifique qué contiene, así como las relaciones entre cada grupo. Como probablemente haya adivinado, este proceso debe repetirse hasta que termine con algo similar a un sistema de directorio en una computadora (¡NOTA! Es posible que algunos micro problemas o grupos se superpongan con otros grupos, lo cual es el punto de este proceso. te obliga a pensar en estos problemas antes de pasar horas, días o semanas codificando)
- En este punto, tendrá un mapa de especificaciones extremadamente detallado que su cerebro realmente podrá procesar con facilidad 🙂
Si desea mejorar sus habilidades de resolución de problemas como programador, le recomendaría que escriba un algoritmo de solución de Suduko utilizando esta técnica.
El problema de Suduko ofrece muchas formas diferentes de estructurar sus datos y necesita tener un plan bien pensado para eliminar tantas operaciones del algoritmo como sea posible. ¡Escribir un solucionador de suduko fue lo más efectivo para mí para evolucionar en la resolución de problemas de programación!
Buena suerte 🙂