#freeze
項目
メインページ
ルール ~v02
Q&Aマニュアル
質問掲示板v02
戦史と紹介
箱庭戦史
編集方法
運営について
箱庭百科管理本部
ジョブについて
バグ管理
リンク集
アクセス順位
phpBB(hakojoy掲示板)簡易マニュアル
Smart access!
箱庭百科復旧について
箱庭百科事典復旧プロジェクト本部
画像資料集v01_v02収集ページ
検索
ツールボックス
新しいページの作成
バックアップの表示
リンク元
最近更新したページ
全ページ
ヘルプ
凍結
アップロード
ページ名の変更
最新の64件
2024-03-24
RecentDeleted
2023-09-02
ZOOM ZONE
2023-08-05
第十回箱庭オフ(10年後オフ)
2023-02-07
06096936143986387dfbsdwa
2022-10-30
MenuBar
2022-10-01
Z.Z.shelf
2022-07-25
zoom zone
2022-07-17
note/Weathercock
2022-06-16
9131158703189819rgthdfg
7268593926192111ggrtbn
8879972819234518rgthdfg
5199021783102029ggrtbn
7470158165765897sdsddsa
788060316423532wewesdcfsa
9158858349747969sdsddsa
5878307120454183wewesdcfsa
16660530507838422sdsddsa
09357427257595874wewesdcfsa
4974859137337371sdsddsa
456638878671783wewesdcfsa
9036496777148892sdsddsa
8930684995163751wewesdcfsa
27574437063024915sdsddsa
7039423885276632wewesdcfsa
16710886035910044vcgfgf
44396572220131336gfnvcbn
7043323150930128vcgfgf
5326529727367502gfnvcbn
672419988224302vcgfgf
1503052094598034gfnvcbn
3270109506707737gfnvcbn
523510833320523vcgfgf
7846369788509882gfnvcbn
22740879693341354vcgfgf
6579494223190363gfnvcbn
7592624395970806vcgfgf
7626896820659783grgbs
01326563738099118qwdcsa
254020795939623qwdcsa
9158233036044428grgbs
08290255367024146grgbs
05759561003034919qwdcsa
4328961417626642qwdcsa
24789964267293274grgbs
4468464615547769qwdcsa
8097743001336342vffergf
12528860952445808rtgnhgfnb
6186022185841518dffsdb
5609738605620069dffsdb
759367502764877dffsdb
9015021630640969dffsdb
2022-06-15
4338451922171933vbdfrf
5954960625058201vbdfrf
31176826940938573vbdfrf
4166002996674132vbdfrf
1432316020250859vbdfrf
8750729460765918vbdfrf
35967824895221656vbdfrf
597855145662362vbdfrf
6099176107465103vbdfrf
0017802990717492584vbdfrf
2832472955960563vbdfrf
7270205255789519vbdfrf
8971620799839162vbdfrf
本文
ノート
編集
差分
てくね の編集
#setlinebreak(on) ここに書いてあるのは全部推測で、事実とは異なる場合があります 鵜呑みにしないでください ---- 以前から気になっていた隊移動についても調べる 隊移動に関する不思議な挙動をあげていく -''挙動1'':同一ターンに何回隊移動させても、派遣位置は1回目の隊移動と2回目の隊移動以外の位置にはならない 3回目の隊移動の派遣位置は1回目の隊移動の派遣位置と同じ、4回目の隊移動の派遣位置は2回目の隊移動の派遣位置と同じ 5回目の隊移動の派遣位置は1回目の隊移動の派遣位置と同じ、6回目の隊移動の派遣位置は2回目の隊移動の派遣位置と同じ ...... 以下ループ -''挙動2'':飛行・海上のユニットと海中のユニットを別の隊にして、同一ターンに同一の島にそれぞれ派遣すると、海中のユニットは(敵・味方問わず)飛行・海上のユニットの下に派遣される ---- 上記の挙動が説明できるような隊移動のアルゴリズムを推測 艦隊1:飛行・海上ユニット 艦隊2:海中ユニット ''挙動1の発生原理'' -1回目の隊移動 乱数によって艦隊1の派遣位置を(X1,Y1)に決定 艦隊1を(X1,Y1)に派遣 -2回目の隊移動 乱数によって艦隊1の派遣位置を(X1,Y1)に決定 (X1,Y1)には既に艦隊1がいるため派遣不可 再度乱数によって艦隊1の派遣位置を(X2,Y2)に決定 艦隊1を(X2,Y2)に派遣 -3回目の隊移動 乱数によって艦隊1の派遣位置を(X1,Y1)に決定 2回目の隊移動で艦隊1は(X1,Y1)から(X2,Y2)に移動したため、(X1,Y1)に派遣可能 艦隊1を(X1,Y1)に派遣 -4回目の隊移動 ……以下ループ ''挙動2の発生原理'' -艦隊1の隊移動 乱数によって艦隊1の派遣位置を(X1,Y1)に決定 艦隊1を(X1,Y1)に派遣 -艦隊2の隊移動 乱数によって艦隊2の派遣位置を(X1,Y1)に決定 (X1,Y1)には既に艦隊1がいるが、海中階層では派遣可能 艦隊2を(X1,Y1)に派遣 ---- 乱数の発生について、仮説を立てる ''仮説1'' 隊移動する際に乱数の初期化が行われている 隊移動 ↓ 乱数初期化 ↓ 乱数による派遣位置決定 ''仮説2'' あらかじめ乱数によって派遣位置と順番を決めておき、隊移動する際は順番通りに決められた位置に派遣する 乱数発生 ↓ 乱数による派遣位置配列作成 隊移動 ↓ 派遣位置配列を参照 ↓ 派遣位置決定 ---- 仮説1と仮説2の違い もし仮説1であれば、擬似乱数のseed値を特定すると乱数調整が可能になる 乱数調整ができると…… -''派遣位置を自由に決められる'' -''掘削数量1で必ず油田が見つかる''(高速掘削でも同様) -''残骸売却で必ずクリスタルが見つかる''(どのクリスタルを発見するかも決められる) -''全ての災害を操れる''(敵の艦隊に隕石を落とす等) 仮説2であれば、擬似乱数のseed値を特定すると -''派遣位置が事前に分かる'' ---- 前回同様、ソースコードを読む ターン消費無しの隊移動はhakojoy独自の改造 ↓ 通常の隊移動のソースコードから推測 hako-turn.cgiに関数moveFleetを発見 # 艦隊移動 my($tx, $ty, $tLv); foreach $i (0..$tIsland->{'pnum'}) { $tx = $tIsland->{'rpx'}[$i]; $ty = $tIsland->{'rpy'}[$i]; $tLv = $tLandValue->[$tx][$ty]; pnum,rpx,rpyの定義を探す hako-main.cgiに関数makeRandomIslandPointArrayを発見 # (0,0)から(size - 1, size - 1)までの数字が一回づつ出てくるように # $pnum($pointNumber)(@rpx, @rpy)を設定 sub makeRandomIslandPointArray { my($island) = @_; undef $island->{'rpx'}; undef $island->{'rpy'}; my(@rpx, @rpy, $map, @x, @y, $xsize, $ysize, $pnum); $map = $island->{'map'}; @x = @{$map->{'x'}}; @y = @{$map->{'y'}}; $xsize = @x; $ysize = @y; $pnum = $xsize * $ysize; my($x); # 初期値 @rpx = (@x) x $ysize; foreach $y (@y) { push(@rpy, ($y) x $xsize); } # シャッフル my($i, $j); for ($i = $pnum; --$i; ) { $j = int(rand($i+1)); next if($i == $j); @rpx[$i,$j] = @rpx[$j,$i]; @rpy[$i,$j] = @rpy[$j,$i]; } $island->{'pnum'} = $pnum - 1; $island->{'rpx'} = \@rpx; $island->{'rpy'} = \@rpy; } 再び関数moveFleetを読む ……関数makeRandomIslandPointArrayの呼び出しは無し 関数makeRandomIslandPointArrayの呼び出されている箇所を探す hako-turn.cgiの関数turnMainで発見 # 座標配列を作る foreach $i (0..$islandNumber) { $island = $Hislands[$order[$i]]; makeRandomIslandPointArray($island); } 更新の最初に、島ごとに座標配列を作っている この後、コマンドチェックが入るので''仮説2が正しいと推測'' ---- seed値の特定 hako-main.cgiで発見 # 乱数の初期化 srand(time() ^ ($$ + ($$ << 15))); hako-main.cgiが実行される時間は決まっているため、一見するとseed値の特定は可能そうだが...... 特殊変数$$はプロセスIDの値を持つため、seed値の推測は不可能 乱数を使って悪さはできない ---- どんな事ができるか -隊移動の派遣位置をループさせない このぐらいしか思いつかない ---- 意見や指摘 #comment(below) - オナニー乙wwwwwwwwwwwwwwwwwwwww -- &new{2013-02-12 (火) 21:49:41}; ---- 参照回数 &counter(total);
タイムスタンプを変更しない
#setlinebreak(on) ここに書いてあるのは全部推測で、事実とは異なる場合があります 鵜呑みにしないでください ---- 以前から気になっていた隊移動についても調べる 隊移動に関する不思議な挙動をあげていく -''挙動1'':同一ターンに何回隊移動させても、派遣位置は1回目の隊移動と2回目の隊移動以外の位置にはならない 3回目の隊移動の派遣位置は1回目の隊移動の派遣位置と同じ、4回目の隊移動の派遣位置は2回目の隊移動の派遣位置と同じ 5回目の隊移動の派遣位置は1回目の隊移動の派遣位置と同じ、6回目の隊移動の派遣位置は2回目の隊移動の派遣位置と同じ ...... 以下ループ -''挙動2'':飛行・海上のユニットと海中のユニットを別の隊にして、同一ターンに同一の島にそれぞれ派遣すると、海中のユニットは(敵・味方問わず)飛行・海上のユニットの下に派遣される ---- 上記の挙動が説明できるような隊移動のアルゴリズムを推測 艦隊1:飛行・海上ユニット 艦隊2:海中ユニット ''挙動1の発生原理'' -1回目の隊移動 乱数によって艦隊1の派遣位置を(X1,Y1)に決定 艦隊1を(X1,Y1)に派遣 -2回目の隊移動 乱数によって艦隊1の派遣位置を(X1,Y1)に決定 (X1,Y1)には既に艦隊1がいるため派遣不可 再度乱数によって艦隊1の派遣位置を(X2,Y2)に決定 艦隊1を(X2,Y2)に派遣 -3回目の隊移動 乱数によって艦隊1の派遣位置を(X1,Y1)に決定 2回目の隊移動で艦隊1は(X1,Y1)から(X2,Y2)に移動したため、(X1,Y1)に派遣可能 艦隊1を(X1,Y1)に派遣 -4回目の隊移動 ……以下ループ ''挙動2の発生原理'' -艦隊1の隊移動 乱数によって艦隊1の派遣位置を(X1,Y1)に決定 艦隊1を(X1,Y1)に派遣 -艦隊2の隊移動 乱数によって艦隊2の派遣位置を(X1,Y1)に決定 (X1,Y1)には既に艦隊1がいるが、海中階層では派遣可能 艦隊2を(X1,Y1)に派遣 ---- 乱数の発生について、仮説を立てる ''仮説1'' 隊移動する際に乱数の初期化が行われている 隊移動 ↓ 乱数初期化 ↓ 乱数による派遣位置決定 ''仮説2'' あらかじめ乱数によって派遣位置と順番を決めておき、隊移動する際は順番通りに決められた位置に派遣する 乱数発生 ↓ 乱数による派遣位置配列作成 隊移動 ↓ 派遣位置配列を参照 ↓ 派遣位置決定 ---- 仮説1と仮説2の違い もし仮説1であれば、擬似乱数のseed値を特定すると乱数調整が可能になる 乱数調整ができると…… -''派遣位置を自由に決められる'' -''掘削数量1で必ず油田が見つかる''(高速掘削でも同様) -''残骸売却で必ずクリスタルが見つかる''(どのクリスタルを発見するかも決められる) -''全ての災害を操れる''(敵の艦隊に隕石を落とす等) 仮説2であれば、擬似乱数のseed値を特定すると -''派遣位置が事前に分かる'' ---- 前回同様、ソースコードを読む ターン消費無しの隊移動はhakojoy独自の改造 ↓ 通常の隊移動のソースコードから推測 hako-turn.cgiに関数moveFleetを発見 # 艦隊移動 my($tx, $ty, $tLv); foreach $i (0..$tIsland->{'pnum'}) { $tx = $tIsland->{'rpx'}[$i]; $ty = $tIsland->{'rpy'}[$i]; $tLv = $tLandValue->[$tx][$ty]; pnum,rpx,rpyの定義を探す hako-main.cgiに関数makeRandomIslandPointArrayを発見 # (0,0)から(size - 1, size - 1)までの数字が一回づつ出てくるように # $pnum($pointNumber)(@rpx, @rpy)を設定 sub makeRandomIslandPointArray { my($island) = @_; undef $island->{'rpx'}; undef $island->{'rpy'}; my(@rpx, @rpy, $map, @x, @y, $xsize, $ysize, $pnum); $map = $island->{'map'}; @x = @{$map->{'x'}}; @y = @{$map->{'y'}}; $xsize = @x; $ysize = @y; $pnum = $xsize * $ysize; my($x); # 初期値 @rpx = (@x) x $ysize; foreach $y (@y) { push(@rpy, ($y) x $xsize); } # シャッフル my($i, $j); for ($i = $pnum; --$i; ) { $j = int(rand($i+1)); next if($i == $j); @rpx[$i,$j] = @rpx[$j,$i]; @rpy[$i,$j] = @rpy[$j,$i]; } $island->{'pnum'} = $pnum - 1; $island->{'rpx'} = \@rpx; $island->{'rpy'} = \@rpy; } 再び関数moveFleetを読む ……関数makeRandomIslandPointArrayの呼び出しは無し 関数makeRandomIslandPointArrayの呼び出されている箇所を探す hako-turn.cgiの関数turnMainで発見 # 座標配列を作る foreach $i (0..$islandNumber) { $island = $Hislands[$order[$i]]; makeRandomIslandPointArray($island); } 更新の最初に、島ごとに座標配列を作っている この後、コマンドチェックが入るので''仮説2が正しいと推測'' ---- seed値の特定 hako-main.cgiで発見 # 乱数の初期化 srand(time() ^ ($$ + ($$ << 15))); hako-main.cgiが実行される時間は決まっているため、一見するとseed値の特定は可能そうだが...... 特殊変数$$はプロセスIDの値を持つため、seed値の推測は不可能 乱数を使って悪さはできない ---- どんな事ができるか -隊移動の派遣位置をループさせない このぐらいしか思いつかない ---- 意見や指摘 #comment(below) - オナニー乙wwwwwwwwwwwwwwwwwwwww -- &new{2013-02-12 (火) 21:49:41}; ---- 参照回数 &counter(total);
テキスト整形のルールを表示する
ログインまたはアカウント作成