| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | 
							- //package main
 
- //import (
 
- //	"fmt"
 
- //	"math/rand"
 
- //)
 
- type Solution struct {
 
- 	arr []int
 
- 	sol []int
 
- }
 
- func Constructor(nums []int) Solution {
 
- 	solution := Solution{arr: nums}
 
- 	solution.sol = make([]int, len(nums))
 
- 	copy(solution.sol, nums)
 
- 	return solution
 
- }
 
- /** Resets the array to its original configuration and return it. */
 
- func (this *Solution) Reset() []int {
 
- 	copy(this.sol, this.arr)
 
- 	return this.arr
 
- }
 
- /** Returns a random shuffling of the array. */
 
- func (this *Solution) Shuffle() []int {
 
- 	n := len(this.arr)
 
- 	for i := 0; i < n; i++ {
 
- 		j := i + rand.Intn(n-i)
 
- 		this.sol[i], this.sol[j] = this.sol[j], this.sol[i]
 
- 	}
 
- 	return this.sol
 
- }
 
- //type tuple3 struct {
 
- //	_1 int
 
- //	_2 int
 
- //	_3 int
 
- //}
 
- //func main() {
 
- //	sol := Constructor([]int{1, 2, 3})
 
- //	m := make(map[tuple3]int)
 
- //	for i := 0; i < 10000; i++ {
 
- //		arr := sol.Shuffle()
 
- //		m[tuple3{arr[0], arr[1], arr[2]}]++
 
- //	}
 
- //	fmt.Println(m)
 
- //}
 
- /**
 
-  * Your Solution object will be instantiated and called as such:
 
-  * obj := Constructor(nums);
 
-  * param_1 := obj.Reset();
 
-  * param_2 := obj.Shuffle();
 
-  */
 
 
  |