¿Cuáles son algunos “problemas de práctica” en los que todos deberían trabajar para mejorar la programación (en cualquier lenguaje de programación)?

No creo que haya ninguno que sea adecuado para “todos”. Dependerá en gran medida de lo que haya hecho antes, y quizás también de lo que pretenda hacer a continuación.

Listas vinculadas: en los primeros dos o tres programas C / C ++ que escribí por mi cuenta, escribí mis propias clases de listas vinculadas. No porque los buenos no se puedan encontrar en otro lugar, solo porque quería probarlo. Tomó un par de iteraciones (juego de palabras) antes de estar satisfecho de haberlo hecho bien, y aprendí mucho en el proceso.

Cuando tenga una buena implementación vinculada individualmente, haga una lista doblemente vinculada.

Ayuda muchísimo si tienes una aplicación que necesita una lista. Una cosa es escribir una para pasar algunas pruebas unitarias; otra es escribir una que satisfaga las necesidades de una aplicación.

Máquinas estatales: en la escuela, una vez me asignaron la tarea de escribir algo que resolviera ecuaciones como:

X = (1 + 2) * (3 * (4 + 5 * 6)) / 7

Eso fue un poco divertido. Estábamos estudiando gramáticas y máquinas de estado en ese momento, y este ejercicio fue una forma divertida de unir esas ideas.

Protocolos de red: escriba algo que pueda recuperar páginas web a través de HTTP. No tiene que mostrarlos, solo guárdelos en el disco. Para obtener puntos de bonificación, guarde también las imágenes en línea. Para obtener más puntos de bonificación, escriba algo que descargue sitios web completos, y no deje que se ejecute sin supervisión, ¡o se avergonzará!

Luego escriba un servidor HTTP y pruébelo con dos o tres navegadores, y su propio cliente HTTP.

Si eso fue divertido, intente nuevamente con SMTP … Escriba algo que pueda enviar correo a través de SMTP. Pruébelo con el servidor SMTP de su ISP. Cuando lo haga funcionar, escriba algo que pueda recibir mensajes a través de SMTP. Envíele correo desde algunas piezas de software diferentes, incluida la suya.

Ya se han mencionado algunos recursos excelentes (visito el Proyecto Euler periódicamente, yo mismo), pero aquí hay una joya que nadie parece conocer:
Timus Online Judge
Este es un “archivo de problemas de programación con sistema de evaluación automática”. Para cualquier problema, envía su código, y el sistema lo compila y lo ejecuta contra un conjunto de ejemplos y casos extremos. Puede resolver los problemas del Proyecto Euler por casualidad, con casos de borde sin resolver o fuerza bruta; no es así con los problemas de Timus Online Judge.

Aquí hay un repositorio de github que encontré recientemente lleno de muchos proyectos prácticos diferentes para comprender muchos aspectos diferentes de la programación, Proyectos

Escuché sobre OPC de un senior de Gunasekaran Namachivayam en mi segundo año de mi grado. Actualmente estoy comprando el último año de B.Tech-IT.
Me pidió que resolviera el problema en #Codeforces #TopCoder, Inc. | Hogar de la comunidad de desarrollo más grande del mundo. #Sphere Online Judge (SPOJ) # Competencia de programación, concurso de programación, programación informática en línea
Pero antes de practicar, comencé a asistir al concurso en esos sitios, no sé sobre calificaciones y clasificaciones. Cayeron rápidamente y comencé a aprender qué hay detrás de este concurso y comencé a resolver problemas de sesiones de práctica y ahora soy calificado como experto en esos sitios.

Por lo tanto, practicar en estos sitios mejorará su conocimiento automáticamente e intentará asistir al concurso en esos sitios.

Sugeriría que una buena base en la coincidencia de patrones y gráficos es esencial para todos los aspirantes a programadores. La coincidencia de patrones se puede explorar implementando un Chatbot similar a ELIZA, eliza.py. Aquí se puede encontrar una buena introducción a los gráficos: Patrones de Python: Implementación de gráficos.

Si está buscando una base sólida en los temas anteriores, le recomendamos que consulte este sitio: Resolución de problemas con algoritmos y estructuras de datos.

CodeEval – Evaluations Made Easy ofrece las mismas capacidades de compilación y evaluación del lado del servidor de Timus Online Judge, con la ventaja adicional de, lo que creo, es una mejor interfaz de usuario. También hay desafíos patrocinados que las empresas presentan regularmente, por lo que puede impresionar a alguien con su código lo suficiente como para conseguir un trabajo

Hay un proyecto reciente, http://www.exercism.io , que se enfoca en crear código “bueno” desde una perspectiva social y revisada por pares. Pasar las pruebas es solo una pequeña parte de la filosofía del sitio. Escribir un código limpio y expresivo es el objetivo principal.

Aquí hay dos de los sitios web brillantes con Mega Project Ideas List.
Proyecto euler
Dreamincode

Creo que la página de USACO Training Gateway en delos.com:791 es muy buena. Es un sitio web para personas de EE. UU. Para prepararlos para programar olimpiadas y concursos en EE. UU. Pero cualquiera puede registrarse en este sitio web y resolver las preguntas que se dan en un orden creciente de complejidad.

HackerRank tiene algunos buenos problemas, considere este problema Resuelva Sherlock y Cost donde estamos tratando de encontrar una matriz C tal que se maximice la suma de abs (Ci-Ai). De hecho, al observar el problema, está claro que C puede ser uno o el valor máximo permitido (solo una de las dos opciones) esto es evidente por razones de matemáticas donde el lector tiene que probar esto por sí mismo.

En realidad, el problema tiene propiedades superpuestas, ya que tenemos una de dos opciones para elegir cuando construimos C 1 o el valor máximo permitido para Ci, si tenemos dos valores Li y Hi para representar tomando cualquiera de estas opciones, podemos ver que la solución óptima para Li o Hi depende de L (i-1) y H (i-1) y usando DP podemos tener una solución en [matemática] O (n) [/ matemática] y memoria [matemática] O (1) [/ matemáticas]

¿Quieres ser bueno en la programación del mundo real (en lugar de resolver acertijos)? Aquí hay un buen proyecto: tome cualquier capa de abstracción de la base de datos y cree un ORM sobre ella. ¿Quieres algo más difícil? construya la maldita capa de base de datos con un generador de consultas con una API decente. ¿Quieres algo aún más desafiante? hacer que el generador de consultas sea lo suficientemente capaz de generar consultas sql anidadas.

Este sitio es similar al Proyecto Euler pero gira en torno a la bioinformática:
http://rosalind.info/

Te sugiero que comiences a desarrollar algo, y cuando desarrolles algo, desafíate a ti mismo para obtener lo mejor y ser más fácil de usar.

More Interesting

¿Hay alguna forma de imprimir todos los elementos de una lista enlazada en orden inverso sin usar la recursividad?

¿Es posible predecir los códigos de verificación para sitios como Facebook y Gmail usando Machine Learning?

Cuando quitamos un borde de un árbol, parece obvio que nos quedan dos árboles, pero ¿cómo podríamos probar esto?

¿Por qué Python es realmente más lento en algunos cálculos que Java? Las profundidades recursivas también son limitadas.

¿Se puede aplicar BFS a gráficos ponderados?

Como estudiante universitario, ¿debería centrarme más en aprender estructuras de datos y algoritmos o aprender tecnologías como aplicaciones, web, desarrollo de iOS, etc.?

Cómo dibujar un contorno vectorial en una matriz de cuadrícula binaria

¿Cuál sería el mejor algoritmo para generar números aleatorios únicos para cupones de recarga?

Mientras codifica problemas algorítmicos durante una entrevista usando C, ¿está bien asumir funciones de biblioteca?

Dado un problema, como un problema de diseño o un problema de algoritmos, ¿cómo resolverá un ingeniero de software experimentado ese problema?

¿Cuáles son algunos algoritmos utilizados por las grandes empresas (como Amazon) para determinar de manera eficiente desde qué almacén se debe cumplir un pedido?

¿Cuáles son las aplicaciones más prácticas (vida cotidiana) del algoritmo de agrupación de k-means? ¿Cómo se ha utilizado exactamente k-means en estas aplicaciones?

¿Qué algoritmo es mejor para una variante 4 * 4 * 4 * 4 del último dedo del pie tic-tac considerando un límite de tiempo de 15 segundos?

Cómo encontrar el elemento mínimo en un subárbol de un montón máximo

¿Cómo y dónde recopilar datos estadísticos sobre el comercio algorítmico?