Last active
June 22, 2018 04:42
-
-
Save brv00/0175bdf47dc70cf9e10d02e3c067cced to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(use-module "elf/util.scm") ; dotimes | |
(define (vector-swap! vec i1 i2) ; srfi-133 | |
(let ((t (vector-ref vec i1))) | |
(vector-set! vec i1 (vector-ref vec i2)) | |
(vector-set! vec i2 t))) | |
;; ベクターをシャッフルする。 | |
(define-method (random-shuffle! vec (r Random)) | |
(dotimes (i (vector-length vec)) (vector-swap! vec i (.nextInt r (+ i 1)))) | |
vec) | |
(define-method (random-shuffle! vec (seed Number)) | |
(random-shuffle! vec (Random. (.longValue seed)))) | |
(define-method (random-shuffle! vec) | |
(random-shuffle! vec (Random.))) | |
;; ベクターをシャッフルする。全ての要素が元の位置から移動する。 | |
(define-method (random-shuffle1! vec (r Random)) | |
(let ((len-1 (- (vector-length vec) 1))) | |
(dotimes (i len-1) | |
(vector-swap! vec (- len-1 i) (.nextInt r (- len-1 i))))) | |
vec) | |
(define-method (random-shuffle1! vec (seed Number)) | |
(random-shuffle1! vec (Random. (.longValue seed)))) | |
(define-method (random-shuffle1! vec) | |
(random-shuffle1! vec (Random.))) | |
;; srfi-133 の vector-copy。範囲チェックはなし。 | |
(define-method (vector-copy vec start end fill) | |
(let* ((len (- end start)) (new-vector (make-vector len fill))) | |
(dotimes (i (min len (- (vector-length vec) start))) | |
(vector-set! new-vector i (vector-ref vec (+ start i)))) | |
new-vector)) | |
(define-method (vector-copy vec start end) | |
(vector-copy vec start end #null)) | |
(define-method (vector-copy vec start) | |
(vector-copy vec start (vector-length vec) #null)) | |
(define-method (vector-copy vec) | |
(vector-copy vec 0 (vector-length vec) #null)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment