|  | @@ -106,6 +106,7 @@ func sumBad() int {
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +	validTickets = append(validTickets, tickets[0])
 | 
	
		
			
				|  |  |  	return sum
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -129,20 +130,18 @@ func ruleTaken(ruleID int) bool {
 | 
	
		
			
				|  |  |  	return false
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -func establishOrder() {
 | 
	
		
			
				|  |  | -	numberOfFields := len(validTickets[0])
 | 
	
		
			
				|  |  | -	numberOfRules := len(rules)
 | 
	
		
			
				|  |  | +func establishOrder() bool {
 | 
	
		
			
				|  |  | +	numberOfFields := len(rules)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	for i := 0; i < numberOfFields; i++ {
 | 
	
		
			
				|  |  | -		j := 0
 | 
	
		
			
				|  |  | -		for ; j < numberOfRules; j++ {
 | 
	
		
			
				|  |  | +		for j, currentRule := range rules {
 | 
	
		
			
				|  |  |  			if ruleTaken(j) {
 | 
	
		
			
				|  |  |  				continue
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  			ruleValid := true
 | 
	
		
			
				|  |  |  			for _, item := range validTickets {
 | 
	
		
			
				|  |  | -				if !checkRuleOnField(rules[j], item[i]) {
 | 
	
		
			
				|  |  | +				if !checkRuleOnField(currentRule, item[i]) {
 | 
	
		
			
				|  |  |  					ruleValid = false
 | 
	
		
			
				|  |  |  					break
 | 
	
		
			
				|  |  |  				}
 | 
	
	
		
			
				|  | @@ -154,6 +153,8 @@ func establishOrder() {
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	return len(fieldsAndRules) == numberOfFields
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  func checkMyTicket() int {
 | 
	
	
		
			
				|  | @@ -189,7 +190,10 @@ func main() {
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	fmt.Println("Part1:", sumBad())
 | 
	
		
			
				|  |  | +	fmt.Println(len(tickets), len(validTickets))
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	establishOrder()
 | 
	
		
			
				|  |  | +	if !establishOrder() {
 | 
	
		
			
				|  |  | +		log.Fatal("No order!")
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  	fmt.Println("Part2:", checkMyTicket())
 | 
	
		
			
				|  |  |  }
 |