Todos sabemos cómo la discusión sobre cuál es el mejor sistema operativo causó muchas guerras de llamas. Su objetivo ahora es proporcionar una "prueba" decisiva de que su sistema operativo favorito es mejor ... ah, no, mucho mejor, proporcionar una "prueba" decisiva de que otro sistema operativo es malo.
La tarea: escribir un programa, que haga algunos cálculos, y funcione correctamente en al menos un sistema operativo e incorrectamente en al menos otro.
- el programa debe hacer al menos algunos cálculos, por lo que tiene que leer alguna entrada simple (preferiblemente en la entrada estándar, o si es de archivos si lo desea, pero el mal uso de little endian / big endian no solo sería barato, sino también obvio) , y proporcionar algo de salida dependiendo de la entrada. Los cálculos deben ser significativos y justificados, por ejemplo, resolver una vida real o un problema matemático.
- debe especificar ambos sistemas operativos, indicando en cuál funcionará correctamente y en cuál no. Ambos sistemas operativos deben ser bien conocidos, y aproximadamente desde el mismo tiempo (por lo que no hay DOS 1.0 versus un SO moderno). Se recomienda proporcionar una breve descripción sobre la causa de la diferencia (especialmente si sospecha que muchas personas no se darían cuenta) en las etiquetas de spoiler.
Me gusta esto
La causa de la diferencia tiene que ser sutil, así que no
#ifdef _WIN32
o similar, ¡por favor! Recuerde, su objetivo es "probar" que este sistema específico es malo, por lo que las personas no deberían ser capaces (inmediatamente) de detectar su truco.Si hay una parte muy extraña o muy inusual en su código, debe justificarlo en los comentarios por qué está allí. Por supuesto, esta "justificación" puede / será una gran mentira.
Tanteo:
¡Esto no es un golf! El código debe estar bien organizado y ser simple. Recuerde, su objetivo es ocultar un error para que la gente no sospeche de ello. Cuanto más simple es el código, menos sospechoso es.
El ganador se decidirá por votos. La mayoría de los votos después de aproximadamente 10 días después de la primera presentación válida gana. En general, las respuestas donde el código es fácil de leer y comprender, pero el error está bien oculto, e incluso si se descubre, se puede atribuir a un error en lugar de a la malicia, se debe votar. Del mismo modo, debería valer mucho más si el error solo causa un resultado incorrecto, en lugar de causar que el programa se bloquee o no haga nada.
Como de costumbre, me retengo el derecho de elegir una respuesta como ganador si no está más del 10% o 1 punto por debajo de la que tiene más votos, en cualquier criterio subjetivo.
make (1)
funciona correctamente en prácticamente todos los cuadros de Unix y de forma incorrecta en algunos cuadros de Windows. No por los sistemas operativos, sino por los sistemas de archivos. Cualquier sistema de archivos que mantenga las fechas de modificación de archivos con baja precisión puede fallarmake
correctamente en una máquina rápida.