Cómo desarrollar el pensamiento algorítmico para programar

Usualmente sigo este algoritmo.

1-Intenta ver un problema en todas partes.

2-Piensa en una solución. Escríbela.

3-Pregúntese por qué su propia solución probablemente no sea tan buena como la que puede ver: ¿qué se está perdiendo?

4-Intenta mejorar tu código cubriendo todas las esquinas.

5-Busque una mejor solución de varios recursos (puede ver diferentes enfoques)

problemas de práctica en Hackerrank, codeforces.

Lee editoriales en Topcoder. ¡Y practica como el infierno!

Libros:

Amazon.in: Compre INTRODUCCIÓN A ALGORITMS 3ED Reserve en línea a precios bajos en India

Compre el arte de la programación de computadoras, volúmenes 1-4A en caja (caja) Reserve en línea a precios bajos en India

Estos dos cursos son muy recomendables.

Algoritmos | Coursera

Princeton- Algoritmos, Parte I | Coursera y Algoritmos, Parte II | Coursera

Otros recursos

Estructuras de datos y algoritmos

Tutoriales de ciencia de datos

Algoritmos – GeeksforGeeks

  • Piensa como programador.
  • HackThis !! – The Hackers Playground resuelve los desafíos.
  • Cuanto más resuelves el desafío, más ideas nuevas tienes.
  • Haga la programación todos los días.
  • Sea específico en un lenguaje de programación, no siga los rumores de que este es fácil y este es fácil en todas partes, solo la lógica de cambios de texto seguirá siendo la misma.
  • HackerRank, competencia de programación, concurso de programación, programación de computadoras en línea, Hackathon IO – Organiza y descubre Hackathons – Hackathon.IO participa en este tipo de eventos y resuelve más rompecabezas.
  • Siempre habrá más de una solución de cualquier problema, pero siempre elija la solución óptima, no vaya por codicioso.
  • Intente conectar su rutina diaria con un enfoque algorítmico.

Hacer programación competitiva. También es una excelente manera de mejorar el pensamiento algorítmico y el aprendizaje de nuevas algas. Es aprender mientras se hace. Comience con los desafíos largos de codechef y una vez que aprenda a implementar sus pensamientos más rápido, puede pasar a desafíos cortos en codechef como las comidas preparadas o las horas de almuerzo o comenzar con codeforces.

Curso Coursera: Pensamiento Algorítmico

Si, ayuda. Y, por supuesto, practica tanto como puedas. Intenta resolver problemas del mundo real mediante programación, desafíate más y desarrollarás habilidades gradualmente.

HackerRank es un buen lugar para probar desafíos.

Es bastante difícil responder esa pregunta sin saber lo que ya sabes. Si tuviera que dar solo una cosa, esa cosa serían invariantes de bucle. Comprenda que cuando escribe un bucle, implícita o explícitamente usa un bucle invariante.

Un bucle invariante es un predicado (una declaración que es verdadera o falsa) con las siguientes propiedades:

Es cierto al entrar en el ciclo la primera vez.

Si es cierto al comenzar una iteración del bucle, sigue siendo cierto al comenzar la siguiente iteración.

El ciclo termina, y el ciclo invariante más la razón por la cual el ciclo termina le da la propiedad que desea.

Tomemos un ejemplo realmente simple. Considere este ciclo para sumar los primeros n elementos de una matriz a, donde n es un entero positivo:

suma = 0

i = 0

mientras yo

suma = suma + a [i]

i = i + 1

Aquí está el bucle invariante: al ingresar una iteración del bucle, suma = a [0] + a [1] + a [2] +… + a [i-1]. Ahora veamos cómo se mantienen las tres propiedades para este bucle invariante.

Al ingresar a la primera iteración, i = 0. La suma a [0] +… + a [i-1] está vacía, ya que i-1 = -1. La suma de los términos no es la identidad 0 para la suma. Comprobar.

Al ingresar una iteración para un valor de i, suponga que el bucle invariante es verdadero, de modo que sum = a [0] + a [1] + a [2] +… + a [i-1]. La iteración agrega un [i] en la suma y luego incrementa i, de modo que el bucle invariante mantiene entrando en la siguiente iteración. Comprobar.

El ciclo termina una vez que i = n. De acuerdo con el bucle invariante, suma = a [0] + a [1] + a [2] +… + a [n-1]. Verificación: suma es de hecho la suma de los primeros n elementos de la matriz.

Ahora, este ejemplo es bastante trivial. Si estuviera escribiendo este bucle, dudo que razone formalmente al respecto de esta manera. Pero este razonamiento es exactamente lo que estaba en el fondo de su mente, ya sea que se haya dado cuenta o no. Los invariantes de bucle lo ayudan a comprender y probar bucles correctos más complicados.

Si los invariantes de bucle le recuerdan la inducción matemática, deberían hacerlo. La primera propiedad se asigna a la base de la inducción, y la segunda propiedad es como la hipótesis inductiva. Es la tercera propiedad que es un poco diferente, ya que la mayoría de las pruebas inductivas no tienen una condición de terminación.