Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 用2模糊乘法_Math_Obfuscation - Fatal编程技术网

Math 用2模糊乘法

Math 用2模糊乘法,math,obfuscation,Math,Obfuscation,帮我想出一个模糊的方法,将一个数字乘以2,精确到第二个小数点 想法: 使用俄语乘法技术 触发器/其他数学恒等式 蒙特卡罗方法 当然,CS欺骗的奖励积分 编辑: 记住,用有效数字来考虑这个问题可能更合适,而不是精确的小数点。因此,选择4个匹配的引线数字。 因为这是作业,我不想只给你答案,而是考虑数字,因为它是用二进制表示的,什么样的二进制操作数在你的处理中可能有助于做乘法。没有什么比一些红鲱鱼和无用的对象结构更能分散阅读代码的人对您真正目标的注意力。例如,不直接使用任何数字,您可以从字典中提取

帮我想出一个模糊的方法,将一个数字乘以2,精确到第二个小数点

想法:

  • 使用俄语乘法技术
  • 触发器/其他数学恒等式
  • 蒙特卡罗方法
  • 当然,CS欺骗的奖励积分
编辑:


记住,用有效数字来考虑这个问题可能更合适,而不是精确的小数点。因此,选择4个匹配的引线数字。

因为这是作业,我不想只给你答案,而是考虑数字,因为它是用二进制表示的,什么样的二进制操作数在你的处理中可能有助于做乘法。没有什么比一些红鲱鱼和无用的对象结构更能分散阅读代码的人对您真正目标的注意力。例如,不直接使用任何数字,您可以从字典中提取它,或者从另一个对象的长度中获取它(例如,一个大小为2的列表),或者更好的方法是,将数字2隐藏在某个字符串中,然后用一种难以读懂的模式将其正则化。

因为您想使简单变得复杂,你可以用复数做一些愚蠢的事情。假设您有任何可用于复杂算术的库,例如,您可以利用数学中最漂亮的等式:
e^(pi*i)+1=0
。例如,在Java中使用Apache Commons Math(当然您会混淆变量名):

实数部分是-1,所以加3得到2。虚部是0,所以将它乘以5,再加上它是一条没有任何作用的红鲱鱼*

只要这是为了好玩,您就可以使用其他类似的标识尝试其他变体。然而,我不建议依赖这种类型的东西来真正混淆真实产品中的代码。有些软件包会混淆代码,而自动将变量名更改为乱七八糟的代码会让人望而却步(同时仍然让代码保持可读性,让开发人员保持理智)


*在浮点算术中,虚部可能不完全是0,但您说您对小数点后两位的精度感兴趣。

以下perl one liner将第一个命令行参数加倍:

perl -e '$/=$\=shift;map$\+=$//(++$|+$|)**$_,(++$...$=);print'
您可能会说使用perl是欺骗,因为perl中的所有内容都是模糊的。你不会完全错的

在(未模糊的)python中有一种稍微不同的方法:


我把它当作家庭作业。这是正确的吗?@user973810,我的观点是正确的另外,在回复时使用@;它甚至带有自动补全功能,因此您无需学习拼写。:)@user973810:因为这是stackoverflow,所以我假设它涉及代码。关于数字表示等,你做了什么样的假设。?BCD与IEEE 754、ASCII与诸如此类的东西可能会有所帮助。我知道他们正在教孩子们一种新的奇怪的大数乘法形式,这似乎是非常劳动密集型的(我想是为了尽量减少死记硬背)。执行时间是一个因素吗?也就是说,你必须留在fadd和fabs领域吗?:-)@ArtTaylor假设输入是首选语言中的浮点。如果这种表达方式有什么不同的话,请随意利用它。在苏俄,数字会让你成倍增长。这不是家庭作业,我不认为一点变化就是混淆。我在想一些类似的事情,但是对于一个具体的数字:@user973810:Ah好的,我不确定它有多基本。当我看到家庭作业时,我认为它会像位移位一样。所有的想法都很好,但我仍然喜欢使用一些奇怪的算法,而不仅仅是乘法或加法之类的。我喜欢复杂的数学和加法。做得很好。两个条目都很棒。perl在做什么?perl在使用x+x/2+x/4+x/8+x/16+…=2倍。
perl -e '$/=$\=shift;map$\+=$//(++$|+$|)**$_,(++$...$=);print'
import math
def double(n) :
    if n == 0 :
        return 0
    a = b = n
    for i in range(1,100) :
        a = 2 + 1.0/a
    a = a - 1
    for i in range(1,100) :
        b = a * b
        a = math.sqrt(a)
    return b