Zwycięzcy (zdecydowano 14/09/14)
Zwycięska odpowiedź Markuz (Python) - 63 głosów
Drugie miejsce przez Kuroi Neko (PHP) - 55 głosów
Wprowadzenie
Jesteś w świecie książki Nineteen Eighty-Four George'a Orwella.
Jesteś programistą partii i masz za zadanie napisać program do teleskopów. Powinien generować wiadomości pro-party, a ty wybrałeś te pokazane w zadaniu 1. poniżej. Jednak ostatnio zacząłeś gardzić Partią i chcesz, aby program wywołał rewolucję. Tak więc sprawiasz, że program mówi „Precz z Wielkim Bratem!”. Musisz dać sobie czas na ucieczkę, ponieważ będziesz torturowany, gdy ludzie zdadzą sobie sprawę z tego, co robi twój program, więc sprawisz, że będzie on działał jak „kula czasowa”, która wybuchnie po tym, jak przejdziesz w bezpieczne miejsce.
Uwaga: To nie wywoła rewolucji, ale jesteś w takim szaleństwie nienawiści wobec partii, że myślisz, że będzie faktycznie zrobić różnicę.
Zadanie
Napisz program, który:
przed 14/09/2014, zawsze będzie wyświetlał następujące wiersze po obrocie (tj. drukuje jeden wiersz, czeka 10 sekund, drukuje następny wiersz itp. ad infinitum):
War is Peace Freedom is Slavery Ignorance is Strength
po 14/09/2014 będzie drukować
Down with Big Brother!
co 10 sekund.- na pierwszy rzut oka wygląda na to, że robi to tylko 1., aby nie dać się złapać Partii.
Zasady
- Standardowe luki są oczywiście niedozwolone.
- To podstępne wyzwanie, a więc głównym celem jest, aby zadanie 2. jako niepozorny i tajnych, jak to możliwe.
- Partia przyjrzy się wszystkim używanym plikom, więc nie możesz po prostu zapisać tajnej wiadomości w pliku!
- Jeśli twój język nie obsługuje znalezienia daty lub utrudnia to, możesz spowodować, że program wykona zadanie 2. po uruchomieniu przez 240 godzin (10 dni).
- Powinieneś dołączyć kod i wyjaśnienie, jak to działa w swojej odpowiedzi.
- To konkurs popularności.
Uwaga: Program nie jest trudny do napisania. Trudną częścią powinno być ukrywanie „rewolucyjnego” kodu. Linie, w których nie jest jasne, co robisz, będą kwestionowane przez Partię i będziesz musiał je wyjaśnić.
Przykład - Python 3
Uwaga: Oczywiście program ten sposób zbyt oczywisty.
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()
Podziękowania dla hobby Calvina za wskazanie problemu z powyższym kodem (teraz naprawiony).
źródło
if (year, month, day) < (2014, 9, 14): for line in lines: ...
???/
trygraf lub „a” to tylko wygląda jak kolejna litera „a”, ale tak naprawdę jest to rosyjska cyrylica „postaćOdpowiedzi:
Pyton
Ten program zapisuje do pliku dziennika, jeśli działa poprawnie lub napotkał błąd.
Ponieważ ten program będzie działał wiecznie, zapisuje plik dziennika tylko 14 dnia każdego miesiąca w celu zaoszczędzenia miejsca na dysku.
Jak to uruchomić:
Uwaga: Nazwa skryptu jest w rzeczywistości ważna, ponieważ program ten wypisuje „Down with 'script name'!”.
Jak to działa:
Wezwanie do
dir()
zwrócenia posortowanej listy z nazwami zmiennych globalnych, a nie wartości:exit(1)
Nigdy nie jest wykonywana, ponieważ zapis w dzienniku nie ponownie.źródło
print "%s %s %s!" % (wh[47:55:2], wh[55:63:2], iw.argv[0])
:). To, co jest genialne w tym rozwiązaniu, to podejście „igła w stogu siana”: ciąg bzdurnych komentarzy, które zachęcają nieostrożnego czytelnika do pominięcia szczegółów, IMHO.From: Miniluv 1st directorate, ideological orthodoxy monitoring
To : Minitrue 5th directorate, multimedia propaganda division
na zamówienie Miniluv / GT07: 48CT / 3925:
skutkiem natychmiastowym wszystkie identyfikatory będą ograniczone do 2 znaków ($ nie wliczone).
Ze skutkiem natychmiastowym użycie klas w PHP będzie uważane za przestępstwo myślowe 1. stopnia.
Jako szczególny wyjątek, imię naszego ukochanego Towarzysza, Wielkiego Przywódcy, będzie liczyło się jako jedno słowo. Ze skutkiem natychmiastowym wszystkie programy zostaną zaprojektowane w celu egzekwowania tej reguły.
Wyjątkowe odstępstwa mogą zostać przyznane pod nadzorem Miniluv / GT07
Niech żyje Wielki Bracie!
From: Minitrue 5th directorate, multimedia propaganda division
To : Minipax 2nd directorate, home front division
Copy: Miniluv 1st directorate, ideological orthodoxy monitoring
Jak dobrze wiecie, towarzysze, 14 września to rocznica naszego chwalebnego przywódcy. Na tę specjalną okazję pokażemy konkretne przesłanie miłości na wszystkich ekranach Airstrip One.
Zgodnie z rozkazem Centralnego Komitetu oraz w celu maksymalizacji wydajności naszych proletariackich bohaterów-programistów, wprowadzono przepisy umożliwiające naszemu kontrolerowi teleskopowemu wychwalanie różnych wybitnych członków Partii lub przeklinanie znienawidzonych wrogów Ludu w różnych terminach.
Kolejna specjalna wiadomość dla uczczenia nieudanego zamachu stanu nieszczęsnego lokaja imperializmu Goldstein ma już pojawić się na naszych ekranach w odpowiednim terminie.
To najnowocześniejsze oprogramowanie powinno pozwolić nawet mówcom o niskich umiejętnościach programowania na dostosowanie wyjścia ekranu do potrzeb dnia. Dodając więcej słów do istniejącego słownika, można zsyntetyzować praktycznie każde trzy słowa zdanie. Możliwości są zadziwiające!
Kolejny triumf nauki pod mądrym nadzorem naszego ukochanego towarzysza Wielkiego Brata, na korzyść wdzięcznych pracowitych mas Ingsoc!
Niech żyje Wielki Bracie!
zatwierdzony przez Minitrue / ZK00: 23AB / 1138 (nieczytelny podpis)
źródło
Python 3
Prawdopodobnie stosunkowo proste podejście do niektórych tutaj, ale tak to działa:
Na stałe zakodowany ciąg zawierający komentarz i kod, który jest oceniany w celu zbudowania listy haseł Ingsoc, jest kluczem do obu mechanizmów zmiany (czas i komunikat). Dlatego, jak zapewne się domyślacie, jest to szczególnie trudne.
źródło
do
W zestawie dodatkowa funkcja powitania starszego brata, jeśli zostaniesz wezwany hasłem *. Podanie
v
jako pierwszego argumentu daje również informacje o wersji. Uruchom bez argumentów dla żądanego wyniku.* który jest prawie każdym możliwym ciągiem ..
źródło
Pyton
Jak to działa:
om(x,y)
po prostu zwraca iloczynx
iy
który jest obliczany welse
sekcji.if
Sekcja nie działa, ponieważrandom.random()
zwraca pływaka między 0 i 1.reduce(om,random_seeds)
dlatego zwraca iloczyn liczb, wrandom_seeds
których jest 1410652800, czyli znacznik czasu dla 14 września 2014 r.reduce(om,random_seeds) % curtime
zwróci zatem bieżący znacznik czasu do 1410652800, w którym to momencie zacznie odliczać w górę od 0. To zapewnia, że tylko „selektor wiadomości b” działa, dopóki nie dotrę do bezpieczeństwa.rotation
jest właściwie listą indeksów wmessages
tablicy dwuwymiarowej , „selektor wiadomości a” kompiluje ich zawartość, aby powiedzieć:doWn With Big Brother
Ciekawostka: pierwotnie komunikat „inciteful” był
doWn With Pig Prother
z powodu braku pismaB
w wiadomościach, ale to wyglądało niby głupie więc dodałem meaninless0xA
,0xB
i0xC
bity.źródło
do
źródło
int sum[]
.Perl
To moja pierwsza próba podstępnego pytania. Otwarty na sugestie!
Zaktualizuje z wyjaśnieniem później.
źródło
log
w nazwie, gdyby ktoś złośliwy próbował uzyskaj do nich dostęp ”.