199 znaków w oktawie:
m=@(x)mod(x,1928049029);[d,l]=scanf('%d');c=d(1);e=repmat(int64(d(2:2:l)),1,c);[_,b]=gcd(e-e',1928049029*ones(c));b=eye(c)+m(e.*b);x=b(1,:);for i=2:c;x=m(x.*b(i,:));end;disp(m(sum(m(x'.*d(3:2:l)))))
źródło
199 znaków w oktawie:
m=@(x)mod(x,1928049029);[d,l]=scanf('%d');c=d(1);e=repmat(int64(d(2:2:l)),1,c);[_,b]=gcd(e-e',1928049029*ones(c));b=eye(c)+m(e.*b);x=b(1,:);for i=2:c;x=m(x.*b(i,:));end;disp(m(sum(m(x'.*d(3:2:l)))))
Jeśli nie zależy ci na uzyskaniu wyników w tym tygodniu, wystarczy 65 znaków:
~](;2/0\:X{~\.X{0=}%^\{\.@- 1928049029:P.,\@{@*\%(!}++?**}+/+P%}/
Ale jeśli szukasz wydajności, jest ona nieco dłuższa przy 86 znakach:
~](;2/0\:X{~\.X{0=}%^\{\[.0](@-[1928049029:P%P]{.~/{\.(;@@~@*-+\}+2*.1=}do;0=*}+/+P%}/
Jest to omówione bardziej szczegółowo, niż chcę powtórzyć tutaj na moim blogu .
Głównie nie moja praca, ale ciężkie przekopywanie od Nabba daje 47 znaków:
n%(!\:A{~A{~;.3$- 1928049029:N((?1or**}/\/+N%}/
Uwaga: Jedynie myślałem o tym kodzie: próba uruchomienia go byłaby bezcelowa, biorąc pod uwagę czas i ilość używanej pamięci.
Podejście brutalnej siły dla modułowych inwersji w 46 znakach. Wielokrotnie oblicza ^ (N-2) z liczbami całkowitymi o dowolnej precyzji.
n%(!\:A{~A{~;.3$-.!+1928049029:N((?**}/\/+N%}/
Wdrożenie rozszerzonego algorytmu euklidesowego kosztuje nas tylko dodatkowe 15 znaków.
n%(!\:A{~A{~;.3$-:|!1\1928049029:N{@2$|3$/*-\|\:|%.}do;;**}/\/+N%}/
Ten kod jest w pełni szczegółowy na moim blogu , w tym niektóre alternatywy dla obliczania modularnego odwrotności multiplikatywnej.
{*N%2<}
się{*N%1=}
jak w blogu i można rów(;
PON,
. Ale w przypadku wpisu „wydajność nie ma znaczenia” możesz użyć małego twierdzenia Fermata, nie troszcząc się o modułową stronę potęgowania - zostaw to na ostatnią porządek - więc przepis stanie sięN((?
.{*N%1=}+
przegapi przypadek z mianownikiem zero, co potrwa co najmniej 3 znaki. Dobrze jednak po prostu wykonując x ^ (N-2), możemy faktycznie uzyskać 46 znaków za pomocą tego.Lua 444 Chars
Działa w przykładzie na stronie wiki
Ale jakoś nie działa w przypadku przykładów tutaj na tej stronie. Jeśli ktoś może znaleźć błąd?
Wersja bez gry w golfa:
Gra w golfa (bez pola skończonego), 444 znaki:
źródło
Java,
435407 znakówNie golfowany:
źródło
Haskell, 183
źródło