実践的内容:
次のような定義をしておく。
M = 2**64 | |
A = 0x5d588b656c078965 | |
B = 0x269ec3 | |
MAX = 2**48-1 | |
N = 3 | |
As, Bs = [A], [B] | |
(N-1).times do |i| | |
As[i+1] = (As[i] * A) % M | |
Bs[i+1] = (Bs[i] * A + B) % M |
for i = 0, 0x30 do | |
memory.registerexec(0x0201FA20 + i, function () | |
local addr = memory.getregister("curr_insn_addr") | |
local thumb = true | |
print(string.format("%.8x %s", addr, emu.disasm(addr, thumb))) | |
emu.pause() | |
end) | |
end | |
:0201FA20 B430 push {r4-r5} ; レジスタをスタックに退避 | |
:0201FA22 490C ldr r1, [pc, #30] ; 021d0ae4 (is &mt[0] - 8) | |
:0201FA24 2427 mov r4, #27 | |
:0201FA26 6088 str r0, [r1, #8] ; mt[0] = s | |
:0201FA28 490B ldr r1, [pc, #2c] ; 0210ec00 (is &mti) | |
:0201FA2A 2001 mov r0, #1 | |
:0201FA2C 6008 str r0, [r1, #0] ; mti = 0 | |
:0201FA2E 490B ldr r1, [pc, #2c] ; r1 = 021d0af0 (is &mt[1]) | |
:0201FA30 4B0B ldr r3, [pc, #2c] ; 6c078965 | |
:0201FA32 0124 lsl r4, r4, #4 ; r4 = 0x27 << 4 = 0x270 = 624 |
実践的内容:
次のような定義をしておく。
#include <stdio.h> | |
#include <stdint.h> | |
#include <inttypes.h> | |
#include <assert.h> | |
#include <vector> | |
#include <map> | |
typedef uint32_t u32; | |
typedef uint64_t u64; |
0 ハジメ | |
1 ツギコ | |
2 イチミ | |
3 ミライ | |
4 チユ | |
5 パソキチ | |
6 アートス | |
7 アリョーナ | |
8 アッツォ | |
9 アントニナ |
Rubyの実行環境が必要です。 | |
kuji-list.rbでリスト出力できます。正しい結果になるのかわからないです。 | |
実際には出てこない客もまじります。 | |
客を0人にしておいて次の日にアベニューに入ると結果がよくなるかもしれません。 | |
siborikomi.rbで出力したリストから絞り込みができます。 | |
たとえばアートスとアリョーナが出てくる行を探すには「アートス アリョーナ」と入力。 | |
使い方: アベニューの客を0人にする。そして次の日に来たファンの名前を入力する。ジムリーダーは除く。これを2回繰り返す。 操作の間お店を開いているファンが変わったりしないように。訪れたファンの名前は1日目と2日目とで同じ人数だけ入力する必要があり。
バイナリはavenue-seed-search-x64.exeとavenue-seed-search.exeの2つあります。64bit環境の人は前者をご利用ください。
Visual C++のランタイムが必要かもしれません。 http://www.microsoft.com/ja-jp/download/details.aspx?id=40784
2014/10/7追記: プラットフォームツールセットをVisual Studio 2013 - Windows XP (v120_xp)にかえておきました
// emcc -O2 avenue-seed-search.cpp -o avenue-seed-search.js --pre-js pre.js --js-library library.js -s EXPORTED_FUNCTIONS="['_setOpenedShops', '_setEmerged', '_setNumDays', '_solve']" -s ASYNCIFY=1 | |
#include <stdio.h> | |
#include <stdint.h> | |
#include <inttypes.h> | |
#include <string> | |
#include <vector> | |
#include <iostream> | |
#include <sstream> | |
#include <algorithm> |