Skip to content

Repository files navigation

Rust Algorithms

Repositorio de autoestudio de algoritmos y estructuras de datos en Rust, pensado para practicar resolución de problemas, análisis de complejidad y hábitos de entrevista técnica.

El objetivo es que este proyecto sirva como material de estudio reutilizable: cada solución debe tener una implementación clara, tests automatizados y notas que expliquen el patrón usado.

Qué Contiene

  • Soluciones de algoritmos organizadas por patrón.
  • Tests de integración para validar cada ejercicio.
  • Notas de estudio con ideas, invariantes y errores comunes.
  • Un plan de práctica por semanas.
  • Una ruta avanzada para ampliar el alcance después del plan base.
  • Wiki con documentación resumida del avance.

Estructura

AGENTS.md
ROADMAP.md
LICENSE.md
LICENSE-MIT
LICENSE-APACHE
LICENSE-CC-BY-SA-4.0.md
.github/
  workflows/
    ci.yml
src/
  patterns/
    binary_search.rs
    dynamic_programming.rs
    graphs.rs
    greedy.rs
    hashing.rs
    heaps.rs
    intervals.rs
    linked_lists.rs
    matrices.rs
    math_bit.rs
    range_queries.rs
    recursion_backtracking.rs
    sliding_window.rs
    stack_queue.rs
    string_algorithms.rs
    trees.rs
    tries.rs
    two_pointers.rs
    weighted_graphs.rs
tests/
  binary_search_test.rs
  dynamic_programming_test.rs
  graphs_test.rs
  greedy_test.rs
  hashing_test.rs
  heaps_test.rs
  intervals_test.rs
  linked_lists_test.rs
  matrices_test.rs
  math_bit_test.rs
  range_queries_test.rs
  recursion_backtracking_test.rs
  sliding_window_test.rs
  stack_queue_test.rs
  string_algorithms_test.rs
  trees_test.rs
  tries_test.rs
  two_pointers_test.rs
  weighted_graphs_test.rs
  property_algorithms_test.rs
benches/
  algorithm_families.rs
diagrams/
  core-patterns.mmd
  math-geometry.mmd
  optimization-patterns.mmd
  recursive-structures.mmd
notes/
  week-01.md
  week-02-03.md
  week-04-05.md
  week-06.md
  week-07-08.md
  week-09-10.md
  week-11-12.md
  week-13.md
  week-14-15.md
  week-16.md
  week-17-18.md
  week-19-20.md
  week-21-23.md
  week-24-25.md
  complexity-cheatsheet.md
  mock-interview-rubric.md
  review-queue.md
  simulations/
    simulacro-01-minimum-window-substring.md
    simulacro-02-course-schedule.md
    simulacro-03-coin-change.md
  rust-interview-patterns.md
  mistakes.md
plan/
  criterios-seleccion-191-plus.md
  consolidacion-191-220.md
  estandar-rfc-0001.md
  horizonte-400.md
  matriz-cobertura-400.md
  plantilla-bloque-autonomo-191-plus.md
  plan-alcance-avanzado.md
  repeticiones-241-260.md
  simulacros-221-240.md
  plan-algoritmos-rust.md

Gobernanza

  • AGENTS.md es la guía de arranque para humanos e IA en este repositorio.
  • ROADMAP.md apunta al plan vivo sin duplicarlo.
  • plan/estandar-rfc-0001.md registra la alineación de este repo con el Manual Fundacional RFC-0001.
  • LICENSE.md resume la doble licencia: código bajo MIT OR Apache-2.0; contenido educativo bajo CC BY-SA 4.0.

Cómo Usarlo

Ejecutar los tests:

cargo test

Formatear el código:

cargo fmt

Lint y verificación completa:

cargo fmt --check
cargo clippy --all-targets
cargo test

Compilar benchmarks sin ejecutarlos:

cargo bench --no-run

Para estudiar un problema:

  1. Leer el enunciado y escribir ejemplos.
  2. Identificar el patrón principal.
  3. Escribir tests antes de implementar.
  4. Resolver con una solución clara.
  5. Anotar complejidad temporal y espacial.
  6. Registrar errores o bloqueos en la bitácora.

Wiki

La wiki es el punto de entrada recomendado para estudiar el avance, revisar patrones y seguir las semanas del plan:

Wiki de Rust Algorithms

Planes locales:

Páginas destacadas:

Estado Actual

  • Semana documentada: 27-28
  • Problemas implementados: 237
  • Tests automatizados: 543 pruebas deterministas/property + 9 doctests
  • Ruta avanzada: hito 190 completado; horizonte 400 documentado como plan opcional futuro
  • Lenguaje: Rust

Benchmarks y Property Testing

Las dependencias criterion y proptest son solo de desarrollo. Se agregan porque el repo no solo comprueba respuestas: también enseña complejidad, invariantes y regresiones de rendimiento donde la señal es real.

Familia Benchmarks Property testing Decision
binary_search Si Si Bench para search_insert; property contra partition_point, porque la invariante de lower-bound es generativa.
dynamic_programming Si No por ahora Bench para LIS; property tests requieren oraculos exponenciales acotados y se posponen para no agregar ruido.
range_queries Si Si Bench de Fenwick; property compara prefijos contra un vector ingenuo tras actualizaciones.
string_algorithms Si No por ahora Bench de KMP; property testing queda fuera hasta definir generadores ASCII/Unicode por algoritmo.
weighted_graphs Si No por ahora Bench de Dijkstra; propiedades de grafos requieren generadores conectados/ponderados especificos.
two_pointers No por ahora Si sorted_squares se prueba por multiconjunto ordenado; no se mide porque el coste O(n) ya queda claro y barato.
Resto de familias No por ahora No por ahora La cobertura determinista actual expresa mejor los casos borde; se agregaran benches/properties solo cuando haya una invariante o regresion concreta que medir.

Enfoque de Estudio

Este repositorio prioriza:

  • Comprender patrones antes que memorizar soluciones.
  • Practicar con tests desde el inicio.
  • Explicar decisiones y compensaciones.
  • Repetir problemas fallados hasta dominarlos.
  • Mantener notas útiles para repaso futuro.

About

Repositorio de autoestudio de algoritmos y estructuras de datos en Rust, con soluciones probadas, notas de patrones, análisis de complejidad y bitácora de errores para preparación de entrevistas técnicas.

Topics

Resources

Stars

Watchers

Forks

Releases

Contributors

Languages