To jest wątek gliniarzy. Przejdź do wątku rabusiów tutaj .
Wprowadzenie
W tym wyzwaniu dla gliniarzy / rabusiów gliniarze napiszą programy produkcyjne i przeplatają je razem. Zadaniem rabusia jest rozróżnienie programów gliniarzy w celu uzyskania pożądanych rezultatów.
Zasady gliny
Policjanci mogą użyć do 256 bajtów łącznie do zapisu od 2 do 8 (włącznie) programów, z których wszystkie muszą generować dane wyjściowe. Wszystkie napisane programy muszą być w tym samym języku. Gliny „przeplatają” swoje programy razem, aby utrudnić złodziejom ustalenie, jakie są programy.
Teraz opis przeplatania. Rozważ ciągi znaków reprezentujące różne programy. Proces przeplatania polega na wielokrotnym pobieraniu pierwszego znaku dowolnego programu i łączeniu go do końca nowego ciągu znaków, dopóki nie pozostaną żadne znaki w żadnym programie. Na przykład, jeśli dwa programy są lion
i TIGER
, możliwe jest przeplatanie TIliGoEnR
. Jednak programów nie można w żaden sposób zaszyfrować, więc RoITEnlGi
jest to niedopuszczalne.
Należy zauważyć, że gdy znaki wszystkich programów oprócz jednego zostaną usunięte z wyników przeplatania, pozostały program będzie wyświetlany w stanie nienaruszonym. Usuwanie liter TIGER
z TIliGoEnR
wyników w lion
.
Wszystkie programy i dane wyjściowe gliniarzy muszą zawierać tylko drukowalne znaki ASCII (20-7E) i znaki nowej linii. Programy nie mogą zawierać błędów i muszą działać w ciągu 10 sekund na rozsądnej maszynie. W przypadku każdego zgłoszenia musi być gdzieś bezpłatny tłumacz języka. Dodawanie komentarzy do zgłoszeń jest niedozwolone, podobnie jak mieszanie i inne formy kryptografii. Puste programy nie są dozwolone (Przepraszamy, utknął ).
Policjant opublikuje przepleciony kod, język, liczbę różnych używanych programów i dane wyjściowe dla każdego programu. Ogromne podziękowania dla Martina za napisanie tego skryptu CJam do automatycznego przeplatania twoich programów.
Programy uznaje się za bezpieczne po upływie tygodnia od momentu opublikowania. W tym momencie policjanci muszą opublikować poszczególne programy, aby otrzymać punkty.
Punktacja
Istnieją dwa elementy, które są dodawane do siebie, aby uzyskać bezpieczne przesłanie.
- 256 podzielone przez liczbę 2 podniesioną do potęgi liczby użytych programów.
- Zaokrąglij liczbę bajtów w przeplataniu w górę do najbliższej potęgi 2 i podziel ją na 256.
Na przykład, jeśli wpis TIliGoEnR
(9 bajtów) byłby bezpieczny, otrzymałby 256/2 ^ 2 + 256/16 = 80 punktów.
Gdy zgłoszenie gliniarza zostanie złamane, policjant traci 16 punktów. Policjant musi zaznaczyć, że ich zgłoszenie zostało złamane.
Zwycięzcą wyzwania gliniarzy będzie osoba, która zdobędzie najwięcej punktów po upływie wystarczającego czasu na uczestnictwo.
Tabela liderów
Jest to praca w toku, która została zaadaptowana przez intrepidcoder z tego pytania .
Aby upewnić się, że twoja odpowiedź się pojawi, zacznij od nagłówka, używając dokładnego szablonu Markdown:
# Language Name, N programs, M bytes; Score ###/### (if safe/cracked)
Wszystko po średniku zostanie zignorowane, więc możesz tam wpisać swój wynik.
Jeśli przesłanie jest bezpieczne, umieść taki nagłówek:
# Language Name, safe, N programs, M bytes; Score ###
Jeśli jest pęknięty, umieść taki nagłówek:
# Language Name, [cracked](link-to-crack), N programs, M bytes; Score -16
|||
powiedzmy), a następnie zastąpić N
kod w ciągu zawierającym separator, np "|||"
. (@Eridan może włączyć to do wyzwania.)