|  | @@ -59,12 +59,29 @@ func indexOf(value int, sequence []int) int {
 | 
	
		
			
				|  |  |  	return -1
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +func getThreeCups(sequence []int, index int) []int {
 | 
	
		
			
				|  |  | +	count := 0
 | 
	
		
			
				|  |  | +	length := len(sequence) - 1
 | 
	
		
			
				|  |  | +	var cups []int
 | 
	
		
			
				|  |  | +	for count < 3 {
 | 
	
		
			
				|  |  | +		if index > length {
 | 
	
		
			
				|  |  | +			index = 0
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +		cups = append(cups, sequence[index])
 | 
	
		
			
				|  |  | +		count++
 | 
	
		
			
				|  |  | +		index++
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	return cups
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  func part1(sequence []int, min, max int) {
 | 
	
		
			
				|  |  |  	index := 0
 | 
	
		
			
				|  |  |  	size := len(sequence)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	for i := 0; i < 10; i++ {
 | 
	
		
			
				|  |  | -		pickup := sequence[index+1 : index+4]
 | 
	
		
			
				|  |  | +		pickup := getThreeCups(sequence, index+1)
 | 
	
		
			
				|  |  |  		for j, _ := range sequence {
 | 
	
		
			
				|  |  |  			if j > index && j < index+4 {
 | 
	
		
			
				|  |  |  				sequence[j] = 0
 | 
	
	
		
			
				|  | @@ -72,7 +89,6 @@ func part1(sequence []int, min, max int) {
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		destination := sequence[index] - 1
 | 
	
		
			
				|  |  | -		fmt.Println(destination)
 | 
	
		
			
				|  |  |  		for {
 | 
	
		
			
				|  |  |  			if !inSequence(destination, pickup) {
 | 
	
		
			
				|  |  |  				break
 | 
	
	
		
			
				|  | @@ -86,41 +102,38 @@ func part1(sequence []int, min, max int) {
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		fmt.Println(sequence)
 | 
	
		
			
				|  |  | -		fmt.Println(destination)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		partialSequence := make([]int, size)
 | 
	
		
			
				|  |  | -		i := index + 1
 | 
	
		
			
				|  |  | -		for {
 | 
	
		
			
				|  |  | -			partialSequence[i] = sequence[i]
 | 
	
		
			
				|  |  | -			if i == index {
 | 
	
		
			
				|  |  | -				i++
 | 
	
		
			
				|  |  | -				break
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			i++
 | 
	
		
			
				|  |  | +		fmt.Println(pickup, destination)
 | 
	
		
			
				|  |  | +		newSequence := make([]int, size)
 | 
	
		
			
				|  |  | +		i = index + 1
 | 
	
		
			
				|  |  | +		j := index + 4
 | 
	
		
			
				|  |  | +		count := 0
 | 
	
		
			
				|  |  | +		for count < size {
 | 
	
		
			
				|  |  | +			count++
 | 
	
		
			
				|  |  |  			if i > size-1 {
 | 
	
		
			
				|  |  |  				i = 0
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		destinationIndex := indexOf(destination, partialSequence)
 | 
	
		
			
				|  |  | -		if destinationIndex < 0 {
 | 
	
		
			
				|  |  | -			log.Fatalf("Wrong destinationIndex: %d", destinationIndex)
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | +			if j > size-1 {
 | 
	
		
			
				|  |  | +				j = 0
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		newSequence := make([]int, size)
 | 
	
		
			
				|  |  | -		i = destinationIndex
 | 
	
		
			
				|  |  | -		for j := destinationIndex; ; j++ {
 | 
	
		
			
				|  |  | -			newSequence[j] = partialSequence[i]
 | 
	
		
			
				|  |  | +			newSequence[i] = sequence[j]
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +			if sequence[j] == destination {
 | 
	
		
			
				|  |  | +				i++
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -			if j == destinationIndex {
 | 
	
		
			
				|  |  | -				j++
 | 
	
		
			
				|  |  |  				for _, cup := range pickup {
 | 
	
		
			
				|  |  | -					newSequence[j] = cup
 | 
	
		
			
				|  |  | -					j++
 | 
	
		
			
				|  |  | +					if i > size-1 {
 | 
	
		
			
				|  |  | +						i = 0
 | 
	
		
			
				|  |  | +					}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +					newSequence[i] = cup
 | 
	
		
			
				|  |  | +					i++
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -				i++
 | 
	
		
			
				|  |  | +				count += 3
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +				j++
 | 
	
		
			
				|  |  |  				continue
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -128,6 +141,7 @@ func part1(sequence []int, min, max int) {
 | 
	
		
			
				|  |  |  			i++
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +		fmt.Println(newSequence)
 | 
	
		
			
				|  |  |  		sequence = newSequence
 | 
	
		
			
				|  |  |  		index++
 | 
	
		
			
				|  |  |  		if index < 0 {
 |