Переможці (вирішено 14.09.14)
Переможна відповідь Маркуза (Python) - 63 голоси
Друге місце по Kuroi неко (PHP) - 55 голосів
Вступ
Ви знаходитесь у світі книги « Дев'ятнадцять вісімдесят четвертий » Джорджа Оруелла.
Ви програміст Партії і вам доручено написати програму для телеекранів. Він повинен виводити повідомлення про партії, і ви вибрали ті, які показані в завданні 1. нижче. Однак ви нещодавно почали зневажати партію, і хочете, щоб програма викликала революцію. Отже, ви змушуєте програму сказати "Геть з великим братом!". Ви повинні дати собі час на втечу, тому що вас будуть мучити, коли люди зрозуміють, що робить ваша програма, тому ви змусите її діяти як «бомба часу», яка вибухне після того, як ви перейдете в безпеку.
Примітка: це не призведе до революції, але ви в такому шалі ненависті до партії, що, на вашу думку, це насправді змінить значення.
Завдання
Напишіть програму, яка:
до 14.09.2014, завжди буде виводити наступні рядки під час обертання (тобто друкує один рядок, чекає 10 секунд, друкує наступний рядок тощо. ad infinitum):
War is Peace Freedom is Slavery Ignorance is Strength
після 14.09.2014 друкуватиметься
Down with Big Brother!
кожні 10 секунд.- на перший погляд схоже, що це лише 1., щоб вас не спіймали партії.
Правила
- Стандартні лазівки , звичайно, не допускаються.
- Це непродумане завдання, і тому головна мета - зробити завдання 2. максимально непомітним і прихованим.
- Партія розгляне всі файли, що використовуються, тому не можна просто зберігати секретне повідомлення у файлі!
- Якщо ваша мова не підтримує пошук дати або робить це дуже важким, ви можете змусити програму виконати завдання 2. після її запуску протягом 240 годин (10 днів).
- Ви повинні включити у свою відповідь код та пояснення того, як він працює.
- Це конкурс на популярність.
Примітка: написати програму не важко. Важка частина повинна приховувати "революційний" код. Лінії, де не ясно, що ви робите, будуть поставлені під сумнів партією, і вам доведеться пояснити їх.
Приклад - Python 3
Примітка: Очевидно , що ця програма є способом занадто очевидна.
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()
Дякуємо захопленням Calvin's, що вказали на проблему з кодом, який був вище (тепер виправлено).
if (year, month, day) < (2014, 9, 14): for line in lines: ...
?
??/
триграф, або "а", що тільки схоже на ще одне "a", але насправді російська кирилиця "a unicode"