uz
Feedback
ToCode

ToCode

Kanalga Telegramโ€™da oโ€˜tish

ื˜ื™ืคื™ื ืงืฆืจื™ื ืœืžืชื›ื ืชื™ื ืžืืช ื™ื ื•ืŸ ืคืจืง

Ko'proq ko'rsatish
1 419
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kunlar
Ma'lumot yo'q30 kunlar
Postlar arxiv
ToCode
1 419
# ื˜ื™ืค ื’ื™ื˜: ืจื™ื‘ื™ื™ืก ืื—ืจื™ ืืžื ื“ ืคืงื•ื“ืช git commit --amend ื”ื™ื ื“ืจืš ืžืื•ื“ ื ื•ื—ื” ืœืฉื ื•ืช ืคืจื˜ื™ื ืฉืœ ืงื•ืžื™ื˜ ืื• ื”ื•ื“ืขืช ืงื•ืžื™ื˜ ืื—ืจื™ ืฉื™ืฆืจืชื™ ืื—ืช ื‘ื˜ืขื•ืช. ื”ื‘ืขื™ื” ืื™ืชื” ืฉืื ื›ื‘ืจ ื™ืฆืจืชื™ ืขื ืฃ ืฉื™ืฆื ืžื”ืงื•ืžื™ื˜ ื”ื™ืฉืŸ ืื•ืชื• ืงื•ืžื™ื˜ ืฉื—ืฉื‘ืชื™ ืฉืžื—ืงืชื™ ื™ื—ื–ื•ืจ ื›ืฉืื ื™ ืืžื–ื’ ืžื—ื“ืฉ ืืช ื”ืขื ืฃ. ื‘ืขื–ืจืช git rebase --onto ืืคืฉืจ ืœืคืชื•ืจ ืืช ื”ืกื™ืคื•ืจ ื™ื—ืกื™ืช ื‘ืงืœื•ืช ื•ืœืชืงืŸ ืืช ื”ืขื ืฃ. ## ื”ืจื™ืคื• ื”ื‘ืขื™ื™ืชื™ ื‘ืฉื‘ื™ืœ ื”ื“ื•ื’ืžื” ื ื™ืฆื•ืจ ืจื™ืคื• ื‘ืชื™ืงื™ื” ื—ื“ืฉื” ืขื ื”ืคืงื•ื“ื•ืช:
$ git init .
$ git commit --allow-empty -m c1
$ git commit --allow-empty -m c2
$ git commit --allow-empty -m c3
$ git switch -c dev
$ git commit --allow-empty -m d1
$ git commit --allow-empty -m d2
$ git commit --allow-empty -m d3
$ git commit --allow-empty -m d4
ืขื›ืฉื™ื• ื ื—ื–ื•ืจ ืœ main ื•ื ืขื“ื›ืŸ ืืช ื”ื•ื“ืขืช ื”ืงื•ืžื™ื˜ ื”ืื—ืจื•ื ื”:
$ git switch main
$ git commit --amend -m 'fixed commit message' --allow-empty
ื•ื”ืœื•ื’:
$ git log --oneline --graph --all

* cebfcab (HEAD -> main) fixed commit message
| * 784bb2c (dev) d4
| * 4f51f1e d3
| * 595d953 d2
| * cbcb09c d1
| * 707a378 c3
|/
* e09e80f c2
* aa0e4ca c1
## ืžื” ื™ืงืจื” ื‘ merge ื‘ื•ืื• ื ื ื™ื— ืฉืœื ื™ื™ื—ืกืชื™ ื—ืฉื™ื‘ื•ืช ืœ amend ื•ืื ื™ ืจื•ืฆื” ืœืžื–ื’ ื—ื–ืจื” ืืช ืขื ืฃ ื”ืคื™ืชื•ื—. ืื ื™ ืžืคืขื™ืœ:
$ git merge dev
ื•ืœื”ืคืชืขืชื™ ื”ืงื•ืžื™ื˜ ืœืคื ื™ ื”ืชื™ืงื•ืŸ c3 ื ื›ื ืก ืœืœื•ื’ ื•ืจืง ืžื‘ืœื‘ืœ ืื•ืชื™:
*   72ab395 (HEAD -> main) Merge branch 'dev'
|\
| * 784bb2c (dev) d4
| * 4f51f1e d3
| * 595d953 d2
| * cbcb09c d1
| * 707a378 c3
* | cebfcab fixed commit message
|/
* e09e80f c2
* aa0e4ca c1
## ืžื” ื™ืงืจื” ื‘ rebase ื ื—ื–ื™ืจ ืืช ื”ืžืฆื‘ ืœืื™ืš ืฉื”ื™ื” ืœืคื ื™ ื” merge ืขื:
$ git reset cebfcab
ื•ื ื ืกื” ืœื”ืฉืชืžืฉ ื‘ rebase ื‘ืžืงื•ื ื‘ merge. ืื ื™ ืžืคืขื™ืœ:
$ git switch dev
$ git rebase main
ืื—ืจื™ ื”ืคืขืœื” ืื ื™ ืžืกืชื›ืœ ืฉื•ื‘ ื‘ืœื•ื’ ื•ืœื”ืคืชืขืชื™ ืื ื™ ืฉื•ื‘ ืจื•ืื” ืืช c3, ืœืžืจื•ืช ืฉืขืฉื™ืชื™ ืœื• amend ื•ื”ื”ื•ื“ืขื” ื”ื™ืชื” ืฆืจื™ื›ื” ืœื”ื™ืžื—ืง:
* 1cbdec3 (HEAD -> dev) d4
* 9008326 d3
* c4c2918 d2
* 17683c9 d1
* e69bcf4 c3
* cebfcab (main) fixed commit message
* e09e80f c2
* aa0e4ca c1
## ืชื™ืงื•ืŸ ืขื rebase onto ื ื—ื–ื™ืจ ืืช ื”ืžืฆื‘ ืœืื™ืš ืฉื”ื™ื” ืœืคื ื™ ื” rebase ืขื:
$ git reset 784bb2c
ื•ืขื›ืฉื™ื• ื”ื’ื™ืข ื”ื–ืžืŸ ืฉื ืฉื™ื ืœื‘ ืฉื™ืฉ ื‘ืขื™ื” ื•ื ืชืงืŸ ืื•ืชื”. ื‘ืžืงื•ื ืœื”ืฉืชืžืฉ ื‘ rebase ืจื’ื™ืœ ืื ื™ ืžื‘ืงืฉ ืžื’ื™ื˜ ืฉื™ืขืฉื” ืจื™ื‘ื™ื™ืก ืจืง ืœืงื•ืžื™ื˜ื™ื ืฉืงืจื• ืื—ืจื™ c3 ื‘ืขื ืฃ dev ื•ื™ืฉื™ื ืื•ืชื ืขืœ main. ื–ื” ื ืจืื” ื›ื›ื”:
$ git switch dev
$ git rebase --onto main 707a378 dev
$ git log --oneline --graph --all

* c6a7432 (HEAD -> dev) d4
* d6071d0 d3
* 06107ec d2
* 2eb5f05 d1
* cebfcab (main) fixed commit message
* e09e80f c2
* aa0e4ca c1
ื•ื›ื›ื” ื‘ื“ื™ื•ืง ืจืฆื™ืชื™ ืฉื”ื”ื™ืกื˜ื•ืจื™ื” ืชื™ืจืื”. ื”ืงื•ืžื™ื˜ ื”ื‘ืขื™ื™ืชื™ ืชื•ืงืŸ ื•ื”ืขื ืฃ ืฉื™ืฆื ืžืžื ื• ืขื•ื“ื›ืŸ ืœื”ื™ืจืื•ืช ื›ืื™ืœื• ื”ื•ื ื™ืฆื ืžื”ืงื•ืžื™ื˜ ืขื ื”ื”ื•ื“ืขื” ื”ื ื›ื•ื ื”. ืื ืœื ื”ื™ื™ื ื• ืฉืžื™ื ืœื‘ ืœ hash-ื™ื ื”ื™ื” ืืคืฉืจ ืœื“ืžื™ื™ืŸ ืฉืคืฉื•ื˜ ืฉื™ื ื™ืชื™ ืืช ื”ื•ื“ืขืช ื”ืงื•ืžื™ื˜ ื‘ืœื™ ืœื”ืฉืคื™ืข ืขืœ ืฉื•ื ื“ื‘ืจ ืื—ืจ.

ToCode
1 419
# ื˜ื™ืค ื’ื™ื˜ื”ืื‘: ืื™ืš ืœื™ืฆื•ืจ Pull Request ืžืฉื•ืจืช ื”ืคืงื•ื“ื” ืœืžืจื•ืช ืฉื”ืจื‘ื” ืคืขืžื™ื ืื ื—ื ื• ืžื‘ืœื‘ืœื™ื ื‘ื™ืŸ ื”ืฉื ื™ื™ื, ื’ื™ื˜ื”ืื‘ ืื™ื ื• ื’ื™ื˜ ื•ื’ื ืžื ื’ื ื•ืŸ ื” Pull Requests ืฉืœ ื’ื™ื˜ื”ืื‘ (ื›ืžื• ื’ื ืฉืœ ืื™ื ืกื•ืฃ ืกืคืงื™ ืื™ื—ืกื•ืŸ ื’ื™ื˜ ืื—ืจื™ื) ืื™ื ื• ื—ืœืง ืžื’ื™ื˜. ืื‘ืœ ืจืง ื‘ื’ืœืœ ืฉืžืฉื”ื• ืœื ื—ืœืง ืžื’ื™ื˜ ืœื ืื•ืžืจ ืฉืื ื—ื ื• ื—ื™ื™ื‘ื™ื ืœืขื‘ื•ื“ ื‘ืžืžืฉืง ื”ื“ืคื“ืคืŸ. ืกืคืฆื™ืคื™ืช ืœื’ื™ื˜ื”ืื‘ ื™ืฉ ื—ื‘ื™ืœืช ื›ืœื™ ืคื™ืชื•ื— ืžืฉื•ืจืช ื”ืคืงื•ื“ื”, ืฉืžืืคืฉืจื™ื ืœื‘ื ื•ืช ืกืงืจื™ืคื˜ื™ื ืœื›ืœ ืคืขื•ืœื” ื ืคื•ืฆื” ืฉื ืจืฆื” ืœืขืฉื•ืช. ื‘ื˜ื™ืค ืฉืœ ื”ื™ื•ื ืื ื™ ืจื•ืฆื” ืœื™ืฆื•ืจ Pull Request ื‘ืฆื•ืจื” ืื•ื˜ื•ืžื˜ื™ืช ื›ื“ื™ ืœื—ืกื•ืš ืœืขืฆืžื™ ื”ืงืœื“ื” ืฉืœ ื”ื˜ืงืกื˜ ื‘ื›ื•ืชืจืช ื•ื‘ืชื•ื›ืŸ ื” PR, ื›ื™ ื™ืฉ ืœื™ ื›ื‘ืจ ืกืงืจื™ืคื˜ ืฉื™ื•ื“ืข ืœื™ื™ืฆืจ ืืช ื”ื˜ืงืกื˜ื™ื ื”ืืœื” ืžืชื•ืš ื”ืงื•ื“. ืฉืœื‘ ืจืืฉื•ืŸ ืื ื™ ืžืชืงื™ืŸ ืืช ื—ื‘ื™ืœืช ื›ืœื™ ืฉื•ืจืช ื”ืคืงื•ื“ื” ืฉืœ ื’ื™ื˜ื”ืื‘ ืœืคื™ ื”ื”ื•ืจืื•ืช ื‘ืขืžื•ื“ ื”ื–ื”: https://cli.github.com/manual/installation ืขืœ ืžืง ื–ื” ื”ื™ื” ื‘ืืžืฆืขื•ืช brew install gh, ื•ืขืœ ื—ืœื•ื ื•ืช ืžื•ืจื™ื“ื™ื ืงื•ื‘ืฅ ื”ืชืงื ื” ืžื”ืงื™ืฉื•ืจ https://github.com/cli/cli/releases/tag/v2.11.3. ื™ืฉ ื’ื ื”ืชืงื ื” ืœืœื™ื ื•ืงืก ืื‘ืœ ืื ื™ ืืชืŸ ืœื›ื ืœื”ื™ื›ื ืก ืœืงื™ืฉื•ืจ ื‘ืฉื‘ื™ืœ ืœืžืฆื•ื ืืช ื”ื”ื•ืจืื•ืช. ืื—ืจื™ ืฉื™ืฉ ืœื ื• ืืช ื”ื›ืœื™ ืขืœ ื”ืžื—ืฉื‘ ืื ื™ ืฆืจื™ืš ืœื—ื‘ืจ ืื•ืชื• ืœื’ื™ื˜ื”ืื‘. ื”ืคืงื•ื“ื” ืœื—ื™ื‘ื•ืจ ื”ื™ื:
$ gh auth login
ืื—ืจื™ ื”ืคืขืœื” ื™ื™ืคืชื— ืœื›ื ื“ืคื“ืคืŸ ื•ืชืฆื˜ืจื›ื• ืœืืฉืจ ืฉืืชื ื–ื” ืืชื ื•ืฉืืชื ืžืกื›ื™ืžื™ื ืœื’ืฉืช ืœื’ื™ื˜ื”ืื‘ ืžืฉื•ืจืช ื”ืคืงื•ื“ื”. ื•ืื—ืจื™ ื”ื—ื™ื‘ื•ืจ ื ื•ื›ืœ ืœื”ืฉืชืžืฉ ื‘ืคืงื•ื“ื” ื”ื‘ืื” ื›ื“ื™ ืœื™ืฆื•ืจ Pull Request ืžืฉื•ืจืช ื”ืคืงื•ื“ื”. ื‘ื“ื•ื’ืžื” ืฉืœื™ ืื ื™ ืฉื•ืœื— PR ืœืžืฉืชืžืฉ ynonp-test ื•ืœืคืจื•ื™ืงื˜ cli-pull-request-demo:
gh pr create -R ynonp-test/cli-pull-request-demo --title "Pull request title" --body "Pull request body"

ToCode
1 419
# ืจืง ืขื•ื“ ืฉืขื” ื”ืื ื”ืงืจื ืœ ืฉืœ ืœื™ื ื•ืงืก ื”ื™ื” ื™ื•ืชืจ ื™ืฆื™ื‘ ืื ืœื™ื ื•ืก ื˜ื•ืจื•ื•ืœื“ืก ื”ื™ื” ืžื•ื•ืชืจ ืขืœ ืฉืขืชื™ื™ื ืฉื™ื ื” ื‘ืœื™ืœื”, ื•ื‘ืžืงื•ืžืŸ ื™ื•ืฉื‘ ืœื›ืชื•ื‘ ืขื•ื“ ืงื•ื“? ืื• ืฉืžื” ืฉื”ื•ืคืš ืืช ื”ืงืจื ืœ ืœื™ืฆื™ื‘ ื”ื•ื ื‘ื“ื™ื•ืง ืฉื™ืงื•ืœ ื”ื“ืขืช ื”ืžืงืฆื•ืขื™ ืฉืœ ืœื™ื ื•ืก, ืฉื™ืงื•ืœ ื“ืขืช ืฉืขืœื•ืœ ืœื”ื™ืคื’ืข ืื ื”ื•ื ื™ื•ื•ืชืจ ืขืœ ืฉืขืชื™ื™ื ืฉื™ื ื”? ื•ื”ืงื•ื“ ืฉืœื›ื - ื”ืื ื”ื•ื ื™ื”ื™ื” ื™ื•ืชืจ ื˜ื•ื‘ ื›ื›ืœ ืฉื”ืžืคืชื—ื™ื ืžื›ื™ืจื™ื ื™ื•ืชืจ ืœืขื•ืžืง ืืช ื”ื˜ื›ื ื•ืœื•ื’ื™ื”? ื›ื›ืœ ืฉื”ืžืคืชื—ื™ื ื™ืฉื ื™ื ื™ื•ืชืจ ื˜ื•ื‘ ื•ืจื’ื•ืขื™ื ื™ื•ืชืจ? ื›ื›ืœ ืฉื”ืฉืขื•ืช ืฉืžื•ืฉืงืขื•ืช ื‘ืงื™ื“ื•ื“ ืžื•ืฉืงืขื•ืช 100% ื‘ืงื™ื“ื•ื“? ื“ื•ื•ืงื ื‘ื’ืœืœ ืฉื”ืคืจื•ื™ืงื˜ ืฉืœื›ื ื—ืฉื•ื‘, ืœื ื›ื“ืื™ ืœื”ื•ืกื™ืฃ ื”ื™ื•ื ืจืง ืขื•ื“ ืฉืขื” ืฉืœ ืขื‘ื•ื“ื”. ืคืจื•ื™ืงื˜ื™ื ื—ืฉื•ื‘ื™ื ืฆืจื™ื›ื™ื ืžืชื›ื ืชื™ื ืขื ืฉื™ื’ืจืช ื—ื™ื™ื ืฉื›ื•ืœืœืช ื’ื ื–ืžื ื™ ืœื™ืžื•ื“, ื–ืžืŸ ืคื ืื™, ื–ืžืŸ ืœืžืฉืคื—ื” ื•ืœืชื—ื‘ื™ื‘ื™ื ื•ืœื›ืœ ื“ื‘ืจ ืื—ืจ ืฉื”ื•ืคืš ืืชื›ื ืœืžื” ืฉืืชื.

ToCode
1 419
ื‘ื”ืฉื•ื•ืื” ืœืคื™ื™ืชื•ืŸ ื”ื”ื‘ื“ืœ ื”ืžืจื›ื–ื™ ื”ื•ื ืฉื‘ืงืœื•ื–'ืจ ื ื•ื— ืžืื•ื“ ืœืขื‘ื•ื“ ืขื ืžื™ืœื•ืŸ ื•ืœืฉืžื•ืจ ืืช ื›ืœ ื”ืžืฉืชื ื™ื ื‘ืชื•ืจ ืฉื“ื•ืช ื‘ืžื™ืœื•ืŸ. ื”ืžื™ืœื•ืŸ ื”ื•ื ื”ืขืจืš ื”ื™ื—ื™ื“ ืฉืขื•ื‘ืจ ื‘ reduce ื‘ื™ืŸ ืื™ื˜ืจืฆื™ื•ืช ื•ืคื•ื ืงืฆื™ื•ืช ื”ืขื“ื›ื•ืŸ ืžืงื‘ืœื•ืช ืืช ื”ืขืจืš ื”ื™ืฉืŸ ืžืฉื. ื‘ืคื™ื™ืชื•ืŸ ื”ืื™ืœื•ืฅ ื”ื–ื” ืœื ืงื™ื™ื ื•ืœื ื”ื™ืชื” ืœื™ ื‘ืขื™ื” ืœื”ื’ื“ื™ืจ ืžืฉืชื ื” ืœื›ืœ ืื—ื“ ืžื”ืžื“ื“ื™ื ืฉืฆืจื™ืš ืœืฉืžื•ืจ. ืœื“ื•ื’ืžื” ื”ื—ืœืง ื”ืฉื ื™ ื‘ืคื™ื™ืชื•ืŸ ื ืจืื” ื›ื›ื”:
pos = 0
depth = 0
aim = 0

with open('day2.txt') as f:
    for line in f:
        op, count = line.split()
        match [op, count]:
            case ["forward", n]:
               pos += int(n)
               depth += (aim * int(n))
            case ["down", n]:
                aim += int(n)
            case ["up", n]:
                aim -= int(n)

print(pos * depth)
ื–ื” ืคื™ืชืจื•ืŸ ื™ื•ืชืจ ืงืฆืจ ืฉื›ื•ืœืœ ื’ื ืืช ื”ืœื•ืœืื” ื•ื’ื ืืช ืคื•ื ืงืฆื™ื™ืช ื”ื˜ื™ืคื•ืœ, ื”ื›ืœ ื‘ืื•ืชื• ืžืงื•ื. ืฉื ื™ ื”ื“ื‘ืจื™ื ืฉื”ื•ืคื›ื™ื ืืช ืงื•ื“ ื”ืคื™ื™ืชื•ืŸ ืœืงืœื™ืœ ื™ื•ืชืจ ื”ื ื”ื”ืžืจื” ืœืžืกืคืจ (ื”ืคื•ื ืงืฆื™ื” int ื™ื•ืชืจ ืงืฆืจื” ืž Integer/parseInt) ื•ื” Pattern Matching ืฉื‘ื™ื ืชื™ื™ื ืœื ืžืฆืืชื™ ืžื ื’ื ื•ืŸ ืžืงื‘ื™ืœ ืœื• ื‘ Clojure.

ToCode
1 419
# ืžืฉื—ืงื™ื ืขื ืงืœื•ื–'ืจ: ืคื™ืชืจื•ืŸ AoC 2021 Day 2 ืื ื™ ืžืžืฉื™ืš ืขื•ื“ ื™ื•ื ื‘ืœื™ืžื•ื“ื™ ื”ืงืœื•ื–'ืจ ืฉืœื ื• ื‘ืžื˜ืจื” ืœืงื‘ืœ ื ืงื•ื“ืช ืžื‘ื˜ ื ื•ืกืคืช ืขืœ ื”ื”ื‘ื“ืœื™ื ื‘ื™ืŸ ืชื›ื ื•ืช ืคื•ื ืงืฆื™ื•ื ืืœื™ ืœืคืจื•ืฆื“ื•ืจืœื™, ื•ืื™ืš ืฉืคื•ืช ืžืขื•ื“ื“ื•ืช ืื•ืชื ื• ืœื‘ื—ื•ืจ ื›ื™ื•ื•ืŸ ืžื—ืฉื‘ื” ืžืกื•ื™ื. ื”ื™ื•ื ื”ืคื™ืชืจื•ืŸ ื”ืงืฆืจ ื™ื•ืชืจ ื“ื•ื•ืงื ื”ื™ื” ื‘ืคื™ื™ืชื•ืŸ, ืื‘ืœ ื’ื ืœืงืœื•ื–'ืจ ื”ื™ื” ืืช ื”ืงืกื ืฉืœื•. ## ืžื” ืื ื—ื ื• ื‘ื•ื ื™ื ื”ืชืจื’ื™ืœ ืฉืœ ื™ื•ื 2 ื”ื™ื” ืคืฉื•ื˜ ืคื™ืขื ื•ื— ื”ื•ืจืื•ืช: ืื ื—ื ื• ื‘ืฆื•ืœืœืช ื•ืžืงื‘ืœื™ื ื“ืฃ ืขื ื”ืžืกืœื•ืœ ื”ืžืชื•ื›ื ืŸ. ื”ืžืกืœื•ืœ ื‘ื ื•ื™ ื‘ืชื•ืจ ืจืฆืฃ ืฉืœ ืฉื•ืจื•ืช ื‘ื›ืœ ืฉื•ืจื” ื™ืฉ ืคืงื•ื“ื” ื›ืžื• forward, down ื• up, ื•ืžืกืคืจ ืฉืื•ืžืจ ื‘ื›ืžื” ื™ื—ื™ื“ื•ืช ืœื–ื•ื–. ื”ืฆื•ืœืœืช ื ื•ืกืขืช ื‘ื™ื ื“ื• ืžื™ืžื“ื™ ื•ื™ืฉ ืœื” ืžื™ืงื•ื ืื•ืคืงื™ ื•ืขื•ืžืง. ืงืœื˜ ืœื“ื•ื’ืžื” ื ืจืื” ื›ืš:
forward 5
down 5
forward 8
up 3
down 8
forward 2
ื‘ื—ืœืง ื”ืจืืฉื•ืŸ ื”ืคืงื•ื“ื” forward X ืื•ืžืจืช ืœื–ื•ื– X ืฆืขื“ื™ื ืงื“ื™ืžื”, ื”ืคืงื•ื“ื” down ืœืžื˜ื” ื•ื”ืคืงื•ื“ื” up ืœืžืขืœื”. ื”ืžืฉื™ืžื” ื”ื™ื ืœื’ืœื•ืช ืื™ืคื” ืชื”ื™ื” ื”ืฆื•ืœืœืช ื‘ืกื•ืฃ ื”ืžืกืœื•ืœ ื‘ืขื–ืจืช ืฉื ื™ ืขืจื›ื™ื - ืขื•ืžืง ื•ืžื™ืงื•ื ืื•ืคืงื™, ื•ืœื”ื“ืคื™ืก ืืช ืžื›ืคืœืชื. ื‘ื—ืœืง ื”ืฉื ื™ ืฉืœ ื”ืชืจื’ื™ืœ ื”ืขื ื™ื™ื ื™ื ืžืกืชื‘ื›ื™ื ื•ืžืฉืžืขื•ืช ื”ืคืงื•ื“ื•ืช ืžืฉืชื ื”. ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื˜ืคืœ ื‘ืขืจืš ื ื•ืกืฃ ืฉื ืงืจื aim. ื”ืคืงื•ื“ื•ืช ืื•ืชืŸ ืคืงื•ื“ื•ืช ืื‘ืœ ื”ืžืฉืžืขื•ืช ื”ืคืขื ื”ื™ื: 1. ืคืงื•ื“ืช down ืžืขืœื” ืืช ื” aim 2. ืคืงื•ื“ืช up ืžื•ืจื™ื“ื” ืืช ื” aim 3. ืคืงื•ื“ืช forward ื–ื–ื” ืงื“ื™ืžื” ื•ื’ื ืžื•ืกื™ืคื” ืืช aim ื›ืคื•ืœ ื”ืคืจืžื˜ืจ ืฉืงื™ื‘ืœื” ืœืขื•ืžืง. ## ืคื™ืชืจื•ืŸ ื‘ืงืœื•ื–'ืจ ืงืœื•ื–'ืจ ื”ื™ื ืฉืคื” ืคื•ื ืงืฆื™ื•ื ืืœื™ืช ื•ื‘ืชื•ืจ ืฉื›ื–ื• ื”ืœื•ืœืื” ืฉืื ื—ื ื• ืžืจื™ืฆื™ื ื›ื“ื™ ืœื”ืคื•ืš ืจืฉื™ืžื” ืฉืœ ื”ื•ืจืื•ืช ืœืขืจืš ื™ื—ื™ื“ ื”ื™ื ืœื•ืœืืช reduce. ื›ืœ ืฉืœื‘ ื‘ reduce ื”ื•ื ื”ืคืขืœื” ืฉืœ ืคื•ื ืงืฆื™ื” ืฉืžืงื‘ืœืช ืืช ื”ืขืจืš "ืฉืืกืคื ื•" ืขื“ ืขื›ืฉื™ื• ื•ืืช ื”ืขืจืš ื”ื—ื“ืฉ, ื•ืžื—ื–ื™ืจื” ืขืจืš ืฆื•ื‘ืจ ื—ื“ืฉ ืฉื™ืฉืžืฉ ื›ืงืœื˜ ืœืื™ื˜ืจืฆื™ื” ื”ื‘ืื”. ื‘ื’ืœืœ ืฉื”ืชืจื’ื™ืœ ืžื—ื•ืœืง ืœืฉื ื™ ื—ืœืงื™ื ื•ื‘ื›ืœ ืื—ื“ ืžืฉืžืขื•ืช ื”ืคืงื•ื“ื•ืช ืฉื•ื ื”, ืืคืฉืจ ืœื›ืชื•ื‘ ืคื•ื ืงืฆื™ื” ืœื˜ื™ืคื•ืœ ื‘ืื™ื˜ืจืฆื™ื” ืฉืœ ื” reduce ืœื›ืœ ืื—ื“ ืžืฉื ื™ ื”ื—ืœืงื™ื. ื‘ื—ืœืง ื”ืจืืฉื•ืŸ ื”ื™ื ืชื”ื™ื”:
(defn part1 [position line]
  (let [[command value-str] (str/split line #"\W")
        value (Integer/parseInt value-str)]
    (case command
      "forward" (update position :horizontal + value)
      "up"      (update position :depth + (* -1 value))
      "down"    (update position :depth + value))))
ื•ื‘ื—ืœืง ื”ืฉื ื™ ื”ื™ื ืชื”ื™ื”:
(defn part2 [position line]
  (let [[command value-str] (str/split line #"\W")
        value (Integer/parseInt value-str)]
    (case command
      "forward" (-> position
                    (update :horizontal + value)
                    (update :depth + (* (:aim position) value)))
      "up"      (update position :aim + (* -1 value))
      "down"    (update position :aim + value))))
ื”ืœื•ืœืื” ื”ืจืืฉื™ืช ืฉืงื•ืจืืช ืืช ื”ืงืœื˜ ื•ืžืจื™ืฆื” ืืช ื” reduce ื”ื™ื:
(let [input (->> "input.txt"
                 (slurp)
                 (str/split-lines))
      pos1 (reduce part1 {:horizontal 0 :depth 0} input)
      pos2 (reduce part2 {:horizontal 0 :depth 0 :aim 0} input)]
  (println (apply * ((juxt :horizontal :depth) pos1)))
  (println (apply * ((juxt :horizontal :depth) pos2))))
ื”ืคืงื•ื“ื” ืฉื—ื•ื–ืจืช ืขืœ ืขืฆืžื” ื”ื›ื™ ื”ืจื‘ื” ื›ืืŸ ื”ื™ื update, ืœื“ื•ื’ืžื”:
"forward" (update position :horizontal + value)
ืคืงื•ื“ืช update ืžืงื‘ืœืช ืžื™ืœื•ืŸ, ืžืคืชื—, ืคื•ื ืงืฆื™ื™ืช ืขื“ื›ื•ืŸ ื•ืคืจืžื˜ืจื™ื ืจืืฉื•ื ื™ื™ื ืœืคื•ื ืงืฆื™ื™ืช ื”ืขื“ื›ื•ืŸ, ื•ืžื—ื–ื™ืจื” ืžื™ืœื•ืŸ ื—ื“ืฉ ืื—ืจื™ ื”ืคืขืœืช ืคื•ื ืงืฆื™ื™ืช ื”ืขื“ื›ื•ืŸ ืขืœ ื”ืขืจืš ื”ื™ืฉืŸ ื•ื›ืชื™ื‘ืช ื”ืขืจืš ืฉื”ื—ื–ื™ืจื” ืœืžืคืชื—. ื‘ื“ื•ื’ืžื” ืฉื”ื“ื‘ืงืชื™ ืคื•ื ืงืฆื™ื™ืช ื”ืขื“ื›ื•ืŸ ื”ื™ื ืคืœื•ืก, ื”ืžืคืชื— ื”ื•ื :horizontal ื•ื”ืคืจืžื˜ืจ ื”ืงื‘ื•ืข ืœืคืœื•ืก ื”ื•ื ื”ืขืจืš ืฉื”ื•ืคื™ืข ื‘ืฉื•ืจื”. ืคืงื•ื“ืช update ืชื•ืกื™ืฃ ืœืคืœื•ืก ืืช ื”ืคืจืžื˜ืจ ื”ืฉื ื™ (ืœืžืขืฉื” ื–ื” ื™ื”ื™ื” ื”ืคืจืžื˜ืจ ื”ืจืืฉื•ืŸ) ืฉื”ื•ื ื”ืขืจืš ืฉื›ืจื’ืข ื ืžืฆื ื‘ืžื™ืœื•ืŸ ื‘ืžืคืชื— :horizontal, ื•ืชื›ืชื•ื‘ ืืช ื”ืชื•ืฆืื” ืœืžื™ืœื•ืŸ ื—ื“ืฉ ืฉืื•ืชื• ื”ื™ื ื’ื ืชื—ื–ื™ืจ. ื”ืžื™ืœื•ืŸ ื”ื—ื“ืฉ ื”ื–ื” ื™ื”ื™ื” ื”ืงืœื˜ ืœืื™ื˜ืจืฆื™ื” ื”ื‘ืื” ืฉืœ ื” reduce ื•ื›ื›ื” ื‘ืกื•ืฃ ื ืงื‘ืœ ืžื™ืœื•ืŸ ืฉืžื™ื™ืฆื’ ืืช ื”ืžื™ืงื•ื ื”ืื—ืจื•ืŸ ืฉืœ ื”ืฆื•ืœืœืช. ืคืงื•ื“ื” ืžืขื ื™ื™ื ืช ื ื•ืกืคืช ื›ืืŸ ื”ื™ื ืคืงื•ื“ืช ื”ื”ื“ืคืกื” ื‘ืกื•ืฃ:
(println (apply * ((juxt :horizontal :depth) pos1)))
ื‘ื’ืœืœ ืฉ pos1 ื”ื•ื ืžื™ืœื•ืŸ, ื”ืคืงื•ื“ื” juxt ืœื•ืงื—ืช ืžืžื ื• ืืช ื”ืขืจื›ื™ื ืฉืœ :horizontal ื• depth ื•ืžื—ื–ื™ืจื” ืžืขืจืš ืขื ืฉื ื™ื”ื, ื•ืื– * ืฆืจื™ื›ื” ืœื›ืคื•ืœ ืืช ืฉื ื™ ื”ืื™ื‘ืจื™ื ื‘ืžืขืจืš. ืื‘ืœ ื‘ื’ืœืœ ืฉ * ืžืฆืคื” ืœืงื‘ืœ ืฉื ื™ ืคืจืžื˜ืจื™ื ื•ืคื” ื”ื™ื ืžืงื‘ืœืช ืžืขืจืš, ืื ื—ื ื• ืžืฉืชืžืฉื™ื ื‘ apply ืฉื”ื•ื ื›ืžื• ื›ื•ื›ื‘ื™ืช ืฉืœ ืคื™ื™ืชื•ืŸ - ื•ืชืคืงื™ื“ื• ืœื”ืคื•ืš ืžืขืจืš ืฉืœ ืฉื ื™ ืื™ื‘ืจื™ื ืœืฉื ื™ ืคืจืžื˜ืจื™ื ื ืคืจื“ื™ื ืœืคื•ื ืงืฆื™ื”. ## ืคื™ืชืจื•ืŸ ื™ืฉืŸ ื‘ืคื™ื™ืชื•ืŸ

ToCode
1 419
ื”ื“ื‘ืจ ื”ืจืืฉื•ืŸ ืฉืงื•ืคืฅ ืœืจืืฉ ื‘ืงืจื™ืืช ื”ืคื™ื™ืชื•ืŸ ื”ื•ื ื”ื ื™ืกื™ื•ืŸ ืฉืœื™ ืœื”ื’ื™ืข ืœืคื™ืชืจื•ืŸ ื‘ืœื™ ืœื—ืฉื•ื‘ ื™ื•ืชืจ ืžื“ื™. ืฆืจื™ืš ืœื–ื›ื•ืจ ืžื” ื”ืขืจืš ื”ืงื•ื“ื ืฉืงืจืืชื™? ื ื• ื‘ืกื“ืจ ื ื™ืฆื•ืจ ืžืฉืชื ื” ื‘ืฉื‘ื™ืœื•. ืฆืจื™ืš ืœืกืคื•ืจ ื“ื‘ืจื™ื? ื ื• ืื™ืŸ ื‘ืขื™ื” ื ื™ืฆื•ืจ ืขื•ื“ ืžืฉืชื ื”. ื–ื• ืœื ื’ื™ืฉื” ืจืขื” ืื‘ืœ ื”ื™ื ื›ืŸ ื’ืจืžื” ืœ Code Reuse ืœื”ื™ื•ืช ื™ื•ืชืจ ืงืฉื”, ื•ื‘ืืžืช ื‘ืคื™ื™ืชื•ืŸ ื”ื™ื” ื™ื•ืชืจ ืงืœ ืœื›ืชื•ื‘ ื›ืœ ืื—ื“ ืžื”ื—ืœืงื™ื ื‘ื ืคืจื“. ## ืžื—ืฉื‘ื•ืช ืœื”ืžืฉืš ื”ื”ืฉื•ื•ืื” ื‘ื™ืŸ ืคื™ื™ืชื•ืŸ ืœืงืœื•ื–'ืจ ืœื ื”ื•ื’ื ืช, ื›ื™ ืืคืฉืจ ื”ื™ื” ืœื›ืชื•ื‘ ืงื•ื“ ืคื™ื™ืชื•ืŸ ื”ืจื‘ื” ื™ื•ืชืจ ื˜ื•ื‘ ืžืžื” ืฉื›ืชื‘ืชื™. ื•ืขื“ื™ื™ืŸ ื›ืฉื—ื™ืคืฉืชื™ ื’ื ื‘ืจืฉืช ืคื™ืชืจื•ื ื•ืช ืคื™ื™ืชื•ืŸ ืจืื™ืชื™ ืฉืื ื™ ืœื ื”ื™ื—ื™ื“ ืฉืœืงื—ืชื™ ืืช ื”ื’ื™ืฉื” ืฉืœ ื”ืœื•ืœืื”. ื”ื ื” ืคื™ืชืจื•ืŸ ื ื•ืกืฃ ืžื”ืจืฉืช ื‘ืคื™ื™ืชื•ืŸ ืฉืœืงื— ืื•ืชื” ื’ื™ืฉื”:
import sys

prev_depth = int(input())
depth = int(input())
count = 0
while depth:
    if depth > prev_depth:
        count += 1
    prev_depth = depth
    v = sys.stdin.readline()
    if v == '':
        break
    depth = int(v)

print(count)
ื•ื”ื ื” ืขื•ื“ ืื—ื“:
nums = [199, 200, 208, 210, 200, 207, 240, 269, 260, 263]
cnt = 0
for i in range(len(nums) - 1):
    if nums[i] < nums[i+1]:
        cnt += 1
print(f'Ans: {cnt}') # 7
ืžืฆื“ ืฉื ื™ ื”ืคื™ืชืจื•ืŸ ื”ื–ื” ื‘ืคื™ื™ืชื•ืŸ ืœื•ืงื— ื’ื™ืฉื” ื“ื•ืžื” ื”ืจื‘ื” ื™ื•ืชืจ ืœืžื” ืฉื›ืชื‘ืชื™ ื‘ืงืœื•ื–'ืจ:
def task1():
    data = load_data()
    x, y = data[:-1], data[1:]
    result = sum(1 for xs, ys in zip(x, y) if ys > xs)
    print(result)
ื›ืš ืฉืื™ืŸ ืฉื•ื ื“ื‘ืจ ื‘ืฉืคื” ืขืฆืžื” ืฉืžื›ืจื™ื— ื’ื™ืฉื” ืžืกื•ื™ืžืช. ื‘ืฆื“ ืฉืœ ืงืœื•ื–'ืจ ื”ืงื•ื“ ืฉืœื™ ื”ื™ื” ื“ื™ ื˜ื™ืคื•ืกื™ ื•ืžื—ื™ืคื•ืฉ ื‘ืจืฉืช ื”ื™ื• ืœื ืžืขื˜ ืคื™ืชืจื•ื ื•ืช ืขื partition. ืคื™ืชืจื•ืŸ ืื—ื“ ื™ื•ืชืจ ืงืฆืจ ื•ื™ืชืจ ืขืœ ื›ืœ ื”ืขืกืง ืฉืœ ื—ืœื•ืงื” ืœื–ื•ื’ื•ืช ื•ื”ืฉืชืžืฉ ื‘ืขื•ื‘ื“ื” ืฉ map ื‘ืงืœื•ื–'ืจ ื™ื›ื•ืœ ืœืงื‘ืœ ื›ืžื” ืจืฉื™ืžื•ืช:
(defn answer-01 [input]
  (count (filter true? (map < input (rest input)))))
ื•ืื– ื”ืชื•ื›ื ื™ืช ื›ื•ืœื” ื”ื•ืคื›ืช ืœ:
(ns aoc21-01
  (:require [clojure.string :as str]))

(def input (map parse-long (str/split-lines (slurp "input.txt"))))

(defn answer-01 [input]
  (count (filter true? (map < input (rest input)))))

(def three-sliding-window
  (map + input (next input) (nnext input)))

(defn answer-02 []
  (answer-01 three-sliding-window))

(prn (answer-01 input))
(prn (answer-02))

ToCode
1 419
# ืžืฉื—ืงื™ื ืขื ืงืœื•ื–'ืจ: ืคื™ืชืจื•ืŸ AoC 2021 Day 1 ื‘ืขืงื‘ื•ืช ื”ืžืœืฆื” ืฉืœ ื—ื‘ืจ ื”ืชื—ืœืชื™ ืœืงืจื•ื ืขืœ ืงื•ื˜ืœื™ืŸ, ื•ืžืื•ื“ ืจืฆื™ืชื™ ืœื›ืชื•ื‘ ื›ืžื” ืคื•ืกื˜ื™ื ืขืœ ื”ืชื•ื›ื ื™ื•ืช ื”ืจืืฉื•ื ื•ืช ืฉืื ื™ ื›ื•ืชื‘ ื‘ืงื•ื˜ืœื™ืŸ ื•ื›ืžื” ื”ื™ื ืฉืคื” ื ื—ืžื“ื”. ื”ื‘ืขื™ื” ืฉืœื ื”ื™ื” ืงืœื™ืง ืื– ืขื–ื‘ืชื™ ืืช ืงื•ื˜ืœื™ืŸ ืœื‘ื™ื ืชื™ื™ื, ืื‘ืœ ื‘ื’ืœืœ ืฉื›ื‘ืจ ื”ื™ื™ืชื™ ื‘ืชื•ืš ื” JVM ื”ืžืฉื›ืชื™ ืœืขื‘ื•ื“ ืงืฆืช ืขืœ ืงืœื•ื–'ืจ. ื•ืžื›ื™ื•ื•ืŸ ืฉื”ื“ืจืš ื”ื›ื™ ื˜ื•ื‘ื” ืœืชืจื’ืœ ืฉืคื” ื”ื™ื ืœืคืชื•ืจ ื›ืžื” ืชืจื’ื™ืœื™ื ืž Advent Of Code ื”ืชื—ืœืชื™ ืขื ืคื™ืชืจื•ืŸ ื”ื™ื•ื ื”ืจืืฉื•ืŸ ืž 2021 ื‘ืงืœื•ื–'ืจ. ื”ืชื•ืฆืื” ื‘ืคื•ืกื˜ ืœืคื ื™ื›ื ื•ื’ื ืขื ื‘ื•ื ื•ืก ืฉืœ ื”ืฉื•ื•ืื” ืœืคื™ื™ืชื•ืŸ ื›ื“ื™ ืœื”ื‘ื™ืŸ ืืช ื”ื”ื‘ื“ืœื™ื ื‘ื’ื™ืฉื•ืช. ## ืžื” ืื ื—ื ื• ื‘ื•ื ื™ื ืืช ื”ืชืจื’ื™ืœ ื”ืžืœื ืืคืฉืจ ืœืžืฆื•ื ื‘ืงื™ืฉื•ืจ ื›ืืŸ: https://adventofcode.com/2021/day/1. ื”ื‘ืงื™ืฆื•ืจ ื•ื‘ืขื‘ืจื™ืช ื”ื•ื ืฉื™ืฉ ืœื ื• ืกื™ื“ืจื” ืฉืœ ืžืกืคืจื™ื, ืœืžืฉืœ:
199
200
208
210
200
207
240
269
260
263
ื•ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื”ื‘ื™ืŸ ื›ืžื” ืคืขืžื™ื ื”ืžืกืคืจื™ื ืขื•ืœื™ื, ื›ืœื•ืžืจ ื›ืžื” ืžืกืคืจื™ื ื™ืฉ ื‘ืกื™ื“ืจื” ืฉื”ื ื’ื“ื•ืœื™ื ื™ื•ืชืจ ืžื”ืžืกืคืจ ืฉื”ื™ื” ืœืคื ื™ื”ื. ื‘ืžืงืจื” ืฉืœื ื• ื”ืžืกืคืจ ื”ื•ื 7. ื‘ื—ืœืง ื”ืฉื ื™ ืฉืœ ื”ืชืจื’ื™ืœ ื•ื‘ืฉื‘ื™ืœ ืœืขืฉื•ืช ืืช ื”ืžืฉื—ืง ื™ื•ืชืจ ืžืขื ื™ื™ืŸ, ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื—ืœืง ืืช ื”ืกื™ื“ืจื” ืœืฉืœืฉื•ืช, ืœื—ืฉื‘ ืกื›ื•ื ืฉืœ ื›ืœ ืฉืœื•ืฉื” ืžืกืคืจื™ื ืฆืžื•ื“ื™ื ื•ืื– ืœืกืคื•ืจ ืืช ืžืกืคืจ ื”ืขืœื™ื•ืช ื‘ืกื™ื“ืจืช ื”ืกื›ื•ืžื™ื. ื‘ื“ื•ื’ืžื” ืฉืœื ื• ื–ื” ืื•ืžืจ ืฉื”ืžืกืคืจ ื”ืจืืฉื•ืŸ ื‘ืกื™ื“ืจืช ื”ืกื›ื•ืžื™ื ื”ื•ื 199+200+208 ืฉื–ื” 607, ื”ืžืกืคืจ ื”ืฉื ื™ ื‘ืกื™ื“ืจืช ื”ืกื›ื•ืžื™ื ื”ื•ื 200+208+210 ืฉื–ื” 618 ื•ื›ืš ื”ืœืื”. ื‘ืกื™ื“ืจื” ื”ื–ืืช ื™ืฉ 5 ืžืกืคืจื™ื ืฉื’ื“ื•ืœื™ื ื™ื•ืชืจ ืžื–ื” ืฉื”ื™ื” ืœืคื ื™ื”ื. ## ืคื™ืชืจื•ืŸ ืงืœื•ื–'ืจ ื”ืื‘ื—ื ื” ื”ืจืืฉื•ื ื” ืฉื”ื™ืชื” ืœื™ ืžื”ืชืจื’ื™ืœ ื”ื–ื” ื”ื™ื ืฉื™ื”ื™ื” ื ื•ื— ืœื—ืœืง ืืช ื”ืจืฉื™ืžื” ืœื–ื•ื’ื•ืช. ืื ืืฆืœื™ื— ืœื”ืคื•ืš ืืช ื”ืจืฉื™ืžื” ืœืจืฉื™ืžื” ื›ื–ืืช:
199, 200
200, 208
208, 210
210, 200
200, 207
207, 240
240, 269
269, 260
260, 263
ืื– ืืคืฉืจ ื™ื”ื™ื” ืœื”ืจื™ืฅ filter ืคืฉื•ื˜ ืขืœ ืจืฉื™ืžืช ื”ื–ื•ื’ื•ืช ื›ื“ื™ ืœืกื ืŸ ืจืง ืืช ืืœื” ืฉื‘ื”ื ื”ืฉื ื™ ื’ื“ื•ืœ ืžื”ืจืืฉื•ืŸ ื•ืœืกืคื•ืจ ื›ืžื” ื–ื•ื’ื•ืช ื ืฉืืจื•. ื•ื›ื›ื” ื”ื’ืขืชื™ ืœืคื•ื ืงืฆื™ื” partition ืฉืœ ืงืœื•ื–'ืจ ืฉื™ื•ื“ืขืช ืœืขืฉื•ืช ื‘ื“ื™ื•ืง ืืช ื–ื”:
user=> (partition 2 1 [199 200 208 210])
((199 200) (200 208) (208 210))
ืขื›ืฉื™ื• ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ื˜ืจื™ืง ื”ื–ื” ื›ื“ื™ ืœืกืคื•ืจ ื›ืžื” ืืœืžื ื˜ื™ื ื”ื ื’ื“ื•ืœื™ื ื™ื•ืชืจ ืžื–ื” ืฉื”ื™ื” ืœืคื ื™ื”ื, ื›ืœื•ืžืจ ื‘ื›ืžื” ืžื”ื–ื•ื’ื•ืช ื”ืื™ื‘ืจ ื”ืฉื ื™ ื’ื“ื•ืœ ื™ื•ืชืจ ืžื”ืจืืฉื•ืŸ.
(defn count-inc [input]
  (count (filter (partial apply <)
                 (partition 2 1 input))))
ื•ืœืกื™ื•ื ื›ืœ ืžื” ืฉื ืฉืืจ ื–ื” ืœืงืจื•ื ืืช ืงื•ื‘ืฅ ื”ืงืœื˜, ืœืฉื‘ื•ืจ ืื•ืชื• ืœืฉื•ืจื•ืช, ืœื”ืคื•ืš ื›ืœ ืฉื•ืจื” ืœืžืกืคืจ ื•ืœื”ืฉืชืžืฉ ื‘ืคื•ื ืงืฆื™ื•ืช ืฉื›ืชื‘ืชื™. ื‘ื—ืœืง ื”ืจืืฉื•ืŸ ื–ื” ื‘ืกืš ื”ื›ืœ ืœื”ืคืขื™ืœ ืืช count-inc ืขืœ ื”ืงืœื˜, ื•ื‘ื—ืœืง ื”ืฉื ื™ ืงื•ื“ื ืื ื™ ืžื—ืœืง ืืช ื”ืจืฉื™ืžื” ืœืฉืœืฉื•ืช, ืื—ืจื™ ื–ื” ืกื•ื›ื ื›ืœ ืฉืœืฉื”, ื•ืื– ืขืœ ืจืฉื™ืžืช ื”ืชื•ืฆืื•ืช ืžืคืขื™ืœ ืืช count-inc. ื–ื” ื”ืงื•ื“ ืฉื ืฉืืจ ื‘ืชื•ื›ื ื™ืช:
(require '[clojure.string :as str])

(let [input (->> "input.txt"
                 (slurp)
                 (str/split-lines)
                 (map read-string)
                 )]

  (println (count-inc input))

  (println (count-inc 
            (map 
              (partial apply +) 
              (partition 3 1 input)))))
ืกืš ื”ื›ืœ ื”ืงื•ื“ ืœืฉื ื™ ื”ื—ืœืงื™ื ืœืงื— 18 ืฉื•ืจื•ืช (ื›ื•ืœืœ ืฉื•ืจื•ืช ืจื•ื•ื—), ืฉื–ื” ืžืžืฉ ืื—ืœื”. ## ืคื™ืชืจื•ืŸ ื™ืฉืŸ ืฉื”ื™ื” ืœื™ ื‘ืคื™ื™ืชื•ืŸ ืื—ืจื™ ืฉื›ืชื‘ืชื™ ืืช ื”ืคื™ืชืจื•ืŸ ื‘ืงืœื•ื–'ืจ ื ื–ื›ืจืชื™ ืฉื›ืฉื”ืชืจื’ื™ืœ ืคื•ืจืกื ื‘ืžืงื•ืจ ืคืชืจืชื™ ืื•ืชื• ื‘ืคื™ื™ืชื•ืŸ. ืžื›ืœ ืžื™ื ื™ ืกื™ื‘ื•ืช ืœื ื”ืฉืงืขืชื™ ื™ื•ืชืจ ืžื“ื™ ื‘ืคื™ืชืจื•ืŸ ืžืชื•ื—ื›ื ื•ื‘ื™ื•ื ืจื’ื™ืœ ืœื ื”ื™ื™ืชื™ ืžืคืจืกื ืืช ื”ืงื•ื“ ื”ื–ื” ื‘ืฉื•ื ืžืงื•ื, ืื‘ืœ ืจืง ื‘ืฉื‘ื™ืœ ื”ืฉื•ื•ืื” ืื ื™ ื—ื•ืฉื‘ ืฉื–ื” ื›ืŸ ื™ื”ื™ื” ืจืขื™ื•ืŸ ื ื—ืžื“ ืœื”ื“ื‘ื™ืง ืื•ืชื• ื›ืืŸ:
def part1():
    count = 0
    last_value = 0

    with open('day1.txt') as f:
        for line in f:
            if last_value > 0 and int(line) > last_value:
                count += 1

            last_value = int(line)

    print(count)

def part2():
    count = 0
    last_value = []

    with open('day1.txt') as f:
        for line in f:
            if len(last_value) < 3:
                last_value.append(int(line))
                continue

            next_window = last_value[1:] + [int(line)]
            if sum(next_window) > sum(last_value):
                count += 1

            print(f"prev={last_value}; next={next_window}")

            last_value = next_window

    print(count)

ToCode
1 419
# ืžื“ืจื™ืš: ื‘ื•ืื• ื ื›ืชื•ื‘ ืฆ'ื˜ ื‘ Python ืขื Web Sockets ืžื ื’ื ื•ืŸ Web Sockets ื”ื’ื™ืข ืžืขื•ืœื ื”ืื™ื ื˜ืจื ื˜ ื•ืžืืคืฉืจ ืœื“ืคื“ืคืŸ ื•ืœืฉืจืช ื•ื•ื‘ ืœืชืงืฉืจ ื‘ืฆื•ืจื” ื“ื•-ื›ื™ื•ื•ื ื™ืช. ื–ื” ืžื ื’ื ื•ืŸ ืžืจื’ืฉ ื›ื™ื•ื•ืŸ ืฉื”ื•ื ืžื”ื•ื•ื” ืืช ื”ื‘ืกื™ืก ืœื”ืจื‘ื” ืžืขืจื›ื•ืช ืื™ื ื˜ืจื ื˜ ืฉืื ื—ื ื• ืžื›ื™ืจื™ื ื”ื™ื•ื, ื‘ืžื™ื•ื—ื“ ื›ืœ ื”ืžืขืจื›ื•ืช ื‘ื”ืŸ ื“ื‘ืจื™ื ืžืชืขื“ื›ื ื™ื ืขืœ ื”ืžืกืš ื›ื™ ืžื™ืฉื”ื• ืขืฉื” ืžืฉื”ื• ื‘ืžืงื•ื ืื—ืจ (ืœื“ื•ื’ืžื” - ืžื™ืฉื”ื• ืขื•ืฉื” Like ื‘ืคื™ื™ืกื‘ื•ืง ื•ืคืชืื•ื ืื ื™ ืจื•ืื” ืืช ื–ื” ืขืœ ื”ืžืกืš ืฉืœื™, ื‘ืœื™ ืœื˜ืขื•ืŸ ืžื—ื“ืฉ ืืช ื”ืขืžื•ื“). ืฉื™ืžื•ืฉ ืคื•ืคื•ืœืจื™ ื‘ Web Sockets ื”ื•ื ืœื‘ื ื™ื™ืช ืฆ'ื˜ ื‘ื™ืŸ ืžืฉืชืžืฉื™ื, ื•ืืคื™ืœื• ื›ืชื‘ืชื™ ื‘ืขื‘ืจ ืžื“ืจื™ืš ืœืžื™ืžื•ืฉ ืชืงืฉื•ืจืช ื“ื• ื›ื™ื•ื•ื ื™ืช ื‘ื™ืŸ ืฉืจืช ืคื™ื™ืชื•ืŸ ืœืœืงื•ื— ืจื™ืืงื˜. ื”ื™ื•ื ืืจืฆื” ืœื”ืจืื•ืช ืื™ืš ืœื—ื‘ืจ ืืช ืื•ืชื• ืฉืจืช ืคื™ื™ืชื•ืŸ ืœืœืงื•ื— ืคื™ื™ืชื•ืŸ, ื›ื“ื™ ืœื‘ื ื•ืช ืฆ'ื˜ ืžืฉื•ืจืช ื”ืคืงื•ื“ื” ื‘ืคื™ื™ืชื•ืŸ ื‘ืœื‘ื“. ## ืคื™ืชื•ื— ืงื•ื“ ื”ืฉืจืช ื”ืกืคืจื™ื” python-socketio ืžืกืคืงืช ืžื™ืžื•ืฉ ืžืื•ื“ ื ื•ื— ืœืขื‘ื•ื“ื” ืขื Web Sockets ื‘ืคื™ื™ืชื•ืŸ. ื‘ Web Sockets ืœืงื•ื— ื™ื›ื•ืœ ืœืฉืœื•ื— ื”ื•ื“ืขื” ืœืฉืจืช ื•ืื– ืžื•ืคืขืœ ืงื•ื“ ื‘ืฆื“ ื”ืฉืจืช, ืื• ืฉืฉืจืช ืฉื•ืœื— ื”ื•ื“ืขื” ืœืœืงื•ื— ื•ืื– ืžื•ืคืขืœ ืงื•ื“ ื‘ืฆื“ ื”ืœืงื•ื—. ืœื›ืŸ ื‘ืฆื“ ื”ืฉืจืช ืื ื™ ื‘ืกืš ื”ื›ืœ ืฆืจื™ืš ืœื›ืชื•ื‘ ืคื•ื ืงืฆื™ื” ืฉืชืชืื™ื ืœื›ืœ ื”ื•ื“ืขื” ืฉื”ืฉืจืช ื™ื›ื•ืœ ืœืงื‘ืœ, ื•ืœืขื˜ื•ืฃ ืืช ื–ื” ื‘ืงืฆืช ืงื•ื“ ืžื ื”ืœื” ืฉื™ืคืขื™ืœ ืืช ื”ืฉืจืช. ื‘ืžืงืจื” ืฉืœ ืฆ'ืื˜ ืžืกืคื™ืงื” ืœื™ ืคื•ื ืงืฆื™ื” ืื—ืช - ืื ื™ ืืงืจื ืœื” message - ืฉืชื•ืคืขืœ ื›ืฉื ื›ื ืกืช ื”ื•ื“ืขื”, ืชื“ืคื™ืก ืื•ืชื” ืœืžืกืš ืœืฆืจื›ื™ debug ื•ืื– ืชืฉืœื— ืื•ืชื” ืœื›ืœ ื”ืœืงื•ื—ื•ืช ื”ืžื—ื•ื‘ืจื™ื. ื”ืงื•ื“ ื”ืžืœื ืฉืœ ื”ืฉืจืช ื™ื”ื™ื”:
from aiohttp import web
import socketio

sio = socketio.AsyncServer(cors_allowed_origins='*', aync_mode='aiohttp')
app = web.Application()

sio.attach(app)

@sio.on('message')
async def message(sid, message):
    print("Socket ID: " , sid)
    print(message)
    await sio.emit('message', message, broadcast=True);

if __name__ == '__main__':
    web.run_app(app, port=4000)
ื•ื‘ืฉื‘ื™ืœ ืœื”ืคืขื™ืœ ืื•ืชื• ื ืฆื˜ืจืš ืœื”ืชืงื™ืŸ ืืช ื”ืกืคืจื™ื•ืช socketio ื• aiohttp:
$ pip install python-socketio aiohttp
## ืคื™ืชื•ื— ืฆื“ ืœืงื•ื— ื”ืงื•ื“ ื‘ืฆื“ ื”ืœืงื•ื— ืจืฅ ื‘ืœื•ืœืื”, ืงื•ืจื ืฉื•ืจื” ืžื”ืžืฉืชืžืฉ ื•ืฉื•ืœื— ืื•ืชื” ืœืฉืจืช. ื‘ื“ืจืš ื”ื•ื ื™ื›ื•ืœ ืœืงื‘ืœ ื”ื•ื“ืขื•ืช ืžื”ืฉืจืช (ืฉืœืงื•ื—ื•ืช ืื—ืจื™ื ืฉืœื—ื•). ื‘ื’ืœืœ ื”ืขื‘ื•ื“ื” ืขื ืฉื•ืจืช ื”ืคืงื•ื“ื” ื™ื•ืชืจ ื ื•ื— ืœื™ ืœืขื‘ื•ื“ ื‘ืžืžืฉืง Threads ืžืืฉืจ ื‘ืžืžืฉืง asyncio, ื•ืœื›ืŸ ืื ื™ ืžืชืงื™ืŸ ืืช ื”ื—ื‘ื™ืœื” ืžื‘ื•ืกืกืช ื” Threads ืขื ื”ืคืงื•ื“ื”:
$ pip install "python-socketio[client]"
ื‘ื—ื‘ื™ืœื” ื–ื• ืคื•ื ืงืฆื™ื” ืฉืžื˜ืคืœืช ื‘ืื™ืจื•ืข ืœื ืฆืจื™ื›ื” ืœื”ื™ื•ืช async, ื•ื”ื™ื ืื•ื˜ื•ืžื˜ื™ืช "ืชืชืคืจืฅ" ืœืชื•ื›ื ื™ืช ื›ืฉืื™ืจื•ืข ื™ืงืจื”. ื”ืื™ืจื•ืข ื”ื™ื—ื™ื“ ืฉื™ื›ื•ืœ ืœืงืจื•ืช ื”ื•ื ืงื‘ืœืช ื”ื•ื“ืขื” ื•ืœื›ืŸ ื”ืงื•ื“ ื”ืžืœื ืœืœืงื•ื— ื ืจืื” ื›ืš:
import asyncio
import socketio

sio = socketio.Client()

@sio.event
def message(data):
    print('I received a message!')
    print(data)

sio.connect('http://localhost:4000')
print('my sid is', sio.sid)
while True:
    line = input(":> ")
    if len(line) > 0:
        sio.emit('message', {'text': line})
## ื”ืคืขืœื” ื•ืฉื™ื—ื” ืื ื™ ืฉืžืจืชื™ ืืช ื”ืฉืจืช ื‘ืงื•ื‘ืฅ ื‘ืฉื server.py ื•ืืช ื”ืœืงื•ื— ื‘ืงื•ื‘ืฅ ื‘ืฉื client.py, ื•ืœื›ืŸ ืžืคืขื™ืœ ื‘ื—ืœื•ืŸ ืื—ื“ ืฉืจืช ื•ื‘ืขื•ื“ ืฉื ื™ ื—ืœื•ื ื•ืช ืฉื ื™ ืœืงื•ื—ื•ืช ืฉื•ื ื™ื:
# first window
$ python server.py

# second window
$ python client.py

# third window
$ python client.py
ืขื›ืฉื™ื• ืืคืฉืจ ืœื›ืชื•ื‘ ืฉื•ืจืช ื˜ืงืกื˜ ื‘ืื—ื“ ื”ื—ืœื•ื ื•ืช ืฉืœ ื”ืœืงื•ื—ื•ืช ื•ืœืจืื•ืช ืืช ืื•ืชื” ืฉื•ืจื” ืžื•ืคื™ืขื” ื‘ื—ืœื•ืŸ ืฉืœ ื”ืœืงื•ื— ื”ืฉื ื™, ืื• ืื ืžื–ืžื™ื ื™ื ื—ื‘ืจ ืฉื™ืชื—ื‘ืจ ืœืื•ืชื” ืจืฉืช (ื•ืžืชืงื ื™ื ืืช ื”ื›ืชื•ื‘ื•ืช) ืืคืฉืจ ื’ื ืœื“ื‘ืจ ื‘ื™ืŸ ื›ืžื” ืžื—ืฉื‘ื™ื ืฉื•ื ื™ื.

ToCode
1 419
# ื˜ื™ืค ืคืœืงืกื‘ื•ืงืก: ื”ืžืืคื™ื™ืŸ width ืขืœ ื”ื™ืœื“ื™ื ื“ืžื™ื™ื ื• ืฉื ื™ื” ื“ืฃ HTML ืฉืžื—ื•ืœืง ืœืชื™ื‘ืช ืฆื“ ื•ืชื•ื›ืŸ ืžืจื›ื–ื™. ื ื•, ืืชื ืžื›ื™ืจื™ื ื›ืืœื”, ืžืฉื”ื• ื›ื–ื”:
<div class="main">
  <div class="sidebar" >
    <ul>
      <li>hello world</li>
      <li>hello world</li>
      <li>hello world</li>
    </ul>
    
  </div>
  <div class="content">
    <p>
      Flexbox is really cool if you know how to use it
    </p>
  </div>
</div>
ืขื ื”ื’ื“ืจื•ืช ื” CSS ื”ื‘ืื•ืช ืืคืฉืจ ืœืงื‘ื•ืข ืฉื”ืจืฉื™ืžื” ื‘ืชื™ื‘ืช ื”ืฆื“ ืชื™ืงื— 300 ืคื™ืงืกืœื™ื ื•ื”ืชื•ื›ืŸ ื”ืžืจื›ื–ื™ ื™ืงื‘ืœ ืืช ื›ืœ ื”ืฉืืจ:
.main {
  display: flex;
}

.sidebar {
  width: 300px;
}

.content {
  flex: 1;
}
ืื‘ืœ ืืœ ืชื ืกื• ืืช ื–ื” ื‘ื‘ื™ืช. ื”ืžืืคื™ื™ืŸ width ืฉืœ ืชื™ื‘ืช ื”ืฆื“ ื”ื•ื ืจืง ื—ืœืง ืžื”ืกื™ืคื•ืจ. ื ื›ื•ืŸ, ื‘ HTML ื”ื“ื•ื’ืžื” ื”ื•ื ื‘ืืžืช ื™ืงื‘ืข ืืช ื”ืจื•ื—ื‘, ืื‘ืœ ื–ื” ืจืง ื‘ื’ืœืœ ืฉื”ื“ืคื“ืคืŸ ืœื ืžืฆื ืกื™ื‘ื” ื˜ื•ื‘ื” ืœื›ื•ื•ืฅ ืื•ืชื• ืงืฆืช. ืื ื ืขื“ื›ืŸ ืืช ื” HTML ื•ื ื•ืกื™ืฃ ืชืžื•ื ื” ืจื—ื‘ื”:
<div class="main">
  <div class="sidebar" >
    <ul>
      <li>hello world</li>
      <li>hello world</li>
      <li>hello world</li>      
    </ul>
    
  </div>
  <div class="content">
    <p>
      Flexbox is really cool if you know how to use it
    </p>
    <div>
      <img src="https://placekitten.com/400/300" />
    </div>
  </div>
</div>
ื•ืขื›ืฉื™ื• ื ืฉื ื” ืืช ื’ื•ื“ืœ ื”ื—ืœื•ืŸ ื ื•ื›ืœ ืœืจืื•ืช ืฉื‘ืฉืœื‘ ืžืกื•ื™ื ื”ื“ืคื“ืคืŸ ืžืชื—ื™ืœ ืœื”ื™ืœื—ืฅ - ื”ื•ื ืœื ืจื•ืฆื” ืœืฆื™ื™ืจ ืคืก ื’ืœื™ืœื” ืื•ืคืงื™ ื‘ืฉื‘ื™ืœ ื”ื—ืชื•ืœ, ื•ืœื›ืŸ ื”ื•ื ืžื•ื•ืชืจ ืขืœ ื—ืœืง ืžื”ืจื•ื—ื‘ ืฉืœ ืชื™ื‘ืช ื”ืฆื“. ื”ื ื” ืงื•ื“ืคืŸ ืœืžืฉื—ืงื™ื: <iframe height="300" style="width: 100%;" scrolling="no" title="Untitled" src="https://codepen.io/ynonp/embed/ExQLEyK?default-tab=html%2Cresult" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true"> See the Pen <a href="https://codepen.io/ynonp/pen/ExQLEyK"> Untitled</a> by Ynon Perek (<a href="https://codepen.io/ynonp">@ynonp</a>) on <a href="https://codepen.io">CodePen</a>. </iframe> ื”ืกื™ื‘ื” ืฉื”ื•ื ืžืจืฉื” ืœืขืฆืžื• ื›ื›ื” ืœื”ืฉืชื•ืœืœ ื”ื™ื ืฉืœื ื”ื’ื“ืจื ื• ืขืจืš ืœืžืืคื™ื™ืŸ flex-shrink ืฉืœ ืชื™ื‘ืช ื”ืฆื“, ื•ืขืจืš ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœ ืžืืคื™ื™ืŸ ื–ื” ื”ื•ื 1 - ืฉืื•ืžืจ ืฉืžื•ืชืจ ืœื›ื•ื•ืฅ ืืช ื”ืืœืžื ื˜ ืื ื–ื” ื—ื•ืกืš ื‘ืขื™ื•ืช ื‘ืžืงื•ืžื•ืช ืื—ืจื™ื. ื“ืจืš ืงืฉื•ื—ื” ื™ื•ืชืจ ืœืงื‘ื•ืข ืจื•ื—ื‘ ืœื™ืœื“ ื‘ืชื•ืš ืžื™ื›ืœ ืคืœืงืก ื”ื™ื ืœืฆื™ื™ืŸ ืืช flex-shrink ืœื”ื™ื•ืช 0 (ื•ืขืœ ื”ื“ืจืš ื’ื ืืช flex-grow):
.sidebar {
  width: 300px;
  flex-shrink: 0;
  flex-grow: 0;
}
ื”ื’ื“ืจื” ื›ื–ืืช ืžื›ืจื™ื—ื” ืืช ื”ื“ืคื“ืคืŸ ืœื”ืฉืื™ืจ ืืช ื”ืืœืžื ื˜ ื‘ืจื•ื—ื‘ 300, ื’ื ืื ื”ื•ื ื”ื™ื” ืžืขื“ื™ืฃ ืื—ืจืช. ื•ืื ืื ื—ื ื• ื›ื‘ืจ ืคื” ืฉื•ื•ื” ืœื”ื–ื›ื™ืจ ืฉ width ื”ื•ื ืœื ื”ื“ืจืš ื”ื›ื™ ื˜ื•ื‘ื” ืœืงื‘ื•ืข ื’ื•ื“ืœ ืฉืœ ื™ืœื“ ื‘ืชื•ืš ืžื™ื›ืœ ืคืœืงืก, ื‘ื’ืœืœ ืฉืžื™ื›ืœ ืคืœืงืก ื™ื›ื•ืœ ื’ื ืœื”ื™ื•ืช ืื ื›ื™. ื”ืžืืคื™ื™ืŸ flex-basis ื™ืงื‘ืข ืืช ื”ืจื•ื—ื‘ ืื• ื”ื’ื•ื‘ื” ืฉืœ ื”ืืœืžื ื˜ ืœืคื™ ื›ื™ื•ื•ืŸ ื”ืžื™ื›ืœ ื•ืœื›ืŸ ื”ืงื•ื“ ื”ื–ื” ืขื“ื™ืฃ:
.sidebar {
  flex-basis: 300px;
  flex-shrink: 0;
  flex-grow: 0;
}
ื•ืœื–ื” ื™ืฉ ื›ื‘ืจ ืงื™ืฆื•ืจ ื“ืจืš ืคืœืงืกื™ ืฉื‘ื˜ื— ืคื’ืฉืชื ื‘ื›ืœ ืžื™ื ื™ ื“ื•ื’ืžืื•ืช:
.sidebar {
  flex: 0 0 300px;
}

ToCode
1 419
ื”ื™ ื›ื•ืœื ื‘ื•ืงืจ ื˜ื•ื‘ ืื ื™ ืžื–ื›ื™ืจ ืื ืคืกืคืกืชื ื‘ืขื•ื“ ืขืฉืจ ื“ืงื•ืช ื ืชื—ื™ืœ ื•ื•ื‘ื™ื ืจ ืขืœ OAuth. ืžื•ื–ืžื ื™ื ืœื”ื™ื›ื ืก ื‘ืงื™ืฉื•ืจ: https://us06web.zoom.us/j/87293615835?pwd=SkNjaXNRYmVibXcwSjBEdmorRFZIdz09 ื‘ืชื•ื›ื ื™ืช - ื”ืกื‘ืจ ืžื” ื–ื” OAuth ื•ืื™ื–ื” ื‘ืขื™ื•ืช ื–ื” ื‘ื ืœืคืชื•ืจ ืคื™ืชื•ื— ืฉืจืช API ืฉืžื•ื’ืŸ ืขืœ ื™ื“ื™ OAuth ืคื™ืชื•ื— ืงืœืื™ื™ื ื˜ ืจื™ืืงื˜ ืฉืžืืคืฉืจ ืœืœืงื•ื—ื•ืช ืœื”ืชื—ื‘ืจ ื•ืœื‘ืฆืข ืคืขื•ืœื•ืช ื‘ API

ToCode
1 419
# ืคื™ืฆ'ืจ ืงืจื™ืค ื‘ื”ื‘ื ื” ืคื™ืฆ'ืจ ืงืจื™ืค ื–ื• ื”ืชื•ืคืขื” ืฉืงื•ืจื™ืช ื›ืฉืื ื™ ื›ื•ืชื‘ ืžืขืจื›ืช ื•ืื•ืžืจ "ืื ื›ื‘ืจ ื™ืฉ ืœื™ X ืฉื•ื•ื” ืœื›ืชื•ื‘ ื’ื Y". ื”ืคื™ืฆ'ืจ ืงืจื™ืค ืžืกื™ื— ืืช ื”ื“ืขืช ืžื”ืžื˜ืจื” ื”ืขืกืงื™ืช ื”ืืžื™ืชื™ืช ืฉืœ ื”ืžืขืจื›ืช, ื•ืฉื•ืœื— ืื•ืชื ื• ืœื‘ื ื•ืช ื“ื‘ืจื™ื ืฉื”ืœืงื•ื—ื•ืช ืœื ืจืฆื• ืจืง ื›ื™ ื”ื ื ืจืื™ื ื‘ื”ื™ืฉื’ ื™ื“. ืื ื—ื ื• ื™ื•ื“ืขื™ื ืœื–ื”ื•ืช ืคื™ืฆ'ืจื™ื ืฉื ื›ื ืกื• ื‘ื“ืจืš ื”ื–ืืช ื‘ืืžืฆืขื•ืช ืื ืืœื™ื˜ื™ืงื•ืช - ืื ื™ืฉ ืคื™ืฆ'ืจ ืฉืืฃ ืื—ื“ ืœื ืžืฉืชืžืฉ ื‘ื•, ื›ื ืจืื” ืฉื”ื•ื ื–ื—ืœ ืคื ื™ืžื” ื‘ืœื™ ื”ื–ืžื ื”. ื’ื ื‘ืœื™ืžื•ื“ ื ื•ืฉื ื—ื“ืฉ ื™ื›ื•ืœ ืœื”ื™ื•ืช ืคื™ืฆ'ืจ ืงืจื™ืค, ืื‘ืœ ื”ืคืขื ื”ืจื‘ื” ื™ื•ืชืจ ืงืฉื” ืœื–ื”ื•ืช ืื•ืชื•. ืื ื”ื—ืœื˜ืชื™ ืœืœืžื•ื“ ืจื™ืืงื˜ ื™ื›ื•ืœ ืœื”ื™ื•ืช ืฉื”ืžื“ืจื™ืš ื”ืจืืฉื•ืŸ ืฉืื›ื ืก ืืœื™ื• ื™ืกื‘ื™ืจ ืื™ืš ืœื”ืฉืชืžืฉ ื‘ webpack ื›ื“ื™ ืœื‘ื ื•ืช ืคืจื•ื™ืงื˜ ืจื™ืืงื˜ - ื•ืขื›ืฉื™ื• ืื ื™ ืžื•ืฆื ืืช ืขืฆืžื™ ืœื•ืžื“ webpack ืจืง ื‘ืฉื‘ื™ืœ ืœืœื›ืช ืœืœืžื•ื“ ืจื™ืืงื˜. ื–ื” ืคื™ืฆ'ืจ ืงืจื™ืค, ื›ื™ ืืช ืจื•ื‘ ื”ืขื‘ื•ื“ื” ืฉืœื™ ื›ืžืชื›ื ืช ืจื™ืืงื˜ ืื ื™ ืืขื‘ื™ืจ ื‘ืœื™ ืœื’ืขืช ื‘ื•ื•ื‘ืคืืง (ื•ืื•ืœื™ ืืคื™ืœื• ืืขื‘ื•ื“ ืขืœ ืคืจื•ื™ืงื˜ ืฉื‘ื ื•ื™ ื‘ืœืขื“ื™ื•). ื‘ืžืฆื‘ ื›ื–ื” ื”ื“ื‘ืจ ื”ืžืฉืชืœื ืœืขืฉื•ืช ื”ื•ื ืœืžืฆื•ื ืžื“ืจื™ืš ืื—ืจ ืฉื™ื“ืœื’ ืขืœ ื”ื•ื•ื‘ืคืืง, ืื• ืœืœืžื•ื“ ืจืง ืืช ื”ืžื™ื ื™ืžื•ื ื•ื•ื‘ืคืืง ืฉืื ื™ ืฆืจื™ืš ื›ื“ื™ ืœื”ืงื™ื ืคืจื•ื™ืงื˜ ื›ื“ื™ ืฉืื•ื›ืœ ืœื”ืชืžืงื“ ื‘ืžื™ื•ืžื ื•ืช ื”ืœื™ื‘ื” ืขืœื™ื” ืื ื™ ืขื•ื‘ื“. ืื‘ืœ ื”ื‘ืขื™ื” ื”ืืžื™ืชื™ืช ืขื ื”ื‘ื ื” ื”ื™ื ื‘ื“ื™ื•ืง ื”ื”ื™ืคืš ืžืคื™ืฆ'ืจ ืงืจื™ืค. ืจื•ื‘ ื”ืคืขืžื™ื ื‘ืœื™ืžื•ื“ ื ื•ืฉื ื—ื“ืฉ ืื ื™ ื›ืœ ื›ืš ืžืชืืžืฅ ืœื”ื’ื™ืข ืœ"ืžืฉื”ื• ืฉืขื•ื‘ื“" ืฉืื ื™ ืžื•ื›ืŸ ืœื“ืœื’ ื’ื ืขืœ ื™ื“ืข ื—ื™ื•ื ื™, ื•ืคื•ืกืœ ืื•ืชื• ื‘ืชื•ืจ ืคื™ืฆ'ืจ ืงืจื™ืค. ื•ื›ื›ื” ืื ื—ื ื• ื ืคื’ื•ืฉ ืžืชื›ื ืชื™ ืฆื“ ืฉืจืช ืฉืœื ื™ื•ื“ืขื™ื SQL, ื›ื™ ื™ืฉ ORM ืฉื›ื•ืชื‘ ื‘ืฉื‘ื™ืœื ืืช ื”ืฉืื™ืœืชื•ืช. ื”ื™ื›ืจื•ืช ื˜ื•ื‘ื” ืขื SQL, ืื• ื ื•ืฉืื™ ืœื™ื‘ื” ืื—ืจื™ื ืฉื—ืฉื•ื‘ื™ื ืœื”ืฆืœื—ื” ืฉืœื ื• ื›ืžืชื›ื ืชื™ื ืื™ื ื” ืคื™ืฆ'ืจ ืงืจื™ืค. ื”ื™ื ื‘ื“ื™ื•ืง ื”ื“ื‘ืจ ืฉื”ื•ืคืš ืื•ืชื ื• ืœืžืชื›ื ืชื™ื ื˜ื•ื‘ื™ื ื™ื•ืชืจ, ื•ื”ื™ื ื‘ื“ื™ื•ืง ื”ื“ื‘ืจ ืฉืžืืคืฉืจ ืœื ื• ืœืœืžื•ื“ ื ื•ืฉืื™ื ื—ื“ืฉื™ื ืžื”ืจ ื™ื•ืชืจ. ื›ืžืขื˜ ืชืžื™ื“ ืฉื•ื•ื” ืœืœืžื•ื“ ืงืฆืช ื™ื•ืชืจ ืžื”ืžื™ื ื™ืžื•ื ื”ื ื“ืจืฉ ื•ืœื”ืกืชื›ืŸ ื‘ืคื™ืฆ'ืจ ืงืจื™ืค, ื‘ืžืงื•ื ืœื”ืคืกื™ื“ ืžื™ื•ืžื ื•ืช ืฉืื—ืจื™ ื–ื” ื™ื”ื™ื” ืžืื•ื“ ืงืฉื” ืœื”ืฉืœื™ื ืื•ืชื”.