Hay un módulo buen polinomio de expresión 7 para el tercer lado dado dos lados una y b .
3 ( a3b - a b3)mod7 7
o factorizado
3 a b ( a2- b2)mod7 7
El módulo 7 se asigna a un resto en {0,1,2,3,4,5,6}.
Explico por qué funciona en esta respuesta de Math SE , aunque creo que probablemente haya un argumento más limpio que me estoy perdiendo. El único otro polinomio de dos términos que funciona es
( 3 a5 5si5 5- un3b )mod7 7
que originalmente encontré al transformar mi bit-bashing en operaciones aritméticas, luego hice una búsqueda de fuerza bruta en polinomios de esta forma para encontrar el más agradable.
Por favor, siéntase libre de agregar puertos de esto a su idioma favorito; Esta es una publicación de CW.
J, 9 por Synthetica
7|3***+*-
Ver mi post
Dyalog APL, 9 por ngn (error tipográfico corregido por Adám)
7|3×××+×-
Escandalosamente robado de arriba J responde.
TI-Basic, 14 por Timtech
7fPart((A³B-AB³)/21
Pyth, 16 por FryAmTheEggman
M%*3-*H^G3*^H3G7
Define una función gde dos valores.
Golfscript, 18 por Peter Taylor (antiguo polinomio)
~1$*.5?3*@.*@*- 7%
CJam, 18 años por Martin Büttner (portado de Peter's GolfScript) (antiguo polinomio)
l~1$*_5#3*@_*@*m7%
Mathematica, 20 por Martin Büttner
Mod[+##(#-#2)3##,7]&
Sí, eso es un plus unario, y no, no hay una forma más corta que no use un plus unario.
dc, 21 por Toby Speight
sb7+d3^lb*rlb3^*-3*7%
Tengo que agregar 7 para aasegurar que la diferencia sea siempre positiva (DC tiene un %operador firmado ).
Julia, 24 23 por Martin Büttner
f(a,b)=3a*b*(a^2-b^2)%7
CoffeeScript, 28 26 por rink.attendant.6
x=(a,b)->3*a*b*(a*a-b*b)%7
JavaScript (ES6), 28 26 por rink.attendant.6
x=(a,b)=>3*a*b*(a*a-b*b)%7
Esencialmente lo mismo que CoffeeScript.
Python 28, por xnor
lambda a,b:3*a*b*(a*a-b*b)%7
Bash, 31
Nada especial:
echo $[3*($1**3*$2-$1*$2**3)%7]
o alternativamente:
echo $[3*$1*$2*($1*$1-$2*$2)%7]
Otro enfoque (más largo pero quizás interesante) .
Nim, 36 por Sillesta
proc(x,y:int):int=3*x*y*(x*x-y*y)%%7
Java 7, 46 44 por rink.attendant.6
int f(int a,int b){return(a*a-b*b)*a*b*3%7;}
Java 8, 25 23 por Kevin Cruijssen
a->b->(a*a-b*b)*a*b*3%7
PHP, 49 47 por rink.attendant.6
function x($a,$b){echo($a*$a-$b*$b)*3*$a*$b%7;}
Lote, 52 sin carne
set/aa=(3*(%1*%1*%1*%2-%1*%2*%2*%2)%%7+7)%%7
echo %a%
CMD no admite el módulo verdadero de forma nativa (por lo que no puede manejar números negativos), por lo tanto %%7+7)%%7.
MENOS (como una mezcla paramétrica ), 62 60 por rink.attendant.6
.x(@a,@b){@r:mod(3*@a*@b*(@a*@a-@b*@b),7);content:~"'@{r}'"}
Vea mi publicación a continuación .
05AB1E, 10 8 por Emigna (-2 bytes por Kevin Cruijssen)
nÆs`3P7%
Pruébalo en línea.
Haskell, 31 27 25 por nombre genérico para mostrar
a#b=3*a*b*(a*a-b*b)`mod`7
Pruébalo en línea!
Excel, 27 por Wernisch
=MOD(3*(A1^3*B1-A1*B1^3),7)
Excel VBA, 25 por Taylor Scott
?3*[A1^3*B1-A1*B1^3]Mod 7
Forth (gforth) 41 por reffu
: f 2>r 2r@ * 2r@ + 2r> - 3 * * * 7 mod ;
Pruébalo en línea!
C #, 23 por Kevin Cruijssen
a=>b=>(a*a-b*b)*a*b*3%7