To wątek złodziei. Przejdź do wątku gliniarzy tutaj .
Wprowadzenie
W tym wyzwaniu dla gliniarzy / rabusiów gliniarze napiszą programy produkujące dane wyjściowe i przeplatają je razem. Zadaniem rabusia jest rozróżnienie programów gliniarzy w celu uzyskania pożądanych rezultatów.
Rabuś rządzi
Rabusie spróbują znaleźć różne programy, które ludzie zamieszczają w wątkach gliniarzy (link powyżej). Jeśli złodziej rozwiązuje kod gliniarza, musi opublikować oddzielne programy i dopasować je do swoich wyników w odpowiedzi tutaj i napisać, że złamał kod w odpowiedzi policjanta.
Punktacja
Istnieją dwa składniki, które są dodawane razem podczas oceniania pękniętego przesłania.
- 2 do potęgi liczby różnych programów użytych w odpowiedzi policjanta
- Zaokrąglij liczbę bajtów w przeplataniu w dół do najbliższej potęgi 2.
Na przykład, jeśli złodziej pęknie TIliGoEnR
jako TIGER
i lion
, wtedy rabuś otrzymuje 2 ^ 2 + 8 = 12 punktów.
Zwycięzcą wyzwania złodziei będzie osoba, która zdobędzie najwięcej punktów po upływie wystarczającego czasu na uczestnictwo.
(Kto chce pomóc z fragmentem?)
źródło
BitShift , 2 ^ 2 + 64 = 68 punktów
policja wątku
odciski
! ?
odciski
? !
Kod
Później dodam opis (podziel kod na części drukujące poszczególne części)
źródło
2^programs + 256/bytes=points
. W tym przypadku jest2^2 + 256/128=6 points
. Myślę, że zostanie to zredagowane, ponieważ obecnie mniej programów z liczbą bajtów otrzymuje wyższą premię dla złodziei. Co jest nie takPHP , 68 punktów
Wynik:
Array
Wynik:
\^/\]co\[\$
Podoba mi się to zgłoszenie, ponieważ opiera się na kilku mniej znanych funkcjach - można powiedzieć, że są błędne - PHP. PHP pozwala przypisywać odwołania do funkcji do zmiennych, więc na przykład:
zrobiłby dokładnie to, czego oczekujesz. Jakby:
... z wyjątkiem tego, że nie robi tego, co myślisz.
$f = pow
nie przypisuje odwołania do funkcji$f
(miałoby to zbyt duży sens, prawda?), ale ciąg znaków'pow'
. Oznacza to, że dowolny ciąg znaków może być użyty jako wywołanie funkcji, jeśli reprezentuje nazwę zdefiniowanej funkcji. Zły kod czeka na zdarzenie. Nie wiem nawet, dlaczego chcesz na to pozwolić.Innym błędem PHP jest to, że nazwy funkcji i słowa kluczowe nie rozróżniają wielkości liter. Chciałbym żartować. Tak więc
echo pow(2, 4)
,ECHO POW(2, 4)
iEcHo PoW(2,4)
wszystkie są funkcjonalnie równoważne.Ostatnim błędem w prezentacji jest to, że za każdym razem, gdy tablica jest wpisywana jako ciąg, na przykład do drukowania, wynikiem jest zawsze niezwykle pomocny ciąg
Array
. Poświęć chwilę na zastanowienie się nad faktem, że ktoś rzeczywiście to zrobił celowo.Więc w pierwszym programie @insertusernamehere buduje ciąg
stR_split
, ten ciąg jest używany jako odwołanie do funkcji (które z powyższych powodów faktycznie działa), a wynik, tablica, jest generowany.źródło
Ruby , 68 punktów
Pierwszy:
Druga:
Wynikało to całkiem naturalnie z wypracowania końca
putc
.źródło
JavaScript, 68 punktów
Wątek gliniarzy
Pierwszy program
Wynik:
ffttff
Drugi program
Wynik:
1010
Przeplatający się
źródło
Java, 132 punkty
Wątek gliniarzy
Pierwszy program:
Drugi program:
Pierwszy program wyjściowy
Hell0
i drugi program wyjściowyBye!
źródło
JavaScript , 132 punkty
Program 1
Program 2
Uff To było okropne.
Po wielu debugowaniach dowiedziałem się, że po wywołaniu (części) drugiego programu nie uruchomi się ponownie. Wynika to z faktu, że zmienna globalna
f
została jeszcze przypisana. Zf
powodu przypisania try / catch nie powiodło sięObject.keys(f)
. Nie wiem, czy to podstępna sztuczka, czy niezamierzona, ale sprawiło mi to ból głowy.Ponadto uważam, że wyniki pierwszego programu są specyficzne dla platformy.
/../g
usuwa wszystkie znaki z mojego komputera, ponieważ wyrażenie regularne.
oznacza dowolny znak./\../g
Jednak uciekając od tego działa, mam nadzieję, że ktoś może rzucić na to więcej światła. Ponadto moje dane wyjściowe są podatne na błędy zaokrąglania, być może niektóre globalne zmienne javascript mogą to zmienić?Wynik
Zostało to przetestowane na chrome 46 (moja jedyna przeglądarka), Windows 7.
Mam nadzieję, że mimo różnych wyników jest to wciąż poprawny wniosek
źródło
JavaScript (ES6) , 68 punktów
Program 1
Program 2
Programy z przeplotem
Byłoby to o wiele trudniejsze, gdyby glina rozerwała słowa kluczowe. ;)
źródło
PHP , 24 punkty
Program 1
Program 2
Program 3
Testowane z http://sandbox.onlinephpfunctions.com/ .
źródło
Python 2 , 320 punktów
źródło