Su jefe le pide que escriba un programa de "hola mundo". Como le pagan por las líneas de código, desea que sea lo más complejo posible. Sin embargo, si solo agrega líneas sin sentido, o obviamente cosas inútiles u ofuscantes, nunca lo obtendrá a través de la revisión del código. Por lo tanto, el desafío es:
Escriba un programa "hello world" que sea lo más complejo posible bajo la condición de que pueda dar una "justificación" para cada complejidad en el código.
El comportamiento requerido del programa es simplemente generar una sola línea "Hola mundo" (sin las comillas, pero con una nueva línea al final) y luego salir con éxito.
Las "justificaciones" incluyen:
- compatibilidad con palabras de moda ("¡El software moderno está orientado a objetos!")
- buenas prácticas de programación generalmente aceptadas ("Todo el mundo sabe que debe separar el modelo y la vista")
- mantenibilidad ("Si lo hacemos de esta manera, podemos hacer XXX más fácilmente más tarde")
- y, por supuesto, cualquier otra justificación que pueda imaginar usando (en otras situaciones) para el código real.
Obviamente no se aceptarán justificaciones tontas.
Además, debe "justificar" su elección de idioma (por lo tanto, si elige un idioma inherentemente detallado, tendrá que justificar por qué es la opción "correcta"). No se aceptan lenguajes divertidos como Unlambda o Intercal (a menos que pueda dar una muy buena justificación para usarlos).
El puntaje de las entradas calificadas se calcula de la siguiente manera:
- 1 punto por cada enunciado (o el equivalente a un enunciado en su idioma de elección).
- 1 punto por cada definición de una función, tipo, variable, etc. (con la excepción de la función principal, cuando corresponda).
- 1 punto por cada declaración de uso del módulo, directiva de inclusión de archivo, espacio de nombres usando declaración o similar.
- 1 punto por cada archivo fuente.
- 1 punto por cada declaración directa necesaria (si puede deshacerse de ella reorganizando el código, debe "justificar" por qué la disposición que ha elegido es la "correcta").
- 1 punto por cada estructura de control (si, while, for, etc.)
Recuerde que debe "justificar" cada línea individual.
Si el idioma elegido es lo suficientemente diferente como para que este esquema no se pueda aplicar (y puede dar una buena "justificación" para su uso), sugiera un método de puntaje que se parezca más al anterior para su idioma de elección.
Se pide a los concursantes que calculen el puntaje de su entrada y lo escriban en la respuesta.