警官-平方時間平方根


37

注:これは警官のスレッドであり、スクランブルコードを投稿する必要があります。ここに、クラックされたソースが投稿され、警官の答えにリンクされる強盗のスレッドがあります。


タスク:最短書く安全な整数の乗算平方根プログラムをNの二乗でN

これはであるため、ルールは次のとおりです。

  • 答えとして、ソースコードのスクランブルバージョンを投稿します(文字は任意の順序で記述する必要があります)。スクランブルバージョンは動作しないはずです!
  • 任意の標準的な方法で入力を取得できます。出力についても同様です。ハードコーディングは禁止されています
  • 強盗によってコードがクラックされた後(これが発生した場合)、タイトルにコードがクラックされていることを言及し、正確なコードで回答の本文にネタバレを追加する必要があります
  • 同じことが安全な回答にも当てはまります(安全だと言ってネタバレを追加します)
  • コードは、投稿後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

4月末までに最短の安全な回答が勝者と見なされます。


2
関連。(同じCnRルール、異なるタスク。)
マーティンエンダー

2
@MartinEnder異なるのはタスクのみである場合、それは重複していませんか?
ネイサンメリル

1
@NathanMerrill私は知らない、警察官と強盗の挑戦のための確立された重複したガイドラインがあるとは思わないが、新しいコードゴルフの挑戦を求めると、以前のコードゴルフとは異なる「唯一の」ことはタスク、通常は重複とは見なされません。;)(つまり、CnRはチャレンジのCnR部分を変更し、基礎となるタスクを変更しない場合はCnRがおそらくより興味深いことに同意します。)
マーティンエンダー

1
皆さん頑張ってください!あなたがこれを再開することに決めたことを本当に嬉しく思います。面白い答えを楽しみにしています!
ミスターXcoder

2
最大2 ^ 32までの入力で動作するようにコードを記述しました。そのため、丸めエラーについて質問し、その時点でかなり外れました
fəˈnɛtɪk

回答:


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確かに!よくやった!私の意図したソリューションは異なっていました。私はちょうどそれを投稿しました
ルイスメンドー

10

ロダ、28バイト(@tehtmiによりクラック

 (),.025^^cdfhnnnopprstuu{|}

先頭のスペースに注意してください。丸めはありませんが、浮動小数点数を使用するため、精度が制限されます。


これは匿名関数ですか、または「完全な」関数ですか?
クリティキシリソス

@KritixiLithos警官が手がかりを与えたくない場合は、それが想定されていない
氏Xcoder


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}{|~isである$_**2*sqrtが、すべての文字がそのASCIIコード+ 10の文字に置き換えられている($isのASCIIコードな36ので、.、ASCIIコードは46などになります)。この変換
の目的s/./chr-10+ord$\&/greは、この変換を元に戻すことです。各文字をASCIIコード10未満の文字に置き換えます。(chr-10+ord$\&おそらくasciiコードに対応する文字を返し、文字に対応するasciiコードを返すchr(ord($\&)-10)場所としてより明確です)。 最後に、この文字列を評価し、結果を計算します。結果はに格納され、フラグのおかげで最後に暗黙的に出力されます。chrord
eval$_-p


本当です。すぐに編集しようとしていたのは、4回の再開票があり、5回目の投票が行われる前に問題を修正したかったからです。質問が準備が整うまでサンドボックスに残されていた場合、関係するすべての人にとって問題は改善されていただろう。
ピーターテイラー

@PeterTaylor確かに、問題はありませんし、とにかく大胆に見えました(私は誰も非難していませんでしたが、小さな流れを指しています(すぐに修正しました(プロセスの誤字を紹介します)))。そして、サンドボックスの部分についてはこれ以上同意できませんでした。
ダダ

少し説明してもらえますか?
phuclv

@LưuVĩnhPhúcあなたがそれをクラックするために少し助けをあなたに与えることができるならば、あなたは意味ですか?mmh ...コードはで始まり$_=ます。そしてevalどこかにあります。(それほど多くはありませんが、あまり多くの情報を提供せずにこれ以上提供できないと思います)
ダダ

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

Howに評価されますか?

-[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
これは大変でした。よくやった!
ルイスメンドー

7

C、50バイト(fergusqによりクラック

%(())   ,-12225;>\\aaabbdddeeefffllnoooprrttuuuuw{

標準のIEEE754丸めを使用します。fergusqの答えで述べたよう-lmに、コンパイラによっては必要になる場合があります。



@fergusq正しい、そしてほぼ正確に私が持っていたもの。よくやった; 人々をもっと長く忙しくしておくのに十分な数の赤いニシンをそこに残したいと思っていました!
デイブ

@Dave Wow、最初は構文エラーのように見えます。
エリックアウトゴルファー

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]]

ここで、1行目と3行目は、丸めと表示を正当にするための単なるラッパーです(すべての出力を小数点以下3桁まで正確に丸めて表示します)。2行目は、コードの内臓のスクランブルバージョンです。サンプル出力:

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@6またはf[9]上記のコードのスクランブルバージョンと同じことをしています、。それで、これは本当に非競合的でなければならないのでしょうか?)



6

Swift-64バイト(安全)

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

丸めは行われ.0ず、結果が整数の場合でも表示します。




4

C#、172バイト(SLuck49によりクラック

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

このコードは完全なプログラムです。

先頭に7つのスペース文字があります。

入力は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)



@ライコニ:よくやった!
nimi

3

フーリエ変換 124 119バイト

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

空白や改行文字はありません。

フーリエは整数以外のものを処理していないように見えるため、平方根は最も近い整数に丸められます(@ATacoが許可を得たので、これでいいと思います)

編集ミスを修正しました。すでにこれをクラックしている場合、前のものは機能していました

コードの一部を誤解しており、必要以上に多くの文字を使用していることに気づいた

私が何かを見逃した場合、私に知らせてください




3

オクターブ、30バイト(安全)

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

私の最初のものより少し簡単です。それほど難しくはないはずですが、うまくいけば楽しいパズルになります。


2
いや^?うーん...
ルイスメンドー

1
これに気付いた@(e)(e**((i/(i+i))+~sum(e:j)))が、それはn^1.5...これだけのトリッキーです。
カイルガリオン

3

オーム、11バイト

M ⁿ¡D¼½;+1I

-cフラグとともに使用します。CP-437エンコードを使用します。


すみませんが、これは正しいと確信していますか?
-user4867444

与えられた時間内に誰もそれをクラックしていないので、あなたのソリューションを共有してください。私は非常に好奇心が強いです:)
user4867444

今のところ、これは安全と考えられる最短の回答です。私はそれを受け入れますが、5日以内に元のコードを投稿しない場合、これが可能かどうかわからないので、これをオフにします。EAGERもあなたのソリューションを
Mr. Xcoder

2
@RomanGräfが解決策を見つけてください。そうでなければ私は...これをオフにします
ミスターXcoder

1
@RomanGräf:ping?それでもその解決策を非常に熱望しています:)
user4867444


2

Javascript、123バイト、notjaganによるクラック

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

このコードは完全な機能です

文字リストの最初にスペース文字が1つあります

この答えの丸めは、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で動作するはずですが、確認して戻ってきます。
パジョンク

1
うまく動作します。
パジョンク


@WheatWizardはもう関係ありませんが、コンセンサスは次のとおりだと思います:非フリー言語は使用できますが、非競合としてマークする必要があります
スティーヴィーグリフィン

2

RProgN 2、6バイト(@notjaganによりクラック

š2]^*\

丸めは行わず、小数点以下の桁を表示します。整数解の場合は何も表示しません。


2
これは本当に実行されn²√nますか?私は簡単に計算するn² + √nことができますが、私の人生では、あなたがどのように項を乗算するのかを見ることができません。
notjagan

@notjagan私も...それをクラックするために2時間試みていて、何も機能しません。ATacoソースが正しいと確信していますか?
ミスターXcoder

@ Mr.Xcoderああ、あなたはまったく正しい。集合時間を無駄にしてすみません!編集したソースをご覧ください。
アタコ

今では理にかなっています!
ミスターXcoder

私が忙しかったので少し遅れましたが、割れました
notjagan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.