To policjanci i złodzieje, jeśli nie znasz formatu, kliknij znacznik, aby przejść do wiki. Dla tego pytania nie będzie wątku złodziei.
Gliny
Twoim zadaniem jako Cops jest wybranie dwóch sekwencji z Online Encyclopedia of Integer Sequences i napisanie programu, który przyjmuje n-ty element jednej sekwencji jako dane wejściowe i wysyła n-ty element drugiej sekwencji. Następnie udzielisz odpowiedzi zawierającej kod i pomijając wybrane sekwencje. Rabusie spróbują znaleźć sekwencje, które wybrałeś, a jeśli uda się znaleźć sekwencje, które masz na myśli, lub inne sekwencje, dla których twój program musisz oznaczyć jako Pęknięty . Jeśli złodziej poinformuje cię crack, który Twoim zdaniem jest nieważny, możesz przedstawić dowód, że nie jest to crack. W przeciwnym razie musisz to zaznaczyć.
Zgodnie ze zwykłymi odpowiedziami, które nie były łamane przez 7 dni, można je oznaczyć jako bezpieczne. Policjant może oznaczyć swoją odpowiedź jako bezpieczną, ujawniając sekwencje, które mieli na myśli. Gdy będzie to bezpieczne, odpowiedź nie będzie już mogła zostać złamana.
Celem jest zminimalizowanie liczby bajtów twojego programu, pozostając bez krakowania.
Przykład
Poniższy kod w języku Python tłumaczy n-ty element A000290 (liczby kwadratowe) na A000217 (liczby trójkątne):
lambda x:sum(range(0,int(x**.5+1)))
Postanowienia i wymagania
Jeśli wybierzesz sekwencję, dla której nie udowodniono, że jest skończona, musisz wypisać wszystkie warunki, które mogą istnieć, nie tylko te wymienione na stronie OEIS
Jako wyjątek od poprzednich języków reguł bez liczb całkowitych o nieskończonej precyzji, nie muszą one wypisywać ani wprowadzać liczb poza swoim zakresem.
Nie można udowodnić, że rozmiar sekwencji wejściowej jest mniejszy niż sekwencja wyjściowa.
Twoja sekwencja wejściowa nie może zawierać żadnych powtarzalnych elementów (w przeciwnym razie zadanie jest prawie niemożliwe)
OEIS zawiera indeks na swojej stronie (pierwszy numer po nagłówku „PRZESUNIĘCIE”) domyślnie jest to twoje przesunięcie dla n (n równa się indeksowi dla pierwszego elementu w sekwencji), jeśli wybierzesz inny indeks, który musisz podać w Twoja odpowiedź.
Jeśli wybierzesz przesunięcie inne niż wymienione w OEIS, nadal musisz odwzorować wszystkie elementy w sekwencji wejściowej na odpowiedni element w sekwencji wyjściowej.
Jeśli twój program odbiera dane wejściowe, które nie znajdują się w sekwencji wejściowej, może zrobić, co zechce (zachowanie niezdefiniowane). Jednak prawdopodobnie leży w najlepszym interesie użytkownika, aby nadal wypisywać liczbę całkowitą.
Celowe utrudnianie uruchamiania kodu jest niesportowe, ponieważ powoduje, że jego wykonanie jest czasochłonne, lub wybór niewolnego języka . Chociaż będę egzekwować to drugie, nie mogę obiektywnie egzekwować tego pierwszego. Jednak błagam cię, dla zabawy, abyś nie próbował tego pierwszego, ponieważ sprawia to wyzwanie szczególnie trudnym dla osób ze słabszymi komputerami.
Rabusie
Twoim zadaniem jako Złodziei jest wybranie nieskradzionych, niebezpiecznych odpowiedzi i znalezienie sekwencji między nimi. Jeśli znajdziesz rozwiązanie, które działa (niekoniecznie rozwiązanie zamierzone przez gliniarzy), skomentuj sekwencje odpowiedniej odpowiedzi.
Rabusie nie powinni się zbytnio przejmować weryfikacją, czy dwie konkretne sekwencje są rozwiązaniem, należy opublikować rozwiązanie, jeśli pasuje do wszystkich wpisów w OEIS. Jeśli nie jest to kolejność, o której gliniarz miał na myśli, może on przedstawić dowód, że jest niepoprawny, lub oznaczyć go jako pęknięty, jeśli nie może go znaleźć.
źródło
Odpowiedzi:
Galaretka , 14 bajtów (Pęknięty przez @Wolfram)
Wypróbuj online!
To, co to robi, powinno być dość oczywiste. W rzeczywistości, z korzyścią dla użytkowników innych niż Jelly, wyjaśnię nawet:
Wyjaśnienie
Pytanie brzmi: dlaczego to robi?
Pęknięcie
Omawiane sekwencje to A201647 i A201647 . Są skończone i różnią się tylko dwoma ostatnimi elementami:
Tak więc, jeśli sygnał wejściowy jest niski, pozostawiam go bez zmian i po prostu dopasowuję funkcję do transformacji dwóch ostatnich.
źródło
Galaretka , 7 bajtów (Pęknięty przez @JonathanAllan)
Wypróbuj online!
Co to robi
źródło
p
,ÆF
rentowności(p,1)
iÆd
wydajności2
, więcḅ
dostaje nam2p+1
, co oznacza,ÆẸ
przyniesie pierwszy Prime2
, podniesiony do potęgi tego wyniku2^(2p+1)
.Python 3, 256 bajtów ( Cracked! )
Wypróbuj online!
Przepraszam, jeśli ten kod wygląda przerażająco, myślę, że to mój pierwszy golf Python. Rzutowanie w Pythonie ułatwia kodowanie.
źródło
q
?k
wydaje się być nieużywana, więc możesz zapisać niektóre bajty, usuwając ją.Przetwarzanie , 184 bajty, BEZPIECZNIE!
Funkcja, która przyjmuje int i zwraca int. Tak długo, jak liczba wejściowa znajduje się w
int
zakresie, program powinien działać poprawnie.To nie jest powolne, po prostu nieczytelne. Powodzenia!
Dziwi mnie, że to zgłoszenie trwało tak długo. No cóż, przynajmniej to pierwsze bezpieczne przesłanie :)
A000578 do A000290
Innymi słowy: kostki do kwadratów.
Wyjaśnienie
Podczas odpowiadania bez dołączonych ciągów (lub liczb) odkryłem listę stałych przetwarzania, które reprezentują liczby całkowite. Na przykład
CORNER
ma wartość0
. Pełna lista znajduje się tutaj . Aby znaleźć wartość stałej, możesz po prostuprint
zrobić.Korzystając z tego, postanowiłem zamienić niektóre liczby na kombinacje tych stałych, aby je zaciemnić. Oto, co otrzymujesz, zastępując stałe ich odpowiednimi wartościami int.
Nawet teraz pełny, przejrzysty kod nie jest ujawniany. Kolory pozostają. W Przetwarzaniu zmienne kolorów mają wartości int, na przykład biały (
#ffffff
) jest-1
,#fffffe
jest-2
,#fffffd
jest-3
i tak dalej. Można to znaleźć,print
wprowadzając kolor. Uprośćmy więc kolory.Jesteśmy w połowie drogi :) Aby zrozumieć wartości, musimy uprościć wyrażenia liczbowe.
O wiele jaśniej! Teraz uprośćmy logarytm.
Prawie koniec! Teraz musimy
(int)sqrt(red(color(-65536))/16))
rozgryźć to kęs.color(-65536)
jest czerwony, więcrgb(255, 0, 0)
. Terazred()
funkcja zwraca wartość argumentu czerwonego w argumencie (który jest kolorem). Ile jest czerwieni w kolorze czerwonym? Odpowiedź jest255
. Z tym otrzymujemyPodstawienie tego w programie powoduje:
Tak, gotowe!
Podsumowując, zwraca kwadrat (zrobiony przez dwukrotne pomnożenie w pętli for) pierwiastka z liczby wejściowej.
źródło
Mathematica (lub cokolwiek innego) - pęknięty!
Wiem, że Mathematica jest niewolnym oprogramowaniem, ale ta funkcja jest trywialna do przeniesienia na dowolny ulubiony język, w którym chcesz ją uruchomić. Dosłownie oblicza wartość podanego wielomianu stopnia 9 obliczoną na wejściowej liczbie całkowitej, a następnie przyjmuje iloraz liczby całkowitej tej wartości i 42-cyfrowej liczby w ostatnim wierszu. Na przykład
f[100]
ocenia na-3024847237
.źródło