Für die dritte Seite gibt es einen schönen Polynomausdruck modulo 7 mit zwei Seiten a und b .
3 ( a3b - a b3)mod7
oder faktorisiert
3 a b ( a2- b2)mod7
Das Modulo 7 bildet einen Rest in {0,1,2,3,4,5,6} ab.
Ich erkläre, warum es in dieser Math SE-Antwort funktioniert , obwohl ich denke, dass es wahrscheinlich ein saubereres Argument gibt, das mir fehlt. Das einzige andere Zwei-Term-Polynom, das funktioniert, ist
( 3 a5b5- a3b )mod7
Das habe ich ursprünglich gefunden, indem ich mein Bit-Bashing in arithmetische Operationen umgewandelt habe. Dann habe ich eine Brute-Force-Suche über Polynome dieser Form durchgeführt, um das schönere zu finden.
Bitte fügen Sie diese Ports in Ihre bevorzugte Sprache ein. Dies ist ein CW-Beitrag.
J, 9 von Synthetica
7|3***+*-
Siehe meinen Beitrag
Dyalog APL, 9 von ngn (Tippfehler behoben von Adám)
7|3×××+×-
Offen gestohlen von oben J Antwort.
TI-Basic, 14 von Timtech
7fPart((A³B-AB³)/21
Pyth, 16 von FryAmTheEggman
M%*3-*H^G3*^H3G7
Definiert eine Funktion g
aus zwei Werten.
Golfscript, 18 von Peter Taylor (altes Polynom)
~1$*.5?3*@.*@*- 7%
CJam, 18 von Martin Büttner (portiert aus Peters GolfScript) (altes Polynom)
l~1$*_5#3*@_*@*m7%
Mathematica, 20 von Martin Büttner
Mod[+##(#-#2)3##,7]&
Ja, das ist ein unäres Plus, und nein, es gibt keinen kürzeren Weg, der kein unäres Plus verwendet.
dc, 21 von Toby Speight
sb7+d3^lb*rlb3^*-3*7%
Ich muss 7 addieren, a
um sicherzustellen, dass die Differenz immer positiv ist (dc hat einen vorzeichenbehafteten %
Operator).
Julia, 24 23 von Martin Büttner
f(a,b)=3a*b*(a^2-b^2)%7
CoffeeScript, 28 26 von rink.attendant.6
x=(a,b)->3*a*b*(a*a-b*b)%7
JavaScript (ES6), 28 26 von rink.attendant.6
x=(a,b)=>3*a*b*(a*a-b*b)%7
Im Wesentlichen dasselbe wie CoffeeScript.
Python 28 von xnor
lambda a,b:3*a*b*(a*a-b*b)%7
Bash, 31
Nichts Besonderes:
echo $[3*($1**3*$2-$1*$2**3)%7]
oder alternativ:
echo $[3*$1*$2*($1*$1-$2*$2)%7]
Ein weiterer (längerer, aber vielleicht interessanter) Ansatz .
Nim, 36 von Sillesta
proc(x,y:int):int=3*x*y*(x*x-y*y)%%7
Java 7, 46 44 von rink.attendant.6
int f(int a,int b){return(a*a-b*b)*a*b*3%7;}
Java 8, 25 23 von Kevin Cruijssen
a->b->(a*a-b*b)*a*b*3%7
PHP, 49 47 von rink.attendant.6
function x($a,$b){echo($a*$a-$b*$b)*3*$a*$b%7;}
Batch, 52 Unclemeat
set/aa=(3*(%1*%1*%1*%2-%1*%2*%2*%2)%%7+7)%%7
echo %a%
CMD unterstützt den wahren Modul nativ nicht (kann also keine negativen Zahlen verarbeiten) - daher %%7+7)%%7
.
LESS (als parametrisches Mixin ), 62 60 von rink.attendant.6
.x(@a,@b){@r:mod(3*@a*@b*(@a*@a-@b*@b),7);content:~"'@{r}'"}
Siehe meinen Beitrag unten .
05AB1E, 10 8 von Emigna (-2 Bytes von Kevin Cruijssen)
nÆs`3P7%
Probieren Sie es online aus.
Haskell, 31 27 25 nach generischem Anzeigenamen
a#b=3*a*b*(a*a-b*b)`mod`7
Probieren Sie es online!
Excel, 27 von von Wernisch
=MOD(3*(A1^3*B1-A1*B1^3),7)
Excel VBA, 25 von Taylor Scott
?3*[A1^3*B1-A1*B1^3]Mod 7
Forth (gforth) 41 von reffu
: f 2>r 2r@ * 2r@ + 2r> - 3 * * * 7 mod ;
Probieren Sie es online!
C #, 23 von Kevin Cruijssen
a=>b=>(a*a-b*b)*a*b*3%7