警察-平方乘平方根


37

注意:这是警察的线程,应该在其中张贴加扰的代码。这是强盗的线索,应该将破解的消息发布并链接到警察的答案。


任务:写的最短的安全程序,它乘整数的平方根ñ通过的平方ñ

这是,所以规则是:

  • 在您的答案中,发布源代码的加扰版本(字符应以任何顺序书写)。加扰版本不应该工作!
  • 您可以采用任何标准方式输入,输出也一样。禁止硬编码
  • 在强盗破解了代码之后(如果发生这种情况),您必须提及您的标题上的代码已经被破解,并使用准确的代码在您的答案中添加一个破坏
  • 同样适用于安全答案(请注意这是安全的,并添加扰流板
  • 如果在发布后5天内没有人破解该代码,则认为该代码是安全的,您可以选择在标题中指定该代码
  • 您必须指定您的编程语言
  • 您应该指定字节数
  • 您必须在答案中说明舍入机制(请参见下文)

您可以假设结果小于2 32,并且n始终为正。如果结果是整数,则必须返回带或不带小数点的精确值;否则,最小的小数精度将为3个小数位(使用您选择的任何舍入机制),但可以包含更多小数位。您必须在答案中说明四舍五入机制。不允许以分数形式返回(分子,分母对-抱歉,Bash!)

例子:

In -> Out

4 -> 32.0 (or 32)
6 -> 88.18163074019441 (or 88.182 following the rules above)
9 -> 243.0
25 -> 3125.0

到四月底,最短的安全答案将被认为是赢家。


2
有关。(相同的CnR规则,不同的任务。)
马丁·恩德

2
@MartinEnder如果任务是唯一的不同,那么它不是重复的吗?
内森·梅里尔

1
@NathanMerrill我不知道,我认为对于警察和强盗挑战我们没有任何已确立的重复准则,但是如果我问一个新的密码高尔夫挑战,那么与以前的密码高尔夫不同的“唯一”之处就是任务,通常不视为重复任务。;)(也就是说,我同意如果我们改变挑战的CnR部分而不是基础任务,CnR可能会更有趣。)
Martin Ender

1
大家好运!我很高兴您决定重新打开此菜单。期待看到有趣的答案!
Xcoder先生17年

2
我已经编写了代码,可用于2 ^ 32以下的输入...这就是为什么我问到舍入错误,在那一刻
还差得很远

Answers:


2

05AB1E,20个字节-安全

与我以前的答案完全不同的方法。

****++/133DDFPTs}¹¹Ð

没有舍入。

运行示例

In   -> Out
0    -> 0
4    -> 32.0
6    -> 88.18163074019441
25   -> 3125.0
7131 -> 4294138928.896773

我毫不怀疑@Emigna会很快将其破解,但是,嗯,必须尝试一下!:-D


D1TFÐ*D¹3*+s3*¹+/*}P

这是利用以下顺序这一事实:

u_0 = 1,u_ {n + 1} = u_n *(u_n ^ 2 + 3 x)/(3 u_n ^ 2 + x)

收敛到sqrt(x),并在此快速求立方(对不起,没有找到如何在PCG中格式化数学方程式的方法)。

详细说明

D1TFÐ*D¹3*+s3*¹+/*}P
D1                   # Duplicate the input, then push a 1: stack is now [x, x, 1] (where x is the input)
  TF                 # 10 times (enough because of the cubic convergence) do
    Ð                # triplicate u_n
     *               # compute u_n ^ 2
      D              # and duplicate it
       ¹3*+          # compute u_n ^ 2 + 3 x
           s         # switch that last term with the second copy of u_n ^ 2
            3*¹+     # compute 3 u_n ^ 2 + x
                /    # compute the ratio (u_n ^ 2 + 3 x) / (3 u_n ^ 2 + x)
                 *   # compute u_n * (u_n ^ 2 + 3 x) / (3 u_n ^ 2 + x), i.e. u_{n+1}, the next term of the sequence
                  }  # end of the loop
                   P # compute the product of the whole stack, which at that point contains u_10 (a sufficiently good approximation of sqrt(x)), and the 2 copies of the input from the initial D: we get x ^ 2 * sqrt(x)

在线尝试!



11

MATL,12个字节(由@tehtmi破解

'Un&0P'/^:+1

不取整;使用浮点数。

预期的解决方案(与@tehtmi找到的解决方案不同):

:&+n10U'P'/^

说明

:&+ % Create a matrix of size n × n, where n is implicit input
n % Number of elements. Gives n^2
10U % 10 squared. Gives 100
'P' % 'P' (ASCII code 80)
/ % Divide. Gives 1.25
^ % Power. Implicit display



@tehtmi确实!做得好!我打算的解决方案有所不同;我刚刚发布了它
Luis Mendo


10

Perl,42个字节(安全)

有41个字节的代码和-p标志(没有其他标志)。

/"/4~~r..rso4r<_$4va=eg1de|i/h0-&$c={}l+"

结果不是四舍五入的(或者说四舍五入到Perl通过舍入得到的同一点$_ = (sqrt $_) * ($_ ** 2))。

解:

$_=eval".i44<4}{|~"=~s/./chr-10+ord$\&/gre
(没有\了之前&-降价搅局似乎不喜欢$后面&
在线试用!

说明:

.i44<4}{|~是,$_**2*sqrt但每个字符都被具有其ascii代码+ 10的字符替换。($is的ascii代码36,因此它将成为.其ascii代码为46,等等)。
然后的目的s/./chr-10+ord$\&/gre是取消此转换:它将每个字符替换为低10位的ASCII码字符。(在返回与ASCII码相对应的字符并返回与字符相对应的ASCII码的位置时chr-10+ord$\&可能更清楚)。 最后,对这个字符串求值,然后计算结果,该结果存储在中,由于标记隐式打印在最后。chr(ord($\&)-10)chrord
eval$_-p


真正。我试图快速进行编辑,因为我看到有4张重新开放的选票,并希望在5日投票之前解决问题。如果问题在准备好之前一直留在沙盒中,那么对所有相关人员来说会更好。
彼得·泰勒

@PeterTaylor当然,没问题,而且无论如何它都是大胆的,因此很明显(我没有在指责任何人,而只是指出了一个小问题(我马上纠正了(在此过程中引入了错别字)))。我完全同意沙盒部分。
Dada's

你能解释一下吗?
phuclv

@LưuVĩnhPhúc您的意思是说,如果我可以给您一点帮助,以解决它吗?嗯...代码以开头$_=。而且有一个eval地方。(虽然不多,但我觉得如果不给您太多信息就不能给您更多)
Dada

8

八度,43字节(安全)

$'()*+,-/23579:[]aelnouv'*,-23:[]lu',-23]',

这是一个脚本,需要从命令行输入(不是函数)。这是浮点精度(因此没有舍入)。

解:

eval(-[5,-2:3,-3:2]+['nlouu*$$',39,']2/7'])

说明:

eval( <string> ) % Evaluated the string inside the brackets and executes it
里面的一切eval呼叫被评价input('')^2.5

如何?

-[5,-2:3,-3:2] % A vector: [-5, 2, 1, 0, -1, -2, -3, 3, 2, 1, 0, -1, -2]
['nlouu**$$',39,']2/7'] % This is a string: nlouu**$ concatenated with the number
. % 39 (ASCII ']'), and ']2/7'. Thus, combined: 'nlouu**$$']2/7'

将第一个向量添加到此字符串会将其转换为整数向量:
[105, 110, 112, 117, 116, 40, 39, 39, 41, 94, 50, 46, 53]

eval隐式将其转换为字符串,而这些数字恰好是: input('')^2.5


1
这很难。做得好!
路易斯·门多


6

Mathematica,131字节,无竞争?,已破解

这已经被@ lanlock4破解了!但是,我仍然可以通过互联网获得一些能够找到原始解决方案的人的信息,在该解决方案中实际上需要所有字符。

f[y_]:=With[{x=@@@@@@#####^^&&&(((()))){{}}111111,,+-/y},Print[#,".",IntegerString[Round@#2,10,3]]&@@QuotientRemainder[1000x,1000]]

这是一个难题。尽管您可以根据需要使用上述字符,但我当然希望答案遵循以下形式

f[y_]:=With[{x=
    @@@@@@#####^^&&&(((()))){{}}111111,,+-/y
},Print[#,".",IntegerString[Round@#2,10,3]]&@@QuotientRemainder[1000x,1000]]

第一和第三行只是使四舍五入和显示合法的包装器(它将每个输出精确地写到小数点后三位四舍五入),第二行是代码胆量的加扰版本。样本输出:

6 -> 88.182
9 -> 243.000
9999 -> 9997500187.497

(Mathematica是非免费软件,但是有一个Wolfram沙箱,可以在其中测试少量的代码。例如,剪切和粘贴代码

f[y_]:=With[{x=
    y^2.5
},Print[#,".",IntegerString[Round@#2,10,3]]&@@QuotientRemainder[1000x,1000]]

定义一个函数,您可以随后调用它,例如f@6f[9],该函数的功能与上述代码的完整版本相同。那么这真的必须是非竞争性的吗?)



6

Swift-64位元组(安全)

prot Fdnufi;nooitamunc xetgru(->atl)Ior:n{tFn pg,F(ao.o25t)(w)l}

不四舍五入,.0即使结果为整数也显示a 。




4

C#,172个字节(被SLuck49破解

       (((((())))))***,,,,......1225;;;;;;<====>CFLMMMMMPPPRSSSSSWaaaaaaabbbbcccddddddeeeeeeeeeeegghiiiiiiiillllllmmnnnnnnnooooooooqqqqrrrssssssssstttttttttuuuuuuuvvwyy{{}}

此代码是完整程序。

开头有七个空格字符。

输入从STDIN读取,并打印到STDOUT。结果在中double,未进行四舍五入。

未经处理的原始代码:

using System;
using S = System.Console;

class P
{
    static void Main()
    {
        var t = S.ReadLine();
        double q = int.Parse(t);
        Func<double, double, double> M = Math.Pow;
        S.Write(M(q, 2 * .25) * M(q * q, 1));
    }
}





3

Haskell,64个字节,(由Laikoni破解

$$$$$$(((((())))))**,...0<<<>>>[]cccccdddeffiiiiilloopppprrsstuu

标准Haskell浮点运算。

我的原始版本是:

product。(((($ succ $ cos $ 0)(flip(**)。)[id,recip]))。flip(id)



@Laikoni:做得好!
nimi

3

傅立叶124个 119字节

((()))*******--011111<=>>>HHINNNN^^^eeehhhhkkkkmmmmmmmmmmmmmmmmossuuuuuuuuuuuuuuuuu{{{{{{{{{{}}}}}}}}}}~~~~~~~~~~~~~~~~

没有空格或换行符。

平方根四舍五入到最接近的整数,因为傅里叶似乎不处理整数以外的任何东西(并且由于@ATaco得到许可,我希望这样可以)

修复了一个编辑错误,如果您已经破解了该错误,则前一个功能正常

意识到我误解了部分代码,并且使用了比我需要更多的字符

如果我错过任何事情,请告诉我




3

八度,30字节(安全)

(((((())))))**++/:@eeeiiijmsu~

比我的第一个简单。不应太难,但希望这是一个有趣的难题。


2
不是^吗 嗯...
路易斯·门多

1
想到了这一点,@(e)(e**((i/(i+i))+~sum(e:j)))但这只是n^1.5...这很棘手。
Kyle Gullion '17

3

欧姆,11个字节

M ⁿ¡D¼½;+1I

-c标志一起使用。使用CP-437编码。


抱歉,您确定这是正确的吗?
user4867444'4

既然没有人在这段时间里破解它,请介意分享您的解决方案吗?我很好奇:)
user4867444'4

目前,这是最安全的最短答案。我会接受的,但是如果您在5天内不发布原始代码,则我将取消选中它,因为我不确定这是可能的。EAGER也看到您的解决方案
Xcoder先生17年

2
@RomanGräf尝试找到您的解决方案。否则,我将取消选中此操作…
Xcoder先生17年

1
@RomanGräf:ping?仍然非常渴望看到该解决方案:)
user4867444'5


2

Javascript,123个字节,由notjagan破解

 """"""((((((((()))))))))********,--.....//2;;======>>Seeeeeeegggggggggggghhhhhhhhhhhilllllnnnnnnnnnnorrrsstttttttttttttu{}

此代码是完整功能

字符列表的开头有一个空格字符

此答案的舍入为Javascript的浮点精度,每个答案的精度在10 ^ -6以内。

之所以变短,是因为精度不需要保持我想的那么高。

我已经意识到解决起来比起初要容易得多,但是它已经存在了:P

初始代码:

g=t=>t-(t*t-n)/("le".length*t);e=h=>{n=h*h*h*h*h,s=2**(n.toString("ng".length).length/"th".length);return g(g(g(g(g(s)))))}

牛顿法,是最接近2的幂的5次应用







2

Excel,26个字节

=(())*//11122AAAIINPQRSST^

没有舍入。

注意:由于Excel是付费软件,因此在免费的LibreOffice中也可以使用


1
有没有购买Excel即可运行此方法的方法?当前,人们普遍认为非自由语言不能用于警察和强盗。
小麦巫师

1
应该可以在免费的Libreoffice工作,但是我会检查并联系。
pajonk

1
效果很好。
pajonk


@WheatWizard,不再相关,但我认为共识是:可以使用非自由语言,但应将其标记为非竞争性
Stewie Griffin

2

RProgN 2,6字节(@notjagan破解

š2]^*\

不舍入,显示许多小数位。对于整数解,不显示任何内容。


2
这真的执行n²√n吗?我可以很容易地得到它来进行计算n² + √n,但是我无法一生看到您如何乘​​以这些项。
notjagan

@notjagan我也是...已经尝试了2个小时来破解它,但没有任何效果。ATaco您确定来源正确吗?
Xcoder先生17年

@ Mr.Xcoder嗯,您是正确的。抱歉浪费您的集体时间!请查看编辑后的源。
ATaco

现在有道理了!
Xcoder先生17年

因为我很忙,所以迟到了,但又破裂了
notjagan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.