¿Qué tipo de problemas informáticos son más divertidos de resolver?

Tengo un poco de experiencia en el desarrollo de videojuegos, así que tiendo a centrarme en el problema de definir “diversión” primero.

El éxito es divertido. Ganar es divertido. Pero esto es solo un comienzo: tiene que ser un éxito “ganado con esfuerzo” para que sea realmente divertido. Tienes que sentir que realmente trabajaste para ello. El éxito que simplemente se te entrega no es muy divertido.

Hay algunas estrategias para proporcionar de manera confiable el zumbido emocional que obtienes del éxito. Notarás que todo esto se aplica a la resolución de problemas de programación también por diversión, especialmente en un contexto educativo.

1. Dígales la respuesta sin que se den cuenta. Use señales psicológicas que los orienten en la dirección correcta, pero evite decirles directamente.

En los juegos, esto generalmente se hace usando formas que representan la acción (como una espiral para indicar que necesitas usar un ataque giratorio o ver a otro personaje cometer un error justo cuando llega el jugador). En los problemas de programación, puede elegir cuidadosamente el tema para insinuar el tipo correcto de algoritmo, o puede poner un problema fácil antes del problema más difícil, donde el método para resolver el fácil está relacionado con una solución correcta para el difícil .

2. Incremente gradualmente la dificultad. Desea dejar que la sensación de éxito se desarrolle gradualmente. Esto puede generar la confianza y la resistencia necesarias para abordar un problema realmente difícil. Los problemas difíciles tienen la mayor recompensa emocional, pero el jugador / programador necesita tener la confianza necesaria para seguir intentándolo.

3. Oculte las cosas realmente difíciles como “crédito extra”. La mayoría de los juegos tienen una línea de meta que les permite a las personas sentir que han “vencido el juego”. Casi cualquier persona de habilidad promedio puede alcanzar esa línea. Pero la mayoría de los juegos modernos también tienen muchos desafíos opcionales, que es donde sus jugadores / programadores más talentosos obtendrán la mayor emoción.

En realidad estás haciendo dos cosas importantes aquí. Primero, estás inoculando contra la frustración; Ya han ganado el juego, por lo que saben que son un ganador antes de intentar las cosas opcionales. En segundo lugar, estás mejorando la sensación de logro cuando y si logran resolver cualquiera de los extras, porque el jugador cree que esta área es muy difícil.

4. El tema importa. Es cierto que los videojuegos en realidad solo están manipulando una pila compleja de números, pero * se siente * como si estuvieras conquistando el mundo / salvando a la niña / destruyendo a los malos. Los problemas son más divertidos cuando no son estériles. Incluso algo tan simple como competir para resolver los problemas puede ayudar mucho. También puede asignar un tema a los algoritmos en torno a escenarios imaginarios (apropiados para la audiencia, por supuesto). Si su audiencia es lo suficientemente hábil, el resultado en sí puede ser divertido (generar gráficos geniales o sintetizar sonidos interesantes o reconocer la escritura a mano, por ejemplo).

Me doy cuenta de que esta respuesta no proporciona muchos algoritmos específicos que se pueden programar. Pero, sinceramente, casi cualquier algoritmo puede ser divertido de programar, siempre que sea un desafío adecuado y atrape la imaginación.

¡Problemas de optimización de restricciones (o satisfacción de restricciones)!

Ejemplo:
Rompecabezas de ocho reinas
Sudoku
Zebra Puzzle
Problema de vendedor ambulante

Estos problemas son un problema prototípico de NP-Complete, por lo que resolverlos es extremadamente difícil. Al resolverlos, podría aprender sobre Backtracking “adivinar y verificar” (o Prueba y error) y Heurística.

Si eres perezoso (como nosotros), también podrías aprender a no escribir código para resolver estos problemas, sino a ” modelar ” estos problemas en un lenguaje de modelado diferente y usar solucionadores estándar para resolverlos. (Como usar CLP (FD) para resolver el problema de N-Queen, consulte: http://www.inf.unibz.it/~fillott … (página 259) o para modelar todos estos problemas como un problema de programación de Integer y usar cualquier ILP solucionador para resolverlos).

La secuencia de Fibonacci con seguridad. Es una excelente manera de aprender la recursividad.

More Interesting

¿Por qué la mayoría de las investigaciones de inteligencia artificial abandonaron la inteligencia artificial basada en la lógica en favor de enfoques estadísticos?

Si empiezo a leer artículos científicos, ¿cuáles son los documentos que deben leerse sobre la conversión de 'discurso a texto'?

¿Qué investigación de vanguardia se está haciendo en el dominio de los sistemas operativos?

¿Vale la pena hacer un doctorado en seguridad de redes en Alemania?

¿Qué es mejor, participar en una investigación que está fuera del instituto de origen o participar en una investigación en el instituto de origen?

¿Cuáles son las áreas de alcance para la investigación en inteligencia artificial (IA) para un estudiante de informática? ¿Qué hay realmente dentro de la IA?

¿Cuáles son los documentos más influyentes en el mundo del big data? ¿Por qué?

¿Qué piensan los investigadores de IA, ML y NLP del Watson de IBM? ¿Tiene el potencial de tener un gran impacto?

¿Cuáles son los temas candentes en la investigación en nanomecánica?

¿Los programas de doctorado en informática valorarán las habilidades de investigación desarrolladas en un campo vecino, como la psicología?

¿Cuáles son los principales temas de investigación o proyectos que se relacionan entre la visión por computadora y la implementación de hardware en FPGA?

Quiero construir un dron propio desde cero. Como experto en CS, sin conocimientos de mecánica / aeronáutica y electrónica avanzada, ¿cuál debería ser mi camino por delante?

¿Cuáles son los trabajos académicos clásicos en finanzas computacionales / comercio algorítmico?

¿Cuáles son algunos buenos recursos para aprender sobre la optimización distribuida?

¿Qué beneficios obtiene Microsoft, como empresa comercial, de su departamento de investigación (MSR)?