小ワザ|モジュール
配列要素のシャッフル †
指定した配列の要素の並びをランダムに並び替えます。
HSP3
1
2
3
4
5
6
7
8
9
10
11
|
| #module
#deffunc dimmix array arr
mx = length(arr)
repeat mx
r = cnt + rnd(mx - cnt)
temp = arr(r)
arr(r) = arr(cnt)
arr(cnt) = temp
loop
return
#global
|
+
| | hsp2
|
hsp2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
| #module
#deffunc dimmix val
mref array, 16
mref pval, 1024
mx = pval.2
p = mx
repeat mx
rnd r, p
p --
tmp = array.r
array.r = array.p
array.p = tmp
loop
return
#global
|
|
1
2
3
4
5
6
7
8
|
| dim a, 10
a = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
dimmix a
repeat 10
mes "a."+ cnt +" = "+ a.cnt
loop
stop
|
a.0 = 9
a.1 = 3
a.2 = 0
a.3 = 2
a.4 = 4
a.5 = 7
a.6 = 5
a.7 = 6
a.8 = 8
a.9 = 1
|
|
|
a.0 = 1
a.1 = 9
a.2 = 8
a.3 = 2
a.4 = 0
a.5 = 4
a.6 = 3
a.7 = 7
a.8 = 6
a.9 = 5
|
|
|
- 数値型配列(1次元限定か?)の要素をランダムな並びにします。--kz3
- モジュールの汎用性を考えてモジュール側で値の代入を行っていません。--kz3
- トランプに載せたかった;; -- kz3
- 移動もしくはコピーしてもいいですよw -- Charlotte
- またまた早い^^;しかしトランプ限定ではなく今回の迷路の方向にも使える、要は対象の配列が何を表現するものなのか、でこのモジュールの意味が変わってくるのでやっぱりココで^^;--kz3
- リンクでも張ってみては? -- Charlotte
- そうですね、トランプのシャッフルの考え方を書こうと思います^^ -- kz3
- プリプロセッサ命令を使わずに作るとどうなりますか? -- xx?
- どこでプリプロセッサ命令が使われていますか?#module〜#globalのことだとしたら、これをサブルーチンにするのは基本を押さえられていれば出来ることだと思います。 -- kz3
- すいません。HSPのプログラムガイドが分かりづらかったもので。 -- xx?
- なんか誰かが追加してくれたHSP3バージョンがHSP2バージョンと微妙に互換を保っていなかったので直しました。 -- kz3
- 全く同じだとrndの使い方が変わっただけなので、結果が比較できるように「xxバージョン」の表記をなくしました。 -- kz3