给定两个边a和b,第三边有一个很好的多项式表达式7模。
3 (一3b − a b3)模7
或分解
3 a b (a2− b2)模7
模7映射到{0,1,2,3,4,5,6}中的余数。
我解释了为什么它在Math SE答案中起作用,尽管我确实认为可能缺少更清晰的论点。唯一有效的其他两项多项式为
(3 一5b5− a3b )模7
最初是通过将位扑灭转换为算术运算而发现的,然后对这种形式的多项式进行了蛮力搜索以找到更好的多项式。
请随意将其端口添加到您喜欢的语言中;这是一篇CW帖子。
J,9 by Synthetica
7|3***+*-
看我的帖子
Dyalog APL,由NGN发行9次(打字错误由Adám修正)
7|3×××+×-
从上面J的公然偷来的答案。
TI-Basic,14岁,由Timtech提供
7fPart((A³B-AB³)/21
Pyth,16岁,作者:FryAmTheEggman
M%*3-*H^G3*^H3G7
定义g
两个值的函数。
Golfscript,18岁,彼得·泰勒(旧多项式)
~1$*.5?3*@.*@*- 7%
CJam,18岁,马丁 ·布特纳(MartinBüttner)(来自Peter的GolfScript)(旧多项式)
l~1$*_5#3*@_*@*m7%
Mathematica,20岁,马丁·布特纳(MartinBüttner)
Mod[+##(#-#2)3##,7]&
是的,这是一元加号,不,没有更短的方法不使用一元加号。
dc,21,作者:Toby Speight
sb7+d3^lb*rlb3^*-3*7%
我必须添加7以a
确保差异始终为正(dc具有带符号的%
运算符)。
朱莉娅,24 23,马丁·布特纳(MartinBüttner)
f(a,b)=3a*b*(a^2-b^2)%7
的CoffeeScript,28 26由rink.attendant.6
x=(a,b)->3*a*b*(a*a-b*b)%7
JavaScript(ES6),rink.attendant.6的28 26
x=(a,b)=>3*a*b*(a*a-b*b)%7
本质上与CoffeeScript相同。
Python 28,由xnor提供
lambda a,b:3*a*b*(a*a-b*b)%7
Bash,31岁
没什么特别的:
echo $[3*($1**3*$2-$1*$2**3)%7]
或者:
echo $[3*$1*$2*($1*$1-$2*$2)%7]
另一种(更长,但也许很有趣)的方法。
Nim,36岁,Sillesta
proc(x,y:int):int=3*x*y*(x*x-y*y)%%7
Java 7中,46 44由rink.attendant.6
int f(int a,int b){return(a*a-b*b)*a*b*3%7;}
Java的8,25 23凯文Cruijssen
a->b->(a*a-b*b)*a*b*3%7
PHP,49 47 by rink.attendant.6
function x($a,$b){echo($a*$a-$b*$b)*3*$a*$b%7;}
批处理,无限制52个
set/aa=(3*(%1*%1*%1*%2-%1*%2*%2*%2)%%7+7)%%7
echo %a%
CMD本机不支持真正的模数(因此不能处理负数)-因此%%7+7)%%7
。
LESS(作为参数混合),rink.attendant.6为62 60
.x(@a,@b){@r:mod(3*@a*@b*(@a*@a-@b*@b),7);content:~"'@{r}'"}
请参阅下面的我的帖子。
05AB1E,10 8由Emigna(-2字节,由Kevin Cruijssen)
nÆs`3P7%
在线尝试。
Haskell,31 27 25(按通用显示名称)
a#b=3*a*b*(a*a-b*b)`mod`7
在线尝试!
Excel,27 by Wernisch
=MOD(3*(A1^3*B1-A1*B1^3),7)
Excel VBA,25岁,泰勒·斯科特(Taylor Scott)
?3*[A1^3*B1-A1*B1^3]Mod 7
第四(gforth)41由reffu
: f 2>r 2r@ * 2r@ + 2r> - 3 * * * 7 mod ;
在线尝试!
C#,23,凯文·克鲁伊森(Kevin Cruijssen)
a=>b=>(a*a-b*b)*a*b*3%7