To wyzwanie zostało pierwotnie wykonane w piaskownicy przez Magic Octopus Urn; Przyjąłem i opublikowałem za jego zgodą.
To jest wątek gliniarzy. Wątek rabusiów jest tutaj .
Wyzwanie
- Krok pierwszy: napisać kawałek kodu (funkcja lub pełny program), który sprawdza pierwszości .
- Krok drugi: Usuń fragmenty kodu, zastępując znaki symbolem
█
. - Krok trzeci: Opublikuj zredagowany kod w wątku gliniarzy.
- Krok czwarty: Zaczekaj na złamanie kodu i spróbuj złamać kod innej osoby.
Na przykład kod Groovy {it.isPrime()}
może zostać {██.is█████()}
. (Ten byłby głupio łatwy do złamania; wiem też, że .isPrime()
nie jest to metoda Groovy).
Punktacja
Musisz dołączyć wynik swojego programu do jego przesłania. Wynik jest definiowany jako stosunek zredagowanych znaków do znaków. Więc jeśli twój program miał 20 znaków, a 5 zostało zredagowanych, twój wynik wyniósłby 0,25. Powyższy kod Groovy miałby wynik 0,5.
Zasady
- Twój program musi obsługiwać tylko liczby całkowite dodatnie. Powinien wyprowadzać prawdziwą wartość, jeśli liczba jest liczbą pierwszą, aw przeciwnym razie wartość fałsz. Podaj w swojej odpowiedzi, jakie dane wyjściowe.
- Twój kod nie może zawierać żadnych komentarzy ani niepotrzebnych białych znaków.
- Bez haszowania ani kryptograficznego zaciemniania.
- Twój kod może być nie więcej niż 50% zredagowany (co najmniej 1/2 znaków musi być pokazana). Oznacza to, że najwyższy możliwy wynik to 0,5.
- Jeśli twoja odpowiedź nie zostanie złamana w ciągu tygodnia, możesz oznaczyć ją jako bezpieczną i edytować w zamierzonym pęknięciu.
Zwycięski
Zwycięzca otrzyma nieskradzioną odpowiedź o najniższej liczbie punktów w ciągu dwóch tygodni od opublikowania. W przypadku remisu wygra ten, który ma najwięcej głosów. Wątek ten jest zawsze otwarty na więcej zgłoszeń, ale zwycięzca wybrany po dwóch tygodniach będzie stały.
n >= 1
czy wszystkie liczby całkowite?)Odpowiedzi:
Functoid , wynik = 14/223 ≈ 0,062780 [bezpieczny]
Zajmuje wejście jako argument wiersza polecenia i wyjść
True
(prime) lubFalse
, spróbuj go w Internecie!Wskazówka (dodana 4 dni po opublikowaniu):
Rozwiązanie
Wypróbuj online!
Wyjaśnienie
Ze względu na losowość wynikającą z
?
tego nie można spłaszczyć programu. Oto płaski program ze znakiem zapytania, w którym będzie wyrażenie losowe:Pełny program:
{trial_division}
:{recursive_call}
, biorąc argumentyf
(samookreślenie)x
iy
(uwaga0
jest taka sama jakFalse
){divides}
jest?(yg(KZ)(C(C(BB(BS(b(C(BBI)I))))(C(BC(b(C(BBI)I)))I))(C-)))
, gdy?
jest wybierana losowo (w zależności od kierunku losowych) z:Y
S(CBO)(CBO)
S(SB(KO))(BBSBKO)
Wszystkie są sobie równe, więc
{divides}
staje się punktem stałym dla:{recursive_call}
jest dość zaciemnionym wyrazem, który po prostu robif x (y-x)
źródło
8086 DOS COM, 87 bajtów, wynik 19/87 ~ = 0,2183
Pęknięty przez NieDzejkoba
To jest program COM; oczekuje liczby jako argumentu wiersza poleceń, wyprowadza Y lub N. Limit: 65535, ponieważ 16-bitowy procesor (sizeof (int) wynosiłby 2). Nowa linia to 0x0D 0x0A na tej platformie. Tak, liczysz 20 █ zamiast 19 █. Jeden z nich to prawdziwy █ i nie został zastąpiony. Muhahaha.
Spacja w pozycji 10 jest tak naprawdę bajtem NUL. Symbol NUL jest taki sam, jak spacja w starej czcionce VGA.
źródło
╛üX
na samym początku jestmov si, 0x5881
.Szybki 4 , wynik 26/170 ≈ 0,153, bezpieczny
Wypróbuj online!
Zamierzone pęknięcie
Nie golfił
źródło
brainfuck , 37/540 bajtów (wynik: 0,06851) ( Cracked przez Nitrodon)
Wypróbuj online!
Drukuje „pierwszą”, jeśli pierwsza, „nie pierwszą”, jeśli złożona. Technicznie działa dla dowolnych liczb całkowitych, ale przekracza limit czasu dla TIO dla liczb powyżej 6000
źródło
Mathematica, 97 bajtów, wynik 0,2989690722 ( pęknięty )
Smyczki! Regex! Liczby pierwsze?
Nie ma czegoś takiego jak pierwszości sprawdzania regex, ale nie jest to co dzieje się tutaj.
Zostało to złamane , ale sposób, który zamierzałem, był zupełnie inny, więc nie ujawnię jeszcze zamierzonego rozwiązania.
źródło
Galaretka , wynik 0. (142857) ( pęknięty )
Wypróbuj online!
Repost mojej drugiej odpowiedzi, tym razem z kilkoma odkrytymi bajtami, aby uniknąć niezamierzonych oszustw.
źródło
Oktawa , wynik: 0,15 (86 bajtów)
Ujawniłem kilka innych postaci. Myślałem, że kryterium zwycięstwa był najwyższy wynik, a nie najniższy .
Wypróbuj online!
Powodzenia =)
źródło
Python 3, 388 bajtów, .155, pęknięty
Crack w ostatniej chwili. Tak, to jest test Millera-Rabina.
Przypuszczam, że testy probabilistyczne są dozwolone, niepewność 2 ^ -100
Cóż, świetna wskazówka w poprzednim zdaniu
Ustawiono zwracaną wartość 0 jako KOMPOZYTOWĄ i 1 jako PRAWDOPODOBNIE PRIME
* 368> 388: Naprawiono problem, gdy z <4
Rozwiązanie:
źródło
"COMPOSITE"
naruszają ducha reguły „Twój kod nie może zawierać żadnych komentarzy ani niepotrzebnych białych znaków”.095 , wynik 0.20512820512 [Bezpieczny]
Drukuje 1 jeśli pierwsza, 0 jeśli kompozytowa
Rozwiązanie:
źródło
Węzeł JavaScript, wynik: 0,4
Oto gdzie to działa. Pełny program, który pobiera dane wejściowe z pierwszego argumentu wiersza poleceń i wyświetla dane wyjściowe na standardowe wyjście.
Mamy nadzieję, że niezbyt trudne rozwiązanie na początek.
Korzystanie z tego fragmentu kodu do obliczania wyniku.
źródło
Galaretka , wynik 0. (142857)
Wypróbuj online!
Bierze argument wiersza polecenia.
Fałsz =
0
prawda =
1
źródło
JavaScript, 103 bajty, wynik 0,1923
x=>{if(x<4)return(!0);for(y=x>>>Math.log10(p=████;--y-1;(p=x/y%1)████if(██&&(███))break████return(███)}
Zwraca wartość logiczną.
Niezamierzone pęknięcie
źródło
JavaScript, wynik 0,1894093686354379
Powodzenia. : p
dzwoń do liczby pierwszej, którą chcesz sprawdzić.
źródło
t
.> <>, wynik 0,096, złamany przez Jo Kinga
Zamierzone pęknięcie:
źródło
v
jest bezwarunkową nieskończoną pętlą?Brain-Flak, wynik: 35/134 = 0,2612 ( pęknięty! )
(({████){██[████)█>(({}))<>}<>{}███{}((██({}))█████{}]██)({}(<>))<>{(({})){({}[()])<>}{}}{}<>([{}()]{})██[██()██(()█[()]██{}██}{}<>{})
Zwraca 1 dla liczby pierwszej, 0 dla kompozytu.
Jest to bardzo trudny język do wypróbowania tego wyzwania, ponieważ formatowanie jest tak ograniczone, że nie trzeba ujawniać, czym jest brakujący znak.
Jest to bardzo trudny język do rozwiązania tego wyzwania, ponieważ jest absurdalnie trudny do odczytania.
źródło
Java 1.4+ , 24/145 (0.16551724137)
Wypróbuj online!
Najdziwniejszy sposób, w jaki widziałem sprawdzanie kodu w Javie zdecydowanie lol.
źródło
Japt, 19 bajtów, 0,315789 ... wynik, bezpieczny
Nie wiem, czy zasłoniłem to więcej, niż potrzebowałem, co kosztowało mnie lepszy wynik.
View solution (Wyjaśnienie wkrótce)
źródło
C, 34/76 = 0,447368, bezpieczny
Posiadanie tak wielu pustych miejsc oznacza, że będę o wiele bardziej narażony na niezamierzone pęknięcie niż zamierzone.
Rozwiązanie:
wyjaśnienie:
źródło
M , wynik: 4/22 = .1818 ..., pęknięty przez Dennisa
To może skończyć się niezamierzonym pęknięciem, musimy to zobaczyć.Tak było.Rozwiązania Dennisa to
Wypróbuj online!
Pozostawię swoje rozwiązanie ukryte, aby ktoś mógł je złamać. Moją wskazówką dla Dennisa na temat jego złodzieja było słowo „zoo”.
źródło
C, 66 bajtów, 29 zredagowane, wynik 0,439
Po prostu proste przesłanie C; Zobaczę, jak długo to potrwa, zanim opublikuję naprawdę zły.
źródło
Pyth, score: ~0.(461538) (13 bytes) (Cracked)
Try to crack it here!
źródło
sh + coreutils, score 19 / 143 ~= 0.1328
cracked
TIO
źródło
Brain-Flak, score 29 / 140 = 0.207
({}██()██<>){██({}[()])██{}{}███({<({}[()])><>({})<>}{}██████{}██){(({})){({}[()])<>}{}}<>([{}()]{}<>{})<>}(<>██{}({}████)((){[()]██{}██}{})
Try it online!
Outputs 1 for prime and 0 for non-prime.
źródło
Tampio (imperative), score: 24/51 = 0.5
This is an obvious solution, I hope no one here understands Finnish.
źródło
Tampio (imperative), score: 26/223 = 0.11659...
źródło
Pyt, score: 0.288288... [Safe]
Outputs "True" if prime, "False" if not
Forgot to mention that it is a probabilistic test.
Solution:
This implements the Solovay-Strassen primality test.
Try it online here!
źródło
Ruby, 27/73 = 0.369863
This should be fun.
źródło
Python 3, score: 0.386363, cracked
Going for the really low hanging fruit at first. I'll come up with a cheeky answer soon.
user71546 made it "work" with
...but that was unintended. Original code was
Neither work for x<2, turns out. Oops.
źródło
JavaScript (ES7), 297 bytes, 103 redacted, .347
My previous Python answer was too straightforward, so here's an evil one ;)
The logic behind is straightforward though.
źródło