uz
Feedback
ToCode

ToCode

Kanalga Telegramโ€™da oโ€˜tish

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

Ko'proq ko'rsatish
1 420
Obunachilar
+124 soatlar
+17 kunlar
-430 kunlar
Postlar arxiv
ToCode
1 420
ืคื™ืชืจื•ืŸ Advent Of Code 2023 ื™ื•ื 9 ื‘ืกืงืืœื” ื›ืฉืœื•ืžื“ื™ื ืจืงื•ืจืกื™ื” ืœื ืชืžื™ื“ ื‘ืจื•ืจ ืœืžื” ืฆืจื™ืš ืืช ื”ืžื‘ื ื” ื”ื–ื”, ื”ืจื‘ื” ืคืขืžื™ื ื‘ื’ืœืœ ืฉืื ื—ื ื• ืžื ืกื™ื ืœืคืชื•ืจ ื‘ืฆื•ืจื” ืจืงื•ืจืกื™ื‘ื™ืช ืฉืืœื•ืช ืฉืœื ื”ื›ื™ ืžืชืื™ืžื•ืช ืœื—ืฉื™ื‘ื” ื”ืจืงื•ืจืกื™ื‘ื™ืช. ื”ืžืงืจื” ืฉืœ ื™ื•ื 9 ื‘ Advent Of Code ื”ืฉื ื” ื”ืžื—ื™ืฉ ืื™ืš ืฉืืœื•ืช ืžืกื•ื™ืžื•ืช ืžื–ืžื™ื ื•ืช ืืช ื”ืคื™ืชืจื•ืŸ ื”ืจืงื•ืจืกื™ื‘ื™, ื•ื ืคืชืจื•ืช ื‘ืงืœื•ืช ื‘ื–ื›ื•ืชื•. ื”ืชืจื’ื™ืœ ื”ืžืฉื™ืžื” ืฉืœื ื• ื”ื™ื ืœื—ืฉื‘ ืืช ื”ืื™ื‘ืจ ื”ื‘ื ื‘ืกื™ื“ืจื” ื“ืจืš ื—ื™ืฉื•ื‘ ืกื“ืจืช ื”ื”ืคืจืฉื™ื ืฉืœื”. ื ื™ืงื— ืœื“ื•ื’ืžื” ืืช ืกื™ื“ืจืช ื”ืžืกืคืจื™ื:
1   3   6  10  15  21
ืื– ืืคืฉืจ ืœืจืฉื•ื ืืช ื”ื”ืคืจืฉ ื‘ื™ืŸ ื›ืœ ืฉื ื™ ืžืกืคืจื™ื ื•ืœืงื‘ืœ ืืช ื”ืกื™ื“ืจื”:
2   3   4   5   6
ื•ืืคืฉืจ ืœื”ืžืฉื™ืš ื•ืœืจืฉื•ื ืืช ื”ื”ืคืจืฉ ื‘ื™ืŸ ื›ืœ ืžืกืคืจ ื‘ืกื™ื“ืจืช ื”ื”ืคืจืฉื™ื ื›ื“ื™ ืœืงื‘ืœ ืืช ื”ืกื™ื“ืจื”:
1   1   1   1
ื•ืื– ืœื”ืžืฉื™ืš ืขื•ื“ ืฉืœื‘ ื›ื“ื™ ืœืงื‘ืœ:
0   0   0
ื›ืฉืžื’ื™ืขื™ื ืœืกื™ื“ืจืช ื”ืืคืกื™ื ื ื•ืกื™ืฃ ืืคืก ืื—ื“, ื•ืื– ื ืฉืชืžืฉ ื‘ื• ื›ื“ื™ ืœื—ืฉื‘ ืืช ื”ืื™ื‘ืจ ื”ื‘ื ื‘ืกื™ื“ืจืช ื”-1-ื™ื (ื”ื•ื ื™ื”ื™ื” 1), ื•ืื– ื ืฉืชืžืฉ ื‘ื• ื›ื“ื™ ืœื’ืœื•ืช ืืช ื”ืื™ื‘ืจ ื”ื‘ื ื‘ืกื™ื“ืจื” ื”ืฉื ื™ื™ื” (ื”ื•ื ื™ื”ื™ื” 7) ื•ื‘ืขื–ืจืชื• ืžื•ืฆืื™ื ืืช ื”ืžืกืคืจ ื”ืื—ืจื•ืŸ ื‘ืกื™ื“ืจื” ืฉืžืžื ื” ื”ืชื—ืœื ื• - ื”ื•ื ื™ื”ื™ื” 28. ืคื™ืชืจื•ืŸ ื‘ืกืงืืœื” ื ื›ืชื•ื‘ ืคื•ื ืงืฆื™ื” ื‘ืกืงืืœื” ืฉืชื—ืฉื‘ ืืช ื”ืžืกืคืจ ื”ื‘ื ื‘ืกื™ื“ืจื”. ืœืคื•ื ืงืฆื™ื” ื™ืฉ ื‘ืกืš ื”ื›ืœ ืฉืชื™ ืืคืฉืจื•ื™ื•ืช: 1. ืื• ืฉื”ื™ื ืžืงื‘ืœืช ืกื™ื“ืจื” ืฉื›ื•ืœื” ืืคืกื™ื, ื•ืื– ื”ื™ื ืžื•ืกื™ืคื” ืœื” ืขื•ื“ 0. 2. ืื• ืฉื”ื™ื ืžืงื‘ืœืช ืกื™ื“ืจื” ืื—ืจืช, ื•ืื– ื”ื™ื ืชื—ื‘ืจ ืืช ื”ืื™ื‘ืจ ื”ืื—ืจื•ืŸ ื‘ืกื™ื“ืจื” ืขื ื”ืื™ื‘ืจ ื”ืื—ืจื•ืŸ ื‘ืกื™ื“ืจื” ืฉืชืชืงื‘ืœ ืžื”ืคืขืœืช ืื•ืชื” ืคื•ื ืงืฆื™ื” ืขืœ ืกื™ื“ืจืช ื”ื”ืคืจืฉื™ื. ืืช ืกื™ื“ืจืช ื”ื”ืคืจืฉื™ื ืžื—ืฉื‘ื™ื ื‘ืกืงืืœื” ืขื ื”ืฉื•ืจื” ื”ื‘ืื”:
val diffSeries = known.zip(known.tail).map {(i, j) => j - i }
ื•ืœื›ืŸ ื”ืคื•ื ืงืฆื™ื” ื›ื•ืœื” ืชื”ื™ื”:
  def addNextValue(known: List[Long]): List[Long] =
    known match
      case _ if known.forall(l => l == 0) => known :+ 0
      case _ =>
        val diffSeries = known.zip(known.tail).map {(i, j) => j - i }
        known :+ known.last + addNextValue(diffSeries).last

ToCode
1 420
ื”ืื™ืฉ ืฉื—ื™ืœืง ื”ื•ืจืื•ืช ื”ื•ื ื”ืœืš ืžื•ืœื™ ื‘ืจื—ื•ื‘ ืฆืจ. ืื ื™ ืขืœ ืื•ืคื ื™ื™ื ื•ื”ื•ื ืžืกืชื›ืœ ืงื“ื™ืžื”, ื•ื‘ื“ื™ื•ืง ื›ืฉื”ืชืœื‘ื˜ืชื™ ืื ืœื”ื™ืฆืžื“ ืœื™ืžื™ืŸ ืื• ืœืฉืžืืœ ื›ื“ื™ ืฉื ื•ื›ืœ ืฉื ื™ื ื• ืœืขื‘ื•ืจ ื”ื•ื ื”ืฆื‘ื™ืข ืขื ื”ื™ื“ ืœืฆื“ ืื—ื“ ื•ื ืฆืžื“ ืœืฆื“ ื”ืฉื ื™. ื‘ืœื™ ืœื—ืฉื•ื‘ ื ืฆืžื“ืชื™ ืœืืŸ ืฉื”ื•ื ื”ืฆื‘ื™ืข ื•ืฉื ื™ื ื• ื”ืžืฉื›ื ื• ื‘ืœื™ ืœื—ืฉื•ื‘ ืคืขืžื™ื™ื. ื”ืื™ืฉ ืฉื—ื™ืœืง ื”ื•ืจืื•ืช ืœื ืขืฆืจ ืœืฉืื•ืœ ืื ืžื•ืชืจ ืœื• ืœื”ื’ื™ื“ ืœื™ ืžื” ืœืขืฉื•ืช. ื”ื•ื ืœื ื”ื—ื–ื™ืง ื‘ื˜ื™ื™ื˜ืœ ื ื—ืฉื‘, ืœื ืœื‘ืฉ ื—ืœื™ืคื” ื•ืืคื™ืœื• ืœื ื ืจืื” ื™ื•ืชืจ ืžื“ื™ ืกืžื›ื•ืชื™. ื”ื•ื ืคืฉื•ื˜ ื”ื‘ื™ืŸ ื‘ื“ื™ื•ืง ื‘ื–ืžืŸ ืืช ื”ืื™ื ื˜ืจืก ื”ืžืฉื•ืชืฃ ืฉืœ ืฉื ื™ื ื•, ื”ืกื‘ื™ืจ ื‘ืฆื•ืจื” ืžื“ื•ื™ืงืช ืžื” ืฆืจื™ืš ืœืขืฉื•ืช ื•ื ืชืŸ ื“ื•ื’ืžื” ืื™ืฉื™ืช. ื•ื—ื•ืฅ ืžืœื—ืกื•ืš ืœื™ ื›ืžื” ื“ืงื•ืช ื‘ื“ืจืš ื”ื•ื ื’ื ืœื™ืžื“ ืื•ืชื™ ืฉื™ืขื•ืจ ื—ืฉื•ื‘ ืขืœ ืžื ื”ื™ื’ื•ืช.

ToCode
1 420
ืื™ืš ืœืคืชื•ืจ ื‘ืขื™ื•ืช "ืงื˜ื ื•ืช" ื”ืžื•ื— ื”ืื ื•ืฉื™ ืžืžืฉ ื˜ื•ื‘ ื‘ืคื™ืชืจื•ืŸ ื‘ืขื™ื•ืช ืฉื‘ืขื™ื ื™ื• ื”ืŸ ื—ืฉื•ื‘ื•ืช. ื–ื” ืžื ื’ื ื•ืŸ ื‘ืจื™ื ืฉื ื•ืขื“ ืœืชืช ืœืš ืจืขื™ื•ื ื•ืช ืžื” ืœืขืฉื•ืช ื›ืฉื ืžืจ ืจื•ื“ืฃ ืื—ืจื™ืš ื•ื™ืฉ ืœืš ื‘ืขื™ื” ืžืžืฉ ื—ืฉื•ื‘ื” ื•ื“ื—ื•ืคื”. ืื‘ืœ ื”ืžื•ื— ืฉืœื ื• ืžืžืฉ ื’ืจื•ืข ื‘ืœื”ืชืžื•ื“ื“ ืขื ื‘ืขื™ื•ืช "ืงื˜ื ื•ืช", ื•ื‘ืงื˜ื ื•ืช ืื ื™ ืžืชื›ื•ื•ืŸ ืœื›ืœ ืžื” ืฉืื™ื ื• ืžื”ื•ื•ื” ืกื›ื ืช ื—ื™ื™ื ืžื™ื™ื“ื™ืช. ื‘ืžื™ืœื™ื ืื—ืจื•ืช ืื ืืคืฉืจ ืœื—ื™ื•ืช ืขื ื”ื‘ืขื™ื” ืขื•ื“ ื™ื•ื ืขื“ื™ืฃ ืœื—ื›ื•ืช ืขื ื”ืคื™ืชืจื•ืŸ ืœืžื—ืจ ื•ืœื”ืชืžืงื“ ื‘ื ืžืจ ืฉืจื•ื“ืฃ ืื—ืจื™ืš. (ื•ืื ืœื ืจื•ื“ืฃ ืื—ืจื™ืš ื ืžืจ? ื ื• ืชืกืžื›ื• ืขืœ ื”ืžื•ื— ืฉืœื›ื ืฉื™ืžืฆื™ื ืžืกืคื™ืง ื ืžืจื™ื ื“ืžื™ื•ื ื™ื™ื ืฉืจื•ื“ืคื™ื ืื—ืจื™ื›ื ื›ื“ื™ ืฉืืฃ ืคืขื ืœื ื™ื”ื™ื” ืžืฉืขืžื). ื•ื›ืŸ ื–ืืช ืื—ืช ื”ืกื™ื‘ื•ืช ืฉื’ื•ืจืžื•ืช ืœื ื• ืœืคื—ื“ ื™ื•ืชืจ ืžื“ื™ ืžื›ืจื™ืฉื™ื ื•ืคื—ื•ืช ืžื“ื™ ืžืฆื‘ืื™ื. ื”ื‘ืขื™ื” ืฉืœื ื• ื”ื™ื ืฉื‘ื—ื™ื™ื ื”ืžื•ื“ืจื ื™ื™ื ื•ื‘ืžื™ื•ื—ื“ ื‘ืชื›ื ื•ืช ื™ืฉ ื”ืจื‘ื” ื™ื•ืชืจ ื ื–ืง ื‘ื‘ืขื™ื•ืช ืงื˜ื ื•ืช ืฉืžืฆื˜ื‘ืจื•ืช. ืงื•ื“ ื™ืœืš ื•ื™ื”ื™ื” ื™ื•ืชืจ ื’ืจื•ืข ื›ื›ืœ ืฉืขื•ื‘ืจ ื”ื–ืžืŸ ื•ืื ื—ื ื• ืœื ืžืชื—ื–ืงื™ื ืื•ืชื•. ืฉื—ื™ืงื” ื‘ืขื‘ื•ื“ื” ืชืœืš ื•ืชื—ืจื™ืฃ ื›ื›ืœ ืฉืœื ื ื˜ืคืœ ื‘ื”. ื”ืจืžื” ื”ืžืงืฆื•ืขื™ืช ืฉืœื ื• ื”ื•ืœื›ืช ื•ืžืชื“ืจื“ืจืช ื›ื›ืœ ืฉืื ื—ื ื• ืžื–ื ื™ื—ื™ื ืœื™ืžื•ื“ ื—ื•ืžืจื™ื ื—ื“ืฉื™ื. ื‘ืฉื‘ื™ืœ ืœื”ืฆืœื™ื— ืœืื•ืจืš ื–ืžืŸ ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื”ื‘ื™ืŸ ืื™ืš ืœืคืชื•ืจ ื‘ืขื™ื•ืช ืงื˜ื ื•ืช ืœืคื ื™ ืฉื”ืŸ ื”ื•ืคื›ื•ืช ืœื’ื“ื•ืœื•ืช - ื›ืœื•ืžืจ ืื ื—ื ื• ืจื•ืฆื™ื ืœื”ืคืกื™ืง ืœืขืฉืŸ ืœืคื ื™ ืฉื ืงื‘ืœ ืกืจื˜ืŸ, ืื ื—ื ื• ืจื•ืฆื™ื ืœื”ืจื•ื•ื™ื— ื™ื•ืชืจ ื‘ืขื‘ื•ื“ื” ื•ืœื‘ื ื•ืช ืื™ื–ื•ืŸ ื‘ื™ืŸ ืขื‘ื•ื“ื” ืœื—ื™ื™ื ืœืคื ื™ ืฉื ื™ืฉื—ืง ืœื’ืžืจื™ ื•ืื ื—ื ื• ืจื•ืฆื™ื ืœื”ื™ืฉืืจ ื‘ื—ื–ื™ืช ื”ืžืงืฆื•ืขื™ืช ืœืคื ื™ ืฉื ืฆื‘ื•ืจ ืคืขืจ ืฉื™ื”ื™ื” ืงืฉื” ืžื“ื™ ืœืกื’ื•ืจ ืื•ืชื•. ืืœื” ื›ืžื” ืจืขื™ื•ื ื•ืช ืฉื™ื›ื•ืœื™ื ืœืขื–ื•ืจ ื‘ื”ืชืžื•ื“ื“ื•ืช ืขื ื‘ืขื™ื•ืช ืงื˜ื ื•ืช: 1. ืืคืฉืจ ืœื”ืคื•ืš ื‘ื›ื•ื•ื ื” ื‘ืขื™ื•ืช ืงื˜ื ื•ืช ืœื’ื“ื•ืœื•ืช - ืื ืงืฆืช ืžืคืจื™ืข ืœื›ื ืฉืืชื ืœื ืžืจื•ื•ื™ื—ื™ื ืžืกืคื™ืง, ืืคืฉืจ ืœืจื“ืช ืœื—ืฆื™ ืžืฉืจื” ื•ืื– ืžืžืฉ ืชืจื’ื™ืฉื• ืืช ื”ื—ื•ืจ ื‘ื›ื™ืก. ืžื’ื‘ืœืช ื”ืฉืขื•ืช ืชื›ืจื™ื— ืืชื›ื ืœืžืฆื•ื ื“ืจื›ื™ื ืœื”ืจื•ื•ื™ื— ื™ื•ืชืจ ืคืจ-ืฉืขื”, ื•ื”ืžื•ื— ืฉืœื›ื ื™ืฉืžื— ืœืฉืชืฃ ืคืขื•ืœื” ื›ื™ ื”ื‘ืขื™ื” ืžืื•ื“ ืžื•ืจื’ืฉืช. 2. ืืคืฉืจ ืœืฉื ื•ืช ืคืจืกืคืงื˜ื™ื‘ื” - ืื ืงืฆืช ืžืคืจื™ืข ืœื›ื ืœืงื‘ืœ ืกืจื˜ืŸ ื‘ืขืชื™ื“ ื”ืจื—ื•ืง, ืื•ืœื™ ืชื’ืœื• ืฉืžืื•ื“ ืžืคืจื™ืข ืœื›ื ื”ืจื™ื— ื”ืจืข ืžื”ืคื”, ืื• ื”ืžื—ื™ืจ ื”ื’ื‘ื•ื” ืฉืœ ื—ืคื™ืกืช ืกื™ื’ืจื™ื•ืช. ืฉื™ื ื•ื™ ื ืงื•ื“ืช ื”ืžื‘ื˜ ื™ื›ื•ืœ ืœืชืช ืœื ื• ืืช ื”ื“ื—ื™ืคื” ืœืฉื™ื ื•ื™. 3. ืืคืฉืจ ืœื”ืชื—ื™ืœ ื”ืจื’ืœื™ื ื—ื“ืฉื™ื - ื”ืจื‘ื” ืื ืฉื™ื ืžื“ื•ื•ื—ื™ื ืฉืื—ืจื™ ืฉื”ื ื”ืชื—ื™ืœื• ืœื›ืชื•ื‘ ื‘ื“ื™ืงื•ืช ืœืžืขืจื›ืช ื’ื ืื™ื›ื•ืช ื”ืงื•ื“ ื”ืฉืชืคืจื”. ื–ื” ืงื•ืจื” ื‘ื’ืœืœ ืฉืขื“ ืขื›ืฉื™ื• ืœื ืฉืžืชื™ ืœื‘ ืฉื”ืงื•ื“ ื‘ื›ื–ื” ื‘ืœืื’ืŸ ืื• ืฉื–ื” ืœื ืขื“ ื›ื“ื™ ื›ืš ื”ืคืจื™ืข ืœื™, ืื‘ืœ ื›ืฉืฆืจื™ืš ืœื›ืชื•ื‘ ื‘ื“ื™ืงื•ืช ื”ื‘ืœืื’ืŸ ื‘ืงื•ื“ ื”ื•ืคืš ืœื‘ืขื™ื” ื’ื“ื•ืœื”. 4. ืืคืฉืจ ืœื‘ืงืฉ ืขื–ืจื” - ืœืคืขืžื™ื ืžืฉื”ื• ืฉื ืจืื” ืœืš ืงื˜ืŸ ื•ืœื ื—ืฉื•ื‘ ื™ื›ื•ืœ ืžืื•ื“ ืœื”ืคืจื™ืข ืœืžื™ืฉื”ื• ืื—ืจ. ื ืกื• ืœื”ื›ื ื™ืก ืœืฆื•ื•ืช ืื ืฉื™ื ืฉืžืฉืœื™ืžื™ื ืืชื›ื ื•ืชืจืื• ืื™ืš ื”ื ืคื•ืชืจื™ื ืืช ื”ื‘ืขื™ื•ืช ื”ืงื˜ื ื•ืช ืฉืืชื ืฉืžืชื ื‘ืฆื“. ื™ืฉ ืœื›ื ื˜ืจื™ืงื™ื ื ื•ืกืคื™ื ืฉืขื•ื–ืจื™ื ืœื”ืชืžื•ื“ื“ ืขื ื‘ืขื™ื•ืช ืงื˜ื ื•ืช? ืฉืชืคื• ื‘ืชื’ื•ื‘ื•ืช ืื• ื‘ื˜ืœื’ืจื.

ToCode
1 420
ืฉื™ืžื•ืฉ ื“ื•ื’ืžื˜ื™, ืฉื›ืœ ื™ืฉืจ ื•ืžื” ืขื•ืฉื™ื ืขื ื”ื’ื•'ื ื™ื•ืจื™ื? ื—ื‘ืจื•ืช ืคื™ืชื•ื— ืจืฆื™ื ื™ื•ืช ื”ื™ื•ื ืžืคืขื™ืœื•ืช ืชื”ืœื™ืš ืฉืœ Code Review ืขืœ ืงื•ื“ ื—ื“ืฉ ืฉื ื›ื ืก ืœืžืขืจื›ืช, ื•ื”ืจื‘ื” ืคืขืžื™ื ืฆื•ื•ืชื™ื ื™ื ืกื• ืœืชื—ื–ืง ืชื”ืœื™ืš ื›ื–ื” ื’ื ื›ืฉืื™ืŸ ืžืกืคื™ืง ื›ื— ืื“ื ื›ื“ื™ ืœืขื‘ื•ืจ ืื—ื“ ืขืœ ื”ืงื•ื“ ืฉืœ ื”ืฉื ื™. ื‘ืฉื˜ื— ื–ื” ืžื•ื‘ื™ืœ ืœืฉืชื™ ืชื•ืฆืื•ืช ื’ืจื•ืขื•ืช: 1. ื”ืจืืฉื•ื ื” ื”ื™ื ืฉื™ืžื•ืฉ ื“ื•ื’ืžื˜ื™ ื‘ Best Practices, ื›ื™ ืื ืื™ืŸ ืœืš ื–ืžืŸ ืœืขื‘ื•ืจ ืขืœ ืงื•ื“ ื•ื‘ื›ืœ ื–ืืช ืœื ื ืขื™ื ืœื ืœื”ื’ื™ื“ ื›ืœื•ื, ืื– ืืชื” ืชืขื™ืจ ืขืœ ื”ื“ื‘ืจื™ื ื”ืงื˜ื ื™ื ืฉืงื•ืคืฆื™ื ืœืขื™ืŸ (ืœืžื” ืื™ืŸ ืฉืชื™ ืฉื•ืจื•ืช ืจื•ื•ื— ืœืคื ื™ ื”ืคื•ื ืงืฆื™ื”? ื”ืงื•ืžืคื•ื ื ื˜ื” ื”ื–ืืช ืขื•ืฉื” ื™ื•ืชืจ ืžื“ื™ ื•ื›ื•). 2. ื”ืฉื ื™ื” ื”ื™ื ืื™ื˜ื™ื•ืช ื‘ืคื™ืชื•ื—, ื›ื™ ื‘ืžืงื•ื ืœื”ื›ื ื™ืก ืงื•ื“ ื•ืœืจืื•ืช ืžื” ื ืฉื‘ืจ ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื—ื›ื•ืช ืœื”ืขืจื•ืช ืœื ืจืœื•ื•ื ื˜ื™ื•ืช ืฉืœ ืจืืฉ ื”ืฆื•ื•ืช ื”ืขืกื•ืง ืžื“ื™. ืœืื•ืจืš ื–ืžืŸ ื”ืžื˜ืจื” ืฉืœ Code Reviews ื”ื™ื ืœืฉืคืจ ืืช ืื™ื›ื•ืช ื”ืงื•ื“ ืฉืœ ื”ืžืขืจื›ืช, ื•ืœืขื–ื•ืจ ืœื’'ื•ื ื™ื•ืจื™ื ืœื”ืฉืชืคืจ ื•ืœื”ื™ื—ืฉืฃ ืœืชื‘ื ื™ื•ืช ืคื™ืชื•ื— ื˜ื•ื‘ื•ืช ื™ื•ืชืจ. ื”ื ื” ืฉืœื•ืฉ ืฉืืœื•ืช ืฉืฉื•ื•ื” ืœืฉืื•ืœ ืืช ืขืฆืžื ื• ืœื’ื‘ื™ ืชื”ืœื™ื›ื™ ื” Code Review (ื’ื ื”ื•ื•ืชื™ืงื™ื ื•ื’ื ื”ืฆืขื™ืจื™ื)- 1. ื‘ืื™ื–ื• ืชื“ื™ืจื•ืช ืื ื™ ืžืขื‘ื™ืจ ืื• ืžืงื‘ืœ ื”ืขืจื•ืช ืฉืฉื™ื ื• ืืช ื” Design ืฉืœ ื”ืคื™ืฆ'ืจ ื‘ืฆื•ืจื” ืžืฉืžืขื•ืชื™ืช? 2. ื‘ืื™ื–ื• ืชื“ื™ืจื•ืช ืื ื™ ืžืขื‘ื™ืจ ืื• ืžืงื‘ืœ ื”ืขืจื•ืช ื”ืงืฉื•ืจื•ืช ืœืื‘ื˜ื—ืช ืžื™ื“ืข ืื• ืฉืชืคืกื• ื‘ืขื™ื™ืช ื‘ื™ืฆื•ืขื™ื ืžืฉืžืขื•ืชื™ืช ืœืคื ื™ ืฉื”ื’ื™ืขื” ืœืคืจื•ื“ืงืฉืŸ? 3. ื‘ืื™ื–ื• ืชื“ื™ืจื•ืช ืื ื™ ืžืขื‘ื™ืจ ืื• ืžืงื‘ืœ ื”ืขืจื•ืช ืฉื’ืจืžื• ืœื™ ืœืœืžื•ื“ ืคืจื“ื™ื’ืžื” ืื• ืจืขื™ื•ืŸ ื—ื“ืฉ, ืื• ืฉื’ืจืžื• ืœื™ ืœืจืื•ืช ืื—ืจืช ืืช ื”ืžืขืจื›ืช ื•ืืช ืชื”ืœื™ืš ื”ืคื™ืชื•ื—? ืื ืชื”ืœื™ืš ื” Code Review ืฉืœื›ื ืœื ืขื•ื‘ื“ ื˜ื•ื‘ ื›ืžื• ืฉื”ื™ื™ืชื ืจื•ืฆื™ื ืืœ ืชืชื‘ื™ื™ืฉื• ืœืฉื ื•ืช ืื•ืชื•. ืžืขื‘ืจ ืœืขื•ืžืง ืขืœ PR ืื—ื“ ื‘ื—ื•ื“ืฉ ื ื•ืชืŸ ื™ื•ืชืจ ืขืจืš ืžืžืขื‘ืจ ื—ื˜ื•ืฃ ืขืœ ืฉืœื•ืฉื” PR-ื™ื ื›ืœ ื™ื•ื.

ToCode
1 420
ื ืชื—ื™ืœ ื‘ื“ืจืš ืฉืžื•ื‘ื ื™ืช ื‘ืฉืคื” ืื—ืช ื”ื˜ืขื•ื™ื•ืช ื”ื ืคื•ืฆื•ืช ื‘ืœื™ืžื•ื“ ื˜ื›ื ื•ืœื•ื’ื™ื” ืžืชื—ื™ืœื” ื›ืฉืื ื—ื ื• ืžืกืชื›ืœื™ื ืขืœ Tech Stack ื‘ืžืงื•ื ืขืœ ืฉืคื”, ื•ืžื ืกื™ื ืœืœืžื•ื“ ืกื˜ืืง ืฉืœื ื‘ืžื›ื” ืื—ืช. ื–ื” ื™ื”ื™ื” ื”ื ื™ืกื™ื•ืŸ ืœืœืžื•ื“ Node.js ื™ื—ื“ ืขื ืืงืกืคืจืก, ืื• ืจื•ื‘ื™ ื™ื—ื“ ืขื ืจื™ื™ืœืก, ืื‘ืœ ื’ื ืจื™ืืงื˜ ื™ื—ื“ ืขื ืจื™ื“ืืงืก ื• next ื• styled components ื• TypeScript. ืœื›ืื•ืจื” ื™ืฉ ืคื” ื”ื–ื“ืžื ื•ืช ืœื”ืจื•ื•ื™ื— - ื‘ืžืงื•ื ืœืœืžื•ื“ ืงื•ื“ื X ืื—ืจ ื›ืš Y ืื—ืจ ื›ืš Z ืื ื™ ืืœืžื“ ื™ืฉืจ ืืช ื”ื“ืจืš ื”ื ื›ื•ื ื” ืœืขืฉื•ืช ื“ื‘ืจื™ื, ื•ืื—ืจื™ ื–ื” ืื ื™ืขื ื™ื™ืŸ ืื•ืชื™ ืœื”ืชืงื“ื ืื•ื›ืœ ืœื”ืชืขืžืง ื‘ื›ืœ ื˜ื›ื ื•ืœื•ื’ื™ื”. ื‘ืคื•ืขืœ ื”ืžืฉื—ืง ื”ื–ื” ืคื•ืขืœ ืœืจืขืชื ื• ืžื›ืžื” ืกื™ื‘ื•ืช: 1. ืื ื—ื ื• ืžืคืชื—ื™ื ืชืœื•ืช ื‘ืคืจื™ื™ืžื•ื•ืจืง ื›ืš ืฉื™ื”ื™ื” ืœื ื• ืงืฉื” ืœื”ื—ืœื™ืฃ ื—ืœืงื™ื ืžืžื ื”. 2. ืื ื—ื ื• ืžืชืจื’ืœื™ื ืœื“ืจืš ื—ืฉื™ื‘ื” ืžืกื•ื™ืžืช, ื‘ืœื™ ืœื”ื‘ื™ืŸ ืืช ื”ืคื•ื˜ื ืฆื™ืืœ ื”ืืžื™ืชื™ ืฉืœ ื”ื›ืœื™. 3. ื•ืื•ืœื™ ื”ื›ื™ ื’ืจื•ืข, ืคืจื™ื™ืžื•ื•ืจืงื™ื ืžืกืชื™ืจื™ื ืžืื™ืชื ื• ืืช ื”ืคืจื˜ื™ื ืฉืœ "ืื™ืš ื“ื‘ืจื™ื ืขื•ื‘ื“ื™ื" ื•ืžื’ื“ื™ืœื™ื ืืช ื”ืกื™ื›ื•ื™ ืฉื ื›ืชื•ื‘ ืงื•ื“ ืœื ื”ื’ื™ื•ื ื™. ืœืคื ื™ ืฉืจืฆื™ื ืœืœืžื•ื“ ืืช ื›ืœ ื”ืกื˜ืืง ื ืกื• ืœืจืื•ืช ืฉืืชื ืžืฆืœื™ื—ื™ื ืœื”ืกืชื“ืจ ืจืง ืขื ื”ื˜ื›ื ื•ืœื•ื’ื™ื” ืื•ืชื” ืืชื ืžื ืกื™ื ืœืœืžื•ื“. ื›ืŸ ืืคืฉืจ ืœื”ืกืชื“ืจ ืžืžืฉ ื˜ื•ื‘ ืขื ืจื™ืืงื˜ ื’ื ื‘ืœื™ Redux ื• next ื•ืœื™ืžื•ื“ ื”ื“ื‘ืจื™ื ืœืคื™ ื”ืกื“ืจ ืจืง ื™ืขื–ื•ืจ ืœื”ื‘ื™ืŸ ืืช ื”ืงืฉืจื™ื ื‘ื™ื ื™ื”ื.

ToCode
1 420
ื”ืื Exceptions ืฆืจื™ื›ื™ื ืœื”ื™ื•ืช ื—ืœืง ืžื”ืžืžืฉืง? ื’'ืื•ื•ื” ื ื™ืกื• ืœื˜ืขื•ืŸ ืฉ Exceptions ื”ื ื—ืœืง ืžื”ืžืžืฉืง ืฉืœ ื”ืคื•ื ืงืฆื™ื”, ืจืง ื‘ืฉื‘ื™ืœ ืœื’ืœื•ืช ืฉืžืชื›ื ืชื™ื ืžืฉืชืžืฉื™ื ื™ื•ืชืจ ืžื“ื™ ื‘ Runtime Exceptions ื›ืฉืื™ืŸ ืœื”ื ื›ื— ืœืชืขื“ ืืช ื”ื“ื‘ืจื™ื ื”ืจืขื™ื ืฉื™ื›ื•ืœื™ื ืœืงืจื•ืช. ืจืืกื˜ ืžื ืกื” ืืช ืื•ืชื• ืžืฉื—ืง ืขื ื”ื—ื–ืจื” ืžื•ืงื“ืžืช ืฉืœ ืขืจื›ื™ ืฉื’ื™ืื” ื•ืกื™ืžื ื™ ืฉืืœื”, ืื‘ืœ ืขื“ื™ื™ืŸ ืžื•ืงื“ื ืœื”ื‘ื™ืŸ ืื™ืš ื–ื” ื™ื™ื’ืžืจ. ื‘ืฆื“ ื”ืฉื ื™ ืฉืœ ื”ืžืคื” ื™ืฉ ืœื ื• ืืช ืคื™ื™ืชื•ืŸ ืฉืžืฆื™ื™ื ืช ื‘ PEP484: > No syntax for listing explicitly raised exceptions is proposed. Currently the only known use case for this feature is documentational, in which case the recommendation is to put this information in a docstring. ื•ื’ื ื‘ื˜ื™ื™ืคืกืงืจื™ืคื˜ ื”ื™ื” ื“ื™ื•ืŸ ืื™ื ืกื•ืคื™ ืฉื ื’ืžืจ ื‘ืœื™ ื”ืžืœืฆื” ืžืฉืžืขื•ืชื™ืช. ื”ื‘ืขื™ื” ื”ื’ื“ื•ืœื” ืฉืœื ื• ื”ื™ื ืฉืžืฆื“ ืื—ื“ ืื ื—ื ื• ืœื ืจื•ืฆื™ื ืœื”ื›ืจื™ื— ืืฃ ืื—ื“ ืœื˜ืคืœ ื‘ืฉื’ื™ืื•ืช (ื›ื™ ืœื›ืœ ืคืจื•ื™ืงื˜ ื™ืฉ ื“ืจื™ืฉื•ืช ืฉื•ื ื•ืช), ืื‘ืœ ืžืฆื“ ืฉื ื™ ื–ื” ืžืจื’ื™ืฉ ืœื ื ื›ื•ืŸ ืœื˜ืขื•ืŸ ืฉื™ืฉ ืœื ื• Type Safety ื›ืฉื‘ืขืฆื ืงื•ื“ ื™ื›ื•ืœ "ืœืงืคื•ืฅ" ืœืžืงื•ืžื•ืช ืื—ืจื™ื ื‘ื’ืœืœ ืคืงื•ื“ื” ื‘ืคื•ื ืงืฆื™ื” ืคื ื™ืžื™ืช. ืžื” ื“ืขืชื›ื? ื”ืื Exceptions ืฆืจื™ื›ื™ื ืœื”ื™ื•ืช ื—ืœืง ืžื”ืžืžืฉืง? ืžืขื“ื™ืคื™ื ืงื•ื“ ืฉืžื—ื–ื™ืจ ืฉื’ื™ืื” ืื• ืฉื–ื•ืจืง Exception, ื•ื‘ืื™ื–ื” ืžืฆื‘ื™ื?

ToCode
1 420
ื”ืื Exceptions ืฆืจื™ื›ื™ื ืœื”ื™ื•ืช ื—ืœืง ืžื”ืžืžืฉืง? ื’'ืื•ื•ื” ื ื™ืกื• ืœื˜ืขื•ืŸ ืฉ Exceptions ื”ื ื—ืœืง ืžื”ืžืžืฉืง ืฉืœ ื”ืคื•ื ืงืฆื™ื”, ืจืง ื‘ืฉื‘ื™ืœ ืœื’ืœื•ืช ืฉืžืชื›ื ืชื™ื ืžืฉืชืžืฉื™ื ื™ื•ืชืจ ืžื“ื™ ื‘ Runtime Exceptions ื›ืฉืื™ืŸ ืœื”ื ื›ื— ืœืชืขื“ ืืช ื”ื“ื‘ืจื™ื ื”ืจืขื™ื ืฉื™ื›ื•ืœื™ื ืœืงืจื•ืช. ืจืืกื˜ ืžื ืกื” ืืช ืื•ืชื• ืžืฉื—ืง ืขื ื”ื—ื–ืจื” ืžื•ืงื“ืžืช ืฉืœ ืขืจื›ื™ ืฉื’ื™ืื” ื•ืกื™ืžื ื™ ืฉืืœื”, ืื‘ืœ ืขื“ื™ื™ืŸ ืžื•ืงื“ื ืœื”ื‘ื™ืŸ ืื™ืš ื–ื” ื™ื™ื’ืžืจ. ื‘ืฆื“ ื”ืฉื ื™ ืฉืœ ื”ืžืคื” ื™ืฉ ืœื ื• ืืช ืคื™ื™ืชื•ืŸ ืฉืžืฆื™ื™ื ืช ื‘ PEP484: > No syntax for listing explicitly raised exceptions is proposed. Currently the only known use case for this feature is documentational, in which case the recommendation is to put this information in a docstring. ื•ื’ื ื‘ื˜ื™ื™ืคืกืงืจื™ืคื˜ ื”ื™ื” ื“ื™ื•ืŸ ืื™ื ืกื•ืคื™ ืฉื ื’ืžืจ ื‘ืœื™ ื”ืžืœืฆื” ืžืฉืžืขื•ืชื™ืช. ื”ื‘ืขื™ื” ื”ื’ื“ื•ืœื” ืฉืœื ื• ื”ื™ื ืฉืžืฆื“ ืื—ื“ ืื ื—ื ื• ืœื ืจื•ืฆื™ื ืœื”ื›ืจื™ื— ืืฃ ืื—ื“ ืœื˜ืคืœ ื‘ืฉื’ื™ืื•ืช (ื›ื™ ืœื›ืœ ืคืจื•ื™ืงื˜ ื™ืฉ ื“ืจื™ืฉื•ืช ืฉื•ื ื•ืช), ืื‘ืœ ืžืฆื“ ืฉื ื™ ื–ื” ืžืจื’ื™ืฉ ืœื ื ื›ื•ืŸ ืœื˜ืขื•ืŸ ืฉื™ืฉ ืœื ื• Type Safety ื›ืฉื‘ืขืฆื ืงื•ื“ ื™ื›ื•ืœ "ืœืงืคื•ืฅ" ืœืžืงื•ืžื•ืช ืื—ืจื™ื ื‘ื’ืœืœ ืคืงื•ื“ื” ื‘ืคื•ื ืงืฆื™ื” ืคื ื™ืžื™ืช. ืžื” ื“ืขืชื›ื? ื”ืื Exceptions ืฆืจื™ื›ื™ื ืœื”ื™ื•ืช ื—ืœืง ืžื”ืžืžืฉืง? ืžืขื“ื™ืคื™ื ืงื•ื“ ืฉืžื—ื–ื™ืจ ืฉื’ื™ืื” ืื• ืฉื–ื•ืจืง Exception, ื•ื‘ืื™ื–ื” ืžืฆื‘ื™ื?

ToCode
1 420
ืžื” ืื ื—ื ื• ืžื—ืคืฉื™ื ื‘ืฉืคืช ืชื›ื ื•ืช ืžื™ืฉื”ื• ื‘ืจื“ื™ื˜ ืฉืœ ืกืงืืœื” ื”ืคื™ืœ ืคืฆืฆื” ื”ืฉื‘ื•ืข ื•ืฉืืœ "ืœืžื” ื‘ืขืฆื ื”ืคืกืงืชื ืœื”ืฉืชืžืฉ ื‘ืกืงืืœื”?". ื–ื” ืžืขื ื™ื™ืŸ ื›ื™ ืกืงืืœื” ื‘ืืžืช ื ืžืฆืืช ื‘ื“ืขื™ื›ื” ื‘ืขืจืš ืž 2017. ืฉืœื•ืฉ ื”ืกื™ื‘ื•ืช ื”ืžืจื›ื–ื™ื•ืช ืฉืขืœื• ืฉื ื”ืŸ: 1. ืงืฉื” ืœื’ื™ื™ืก ืื ืฉื™ื ื•ืขืœื•ืช ืžืคืชื—ื™ื ืžืื•ื“ ื’ื‘ื•ื”ื”. 2. ืืงื•ืกื™ืกื˜ื ืžืคื•ืฆืœ ื•ืœื ืžืชื•ื—ื–ืง. 3. ืื™ืŸ ืขื‘ื•ื“ื”. ื‘ื”ื™ื‘ื˜ ืฉืœ ื”ืืงื•ืกื™ืกื˜ื ืœืกืงืืœื” ื”ื™ื” ืืช spark ื•ืืช play, ืฉื ื™ื”ื ืขื“ื™ื™ืŸ ืคืขื™ืœื™ื ื•ืžื•ืฉื›ื™ื ืžืชื›ื ืชื™ื ืื‘ืœ ื”ืจื‘ื” ืคื—ื•ืช ืžื‘ืขื‘ืจ. ืกืคืืจืง ืขื•ื‘ื“ ื˜ื•ื‘ ืขื ืคื™ื™ืชื•ืŸ ื•ื‘ืฉื‘ื™ืœ ืœืคืชื— ืืคืœื™ืงืฆื™ื•ืช ื•ื•ื‘ ืื ื—ื ื• ืžืขื“ื™ืคื™ื ืืช ื˜ื™ื™ืคืกืงืจื™ืคื˜. ื‘ืกื•ืฃ ืื ื—ื ื• ืจื•ืฆื™ื ืœื‘ื—ื•ืจ ืฉืคื” ืฉื™ื›ื•ืœื” ืœืชืช ืชืฉื•ื‘ื” ื˜ื•ื‘ื” ืœืฉืืœื” "ืœืžื” ื”ืฉืคื” ื”ื–ืืช ื˜ื•ื‘ื”". ื–ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช ื‘ื™ืฆื•ืขื™ื, ืžื•ืฆืจ ื“ื’ืœ ืื• ืชื—ื•ื ืžืกื•ื™ื ื‘ื• ื”ืฉืคื” ืฉื•ืœื˜ืช. ืคื™ื™ืชื•ืŸ ื”ืฉืชืœื˜ื” ืขืœ ืชื—ื•ื ื ื™ืชื•ื— ื ืชื•ื ื™ื ื• AI, ื•ืžืฉื ื”ืคื›ื” ืœืคื™ื™ื‘ื•ืจื™ื˜ื™ืช ืฉืœ ื”ืจื‘ื” ืื ืฉื™ื. ื’'ืื•ื•ื”ืกืงืจื™ืคื˜ ื”ืจื•ื•ื™ื—ื” ื›ื™ ื”ื™ื ื”ื™ืชื” ื”ื™ื—ื™ื“ื” ืฉืจืฆื” ื‘ืชื•ืš ื“ืคื“ืคืŸ ื‘ืฆื•ืจื” ืžื•ื‘ื ื™ืช. ืจื•ื‘ื™ ื”ืจื•ื•ื™ื—ื” ื›ืฉืจื™ื™ืœืก ื”ื™ื” ืžืขื ื™ื™ืŸ ื• swift ืื™ืชื ื• ื‘ื’ืœืœ ื”ืื™ื™ืคื•ืŸ. ืœืžืจื•ืช ื”ืžืขืžื“ ื”ื’ื‘ื•ื” ืฉืœ Python ื• JavaScript ื‘ื™ืžื™ื ืืœื”, ื›ื“ืื™ ืœื–ื›ื•ืจ ืืช ื”ืœืงื— ืฉืœ ืกืงืืœื”, ืจื•ื‘ื™, ืคืจืœ ื•ืฉืคื•ืช ืจื‘ื•ืช ื ื•ืกืคื•ืช. ื”ืขื•ืœื ื™ืฉืชื ื” ื•ืฉืคื•ืช ื—ื“ืฉื•ืช ื™ื’ื™ืขื•. ื›ื›ืœ ืฉืืคืฉืจ ืฉื•ื•ื” ืœื”ืชืจื’ืœ ืœืœื™ืžื•ื“ ืฉืคื•ืช ืชื›ื ื•ืช ื—ื“ืฉื•ืช ืืคื™ืœื• ื‘ืชื•ืจ ืชื—ื‘ื™ื‘, ื›ื“ื™ ืฉื›ืฉื™ื’ื™ืข ื”ื™ื•ื ื•ื”ืฉืคื” ืฉืœื ื• ืชืชื—ื™ืœ ืœืื‘ื“ ื’ื•ื‘ื” ื ื•ื›ืœ ืœื”ืชืงื“ื ื•ืœื ืœื”ืจื’ื™ืฉ ืชืงื•ืขื™ื.

ToCode
1 420
ืคื™ืชืจื•ืŸ ื™ื•ื 6 ื‘ Advent Of Code 2023 ื‘ืกืงืืœื” (ื”ื›ื™ ืงืœ ื‘ื™ื ืชื™ื™ื) ืื—ืจื™ 5 ื™ืžื™ื ืžื‘ืœื‘ืœื™ื, ื™ื•ื 6 ืฉืœ Advent Of Code ื”ืฉืื™ืจ ืงืฆืช ืื•ื•ื™ืจ ืœื ืฉื™ืžื”. ื‘ื•ืื• ื ืฆื ืœื“ืจืš ืœืžื™ืจื•ืฅ ื”ืกื™ืจื•ืช ืขื ืกืงืืœื”. ื”ืืชื’ืจ ื‘ืžืฉื—ืง ื”ื™ื•ื ืื ื—ื ื• ืžืงื‘ืœื™ื ื˜ื‘ืœื” ืฉืœ ื–ืžื ื™ื ื•ืžืจื—ืงื™ื:
Time:      7  15   30
Distance:  9  40  200
ื›ืœ ืขืžื•ื“ื” ืžืชืืจืช ืฉื™ื ื‘ืžื™ืจื•ืฅ ื•ื”ืžืฉื™ืžื” ืฉืœื ื• ื”ื™ื ืœื‘ื—ื•ืจ ืžื”ื™ืจื•ืช ืฉืชื‘ื™ืก ืืช ืื•ืชื• ืฉื™ื. ื”ื˜ืจื™ืง ื”ื•ื ืฉื‘ืฉื‘ื™ืœ ืœื”ื’ื™ืข ืœืžื”ื™ืจื•ืช ืžืกื•ื™ืžืช ืฆืจื™ืš "ืœื˜ืขื•ืŸ" ืืช ื”ืกื™ืจื” ื•ื–ื” ืžื‘ื–ื‘ื– ื–ืžืŸ, ื•ื›ืš ื”ืžืกืœื•ืœ ืžื—ื•ืœืง ืœ-2, ืื ื—ื ื• ื‘ื•ื—ืจื™ื ื›ืžื” ืฉื ื™ื•ืช "ืœื˜ืขื•ืŸ" ื•ืื– ื™ื•ืฆืื™ื ืœื“ืจืš ื‘ืžื”ื™ืจื•ืช ืฉืฉื•ื•ื” ืœืžืกืคืจ ื”ืฉื ื™ื•ืช ืฉื”ืฉืงืขื ื• ื‘ื˜ืขื™ื ื”. ืœื“ื•ื’ืžื” ืื ื”ืฉืงืขื ื• 2 ืžื™ืœื™ ืฉื ื™ื•ืช ื‘ื˜ืขื™ื ื” ื”ืกื™ืจื” ืชื™ืกืข ื‘ืžื”ื™ืจื•ืช 2 ืžื™ืœื™ืžื˜ืจ ื‘ืžื™ืœื™ ืฉื ื™ื”. ื‘ืกื™ืจื” ื”ื–ืืช ื™ืฉ ืœื ื• ื›ืžื” ืืคืฉืจื•ื™ื•ืช ืœื”ื‘ื™ืก ืืช ื”ืฉื™ื ืฉืœ ื”ืžื™ืจื•ืฅ ื”ืจืืฉื•ืŸ: 1. ืื ื ื˜ืขืŸ ื‘ืžืฉืš 2 ืžื™ืœื™ ืฉื ื™ื•ืช ื™ื”ื™ื• ืœื ื• ืขื•ื“ 5 ืžื™ืœื™ ืฉื ื™ื•ืช ืœื ืกื•ืข ื‘ืžื”ื™ืจื•ืช 2, ื•ื ืขื‘ื•ืจ ืžืจื—ืง ืฉืœ 10 ืžื™ืœื™ืžื˜ืจ (ื’ื“ื•ืœ ืžื”ืžืจื—ืง ื‘ื˜ื‘ืœื”). 2. ืื ื ื˜ืขืŸ ื‘ืžืฉืš 3 ืžื™ืœื™ ืฉื ื™ื•ืช ื™ื”ื™ื• ืœื ื• ืขื•ื“ 4 ืžื™ืœื™ ืฉื ื™ื•ืช ืœื ืกื•ืข ื•ื ืขื‘ื•ืจ 12 ืžื™ืœื™ืžื˜ืจ. 3. ืื ื ื˜ืขืŸ ื‘ืžืฉืš 4 ืžื™ืœื™ ืฉื ื™ื•ืช ื™ื”ื™ื• ืœื ื• ืขื•ื“ 3 ืžื™ืœื™ ืฉื ื™ื•ืช ืœื ืกื•ืข ื•ื ืขื‘ื•ืจ ืฉื•ื‘ 12 ืžื™ืœื™ืžื˜ืจ. 4. ืื ื ื˜ืขืŸ ื‘ืžืฉืš 5 ืžื™ืœื™ ืฉื ื™ื•ืช ื™ื”ื™ื• ืœื ื• ืขื•ื“ 2 ืžื™ืœื™ ืฉื ื™ื•ืช ืœื ืกื•ืข ื•ื ืขื‘ื•ืจ 10 ืžื™ืœื™ืžื˜ืจ. ื‘ืžื™ืจื•ืฅ ื”ืฉื ื™ ื™ืฉ 8 ื“ืจื›ื™ื ืœื ืฆื— ื•ื‘ืฉืœื™ืฉื™ 9 ื“ืจื›ื™ื ืœื ืฆื—, ื•ื”ืžืฉื™ืžื” ื”ื™ื ืœื›ืคื•ืœ ืืช ืžืกืคืจ ื”ื“ืจื›ื™ื ืœื ืฆื— ื‘ื›ืœ ืžื™ืจื•ืฅ. ื‘ื“ื•ื’ืžื” ืžืงื‘ืœื™ื 288. ืคื™ืชืจื•ืŸ ื‘ืขื–ืจืช ื—ื™ืฉื•ื‘ ื”ืกื™ื‘ื” ืฉื™ื•ื 6 ื”ื™ื” ื›ืœ ื›ืš ืงืœ ื”ื™ื ืฉืืคืฉืจ ืœื—ืฉื‘ ื‘ืงืœื•ืช ืืช ืžืกืคืจ ื”ื“ืจื›ื™ื ืœื ืฆื— ื‘ื›ืœ ืžื™ืจื•ืฅ. ืื ื ืกืžืŸ ืืช ื–ืžืŸ ื”ื˜ืขื™ื ื” ื‘ x ื•ืืช ื–ืžืŸ ื”ืžื™ืจื•ืฅ ื‘ t ืื– ื”ืžืจื—ืง ืฉื ืขื‘ื•ืจ ื™ื”ื™ื”:
(t-x) * x
ื•ืื– ื›ืœ ืžื” ืฉืฆืจื™ืš ื–ื” ืœืžืฆื•ื ืžืชื™ ื”ืžืจื—ืง ื”ื–ื” ื’ื“ื•ืœ ื™ื•ืชืจ ืžื”ืžืจื—ืง ืฉื‘ื˜ื‘ืœื”. ืื ื ืกืžืŸ ืืช ื”ืžืจื—ืง ืฉื‘ื˜ื‘ืœื” ื‘ d ื™ืฉ ืœื ื• ืžืฉื•ื•ืื”:
(t-x) * x > d
ื•ื ืฉืืจ ืœื ื• ืจืง ืœืคืชื•ืจ ืืช ื”ืžืฉื•ื•ืื” ื•ืœืžืฆื•ื ืืช ื›ืœ ื”ืžืกืคืจื™ื ื”ืฉืœืžื™ื ื‘ื˜ื•ื•ื— ื‘ื™ืŸ ืฉื ื™ ื”ืคื™ืชืจื•ื ื•ืช. ืงื•ื“? ื‘ืจื•ืจ:
import Math.{sqrt, pow, max, min}
import scala.io.Source
import scala.util.chaining.*

object aoc2023day6 {
  val demoInput: String = """Time:      7  15   30
                            |Distance:  9  40  200""".stripMargin

  private def parseInput(input: Source): List[(Long, Long)] =
    input.getLines().toList match
      case List(times, distances) =>
        val timesValues = """\b(\d+)\b""".r.findAllIn(times).toList.map(_.toLong)
        val distanceValues = """\b(\d+)\b""".r.findAllIn(distances).toList.map(_.toLong)
        timesValues.zip(distanceValues)

  private def waysToWin(time: Long, distance: Long): Long =
    val x1 = ((time + sqrt(pow(time, 2) - 4 * distance)) / 2)
    val x2 = ((time - sqrt(pow(time, 2) - 4 * distance)) / 2)
    val start = min(x1, x2).floor + 1
    val end = max(x1, x2).ceil - 1

    (end - start + 1).toLong

  @main
  def day6_part1(): Unit =
    println(parseInput(Source.fromResource("day6.txt"))
      .map(waysToWin)
      .product)
}

ืื•ืœื™ ื”ืคืœื•ืก ื”ื™ื—ื™ื“ ืฉืœ ืกืงืืœื” ื›ืืŸ ื”ื™ื ื”ืคื•ื ืงืฆื™ื” product ืฉืžื—ื–ื™ืจื” ืืช ืžื›ืคืœืช ื›ืœ ื”ืื™ื‘ืจื™ื ื‘ืจืฉื™ืžื”. ื—ืœืง 2 ื‘ื—ืœืง ื”ืฉื ื™ ืฉืœ ื”ืชืจื’ื™ืœ ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื“ืžื™ื™ืŸ ืฉื™ืฉ ืจืง ืžืจื•ืฅ ืื—ื“ - ืคืฉื•ื˜ ืžื•ื—ืงื™ื ืืช ื›ืœ ื”ืจื•ื•ื—ื™ื ื‘ื˜ื‘ืœื” ื•ืžืงื‘ืœื™ื ืขืžื•ื“ื” ืื—ืช, ื•ืื– ืฆืจื™ืš ืœื—ืฉื‘ ื›ืžื” ื“ืจื›ื™ื ื™ืฉ ืœื ืฆื— ื‘ืื•ืชื• ืžื™ืจื•ืฅ ื™ื—ื™ื“. ื”ืืžืช ืฉืžื‘ื—ื™ื ืช ืงื•ื“ ืžืขื˜ ืžืื•ื“ ืžืฉืชื ื”, ืื•ืœื™ ืจืง ืคื™ืขื ื•ื— ื”ืงืœื˜. ื–ืืช ื”ืคื•ื ืงืฆื™ื” ืฉืžืคืขื ื—ืช ืืช ื”ืงืœื˜ ืœื—ืœืง ื”ืฉื ื™:
  private def parseInputPart2(input: Source): (Long, Long) =
    input.getLines().toList match
      case List(times, distances) =>
        val timesValues = times.replaceAll("\\s", "").substring(5).toLong
        val distanceValues = distances.replaceAll("\\s", "").substring(9).toLong
        (timesValues, distanceValues)
ื”ืฉื™ืžื•ืฉ ื‘ substring ืžื•ืจื™ื“ ืืช ื”ื˜ืงืกื˜ ื‘ืชื—ื™ืœืช ื”ืฉื•ืจื” (ื”ืžื™ืœื™ื Time ื• Distance). ื•ื›ืŸ ืืคืฉืจ ื”ื™ื” ืœื‘ื ื•ืช ืฉื ื‘ื™ื˜ื•ื™ ืจื’ื•ืœืืจื™ ื™ื•ืชืจ ื’ื ืจื™ ืื‘ืœ ื‘ื”ืงืฉืจ ืฉืœ ื”ืชืจื’ื™ืœ ืœื ื”ื™ื” ื”ืจื‘ื” ื˜ืขื.