証拠の関数はこれです。
投稿者: ___
投稿日:2011/09/12 02:04
どうしてこんなことになったのか、私にはわかりません。
これをあなたが読んだなら、その時、私はダラけているでしょう。
…やる気があるか、ないかの違いはあるでしょうが。
これを読んだあなた。どうか意思を継いでください。それだけが私の望みです。
TDA
こういうネタばっかりじゃないか。
いや、最近汎用関数の公開みたいなものが流行ってるみたいなので、
「一応生きてるんだぞ」というアッピルのために投げてみようかなと。
懐かしの地雷ゲーにアクティビティフィードを利用した
パスワード機能を付けようかなと目論んでいたのですが、
インターフェースの作成あたりで爆死。継続しないので力にならぬ。
前述のとおり、使いたい方がどうぞお使いください。
最近の運営様の活躍っぷりを見てると、普通に入力式のパスワードなんて
公式関数で実装してもらえるんじゃね?とか考えた結果がコレだよ。
甘えは怠けに繋がるから良くないんですけど、現在進行形でこのザマでござる。
ツイート
これをあなたが読んだなら、その時、私はダラけているでしょう。
…やる気があるか、ないかの違いはあるでしょうが。
これを読んだあなた。どうか意思を継いでください。それだけが私の望みです。
TDA
こういうネタばっかりじゃないか。
いや、最近汎用関数の公開みたいなものが流行ってるみたいなので、
「一応生きてるんだぞ」というアッピルのために投げてみようかなと。
懐かしの地雷ゲーにアクティビティフィードを利用した
パスワード機能を付けようかなと目論んでいたのですが、
インターフェースの作成あたりで爆死。継続しないので力にならぬ。
前述のとおり、使いたい方がどうぞお使いください。
まえがきー
40文字限定 初級中級上級に分ける。
1000000000100000000010000000001000000000
タイムをそれぞれ3桁として、9文字使用することにする
0050231150100000000010000000001000000000
~~~~~~~~~
それぞれに対して678を各桁に印加。ループ方式にする→01234567890123456789012…(x+6)%10
逆の時マイナスが出ると怠いので(x+4)%10とする
6736917830100000000010000000001000000000
~~~~~~~~~
10の倍数文字目をフォーマット判断用に設定、ランダムだが必ず3の倍数になる(x%3 == 0)
6736917836100000000310000000091000000003
~ ~ ~ ~
次いで各ハイスコア者の名前を保存。10文字とするか9文字で10字目をフォーマット判断用にするか
使用できる文字は3文字?
abcdefghijklmnopqrstuvwxyz 26文字*2=52
52を3文字フォーマットに直すと4進数くらいが丁度いいかな
使用文字を無作為に摘出 6uwq を右から下位とする。
qqq qqw qqu qq6 qwq qww qwu qw6 quq quw quu qu6 q6q q6w q6u q66 0 1 2 3 4 5 6 7 8 9 a b c d e f
wqq wqw wqu wq6 wwq www wwu ww6 wuq wuw wuu wu6 w6q w6w w6u w66 g h i j k l m n o p q r s t u v
uqq uqw uqu uq6 uwq uww uwu uw6 uuq uuw uuu uu6 u6q u6w u6u u66 w x y z A B C D E F G H I J K L
6qq 6qw 6qu 6q6 6wq 6ww 6wu 6w6 6uq 6uw 6uu 6u6 66q 66w 66u 666 M N O P Q R S T U V W X Y Z -
例として名前をabc def gHIとする
6736917836qqqqqwqqu3qq6qwqqww9qwuuw6uuq3
~~~~~~~~~ ~~~~~~~~~ ~~~~~~~~~
このままだとバレやすいので、順番に10文字ごとに1文字ずつ拾って並び替える
6736917836
qqqqqwqqu3
qq6qwqqww9
qwuuw6uuq3
6qqq7qqw3q6u6qqu9qww1wq67qqu8qwu3uwq6393
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
解読手順
a[40]の配列に上記暗号を入力させる
a[36,37,38,39]が3の倍数かどうかを確かめる
初級のスコアを取得 ((a[0]+4)%10)*100+((a[4]+3)%10)*10+((a[8]+2)%10)
中級のスコアを取得 ((a[12]+4)%10)*100+((a[16]+3)%10)*10+((a[20]+2)%10)
上級のスコアを取得 ((a[24]+4)%10)*100+((a[28]+3)%10)*10+((a[32]+2)%10)
初級の名前を取得
関数c(関数b(関数a(1),関数a(5),関数a(9))) 関数c(関数b(関数a(13),関数a(17),関数a(21))) 関数c(関数b(関数a(25),関数a(29),関数a(33)))
中級の名前を取得
関数c(関数b(関数a(2),関数a(6),関数a(10))) 関数c(関数b(関数a(14),関数a(18),関数a(22))) 関数c(関数b(関数a(26),関数a(30),関数a(34)))
上級の名前を取得
関数c(関数b(関数a(3),関数a(8),関数a(11))) 関数c(関数b(関数a(15),関数a(19),関数a(23))) 関数c(関数b(関数a(27),関数a(31),関数a(35)))
関数a → qwu6 を0~3の数字にして返す
関数b → 入力された3つの数字を4進数から10進数にして返す
関数c → 入力された10進数を文字にして返す
# qwu6を0~3にして返す
def F_a(word)
case (word)
when "q"
return 0;
when "w"
return 1;
when "u"
return 2;
when "6"
return 3;
end;
speak("error : fanc_a else");
end;
# 3並びの数字を4進数から10進数に変換して返す
def F_b(aa , bb , cc)
if((aa>3)||(bb>3)||(cc>3))
speak("error : fanc_b over");
end;
return (aa*16)+(bb*4)+(cc);
end;
# 入力された数字を文字で返す
def F_c(x)
if(x>63)
speak("error : fanc_c over");
end;
case (x)
when 0
return "0";
when 1
return "1";
when 2
return "2";
when 3
return "3";
when 4
return "4";
when 5
return "5";
when 6
return "6";
when 7
return "7";
when 8
return "8";
when 9
return "9";
when 10
return "a";
when 11
return "b";
when 12
return "c";
when 13
return "d";
when 14
return "e";
when 15
return "f";
when 16
return "g";
when 17
return "h";
when 18
return "i";
when 19
return "j";
when 20
return "k";
when 21
return "l";
when 22
return "m";
when 23
return "n";
when 24
return "o";
when 25
return "p";
when 26
return "q";
when 27
return "r";
when 28
return "s";
when 29
return "t";
when 30
return "u";
when 31
return "v";
when 32
return "w";
when 33
return "x";
when 34
return "y";
when 35
return "z";
when 36
return "A";
when 37
return "B";
when 38
return "C";
when 39
return "D";
when 40
return "E";
when 41
return "F";
when 42
return "G";
when 43
return "H";
when 44
return "I";
when 45
return "J";
when 46
return "K";
when 47
return "L";
when 48
return "M";
when 49
return "N";
when 50
return "O";
when 51
return "P";
when 52
return "Q";
when 53
return "R";
when 54
return "S";
when 55
return "T";
when 56
return "U";
when 57
return "V";
when 58
return "W";
when 59
return "X";
when 60
return "Y";
when 61
return "Z";
when 62
return "-";
when 63
return " ";
end;
end;
# xにyを足す 但し0~zの範囲をループする
def F_d(x , y , z)
x=x+y;
if(x<0)
x=z;
elsif(x>z)
x=0;
end;
return x;
end;
最近の運営様の活躍っぷりを見てると、普通に入力式のパスワードなんて
公式関数で実装してもらえるんじゃね?とか考えた結果がコレだよ。
甘えは怠けに繋がるから良くないんですけど、現在進行形でこのザマでござる。
コメントする
コメントするには、ログインする必要があります。
パスワードをアクティビティフィードで出力するということは、
今までのパスワードも累積されて表示されるということで、
「このパスだとこのスコアになるから、多分こっからここが中級のスコアで~」
みたいな解析されて、改造スコアを入力してプレイ後にアクティビティ出力されたら嫌だなー
なんて妄想しながら書いてたもので。
描いてもらうか自分で描くか割と悩んでます。
新しいスプライト関数も出てきましたしどうしよっかな。