Add Random.shuffle().
This commit is contained in:
@@ -46,4 +46,16 @@ foreign class Random {
|
||||
foreign int()
|
||||
int(end) { (float() * end).floor }
|
||||
int(start, end) { (float() * (end - start)).floor + start }
|
||||
|
||||
shuffle(list) {
|
||||
if (list.isEmpty) return
|
||||
|
||||
// Fisher-Yates shuffle.
|
||||
for (i in 0...list.count - 1) {
|
||||
var from = int(i, list.count)
|
||||
var temp = list[from]
|
||||
list[from] = list[i]
|
||||
list[i] = temp
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,4 +48,16 @@ static const char* randomModuleSource =
|
||||
" foreign int()\n"
|
||||
" int(end) { (float() * end).floor }\n"
|
||||
" int(start, end) { (float() * (end - start)).floor + start }\n"
|
||||
"\n"
|
||||
" shuffle(list) {\n"
|
||||
" if (list.isEmpty) return\n"
|
||||
"\n"
|
||||
" // Fisher-Yates shuffle.\n"
|
||||
" for (i in 0...list.count - 1) {\n"
|
||||
" var from = int(i, list.count)\n"
|
||||
" var temp = list[from]\n"
|
||||
" list[from] = list[i]\n"
|
||||
" list[i] = temp\n"
|
||||
" }\n"
|
||||
" }\n"
|
||||
"}\n";
|
||||
|
||||
Reference in New Issue
Block a user