Sekcja gliniarzy
Dział rabusiów można znaleźć tutaj .
Dzięki FryAmTheEggman , Peter Taylor , Nathan Merrill , Xnor , Dennis , Laikoni i Mego za ich wkład.
Wyzwanie
Twoim zadaniem jest napisanie 2 różnych programów ( pełne programy / funkcje / itp. ) W tym samym języku i tej samej wersji (np. Python 3.5 ≠ Python 3.4, więc nie jest to dozwolone), a gdy podano n (używając argumentów STDIN / function / etc. ), oblicz a (n) gdzie a jest sekwencją OEIS twojego wyboru. Jeden z tych programów jest krótszy od drugiego. Musisz tylko przesłać dłuższy program z tych dwóch. Drugi należy zapisać na wypadek, gdyby nie został złamany po 7 dniach. Twoje zgłoszenie jest łamane, gdy Twój program został rozłupany (o 1 bajt lub więcej).
Na przykład, jeśli wybranym zadaniem było wykonanie 2 × n , może to być prawidłowe przesłanie (w Pythonie 2):
Python 2, 16 bajtów, wynik = 15/16 = 0,9375
print(2*input())
Oblicza A005843 , (przesunięcie = 0).
Jeśli Twoje zgłoszenie zostało złamane, musisz to zaznaczyć w nagłówku w następujący sposób:
Python 2, 16 bajtów, wynik = 15/16 = 0,9375, [pęknięty] + link
print(2*input())
Oblicza A005843 , (przesunięcie = 0).
Offsetowy
Można to znaleźć na każdej stronie OEIS. Na przykład dla A005843 przesunięcie wynosi 0,2
. Musimy użyć tylko pierwszego, którym jest 0
. Oznacza to, że funkcja jest zdefiniowana dla wszystkich liczb ≥ 0.
Innymi słowy, funkcja OEIS (n) zaczyna się od n = 0 . Twój program musi działać we wszystkich przypadkach podanych przez OEIS.
Więcej informacji można znaleźć tutaj .
Punktacja
Wynik uzyskany za zgłoszenie jest równy następującej formule:
Wynik = długość (w bajtach) tajnego kodu ÷ długość (w bajtach) kodu publicznego
Powyższy przykład ma wynik 15 ÷ 16 = 0,9375.
Zgłoszenie o najniższym wyniku wygrywa. Tylko zgłoszenia, które opublikowały swoje rozwiązanie, będą mogły wygrać.
Zasady
- Zadaniem, które musisz wykonać, jest wybór sekwencji OEIS.
- Biorąc pod uwagę n , wyjściowy OEIS (n) . Odchylenie nie wolno, więc trzeba wytwarzać dokładnie takiej samej sekwencji (gdy podano N, trzeba wyjściu OEIS (n)).
- Zgłoszenia, które nie zostaną złamane w ciągu 7 dni, są uważane za bezpieczne po opublikowaniu rozwiązania (zgłoszenia starsze niż 7 dni, dla których nie opublikowano rozwiązania, nadal są podatne na złamanie).
- W swoim zgłoszeniu musisz opublikować następujące rzeczy: nazwę języka , liczbę bajtów , pełny kod , więc żadne linki do pastebinów itp. (Aby zapobiec odpowiedziom typu Unary), sekwencję OEIS , wynik z długościami obu programów i dodatkowo kodowanie, które Jest używane.
- Uwaga: tej samej sekwencji nie można opublikować dwukrotnie w tym samym języku. (Na przykład, jeśli sekwencja A005843 została wykonana w Pyth, nie można ponownie użyć Pyth dla tej samej sekwencji).
- Wejścia i wyjścia są w systemie dziesiętnym (podstawa 10)
Tabela liderów
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><style>table th,table td{padding: 5px;}th{text-align: left;}.score{text-align: right;}table a{display: block;}.main{float: left;margin-right: 30px;}.main h3,.main div{margin: 5px;}.message{font-style: italic;}#api_error{color: red;font-weight: bold;margin: 5px;}</style> <script>QUESTION_ID=88979;var safe_list=[];var uncracked_list=[];var n=0;var bycreation=function(x,y){return (x[0][0]<y[0][0])-(x[0][0]>y[0][0]);};var byscore=function(x,y){return (x[0][1]>y[0][1])-(x[0][1]<y[0][1]);};function u(l,o){jQuery(l[1]).empty();l[0].sort(o);for(var i=0;i<l[0].length;i++) l[0][i][1].appendTo(l[1]);if(l[0].length==0) jQuery('<tr><td colspan="3" class="message">none yet.</td></tr>').appendTo(l[1]);}function m(s){if('error_message' in s) jQuery('#api_error').text('API Error: '+s.error_message);}function g(p){jQuery.getJSON('//api.stackexchange.com/2.2/questions/' + QUESTION_ID + '/answers?page=' + p + '&pagesize=100&order=desc&sort=creation&site=codegolf&filter=!.Fjs-H6J36w0DtV5A_ZMzR7bRqt1e', function(s){m(s);s.items.map(function(a){var he = jQuery('<div/>').html(a.body).children().first();he.find('strike').text('');var h = he.text();if (!/cracked/i.test(h) && (typeof a.comments == 'undefined' || a.comments.filter(function(b){var c = jQuery('<div/>').html(b.body);return /^cracked/i.test(c.text()) || c.find('a').filter(function(){return /cracked/i.test(jQuery(this).text())}).length > 0}).length == 0)){var m = /^\s*((?:[^,;(\s]|\s+[^-,;(\s])+).*(0.\d+)/.exec(h);var e = [[n++, m ? m[2]-0 : null], jQuery('<tr/>').append( jQuery('<td/>').append( jQuery('<a/>').text(m ? m[1] : h).attr('href', a.link)), jQuery('<td class="score"/>').text(m ? m[2] : '?'), jQuery('<td/>').append( jQuery('<a/>').text(a.owner.display_name).attr('href', a.owner.link)) )];if(/safe/i.test(h)) safe_list.push(e);else uncracked_list.push(e);}});if (s.items.length == 100) g(p + 1);else{var s=[[uncracked_list, '#uncracked'], [safe_list, '#safe']];for(var i=0;i<2;i++) u(s[i],byscore);jQuery('#uncracked_by_score').bind('click',function(){u(s[0],byscore);return false});jQuery('#uncracked_by_creation').bind('click',function(){u(s[0],bycreation);return false});}}).error(function(e){m(e.responseJSON);});}g(1);</script><link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/Sites/codegolf/all.css?v=7509797c03ea"><div id="api_error"></div><div class="main"><h3>Uncracked submissions</h3><table> <tr> <th>Language</th> <th class="score">Score</th> <th>User</th> </tr> <tbody id="uncracked"></tbody></table><div>Sort by: <a href="#" id="uncracked_by_score">score</a> <a href="#" id="uncracked_by_creation">creation</a></div></div><div class="main"><h3>Safe submissions</h3><table> <tr> <th>Language</th> <th class="score">Score</th> <th>User</th> </tr> <tbody id="safe"></tbody></table></div>
Uwaga
To wyzwanie jest zakończone. Ostatecznym zwycięzcą jest feersum z jego odpowiedzią na Seed . Gratulacje! :)
Nadal możesz przesyłać nowych gliniarzy, ale pamiętaj, że już nie konkurują.
Odpowiedzi:
Ziarno , 5861 bajtów, wynik = 5012/5861 = 0,85
Sekwencja jest liczbą pierwszą ( A000040 ) z przesunięciem 1. a (1) = 2, a (2) = 3, a (3) = 5 itd.
Programy Befunge-98 zostały przetestowane z tym tłumaczem .
Rozwiązanie:
źródło
Galaretka , 5 bajtów , wynik 0,8 (4/5) [ pęknięty! ]
Oblicza A127721 .
Wypróbuj online!
Oto rozwiązanie:
n
R
: lista z[1, 2, ..., n]
ÆḊ
: W naszym przypadku zwróci to pierwiastek kwadratowy z sumy kwadratów (co może być przydatne w przyszłym golfie)!Ḟ
: podłoga wynik.Dokumentacja dla
ÆḊ
brzmi:Klucz został rozszerzony na macierze niekwadratowe . „Wyznacznik” macierzy nie kwadratowej jest zwykle niezdefiniowany, ale jedną rozsądną definicją jest
sqrt(det(A A^T))
(do której zmniejsza się macierz kwadratowa|det(A)|
). W naszym przypadkuA A^T
jest to macierz 1 x 1 zawierająca sumę kwadratów. Pierwiastek kwadratowy z tego wyznacznika daje nam dokładnie to, czego potrzebujemy, aby ogolić ostatni bajt!źródło
Siatkówka , 28 bajtów, wynik = 0,9286 ... (26/28), pęknięty przez feersum
Oblicza A192687 , (przesunięcie = 0).
Wypróbuj online! (Pierwszy wiersz włącza pakiet testowy oddzielony od linii).
Na tym polega różnica między męską i żeńską sekwencją Hofstadtera . ( Odpowiednie wyzwanie PPCG. )
To był mój oryginalny kod:
Ta odpowiedź i tak była trochę ryzykowna, ponieważ rzeczywiste rozwiązanie opiera się na wyrażeniu regularnym, które kilka miesięcy temu ogłosiłem, że jest najkrótszym znanym wyrażeniem regularnym testującym Fibonacciego na czacie. Na szczęście nikt nie pamiętał tego. :)
źródło
Sześciokąt , 91 bajtów, wynik = 0,725274725 (66/91) [Pęknięty]
Oblicza A000045 (sekwencja Fibonacciego, przesunięcie 0).
Nie zdziwię się, jeśli komuś uda się pokonać tę i moją bardziej golfową wersję
, chociaż powinno to być trudne.Edycja: Święta krowa, @MartinEnder pobił mnie 33-bajtowym rozwiązaniem.
Gra w golfa (91):
Sformatowany:
Wypróbuj online!
Nie zamierzam tego wyjaśniać, to zbyt okropne ...
Gra w golfa (66):
Sformatowany:
Kolorowy:
Wypróbuj online!
Wyjaśnienie:
Układ pamięci, którego użyłem, wygląda trochę tak:
Inicjalizacja (w kolorze czarnym) ustawia a = 0 ib = 1. Następnie główna pętla:
a
do komórki wejściowej -'"
(
{{=+
"+{=*
'+
'+}=*
"=+
"+
}+
Gdy komórka wejściowa osiągnie 0, MP przesuwa się do a, drukuje i wychodzi.
Co mogłem zrobić, aby zaoszczędzić więcej bajtów, to użyć &, który ustawia bieżącą komórkę albo na lewy, albo na prawy sąsiad. Mógłbym też mieć nieco lepszą kontrolę przepływu, ale w tej chwili jest w porządku.
źródło
&
do przesunięcia danych wejściowych wokół krawędzi a / b / a + b, aby zamieniły się rolami podczas następnej iteracji. W ten sposób nie muszę wcale przesuwać a, b i a + b.M , 10 bajtów , wynik 0,6 (6/10) [ pęknięty ]
Odrobina oszustwa, ponieważ M i Jelly są dość podobne, ale dozwolone przez reguły. Ta wersja jest oparta na pęknięciu @ LeakyNun na moją odpowiedź Jelly.
Oblicza to sekwencję A068943 . Wypróbuj online!
Zamierzone rozwiązanie
Poniższy kod działa w M / Jelly.
Właściwie miałem 4-bajtowe rozwiązanie, do którego dodałem trochę puchu, aby utrudnić złamanie przy użyciu brutalnej siły.
Wypróbuj online!
To właśnie wyjaśnię.
źródło
Stack Cats , 14 bajtów, wynik = 13/14 = 0,929 [ pęknięty ]
To 10 bajtów kodu plus 4 dla argumentów
-nm
.Oblicza A017053 . W przypadku awarii OEIS zaczyna się
a(n) = 7n + 6
odn = 0
.Pełny kod (dostępny bez
-m
argumentów) to![_-_:-_-_-_-:_-_]!
Ukrytym rozwiązaniem było
źródło
Bałwan , 50 bajtów, wynik = 0,9 (45/50) [ pęknięty przez Lynn ]
Jest to podprogram, który przyjmuje liczbę jako argument i zwraca inną liczbę.
Oblicza A122649 (przesunięcie = 1).
Wypróbuj online!
źródło
Haskell, 15 bajtów, wynik = 13/15 (0,866) ( pęknięty )
A109613 z przesunięciem 0. Powtarza dwukrotnie liczbę nieparzystą.
źródło
Brachylog , 27 bajtów, wynik = 0,666 ... (18/27), pęknięty!
Oblicza A010551 (przesunięcie = 0).
Możesz spróbować online tutaj .
Wyjaśnienie
Ponieważ ogromna większość ludzi nie zna tego języka, a ponieważ zamieszczam tę odpowiedź głównie po to, aby zachęcić ludzi do jej przeglądania (patrz: Wiki Brachylog ), przedstawię krótkie wyjaśnienie powyższego kodu:
źródło
Haskell, 4 bajty / 5 bajtów ( cracked Leaky Nun )
Zacznijmy prosto. A000012 , sekwencja wszystkich 1 (przesunięcie 0). Oto tabela:
5 bajtów:
źródło
Java 7, 53 bajty, wynik = 0,9623 (51/53) Pęknięty
Oblicza sekwencję Perrina, A001608
Pierwsza próba golfowego kodu, możesz wskazać wszelkie błędy.
Objaśnienie po pęknięciu:
mile skróciły pierwsze trzy wartości (0,1,2) -> (3,0,2) do
podczas gdy moje własne rozwiązanie było nieco przeprojektowane
Łącząc dwie sztuczki, otrzymujesz
dla 47 bajtów
który wygląda na dość kompaktowy jak na Javę :)
źródło
Cheddar, 7 bajtów, wynik = 0,8571 (6/7), [pęknięty]
Całkiem proste, tylko potęga dwóch. OEIS A000079
Wypróbuj online!
źródło
J, 17 bajtów, wynik = 0,8235 (14/17) ( pęknięty )
Oblicza A002478 .
Zabawne jest to, że ta wersja była pierwotnie krótką wersją do zachowania w tajemnicy.
źródło
Python 2, 43 bajty, wynik = 0,9302 (40/43), pęknięty
f=lambda n:n==1or-(-sum(map(f,range(n)))/3)
Oblicza A072493
Zobaczmy, czy ktokolwiek może grać w golfa na wszystkich 3 bajtach.
źródło
True
jest używane do reprezentowania1
?s=1;exec"a=-(-s/3);s+=a;"*input();print a
za 41.if x
jest prawdziwa), jest prawidłowym zwrotem.Pyke, 11 bajtów, wynik = 0,45 (5/11) [pęknięty]
Oblicza OEIS A180255
Wypróbuj tutaj!
źródło
Z
jest nieudokumentowane; język twierdzi, że jest oparty na stosie, ale po*
nim na stosie są tylko zera, mimo że ma wpływ na resztę kodu; kolejność parametrów nie jest jasno określona)Galaretka , 9 bajtów , wynik 0,5556 (5/9) [ pęknięty ]
Oblicza to sekwencję A119259 . Wypróbuj online!
źródło
Brachylog , 11 bajtów, wynik = 10/11 = 0,909, pęknięty!
Oblicza A173426 .
Wypróbuj online!
Wyjaśnienie
źródło
J, 20 bajtów, wynik = 0,75 (15/20) ( pęknięty )
Oblicza A001654 .
Moje rozwiązanie na 15 bajtów było
źródło
Sesos , 14 bajtów, wynik = 0,8571 (12/14) ( pęknięty )
Oblicza A000290 .
Wypróbuj online!
Poradnik
Ten plik binarny został wygenerowany przez następujący asembler:
źródło
MATL , 11 bajtów, wynik = 0,8181 (9/11), pęknięty
Oblicza funkcję Möbius lub A087811 (przesunięcie 1).
Wypróbuj online!
Zasoby dla rabusiów
Myślę, że to powinno być łatwe, ale w każdym razie tutaj jest pomoc.
Objaśnienie kodu:
Dokumentacja językowa .
Mátl chatroom .
źródło
YftdA_wn^
Galaretka , 11 bajtów , wynik 0,5455 (6/11) [ pęknięty ]
Oblicza to sekwencję A068943 . Wypróbuj online!
źródło
MarioLANG , 87 bajtów, wynik = 0,839 (73/87), pęknięty
Oblicza A000217 , liczby trójkątne. Przesunięcie 0.
Wypróbuj online!
Krótkie rozwiązanie:
Ponieważ crack zabrał tylko 1 bajt, podzielę się moim rozwiązaniem w 73 bajtach, które wykorzystują zupełnie inny algorytm:
Wypróbuj online!
Pierwszy program określa wszystkie liczby od n do 1 wzdłuż taśmy, a następnie sumuje wszystkie liczby, aż natrafi na komórkę o wartości 0. Robi to, kopiując każdą komórkę do dwóch sąsiednich komórek, zmniejszając odpowiednią kopię i powtarzając na niej proces, aż osiągnie 0. Podczas tego procesu taśma wygląda następująco (dla n = 5):
... i tak dalej. Następnie przesuwa się w lewo, sumując komórki, aż osiągnie komórkę z 0.
Drugi program działa tylko z trzema komórkami taśmy. Dopóki pierwsza komórka nie osiągnie 0, wykonuje następujące czynności:
Gdy pierwsza komórka osiągnie 0, trzecia komórka będzie zawierać n + (n-1) + (n-2) + ... + 2 + 1.
źródło
:
jeśli znajduje się on w dolnej linii, dlatego umieściłem końcowy znak nowej linii w linku. Martin i ja rozmawialiśmy o tym w jednej z moich odpowiedzi MarioLANG.M , 18 bajtów , wynik 0,3889 (7/18) [ pęknięty ]
To podejście jest oparte na golfie @ Sp3000 mojej odpowiedzi na żelki .
Kod oblicza sekwencję A116881 (sumy wierszy CM (1,2) ). Wypróbuj online!
źródło
Haskell, 28 bajtów, wynik = 0,3571 (10/28), pęknięty
A006519 , najwyższa moc dzieląca 2
n
, począwszy odn=1
.Podczas gdy dostajesz kredyt za skrócenie dowolnego kodu, uważam, że prawdziwą łamigłówką jest sprowadzanie do 10 bajtów.
źródło
05AB1E , 9 bajtów, wynik = 0,6666 (6/9), pęknięty
Oblicza: A087811
Wypróbuj online
źródło
Sześciokąty , 7 bajtów, wynik = 0,857 (6/7), pęknięty
Nie zaprojektowany, aby być zwycięskim materiałem, ale zdecydowanie łamaczem mózgów. Nie jest to wcale takie trudne, jeśli się nad tym zastanowić: str. Kod:
Lub bardziej czytelna wersja:
Oblicza A052246 .
Wypróbuj online! .
źródło
J, 9 bajtów, wynik = 0,6666 (6/9) ( pęknięty przez Dennisa )
Oblicza A056594 .
źródło
J, 10 bajtów, wynik = 0,9 (9/10) ( pęknięty przez Dennisa )
Oblicza A000326 .
To powinno być łatwe.
Tłumacz online .
Quickref .
źródło
05AB1E , 7 bajtów, wynik = 0,571 (4/7), pęknięty
Oblicza: A006331
Wypróbuj online
Po przejściu w golfa 5 unikalnych wersji tej sekwencji przed znalezieniem tej publicznej wersji mam nadzieję, że nie pozostawiłem żadnej widocznej poprawy, więc będzie to przynajmniej wyzwanie dla złodziei.
źródło
M , 9 bajtów , wynik 0,66667 (6/9) [ pęknięty ]
Odrobina oszustwa, ponieważ M i Jelly są dość podobne, ale dozwolone przez reguły. crack @milesa do mojej odpowiedzi Jelly nie działa w M; brakuje mu
œċ
atomu.Oblicza to sekwencję A119259 . Wypróbuj online!
źródło