ショックプローブによる死:それはたくさんのサイコロです


20

Webcomic Darths&Droidsでは、コミックのベースとなる架空のロールプレイキャンペーンでR2-D2を演じるピートは、かつて主張(警告:リンクされたコミックのネタバレ)、Phanastacoriaのロストオーブが装備されていたと主張するショックプローブ、彼は今やなんと1048576d4損傷の。(GMはこれを確認も否定もしていません。)ほとんどの人が実際にそれほど多くのサイコロを振る忍耐力を持たないことは合理的に明らかであるはずなので、彼のためにそれを行うコンピュータープログラムを書き、合理的な方法で転がされた合計値を出力しますフォーマット。エントリは、プログラムサイズ(最短プログラム、バイトカウント、勝率)、全体および言語ごとの両方でランク付けされ、実行時の関係を壊します。回答は、完全なプログラムまたは関数定義のいずれかです。

言語ごとのスコア

パイス

Maltysen-8バイト*

ジャクベ-10バイト

APL

アレックスA-10バイト

CJam

オプティマイザー-11バイト

J

ɐɔıʇǝɥʇuʎs-12バイト**

Clip10

Ypnypn-12バイト**

K

JohnE-13バイト

Ti-84ベーシック

SuperJedi224-17バイト*

R

MickyT-23バイト

OCTAVE / MATLAB

Oebele-24バイト

パリ/ GP

チャールズ-25バイト**

Wolfram / Mathematica

LegionMammal978-27バイト

Perl

Nutki-29バイト

AsciiThenAnsii-34バイト

ルビー

ヘギン-32バイト**

ConfusedMr_C-51バイト**

コモドールベーシック

マーク-37バイト**

PHP

イスマエル・ミゲル-38バイト

VBA

ショーン・チェシャー-40バイト**

パワーシェル

Nacht-41バイト**

Javascript

ラルフマーシャル-41バイト

edc65-54バイト(すべてのブラウザーで利用できるわけではないES6機能が必要です。)

ルア

cryptych-51バイト

Java

RobAu-52バイト**

ジオビット-65バイト

C

Functino-57バイト

Python

CarpetPython-58バイト

Postgre / SQL

アンドリュー-59バイト**

迅速

Skrundz-69バイト

GoatInTheMachine-81バイト

ハスケル

ゼータ-73バイト**

ActionScript

ブライアン-75バイト**

> <>

ConfusedMr_C-76バイト

行く

Kristoffer Sall-Storgaard-78バイト

C#

ブランドン-91バイト**

アンドリュー-105バイト

ユアン-148バイト

スクラッチ

SuperJedi224-102バイト

C ++

Michelfrancis Bustillos-154バイト

ポリグロット

イスマエル・ミゲル(Javascript / ActionScript2)-67バイト


上位10位

マルティセン
アレックスA
ジャクベ
オプティマイザ
ɐɔıʇǝɥʇuʎs/ Ypnypn(順序不明)
ジョンエ
SuperJedi224
ミッキー
オベレ

警告-*マークの付いたエントリは非常に遅いです。

マークされたプログラム済み**まだ適切にテストできていない


待って、サイコロの出目を合計する必要がありますか、それともリスト内のすべての出目だけにする必要がありますか?
マルティセン

5
あなたの質問は、現状では、不明確であるか過度に広範であるとして批判されるでしょう。プログラムをどのように採点するか、プログラムで利用できる方法を具体的かつ客観的な用語で説明しておくと非常に役立ちます。また、の表記は1048576d4一部のユーザーには不明確な場合があります。計算対象を正確に説明し、従う必要のあるガイドラインを提供すると役立ちます。
BrainSteel

2
この問題はあまりにも迅速に行われるため、適切なタイムトライアルにはなりません。
isaacg

12
スタックスニペットリーダーボードを作成して、投稿のリストを手動で最新の状態に保つ必要がないようにすることができます。
アレックスA.

1
私はこのタイトルが大好きです。
ASCIIThenANSI

回答:


10

Pyth- 9 8バイト

randintの合計の明らかな単純な方法を使用します。気づい1048576た分2^20、私は本当に愚かだと感じました。指摘してバイトを節約してくれた@Jakubeに感謝し2^20 = 4^10ます。

smhO4^4T

ランタイムはとてもので、ここでそれをオンラインで実行しない点はありません、それは私のコンピュータ上で完了するためにまだ持っている、恐ろしいです2^10:1がオンラインここでそれを試してみてください

s        Summation
 m       Map
  h      Incr (accounts for 0-indexed randint)
   O4    Randint 4
  ^4T    Four raised to ten

4
8バイトが可能です。2^20 = 4^10
ジャクベ

@ジャクベ、先端に感謝:)
Maltysen

これは私のためにすぐに終わります。
発がん物質

@Carcigenicateは、私が与えたリンクについて話しているのですか?これが変更されたもので、合計のみ1024d4です。
マルティセン

@Maltysenおっと、すみません。はい、それだけです。
発がん物質

9

Perl- 48 44 37 39 34バイト

$-+=rand(4)+1for(1..2**20);print$-

末尾の改行なしで合計を印刷します。(Maltysenに感謝)を置き換えて、印刷の前後の引用符を削除することにより
、4バイトを節約しました2**20
コードを再配置してさらに7バイトを節約しました(Thaylonに感謝します!)
古いコードが0〜4(1〜4でなければなりません)を生成したため、2バイトを失いました。
もう一度、Caekとnutkiのおかげで5バイト節約されました。

適切に記述されたゴルフのないコード:

my $s = 0
$s += int( rand(4) + 1 ) for (1 .. 2**20);
print "$s";

タイマーを接続するのは少し大変でしたが、最終的には機能しました。
SuperJedi224

2
警告を気にしないので... $ s + = int rand(5)for(1..2 ** 20); print $ s
Thaylon

3
int(rand(5))d4は1〜4である必要がありますが、範囲0〜4を返します
。– nutki

@nutki OK、ありがとう。今編集しました。
ASCIIThenANSI

$s+=int rand(4)+1for(1..2**20);print$sintの括弧を削除することも、ストロークを節約するために私にとっては有効です。
Caek

7

APL、11 10バイト

+/?4⍴⍨2*20

これは、1〜4 の2 20 = 1048576のランダムな整数の配列の合計を取るだけです。

+/           ⍝ Reduce by summing a
  ?          ⍝ random integer
   4⍴⍨       ⍝ array with values between 1 and 4
      2*20   ⍝ of length 2^20

タイムスタンプを前後に印刷することにより、TryAPLでこれをベンチマークできます。約0.02秒かかります。

マリヌスとFUZxxlのおかげで1バイト節約できました!


1と5 ??? D4は、あなたが5得ることができない1、2、3または4を与えることができます
ローレンPechtel

@LorenPechtel:すみません、悪いです。それを指摘してくれてありがとう。現在修正されています。脳が疲れた。
アレックスA.

バイトを保存:+/?4⍴⍨2*20
マリナス

小さな改善:+/?4⍴⍨2*20代わりに使用してください。
FUZxxl

1
偶然にも、この答えは決してゴルフではありません。実稼働APLコードでもまったく同じように記述されます。
FUZxxl

7

Ti-84 Basic、17バイト

総フットプリント-プログラムヘッダーのサイズ= 17バイト

実行時間:不明、推定5-6 時間少数のロールのパフォーマンスに基づいてと(したがって、基本的にはあまり良くない)

Σ(randInt(1,4)、A、1,​​2 ^ 20

1
TI-84で実行するための+1。ここでは時間が問題ではないと思います。それらは今では30〜40年前の計算機です。
ASCIIThenANSI

均一な分布ではなく正規分布をサンプリングする関数があると思いますか?ずっと速くなるはずです。
ベンフォークト

@BenVoigt:これはサイコロの回転をシミュレートするためのものであるため、正規分布は適切ではありません。それは均一でなければなりません。
アレックスA.

2
@AlexA .:中央極限定理は、多くの均一なサイコロの合計が正規分布と区別できないことを提供します。ですから、「ローリングのシミュレーション」についてどれだけ独創的であるかによって異なります。
ベンフォークト

1
@MIWright、コミュニケーションのためだけだと思った。少なくとも私が持っているものは単四電池を使用しています。
アルトゥーロトーレスサンチェス

7

R、32 24 23 21バイト

編集:を取り除き、as.integer整数除算を使用しました%/%。少しスピードアップします。

サンプルのヒントを提供してくれたAlex Aと、削除してくれたGiuseppeに感謝します。 r=

sum(sample(4,2^20,T))

でテスト済み

i = s = 0
repeat {
i = i + 1
print(sum(sample(4,2^20,r=T)))
s = s + system.time(sum(sample(4,2^20,r=T)))[3]
if (i == 10) break
}
print (s/10)

出力

[1] 2621936
[1] 2620047
[1] 2621004
[1] 2621783
[1] 2621149
[1] 2619777
[1] 2620428
[1] 2621840
[1] 2621458
[1] 2620680
elapsed 
   0.029 

純粋な速度のために、以下はマイクロ秒で完了します。ただし、ロジックが正しいかどうかはわかりません。結果は、ランダム法と一致しているように見えます。残念なことに、長さが長い。

sum(rmultinom(1,2^20,rep(1,4))*1:4)

これが私がマシンで行ったタイミングの実行です

system.time(for(i in 1:1000000)sum(rmultinom(1,2^20,rep(1,4))*1:4))
                   user                  system                 elapsed 
7.330000000000040927262 0.000000000000000000000 7.370000000000345607987 

あなたは使用してカップルのバイトを保存することができますsample()の代わりにrunif()、すなわちsum(sample(4,2^20,r=T))
アレックスA.

私のコンピューターでベンチマークを行ったところ、sample()実際にも高速です!
アレックスA.

@AlexA。私はコンピュータに近づくときおかげでテストし、変更します
MickyT

これまたは何かを壊さないために、あなたは必要ありませんr=T、ただT交換のために大丈夫です。
ジュゼッペ

1
@ジュゼッペ、ありがとう..これは本当に古いもの
でした-MickyT

6

Python 2、58バイト

オペレーティングシステムから1048576個のランダムな文字を取得し、それぞれの2ビットを取得して加算します。osライブラリを使用すると、ライブラリを使用するよりも数文字節約されるようrandomです。

import os
print sum(1+ord(c)%4 for c in os.urandom(1<<20))

これには、PCで約0.2秒かかります。


6

CJam、12 11バイト

YK#_{4mr+}*

これはかなり前向きです:

YK                  e# Y is 2, K is 20
  #                 e# 2 to the power 20
   _                e# Copy this 2 to the power 20. The first one acts as a base value
    {    }*         e# Run this code block 2 to the power 20 times
     4mr            e# Get a random int from 0 to 3. 0 to 3 works because we already have
                    e# 2 to the power 20 as base value for summation.
        +           e# Add it to the current sum (initially 2 to the power 20)

しかし、これの美しさは本当に速いことです!私のマシン(およびJavaコンパイラーを使用)では、平均で70ミリ秒かかります。

オンライン版は、私のマシン上で周りに1.7秒かかります。

更新:DocMaxのおかげで1バイト節約


オンライン版はここのコンピューターから約6秒かかりますが、それはおそらく、学校が使用を要求しているネットワークやMacbookだけです。家に帰ってからもう一度やります。
SuperJedi224

@ SuperJedi224オンラインバージョンはすべてJavaScriptであり、ネットワーク呼び出しを行いません。Webサイトの指示に従って、Javaバージョンをダウンロードして実行できます。
オプティマイザー

3
私が代わりに0で播種し、2 ^ 20で1 2 ^ 20回の実行、種子を追加する、(悲しいことCJamと私とあまりにも一般的です)何かが欠けていない限り、1つのバイトを保存するには:YK#_{4mr+}*
DocMax

@DocMaxそのとおりです。ありがとう!
オプティマイザー

+1; 私はこの正確な答えを投稿するつもりでした(の4A#代わりにを除くYK#)が、あなたはそれに私を打ち負かした。:)
イルマリカロネン

6

JavaScript(ES6)、54バイト

平均時間<100ミリ秒。スニペットを実行してテストします(Firefoxで)

// This is the answer
f=t=>(i=>{for(t=i;i--;)t+=Math.random()*4|0})(1<<20)|t

// This is the test
test();

function test(){
  var time = ~new Date;
  var tot = f();
  time -= ~new Date;
  
  Out.innerHTML = "Tot: " + tot + " in msec: " + time + "\n" + Out.innerHTML;
}
<button onclick="test()">Repeat test</button><br>
<pre id=Out></pre>

説明

統計パッケージが組み込まれていない場合、Javascriptで100万個の乱数の合計を取得する最も簡単な方法は、100万回random()を呼び出すことです。だから単純に

f=()=>{
   var t = 0, r, i
   for (i=1<<20; i--; ) 
   {
      r = Math.random()*4 // random number between 0 and 3.9999999
      r = r + 1 // range 1 ... 4.999999
      r = r | 0 // truncate to int, so range 1 ... 4
      t = t+r
   }
   return t
}

1を100万回追加することは、100万を追加することとまったく同じです。さらに良いのは、合計を100万で開始してから残りを追加することです。

f=()=>{
   var t, r, i
   for (t = i = 1<<20; i--; ) 
   {
      r = Math.random()*4 // random number between 0 and 3.9999999
      r = r | 0 // truncate to int, so range 0 ... 3
      t = t+r
   }
   return t
}

次に、ゴルフ、一時変数rをドロップし、ローカル変数の宣言をドロップします。tの宣言を短縮するために必要なパラメータですfiグローバル(悪いこと)

f=t=>{
   for(t=i=1<<20;i--;) 
      t+=Math.random()*4|0
   return t
}

次に、名前のない内部関数を使用して「戻り」を回避する方法を見つけます。副作用として、グローバルが使用されないように別のパラメータを取得します

f=t=>(
  (i=>{ // start inner function body
     for(t=i;i--;)t=t+Math.random()*4|0 // assign t without returning it
   })(1<<20) // value assigned to parameter i
  | t // the inner function returns 'undefined', binary ored with t gives t again
) // and these open/close bracket can be removed too

クロムでは機能しません。FFでテストしようとしています。
SuperJedi224

もちろん。ChromeはES5
edc65

1
ES6をサポートしています(ほとんどはchrome:\\ flagsから実験的なjavascriptを有効にすることでのみ利用可能)が、矢印関数はまだサポートされていません
-SuperJedi224

5

Perl、29

必要な長さのテーブルを生成します。

print~~map{0..rand 4}1..2**20

これで構文エラーが発生します。
SuperJedi224

これには、Perlの新しい十分なバージョンが必要です(smartmatch演算子は5.10.1で導入されました。デフォルトでは、後まで利用できなかったと思います)。
マーク

~~はスマートマッチではなく、スカラーコンテキストを強制するための単なるダブルビット反転です。1キャラクタ長い方法はそうprint$x=map...です。新しいバージョンでは、smartmatchのあいまいさのために警告するかもしれませんが、私のシステムとここで警告なしに動作するようです:ideone.com/LAIWzq
nutki

うん、それはIDEoneで動作します。あげます。
SuperJedi224

5

J(12バイト、約9.8ミリ秒)

+/>:?4$~2^20

私はこれが主にメモリ帯域幅に制限があると疑っています:私はそれをシングルコアを最大限に引き出すことさえできません...

次のコードでこれをテストできます。

   timeit =: 13 : '(1000 * >./ ($/x) 6!:2"0 1 y)'
   4 20 timeit '+/>:?4$~2^20'
9.90059

これは20の証跡の4つのグループで実行され、最も速いグループの平均時間のミリ秒数を返します。通訳はこちらにあります


4

Pyth、10バイト

u+GhO4^4TZ

これには、@ MaltysenのPythソリューションよりもわずかに多くのバイトがあります。しかし、私のラップトップでは8.5秒で実行されますが、@ Maltysenのソリューションは実行時間20分で何も解決しませんでした。

しかし、それでもオンラインコンパイラには少し遅すぎます。

説明

u     ^4TZ   start with G = 0, for H in 0, ... 4^10-1:
                G = 
 +GhO4              G + (rand_int(4) + 1)
             result is printed implicitly 

今日の午後にこれをテストします。
SuperJedi224

4

Java、65

言語ごとにスコアがリストされているので、Javaを混ぜてみませんか?ここでゴルフをすることはあまりありません。単純なループですが、最初の試みからいくつかを絞ることができました。

int f(){int i=1<<20,s=i;while(i-->0)s+=Math.random()*4;return s;}

今日の午後にこれをテストします。
SuperJedi224

問題ない。この(低速の)PCでは約80msかかりますが、何に何を使っているのかわかりません。
ジオビット

あなたのプログラムが正しいモデルだとは思いません。私のテストでは、いくつかのロールで0を追加できます。私が理解しているように、ほとんどのd4は1,2,3,4です(0は不可能です)。

4
@ user39526 s(合計)は1<<20(ロールの数)から始まります。これは、各ロールに1つずつ追加するのと同じです。ランダマイザーが0をスローすると、1などがロールされます
。– Geobits

Java 8にアップグレードする必要があります!codegolf.stackexchange.com/a/52919/7021
RobAu

4

Matlab、24

初めての投稿!

sum(randi([1,4],1,2^20))

1048576個の要素の行列を与えるrandi([1,4]、1024)を使用することを望んでいましたが、それよりも多くの文字を使用する二重和が必要でした。

質問で言及された実行速度に関して、timeitランタイムは約0.031秒であると教えてくれます。だから、ほとんど瞬時に。


オクターブオンラインで0.04〜0.05秒を取得しています。
SuperJedi224

4

Haskell、73バイト

import System.Random
f=fmap sum.(sequence.replicate(2^20))$randomRIO(1,4)

使用法:

$ ghci sourcefile.hs
ghci> f
2622130

4

C#:105バイト

using System.Linq;class C{int D(){var a=new System.Random();return new int[1<<20].Sum(i=>a.Next(1,5));}}

ナイス、これは2回間違っていても好きです。2 << 20ではなく、1 << 20です。そして、Random.Nextの2番目のパラメーターはThe *exclusive* upper bound of the range5
edc65

@ edc65これらのエラーをキャッチしていただきありがとうございます。答えを更新しました。
アンドリュー

1
あなたは排除することにより、9つの文字を救うことができるaと移動new System.Random()の内部をSum。確かに、Random毎回新しいものを作成しますが、結果が得られる限り誰も気にしませんか?
LegionMammal978

@ LegionMammal978新しいランダムを何度も作成すると、結果はほとんどランダムではあり
ません-edc65

@ edc65そのため、私はそのルートに行かなかった。提案に従えばどうなるかをテストする機会がありませんでした。
アンドリュー

4

PHP、 38 37バイト

これは非常に単純なアイデアを使用しています:それらをすべて合計します!

また、私はそれ104857610000000000000000000に相当するバイナリであることに気づきました1<<20

コードは次のとおりです。

while($i++<1<<20)$v+=rand(1,4);echo$v

ブラウザでテストします(非常に小さな変更を加えます):

$i=$v=0;while($i++<1<<20)$v+=rand(1,4);printf($v);

コードの変更はすべてコメントで説明されています。


あなたは削除することができます;echo$v
マルタイン

@Martijnほとんどの場合、PHPが文句を言っているので、そこに置いていきました。しかし、私は今それを削除しました。sandbox.onlinephpfunctions.comで動作し、それで十分です。
イスマエルミゲル

4

Mathematica、30 27バイト

Tr[RandomInteger[3,2^20]+1]

Mathematicaには非常に長い関数名があります...


3

C、57バイト

main(a,b){for(b=a=1<<20;a--;b+=rand()%4);printf("%d",b);}

このコードは... 1回動作します。これらのサイコロを再度転がす必要がある場合はsrand(time(0))、14バイトを追加してそこに入れる必要があります。


なぜ追加する必要があるのsrand(time(0))ですか?(申し訳ありませんが、私はCを使用しません。)
ASCIIThenANSI

@ASCIIThenANSI Cの多くの実装はrand、実行ごとに同じ値にシードします。srandRNGをシードし、time(0)1970
。– Functino

初期化しa=b=1<<20たらスキップできますが1+、これにより4バイト節約できます。
-nutki

また、intbefore mainは必須ではありません。
-nutki

やっている人へのヒントt=0、その後t=t (...) +11048576回:もう一度考えてください!(最終的に私の答えを参照)
-edc65

3

PostgreSQL、59バイト

select sum(ceil(random()*4)) from generate_series(1,1<<20);

random()理論上、正確にゼロを生成する可能性のあるわずかな問題を認めます。その場合、サイコロはゼロになります。


あなたは本当に必要はありません;、それは唯一のものですので、クエリを終了するために
MickyT

3

ルビー、32バイト

(1..2**20).inject{|x|x-~rand(4)}

より読みやすい形式で:

(1..2**20).inject(0) do |x|
  x + rand(4) + 1
end

1〜1048576の範囲を作成し、ブロックを何度も繰り返します。ブロックが実行されるたびに、前の反復の値がx(最初は0、デフォルトのinject)として渡されます。各反復では、0〜3(両端を含む)の乱数を計算し、1を加算してd4のローリングをシミュレートし、合計に加算します。

私のマシンでは、実行が非常に高速です(0.25 real, 0.22 user, 0.02 sys)。

Rubyがインストールされている場合は、次を使用して実行できます。 ruby -e 'p (1..2**20).inject{|x|x+rand(4)+1}'pこの方法で実行する場合は出力を確認する必要があります。気にしない場合は省略します。結果が画面に出力されるIRB内で実行するだけです。あなたのために)。Ruby 2.1.6でテストしました。

に取って代わるちょっとしたハックをしたhistocratに感謝x + rand(4) + 1x-~rand(4)ます。


1
仕組みを説明してもらえますか?
ASCIIThenANSI

実際にロードしたい最初のオンラインインタープリターは、メソッドrand()が存在しないという主張です。私は別のものを見つけようとします。
SuperJedi224

さて、動作するものを見つけました。
SuperJedi224

ハックをいじるビット:x-~rand(4)と同等x+rand(4)+1です。
-histocrat

また、あなたは置き換えることができ2**204e10
-histocrat

3

PARI / GP、25バイト

本当に、ここでゴルフをする必要はありません-これはGPで計算を行う簡単な方法です。私のマシンでは90ミリ秒で実行されます。巻き上げにより、+1約20ミリ秒節約できます。

sum(i=1,2^20,random(4)+1)

楽しみのために:PARIでパフォーマンスを最適化する場合、

inline long sum32d4(void) {
  long n = rand64();
  // Note: __builtin_popcountll could replace hamming_word if using gcc
  return hamming_word(n) + hamming_word(n & 0xAAAAAAAAAAAAAAAALL);
}

long sum1048576d4(void) {
  long total = 0;
  int i;
  for(i=0; i<32768; i++) total += sum32d4();
  return total;
}

合計操作数が非常に少ない-xorgensが64ビットワードごとに〜27サイクルを必要とする場合(これを検証できる人はいますか?)数。

これは、同等またはそれ以上の品質の乱数を使用するメソッド間で、最適に近い最悪のケースのパフォーマンスを備えている必要があります。ケース(一度に100万ロール)を組み合わせ、(本質的に)算術コーディングで選択することにより、平均速度を大幅に向上させることができるはずです。


3

Javascript、55 53 50 47 41バイト

for(a=i=1<<20;i--;)a+=(Math.random()*4)|0

非乱数が既知の刺激物であることに気づかなかったので、実際の解決策を投稿する必要があると考えています。軽視しないでください。

解説:上記の他の人が述べたように、回答のロールの数から始めて、各ロールの+1をスキップできます。a= 0、i = 1 << 20と書く必要がないため、2バイト節約できます。別の2は、各ロールに+1を追加しないためです。parseInt関数はMath.floorと同じことを行いますが、2文字短くなります。


この答えは、もともとSuperJedi224と@Andrewでコメントしました1とは全く異なることに注意してください
ラルフ・マーシャル

角かっこと最後のセミコロン(最後のセミコロンのみ)を削除して、さらにいくつかの文字を削減できます。また、現在のバージョンは50文字であり、52文字ではありません。
SuperJedi22415年

SuperJedi-提案をありがとう。問題に遭遇するためだけにブラケットなしでそれを試してみたと思いましたが、おそらく別の問題がありました。いずれにせよ、これはこれから得られるものと同じくらい良いと思います。
ラルフマーシャル

a+=parseInt(Math.random()*4)に短縮される場合がありますa+=1+Math.random()*4&71+それが0かどう転がる場合は気にしている場合のみです。
イスマエルミゲル

これまでゴルフできます:for(a=i=1<<20;i--;)a+=(Math.random()*4)|0、それはたった41バイトです
-SuperJedi224


2

Go、78バイト

ゴルフ

import."math/rand";func r()(o int){for i:=2<<19;i>=0;i--{o+=Intn(4)+1};return}

まだそれに取り組んでいます

ここでオンラインで実行http://play.golang.org/p/pCliUpu9Eq


残念ながら、golang.orgプレイグラウンドは時間操作を適切に実装しておらず、repl.itプレイグラウンドは今すぐロードしたくありません。今日の午後に私ができることを見ていきます。
SuperJedi224


2

Commodore Basic、37バイト

1F┌I=1TO2↑20:C=C+INT(R/(1)*4+1):N─:?C

PETSCII置換:= SHIFT+E/= SHIFT+N=SHIFT+O

サイコロ数が少ないランに基づく推定ランタイム:4.25時間。

C整数を作成して2バイトをゴルフでオフにしようとするのは魅力的で、乱数を暗黙的に丸めます。ただし、Commodore Basicの整数の範囲は-32678〜32767で、回答の中央値が2621440の場合は十分ではありません。



2

ルビー、51 47文字

x=[];(2**20).times{x<<rand(4)+1};p x.inject(:+)

これを行う前にすべての答えを見て、sum(2**20 times {randInt(4)})戦略が実際に突き出たので、それを使用しました。

> <>、76文字

012a*&>2*&1v
|.!33&^?&:-<
3.v < >-:v >
   vxv1v^<;3
  1234    n+
  >>>> >?!^^

私はそれをテストしようとしましたが、私のとき、ブラウザがクラッシュしたので、この1つの作品は、どうかはわからないんだけど、ここでのオンライン通訳よ。


> <>の回答に対して+1を提供します。
SuperJedi224

2

Swift、64バイト

スウィフトでのゴルフは難しい...

func r()->Int{var x=0;for _ in 0..<(2<<19) {x+=Int(arc4random()%4)+1;};return x;}

バージョン2(遅すぎる)

var x=0;for _ in 0..<(2<<19){x+=Int(arc4random()%4)+1;};print(x)

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