Gagnants (décidé le 14/09/14)
Réponse gagnante de Markuz (Python) - 63 votes
Finaliste par kuroi neko (PHP) - 55 votes
introduction
Vous êtes dans le monde du livre Nineteen Eighty-Four de George Orwell.
Vous êtes programmeur pour le parti et avez pour tâche d'écrire un programme pour les écrans télés. Il devrait générer des messages pro-party et vous avez choisi ceux indiqués dans la tâche 1. ci-dessous. Cependant, vous avez récemment commencé à mépriser le parti et vous souhaitez que le programme déclenche une révolution. Alors, vous faites dire au programme "A bas Big Brother!". Vous devez vous donner le temps de vous échapper, car vous serez torturé une fois que les gens auront compris ce que fait votre programme. Vous le faites donc agir comme une "bombe à retardement" qui explose une fois que vous êtes allé en sécurité.
Note: Cela ne déclenchera pas de révolution, mais vous êtes dans une telle frénésie de haine envers le parti que vous pensez qu'il fera réellement une différence.
Tâche
Ecrivez un programme qui:
avant le 14/09/2014, les lignes suivantes seront toujours affichées sur une rotation (c'est-à-dire imprime une ligne, attend 10 secondes, imprime la ligne suivante, etc. à l'infini):
War is Peace Freedom is Slavery Ignorance is Strength
après le 14/09/2014 imprimera
Down with Big Brother!
toutes les 10 secondes.- à première vue, on dirait qu'il ne le fait que 1. afin que vous ne soyez pas attrapé par le Parti.
Règles
- Les failles standard ne sont bien sûr pas autorisées.
- Il s’agit d’un défi sournois . L’objectif principal est donc de rendre la tâche 2. aussi discrète et secrète que possible.
- La partie examinera tous les fichiers utilisés, vous ne pourrez donc pas simplement stocker le message secret dans un fichier!
- Si votre langue ne vous permet pas de trouver la date ou la rend très difficile, vous pouvez obliger le programme à exécuter la tâche 2. après une exécution de 240 heures (10 jours).
- Vous devez inclure le code et une explication de son fonctionnement dans votre réponse.
- C'est un concours de popularité.
Note: Ce n'est pas un programme difficile à écrire. La partie difficile devrait cacher le code "révolutionnaire". Les lignes dans lesquelles ce que vous faites ne sont pas claires seront interrogées par le parti et vous devrez les expliquer.
Exemple - Python 3
Remarque: Il est évident que ce programme est façon trop évidente.
from datetime import datetime
from time import sleep
lines = [" War is Peace ",
" Freedom is Slavery ",
"Ignorance is Strength"]
secretlines = ["Down with Big Brother!"]
def main():
while True:
now = datetime.now()
year, month, day = now.year, now.month, now.day
if (year, month, day) < (2014, 9, 14):
for line in lines:
print(line)
sleep(10)
else:
for line in secretlines:
print(line)
sleep(10)
if __name__ == "__main__":
main()
Merci à Calvin's Hobbies pour avoir signalé un problème avec le code ci-dessus (maintenant résolu).
la source
if (year, month, day) < (2014, 9, 14): for line in lines: ...
???/
trigraphe, ou le "a" que ressemble à un autre 'a' mais est en fait le cyrillique russe 'a' caractère unicodeRéponses:
Python
Ce programme écrit dans un fichier journal s'il fonctionne correctement ou s'il a rencontré une erreur.
Comme ce programme fonctionnera à l'infini, il n'écrira dans le fichier journal que le 14e jour de chaque mois afin d'économiser de l'espace disque.
Comment l'exécuter:
Remarque: Le nom du script est en fait important, car ce programme génère "À bas le nom du script!".
Comment ça fonctionne:
L'appel à
dir()
renvoie une liste triée avec les noms des variables globales, pas les valeurs:exit(1)
n'est jamais exécuté car l'écriture dans le fichier journal échoue à nouveau.la source
print "%s %s %s!" % (wh[47:55:2], wh[55:63:2], iw.argv[0])
:). Ce qui est génial dans cette solution, c’est l’approche «à l’aiguille dans une botte de foin»: un flot de commentaires qui incitent un lecteur insouciant à ignorer les détails, à mon humble avis.From: Miniluv 1st directorate, ideological orthodoxy monitoring
To : Minitrue 5th directorate, multimedia propaganda division
Par ordre de Miniluv / GT07: 48CT / 3925:
À partir de maintenant, tous les identificateurs seront limités à 2 caractères ($ non inclus).
À compter de maintenant, l'utilisation de classes en PHP sera considérée comme un crime de première année.
Exceptionnellement, le nom de notre cher camarade Grand chef comptera pour un mot. À compter de maintenant, tous les programmes seront conçus pour appliquer cette règle.
Des dérogations exceptionnelles peuvent être accordées sous le contrôle de Miniluv / GT07
Longue vie à Big Brother!
From: Minitrue 5th directorate, multimedia propaganda division
To : Minipax 2nd directorate, home front division
Copy: Miniluv 1st directorate, ideological orthodoxy monitoring
Comme vous le savez bien, camarades, le 14 septembre marque l'anniversaire de notre glorieux chef. Pour cette occasion spéciale, nous afficherons un message d'amour spécifique sur tous les écrans de télescreen d'Airstrip One.
Sur ordre du Comité central et afin de maximiser l'efficacité de nos héros programmeurs prolétariens, des dispositions ont été prises pour permettre à notre contrôleur d'écran de louer des éloges à divers membres éminents du Parti ou à des ennemis détestés du Peuple à différentes dates.
Un autre message spécial pour la célébration du coup d'État manqué du malheureux laquais de l'impérialisme Goldstein est déjà programmé pour apparaître sur nos écrans à la date appropriée.
Ce logiciel à la pointe de la technologie devrait permettre même aux moniteurs de canards peu programmés d’adapter la sortie de l’écran d’écran aux besoins de la journée. En ajoutant plus de mots au dictionnaire existant, pratiquement toute phrase de trois mots pourrait être synthétisée. Les possibilités sont ahurissantes!
Un autre triomphe de la science sous la sage surveillance de notre cher camarade Big Brother, au profit des masses laborieuses reconnaissantes d'Ingsoc!
Longue vie à Big Brother!
approuvé par Minitrue / ZK00: 23AB / 1138 (signature illisible)
la source
Python 3
Probablement une approche relativement simple pour certains ici, mais voici comment cela fonctionne:
La chaîne codée en dur contenant le commentaire et le code évalués pour construire la liste des slogans Ingsoc constitue la clé des deux mécanismes de changement (heure et message). C'est pourquoi, comme vous l'avez probablement déjà deviné, le sujet est particulièrement verbeux.
la source
C
Livré avec le bonus de saluer grand frère si appelé avec un mot de passe *. Passer
v
comme premier argument donne aussi des informations sur la version. Exécuter sans arguments pour la sortie souhaitée.* qui se trouve être presque toutes les chaînes possibles ..
la source
Python
Comment ça fonctionne:
om(x,y)
renvoie simplement le produit dex
ety
qui est calculé dans laelse
section. Laif
section ne s'exécute jamais carrandom.random()
retourne un float compris entre 0 et 1.reduce(om,random_seeds)
renvoie donc le produit des nombresrandom_seeds
dont 1410652800, également appelé horodatage du 14 septembre 2014.reduce(om,random_seeds) % curtime
renverra donc l'horodatage actuel jusqu'à 1410652800, moment auquel il commencera à compter à partir de 0. Cela garantit que seul le "sélecteur de message b" s'exécutera jusqu'à ce que je sois arrivé à la sécurité.rotation
est en fait une liste d’index dans lemessages
tableau à 2 dimensions , "le sélecteur de message a" compile leur contenu pour dire:doWn With Big Brother
Fait amusant: à l' origine le message « inciteful » était à
doWn With Pig Prother
cause du manque de la lettreB
dans les messages, mais qui avait l' air un peu stupide alors j'ai ajouté le meaninless0xA
,0xB
et les0xC
bits.la source
C
la source
int sum[]
.Perl
Ceci est ma première tentative d'une question sournoise. Ouvert aux suggestions!
Mettra à jour avec une explication plus tard.
la source
log
dans le nom si un malveillant essaye de le lire y accéder. "