Biorąc pod uwagę dane wyjściowe programu policjanta ( o
), liczbę bajtów ( n
) i liczbę c
użytych unikalnych bajtów ( ), otrzymujemy odpowiedni kawałek kodu o n
długości bajtów z c
unikalnymi bajtami, które pasują do danych wyjściowych policjanta o
.
To jest wątek gliniarzy . Opublikuj rozwiązania, które mają zostać tutaj złamane.
Wątek rabusie znajduje się tutaj .
Policjanci powinni opublikować takie rozwiązania:
#[Language], `n` Bytes, `c` Unique Bytes (c*n points) [Cracked](Link-To-Crack)
[Output]
---
(Optional spoiler)
Zasady
- Nie możesz przyjmować żadnych danych wejściowych dla swojego programu.
- Program musi używać co najmniej 1 bajtu, ale nie może przekraczać 255 bajtów.
- Sam wynik jest również ograniczony do 255 bajtów.
- Program musi mieć spójne wyniki wyjściowe przy wielokrotnym wykonywaniu.
- Jeśli zgłoszenie nie zostanie złamane w ciągu 7 dni, możesz oznaczyć je jako „bezpieczne”.
- Oznaczając je jako bezpieczne, opublikuj zamierzone rozwiązanie i oceń je jako
c*n
. - Oznacz odpowiedź jako „bezpieczną” tylko, jeśli naprawdę chcesz +15 za zaakceptowaną odpowiedź; fajniej jest zobaczyć, jak długo możesz przejść.
- Oznaczając je jako bezpieczne, opublikuj zamierzone rozwiązanie i oceń je jako
Zwycięski
- Niesprawdzony post z najniższym
c*n
wynikiem wygrywa wątek gliniarza. - Decyzja zostanie podjęta po 10 bezpiecznych odpowiedziach lub po kilku tygodniach.
Ostrzeżenia
- Jeśli czujesz się pewny siebie, możesz powiedzieć użytkownikowi algorytm za pomocą tagu spoiler .
Nieprzetworzone zgłoszenia:
fetch("https://api.stackexchange.com/2.2/questions/147635/answers?order=desc&sort=activity&site=codegolf&filter=!.Fjs-H6J36vlFcdkRGfButLhYEngU&key=kAc8QIHB*IqJDUFcjEF1KA((&pagesize=100").then(x=>x.json()).then(data=>{var res = data.items.filter(i=>!/^#.*cracked/im.test(i.body_markdown)).map(x=>{const matched = /^ ?#{1,3} ?(?:(?:(?:\[|<a href ?= ?".*?">)([^\]]+)(?:\]|<\/a>)(?:[\(\[][a-z0-9/:\.]+[\]\)])?)|([^, ]+)).*[^\d](\d+) ?\[?(?:.*(?:byte|block|codel)s?)(?:\](?:\(.+\))?)? ?(?:\(?(?!no[nt][ -]competing)\)?)?/gim.exec(x.body_markdown);if(!matched){return;}return {link: x.link, lang: matched[1] || matched[2], owner: x.owner}}).filter(Boolean).reverse().forEach(ans=>{var tr = document.createElement("tr");var add = (lang, link)=>{var td = document.createElement("td");var a = document.createElement("a");a.innerHTML = lang;a.href = link;td.appendChild(a);tr.appendChild(td);};add(ans.lang, ans.link);add(ans.owner.display_name, ans.owner.link);document.querySelector("tbody").appendChild(tr);});});
<html><body><h1>Uncracked Submissions</h1><table><thead><tr><th>Language</th><th>Author</th></tr></thead><tbody></tbody></table></body></html>
cops-and-robbers
Urna Magicznej Ośmiornicy
źródło
źródło
Odpowiedzi:
Haskell , 173 bajtów, 8 unikalnych, 1384 punktów, bezpieczny
Wygląda na to, że ta odpowiedź chce dostarczyć odpowiedni znacznik do pytania, używając tylko 8 różnych bajtów.
Jak zwykle Twoje rozwiązanie powinno działać, wklejając je w bloku kodu w TIO: Wypróbuj online!
Rozwiązanie
Tak, to jest poprawny kod Haskell: Wypróbuj online!
Jak to działa
Podkreślenie
_
jest używane jako symbol wieloznaczny w dopasowaniu wzoru Haskella.'
służy do znaków, np'a'
. Jednak zarówno_
i'
są również częścią dozwolonych znaków w nazwach identyfikatorów (w ramach pewnych ograniczeń, na przykład'
nie może występować na początku nazwy.). Dlatego__
,_'
,_'_
,_''
i tak dalej są wszystkie poprawne nazwy identyfikatorów. Używając bardziej opisowych nazw, powyższy kod staje sięPierwszy wiersz zwraca łańcuch,
"[tag:reverse_engineering]"
jeśli każda zmienna jest przypisana do poprawnego znaku. To zadanie jest osiągnięty w drugim wierszu:['_'..]
daje ciąg"_`abcdefghijklmnopqrstuvwxyz{|}~ ... "
, czarownica jest dopasowany na wzór_:_:a:_:_:_:e:_:g:_:i:_:_:_:_:n:_:_:_:r:s:t:_:v:_
, aby uzyskać pożądany zadaniea='a'
,e='e'
i tak dalej.źródło
Brain-Flak, 62 bajtów ogółem, 6 unikalnych, 372 punktów, Pęknięty
Oto twój wynik:
Jest coś wyjątkowego w tym numerze, ale nie ma go w OEIS ;)
Jeśli myślisz o użyciu narzędzia komputerowego do rozwiązania tego problemu, nie masz szczęścia, golfista z liczbą całkowitą otrzymuje 110 bajtów dla tej liczby:
Wypróbuj online!
Musisz to zrobić ręcznie.
Porady
Oto kilka wskazówek, z czasem ujawnię więcej bardziej pomocnych wskazówek. Powodzenia!
Moje rozwiązanie
Wypróbuj online!
Wykorzystuje jedną z moich ulubionych sztuczek, kod
oblicza n-ty termin z A090809 . Pełne przesłanie wypełnia kod tylko 97, aby uzyskać dużą liczbę.
źródło
MATL , 6 bajtów × 3 unikatowych = 18 punktów. Pęknięty
źródło
i.^(0:3)
nie podaje niedokładności zmiennoprzecinkowych w Octave, aleJ4:q^
robi w MATL ...num2str(..., '%.15g ')
. Zobacz na przykład tutaj . Ale tak się nie dzieje w przypadku MATL-a działającego na Matlabie. Wniosek jest taki, żenum2str
działa nieco inaczej w Matlabie i OctaveGalaretka , 7 bajtów × 6 unikalnych = 42 punktów, popękana
Wypróbuj online!
źródło
ḷ
. Teraz chyba jest już za późno ...Malbolge , 15 bajtów, 13 unikalnych, wynik 195. Bezpiecznie!
Wyjścia:
Bezpieczny! Kod zamierzony:
Wypróbuj online!
źródło
JavaScript (ES8), 103 bajty, 42 unikalne (4 326 punktów) [BEZPIECZNY]
Wyjściowy zrzut heksowy:
Wynik jest nienormalnie duży, wiem, ale myślę, że ten może być interesujący do złamania. Program jest funkcją, która zwraca ciąg znaków (aby uniknąć pomyłek, nie jest to REPL).
To chyba nie powinno być trudne, wszystko polega na znalezieniu wzoru.
Rozwiązanie
Wydaje się, że był trudny, niż myślałem, biorąc pod uwagę fakt, że nikt go nie złamał. Wierzyłem, że może istnieć wiele rozwiązań, które są łatwe do stworzenia. Tak czy inaczej, oto zamierzone rozwiązanie:
Z jakiegoś powodu nie jest poprawnie wyświetlany jako fragment kodu. Oto link TIO .
źródło
Oktawa, 13 bajtów, 5 unikalnych znaków, wynik: 65. Bezpiecznie!
Ten nie powinien być zbyt trudny. Jeśli nie chcesz od razu wskoczyć do najtrudniejszych, może to być miłe pierwsze wyzwanie :)
Uwaga: kiedy czytam pytanie, pomyślałem: wypisz liczbę, a nie łańcuch. Dane wyjściowe wyglądają następująco na TIO:
I tak będzie wyglądać, jeśli masz
format long
lub możesz wydrukować to w ten sposób:
Co miałem i wyjaśnienie:
Proste. =)
Wyjaśnił:
Zwykle piszesz to jako
prod('prodprod')
:, ale Octave traktuje wszystko, co występuje po nazwie funkcji, jako ciąg znaków (tablica znaków). Są one domyślnie konwertowane na ich wartości ASCII i mnożone razem.źródło
MATL, 4 bajty, 4 unikalne, 16 punktów. Pęknięty
Wydajność:
Co miałem:
źródło
Java 8 (pełny program), 97 bajtów ogółem, 34 unikalnych, 3298 punktów ( Cracked przez @RobertoGraham )
Wydajność:
UWAGA: jest to pełny program. Jeśli
()->
zamiast tego dozwolone są funkcje w postaciJava 8 (funkcja lambda), 40 bajtów ogółem, 18 unikalnych, 720 punktów ( Pęknięty przez @ user202729 )
Prawdopodobnie jest to dość trudne, ale cokolwiek ... To nie tak, że Java i tak wygra coś z taką ilością punktów ..
Poradnik:
Zamierzone rozwiązanie:
Całkiem zabawne (i imponujące), że oba podane pęknięcia są zupełnie inne niż to, co miałem na myśli, ale chapeau dla obu crackerów!
źródło
MATL, 11 bajtów, 10 unikalnych, 110 punktów. BEZPIECZNY!
Wydajność:
Tylko po to, aby „pomóc” w jeden sposób:
To jest produkt:
i to o jedną mniej niż
372884884433
pierwsza liczba.A oto kilka prawdziwych wskazówek. Jeśli nie pęknie w ciągu kilku godzin, ujawnię rozwiązanie.
Prawdziwy kod:
Wyjaśnienie:
źródło
Haskell , 10 bajtów, 3 unikalne, 30 punktów, pęknięty
Ładna liczba, która zawiera każdą cyfrę, chociaż używane są tylko 3 unikalne bajty.
Zamierzone rozwiązanie polega na zamianie części kodu w następujący link TIO: Wypróbuj online!
źródło
Haskell , 29 bajtów, 15 unikalnych bajtów, 435 punktów, pęknięty
Jest to ciąg zawierający
3
73 razy i jeden podstępny4
.Zamierzone rozwiązanie polega na zamianie części kodu w następujący link TIO: Wypróbuj online!
Edycja: H.PWiz znalazł poprawne pęknięcie (które można nawet zagrać w golfa do 28 bajtów), ale nie zamierzone rozwiązanie.
Poradnik:
źródło
Mathematica, 8 bytes, 3 unique, 24 points Cracked
źródło
Explode, 9 total bytes, 4 unique, 36 points
Output:
Note that the documentation does not completely align with the implementation for this language - I wrote this one day and haven't touched it since, so any bugs in implementation that may exist are now definitely features.
Also, I do not think this language is Turing-complete, so you could probably brute force it, but that's boring.
I'll give you a sizable bounty if you can automate reverse-engineering output into optimally short Explode code.
źródło
Octave, 4 bytes, 3 unique, 12 points: cracked
Lets see how fast this one goes.
źródło
Pyth, 7 bytes, 6 unique, 7*6=42 total score
Check out the Pyth tips thread for inspiration ;)
źródło
Jelly, 3 bytes × 3 unique = 9 points, cracked
Try it online!
Another attempt at Jelly, this time more challenging I hope.
źródło
Alice, 9 bytes x 8 unique = 72 points Cracked
Try it online!
This one should be funny to crack
źródło
Excel, 22 bytes, 16 unique, 352 points, Cracked
This might not be very hard to crack but I get to use a function that I otherwise never get to use. Besides, the score won't win anything unless a lot of others get cracked.
źródło
PowerShell, 7 bytes, 5 unique = 35 points Cracked
Output:
źródło
Jelly, 8 bytes * 6 unique = 48 (Cracked)
You can try to crack it here.
źródło
Haskell, 30 bytes, 17 unique, 510 points, cracked
The intended solution works by replacing the code part in the following TIO link: Try it online!
This uses the same approach as my previous answer, which was cracked using a different approach.
Some hints:
źródło
Javascript,
11
Bytes,7
Unique Bytes (77 points) (Cracked)This should be really easy.
źródło
Jelly, 8 bytes, 2 unique, 8×2 = 16 points -- Safe!
(There are only 8,355,840 possible such programs so it should get cracked I guess.)
Get going at Try it online!
How?
źródło
°
, but didn't think about⁾
and thought you have to stick with starting from 0.⁽
is different from⁾
, they're not related in any way (except that they consume the two chars that follow).⁽
.Jelly, 4 bytes, 4 unique, 4 × 4 = 16 points -- Safe!
Note that the output is 255 bytes long, right at the limit.
Yep, same score as my other (as yet uncracked) Jelly entry.
Get going at Try it online!
How?
źródło
r
between two code-page index lists and concatenate with another code-page index list to get it down to 35 bytes, but there are also still repeated bytes there and 35 >> 4... good luck!C (two's complement machine, sizeof(int) = 4), 76 bytes and 35 unique bytes for a score of 2660, Safe
Output:
which is 203 bytes long.
źródło
main(i){for(;42>i;printf("%u","eirwtlegowvnfemuwphejsno"[abs(24-i++)]-'n'));}
'N'
to78
(char code ofN
).CJam, 15 bytes * 10 unique = 150 points
Bad score, but hopefully will be hard to crack.
Note: At the moment I have forgotten what the answer is. As such, I will keep it open until either I or somebody else is able to crack it.
źródło
CJam, 15 bytes * 10 unique = 150 points
Note: At the moment I have forgotten what the answer is. As such, I will keep it open until either I or somebody else is able to crack it.
źródło
Japt, 5 bytes, 5 unique bytes (25 points) (Cracked by Scrooble)
Output:
3628801
źródło
Perl 5, 31 Bytes, 18 Unique Bytes (558 points) -- safe
Intended solution (Try it online!):
(this calculates the factorial of 111)
źródło