|
@@ -29,6 +29,43 @@ func readInput(file *os.File) []int {
|
|
|
return numbers
|
|
|
}
|
|
|
|
|
|
+func indexOf(numbers []int, number int) int {
|
|
|
+ for i := range numbers {
|
|
|
+ if numbers[i] == number {
|
|
|
+ return i
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return -1
|
|
|
+}
|
|
|
+
|
|
|
+func establishNewIndex(size int, current int, value int) int {
|
|
|
+ delta := current + value
|
|
|
+ if delta < 0 {
|
|
|
+ delta = 0 - delta
|
|
|
+ rest := delta % size
|
|
|
+
|
|
|
+ return size - 1 - rest
|
|
|
+ }
|
|
|
+
|
|
|
+ return delta % size
|
|
|
+}
|
|
|
+
|
|
|
+func mix(numbers []int) []int {
|
|
|
+ size := len(numbers)
|
|
|
+ mixed := make([]int, size)
|
|
|
+ copy(mixed, numbers)
|
|
|
+
|
|
|
+ for i := range numbers {
|
|
|
+ currentIndex := indexOf(mixed, numbers[i])
|
|
|
+ newIndex := establishNewIndex(size, i, numbers[i])
|
|
|
+
|
|
|
+ fmt.Println(currentIndex, newIndex, numbers[i])
|
|
|
+ }
|
|
|
+
|
|
|
+ return mixed
|
|
|
+}
|
|
|
+
|
|
|
func main() {
|
|
|
if len(os.Args) < 2 {
|
|
|
log.Fatal("You need to specify a file!")
|
|
@@ -42,5 +79,5 @@ func main() {
|
|
|
}
|
|
|
|
|
|
numbers := readInput(file)
|
|
|
- fmt.Println(numbers)
|
|
|
+ fmt.Println(mix(numbers))
|
|
|
}
|