No soy bueno con los algoritmos y no puedo encontrar una solución hasta que alguien me lo diga. ¿Cómo puedo arreglar esto?

Intenta resolver tantos problemas como puedas, incluso si tienes que pedir ayuda. Inicialmente, todo el mundo tiene que echar un vistazo a los pasos del código / libro / algoritmo, pero una vez que comience a codificar, se acostumbrará a escribir código por su cuenta.

Cuando leas una pregunta, piensa en cómo la resolverás, incluso si es la implementación ingenua en términos de complejidad de tiempo y espacio. Codifique su solución, compile y ejecute. Obtendrá una sensación de satisfacción de haberlo codificado usted mismo, sin la ayuda de nadie. Una vez hecho esto, intenta pensar cómo puedes mejorarlo. ¿Qué estructura de datos está utilizando en este momento y si cambiar la estructura de datos que ha utilizado o agregar otra estructura de datos (usando más espacio) ayudará a reducir la complejidad del tiempo? Codifique eso también. Sigue mejorando tu implementación. Finalmente, cuando esté completamente seguro de que no puede mejorarlo más, revise la solución en libros / sitios web / blogs / YouTube. Luego, después de leer la solución, codifíquela. Después de hacer esto por un período de tiempo con un esfuerzo constante, definitivamente podrá resolver los problemas por su cuenta.

La codificación es una cuestión de costumbre. No pierdas la esperanza. Practica tantas preguntas como puedas. He visto a muchas personas sin experiencia en CS pero que lo hacen muy bien en la codificación después de poner un esfuerzo determinado en la codificación.

Aquí hay algunas fuentes que me han ayudado a mejorar mi comprensión de las estructuras de datos y algoritmos:

  • Videos de YouTube : fáciles de entender y ahorra tiempo. Además, con las animaciones, es mucho más fácil de recordar por más tiempo. Aquí hay una lista de reproducción que puede consultar para comprender los algoritmos. Una vez que siga los pasos del algoritmo aquí, intente codificar la solución usted mismo. Con práctica, después de un tiempo, verá que no necesitará tener que buscar la solución en absoluto y las soluciones lo golpearán fácilmente.

Listas de reproducción sobre temas específicos:

Arboles:

Matrices:

Listas vinculadas:

Instrumentos de cuerda:

Programación dinámica:

  • Fuentes web : he encontrado que la visualización del algoritmo dada en el sitio web IDeserve es muy útil. Aquí hay algunos temas que pueden serle útiles:
    1. Preguntas de la entrevista de matrices
    2. Preguntas de la entrevista de cadenas
    3. Preguntas de la entrevista de la lista vinculada
    4. Preguntas de la entrevista de árboles
    5. Preguntas de la entrevista gráfica
    6. Preguntas de la entrevista de programación dinámica

Espero que esto le ayude también..! ¡Buena suerte!

Resuelve más problemas. No hay otra manera. Érase una vez que era terrible programando, y la única razón por la que mejoré es que resolví cientos de problemas.

Un buen lugar para comenzar es USACO porque te enseñan algoritmos y te dan problemas al mismo tiempo, y nunca te dan un problema que requiera un algoritmo de libro de texto que aún no te hayan enseñado. Si necesita problemas aún más fáciles, consulte PEG Judge (divulgación: este es mi sitio web) donde puede ordenar los problemas por la cantidad de usuarios que los han resuelto (más solucionadores ~ problemas más fáciles) y algunos problemas son extremadamente básicos, mientras que otros son IOI -nivel.

Es posible que no pueda solucionar esto.

Si no lo ha hecho, debe tomar una clase de algoritmos. Esto no solo le presentará los algoritmos comúnmente conocidos, sino que también le dará una buena base en estrategias computacionales (por ejemplo, dividir y conquistar).

Después de eso, lo que necesita es inteligencia o intuición. Esa chispa de creatividad es enormemente importante y probablemente tengas algo, pero la mayoría de nosotros tenemos limitaciones. Puede fomentar la creatividad tratando de “pensar fuera de la caja”, descomponiendo el problema en problemas de raíz y buscando otros problemas similares en su repertorio. Pero al final del día, todos son humanos, de inteligencia finita y cargados con algunos desafíos. Encuentra los tuyos, acepta tus limitaciones e intenta seguir creciendo.

Si bien me gusta la respuesta de Brian Bi, me gustaría agregar que la mayoría de los algoritmos, como los patrones de diseño, se basan en la forma en que aborda el problema. Es genial si puede obtener este conocimiento simplemente resolviendo más problemas, pero saber por qué se prefiere una técnica sobre otra es un beneficio real.

Al escribir Algorithms & Data Structures with Swift, una de las cosas que aprendí fue “Pensamiento Algorítmico”. Si bien no existe una definición oficial, comprender los conceptos básicos de la notación Big-O es de gran utilidad para analizar / comparar varias rutinas. Como generalmente hay varias formas de resolver un problema, la gente a menudo está más interesada en el razonamiento detrás de su enfoque.

Ser capaz de decir algo como “… este enfoque es mejor porque proporciona una eficiencia de tiempo O (1) …” es coherente y fácilmente defendible. Además, al comprender las mejores prácticas, su sintaxis de codificación se vuelve menos importante. Por ejemplo, si codifica un algoritmo de búsqueda binaria en C ++, debería ser relativamente sencillo hacer lo mismo en Java, Swift, C #, etc.

¡Espero que ayude!

Voy a ir en contra de la corriente aquí y poo-poo estudiando algoritmos. Solo terminarás “aprendiendo” más, lo cual es inútil. Los problemas difíciles son difíciles no porque sean intrínsecamente difíciles *, sino porque aún no ha encontrado la forma correcta de verlos. Una vez que encuentra la manera correcta de enmarcar un problema, se vuelven casi triviales. Y eso en su mayoría solo requiere creatividad y un enamoramiento infantil con un pensamiento innovador. Piensa en “Eureka” de Arquímedes momento o vea el problema del tablero de ajedrez mutilado para ilustraciones clásicas. No deduzca soluciones, diviértase reformulando el problema. Estás buscando un huevo de Colón.

Descubrir eso es la antítesis de la ciencia. Requiere creatividad. La ciencia puede llegar a la escena después de que se encuentre una solución para explicarla o para señalar que la solución A puede ser (en un aspecto desgarrador) “mejor” que la solución B, pero en general es inútil en el proceso. Kekulé no llegó a los anillos de benceno a través de la ciencia. A Einstein no se le ocurrió la relatividad basada en la ciencia. De hecho, la ciencia siempre parece insinuar que lo que estás tratando de hacer es imposible. Siempre es negativo La ciencia te dice que el vuelo más pesado que el aire es científicamente imposible. A los ingenieros no les importan esas cosas. Lo hacen posible.

Haz que suceda.

* No estoy hablando de “CS-hard” en NP-complete o cualquier otro sentido aquí. Esas cosas rara vez importan en la vida real.

Tengo un amigo que realmente quiere aprender a codificar. Intenta leer muchos tutoriales, libros, pero todavía termina confundido sobre qué hacer.

Puede entender qué significa un código y qué hace un algoritmo. Simplemente no sabe qué hacer para resolver un problema que encuentra.

La razón de esto es que no está acostumbrado al paradigma de resolución de problemas. En la escuela, se nos enseña cómo aplicar una fórmula a una pregunta, y ahí tienes tu respuesta. Pero la cuestión es que los estudiantes realmente no saben cómo funciona la fórmula y cómo pueden resolver el problema. Simplemente lo aceptamos.

El algoritmo funciona de la misma manera. Si lees muchos algoritmos comunes, tutoriales, libros, pero aún te quedas atascado para resolver tu propio problema. Es posible que aún tenga el paradigma de la fórmula escolar.

Para solucionarlo, debe cambiar su paradigma de aplicar la fórmula al paradigma de resolución de problemas. Una buena manera de cambiarlo es comprender la naturaleza del algoritmo. Comprenda el problema y comprenda la mecánica de por qué esos algoritmos pueden resolverlo.

Intenta leer / investigar sobre el curso de Estrategia de Algoritmo. Es la introducción al enfoque más común para desarrollar un algoritmo para resolver un problema. Tenga en cuenta que le enseña el enfoque, no la fórmula.

Si ya comprende la naturaleza de un algoritmo, el problema y cómo el algoritmo puede resolver el problema, debería poder desarrollar sus propias ideas en un algoritmo de trabajo.

¡Buena suerte!

Esto es algo así como ese comentario: “¿Cómo llegas al Carnegie Hall? Practica … practica … practica …” Para ese fin, otras respuestas hacen el trabajo.

Sin embargo, no se desespere porque alguien tuvo que explicarle algo. ¿Lo entiendes ahora? ¿Necesitarás que te lo expliquen de nuevo? Si respondiste que sí y no, estás bien.

No me malinterpretes, es realmente satisfactorio resolver un problema “solo”. Ignoremos convenientemente el hecho de que la mayoría de las veces la investigación termina cuando encuentras algún código de muestra que hace exactamente lo que estás buscando. Independientemente de cómo llegó allí, aún mejoró su conocimiento de algoritmos y puede aplicar los conceptos de esta solución a otros problemas que tiene que resolver.

Entiendo que puedes aprender más efectivamente si llegas a una solución por tu cuenta, pero creo que es absurdo que de alguna manera sea malo que te expliquen la solución. Algún día habrás creado una biblioteca de algoritmos en tu cabeza y podrás mezclarlos y combinarlos para resolver problemas complejos (que es todo lo que cualquiera de nosotros “buenos programadores” hacemos). Hasta entonces, no tengas miedo de pedir una explicación. Si aún no lo entiende, puede estar en problemas reales, pero si no puede resolver todo por su cuenta, no es un fracaso.

1. Idea básica (Realmente todo lo que necesitas …):

Todo lo que tiene que hacer es pensar en un montón de formas, posiblemente estúpidas, de lograr el objetivo del algoritmo que está tratando de encontrar hasta que encuentre uno que realmente funcione (la selección de ideas mejora con la práctica; espere un montón de ideas estúpidas al principio con unas buenas como agujas en un pajar).

Lo importante para recordar aquí es que cuantas más ideas atravieses, más te acercas a las que funcionan. Si desea racionalizar estas ideas, siga los siguientes pasos …

2. Desmentir:

A continuación, debe probar esas ideas una por una utilizando cualquier otra cosa que crea que es “verdadera” para probar y refutar su algoritmo.

Esto debe hacerse en su cabeza (y tal vez usando lápiz y papel) y no tratando de probar su algoritmo con el contexto para el que está destinado (eso viene más adelante). Esto es necesario para practicar sus habilidades de resolución de problemas mentales.

3. Corrección:

Una vez que encuentre una falla en su algoritmo utilizando el método de refutación anterior, simplemente puede ajustar su algoritmo reemplazando la parte defectuosa con algo que parece que debería funcionar mejor (¡tan simple como eso!).

Este proceso puede ser molesto porque a las personas generalmente les gusta tener razón la primera vez, aunque rara vez es así. Si puedes acostumbrarte a equivocarte la mayor parte del tiempo, entonces tendrás éxito tarde o temprano, solo sigue adelante, incluso si se necesitan cien veces o más para hacerlo bien.

Luego repite el paso de refutar hasta que no se le ocurra nada más que pueda refutar que su algoritmo funcionará.

4. Prueba en contexto:

A continuación, puede poner a prueba su algoritmo aplicándolo al contexto para el que fue diseñado y buscando cualquier falla que el contexto pueda mostrarle … en este caso, es el contexto el que está refutando su algoritmo.

Esto también puede ser un paso molesto porque a las personas generalmente no les gusta ver cómo podrían haber hecho algo mejor después de haberlo hecho.

Si puede acostumbrarse al hecho de que a menudo olvidará o perderá algo en algún lugar y más bien tomará nota de esas cosas, en lugar de molestarse por ellas, entonces es probable que cometa menos errores en el futuro que si se molestara por esos errores

5. Corrección en contexto

Una vez más, adapte su algoritmo pieza por pieza (sin descartar el todo) hasta que sea imposible que el contexto refute su algoritmo.

Y vuola! Tienes un algoritmo de trabajo … pero no termina aquí

6. Paso crítico:

El paso crítico es comprender realmente, mediante la observación y la exposición repetidas, las fallas que el contexto pudo encontrar con su algoritmo que usted no pudo encontrar por sí mismo. Esto es para que pueda recordar esas cosas más adelante sin siquiera probar su algoritmo utilizando el contexto.

Si recuerdas seguir este paso crítico, por mucho tiempo que te lleve, podrás idear algoritmos que funcionen completamente en tu cabeza antes de probarlos, porque simplemente recuerdas todas las “pruebas” en tu cabeza. cómo reacciona el contexto a los algoritmos y sus piezas.

7. Pensamientos finales

También es importante tener en cuenta que este puede ser un proceso con una vida útil muy larga. Es igualmente importante tener en cuenta que el tiempo que lleva hacer las cosas bien se reduce exponencialmente con la práctica (el crecimiento exponencial siempre es una gran cosa).

No siempre tiene el tiempo (especialmente en la escuela o la universidad) para seguir todos los pasos del proceso antes de que se le solicite un resultado.

En este caso, es mejor que a veces solo se le diga cuál es la respuesta y que esté agradecido de que no tuvo que pasar por todos esos problemas (o enojarse porque no tuvo la oportunidad de desarrollar esa forma de pensar porque de restricciones de tiempo).

Como muchos han dicho, la práctica te hará mejor. Como los algoritmos implican el uso de su capacidad lógica para construir soluciones para un problema en particular, solo se puede lograr resolviendo problemas matemáticos. Comience por lo básico y por básico me refiero a preguntas aún más simples que Ordenar o Buscar, como calcular Suma o productos usando construcciones if / else, eligiendo estructuras de datos correctas para minimizar el tiempo y el espacio de ejecución.

Puede dividir su aprendizaje en estas fases:

Primera fase: resuelva desafíos que incluyan la elección de estructuras de datos para su problema, en función de ciertos criterios (el valor x debe ser mayor que 1 y menor que 10,000,000 para que sepa que necesita elegir “int” en lugar de “largo”)

2da Fase: Extrayendo la entrada para diferentes tipos de datos, es decir, todas las entradas que se proporcionarán en ciertos desafíos estarán en forma de cadena, debe aprender en su idioma preferido cómo escribirlos en números enteros o en coma flotante o asignarlos a una matriz.

Tercera fase: llega la fase en la que necesita comenzar a resolver problemas reales que involucran estrategias de Divide y vencerás, Algoritmo codicioso y Programación dinámica.

Tomará más tiempo del que debería, pero la perseverancia es la clave. Mientras tanto, intente resolver los desafíos que plantearon las empresas contratantes.

practica, practica y luego practica un poco más.
aplica la regla de las 10000 horas para resolver problemas algorítmicos.
Sé metodológico sobre cómo estudias los algoritmos. Ataque diferentes dominios problemáticos por separado y sea paciente. La mayoría de nosotros no somos el próximo Donald Knuth y, sin embargo, las personas aún pueden resolver problemas algorítmicos complicados. Cómo ? mediante la aplicación de la coincidencia de patrones. Practicaron tan duro y durante tanto tiempo, que pueden detectar inmediatamente plantillas de problemas y asociar un nuevo problema con algo que han visto en el pasado. No reinventan la rueda, solo aplican prácticas comunes que han aprendido de otros dominios y problemas en el nuevo. No seas duro contigo mismo, y recuerda que la perseverancia es más importante que el coeficiente intelectual.

FÁCIL.

DIVIDE Y CONQUISTARAS.

BUSQUE siempre los problemas, clasifique las cosas y asigne tiempo y haga mucho PSEUDOCODE.

Intente siempre resolver HEAPS y HEAPS de preguntas, APILUE todas las soluciones y tenga muchos problemas que resolver en la COLA.

Haga una PRIMERA BÚSQUEDA DE PESO de sus habilidades y luego vaya a PRIMERA BÚSQUEDA DE PROFUNDIDAD para ver qué puede mejorar profundizando en los conceptos.

Haz BÚSQUEDA DE ALMA BINARIA 😛

Entonces puede obtener una LISTA ENLACE de oportunidades y éxito.

Y sí, olvidé la RECETA más importante: PRÁCTICA

Entonces puedes arreglar esto.

PD: Si usted es un programador de computadoras, NO INTENTE ARREGLAR ESTO CON UNA SOLUCIÓN ALTERNATIVA, NUNCA LO ARREGLARÁ DE NUEVO 😀

Es simple, el término algoritmo puede ser muy general así como muy específico, comprender un algoritmo escrito sin la documentación adecuada o un diagrama de bloques de estado requiere que lo tomes línea por línea y lo analices para obtener una imagen más amplia de lo que esto significa. El algoritmo está tratando de lograr. Personalmente, nunca he resuelto ni siquiera un problema matemático porque pensé que eran aburridos, sin embargo, hoy en día soy capaz de codificar algoritmos de inteligencia artificial de manera eficiente. Se trata de analizar y seguir el rastro de evidencia. Después de haber analizado la evidencia, la estructura del algoritmo se hace evidente y obtienes experiencia útil. que debe cultivarse intentando ajustar este algoritmo particular.

Algunos algoritmos divertidos para que practiques son:
ASTAR, Trie y profundidad primera búsqueda

Le garantizo que después de un año de hacer sus propios programas pequeños sin cortar y pegar, comenzará a programar de manera inconsciente, al menos cuando se trata de tareas simples.

Tiempo de cuentos :

Una prueba en nuestra universidad implicó resolver determinantes 5 × 5. Mientras la tarea
no es muy pesado en el lado algorítmico (calcula 20 menores de 3 × 3 – y
son fáciles) todavía es mucho papeleo. Entonces este estudiante era como 5 × 5 =
número, 5 × 5 = número.

Por supuesto, el profesor ha respondido 2 (del sistema 2-6) y “eres
trampa “. El estudiante pidió hacerse la prueba. Entonces le dieron 5 × 5 y él
escribió el número correcto, una y otra vez fue probado y los estaba resolviendo
todo solo mirándolos por un minuto o dos y luego soltando el correcto
número.

Una vez que todos recogieron la mandíbula del suelo, preguntamos … “¿Cómo?” y el
respondió: “Bueno, resuelve 400-500 de ellos y podrás hacerlo
¡también!”

Entonces practica. Una vez que resuelva 500-1000-10000 o lo que sea necesario para cubrir el
amplitud de su dominio de destino: podrá ver los patrones y
resuelve el 95% de ellos. Tenga en cuenta que nunca logrará la perfección en este campo, de lo contrario Brian Bi no estaría estudiando como usted y yo deberíamos.

Resolver muchos problemas y tomar clases ayudan.

Cuando veo algo de complejidad incluso moderada, no trato de resolver ese problema de inmediato. Trato de resolver un problema más fácil que me acerca a resolver el problema complejo. Luego sigo tratando de resolver el siguiente bit. Hay muchos problemas que tienen 4-7 de estos tipos de pasos. En el medio, podría tener un código que resuelve 3 partes y otro que resuelve 2 y un par de diagramas de lo que está sucediendo con notas escritas por todas partes.

Luego hago algunas otras preguntas como:

¿Cómo pongo todo esto junto?
¿Hay una manera más simple de hacer esto?
¿Qué es lo que todavía no sé si podría aprender a resolver este problema?
¿Hacer estas cosas en un orden diferente me permitirá simplificar esto o aclararlo para uso futuro?
¿Cómo voy a mantener esto organizado y comentado para que no sea completamente opaco para mí u otro desarrollador en unos meses?
¿Quién me puede ayudar en este momento?

No hay sustituto para aceptar el gasto de tiempo y dolor de lidiar con un problema. Creo que el enfoque pragmático de resolver problemas relacionados más pequeños es el mejor y conozco a muchas otras personas que sienten lo mismo. Hay raros momentos en que no funciona de esa manera y hay casos frecuentes en los que es posible una solución mucho más elegante con un enfoque más global. PERO, si “… no puede encontrar una solución hasta que alguien le diga …” este enfoque es probablemente su mejor opción.

Tome un buen curso de algoritmos en línea como Steven Skiena en youtube
o leer algunos libros realmente bonitos: Algorithm Design by Kleinberg, Eva Tardos. Luego, comience a resolver preguntas de geeksforgeeks o del sitio que desee. Comience desde los fáciles. Piense en la solución por un tiempo, si no la obtiene, busque la solución y luego intente resolver problemas similares. Con la práctica, cualquiera lo dominará. Algunas de las mejores personas en el campo de los algoritmos, han practicado y pensado mucho antes de crear algoritmos.

Sigue practicando y nunca te rindas y te prometo que serás un maestro en poco tiempo 🙂 Buena suerte con eso it

No creo que sea un problema en absoluto. No sé cuántos años estudias algoritmos, pero probablemente no sean varios.

Lo que voy a decir es sobre el aprendizaje general más que sobre el aprendizaje de algoritmos. El tiempo promedio que necesita para dominar cualquier campo de conocimiento o habilidad es de alrededor de 10000 horas. Piensa en un buen músico, un guitarrista o un pianista, piensa en ser competente en otro idioma. Dicho esto, puedo darte algunos consejos y sugerencias.

1) todos los días.

Debe hacer ejercicio todos los días, como en el gimnasio, es mejor si puede hacer un poco de trabajo todos los días (algo entre 15 minutos y una hora) que hacer 10-12 horas seguidas el fin de semana.

2) ejercicio.

Si solo ves videos o lees libros, no te ayudará. En realidad, debe hacer las cosas incluso si eso es copiar la solución que encuentra manualmente (nunca use copiar y pegar si su objetivo es aprender). Intente buscar otras soluciones para el mismo problema e intente comprender sus diferencias. Una vez en el salón de clases, un maestro mío preguntó a 5 estudiantes cuál era su solución a un problema dado y obtuvimos 5 soluciones completamente diferentes.

3) Aléjese de la computadora.

Comprende tu problema. Haz algunos dibujos, esquemas, tablas. Aprenda a hacer una prueba de tabla (ejecución) de su programa. Eso te ayudará mucho más que seguir mirando la pantalla de la computadora.

4) Haz algo que te guste.

Es suficiente. Solo una cosa, espere tomar alrededor de 4 a 6 años para sentirse cómodo con él. Si trabajas todos los días alrededor de una hora o dos, tal vez antes de eso.

¿De verdad quieres ser un desarrollador de algoritmos? Puede formar parte de un equipo de desarrollo (tal vez) y hacer cosas más estructurales en lugar de cosas algorítmicas. Se necesita todo tipo. Si “no lo entiendes”, podría significar que no sientes que necesitas hacerlo, o que simplemente no quieres hacerlo, en lugar de por alguna aflicción innata.

Sé suficiente lenguaje ensamblador como para ser peligroso, pero cuando intenté aprenderlo por primera vez leyendo libros, simplemente no tenía sentido para mí y fue difícil retener algo de la información, porque no tenía ningún uso real. Años más tarde, quería saber cómo se implementaban los lenguajes de programación y los compiladores y qué generaban los compiladores, y luego se volvió no solo interesante, sino fácil de aprender. Aprendí a programar por el deseo de crear algo o hacer que la computadora haga algo. Lo veo como un medio, no como un fin, y no podría haber desarrollado ninguna instalación si no hubiera alguna aplicación práctica para ello.

Si por “algoritmo” realmente quiere decir que no puede escribir el código en el cuerpo de una función, tal vez debería hacer una búsqueda del alma sobre lo que realmente quiere hacer. Las respuestas aquí seguramente se basan en muchos supuestos, ya que no sabemos nada sobre usted, sus conocimientos, sus experiencias.

(Aparte: no codifico para vivir y no ofrezco hacerlo, pero todavía aspiro a ofrecer valor en ese ámbito).

Una muy buena sugerencia que me dieron en la universidad es:

Divida cada problema en uno más pequeño hasta que encuentre muchos problemas pequeños que todos puedan resolver

Esta es una muy buena idea (y probablemente refleja toda la idea de programación).
Soy muy malo para recordar cómo escribir un algoritmo de clasificación o algo similar (wikipedia está ahí), pero definitivamente puedes encontrar algo reduciéndolo a cosas cada vez más pequeñas.

La segunda parte es definitivamente resolver más y más problemas, mejorarás mucho de esta manera.

mi sugerencia es que el nombre es intimidante y hace que retroceda.

Solo piensa creativamente. En lugar de copiar / pegar, intente derivar el concepto de los primeros principios y tómese un tiempo para probar diferentes enfoques.

Me encanta crear nuevos enfoques para los problemas. Diría que esta es una de mis fuentes de placer, tal vez similar a los crucigramas. Tienes un problema y tienes que pensar en cómo resolverlo. Por ejemplo, este era un problema mal redactado, pero finalmente lo intenté: la respuesta de Gene Sewell a ¿Puede implementar un código C ++ eficiente para encontrar la frecuencia de un elemento para un rango en una matriz?

Una de las razones por las que funciona la programación de pares es porque tienes que vocalizar tu proceso de pensamiento interno. Incluso cuando estés solo, trata de expresar tus pensamientos en voz alta.

Si lo intenta, estoy seguro de que todo el tema pronto será menos desalentador y mucho más divertido.

Comparta un ejemplo de un problema que fue difícil para usted. Con algunas notas sobre su pensamiento o enfoque del problema antes de conocer la solución. Las personas que pueden resolver las cosas mejor que usted tienen mejores patrones de pensamiento, estos patrones se aprenden a través de la experiencia o el talento, algunos se aprenden de otros, intuitivamente o no, todo se puede aprender.