El “Arte de la programación de computadoras” de Donald Knuth califica cada ejercicio del 1 al 60, siendo 1 “debería ver la respuesta inmediatamente” y 60 “resolver esto y ganar una Medalla Fields”. ¿Por qué los autores de libros de texto no califican los ejercicios según la dificultad?

Para Cracking the Coding Interview (libro de 2011), he hecho esto. Las preguntas se clasifican libremente por dificultad dentro de un capítulo. Además, los dos últimos capítulos son “Problemas variados” agrupados en Moderado y Difícil.

Una vez hecho esto, puedo decir que los niveles de dificultad son subjetivos, desconocidos, arbitrarios y multifacéticos.

  • Subjetivo : lo que es difícil para una persona no es necesariamente difícil para otra persona. Si ha solucionado algunos problemas de memorización, los problemas de memorización se vuelven realmente fáciles (en muchos casos). Pero sin esta práctica pueden ser bastante difíciles. ¿Dónde, entonces, pongo un problema de memorización?
  • Desconocido: es difícil adivinar dónde debería estar un problema. Con frecuencia tengo preguntas de entrevista que creo que son fáciles, pero luego empiezo a hacer preguntas y resultan difíciles (o viceversa). A menos que haya hecho una pregunta varias veces, realmente no sabe lo difícil que es una pregunta.
  • Arbitrario: algunos problemas son fáciles cuando tienes una visión particular. Pero si se te ocurre o no esa idea es un poco arbitrario. ¿Dónde pones una pregunta como esa?
  • Multifacético: considere un problema en el que es fácil encontrar una mala solución pero difícil encontrar una buena solución. ¿Es ese un problema fácil o difícil?

A pesar de estos problemas, lo hice de todos modos. Para mi libro, vale la pena. Mi libro es como un libro de texto en algunos aspectos, pero no es un libro de texto. Está diseñado para enseñar a las personas cómo resolver problemas difíciles, por lo que agrupar por dificultad es realmente valioso. Y a diferencia de los autores de libros de texto que intentan ser más precisos y correctos, puedo aceptar que toda esta agrupación de “dificultades” está un poco rota. Es mejor que no hacerlo todo.

Incluso ahora, cuando estoy revisando el libro para la sexta edición, me encuentro diciendo: “¿Por qué estaba este problema aquí?” He superado un montón de problemas, pero nunca podré lograr que las agrupaciones sean “correctas”.

Estoy bien viviendo con eso, ya que creo que mis lectores también lo están.

Te daré un par de razones:

  1. La dificultad es subjetiva. Lo que es fácil para mí puede ser difícil para ti, o viceversa.
  2. Como sé muy bien, las soluciones son fáciles de encontrar en línea, lo que hace que prácticamente cualquier ejercicio sea fácil. Tenga en cuenta que cuando Knuth escribió El arte de la programación de computadoras , Internet como la conocemos no existía.