ToCode
Kanalga Telegramโda oโtish
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Ko'proq ko'rsatish1 419
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kunlar
Ma'lumot yo'q30 kunlar
Postlar arxiv
1 419
# ืืืืืืช ืืืืื
ืื ืืชืืื ืืื ืจืขืืื ืืื, ืื ืชืืื ืืชืืืืื ืืื. ืืืฆืืืื ืืช ืื ืืคื ืืืืืจืื ืืช ืืืื ืืฉื ืืืื ืืขืืื. ืฉืืืฉื ืืืืฉืื ืืืจื ืืืชื ืขืืืื ืจืืืฃ ืืืจื ืืืืื, ืืจืืืฉ ืืื ืืืืืืช ืืื ืืืฉืืง ืืช ืืืชื ืืื ืืืืืื ืืืืจ.
ืืขืืฉืื ืื? ืืืืืืจ ืืช ืืืคืชืืืช? ืืืจืืง ืขืืืื ืฉื ืฉืืืฉื ืืืืฉืื? ืืืืื ืื ืื ื ืืืขื ืฉื?
ืืืืืืช ืืืืื ืืืื ืื ืืขืื ืืืืชืืช. ืื ืืืืืืช ืืฉืืื ืื ืืชืื ืชืื ืืืืื, ืืื ืชืืื ืืืขืืช. ืืื ื ืงืืื ืงื ืืจืืืช ืืช ืืืื ืืื, ืื ืืช ืืืืจ ืืื ืฉืฆืจืื ืืขืฉืืช ืืื ืืืฆืื ืืช ืืืื ืืื; ืืื ืืฃ ืคืขื ืื ืืคืฉืจ ืืืขืช ืืชื ืื ืื ืืืื ื ืืืข ืืกืืฃ ืืืจื. ืงืฆืช ืืื ืืืจืกื ืืืื ืืช ืฉื ืืืฉืง ืืืืืื ืืืื ืกืืคื ืืคืืืกืืืง.
ืคืืชืจืื ืฉืืืืชื ืฉืื ืืจืืืช ืืกืืคืืจ ืืื ืงืฉืืจ ืืืขืจืืืช ืืื ืื: ืืื ืฉืื ืืืื ืืืงืฉืื ืืืชืื ืชืื ืืขืจืื ืืื ืืื ืืืงื ืืื ืืช ืคืืฆ'ืจ ืืกืืื, ื ืจืฆื ืฉืืืชื ืื ืืืื ืืืืื ืืฉืงืฃ ืืื ืืื ืคืืฆ'ืจ ืืกืืื ืฉืืื ืืื. ื ืืืจ ืืืื? ืฉืืื ืืฆื ืืช ืื ืฉืขืฉืื ื ืืขืืืจืื ืืืืจืื ืืืจืื.
ื ืงืกื!
1 419
# ืืืคืื ืืืืืก ืืืฆืื ืืจื upwork
ืืคืืืจืง ืืื ืืชืจ ืืืืืก ืืชืื ืชืื ืคืจืืืื ืกืจืื. ืืขืืื ืคืืชืื ืืื ืืืืื ืืช ืืืืืืืช ืฉื ืื ืืืื ืืืืงืจืืื ื ืืืืืืจืื ื ืขืื ืืื 20 ื 50 ืืืืจ ืืฉืขื. ืื ืฉืืืคื ืืช ืืคืืืจืง ืืื ืื ืืืฆืื ืืื ืืืื ืืืืืก ืืืืืจ - ืืขืื ืฉืื ื ืจืฆื ืืืืืก ืืชืื ืชืช ืฉืืืจื ืืขืืืื ื ืฆืืจื ืืขืืืจ ืืจืื ืืืืจืืช ืฉืืขื ืืืืจื ืืืื ืื (ืืื ืขืื ืงืฆืช), ืืืคืืืจืง ืืคืฉืจ ืืืชืืื ืืขืืื ืืจืื ืคืขืืื ืชืื ืืื ืื ืืืืืื, ืืื ืืื ืืืืื ืืคืฉืจ ืื ืืืชืื ืืืืื ืืืืื.
ืื ืืฉ ืืื ืคืจืืืงื ืืจืืฆืื ืื ืกืืช ืืืืืก ืื ืฉืื ืื ื ืืืฉ ืืืืืฅ ืื ืกืืช ืืช ืืคืืืจืง. ืื ื ืืื ืืืคืื ืฉืขืืจื ืื ืืืืืกืื ืืื ื ืืงืืื ืฉืืขืืจื ืื ืืื:
1. ืคืจืกืื ืืืืขื ืืจืืจื ืขื ืืจืืฉืืช ืืื ืฉืืืชืจ ืืคืืจืืืช. ืขืืืฃ ืืืืืก ืคืจืืืื ืกืจ ืืืฉืืื ืกืคืฆืืคืืช ืืคืจืืืงื ืืื ืืืืฉืื ืืืชื ืืืื, ืืืฉืจ ืื ืกืืช ืืืืืก "ืืชืื ืช ืืื" ืฉืืขืฉื ืืื ืืืื.
2. ืืืจื ืคืืจืกืื ืืืืืขื ืชืงืืื ืืื ืกืืฃ ืคื ืืืช, ืืืื ืืื ืฉืื ืื ืจืืืื ืืื. ืืืื ืฉื ืจืืื ืืื ืจืืืื ืืื ืืงืฉื ืืจืืืช ืงืื. ืืคืจืืืื ืกืจืื ืจืฆืื ืืื ืฉื ืืฉ ืืฉืืื ืืืืืื ืื ืคืจืืืงืืื ืฉืขืืื ืขืืืื ืืืจ ืืื ืืืืืื ืืฉืชืฃ, ืื ืืคืืืช ืคืจืืืงืื ืืืืื ืฉืืชืื.
3. ืืงืจืืืช ืืงืื ืขืืืฃ ืืงืื ืงืื ืงืื ืืืื ืืืฉืจ ืืืื ืืจืข. ืชื ืืื ืฉืืคืจืืืื ืกืจ ืฉืชืืงืื ืื ืืืื ืืฉื ืืช ืืช ืกืื ืื ืืขืืืื ืฉืื ืืฉืืืืื.
4. ืฉืืืช ืืื ืงืฆืจื ืืืืื ืืืืื ืืื ืืืื ืขื ืืื ืืื ืืขื ืืชืงืฉืืจืช ืฉืืื ืืืชื. ืชืงืฉืืจืช ืืื ืืคืืื ืืืชืจ ืืฉืืื ืืืืืืช ืืงืื, ืืืืจ ื ืคืืชื ืืื ืคืขืืื ืืืืืก ืคืจืืืื ืกืจ ืขื ืงืื ืืื ืืื ืืืืช ืืจืืขื.
5. ืืืืืจ ืื ืืฉืื - ืืืืื ืืื ืฉืคืจืืืื ืกืจ ืืื ืฉืืื ืืงืืช ืื ืืืืืจ ืืืชืจ ืืืื, ืืคืจืืืื ืกืจ ืืจืืข ืื ืืืื ืืงืืช ืื ืืฉื ื ืืื ืืื ืืื. ืืืืจื ืฉืืคืจืืืื ืกืจ ืื ืืืื ืืืฉืชื ืืช ืืฉืืืืื.
6. ืืืืจื ืฉืื ื ืืืืืก ืคืจืืืื ืกืจ ืืื ืืืฆืื ืืื ืฉืืืชืจ ืืืจ ืื ืืื ืฉืืืชื ืงืื ืืื ืืืฉ ืื ื ืชืงืฉืืจืช ืืืื ืืืชื. ืชืืื ืืคืฉืจ ืืืชืื ืืฉืื ืื ืืืื (ืืงืจื ืื ืื ืฉืคืจืืืื ืกืจืื ื ืขืืื ืื ืืืืฆืข ืขืืืื).
7. ืืืื ื ืืช ืืคืจืืืงื ืฉืืื. ืืชื ืื ืจืืฆืื ืฉืืคืจืืืื ืกืจ ืืืืื ืืื ืืืชืงื ืืช ืื ืืืืืื ืื ืฆืจืื ืืขืฉืืช. ืขืืืฃ ืืืืื ืืจืืฉ ืงืืฆื ืืืงืจ ืื ืืกืื ืืืจืืืช ืืคืืจื ืฉืืกืืืจ ืื ืฆืจืื ืืขืฉืืช ืืฉืืื ืืืชืืื ืืขืืื.
8. ืืืจืฉื ืชืืขืื ืืกืืืจ ืฉื ืืขืืืื ืืจืง ืืจื ืืคืืืคืืจืื ืฉื ืืคืืืจืง. ืฉืืื ืืืืืจ ืฉืืชื ืื ืืืืช ืืืืขืื ืื ืืื ืืื ืฉืขืืื ืืชืื, ืืืคืืืช ืืืชืืื ืชืืขืื ืืื ืฉื ืืฉืขืืช ืืืจืื ืืช ืืกืืืื ืืจืืืืืืช.
1 419
ืื ืื, ืืืืชืจ? ืื ืืืชืืื ื ืืฉืื ืืืจ? ืืืชืื ืงืื ืืืืื ืืื ืืืจ ืื ืืืืื ืื ืื ืฉื ืืชืื ื ืฆืืจื ืืฉืืชื? ืื ื ืื ืืืืชื ืืืื ืืฉื. ืืืกืงื ื ืฉืื ืืฉืืืฉืช ืืืืฉืืช ืฉืจืืื ื ืืื ืฉืืืื ืืืชืืืฅ ืืืืชืื ืงืื ืคืฉืื - ืงืื ืฉืงื ืืืืื ืืืชื ืืงื ืืฉื ืืช ืืืชื ืืฉื ืฆืืจื.
ืฉืืื ืื ืืืืกืืฃ ืืืืงืืช ืืงืื ืืคืฉืื ืืื. ืืขืืืื ืฉืืื ืื ืงืื ืืืืืื ืฉืืืืชื ืืืคืขืื ืืืืขืชื ืืืืืง ืื ืืืกืคืจ ืฉืื ื ืืืืจ ืืงืื ืืืจื 80 ืืืื ืขืืจื ืื ืืืื ืืืจืืฅ ืขืื ืืขืื ืืืฉืืช ืืคืืชืจืื ืืช ืืืืจืื ืืืืฉ ืืช ืืงืื ืขื ืฉืืืืขืื ืืชืืฆืื ืขืืืืช.
ืืืฆืืืืช ืืื ืื ืืืจื. ืืื ืชืืื ืชืคืชืืข ืขื ืืจืืฉืืช ืฉืื ืืืขื ื ืฉืืืืืืช ืืืืืข ืืชืืื ืชืงืืงื ืืืืืง ืืฉืืืจืื ืืชืืืืื ืืขืืื. ืืืจื ืืืชืืืื ืืืชื ืืื ืื ืืงืืช ืืื, ืืืืืง ืงืื ืืืืชืื ืงืื ืืืฉ ืฉืืชืืื ืืื ืืืชืจ ืืืฆืืืืช ืืืืฉื ืฉืืืืืชื.
1 419
def grow_up(self):
if self.time_to_reproduce == 0:
self.time_to_reproduce = 6
self.fish_tank.create_fish(8)
else:
self.time_to_reproduce -= 1
def __repr__(self):
return f"{self.time_to_reproduce}"
class FishTank:
def __init__(self, fish_initial_states):
self.fish = [Fish(i, self) for i in fish_initial_states]
def create_fish(self, time_to_reproduce):
self.fish.append(Fish(time_to_reproduce, self))
def count(self):
return len(self.fish)
def play(self):
for fish in self.fish[:]:
fish.grow_up()
################
fish = []
with open('demo.txt') as f:
fish = [int(x) for x in f.read().split(',')]
tank = FishTank(fish)
for i in range(80):
tank.play()
print(tank.count())
ืืคืืชืจืื ืืื ืื ืืขืฆืืื ืืฆื (ืืฆืคืื) ืืื ืืจืื ืืื ืืฉืืืฉื. ืืืืืืงื ืืืจืืืืช ืฉื ืืืืืื ืืฆืื ืืช ืืงืืื ืืืืืงื Fish ืืืืงืืืจืืื ืืืจืื ืขื ืืฆืืจืช ืืืื ืืืฉืื. ืื ืคื ืื ืืจืื ื ืืฉืืคืื ืืืขืจื ืืคื ื ืืืืืจืฆืื ื play, ืืื ืืืื ืืื ื ืืงืื ืืืชืจ ืงืฉื ืืจืืืช ืืช ืืฆืืจื ืืฉืืคืื ืืื. ืฉืืื ืื ืืคืื ืงืฆืื:
def play(self):
for fish in self.fish[:]:
fish.grow_up()
ืืงืจืืืช ืฉืืืฉืช ืืฉืืจืืช ืื ืืจืืจ ืืื ืื ื ืฆืจืื ืืฉืืคื ืืช self.fish ืืคื ื ืฉืื ื ืงืืจื ื grow_up. ืจืง ืื ืืืคืืคืื ืืืขืื ืืคืฉืจ ืืจืืืช ืฉืืื ืื ืืฉ ืืขืฆื ืืืืืจ ืืืงืืืจืืื ืื ืืื ื ืืฆื ืืฉืืคืื ืงืฆืื grow_up ืขืืืื ืืฉื ืืช ืืช ืืขืจื ืืืืื.
ืืืืฉืื ืืืืชืจ ืจืฆืื ื ื ืชืงืืชื ืืฉืืืขืชื ืืืชืื ืืช ืืืืคืืืืืืฆืื. ืืขืืื ืืื ืื ืืขืฆืืื, ืืื ืืืืง ืืช ืืืืื ืืงืืืฆืืช ืืืืชื ืืขืืืฃ ืืืฉืชืืฉ ืืืื ื ืืงืืื - ืืืืืจ ืืื ืืช 10 ืืงืืืจืืืืื. ืื ืืงืืืจืืื ืืืื ืืืื ืฉืืชืืืืื ืืืื, ืืืคืฉืจ ืืืื ืืืขืืืจ ืืืื ืืื ืืงืืืจืืืืื ืฉืื ืื. ื ืืื, ืื ื ืืืืง ืืช ืืืืืงื Fish ืืืฆืืจื ืืฉื ืืช ืงืฆืช ืืช FishTank, ืืื ืืื ืื ืืืื ืืคืืื ืืขืืื.
ืื ืืกืืื ืืจืืฉืื ืฉืื ืืคืืชืจืื ื ืจืื ืื ืืื ืืื ืื ืขืื:
class FishTank:
def __init__(self, fish_count, next_tanks):
self.fish = fish_count
self.next_tanks = next_tanks
def create_fish(self):
self.fish += 1
def count(self):
return self.fish
def play(self):
for fish_tank in self.next_tanks:
fish_tank.fish += self.fish
self.fish = 0
def __repr__(self):
return f"{self.fish}"
################
fish = []
with open('demo.txt') as f:
fish = [int(x) for x in f.read().split(',')]
tanks = [FishTank(0, []) for i in range(10)]
for ti in range(9, 1, -1):
tanks[ti].next_tanks = [tanks[ti - 1]]
tanks[0].next_tanks = [tanks[6], tanks[8]]
for i in fish:
tanks[i].create_fish()
for i in range(80):
for ti in range(9, 0, -1):
tanks[ti].play()
print(sum(t.count() for t in tanks))
ืื ืฉืงืืจื ืืื ืื ืฉืืฉืื ื ืืขืืืจ ืืืื ืืืงืืืจืืื ืืื ืืฉื ื ืื ืืขืฆื ืืชืืืกืคืื ืืืืื ืฉืืืจ ื ืืฆืืื ืืืงืืืจืืื ืืฉื ื ืืื ืื ืืคืฉืจ ืืืืืื ืืื ื ืืืื ืืืืื ืฉืืื ืฉื ืงืืื (ืืืชื ืฆืจืื ืืืขืืืจ ืืืงืืืจืืื ืืื ืืชืืจ). ืืืืืื ืืืจืืช, ืืืื ื ืจืืฆืื ืืืขืืืจ ืืช ืื ืืืืื ืืื ืืงืืืจืืื ืืื ืฉืืืจืื ืืืืชื ืืื, ืืื ืืงืื ืฉืื ืขืืฉื ืืช ืื ืืงืืืจืืื ืืืจื ืืงืืืจืืื. ืืืช ืืืืืื ืืืขืืืชืืช:
for i in range(1):
for ti in range(9, 0, -1):
tanks[ti].play()
ืืื ืืชืื play ืืฉ ืื ื:
def play(self):
for fish_tank in self.next_tanks:
fish_tank.fish += self.fish
self.fish = 0
ืืฉืืืื ืื ืืช ืืืขืื ืืคืฉืจ ืื ืืคืชืืจ ืืืชื ืืืืชื ืืจื ืฉืืื ื ืคืชืจื ืืฉืืืืช ืืงืืืืืช, ืืืืืจ ืืงืื ืืจืืฉื ืืืื:
for i in range(80):
grown_up_fish_count = tanks[0].count()
tanks = [*tanks[1:], FishTank(0, [tanks[-2]])]
tanks[6].fish += grown_up_fish_count
tanks[8].fish += grown_up_fish_count
print(tanks)
ืืื ืืืืช ืฉืืื ืฉืื ืืกืืืืื ืืช ืื ืืคืืชืจืื ืืื ืื ืืขืฆืืื ืื ืืืืช ื ืชื ืขืจื. ืืชืืืช ืืืืืงืืช ืืืืืงืช ืืขืืืื ืืื ืืื ืจืง ืงืืืขื ืืฆืื ืืจื ืืืฉืื ืืกืืืืช ืืื ืฉืจืื ืืคื ืืช ืืืืคืืืืืืฆืื ืฉื ืืืืง ืืฉื ื.
## ืฉืืจื ืชืืชืื ื1 419
ืืืขืื ืฉืฉืืืจืื ืืืคืืชืจืื ืฉืืชืืชื ืืคืืชืจืื ืฉืืืืง ืืช ืืืืื ืืงืืืฆืืช ืืืืจ ืืขืฆื ืืืืืืฃ ืืช ืื ืืงืื. ืืืืจ ืืืืื ืฉืืืื ืืืื ืืืฉืชืืฉ ืื ืื ืืคืงืืื ืฉืงืืจืืช ืืช ืืงืื ืืืงืืืฅ. ืื ืืฉืืจ - ืืืขืืจ ืขื ืืืืื, ืืืจืืช 1 ืืืกืคืจ ืืืืื ืฉื ืื ืื, ืืืืงื ืืื ืืืื ื ืฉืืจื - ืื ืื ืฆืจืื ืืืืช.
ืืงืื ืืืขืืืื ืฉืื ื ืจืื ืื:
fish = [0] * 10
with open('demo.txt') as f:
fish_ages = [int(x) for x in f.read().split(',')]
for age in fish_ages:
fish[age] += 1
def play():
global fish
new_fish = [*fish[1:], 0]
new_fish[6] += fish[0]
new_fish[8] += fish[0]
fish = new_fish
for i in range(80):
play()
print(sum(fish))
ืืืื ืืืจ ืคืืชืจ ืืื ืืขืื ืืช ืืชืจืืื ืื ืขืืืจ 256 ืืืื.
## ืคืืชืจืื 2 - ืืืืฉื ืืคืื ืงืฆืืื ืืืืช
ืืืชืจืื ืฉื ืืืืฉื ืื ืืืืืช ืืื ืฉืงื ืืืชืื ืืืชื. ืืืืจืกื ืืจืืฉืื ื ืชืืื ืคืืืช ืื ืืืชืจ ืืืื ืฉืืฉืืชื ืขื ืืฉืืื ืืงืจืืื ืืจืืฉืื ื ืฉืื, ืืืืชืืจ ืืืืื ืืื ืืจืืืช ืืช ืืฆืืจื ืืฉืืคื ืืช ืืืขืจื ืืื ืื ืืขืืื ืืืชื ืืืืฆืข ืืืืืื. ืืื ืืืืกืจืื ืฉื ืืืืฉื ืื ืืืืืช ืืื ืฉืืฉ ืจืง ืงืฉืจ ืงืืืฉ ืืื ืฉื ื ืืืืงืื ืฉื ืืฉืืื. ืืืื ืืฆืืจื ืืืืคืืืืืืฆืื, ืืืืชื ืฆืจืื ืืืจืืง ืืืขื ืืช ืื ืืงืื ืฉืืชืืชื.
ืืืืฉืื ืืืื ืฉืืคืฉืจ ืืืฆืืข ืืื ืฉืืืื ืื ื ืืงื ืืืฉื ืืืชืจ ืืชืืืืืช ืืงืืืื, ืืืื ืื ื ืืจืื ืืช ืืงืื ืืืจืช ืืืฉื ืืชืืจ ืคืื ืงืฆืืืช ืงืื ืืช, ืื ืื ื ืืื ืืืฉืชืืฉ ืืืืฉ ืืงืื ืฉืืชืื ื ืื ืืคืืืช ืืืืงืื ืืื ื ืืขืช ืืืืืฉ ืืืืคืืืืืืฆืื. ืื ืืืืชื ืืืชืื ืคืืชืจืื ืคืื ืงืฆืืื ืืื, ืื ืืคืืืช ืืื ืฉืขืื ื ืขื ืืืืืืฆืื ืฉื ืชืื ืืช ืคืื ืงืฆืืื ืืื: ืืื ืืฉืชื ืื ืืืืืืืืื, ืืื Mutable Data, ืืื ืืงืื ืืชืื ืืชืืจ ืคืื ืงืฆืืืช ืงืื ืืช. ืื ืื ืฉืืฆื:
def flat_map(f, items):
output = []
for i in items:
res = f(i)
if type(res) == list:
output.extend(res)
else:
output.append(res)
return output
def process_fish(single_fish):
if single_fish == 0:
return [6, 8]
else:
return single_fish - 1
def play(fish):
return flat_map(process_fish, fish)
def part1():
fish = []
with open('demo.txt') as f:
fish = [int(x) for x in f.read().split(',')]
for i in range(80):
fish = play(fish)
print(len(fish))
part1()
ืืคืื ืงืฆืื process_fish ืืงืืืช ืื ืืืืืืจื ืืช ืืื ืื ืืืืื ืฉืฆืจืื ืืฉืื ืืืงืืื, ืืืฉืจ ืื ืืืืฆื ืขื ืืื ืืกืคืจ ืฉืืื ืืื ืืืื ื ืฉืืจื ืขื ืฉืืชืจืื. ืืคืื ืงืฆืื play ืืคืขืืื ืืช flat_map ืฉืืขืืื ืช ืืช ืืขืจื ืืืืื ืขื ืชืืฆืืช ืืคืขืืช process_fish ืขื ืื ืื, ืืืช ืืคืื ืงืฆืื flat_map ืืืืฉืชื ืืื ืืืืื ืฉืืื ืืืืช ืืคืืืชืื.
ืืงืื ืขืืื. ืืืืืจ ืชืืฆืื ื ืืื ื ืขืืืจ 80 ืืืื ืื ืืคื ืขื 256 ืืืื ืืฆืคืื. ืืื ืืืชื ืฆืจืื ืืืจืืง ืืคื ืืฉืจืืฆืื ืืชืงื ืืช ืืขืืืช ืืืืฆืืขืื. ืืืช ืืืืจืกื ืืืชืืงื ืช:
def play(groups):
new_groups = [*groups[1:], 0]
new_groups[8] += groups[0]
new_groups[6] += groups[0]
return new_groups
def group_fish(fish):
groups = [0] * 10
for f in fish:
groups[f] += 1
return groups
def part2():
fish = []
with open('demo.txt') as f:
fish = [int(x) for x in f.read().split(',')]
fish = group_fish(fish)
for i in range(80):
fish = play(fish)
print(sum(fish))
part2()
ืคืื ืงืฆืืืช ื main ืืืืื ื ืืืืื ื ืฉืืจ ืืื ืฉืืื, ืืื ืืช play ืฉืื ืืชื ืืืืจื, ืืช flat_map ืฉืื ืื ืืชืืืฆืชื ืืืชืื ืืจืงืชื, ืืช process_fish ืื if ืฉืืชืืื ืืืงืชื ืืืืกืคืชื ืคืื ืงืฆืื ืืืฉื ืฉืืืจืื ืช ืืช ืืืืื ืืคื ืงืืืฆืืช.
ืืืืฉื ืืคืื ืงืฆืืื ืืืืช ืื ืืืืื ืืฉืืคืืจ ืืฉืืขืืชื ืืืืืช ืืขืืืื ืฉืื ื ืฆืจืื ืืฉืืื ืืืืฉ ืืช ืืืืคืืืืืืฆืื. ืื ืืืชื ืืืืชื ืฆืจืื ืืฉื ืืช ืืืง ืืฉืืขืืชื ืืืงืื. ืืื ืื ืืคืฉืจื ืื ืืืชืขืื ืืืืจื ืืืกืืคืืจ ืฉื ืขืืืื ืืขืจื ืืืืฆืข ืืืืื ืืืื ืฉืื ืืืืืข ืืื Immutable, ืฉืื ื ืืื.
ืืฆื ืฉื ื ืืืื ืืืกืจ ืชืืืื ืฉื ืืฉืคื (ืืื flat_map) ืืืืชื ืฆืจืื ืืืชืืืฅ ืืืืชืื ืืืชืจ ืงืื ืืฉืืื ืืืืืข ืืชืืฆืื ืืืกืืคื ืฉื ืืืจ ืืคืืชืจืื ืืคืื ืงืฆืืื ืืื ืืื ืืจืื ืืืชืจ ืืืคืืชืจืื ืื ืืืื.
## ืคืืชืจืื 3 - ืคืืชืื ืืื ืื ืขืฆืืื
ืื ืงืื ืคืื ืงืฆืืื ืืื ืื ืืกื ืื ืืช ืืขืืืื ืืฉืืชืื, ืืืื ืงืื ืืื ืื ืขืฆืืื ืืฆืืื ืืืฆืื ืืช ืืืฆื. ืืื ืืืืชื ืืคืชืืจ ืืช ืืืืง ืืจืืฉืื ืืืืฉื ืืื ืืืช ืขืฆืืื ืขื ืืืืงื ืฉื ืื ืืืืืงื ื ืืกืคืช ืืืงืืืจืืื ืืงืืืืชื:
class Fish:
def __init__(self, time_to_reproduce, fish_tank):
self.time_to_reproduce = time_to_reproduce
self.fish_tank = fish_tank1 419
# ืกืืคืืจ ืงืฆืช ืืืื ืขื ืืืื ืืฉืื ืืืื ืืงืื
ืื ืจืง ืืืืื ืืื ืืืชืจ ืคืฉืืืื. ืืืืช. ืื ืืืื ืคืฉืืืื ืืืืืืื ืืงืื ืคืฉืื, ืืืืืคื, ืืฉืืืืื ืืกืชืืืื ืืงืื ืืกืชืื ืืืชื. ืืฉ ืื ืฉืื ืฉืืืืื ืืื ืฉืื ืจืง ืชืืชืื ืงืื ืคืื ืงืฆืืื ืืื, ืื ืงืื ืืื ืื ืขืฆืืื, ืื ืืฉืคื ืืืืช ืื ืืืจืช, ืื ืืงืื ืืืื ืคืฉืื ืืืชืืืื ืืคื ืขื ืฉืื ืืืื.
ืื ืืืขืื.
ืงืื ืืกืชืื ืื ืืืืื ืืกืชืืืื ืืื ืฉื ืจืื ืชืืฃ ืืืืืื ื Advent Of Code. ืืื ืื ืชืืืื ืืฉ ืื ื ืงืืืช ืืืจ ืืกืืฃ ืืกืืคืืจ. ืืื ืคืืืชืื, ืื ืฆืจืื ืงืฆืช ืืคืกืงื ืืื ืืงืืื'ืจ.
## ืื ืื ืื ื ืืื ืื
ืืื 6 ืฉื Advent Of Code ืืืืจืื ืืชืืื ืืื (ืื ืืืืื ืขื ืขืืฉืื ืืชืืืื ืืื, ืื ืื ืื ืืคืชืืข). ืื ืื ื ืืฆืืืืช ืืคืืืฉืื ืืืงื ืฉื ืืืื, ืืจืืฆืื ืืืืืช ืืื ืืืจ ืืืืื ืืชืจืืื. ืื ืฆืจืื ืืืืืื ืืื ืืืืืข ืืืืจืืช, ืืื ืขืื 6 ืืืื ืืื ืืืืืื ืื ืืืฉ.
ืื, ืืืืื ืื ืืชืื.
ืืืืืื ืื ืืฉ ืื ื ืืืงื ืฉืืืืื ืืืืื ืื ืื:
3, 2, 3, 5, 4
ืื ืืื ืืจืืฉืื ืืืืื ืื ืืืฉ ืืขืื ืฉืืืฉื ืืืื, ืืื ืฉืื ืฉืืฉื ืืืื ืืืืจ ืืื, ืืื ืฉืื ืฉืืฉื ืืืื ืืืืจ ืืื.
ืืื ืืฉื ื ืืืืื ืื ืืืฉ ืืขืื 4 ืืืื, ืืื ืฉืื ืฉืืฉื ืืืื ืืืืจ ืืื, ืืฉืื ืฉืืฉื ืืืื ืืืืจ ืืื.
ืื ืืื ืืืืืื ืืืืฉืื ืืืงื ืืืืืื ืืืืื, ืืื ืืืจื ืฉืืฉื ืืืื ืืืืื ืื ืืื ืื ืืืฉ.
ื ืื ืืืงืื ืืืกืชืื ืขื ืืืืื ืืืืื, ืืืกืชืื ืขื ืืื ืืืื ื ืฉืืจื ืืื ืื ืขื ืฉืืืืื ืื ืืืฉ, ืืื ืืคืฉืจ ืืืืืื ืืขืจื ืฉืืฉืชื ื ืืืืคื ืืื:
Initial state: 3,4,3,1,2
After 1 day: 2,3,2,0,1
After 2 days: 1,2,1,6,0,8
After 3 days: 0,1,0,5,6,7,8
After 4 days: 6,0,6,4,5,6,7,8,8
After 5 days: 5,6,5,3,4,5,6,7,7,8
After 6 days: 4,5,4,2,3,4,5,6,6,7
After 7 days: 3,4,3,1,2,3,4,5,5,6
After 8 days: 2,3,2,0,1,2,3,4,4,5
After 9 days: 1,2,1,6,0,1,2,3,3,4,8
After 10 days: 0,1,0,5,6,0,1,2,2,3,7,8
After 11 days: 6,0,6,4,5,6,0,1,1,2,6,7,8,8,8
After 12 days: 5,6,5,3,4,5,6,0,0,1,5,6,7,7,7,8,8
After 13 days: 4,5,4,2,3,4,5,6,6,0,4,5,6,6,6,7,7,8,8
After 14 days: 3,4,3,1,2,3,4,5,5,6,3,4,5,5,5,6,6,7,7,8
After 15 days: 2,3,2,0,1,2,3,4,4,5,2,3,4,4,4,5,5,6,6,7
After 16 days: 1,2,1,6,0,1,2,3,3,4,1,2,3,3,3,4,4,5,5,6,8
After 17 days: 0,1,0,5,6,0,1,2,2,3,0,1,2,2,2,3,3,4,4,5,7,8
After 18 days: 6,0,6,4,5,6,0,1,1,2,6,0,1,1,1,2,2,3,3,4,6,7,8,8,8,8
ืืืฉืืื ืฉืื ื ืืื ืืืชืื ืืช ืืงืื ืฉืืืฉื ืืื ืืืื ืืืื ืืืจื X ืืืื. ืืฉืื ืืจืืฉืื ืฆืจืื ืืืฆืื ืืื ืืืื ืืืื ืืืจื 80 ืืืื, ืืืืจื ืฉืื ืขืืื ืืงืืืื ืืช ืืฉืืืช ืืืืฉื ืฉืืขืื ืืช ืืืกืคืจ ื 256 ืืืื.
## ืคืืชืจืื 1 - ืืืฉื ืคืจืืฆืืืจืืืช
ืืคืืชืจืื ืืจืืฉืื ืื ื ืงืืจื ืืืืฉื ืื ืืืืืช ืื ืืืืฉื ืืคืจืืฆืืืจืืืช. ืื ืคืืชืจืื ืฉืืจืื ืืชืื ืชื ืคืืืชืื ืฉืื ื ืืืืจ ืืจืืืฉื ืืืชื ืืื ืืืืช. ืืืืฉื ืืืืช ืื ืื ื ืืืชืืื ืคืื ืงืฆืืืช ืืฉืื ืขืืืจ ืื ื, ืื ืื ื ืืฉืชืืฉืื ื List Comprehension ืืฉืื ืขืืืจ ืื ื, ืืื ืื ืื ืืคืจืืข ืื ื ืืฉื ืืช ืืืืืงืืื ืืืืืจืื ืื ืืืชืื ืงืื ืืืืฅ ืืคืื ืงืฆืืืช.
ืืืงืจื ืฉื ืืืืื ืื ื ืฆืจืื ืืงืจืื ืืช ืืื ื ืืืชืจืืืช ืฉื ืืืืื ืืงืืืฅ ืงืื, ืืืจ ืื ืืฉืื ืืื ืืืขืจื ืืื ืื ืืื ืื ื ืจืฅ ืขื ืืืขืจื ืืืืจืื ื-1 ืืช ืืืื ืขื ืืืชืจืืืช ืฉื ืื ืื. ืื ืืืื ืืืืข ืืืคืก ืื ื ืืืกืืฃ ืื ืืืฉ ืืืขืจื. ืื ืืงืื:
fish = []
with open('demo.txt') as f:
fish = [int(x) for x in f.read().split(',')]
def play():
for index, remaining in enumerate(fish[:]):
if remaining == 0:
fish.append(8)
fish[index] = 6
else:
fish[index] -= 1
for i in range(80):
play()
print(len(fish))
ืืฉ ืคื ืคืืืช ื 20 ืฉืืจืืช ืืืชืฉืืื ืฉืื ื ืืื ื. ืฆืจืื ืจืง ืืฉืื ืื ืฉืืืืืื ืื ื ืืฉืืคื ืืช ืืืขืจื ืืคื ื ืฉืื ื ืจืฅ ืขืืื, ืืื ืื ืืืืกืืฃ ืืืื ืืืขืจื ืืชืื ืืืืจืฆืื (ืื ืฉืืืจืื ืืืืืื ืืื ืืื ืืคืืืชืื).
## ืืืง ืฉื ื - ืืืชืจืกืงืืช ืืืชืืงืื
ืืืขืื ืขื ืืคืืชืจืื ืื ืืืื ืืืคืืขื ืืืืง ืืฉื ื, ืืฉืืขืืื ืืช ืืกืคืจ ืืืืื ื 256. ืืฉ ืืืชืจ ืืื ืืืื ืืืงืื ืื ืืฆืืื ืืืชืืืื ืขื ืืขืจื ืื ืื ืืืื ืืคืฉืื ืืืฉืื ืืจืืฅ ืืืื ืืืื ืืื ืืื ืืืืืข ืืชืืฆืื.
ืืืจื ืืคืชืืจ ืืช ืืชืจืืื ืืืกืคืจ ืืืื ืฉื ืืืื ืืื ืืืจืื ืืช ืืืืื ืืงืืืฆืืช, ืืืืืจ ืื ืืืืื ืฉืืฉ ืืื ืขืื 3 ืืืื ืขื ืฉืืืืฆืจืื ืื ืืืฉ ืืฉืื ืืชื ืืื ืืืขืจื, ืื ืืื ืฉืฆืจืืืื ืขืื 4 ืืืื ืืื ืืืชืจืืืช ืืฉืื ืืชื ืืืจ ืืืขืจื ืืื ืืืื. ืกื ืืื ืืืื ืื ืืขืจื ืฉื 8 ืชืืื ืฉืืื ืชื ืืืื ืืชืื ืืื ืืืื ืืฉ ืืงืืืฆื ืืืืช. ืืื ืืื ืฉืขืืืจ ืื ื ืืขืืืจ ืืช ืืืืื ืชื ืืื ืืืืจื ืืืขืจื, ืืืื ืฉืืื ืืชื 0 ื ืื ืกืื ืื ืืชื 6 ืืื ืืืชืืื ืกืืืื ืืืฉ ืืื ืืชื 8 ืืชืืจ ืืืื ืืืฉืื.1 419
# ืขืืื
ืื ืืขืืื ืื ืืืจ ืืืืงืจ?
ืื ืืขืืื ืื ืืืจื ืฉืืืจืื ืืืจืกื?
ืื ืืขืืื ืื ืืืจื Refactoring?
ืื ืืขืืื ืื ืขื ื ืชืื ืื ืฉื ืคืจืืืงืฉื?
ืื ืืขืืื ืื ืืฉื ืขืืืจ ืืืขืจืืช ืืคืขืื ืืืจืช?
ืื ืืขืืื ืื ืขืืืจ ืืฉืชืืฉืื ืืืืื?
ืื ืืขืืื ืื ืืืจื ืฉื ืืืืจ ืืืืืื?
ืื ืืขืืื ืื ืืฉืืืื ืขืืืก ืขื ืืืขืจืืช?
ืฉืื ืืขืจืืช ืื ืขืืืืช ืืื ืืืฆืืื. ืืื ืฉื ืงืคืื ืืืืืช ืืจืืจืื ืืืื ืืืืืืืช ืฉื ืืงืื ืฉืื ื, ืื ืืืื ืืืชืจ ืงื ืืืฉืชืืฉ ืื (ืืืฉืืืจ ืืืชื) ืืืขืจืืืช ืืืืชืืืช.
1 419
# ืชืืื ืืช ืืืืื ืจืื ืืจืืขืื ืืื
ืื ืืืจืื,
ืืืืืืจ ืงื ืื ื ืฉืื ืืืืืื ืืชืื ืืืฆืืจืฃ ืืืื ืืืืืื ืจืื ืืงืจืืืื ืฉืื ื. ืืช ืืืืืื ืจืื ืื ื ืืขืืืจ ืื ืืื ืืืืฉื ืืขืฉืจ ืืืืงืจ, ืืืงืืืืช ืฉืืื ืืืื ืืช ืืื ืืืชืจ ืืืฃ ืืงืืืืช ืืืืืื ืจืื.
ืื ื ืืฉืชืื ืืืืืจ ื ืืฉืืื ืฉืงืฉืืจืื ืื ืืฉืื ืืงืืจืกืื ืืืจืืืืื ืืืชื. ืื ืืฉ ืืื ืจืขืืื ืืช ืื ืืืืืืช ืขื ื ืืฉืืื ืฉืืืืชื ืจืืฆืื ืืืืื ืฉืืื ืื ืืืื ืืื ืกื ืืืืกืืฃ ืืืชื ืืืืืฉืื ืืืืื. ืืืช ืืจืฉืืื ืืฉืืืฉืช ืืืืืฉืื ืืงืจืืืื:
## ืคืืฆ'ืจืื ืืืฉืื ืืจืืืงื 18 - ืืืืื ืจ ืฉืืชืงืืื ื 7.7.2022
ืื ืืืื ืืฆืื ืืืจืกื ืืืฉื ืฉื ืจืืืงื ืขื ืชืืืื ืืจืื ืืืจ ืืงืืืื. ืืขืืจืืช ืื ืืืืจ ืฉืจืืืงื ืืืื ืืืชืืื ืืืฉื ืืช ืขืฅ ื Virtual DOM, ืืื ืืืืืื ืฉืืฉ ืืฉืื ืืืชืจ ืืฉืื, ืืฉืื ืืื ืืฆื, ืืืฉื ืขืฅ Virtual DOM ืืืจ ืืฉืื ืืืชืจ ืืืืจื ืฉืืกืืื ืืืขืืื ืืช ืืืกื ืืืืืจ ืืขืฅ ืฉืฉื ืืฆื.
ืืืืืื ืจ ืื ืื ื ื ืืฉืื ืืื ืืคืืฆ'ืจ ืืื ืืฉืื, ืืืื ืืืจืื ืืคืฉืจ ืขืืฉืื ืืขืฉืืช ืฉืงืืื ืืื ืืกืืืืื ืืืืื ืืขืืืช ืืืฉืืช ืืื ืืืื. ืืืืื ืฉืืื ืืฆื ื ืจืื ืืืืืืืช ืงืื ืืื ืฉืชืืืื ืืืื ืืื ืืืืฉืื ืืืฉืืจื ืืช ืืืืฉืืืื ืฉืืื ืืจืืืงื 18.
ืืคืจืืื ื ืืกืคืื ืืืจืฉืื:
https://www.tocode.co.il/workshops/117
## ืืืืจืืช ืขื WSL - ืืืืื ืจ ืฉืืชืงืืื ื 3.8.2022
ืืืจ ืืื ืฉื ืื ืฉ Microsoft ืืืคืฉืจืื ืื ืืืฉืชืืฉื ืืืื ืืช ืืงืื ืืืืืช ืคืืชืื ืืื ืืงืกืืช ืืืื ืืืื ืืืชืงืื ืฉืื ืืืื ื ืืืจืืืืืืช. ืื ืื ื ืกืืืื ืืฉื WSL, ืฉืื ืงืืฆืืจ ื Windows Subsystem for Linux, ืืฉืืฉืช ืืฉืืืช ืชืจืืื ืืื ืงืื ืืื ืืงืก ืืงืื ืืืื ืืืก, ืืื ืืคืฉืจ ืืืจืืฅ ืืืฉืืืื ืืื ืืจืืื ืฉืงืืืคืื ืืืื ืืงืก ืขื ืืืื ืช ืืืื ืืืก.
ืืืฉืืขืืช ืืืืื ืชื ื ืืื ืขืฆืืื - ืื ืืชื ืืืจ ืืืืจืื Linux ืืฆืจืืืื ืืขืืืจ ืืืืฉื Windows, ืชืืืื ืืืชืงืื ืืช ืื ืืืืื ืฉืืชื ืืืืจืื ืืืืืืื ืืืืฉืชืืฉ ืืื ืืื ืืขืื. ืื ืืชื ืื ืืืืจืื Linux ืชืืืื ืืงืื ืืืืืช ืืืืื ืืชืื ืืขืจืืช ืืืคืขืื ืฉืืื ืืืงืฆื ืฉืืื.
ืืืืืื ืจ ืืจืื ืืื ืืื ืืขืืื ืขื WSL2 ืืื ืืงืื ืกืืืืช ืืื ืืงืก ืืืื ืืชืื ื Windows ืฉืืื.
ืืคืจืืื ื ืืกืคืื ืืืจืฉืื:
https://www.tocode.co.il/workshops/119
## ืฉืืื React Native World
ืจืืืงื ื ืืืืื ืืื ืคืจืืืืืืจืง ืืคืืชืื ืืืฉืืื ืืืืืื ืืืฆื ืคืืืคืืจืืืช ืฉืืืคืฉืจืช ืืืชืื ืงืื ืคืขื ืืืช ืืืืจืืฅ ืืืชื ืื ืขื ืืืืคืื ืืื ืขื ืื ืืจืืืื (ืืชืื'ืก ืื ืขื ืืง ื Windows).
ืืืืืื ืจ ื ืจืื ืืื ืืืฆืืจ ืคืจืืืงื React Native ืืืฉ, ืืื ืืืืืง ืืืชื ืขื ืืืืฉื ืืืื ืืืฆืืจ ืืื ื ืืคืืืงืฆืืืช ืืืืคืื, ืืืืจื ืื ื ืืฉืื ืืืจืืื ืืช ืืืคืืืงืฆืื, ืืืืกืืฃ ืงืืืคืื ื ืืืช ืืืคืื ืืื ืืขืฆื ืืืชื.
ืืคืจืืื ื ืืกืคืื ืืืจืฉืื:
https://www.tocode.co.il/workshops/118
ืื ืืืืืื ืจืื ืืขืืจื ืืืื, ืืืื ืืืืฉื ืืฉืขื ืขืฉืจ ืืืืงืจ. ื ืชืจืื ืืืื.
1 419
# ืืคืฉืจ ืจืื?
ืืืชืืืืืืช ืขื ืืชืืจืื ืื ืื ื ืฉืืื ืื ืืฉื ื ืจืฆืื ืืช ืื ืืืืื ืืืขืืืชืืื-
1. ืืืง ืืืืื ืื ืื ื ืืชืขืงืฉืื ืืคืชืืจ ืืื ืืื, ืืืืื ืืื ืืืืืื ืืขืฆืื ื ืื ืืขืืื ืฉืื ืื ื ืืืืืื.
2. ืืืง ืืืืื ืื ืื ื ืืืืืฉืื ืืืืจื ืืจืง ืจืืฆืื ืืืกืชืื ืืคืืชืจืื ืื ืฉืืืฉืื ืืกืืืจ ืื ื ืื ืขืืฉืื.
ืืืขืื ืืืคืชืืจ ืืื ืืื ืืื ืฉืืฉืืชื ืื ืืฆืืืืื ืื ืืืื ืืืืืฉ ืืืชืงืืข; ืืื ืืชื ืืฆืืืืื ืืื ืื ืืืืจ ืฉืื ืืืจืชื ืืชืืจืื ืงืฉืื ืืกืคืืง.
ืืืขืื ืืืืกืชืื ืืคืืชืจืื ืืช ืฉื ืืืจืื ืืืืขืชืืง ืืื ืฉืืชื ืื ืืืื ืื ืืช ืืฉืจืืจืื ืื ืืื ืื ืฉื ืคืืชืจืื ืืขืืืช, ืืฉืจืื ืืืชืืจืื ืืืืื ืืืืืชืืื ืื ืืืืื ืืฉืื ืืืจ ืฉืืชืื ืืกืคืจ.
ืืคืืชืจืื ืืื ืฉืื ืฉืจืืฆืื ืืืฉืชืคืจ ืืืืืื ืืื ืืืชืจืื ืืืคืฉ ืจืืืื: ืืฉืืื ืืืคื ืืคืฉืจ ืืงืจืื ืืืชืจ ืขื XYZ, ืื ืืืจืจ ืขื ืืืื ื ืืฉืืื ืืืื ืืืืื ืืื ืืืชืืืื ืืื ืืืชืจ ืขื ืืืขืื, ืื ืืืกืชืื ืขื ืคืืชืจืื ืืช ืฉื ืืขืืืช ืืืืืช ืืื ืกืืช ืืืชืืื ืืืชื ืืืชืืจ ืฉืื ื, ืื ืื ืืืคืืฉ ืืืื.
ืจืื ืืืคืฉืจ ืื ื ืืฉืื - ืื ืืืืื ืืืจืื ืืืฉืื, ืืื ืืืืฉื ืืืชื ืขื ืืืชืืจืื ืฉืขืืฉืื ืื ืื ื ืืชืืืืืื ืืืชื. ืฉืืืื ืืื, ืืืืจื ืืื, ืืจืืื ืืืคืงืื ืืืืคื ืืืชื ื ืืคืืชืจื ืืขืืืช ืืืืื ืืืชืจ.
1 419
(f x2 y2)))
(defn process-line [acc line]
(let [[x1 y1 x2 y2]
(->> line
(re-seq #"(\d+),(\d+) -> (\d+),(\d+)")
(first)
(drop 1)
(map read-string))]
(cond
(= x1 x2) (reduce #(%2 %1)
acc
(fill-points-in-range y1 y2 (fn [y] #(update %1 [x1 y] (fn [v] (inc (or v 0)))))))
(= y1 y2) (reduce #(%2 %1)
acc
(fill-points-in-range x1 x2 (fn [x] #(update %1 [x y1] (fn [v] (inc (or v 0)))))))
:else acc)))
; :else (reduce #(%2 %1) acc (fill-points-in-line x1 y1 x2 y2 (fn [x y] #(update %1 [x y] (fn [v] (inc (or v 0))))))))))
(def input
(->> "input.txt"
(slurp)
(clojure.string/split-lines)
(reduce process-line {})))
(pprint (count (filter (fn [[_ v]] (> v 1)) input)))
ืืช ืืชืจืืื ืืืงืืจื ืชืืืื ืืืฆืื ืืงืืฉืืจ:
https://adventofcode.com/2021/day/5
ืืื ืกืืช ืืคืชืืจ ืืืชื ืืขืฆืืื ืืฉืคืช ืืชืื ืืช ืืืืืื ืขืืืื ืื ืืฉืืง ืขื ืคืืชืจืื ืืงืืื'ืจ ืฉืื ืืืืฆืืข ืฉืืคืืจืื.1 419
# ืืฉืืงืื ืขื ืงืืื'ืจ: ืคืืชืจืื Advent Of Code 2021 ืืื 5
ืชืจืืืื Advent Of Code ืื ืืืงืื ืืืืฉืื ืืืชืืื ืขื ืฉืคืช ืชืื ืืช ืืืฉื, ืืืืืืื ืืืืช ืฉืืืืขืช ืืืชืืืื ืืคื ืขื ื ืชืื ืื ืืื ืืคืืืฆืืืช ืขืืืื. ืงืืื'ืจ ืืืืื ืืชืืืื ืืืืืจื. ืืช ืืื 5 ืืฆืืืชื ืืคืชืืจ ืขื ืืจืืง ืคืฉืื ืืื - ืืขืื ืงืฆืช ืงืื ืืกืืืื. ืื ื ืืกืืคืืจ ืืืื.
## ืืืฉืืื ืืืื 5
ืืืฉืืื ืืืื ืงืฉืืจื ืืื ืืืช ืืื ืื-ืืืืื ืืคื ืจืฉืืื ืฉื ืงืืืื ืฉืขืืืจืื ืขื ืืืื. ืจืฉืืืช ืืงืืืื ืืืืขื ืืคืืจืื ืืื:
0,9 -> 5,9
8,0 -> 0,8
9,4 -> 3,4
2,2 -> 2,1
7,0 -> 7,4
6,4 -> 2,0
0,9 -> 2,9
3,4 -> 1,4
0,0 -> 8,8
5,5 -> 8,2
ืื ืื ืฉืืจื ืืฆืืื ืช ื ืงืืืช ืืชืืื ืฉื ืืงื (ืขื x ื y) ืื ืงืืืช ืกืืื ืฉืื. ืืืฉืืื ืฉืื ื ืืื ืืืฆืื ืืื ื ืงืืืืช ืืฉ ืืืื ืืื ืขืืืจ ืืืชืจ ืืงื ืืื. ืืืืง ืืจืืฉืื ืืืงืฉื ืืืกืชืื ืจืง ืขื ืงืืืื ืืืืื ืื ืื ืืืื ืืื, ืืืืืง ืืฉื ื ืืกืคืืจ ืื ืงืืืื ืืืืกืื ืืื.
## ืืื ืืืฉืช ืืคืืชืจืื
ืืฆืขื ืืจืืฉืื ืืืจื ืืคืืชืจืื ืืื ืืืฉืื ืขื ืืจื ืืืื ืืืืฆื ืืช ืืืืืข. ืื ืื ื ืืกืชืืืื ืขื ืืื ืื-ืืืืื ืืื ืฉืืจื ืชืืกืืฃ ืืืื ืืืืข, ืืืื ืืืื ืงื ืืืฉืชืืฉ ื Dictionary: ืืืคืชื ืืื ืงืืืืจืืื ืื (x, y) ืืืขืจื ืืื ืืื ืงืืืื ืขืืืจืื ืื ืงืืื ืืืืช. ืื ืคืขื ืฉืงืืจืืื ืฉืืจื ืืืืืื ืขืื ืงื, ื ืืืื ื-1 ืืช ืืขืจื ืืื ืื ืงืืืืช ืฉืืื ืขืืืจ ืืื ืืืกืืฃ ื ืืื ืืืคืฉ ืืช ืื ืืขืจืืื ืฉืืืืืื ื-1.
## ืงืื ืงืืื'ืจ
ืืืชืืจ ืืจืืฉืื ืืืืืืฉ ืืื ืืืืื ืืื ืืงืื ืจืฉืืื ืฉื ืื ืื ืงืืืืช ืขื ืงื ืืกืืื. ืืฉืืื ืืืืง ืืจืืฉืื - ืงืืืื ืื ืืืื ืื ืืืคืงืืื - ืืฉืชืืฉืชื ืืงืื ืืื:
(defn fill-points-in-range [start end f]
(->> (range (min start end) (inc (max start end)))
(map f)))
ืืคื ืืฉ ืืจืืง: ืืืงืื ืืืืืืจ ืืงืืจื ืจืฉืืื ืฉื ื ืงืืืืช ืืืืืจืื ืืืชื ืืจืืฅ ืขืืืื ืืืืืื, ืื ื ืืขืืืฃ ืืงืื ืขืื ืคืื ืงืฆืื ืืืืคืขืื ืืืชื ืืืืืื ืขื ืื ืื ืงืืืืช. ืื ืืืกื ืืฉืืคื ืืช ืืืืืื ืืื ืงืื ืฉืืงืจื ืืคืื ืงืฆืื ืฉืื.
ืฉืืจ ืืงืื ืืืกืืช ืคืฉืื:
(defn process-line [acc line]
(let [[x1 y1 x2 y2]
(->> line
(re-seq #"(\d+),(\d+) -> (\d+),(\d+)")
(first)
(drop 1)
(map read-string))]
(cond
(= x1 x2) (reduce #(%2 %1)
acc
(fill-points-in-range y1 y2 (fn [y] #(update %1 [x1 y] (fn [v] (inc (or v 0)))))))
(= y1 y2) (reduce #(%2 %1)
acc
(fill-points-in-range x1 x2 (fn [x] #(update %1 [x y1] (fn [v] (inc (or v 0)))))))
:else acc)))
(def input
(->> "input.txt"
(slurp)
(clojure.string/split-lines)
(reduce process-line {})))
(pprint (count (filter (fn [[_ v]] (> v 1)) input)))
ืฉืืื ืื ืืฉืืจื:
(fill-points-in-range y1 y2 (fn [y] #(update %1 [x1 y] (fn [v] (inc (or v 0))))))
ืืื ืืืงืืช ืงื ืืืืงืื ืืืืืืจ ืืขืจื ืฉื "ื ืงืืืืช" ืืื ืฉืืืื ืืืื ื ืืฆืคืื, ืืื ืืืืืจื ืืขืจื ืฉื ืคืื ืงืฆืืืช. ืื ืคืื ืงืฆืื ืืืืขืช ืืงืืช ืืืจืืฆื ืฉื ืืื ืืืืขืืืช ื-1 ืืช ืืขืจื ืฉืืชืื ืื ืงืืื ืกืคืฆืืคืืช ืขื ืืงื. ืืช ืืคืื ืงืฆืืืช ืืืื ืื ื ืืคืขืื ืืชืื ืืืืืช reduce ืขื ืืืื ืืืื ืืขืืื ืืช ืื ืื ืงืืืืช ืืงื.
ืืืจื ืฉืืฉ ืื ืืช ืืืืจืืฆื ืืืื ื ืขื ืื ืื ืชืื ืื ืืฉืืจื:
(pprint (count (filter (fn [[_ v]] (> v 1)) input)))
ืืกื ื ืช ืจืง ืืช ืื ืงืืืืช ืฉืืขืจื ืืื ืืืื ื-1 ืืืืคืืกื ืืื ืืืื ืืฉ.
## ืืืง 2
ืืืืง ืืฉื ื ืจืฆืื ื ืืืคื ืื ืืงืืืื ืืืืกืื ืืื. ืืฉืืื ืื ืืืกืคืชื ืืช ืืคืื ืงืฆืื:
(defn fill-points-in-line [x1 y1 x2 y2 f]
(conj (map f
(range x1 x2 (if (> x1 x2) -1 1))
(range y1 y2 (if (> y1 y2) -1 1)))
(f x2 y2)))
ืืื ืืืชืจ ืืกืืืืช ืืืงืืืื ืืืืคืงืืื ืืืื ืืืื ืื ืืคืขื ืื ื x ืืื ื y ืืฉืชื ืื ืืืฉืื ืื ืฆืจืื ืืืืืช ืืืชืืื. ืืฉืืืชื map ื clojure ืืืืขืช ืืงืื ืืื ืืืืืื ืืคืฉืื ืืขืืืจื ืืื ืคืจืืืจืื ืืคืื ืงืฆืื.
ืืืจื ืฉืกืืจื ื ืืช ืืคืื ื ืืืืช ืืคืฉืจ ืืฉืื ืืช ืืคืื ืงืฆืื ื process-line ืืืืืืืฃ ืืช ืืืืง ื else ืฉืืื ืฉื ื:
:else (reduce #(%2 %1) acc (fill-points-in-line x1 y1 x2 y2 (fn [x y] #(update %1 [x y] (fn [v] (inc (or v 0))))))))))
ืืืชืืื ืืช ืืืืื:
(use 'clojure.pprint)
(defn fill-points-in-range [start end f]
(->> (range (min start end) (inc (max start end)))
(map f)))
(defn fill-points-in-line [x1 y1 x2 y2 f]
(conj (map f
(range x1 x2 (if (> x1 x2) -1 1))
(range y1 y2 (if (> y1 y2) -1 1)))1 419
# ืื ืืืฉืจ ืืช ื Pull Request ืฉืื?
ืืืืืืื ืื ืื ื ืืืืืื ืืืกืชืื ืืืืฉืง ืืืจืคื ืืืืจื ืืืจืืืช ืืช ืื ืืืืื ืื ืฉืืื ืขื Pull Request ืืื ืื ืืืฉืจ ืื PR. ืืื ืื ื ืืืื ืืงืืช ืืช ืืคืจืืืงื ืืืืฆื ืืืืืืื, ืื ืื ืื ืื ื ืขืืืืื ืืืื ืืฉืืจืช ืืคืงืืื, ืืืืืข ืืื ืืืจ ืื ืืืื.
ืื ืืืื ืืชืืชื ืืื ืขื ืื ืื ืื ืืคืชืงืื ืืืื. ืืืื ืื ื ืจืืฆื ืืืจืืืช ืืืืื ืืฉืืืืฉ ืืื ืืื ืฉืื ืคืขื ืฉืืืฉืื ืืืฉืจ Pull Request ืืฉื ืฉืื ืืืืชื ืืชืื ืืงืืืื ืืชืืจ Note, ืื ืฉื ืืื ืืืืืืจ ืืืจื ืืื ืืงืื.
## ืงืื ื Action
ืืืจืืง ืืืืกืก ืขื Github Actions, ืฉืื ืื ืื ืื ื CI ืืคื ืืื ืฉื ืืืืืื. ืื ืื ื ืืืืืื ืืืืืืจ ืฉืื ืคืขื ืฉืงืืจื ืืฉืื ืชืืคืขื ืืืืืืืืช ืืืื ื ืืืจืืืืืืช ืืชืขืฉื ืืฉืื. ืืืงืจื ืฉืื ื ื ืืืืจ ืฉืื ืคืขื ืฉืืืฉืื ืืฉืืืจ Approve ืขื Pull Request, ืชืืคืขื ืืืื ื ืฉืชืฉืืืจ ืคืชืง ืขื ืืงืืืื ืืขืืื ื ืืืืชืจ ืืืืชื PR.
ืืงืื ืฉื ื Action ื ืงืจื Workflow ืืืื ืฉืืืจ ืืงืืืฅ yml ืืฉื
.github/workflows/main.yml. ืืคืฉืจ ืืืฆืืจ ืืืชืจ ืืงืืืฅ workflow ืืื, ืจืง ืืฉืื ืืฉืื ืืช ืืืื ืืชืืงืื ืื ืืื ื.
ืื ืืงืื ืืืืืื ืฉืื ื:
jobs:
approved:
if: github.event.review.state == 'approved'
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v2
- run: |
git config --global user.name 'Github Action'
git config --global user.email '<>'
echo "Pull Request ${{ github.event.pull_request.number }} was approved by ${{ github.event.review.user.login }}"
echo "Approved By: ${{github.event.review.user.login }}" | git notes append -F - ${{ github.event.pull_request.head.sha }}
git push origin "refs/notes/*"
ืืืื ื ืจืื ืืช ืขืืงืจื ืืืืจืื:
1. ืืืืง ืืจืืฉืื ืื ื ืืืืืจ ืืชื ื Workflow ืืจืืฅ, ืื ืืืื ืื ืคืขื ืฉืืืฉืื ืืฉืืืจ review ืขื Pull Request.
2. ืืืืง ืืฉื ื ืื ื ืืืืืจ ืื ืืขืฉืืช.
3. ืืคืงืืื if ืืืืืจื ืชื ืื ืขื ืืืืจืืข, ืืกืืคืืจ ืฉืื ื ืื ืื ื ืจืืฆืื ืืืคื ืจืง ื Reviews ืืกืื Approve.
4. ืืืืจืช ืืฉืชื ื ืืกืืืื GITHUB_TOKEN ืืืคืฉืจืช ื Action ืืขืฉืืช ืคืขืืืืช ืืฉืื ื ืืชืื ืืจืืคื. ืืืงืจื ืฉืื ื ืืคืขืืื ืืื ืืืกืคืช ืคืชืง.
5. ืืืืฃ ืืืืืชื ืืชืืื ืืชืื ืคืงืืืช ื run - ืื ื ืืืืืจ ืืช ืฉื ืืืฉืชืืฉ ืืืืืืืื, ืืคืขืื git notes append ืืื ืืืฆืืจ ืคืชืง ืืืืืฃ ืืช ืื ืืคืชืงืื ืืืืืจ.
6. ืืืืืื ืืขืืืจ ืื ืืช ืื ืืืื ืคืืจืืฆืื ืืชืืจ ืืฉืชื ืื ืืืืื ืืืืืคื ืืขืจืืื ืืืชืืืืื. ืืืฉืชื ืื ืื ืื ืฉืืืคืืข ืืชืื ืกืืืจืืื ืืกืืืกืืื ืืคืืืื, ืืืฉื ${{github.event.review.user.login }} ืขืืืจ ืฉื ืืืฉืชืืฉ ืฉื ืื ืฉืืฉืืืจ ืืช ื Review, ื ${{ github.event.pull_request.head.sha }} ืขืืืจ ื sha ืฉื ืืงืืืื ืืืืจืื ื PR. ืืชืืขืื ืืคืฉืจ ืืืฆืื ืืช ืืืื ื ืฉื ืื ืืืืืืงืืื ืฉืืื.
## ืืฉืืืช ืืคืชืงืื ืืฆืคืื ืืืื
ืืืจื ืืืฉืช Pull Request ืืืืฉืืจ ืฉืื ืื ื ืืืื ืืจืืืช ืืืื Actions ืืช ืืคืื ืฉื ื Workflow. ืื ืฉืืืชืจ ืืขื ืืื ืื ืืืืื ืืคืชืง. ืืืจืฆื ืจืืืื fetch ืื ืืืฉื ืืช ืืคืชืงืื. ืืฉืืื ืืืฉืื ืืืชื ืื ื ืืืชื ืืช ืืคืงืืื:
$ git fetch origin refs/notes/commits:refs/notes/commits
ืืืืจื ืื ืืคืขืื ืฉื git log ืืจืื ืืื ืืงืืืื ืืขืืื ื ืืืืชืจ ื PR ืืช ืืคืชืง ืขื ืฉื ืืืฉืชืืฉ ืฉืืืฉืจ ืืืชื.
ืฉืืื ืื ืจืง ืฉืืื ืื ืื ืืื ืขืืืื ืืกืืกื ืืืืืจ ืืืืื. ืืื ืื ืืืคื ืืืืืงื ืื ืขืจืืื ืฉื ืืืงืืจืช ืืืื ืืฉ ืขืื ืืื ืืขืืืช ืฉืื ืืฉืืชื ืขืืืื. ืื ื ืืงืืื ืฉืืื ืืขืืืจ ืืื ืืชืืจ ืืกืืก ื Workflows ืฉืชืจืฆื ืืืชืื.
Endi mavjud! Telegram Tadqiqoti 2025 โ yilning asosiy insaytlari 
