To jest wątek gliniarzy. Wątek rabusiów idzie tutaj .
Ostatni wątek gliniarzy i rabusiów był już 4 miesiące temu .
Zadanie gliniarza
- Zadaniem gliniarza jest napisanie programu / funkcji, która przyjmuje dodatnią (lub nieujemną) liczbę całkowitą i wysyła / zwraca inną liczbę całkowitą.
- Policjant musi to stwierdzić, jeśli program nie toleruje zera.
- Policjant zapewni co najmniej 2 przykładowe wejścia / wyjścia.
- Na przykład, jeśli zdecyduję się napisać sekwencję Fibonacciego , zapisałbym to w mojej odpowiedzi:
a (0) zwraca 0 a (3) zwraca 2
- Liczba przykładów zależy od uznania policjanta.
- Jednak sekwencja musi faktycznie istnieć w Encyklopedii liczb całkowitych on-line® , aby nie było dla ciebie generatora liczb pseudolosowych.
:(
- Policjant może ukryć tyle znaków, ile sobie życzy.
- Na przykład, jeśli mój program to:
function a(n)
if n>2 then
return n
else
return a(n-1) + a(n-2)
end
end
- Potem chowałbym te postacie, jak chcę:
function a(n)
if ### then
########
else
######################
end
end
Zadanie rabusia
- jest oczywiście znalezienie oryginalnego kodu źródłowego.
- Jednak każdy proponowany kod źródłowy, który generuje ten sam zestaw danych wyjściowych, również jest uznawany za ważny, o ile znajduje się również w OEIS.
Wskazówki dla gliniarzy
Funkcja wyszukiwania w OEIS działa tylko dla następujących po sobie haseł, więc jeśli chcesz ukryć sekwencję, po prostu zostaw dziurę w dowolnym miejscu.- Najwyraźniej nie ma sposobu na ukrycie sekwencji. Pamiętaj o tym, wybierając sekwencję.
Twój wynik to liczba bajtów w kodzie.
Zwycięzcą zostanie zgłoszenie o najniższym wyniku, który nie został złamany w ciągu 7 dni.
Tylko zgłoszenia przesłane w kwietniu 2016 r. Kwalifikują się do wygranej. Zgłoszenia przesłane później są mile widziane, ale nie można wygrać.
Aby ubiegać się o zwycięstwo, musisz ujawnić pełny kod i sekwencję OEIS (po 7 dniach).
Twój post powinien być sformatowany w następujący sposób (NN to liczba znaków):
Lua, 98 bajtów
Wynik:
a(0) returns 0
a(3) returns 2
Kod ( #
oznacza nieujawnione znaki):
function a(n)
if ### then
########
else
######################
end
end
Jeśli kod jest pęknięty, wstaw go [Cracked](link to cracker)
w nagłówku. Jeśli przesłanie jest bezpieczne, wstaw „Bezpieczny” w nagłówku i ujawnij pełny kod w swojej odpowiedzi. Tylko odpowiedzi, które ujawniły pełny kod, będą kwalifikować się do wygranej.
źródło
_
,a(1000)
? (który jest częścią sekwencji, ale jest zbyt duży, aby można go było przeszukiwać w OEIS)Odpowiedzi:
Vim, 36 naciśnięć klawiszy - Bezpiecznie!
(Uwaga:
<n>
tam wpisujesz dane wejściowe)Oto kod niezwiązany z generowaniem liczb:
Czyli ujawniam 5 z 19 znaków.
<n>
jest wejściem. Oto kilka przykładowych wyników:Odpowiedź
Ten kod drukuje Liczby Lucasa ( A000032 ), które są jak Sekwencja Fibonnaci, tyle że zaczyna się od
2, 1
zamiast1, 1
. Oto pierwsze 15 liczb:Oto ujawniony kod:
Wyjaśnienie:
Objaśnienie makra:
Teraz musimy tylko usunąć drugi numer, ponieważ pierwszy numer to numer Lucas, którego chcemy. Tak robimy
Ponadto, jeśli się nie mylę, jest to pierwsze bezpieczne przesłanie! To trochę fajne.
źródło
bD
na końcu, wyjście to tylko jedna liczba i dodatkowe spacje.05AB1E , 5 bajtów, bezpieczny
Ostatni na dziś: str. Wynik:
Kod:
Zaciemnione znaki są oznaczone symbolem
_
. Wypróbuj online! -połączyć. Wykorzystuje kodowanie CP-1252 .Rozwiązanie:
Wyjaśnienie:
Wypróbuj online! lub Wypróbuj dla wszystkich przypadków testowych! .
źródło
g°<¹-
ale nie mogę wymyślić żadnego sposobu użyciam
tego rozmiaru! D:Element , 7 bajtów, pęknięty
Wynik:
Są
#
to ukryte znaki i wszystkie można wydrukować w formacie ASCII. Myślę, że ten jest w rzeczywistości dość trudny (mając tylko 5 brakujących postaci).Dla wygody oto strony wiki Try It Online i Esolang .
Mój oryginalny program to:
Sztuka polega na tym
źródło
}
zamiast]
?}
Jest poprawny, a mój program (o ile wiem) działa w każdej wersji elementu.Jolf , 5 bajtów, pęknięty
Wynik:
Wszystko to jest kluczowe i pokazałem 1 z 5.
Oryginalny kod:
Wypróbuj online!
źródło
JavaScript (ES7), 10 bajtów, pęknięty
Wydajność
Kod
Testuj to w Firefoksie co noc. Kod jest funkcją anonimową. Prawdopodobnie będzie to łatwe, ponieważ ukryte są tylko trzy postacie, ale przynajmniej są krótkie! : P
Mój oryginalny kod to:
ale po brutalnym wymuszeniu własnego kodu dla rozwiązania, szybko się zorientowałem
można również użyć. Działa to, ponieważ
źródło
**
jest to równoważneMath.pow
, przeprowadziłem niektóre własne testy, a nawet uruchomiłem brutalną siłę. Trudno to złamać!05AB1E, 4 bajty ( pęknięty )
Przykładowe dane wyjściowe:
A dla kodu:
Ujawniłem ostatni. Powinno to być dość łatwe, miałem trudności ze znalezieniem sekwencji :(
Wszystkie ukryte postacie można wydrukować.
źródło
MATL , 5 bajtów, pęknięty
Ukryte postacie są oznaczone symbolem
%
.Wynik:
Dane wejściowe
0
są prawidłowe.Oryginalny kod:
to jest,
źródło
SWIFT, 55 bajtów, pęknięty
*
oznacza ukrytą postaćWynik:
Funkcja akceptuje
0
źródło
Rubinowy, 46 bajtów, bezpieczny
Edytuj, aby dodać zastrzeżenie / przeprosiny: Ta sekwencja zaczyna się od f [0], podczas gdy pozycja OEIS zaczyna się od f [1]. Wartości są takie same.
Kod zaciemniony (
#
dowolny znak):Zadzwoń jak
Wynik:
Rozwiązanie:
Sekwencja:
Wyjaśnienie:
źródło
05AB1E , 3 bajty, pęknięty
Wynik:
Ukryty kod:
Wypróbuj online, może się przydać.
źródło
Sześciokąt , 7 bajtów, pęknięty
Wynik:
Ukryty kod:
Lub alternatywnie:
Wypróbuj online, może się przydać.
źródło
0
?PHP, 41 bajtów, pęknięty
Tak, wreszcie kolejne wyzwanie dla gliniarzy i rabusiów. Mam nadzieję, że nie ułatwiłem.
Wydajność
Źródło
Notatki
Pęknięty
Oczywiście zrobiłem to łatwo i podałem za mało przykładów. Sekwencja, którą miałem na myśli, to A010054 :
Oto mój oryginalny kod źródłowy:
Sprawdza, czy dane wejściowe są liczbą trójkątną i
1
czy0
odpowiednio.źródło
Jolf, 11 bajtów, Cracked , A011551
Oryginalny kod:
Przykłady:
źródło
MATL, 9 bajtów, pęknięty
Kod:
Wynik:
a(0)
jest ważny.Pęknięty
Oryginalna sekwencja: A059563
Oryginalny kod:
źródło
Java, 479 bajtów, Pęknięty
Wyjścia:
(Dane wejściowe są dostarczane za pomocą argumentów wiersza poleceń)
Kod (
#
oznacza ukryte znaki):Program zaczyna się od indeksu 0.
(Zauważ, że SE zamienia wszystkie
\t
wcięcia na 4 spacje, dzięki czemu bajt ma w sumie 569. Kliknij tutaj, aby zobaczyć program z\t
wcięciami zamiast wcięć.)Oryginalny kod:
(Ten sam kod, ale sformatowany normalnie):
źródło
i
do}
? I proszę podać tolerancję 0.a(9)
ia(19)
luba(8)
ia(18)
, zgodnie z którą wersją nim na OEIS wziąłeś?Oktawa, 34 bajty, pęknięty
Wyjścia:
Sekwencja zaczyna się
ans(1)
w OEIS.źródło
C, pęknięty 71 bajtów
Wynik:
Działa to z gcc i jest pełnym programem. Przyjmuje 0 jako dane wejściowe.
źródło
Pyth, 70 bajtów, Cracked
#
są ukrytymi postaciamiZostał złamany, więc oto wersja n bez ukrytych znaków:
Przykładowe wyniki:
Powodzenia w znalezieniu tego w OEIS, osobiście nie udało mi się go znaleźć na podstawie tych przykładów (nawet jeśli sekwencja jest dość łatwa do wykrycia).źródło
Ruby, 38 bajtów, pęknięty
Kod zaciemniony (
#
może być dowolnym znakiem):Wynik:
Mnoży wartość wejściową przez 10 (A008592). Działa dla dowolnej liczby całkowitej, w tym 0. np
źródło
05AB1E , 5 bajtów, pęknięty
Wynik:
Zaciemniony kod:
Wypróbuj online! -połączyć.
źródło
05AB1E , 4 bajty, pęknięty
Cóż, myślę, że jestem uzależniony od CnR ... zaciemniony kod (
_
wskazuje na dziką kartę):Sekwencja:
Sekwencja w OEIS zaczyna się od (1) = 2.
Wypróbuj online! -połączyć
źródło
Lua, 45 bajtów, pęknięty
Mała wskazówka:
Wydajność
Kod
Używa
#
do ukrywania kodu :).Korzystałem z OEIS A007814 z następującym kodem:
źródło
Pyke , 15 bajtów, BEZPIECZNY
Wydajność
Ujawniony kod:
Rozwiązanie:
źródło
C, 82 bajty, bezpieczne
Działa z gcc i jest to pełny program, który odczytuje dane wejściowe ze standardowego wejścia i wypisuje dane wyjściowe na standardowe wyjście. Tutaj sekwencja to
A004526, piętro (n / 2).Rozwiązanie:
Działa to tylko na małych komputerach Endian i tylko wtedy, gdy rozmiar
char
wynosi 1 bajt.I tylko jeśli bajt wyższy niż bajt najwyższego rzędu
a
ma wartość 0. Myślę, że dotyczy to gcc, ponieważ domyślnie niezainicjowane zmienne globalne przechodzą do segmentu bss, a zainicjowane zmienne globalne przechodzą do segmentu danych (patrz https: // stackoverflow.com/questions/8721475/if-a-global-variable-is-initialized-to-0-will-it-go-to-bss ).Więc
a
idzie tylko do bss (b
inicjowana jest tylko inna zmienna globalna, a zatem przechodzi do segmentu danych). Jeślia
nie znajduje się na końcu bss, to bajt wyższy niż bajt najwyższego rzędua
również jest w bss, a zatem ma wartość 0.źródło
05AB1E, 1 bajt, pęknięty
_
oznacza ukryty kod.źródło
Element , 10 bajtów, pęknięty
Wynik:
Prawdopodobnie istnieje tylko kilka sposobów na obliczenie tej sekwencji w elemencie. Znalazłem rozwiązanie 9-znakowe, ale pomyślałem, że to 10-znakowe rozwiązanie jest w rzeczywistości trudniejsze. Są
#
to ukryte postacie.Dla wygody oto strony wiki Try It Online i Esolang .
Oryginał był
źródło
Pyth , 18 bajtów
#
oznacza nie objawione znaki.Wyjścia (zaczyna się od
1
):Tłumacz online
źródło
05AB1E , 5 bajtów, pęknięty
Mam nadzieję, że to zgłoszenie nie jest tak łatwe jak moje inne: str. Wyjścia:
Zaciemniony kod:
Zawiera jednak niektóre znaki spoza ASCII, wykorzystuje kodowanie CP-1252 .
Wypróbuj online! może się przydać: str.
źródło
Jolf , 11 bajtów, pęknięty .
Wynik:
I częściowo ukryty kod:
Wskazówka:
Pęknięta wersja nie jest dokładnie taka sama jak mój oryginalny kod. Obecnie nie jestem przy komputerze, więc nie mam go dokładnie, ale było coś takiego:
(Jedyne, czego nie jestem pewien, to
!m
. To wszystko sprawdza, czy zmienna ma wartość zero.)źródło
Pyke , 6 bajtów, pęknięty
Wynik:
To nie działa z N <1
Oryginalne rozwiązanie:
źródło