Uwaga: To jest wątek gliniarzy , w którym należy opublikować kodowany kod. Oto wątek złodziei, w którym należy opublikować złamane źródło i połączyć je z odpowiedzią policjanta.
Zadanie: Napisz najkrótszy bezpieczny program, który zwielokrotnia pierwiastek kwadratowy z liczby całkowitej n przez kwadrat n
To gliniarze i rabusie , więc zasady są następujące:
- W swojej odpowiedzi opublikuj zakodowaną wersję kodu źródłowego (znaki należy pisać w dowolnej kolejności). Wersja kodowana nie powinna działać!
- Możesz przyjmować dane wejściowe w dowolny standardowy sposób, to samo dotyczy wyników. Kodowanie jest zabronione
- Po włamaniu kodu przez złodziei (jeśli tak się stanie), musisz wspomnieć, że Twój kod został złamany w twoim tytule i dodać spoiler do treści odpowiedzi swoim dokładnym kodem
- To samo dotyczy bezpiecznych odpowiedzi (wspomnij, że jest bezpieczny i dodaj spoiler )
- Kod jest uważany za bezpieczny, jeśli nikt go nie złamał w ciągu 5 dni od opublikowania i można go opcjonalnie podać w tytule
- Musisz określić język programowania
- Powinieneś określić liczbę bajtów
- W odpowiedzi należy podać mechanizm zaokrąglania (patrz poniżej)
Możesz założyć, że wynik jest mniejszy niż 2 32, a n jest zawsze dodatnie. Jeśli wynikiem jest liczba całkowita, musisz zwrócić dokładną wartość z kropką dziesiętną lub bez; w przeciwnym razie minimalna precyzja dziesiętna będzie wynosić 3 miejsca dziesiętne z dowolnym wybranym mechanizmem zaokrąglania, ale może obejmować więcej. W odpowiedzi należy podać mechanizm zaokrąglania. Nie możesz zwracać jako ułamków (pary licznik, mianownik - przepraszam, Bash!)
Przykłady:
In -> Out
4 -> 32.0 (or 32)
6 -> 88.18163074019441 (or 88.182 following the rules above)
9 -> 243.0
25 -> 3125.0
Najkrótsza bezpieczna odpowiedź do końca kwietnia zostanie uznana za zwycięzcę.
źródło
Odpowiedzi:
05AB1E, 20 bajtów - bezpieczny
Kolejne zupełnie inne podejście od moich poprzednich odpowiedzi.
Bez zaokrąglania.
Przykład działa
Nie mam wątpliwości, że @Emigna rozbije to w mgnieniu oka, ale eh, trzeba spróbować! :-RE
Rozwiązanie
Wykorzystuje to fakt, że ta sekwencja:
u_0 = 1, u_ {n + 1} = u_n * (u_n ^ 2 + 3 x) / (3 u_n ^ 2 + x)
jest zbieżny do sqrt (x) i sześciennie szybki (przepraszam, nie znalazłem sposobu formatowania równań matematycznych w PCG).
Szczegółowe wyjaśnienie
Wypróbuj online!
źródło
Python 3 , 44 bajty ( pęknięty )
Bez zaokrąglania. Dokładność zmiennoprzecinkowa.
źródło
MATL , 12 bajtów ( spolszczenie @tehtmi )
Bez zaokrąglania; używa zmiennoprzecinkowego.
Zamierzone rozwiązanie (inne niż znalezione przez @tehtmi):
Wyjaśnienie
źródło
Röda , 28 bajtów ( Cracked bytetemi )
Zwróć uwagę na spację na początku. Bez zaokrąglania, ale używa liczb zmiennoprzecinkowych, więc precyzja jest ograniczona.
źródło
Perl, 42 bajty (bezpieczny)
Jest 41 bajtów kodu i
-p
flagi (brak innych flag).Wynik nie jest zaokrąglany (a raczej zaokrąglany w górę do tego samego punktu, który Perl wykonałby zaokrąglając w górę
$_ = (sqrt $_) * ($_ ** 2)
).Rozwiązanie:
Wyjaśnienie:
źródło
$_=
. Ieval
gdzieś jest. (to niewiele, ale wydaje mi się, że nie mogę dać ci więcej bez podania zbyt dużej ilości informacji)Oktawa, 43 bajty (sejf)
Jest to skrypt wymagający wprowadzania z wiersza poleceń (nie jest to funkcja). To dokładność zmiennoprzecinkowa (więc nie ma zaokrąglania).
Rozwiązanie:
Wyjaśnienie:
źródło
C, 50 bajtów ( Cracked przez fergusq )
Wykorzystuje standardowe zaokrąglanie IEEE754. Jak zauważono w odpowiedzi fergusq, może to wymagać w
-lm
zależności od kompilatora.źródło
Mathematica, 131 bajtów, niekonkurujący ?, pęknięty
To zostało złamane przez @ lanlock4 ! Nadal jednak mam punkty internetowe, które mogę obdarzyć kogoś, kto znajdzie oryginalne rozwiązanie, w którym wszystkie postacie są rzeczywiście potrzebne ....
To jest przeznaczone jako łamigłówka. Chociaż możesz użyć powyższych znaków, jak chcesz, na pewno zamierzam, aby odpowiedź była zgodna z formularzem
gdzie pierwsza i trzecia linia są tylko opakowaniem, aby zaokrąglanie i wyświetlanie były legalne (zapisuje każde wyjście dokładnie do trzech miejsc po przecinku, zaokrąglone), a druga linia to kodowana wersja wnętrzności kodu. Przykładowe wyniki:
(Mathematica to niewolne oprogramowanie, ale istnieje piaskownica Wolfram, w której można przetestować niewielkie ilości kodu. Na przykład wycinanie i wklejanie kodu
definiuje funkcję, którą można następnie wywołać jak
f@6
lubf[9]
, która robi to samo, co nieszyfrowana wersja powyższego kodu. Czy to naprawdę musi być niekonkurencyjne?)źródło
Swift - 64 bajty (bezpieczny)
Bez zaokrąglania i wyświetla
.0
nawet, jeśli wynikiem jest liczba całkowita.źródło
Haskell, 16 bajtów ( Cracked bynimi )
Bez szczególnego zaokrąglenia
źródło
R, 28 bajtów ( Cracked przez @Flounderer )
Standardowa dokładność zmiennoprzecinkowa R.
źródło
C #, 172 bajtów ( Cracked przez SLuck49 )
Ten kod jest pełnym programem.
Na początku jest siedem znaków spacji.
Dane wejściowe są odczytywane ze STDIN i drukowane do STDOUT. Wynik jest w
double
, nie zaokrąglono.Niegolfowany kod oryginalny:
źródło
JavaScript (ES7), 20 bajtów ( Cracked przez @IlmariKaronen )
Standardowa precyzja JavaScript.
źródło
Python 2, 60 Bytes ( Cracked by @notjagan )
Nie wymaga zaokrąglania. Dokładne do 10 cyfr dziesiętnych.
źródło
Python 3.6, 59 bajtów
Bez zaokrąglania. Dokładność zmiennoprzecinkowa.
źródło
Haskell, 64 bajty, ( cracked by Laikoni )
Standardowe operacje zmiennoprzecinkowe Haskell.
Moja oryginalna wersja to:
źródło
Fourier ,
124119 bajtówNie ma białych znaków ani znaków nowej linii.
Pierwiastek kwadratowy jest zaokrąglany do najbliższej liczby całkowitej, ponieważ Fourier nie wydaje się obsługiwać niczego innego niż liczby całkowite (a ponieważ @ATaco uzyskało pozwolenie, mam nadzieję, że jest to w porządku)
naprawiono błąd edycji, jeśli już to łamałeś, poprzedni działał
Uświadomiłem sobie, że źle zrozumiałem część kodu i używałem więcej znaków, niż potrzebowałem
Jeśli coś przeoczyłem, daj mi znać
źródło
Poinformuj 7 , 71 bajtów ( Cracked przez @Ilmari Karonen )
Kod zawiera 17 spacji i 2 nowe wiersze. Jest to pełny program Infrom 7 definiujący funkcję, która drukuje wynik z dokładnością do 5 miejsc po przecinku.
źródło
R, 19 bajtów (Cracked przez @Steadybox)
Standardowe zaokrąglenie
R, 33 bajty (Pęknięty przez @plannapus)
R, 31 bajtów (Pęknięty przez @plannapus)
h=f`l`u`n`c`t`i`o`n([],[])^(.9)
źródło
Oktawa, 30 bajtów (bezpieczny)
Trochę prostsze niż moje pierwsze. Nie powinno to być zbyt trudne, ale mam nadzieję, że to zabawna łamigłówka.
źródło
^
? Hmmm ...@(e)(e**((i/(i+i))+~sum(e:j)))
ale to tylkon^1.5
... ten jest podstępny.Ohm, 11 bajtów
Użyj z
-c
flagą. Wykorzystuje kodowanie CP-437.źródło
OCaml , 13 bajtów ( Cracked by @Dada )
Bez zaokrąglania (w zakresie IEEE 754).
źródło
JavaScript, 123 bajty, Cracked przez notjagan
Ten kod jest pełną funkcją
Na początku listy znaków znajduje się jedna spacja
Zaokrąglenie tej odpowiedzi jest precyzją zmiennoprzecinkową dla Javascript, dokładność mieści się w granicach 10 ^ -6 dla każdej odpowiedzi.
Skróciłem się, ponieważ precyzja nie musiała być utrzymywana na tak wysokim poziomie, jak myślałem.
Uświadomiłem sobie, że będzie to o wiele łatwiejsze do rozwiązania niż początkowo to zrobiłem, ale już tam było: P.
Kod początkowy:
Metoda Newtona zastosowana 5 razy od najbliższej potęgi 2
źródło
Python 3.6 - 52 bajty ( spolszczenie @xnor )
Standardowe zaokrąglanie w języku Python
źródło
Ruby, 35 bajtów (cracked przez xsot )
Bez zaokrąglania. Dokładność zmiennoprzecinkowa.
źródło
05AB1E , 47 bajtów
Nie zaokrągla, używa dokładności zmiennoprzecinkowej.
źródło
CJam, 8 bajtów ( Cracked by E
nmigmna )Bez zaokrąglania. Wykorzystuje podwójną precyzję.
źródło
R, 32 bajty ( Pęknięty przez @plannapus )
Standardowa dokładność zmiennoprzecinkowa.
źródło
Excel, 26 bajtów
Bez zaokrąglania.
Uwaga: Ponieważ Excel jest oprogramowaniem płatnym, działa to również w bezpłatnym pakiecie LibreOffice
źródło
RProgN 2 , 6 bajtów ( Cracked przez @notjagan )
Bez zaokrąglania, wyświetla wiele miejsc po przecinku. Nie wyświetla żadnego dla rozwiązania liczb całkowitych.
źródło
n²√n
? Mogę to łatwo obliczyćn² + √n
, ale przez całe życie nie widzę, jak masz pomnożyć warunki.