Istnieje ładna wielomianowa ekspresja modulo 7 dla trzeciej strony z dwiema stronami a i b .
3 ( a3)b - a b3))mod7
lub faktorowane
3 a b ( a2)- b2))mod7
Modulo 7 mapuje na resztę w {0,1,2,3,4,5,6}.
Wyjaśniam, dlaczego to działa w tej odpowiedzi Math SE , choć myślę, że prawdopodobnie brakuje mi czystszego argumentu. Jedynym innym dwumianowym wielomianem, który działa, jest
( 3 a5b5- a3)b )mod7
które pierwotnie znalazłem, przekształcając moje bashowanie w operacje arytmetyczne, a następnie przeszukałem brom-force siłą wielomianów tej formy, aby znaleźć ładniejszą.
Dodaj porty tego do swojego ulubionego języka; to jest post CW.
J, 9 autorstwa Synthetica
7|3***+*-
Zobacz mój post
Dyalog APL, 9 autorstwa ngn (literówka naprawiona przez Adáma)
7|3×××+×-
Rażąco skradziona odpowiedź z góry J.
TI-Basic, 14 firmy Timtech
7fPart((A³B-AB³)/21
Pyth, 16 autorstwa FryAmTheEggman
M%*3-*H^G3*^H3G7
Definiuje funkcję gdwóch wartości.
Golfscript, 18 autorstwa Peter Taylor (stary wielomian)
~1$*.5?3*@.*@*- 7%
CJam, 18 Martin Büttner (przeniesiony z Peter's GolfScript) (stary wielomian)
l~1$*_5#3*@_*@*m7%
Mathematica, 20, Martin Büttner
Mod[+##(#-#2)3##,7]&
Tak, to jest jednoznaczny plus, i nie, nie ma krótszej drogi, która nie wykorzystuje jednoznacznego plusu.
dc, 21, autor: Toby Speight
sb7+d3^lb*rlb3^*-3*7%
Muszę dodać 7, aby aupewnić się, że różnica jest zawsze dodatnia (dc ma podpisanego %operatora).
Julia, 24 23 autorstwa Martina Büttnera
f(a,b)=3a*b*(a^2-b^2)%7
CoffeeScript, 28 26 autor: rink.attendant 6
x=(a,b)->3*a*b*(a*a-b*b)%7
JavaScript (ES6), 28 26 autor: rink.attendant.6
x=(a,b)=>3*a*b*(a*a-b*b)%7
Zasadniczo to samo co CoffeeScript.
Python 28, autor: xnor
lambda a,b:3*a*b*(a*a-b*b)%7
Bash, 31
Nic specjalnego:
echo $[3*($1**3*$2-$1*$2**3)%7]
lub alternatywnie:
echo $[3*$1*$2*($1*$1-$2*$2)%7]
Inne (dłuższe, ale być może interesujące) podejście .
Nim, 36 autorstwa Sillesta
proc(x,y:int):int=3*x*y*(x*x-y*y)%%7
Java 7, 46 44 autor: rink.attendant 6
int f(int a,int b){return(a*a-b*b)*a*b*3%7;}
Java 8, 25 23 autor: Kevin Cruijssen
a->b->(a*a-b*b)*a*b*3%7
PHP, 49 47 autor: rink.attendant.6
function x($a,$b){echo($a*$a-$b*$b)*3*$a*$b%7;}
Partia, 52 niesfornych
set/aa=(3*(%1*%1*%1*%2-%1*%2*%2*%2)%%7+7)%%7
echo %a%
CMD nie obsługuje natywnie prawdziwego modułu (więc nie obsługuje liczb ujemnych) - stąd %%7+7)%%7.
MNIEJ (jako parametryczna mieszanka ), 62 60 autor: rink.attendant.6
.x(@a,@b){@r:mod(3*@a*@b*(@a*@a-@b*@b),7);content:~"'@{r}'"}
Zobacz mój post poniżej .
05AB1E, 10 8 autor: Emigna (-2 bajty autor: Kevin Cruijssen)
nÆs`3P7%
Wypróbuj online.
Haskell, 31 27 25 według ogólnej nazwy wyświetlanej
a#b=3*a*b*(a*a-b*b)`mod`7
Wypróbuj online!
Excel, 27 autorstwa Wernischa
=MOD(3*(A1^3*B1-A1*B1^3),7)
Excel VBA, 25, autor: Taylor Scott
?3*[A1^3*B1-A1*B1^3]Mod 7
Forth (gforth) 41 autorstwa reffu
: f 2>r 2r@ * 2r@ + 2r> - 3 * * * 7 mod ;
Wypróbuj online!
C #, 23 autor: Kevin Cruijssen
a=>b=>(a*a-b*b)*a*b*3%7