Escriba un programa que produzca comportamientos diferentes en tantas plataformas diferentes como pueda. Cada plataforma diferente otorga un punto (incluida una plataforma inicial, lo que significa que no puede obtener menos de 1 *). Los mecanismos destinados a determinar la plataforma de destino / ejecución (por ejemplo, a través de declaraciones de compilación de plataforma o API como .NET's Environment.OSVersion.Platform) no deben usarse. La respuesta con la puntuación más alta gana (donde los votos a favor son los desempates).
Por ejemplo, considere el siguiente programa en el lenguaje de Blub: print (1+2)
. Si este programa se imprimiera 3
en cada plataforma en la que se compila y se ejecuta, su puntaje sería 1. Sin embargo, si, por alguna razón, se imprimiera 4
en PDP-11, su puntaje sería 2. Etc. Pero lo siguiente C fragmento, por ejemplo, es una entrada no válida: #ifdef WIN32 ... #endif
.
Definiciones / detalles:
Plataforma distinta: la combinación de a) la arquitectura de hardware b) el sistema operativo y su número de versión PRINCIPAL (por ejemplo, 1.0.0 y 1.1.0 se consideran el mismo sistema operativo)
Comportamiento diferente: dos comportamientos son iguales si producen efectos secundarios similares (por ejemplo, crear el mismo archivo con el mismo contenido), o si los efectos secundarios son errores del mismo tipo. Por ejemplo, si un programa falla en dos plataformas distintas, pero el mensaje de seguridad es diferente en estas plataformas, todavía se considera el mismo comportamiento; mientras que un programa que produce un error de división cero en una plataforma y un error de desbordamiento de pila (¿ves lo que hice allí?;) en otra produce un comportamiento diferente.
Todos los comportamientos indefinidos se consideran equivalentes.
El programa debe invocarse de manera equivalente en todas las plataformas (sin embargo, esto significa que puede pasar los parámetros de la línea de comandos si así lo desea)
* Bueno, supongo que obtendrías cero si tu programa se ejecutara en plataformas cero. Pero um ... Sí, no importa.
1
en Windows y2
en OSX, con el detalle de que lo ejecuto como un script Python en Windows y un programa C en OSX?