Cleaned up code for part two of day 6.
This commit is contained in:
		| @@ -1,55 +1,35 @@ | |||||||
| # "constants": | # "constants": | ||||||
| DAYS = 256 | total_fish = 0 | ||||||
|  |  | ||||||
| # intialize shared data: | # intialize shared data: | ||||||
| fish_reproducing_on_day = [] | fish_reproducing_on_day = [] | ||||||
| for i in range(0, DAYS + 9): |  | ||||||
|     fish_reproducing_on_day.append(0) |  | ||||||
|  |  | ||||||
| # functions: | # functions: | ||||||
| def SimulateFish(days_until_next_fish, total_days_left): |  | ||||||
|     # # DEBUG(dev): |  | ||||||
|     # print('SimulateFish(', days_until_next_fish, ',', total_days_left, ')') |  | ||||||
|  |  | ||||||
|     # If we're past the final date, don't count any more: |  | ||||||
|     if(total_days_left - days_until_next_fish <= 0): |  | ||||||
|         # add 1 for THIS fish |  | ||||||
|         return 1 |  | ||||||
|  |  | ||||||
|     total = 0 |  | ||||||
|     # Add up all the totals of the fish this one is going to spawn |  | ||||||
|     for i in range(total_days_left - days_until_next_fish, 0, -7): |  | ||||||
|         total += SimulateFish(9, i) |  | ||||||
|     # Add this fish, as well |  | ||||||
|     total += 1 |  | ||||||
|  |  | ||||||
|     # Return grand total from this fish (INCLUDING this fish) |  | ||||||
|     return total |  | ||||||
|  |  | ||||||
| def SimulateFishByDay(current_day): | def SimulateFishByDay(current_day): | ||||||
|     fish_reproducing_on_day[current_day + 7] += fish_reproducing_on_day[current_day] |     fish_reproducing_on_day[current_day + 7] += fish_reproducing_on_day[current_day] | ||||||
|     fish_reproducing_on_day[current_day + 9] += fish_reproducing_on_day[current_day] |     fish_reproducing_on_day[current_day + 9] += fish_reproducing_on_day[current_day] | ||||||
|     return fish_reproducing_on_day[current_day] |     return fish_reproducing_on_day[current_day] | ||||||
|  |  | ||||||
|  | def Simulate(days): | ||||||
|  |     # reset data in case of multiple simulations: | ||||||
|  |     fish_reproducing_on_day.clear() | ||||||
|  |     for i in range(0, days + 9): | ||||||
|  |         fish_reproducing_on_day.append(0) | ||||||
|  |  | ||||||
|  |     for i in range(0, len(fish)): | ||||||
|  |         fish_reproducing_on_day[int(fish[i])] += 1 | ||||||
|  |  | ||||||
|  |     grand_total = total_fish # starting fish count | ||||||
|  |     for i in range(0, days): | ||||||
|  |         grand_total += SimulateFishByDay(i) | ||||||
|  |     return grand_total | ||||||
|  |  | ||||||
| #### MAIN EXECUTION #### | #### MAIN EXECUTION #### | ||||||
| fish = [] | fish = [] | ||||||
| with open('data', 'r') as fp: | with open('data', 'r') as fp: | ||||||
|     fish = fp.readline().strip().split(',') |     fish = fp.readline().strip().split(',') | ||||||
|  |  | ||||||
| grand_total_1 = 0 | total_fish = len(fish) | ||||||
| for i in range(0, len(fish)): |  | ||||||
|     grand_total_1 += SimulateFish(int(fish[i]), 80) |  | ||||||
|  |  | ||||||
| print(grand_total_1) | print(Simulate(80)) | ||||||
|  | print(Simulate(256)) | ||||||
|  |  | ||||||
|  |  | ||||||
| for i in range(0, len(fish)): |  | ||||||
|     fish_reproducing_on_day[int(fish[i])] += 1 |  | ||||||
|  |  | ||||||
| grand_total_2 = 300 # starting fish count |  | ||||||
| for i in range(0, DAYS): |  | ||||||
|     print(fish_reproducing_on_day) |  | ||||||
|     grand_total_2 += SimulateFishByDay(i) |  | ||||||
| print(grand_total_2) |  | ||||||
|              |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user