uz
Feedback
ToCode

ToCode

Kanalga Telegramโ€™da oโ€˜tish

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

Ko'proq ko'rsatish
1 417
Obunachilar
-224 soatlar
-37 kunlar
-630 kunlar
Postlar arxiv
ToCode
1 417
ืœืžื” ืœื ืœื”ืขืชื™ืง ืงื•ื“ ืž Stack Overflow? ืื—ืช ื”ืขืฆื•ืช ื”ื™ืฉื ื•ืช ื‘ื™ื•ืชืจ ื‘ืกืคืจ ื”ื™ืชื” "ื”ืขื–ืจื• ื‘ืื™ื ื˜ืจื ื˜ ื›ื“ื™ ืœืœืžื•ื“ ื•ื‘ืฉื›ืœ ื›ื“ื™ ืœื™ื™ืฉื". ืœืžืจื•ืช ืฉื™ืฉ ื”ืžื•ืŸ ืงื˜ืขื™ ืงื•ื“ ืฉืขื•ื‘ื“ื™ื ืžืคืชื—ื™ื ืœืžื“ื• ื‘ื“ืจืš ื”ืงืฉื” ืฉื”ืขืชืงื” ืขื™ื•ื•ืจืช ืฉืœื”ื ืœืคืจื•ื™ืงื˜ ืžื•ื‘ื™ืœื” ืœืงื•ื“ ืงืฉื” ืœืชื—ื–ื•ืงื”. ื•ื–ื” ืœื ื‘ื’ืœืœ ืฉืงื˜ืขื™ ื”ืงื•ื“ ืฉืžืฆืื ื• ื‘ืื™ื ื˜ืจื ื˜ ื”ื™ื• ื’ืจื•ืขื™ื. ื”ื‘ืขื™ื” ื”ื™ืชื” ืฉื™ืฉ ื“ืจื›ื™ื ืฉื•ื ื•ืช ืœื—ื‘ืจ ืงื˜ืขื™ ืงื•ื“ ืื—ื“ ืœืฉื ื™ ื•ื”ื—ื™ื‘ื•ืจื™ื ื”ื ืžืื•ื“ ืกืคืฆื™ืคื™ื™ื ื•ืœื›ืŸ ืœื ื”ื•ืคื™ืขื• ื‘ืื™ื ื˜ืจื ื˜. ื•ืขื›ืฉื™ื• ื”ื’ื™ืข AI ื•ื—ื‘ืจื™ื ืžืกืคืจื™ื ืœื™ ื›ืžื” ืฉื”ื•ื ืžื“ื”ื™ื ื•ืื™ืš ืืคืฉืจ ืœื›ืชื•ื‘ ืžืขืจื›ื•ืช ืฉืœืžื•ืช ืžื”ืจ ื•ืื ื™ ืžื•ื“ื” ืฉื–ื” ืงืฆืช ืžืจื’ื™ืฉ ื›ืžื• ืœื—ื–ื•ืจ ืœืื•ืชืŸ ืฉื™ื—ื•ืช ื•ืื•ืชืŸ ื‘ืขื™ื•ืช - ืงื•ื“ ืขื ื—ืœื•ืงื” ืœื ื ื›ื•ื ื” ืœืคื•ื ืงืฆื™ื•ืช, ืื‘ืกื˜ืจืงืฆื™ื•ืช ืœื ื ื›ื•ื ื•ืช ืื• ืœื ืžืกืคื™ืง ื™ืขื™ืœื•ืช, ื™ื•ืชืจ ืžื“ื™ ืงื•ื“ ื›ืฉืืคืฉืจ ื”ื™ื” ืœื”ืกืชืคืง ื‘ืคื—ื•ืช, ื‘ืงื™ืฆื•ืจ ืงื•ื“ ืฉืžื™ ืฉื™ืฆื˜ืจืš ืœืชื—ื–ืง ืื•ืชื• ื™ืฆื˜ืจืš ืœืขื‘ื•ื“ ืžืื•ื“ ืงืฉื”. ื•ืื ื™ ืžื‘ื™ืŸ ืืช ื”ื—ืฉื™ื‘ื”, ื” AI ื›ืชื‘ ืชื ื• ืœ AI ืœืชื—ื–ืง. ืื‘ืœ ื” AI ืœื ื›ืชื‘. ื–ื” ืืชื” ื›ืชื‘ืช. ื•ื‘ื›ืœ ืžืงืจื” ื” AI ืœื ื™ืฆืœื™ื— ืœืชื—ื–ืง ืืช ื–ื”. ืžืคืชื—ื™ื ืขื•ื‘ื“ื™ื ืžืื•ื“ ืงืฉื” ื›ื“ื™ ืฉื ื•ื›ืœ ืœื›ืชื•ื‘ ืงื•ื“ ืฉื ื™ืชืŸ ืœืชื—ื–ื•ืงื”. ื‘ืื•ืคืŸ ืขืงื‘ื™ ืื ื—ื ื• ื—ื•ืœืžื™ื ืขืœ ื”ื™ื•ื ืฉื ื•ื›ืœ ืœื›ืชื•ื‘ "ืคืขื ืื—ืช" ืงื•ื“ ืฉืขื•ื‘ื“ ื•ืœื ืœืชื—ื–ืง ืื•ืชื•, ื–ื” ื”ื™ื” ืขื ืชื›ื ื•ืช ืžื•ื ื—ื” ืขืฆืžื™ื ื›ืฉื—ืฉื‘ื ื• ืฉื ื•ื›ืœ ืœื”ื—ืœื™ืฃ ืจืง ืืช ื”ืžื™ืžื•ืฉ ื•ืœืฉืžืจ ืืช ื”ืžืžืฉืง, ื–ื” ืงืจื” ืขื ืžื™ืงืจื• ืกืจื‘ื™ืกืก ื›ืฉืงื™ื•ื•ื™ื ื• ืฉื ื•ื›ืœ ืœืฉื›ืชื‘ ืจืง ืกืจื‘ื™ืก ื‘ื•ื“ื“ ื›ืœ ืคืขื ืฉื”ื•ื ื™ืชื™ื™ืฉืŸ, ื–ื” ืงืจื” ืขื ืฉืคื•ืช ื“ื™ื ืžื™ื•ืช ื›ืฉื”ื™ื™ื ื• ื‘ื˜ื•ื—ื™ื ืฉืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื”ืกืชื“ืจ ื‘ืœื™ ื”ื’ื“ืจื•ืช ื˜ื™ืคื•ืกื™ื ื•ื–ื” ืงื•ืจื” ืขื›ืฉื™ื• ืขื ื” AI. ื›ืŸ AI ื™ื›ื•ืœ ืœืžืžืฉ ืžื”ืจ ืงื˜ืขื™ ืงื•ื“ ืฉืœื™ ื”ื™ื” ืœื•ืงื— ื™ื•ืชืจ ื–ืžืŸ ืœื›ืชื•ื‘. ื›ืŸ AI ืขื•ื–ืจ ืœื™ ืœืœืžื•ื“ ื˜ื›ื ื•ืœื•ื’ื™ื•ืช ื—ื“ืฉื•ืช ื•ืœื”ื‘ื™ืŸ ืื™ืš ื“ื‘ืจื™ื ืขื•ื‘ื“ื™ื ืžื”ืจ ื™ื•ืชืจ. ื•ื›ืŸ AI ื™ื›ื•ืœ ืœืขื–ื•ืจ ืœื™ ื›ืฉืื ื™ ืฉื•ื›ื— ืชื—ื‘ื™ืจ ืกืคืฆื™ืคื™ ืฉืœ ืžืฉื”ื• ืฉื›ืชื‘ืชื™ ืคืขื ืื—ืจื•ื ื” ืœืคื ื™ ืฉื ื” ื•ืื ื™ ื™ื•ื“ืข ืื™ืš ื–ื” ืฆืจื™ืš ืœื”ื™ืจืื•ืช ื‘ื’ื“ื•ืœ. ืื‘ืœ ื›ืฉืื ื™ ื ื•ืชืŸ ืœ AI ืœื›ืชื•ื‘ ืงื•ื“ ืฉืื ื™ ืœื ืžื‘ื™ืŸ ื–ื” ืœื ื” AI ืฉื™ืฆื˜ืจืš ืื• ื™ื•ื›ืœ ืœืชื—ื–ืง ืื•ืชื•. ืžื” ื›ืŸ? 1. ืžืชื›ื ื ื™ื ื‘ืขืฆืžื ื• ืื™ืš ื“ื‘ืจื™ื ืฆืจื™ื›ื™ื ืœื”ื™ืจืื•ืช ื•ืœืขื‘ื•ื“ (ื”ืืจื›ื™ื˜ืงื˜ ื–ื” ืืชื”). 2. ื ื•ืชื ื™ื ืœ AI ืœืžืœื ืžื™ืžื•ืฉื™ื, ื•ืขื•ื‘ืจื™ื ืขืœ ื”ืงื•ื“ ืฉืœื• ืœื•ื•ื“ื ืฉืื ื—ื ื• ืžื‘ื™ื ื™ื ืžื” ืฉื›ืชื•ื‘ ืฉื. 3. ืžื ืงื™ื ื•ืžืืจื’ื ื™ื ืžื—ื“ืฉ ืืช ื”ืงื•ื“ ืœืžื‘ื ื™ื ื”ื’ื™ื•ื ื™ื™ื ืฉืื ื—ื ื• ื ื•ื›ืœ ืœืชื—ื–ืง ืื—ืจื™ ืฉื” AI ืžืกื™ื™ื ืœื™ืจื•ืช. ื—ืฉื‘ื• ืขืœ ื›ืœ ืžื•ืฆืจื™ ื”ืชื•ื›ื ื” ืฉืืชื ืื•ื”ื‘ื™ื - ืืœื” ืžืขืจื›ื•ืช ืืžื™ื ื•ืช ื•ืžื”ื™ืจื•ืช ืฉื ืขื™ื ืœืขื‘ื•ื“ ืื™ืชืŸ. ื–ื” ืกื•ื’ ื”ืžืขืจื›ื•ืช ืฉื ืฉืžื— ืœืงื‘ืœ.

ToCode
1 417
ืชื’ื™ืช style ื‘ืชื•ืš ืงื•ืžืคื•ื ื ื˜ื•ืช ื”ืื ืจื™ืืงื˜ ื”ื—ืœื™ื˜ื• ื‘ื’ื™ืจืกื” 19 ืœื”ื™ืœื—ื ื‘ื˜ื™ื™ืœื•ื•ื™ื ื“? ืื ื™ ืžืงื•ื•ื” ืฉืœื, ืื‘ืœ ื‘ื›ืœ ืžืงืจื” ื”ื ื” ืคื™ืฆ'ืจ ืžืขื ื™ื™ืŸ ืฉื”ื ื‘ื ื• ืฉื™ื›ื•ืœ ืœืขื–ื•ืจ ืœื›ื ืœืกื“ืจ ื”ื’ื“ืจื•ืช ืขื™ืฆื•ื‘ ื‘ืืชืจื™ื ืคืฉื•ื˜ื™ื. ืื™ืš ื–ื” ืขื•ื‘ื“ ืจื™ืืงื˜ ืžืืคืฉืจ ืœื ื• ืœื›ืชื•ื‘ ืชื’ื™ืช style ื‘ืชื•ืš JSX ืฉืœ ืงื•ืžืคื•ื ื ื˜ื” ื›ื“ื™ ืœืฉืชื•ืœ ืงื•ื“ CSS ื‘ืชื•ืจ Inline Style ื‘ืžืกืžืš. ื ื–ื›ื•ืจ ืฉืื ื‘ืชื•ืš HTML ืื ื—ื ื• ื›ื•ืชื‘ื™ื ืชื’ื™ืช style, ืืคื™ืœื• ืžื—ื•ืฅ ืœ head, ืื– ื”ื“ืคื“ืคืŸ ืขื“ื™ื™ืŸ ืžืชื™ื—ืก ืœื›ืœืœื™ ื” CSS ืฉืžื•ื’ื“ืจื™ื ืฉื. ื”ืงื•ื“ ื”ื‘ื ื‘ืชื•ืš ืงื•ืžืคื•ื ื ื˜ื” ืžื•ืกื™ืฃ ืชื’ื™ืช style ื›ื–ื•:
export default function Main() {
  return (
    <>
      <style>
        {\
          h1 { color: red }
          body { background: yellow; }
          a { color: blue }
          \}
      </style>
      <h1>Hello World</h1>
    </>
  )
}
ื”ืคืขื™ืœื• ืืช ื”ืงื•ืžืคื•ื ื ื˜ื” ื‘ืชื•ืš ืขืžื•ื“ ื•ืชื•ื›ืœื• ืœืจืื•ืช ืืช ืชื’ื™ืช ื” style ื•ืืช ื”ืฉืคืขืชื” ืขืœ ื”ืฆื‘ืขื™ื ื‘ืขืžื•ื“. ื”ื‘ืขื™ื” ืขื ื”ื“ื‘ืจ ื”ื–ื” ื”ื™ื ืฉืื ืชื’ื™ืช style ื›ืชื•ื‘ื” ื‘ืชื•ืš ืงื•ืžืคื•ื ื ื˜ื” ืื– ื”ื™ื ืชื•ืคื™ืข ืžืกืคืจ ืคืขืžื™ื ื‘ืขืžื•ื“ (ืœืคื™ ืžืกืคืจ ื”ืคืขืžื™ื ืฉื”ืงื•ืžืคื•ื ื ื˜ื” ืžื•ื“ื‘ืงืช ืœืขืžื•ื“). ืœื›ืŸ ืจื™ืืงื˜ ืžืืคืฉืจ ืœื ื• ืœื”ื’ื“ื™ืจ ืžื–ื”ื” ืœื›ืœ ืชื’ื™ืช style ื•ืื ืื ื—ื ื• ืžื’ื“ื™ืจื™ื ืžื–ื”ื” ื•ืงื“ื™ืžื•ืช ืœืชื’ื™ืช style ืื– ืจื™ืืงื˜ ื™ืขื‘ื™ืจ ืืช ื”ืชื’ื™ืช ืœ head ืฉืœ ื”ืžืกืžืš. ืื ืœืฉืชื™ ืชื’ื™ื•ืช style ืื™ืคืฉื”ื• ื‘ืขืžื•ื“ ื™ืฉ ืืช ืื•ืชื• ืžื–ื”ื” ืื– ืจืง ืื—ืช ืžื”ืŸ ืชื•ืคื™ืข ื‘ืจืืฉ ื”ืขืžื•ื“. ืื ื—ื ื• ืžื’ื“ื™ืจื™ื ืžื–ื”ื” ืขื ืžืืคื™ื™ืŸ href ื•ืกื“ืจ ืงื“ื™ืžื•ื™ื•ืช ืขื ืžืืคื™ื™ืŸ precedence:
export default function Main() {
  return (
    <>
      <style href="main" precedence="medium">
        {\
          h1 { color: red }
          body { background: yellow; }
          a { color: blue }
          \}
      </style>
      <h1>Hello World</h1>
    </>
  )
}
ืžื” ืืคืฉืจ ืœื‘ื ื•ืช ืขื ื–ื” ืื ืืชื ืžืขื“ื™ืคื™ื ืœืขื‘ื•ื“ ืขื CSS ื’ืœื•ื‘ืืœื™ ืื‘ืœ ืœื ื™ื•ื“ืขื™ื ืžืจืืฉ ืื™ื–ื” ืงื•ืžืคื•ื ื ื˜ื•ืช ื™ื”ื™ื• ื‘ืขืžื•ื“ ื•ืœื ืจื•ืฆื™ื ืœื”ื•ืกื™ืฃ CSS ืœืขืžื•ื“ ืฉื‘ืกื•ืฃ ืœื ื™ืฉืชืžืฉื• ื‘ื• ืชื•ื›ืœื• ืœื”ืฉืชืžืฉ ื‘ืžื ื’ื ื•ืŸ style ืฉืœ ืจื™ืืงื˜ ื›ื“ื™ ืœืฆืžืฆื ื›ืคื™ืœื•ื™ื•ืช ื•ืœื”ื•ืจื™ื“ CSS ืฉืื™ื ื• ื‘ืฉื™ืžื•ืฉ. ื›ืš ื–ื” ื™ืขื‘ื•ื“: 1. ื›ืชื‘ื• ืงื•ืžืคื•ื ื ื˜ื•ืช ื‘ืกื™ืกื™ื•ืช ืœื“ื•ื’ืžื” ื›ืคืชื•ืจ, ื•ื‘ื”ืŸ ื”ื’ื“ื™ืจื• ืืช ื” CSS ืฉื”ืŸ ืฆืจื™ื›ื•ืช ื‘ืชื•ืจ ืชื’ื™ืช style ืขื href ื•ืกื“ืจ ืงื“ื™ืžื•ืช. 2. ื‘ืงื•ืžืคื•ื ื ื˜ื•ืช ื”ื’ื“ื•ืœื•ืช ื™ื•ืชืจ ืฉืœื›ื ื”ืฉืชืžืฉื• ื‘ืงื•ืžืคื•ื ื ื˜ื•ืช ื”ื‘ืกื™ืกื™ื•ืช ื›ื›ืœ ืฉืชืจืฆื•. 3. ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ ื›ืœ ื›ืœืœื™ ื”ืขื™ืฆื•ื‘ ืฉืžื’ื™ืขื™ื ืžื”ืงื•ืžืคื•ื ื ื˜ื•ืช ื”ื‘ืกื™ืกื™ื•ืช ื™ื™ื›ื ืกื• ืœืขืžื•ื“ ื‘ืชื•ืจ Inline Style. ืื™ืŸ ื‘ืขื™ื” ื›ืฉื˜ื•ืขื ื™ื ืงื•ืžืคื•ื ื ื˜ื” ื‘ืกื™ืกื™ืช ืžืกืคืจ ืคืขืžื™ื ื›ื™ ืจื™ืืงื˜ ื™ืžื—ืง ืืช ื›ืœืœ ื” CSS ื”ื›ืคื•ืœ. ืืจื›ื™ื˜ืงื˜ื•ืจื” ื–ื• ืฉืœ ื›ืชื™ื‘ืช ื›ืœ ืงื•ื“ ื” CSS ื‘ืงื•ืžืคื•ื ื ื˜ื•ืช ื‘ืกื™ืก ื”ื™ื ื“ืจืš ื˜ื•ื‘ื” ืœื’ืฉืช ืœืขื™ืฆื•ื‘ ืงื•ืžืคื•ื ื ื˜ื•ืช ื‘ืจื™ืืงื˜ ื‘ื›ืœ ืžืงืจื”. ืื™ืฉื™ืช ืื ื™ ืžืขื“ื™ืฃ ืœืขืฆื‘ ืืช ืงื•ืžืคื•ื ื ื˜ื•ืช ื”ื‘ืกื™ืก ื‘ืืžืฆืขื•ืช Tailwind ื›ื™ ื›ืš ืื ื™ ืžื‘ื˜ื™ื— ืฉืื™ืŸ ื”ืชื ื’ืฉื•ืช ื‘ืžื–ื”ื™ื ืื• ื‘ืฉืžื•ืช ืงืœืืกื™ื ืฉื‘ื—ืจืชื™.

ToCode
1 417
ื˜ื™ืค ื’ื™ื˜ื”ืื‘: ืฉื™ื ื•ื™ Base ื‘ Pull Request ืฉืœื—ืชื Pull Request ืœืคืจื•ื™ืงื˜ ืฉื–ื– ืžื”ืจ. ืขื“ ืฉื”ื‘ืŸ ืื“ื ื‘ืฆื“ ื”ืฉื ื™ ื”ืกืคื™ืง ืœืฉืœื•ื— ื”ืขืจื•ืช ื”ืฉื™ื ื•ื™ ืฉืœื›ื ืขื›ืฉื™ื• 4 ื’ื™ืจืกืื•ืช ืžืื—ื•ืจ. ื‘ืฉื‘ื™ืœ ืฉื™ื”ื™ื” ืžืกื•ื“ืจ ืืชื ืขื•ืฉื™ื ืจื™ื‘ื™ื™ืก ืœื’ื™ืจืกื” ื”ื›ื™ ื—ื“ืฉื” ื• - ื”ืคืชืขื”, ื’ื™ื˜ื”ืื‘ ืžืฆื™ื’ ืืช ื” diff ื‘ื™ืŸ ื”ื’ื™ืจืกื” ืฉืœื›ื ืœื’ื™ืจืกื” ืžื•ืœื” ื™ืฆืจืชื ืืช ื” Pull Request ื›ืฉื”ืชื—ืœืชื. ื›ืœื•ืžืจ ื›ืœ ื”ืฉื™ื ื•ื™ื™ื ื‘ main ืฉืงืจื• ื‘ืื•ืชื 4 ืงื•ืžื™ื˜ื™ื ืฉื ื›ื ืกื• ืืœื™ื›ื ืœื’ื™ืจืกื” (ื›ื™ ืขืฉื™ืชื ืืช ื”ืจื™ื‘ื™ื™ืก) ืžื•ืคื™ืขื™ื ืขื›ืฉื™ื• ื›ื—ืœืง ืžื” diff ืฉืœ ื”ื’ื™ืจืกื” ืฉืœื›ื ื‘ Pull Request. ืžื” ืขื•ืฉื™ื? ื”ืคื™ืชืจื•ืŸ ื”ื•ื ื‘ื›ืคืชื•ืจ ืงืฆืช ืžื‘ืœื‘ืœ ื‘ืžืžืฉืง ืฉืœ ื’ื™ื˜ื”ืื‘ ื‘ืžืกืš Pull Request: ืœื•ื—ืฆื™ื ืขืœ Edit ื•ืื– ืฉื ื”ืขื ืฃ ืืœื™ื• ืืชื ืจื•ืฆื™ื ืœืฉืœื‘ ืืช ื”ื’ื™ืจืกื” ื”ื•ืคืš ืœืชื™ื‘ืช ื‘ื—ื™ืจื”. ืืชื ืœื•ื—ืฆื™ื ืขืœ ื”ืชื™ื‘ื”, ื‘ื•ื—ืจื™ื ื‘ืืคืฉืจื•ื™ื•ืช ืฉื ืคืชื—ื• ืืช ืื•ืชื• ืขื ืฃ ืฉื›ื‘ืจ ืžืกื•ืžืŸ ื•ืื– ืžื•ืคื™ืข ื“ื™ืืœื•ื’ ื—ื“ืฉ ืขื ื”ื›ื•ืชืจืช > Are you sure you want to change the base? ืจื’ืข, ืžื”? ืœื ืฉื™ื ื™ืชื™ ื›ืœื•ื ืจืง ื‘ื—ืจืชื™ ืืช ืžื” ืฉื›ื‘ืจ ื”ื™ื” ืžืกื•ืžืŸ ืœื? ืœื ื‘ื“ื™ื•ืง. ื‘ืจื’ืข ืฉื™ื•ืฆืจื™ื Pull Request ื’ื™ื˜ื”ืื‘ ืžื“ื‘ื™ืง ืืช ื” PR ืฉืœื›ื ืœืงื•ืžื™ื˜ ืžืกื•ื™ื, ืืคื™ืœื• ืฉื‘ื—ืจืชื ืœืฉืœื‘ ืืช ื” PR ืœืชื•ืš ืขื ืฃ. ื›ืฉื’ื™ื˜ื”ืื‘ ืžืจืื” ื‘ืžืžืฉืง ืฉืืชื ืžื ืกื™ื ืœืฉืœื‘ ืืช ื” PR ืœืชื•ืš base: main ื”ื•ื ื‘ืขืฆื ืžืชื›ื•ื•ืŸ ืฉืืชื ืžื ืกื™ื ืœืฉืœื‘ ืœืชื•ืš ืขื ืฃ main ื‘ืงื•ืžื™ื˜ ืžืกื•ื™ื (ื•ืงืฆืช ื™ืฉืŸ). ืฉื™ื ื•ื™ ืž main ืœ main ื”ื•ื ื‘ืขืฆื ืฉื™ื ื•ื™ ื”ืงื•ืžื™ื˜ ืฉื‘ื™ื—ืก ืืœื™ื• ื ื•ืฆืจ ื” PR ืœืงื•ืžื™ื˜ ื”ืขื“ื›ื ื™ ื‘ื™ื•ืชืจ ื‘ืขื ืฃ main. ื‘ืฆื•ืจื” ื›ื–ืืช ืจืฉื™ืžืช ื”ืงื•ืžื™ื˜ื™ื ื•ื”ืฉื™ื ื•ื™ื™ื ืชืชื—ื™ืœ ื‘ืงื•ืžื™ื˜ ื”ืื—ืจื•ืŸ ื‘ main ื•ืœื ื‘ืงื•ืžื™ื˜ ื”ืžืงื•ืจื™ ืžืžื ื• ื ื•ืฆืจ ื” PR.

ToCode
1 417
ืžืชื™ ื•ืื™ืš ืื ื™ ืžืฉืชืžืฉ ื‘ AI ืฉืืœื” ืืžื™ืชื™ืช - ืืชื ืžืจื’ื™ืฉื™ื ืฉืืชื ืžืจื’ื™ืฉื™ื ื™ื•ืชืจ ืžื“ื™ ืื• ืคื—ื•ืช ืžื“ื™ ื‘ AI? ื•ืื ืคื—ื•ืช ืžื“ื™, ืœืžื” ืืชื ืœื ืžืฉืชืžืฉื™ื ื‘ื• ื™ื•ืชืจ? ื”ื ื” ืจืฉื™ืžืช ื”ืžืงืจื™ื ื‘ื”ื ืื ื™ ืžืฉืชืžืฉ ื‘ AI ื‘ืžื”ืœืš ื”ืคื™ืชื•ื— ื• Best Practices ืฉืžืฆืืชื™ ืœื›ืœ ืžืงืจื”: 1. ื›ืฉืื ื™ ืœื ื™ื•ื“ืข ืขื“ื™ื™ืŸ ืื™ืš ื“ื‘ืจื™ื ืขื•ื‘ื“ื™ื - ืื ืื ื™ ืฆืจื™ืš ืœื‘ื ื•ืช ืžืฉื”ื• ืฉืื ื™ ืขื“ื™ื™ืŸ ืœื ื™ื•ื“ืข ืื™ืš ื”ื•ื ืขื•ื‘ื“ ืื ื™ ืœืคืขืžื™ื ืืœืš ืœ AI ื›ื“ื™ ืœืงื‘ืœ ืžืกืคืจ ืืคืฉืจื•ื™ื•ืช ื•ืœื”ื‘ื™ืŸ ื‘ื’ื“ื•ืœ ืขืœ ืžื” ืฆืจื™ืš ืœืงืจื•ื. ืœืžื“ืชื™ ืœื”ื™ื–ื”ืจ ืžื”ืชืฉื•ื‘ื•ืช ื”ืจืืฉื•ื ื•ืช ืฉืœ ื” AI ื›ื™ ื”ื•ื ืœื ื™ื•ื“ืข ืœื‘ื—ื•ืจ ืžื” ื”ื“ืจืš ื”ื˜ื•ื‘ื” ืื• ื”ืžื•ื“ืจื ื™ืช ื‘ื™ื•ืชืจ ืœืคืชื•ืจ ื‘ืขื™ื”, ืื‘ืœ ื”ื•ื ื›ืŸ ื™ื›ื•ืœ ืœืชืช ืกืงื™ืจื” ืฉืœ ืžื•ืฉื’ื™ ืžืคืชื— ืฉืงืฉื•ืจื™ื ืœื‘ืขื™ื”. ืœื“ื•ื’ืžื”, ืื ืื ื™ ืฆืจื™ืš ืœื”ื•ืฆื™ื ืžื™ื“ืข ืžื™ื•ื˜ื™ื•ื‘ ืื‘ืœ ืœื ืขื‘ื“ืชื™ ืืฃ ืคืขื ืขื ื” API ืฉืœื”ื ืื ื™ ื™ื›ื•ืœ ืœื‘ืงืฉ ืžื” AI ื”ืกื‘ืจ ื›ืœืœื™ ืื™ืš ื–ื” ืขื•ื‘ื“ ื•ื’ื ื“ื•ื’ืžืื•ืช ืงื•ื“ (ื•ืจืง ื–ื•ื›ืจ ืœื”ืžืฉื™ืš ืœืงืจื•ื ืžื—ื•ืฅ ืœ AI ื‘ืฉื‘ื™ืœ ืœื“ื™ื™ืง ืืช ื”ื“ื‘ืจื™ื). 2. ื›ืฉืื ื™ ื›ื•ืชื‘ ืงื•ื“ ื•ื™ื•ื“ืข ืžื” ืื ื™ ืจื•ืฆื” - ืื ืื ื™ ื‘ื•ื ื” ืกื›ื™ืžื” ืœื“ืจื™ื–ืœ ื•ืื ื™ ื™ื•ื“ืข ืื™ื–ื” ื˜ื‘ืœื” ืื ื™ ืจื•ืฆื” ื•ืื™ื–ื” ืขืžื•ื“ื•ืช ื–ื” ื–ืžืŸ ืžื•ืฉืœื ืœืœื—ื•ืฅ Command I ื‘ VS Code ื•ืœื‘ืงืฉ ืž Copilot ืœื›ืชื•ื‘ ืืช ื”ื‘ืœื•ืง ืฉืžื•ืกื™ืฃ ืืช ื”ื˜ื‘ืœื” ืœืกื›ื™ืžื”, ื•ื›ืš ื—ื•ืกืš ืœื™ ืœื‘ื“ื•ืง ืžื” ื”ืฉื ื”ืžื“ื•ื™ืง ืฉืœ ื”ืคื•ื ืงืฆื™ื”. 3. ื›ืฉืื ื™ ืฆืจื™ืš ืœืฉื ื•ืช ืคื•ืจืžื˜ ืฉืœ ืžื™ื“ืข ืื• ืื ื™ืฉ ืœื™ JSON ื•ืฆืจื™ืš ืœื‘ื ื•ืช ืžืžื ื• ืžืžืฉืง ืœื˜ื™ื™ืคืกืงืจื™ืคื˜, ืื• ื›ืฉืฆืจื™ืš ืœืขื˜ื•ืฃ API ื‘ืงื•ื“ ืฉืœื™ ื•ืœื”ื•ืกื™ืฃ ื˜ื™ืคื•ืกื™ื. 4. ื›ืฉืื ื™ ื›ื•ืชื‘ ืงื•ื“ ืฉืื ื™ ื™ื•ื“ืข ืฉืื–ืจื•ืง ืจืง ื‘ืฉื‘ื™ืœ ืœืจืื•ืช ืื™ืš ื“ื‘ืจื™ื ื ืจืื™ื, ืœืžืฉืœ ืื ื™ ื™ื›ื•ืœ ืœื”ื™ืขื–ืจ ื‘ AI ื›ื“ื™ ืœื›ืชื•ื‘ ื‘ืจ ืขืœื™ื•ืŸ ืœืื™ื–ื” ืžืžืฉืง ื’ืจืคื™ ื•ื›ืš ืœื”ื‘ื™ืŸ ืžื”ืจ ืื ื–ื” ื‘ื›ืœืœ ืžืฉื”ื• ืฉืื ื™ ืจื•ืฆื”. ืื ื”ืฉืชื›ื ืขืชื™ ืฉืื ื™ ืจื•ืฆื” ืืช ื”ืคื™ืฆ'ืจ ื‘ื“ืจืš ื›ืœืœ ืื–ืจื•ืง ืืช ื”ืงื•ื“ ื”ืจืืฉื•ื ื™ ืฉื” AI ื™ืฆืจ, ืื‘ื ื” "ืžืกื’ืจืช" ืœืงื•ื“ ื•ืืชืŸ ืœ AI ืœืžืœื ืืช ื”ืงื•ื“ ื‘ืชื•ืš ื”ืžืกื’ืจืช. 5. ื‘ืื•ืคืŸ ื›ืœืœื™ ืงื•ื“ ืืžื™ืชื™ ืฉ AI ื›ื•ืชื‘ ืœืชื•ืš ื”ืžืขืจื›ืช ื™ืขื‘ื•ื“ ื”ืจื‘ื” ื™ื•ืชืจ ื˜ื•ื‘ ืื ืื ื™ ื ื•ืชืŸ ืœื• ืœืžืœื ืงื•ื“ ื‘ืชื•ืš ืžืกื’ืจืช ื•ืœื ืœื‘ื ื•ืช ืืช ื”ืžืกื’ืจืช ื‘ืขืฆืžื•. 6. ื›ืฉืื ื™ ื›ื•ืชื‘ ืงื•ื“ ืœื”ื™ื‘ื˜ ืฉืื™ื ื• ืœื™ื‘ืชื™ ื‘ืžืขืจื›ืช ื•ืื ื™ ื‘ืกื“ืจ ืขื ื–ื” ืฉื”ืงื•ื“ ืœื ื™ื”ื™ื” ืžืœื”ื™ื‘ ืื• ื ื™ืชืŸ ืœืชื—ื–ื•ืงื”, ืœื“ื•ื’ืžื” ืื ื™ ืžื•ื›ืŸ ืœืชืช ืœ AI ืœื›ืชื•ื‘ Github Action ืฉืžืจื™ืฅ ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช. ืื ืชื”ื™ื” ื‘ืขื™ื” ืžืžื™ืœื ืืคืฉืจ ืœื‘ืงืฉ ืž AI ืœื›ืชื•ื‘ ืื—ื“ ื—ื“ืฉ ื•ืœื–ืจื•ืง ืืช ื”ืงื•ื‘ืฅ ื”ืงื™ื™ื. ื›ืœ ืขื•ื“ ืื™ืŸ ืชืœื•ื™ื•ืช ื”ื›ืœ ื‘ืกื“ืจ. 7. ื›ืชื™ื‘ืช ืชื™ืขื•ื“, ื‘ื“ื™ืงื•ืช ื•ื”ื•ื“ืขื•ืช ืงื•ืžื™ื˜. 8. ืงื‘ืœืช Code Review - ืœืคื ื™ ืงื•ืžื™ื˜ ืื ื™ ืžืคืขื™ืœ git diff ื•ืฉื•ืœื— ืืช ื”ืคืœื˜ ืœ AI ื›ื“ื™ ืœืงื‘ืœ ืกื™ื›ื•ื ืžืกื•ื“ืจ ืฉืœ ืžื” ืฉืขืฉื™ืชื™ ื•ื”ืฆืขื•ืช ืœืฉื™ืคื•ืจ ืื• ืชื™ืงื•ื ื™ื. ื•ืžื” ืืชื›ื? ื‘ืื™ื–ื” ืžืฆื‘ื™ื ืืชื ืžืฉืชืžืฉื™ื ืื• ืœื ืžืฉืชืžืฉื™ื ื‘ AI? ื•ืื ื”ื™ื™ืชื ืจื•ืฆื™ื ืœื”ืฉืชืžืฉ ื™ื•ืชืจ, ืžื” ื”ืกื™ื‘ื•ืช ื”ืžืจื›ื–ื™ื•ืช ื‘ื’ืœืœืŸ ืืชื ืขื“ื™ื™ืŸ ืžืงื•ื“ื“ื™ื ื‘ืœืขื“ื™ื•? ื .ื‘. ื”ื’'ืžื™ื ื™ ื”ื—ื“ืฉ ื‘ืืžืช ืžื˜ื•ืจืฃ.

ToCode
1 417
def step
    @guard.step
    if @matrix[@guard.coords] == '#'
      @guard.back
      @guard.turn
    end

    @time_loop = true if @visited.include?([@guard.coords, @guard.heading])
    @visited << [@guard.coords, @guard.heading] if @matrix.key?(@guard.coords)
  end

  def run
    step_count = 0
    turn_count = 0
    while (@matrix.key?(@guard.coords) && !@time_loop) do
      guard_before = @guard.coords
      step
      step_count += 1
      turn_count += 1 if @guard.coords == guard_before
    end
    
    # Return important values - makes testing easier
    [@time_loop, step_count, turn_count]
  end
  
  def reset
    @time_loop = false
    @visited = Set.new
    @guard = Guard.new(Complex(@guard_start[0], @guard_start[1]))
    @visited << [@guard.coords, @guard.heading]
  end
end

def find_time_loops(room)
  start = room.visited.first
  room.run
  
  # Extract the coordinates of visited positions, excluding the start
  visited_positions = (room.visited - Set.new([start])).map(&:first).to_set
  
  # Find positions that cause time loops
  time_loops = visited_positions.select do |coords|
    original_value = room.matrix[coords]
    room.matrix[coords] = '#'
    room.reset
    result = room.run.first  # Check if a time loop occurred
    
    # Restore the original value and reset the room
    room.matrix[coords] = original_value
    room.reset
    
    result
  end
  
  time_loops.length
end

* Main execution *
room = Room.new
puts find_time_loops(room)

ToCode
1 417
visited << [guard.coords, guard.heading]
  end
ื‘ืฉื‘ื™ืœ ื›ืœ ื ื™ืกื•ื™ ื™ืฆืจืชื™ Room ื—ื“ืฉ ื•ื‘ื• ืฉืžืชื™ ืืช ื”ืžื›ืฉื•ืœ ื‘ื ืงื•ื“ื” ืื—ืจืช ืขืœ ื”ืžืกืœื•ืœ. ื”ื‘ืขื™ื” ื”ื™ื ืฉื™ืฆื™ืจืช Room ื”ื™ืชื” ื›ืจื•ื›ื” ื‘ืงืจื™ืืช ื›ืœ ืงื•ื‘ืฅ ื”ืงืœื˜ ื•ื‘ื ื™ื™ืช ื”ืžื˜ืจื™ืฆื” ื”ืžืœืื”, ื•ื–ื• ืคืขื•ืœื” ื›ื‘ื“ื”. ื›ืฉื ื™ืกื™ืชื™ ืœื”ืจื™ืฅ ืืช ื”ืงื•ื“ ื”ื•ื ืœื ื”ื’ื™ืข ืœืกื™ื•ื, ื•ืื– ืื ื™ ื ื›ื ืกืชื™ ืœืœื•ืœืื” ืื™ื ืกื•ืคื™ืช ืœื—ืคืฉ ืื•ืคื˜ื™ืžื™ื–ืฆื™ื•ืช. ื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ ื•ื‘ืขื–ืจืช ืคื™ื–ื•ืจ ื ื›ื•ืŸ ืฉืœ ื”ื•ื“ืขื•ืช ื”ื“ืคืกื” ื‘ืงื•ื“ ื’ื ืืฆืœื™ ื ืคืœ ื”ืืกื™ืžื•ืŸ ื•ืจืื™ืชื™ ืฉืœื ืฆืจื™ืš ืœื”ืชื—ื™ืœ ืœื’ืžืจื™ ืžืืคืก ื‘ืฉื‘ื™ืœ ืœื‘ื“ื•ืง ื›ืœ ื ืงื•ื“ื” ืขืœ ื”ืžืกืœื•ืœ ื•ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ืื•ืชื” ืžื˜ืจื™ืฆื”. ื”ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉื‘ืจื” ืืช ื›ืœ ื” Object Oriented ืฉื ื™ืกื™ืชื™ ืœื›ืชื•ื‘ ืื‘ืœ ืืคืฉืจื” ืœืงื•ื“ ืœื”ื’ื™ืข ืœืชื•ืฆืื” ื‘ืชื•ืš ืคื—ื•ืช ืžื“ืงื” - ืœื ืžืœื”ื™ื‘ ืื‘ืœ ืžืกืคื™ืง ื˜ื•ื‘ ื‘ืฉื‘ื™ืœ ืœื”ืชืงื“ื. ื–ื” ื”ืงื•ื“:
require 'set'

class Guard
  attr_accessor :position, :heading
  def initialize(position)
    self.heading = -1 + 0i
    self.position = position
  end

  def step
    self.position = position + heading
  end

  def turn
    self.heading = Complex(heading.imag, -heading.real)
  end

  def back
    self.position = position - heading
  end

  def coords
    [position.real, position.imag]
  end
end

class Room
  attr_accessor :matrix, :guard, :visited, :time_loop, :guard_start

  def initialize()
    self.time_loop = false
    self.visited = Set.new
    self.matrix = File.read('input.txt').lines.each_with_index.flat_map do |line, line_index|
      line.chomp.split('').each_with_index.map do |char, column_index|
        if char == '^'
          self.guard_start = [line_index, column_index]
          self.guard = Guard.new(Complex(line_index, column_index))
          { [line_index, column_index] => '.' }
        else
          { [line_index, column_index] => char }
        end
      end
    end.reduce({}) {|acc, val| acc.merge(val) }
    visited << [guard.coords, guard.heading]
  end

  def step
    guard.step
    if matrix[guard.coords] == '#'
      guard.back
      guard.turn
    end

    self.time_loop = true if visited.include?([guard.coords, guard.heading])
    visited << [guard.coords, guard.heading] if matrix.key?(guard.coords)
  end

  def run
    step_count = 0
    turn_count = 0
    while (matrix.key?(guard.coords) && !time_loop) do
      guard_before = guard.coords
      step
      step_count += 1
      if guard.coords == guard_before
        turn_count += 1
      end
    end
  end
end

room = Room.new
start = room.visited.first
room.run

time_loops = (room.visited - Set.new([start])).map(&:first).to_set.filter do |coords|
  room.matrix[coords] = '#'
  room.run
  time_loop = room.time_loop

  room.time_loop = false
  room.matrix[coords] = '.'
  room.visited = Set.new
  room.guard = Guard.new(Complex(room.guard_start[0], room.guard_start[1]))

  time_loop
end

pp time_loops.length
ื•ื–ื” ืื—ืจื™ ืฉ Claude ืขื‘ืจ ืขืœื™ื• ื•ื”ืขื‘ื™ืจ ืืช ืœื•ื’ื™ืงืช ื”ืื™ืคื•ืก ืœืžืชื•ื“ื” ื‘ืชื•ืš Room (ื”ืฆืขื” ืฉืœ ืงืœื•ื“):
require 'set'

class Guard
  attr_accessor :position, :heading
  
  def initialize(position)
    @heading = -1 + 0i  # Using instance variables consistently
    @position = position
  end

  def step
    @position += @heading  # Using += for cleaner code
  end

  def turn
    @heading = Complex(@heading.imag, -@heading.real)
  end

  def back
    @position -= @heading  # Using -= for cleaner code
  end

  def coords
    [@position.real.to_i, @position.imag.to_i]  # Convert to integers to avoid floating point comparison issues
  end
end

class Room
  attr_accessor :matrix, :guard, :visited, :time_loop, :guard_start

  def initialize
    @time_loop = false
    @visited = Set.new
    parse_input_file
    @visited << [@guard.coords, @guard.heading]
  end
  
  def parse_input_file
    @matrix = {}
    File.readlines('input.txt', chomp: true).each_with_index do |line, line_index|
      line.chars.each_with_index do |char, column_index|
        coords = [line_index, column_index]
        if char == '^'
          @guard_start = coords
          @guard = Guard.new(Complex(line_index, column_index))
          @matrix[coords] = '.'
        else
          @matrix[coords] = char
        end
      end
    end
  end

ToCode
1 417
ืคื™ืชืจื•ืŸ Advent Of Code ื™ื•ื 6 ื‘ Ruby - ื”ื™ื•ื ืœื’ืžืจื™ ืœื ืจืื™ืชื™ ืืช ื–ื” ืชืจื’ื™ืœ ื™ื•ื 6 ืฉืœ Advent Of Code ื”ื–ื›ื™ืจ ืœื™ ืจืื™ื•ืŸ ืขื‘ื•ื“ื” ืžื”ืขื‘ืจ: ื”ืžืจืื™ื™ืŸ ืฉืืœ ืื•ืชื™ ืฉืืœื” ืงืœื” ื•ืฉื™ื“ืขืชื™ ืืช ื”ืชืฉื•ื‘ื” ืืœื™ื”, ืื‘ืœ ืžื›ืœ ืžื™ื ื™ ืกื™ื‘ื•ืช ื‘ืื•ืชื• ืจื’ืข ืฉืœ ื”ืจืื™ื•ืŸ ืœื ืจืื™ืชื™ ืืช ื–ื”. ืงืฉื” ืœื”ืกื‘ื™ืจ ืžื” ืขื‘ืจ ืœื™ ื‘ืจืืฉ ื‘ืื•ืชื• ื–ืžืŸ, ืื‘ืœ ืื ื™ ื–ื•ื›ืจ ื˜ื•ื‘ ืืช ื”ื•ื•ื“ืื•ืช ืฉื”ืจื’ืฉืชื™ ืœื’ื‘ื™ ื”ืงื•ืฉื™ ืฉืœ ื”ืฉืืœื” (ื‘ืื•ืชื• ืจื’ืข ื ืจืืชื” ืœื™ ืžืžืฉ ืžืกื•ื‘ื›ืช) ื•ืœื’ื‘ื™ ื—ื•ืกืจ ื”ื™ื›ื•ืœืช ืฉืœื™ ืœืคืชื•ืจ ืื•ืชื”. ืืคื™ืœื• ืฉื”ืžืจืื™ื™ืŸ ื ื™ืกื” ืœื“ื—ื•ืฃ ืื•ืชื™ ืœืคื™ืชืจื•ืŸ ื”ื“ื‘ืจ ื”ื™ื—ื™ื“ ืฉื™ื›ื•ืœืชื™ ืœื‘ืงืฉ ื”ื™ื” ืœื ืกื•ืช ืฉืืœื” ืื—ืจืช. ื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ ื”ืฆืœื—ืชื™ ืœืขื ื•ืช ืขืœ ืžืกืคื™ืง ืฉืืœื•ืช ืื—ืจื•ืช ื‘ืฉื‘ื™ืœ ืœืขื‘ื•ืจ ืืช ืื•ืชื• ืจืื™ื•ืŸ. ื‘ื›ืœ ืžืงืจื” ื›ืฉื”ืกืชื›ืœืชื™ ืขืœ ื”ื—ืœืง ื”ืฉื ื™ ืฉืœ ืชืจื’ื™ืœ ื™ื•ื 6 ื”ืจื’ืฉืชื™ ื‘ื“ื™ื•ืง ื‘ืื•ืชื” ืฆื•ืจื”. ื—ื™ืคืฉืชื™ ืื™ื ืกื•ืฃ ื“ืจื›ื™ื ื—ื›ืžื•ืช ืœืคืชื•ืจ ืืช ื”ื‘ืขื™ื”, ื›ืฉื”ืคื™ืชืจื•ืŸ ื”ืคืฉื•ื˜ ื”ื™ื” ืœื™ ืžื•ืœ ื”ืขื™ื ื™ื™ื ื›ืœ ื”ื–ืžืŸ. ื‘ื•ืื• ื ืจืื” ืืช ื–ื”. ื”ืืชื’ืจ ื ืชื•ื ื” ืžืคื” ื‘ืคื•ืจืžื˜ ื˜ืงืกื˜ื•ืืœื™ ืฉืื•ืคื™ื™ื ื™ ืœืืชื’ืจื™ Advent Of Code:
    ....#.....
    .........#
    ..........
    ..#.......
    .......#..
    ..........
    .#..^.....
    ........#.
    #.........
    ......#...
ืกื™ืžืŸ ื” ^ ืžื™ื™ืฆื’ ืฉื•ืžืจ ืฉืžืชืงื“ื ืœื›ื™ื•ื•ืŸ ืฉื”ื—ืฅ ืžืจืื” ื•ื”ืกื•ืœืžื™ื•ืช ื”ืŸ ืžื›ืฉื•ืœื™ื. ื›ืฉืฉื•ืžืจ ื ืชืงืœ ื‘ืžื›ืฉื•ืœ ื”ื•ื ืžืกืชื•ื‘ื‘ ื™ืžื™ื ื” ื•ื›ืฉื”ื•ื ื™ื•ืฆื ืžื”ืžืคื” ื”ื•ื ืžืกื™ื™ื ืืช ื”ืกื™ื•ืจ ืฉืœื•. ื—ืœืง 1 - ื”ืกื™ืžื•ืœื˜ื•ืจ ื”ืฉืืœื” ื”ืจืืฉื•ื ื” ื”ื™ืชื” ื‘ื›ืžื” ืžืฉื‘ืฆื•ืช ื”ื•ื ื™ื‘ืงืจ ื‘ืžื”ืœืš ื”ืกื™ื•ืจ. ื ื•, ืื ื—ื ื• ื™ื•ื“ืขื™ื ืœืงื•ื“ื“ ืื– ื ืคืชื— ืงื•ื‘ืฅ ืจื•ื‘ื™ ื•ื ื›ืชื•ื‘ ืกื™ืžื•ืœื˜ื•ืจ ืœืฆืขื“ื™ ื”ืฉื•ืžืจ:
require 'set'

class Guard
  attr_accessor :position, :heading
  def initialize(position)
    self.heading = -1 + 0i
    self.position = position
  end

  def step
    self.position = position + heading
  end

  def turn
    self.heading = Complex(heading.imag, -heading.real)
  end

  def back
    self.position = position - heading
  end

  def coords
    [position.real, position.imag]
  end
end

class Room
  attr_accessor :matrix, :guard, :visited

  def initialize()
    self.visited = Set.new
    self.matrix = File.read('input.txt').lines.each_with_index.flat_map do |line, line_index|
      line.chomp.split('').each_with_index.map do |char, column_index|
        if char == "^"
          self.guard = Guard.new(Complex(line_index, column_index))
          {[line_index, column_index] => '.' }
        else
          {[line_index, column_index] => char }
        end
      end
    end.reduce({}) {|acc, val| acc.merge(val) }
    self.visited << guard.coords
  end

  def step
    guard.step
    if matrix[guard.coords] == "#"
      guard.back
      guard.turn
    end
   
    visited << guard.coords if matrix.key?(guard.coords)
  end

  def run
    step while matrix.key?(guard.coords)
  end
end

room = Room.new
room.run

pp room.visited.length
ื•ื ื›ื•ืŸ ืงื•ื“ ืžื•ื ื—ื” ืขืฆืžื™ื ืžืจื’ื™ืฉ ืงืฆืช ืžื™ื•ืฉืŸ ื‘ 2025 ืื‘ืœ ื‘ื›ืœ ื–ืืช ืื ื—ื ื• ื‘ Ruby ื•ืžืฉื•ื ืžื” ืžื—ืœืงื” ืฉืžื™ื™ืฆื’ืช ืืช ื”ืฉื•ืžืจ ื ืจืืชื” ืœื™ ืจืขื™ื•ืŸ ื˜ื•ื‘ ื‘ืื•ืชื• ืจื’ืข. ื—ืœืง 2 - ื”ืืชื’ืจ ื‘ื—ืœืง ื”ืฉื ื™ ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื”ื™ื•ืช ื™ืฆื™ืจืชื™ื™ื ื•ืœื—ืคืฉ ืžืงื•ืžื•ืช ื‘ื”ื ื ื•ื›ืœ ืœื—ืกื•ื ืืช ื”ืฉื•ืžืจ ื›ื“ื™ ืœืชืงื•ืข ืื•ืชื• ื‘ืœื•ืœืื” ืื™ื ืกื•ืคื™ืช. ื”ื“ื•ื’ืžื” ืžื”ืกื™ืคื•ืจ ื”ื™ืชื” ืœืฉื™ื ืžื›ืฉื•ืœ ืžืžืฉ ืžืฉืžืืœ ืœื ืงื•ื“ืช ื”ื”ืชื—ืœื” ื•ืื– ืžืงื‘ืœื™ื ืืช ื”ืžืกืœื•ืœ ื”ืื™ื ืกื•ืคื™:
    ....#.....
    ....+---+#
    ....|...|.
    ..#.|...|.
    ....|..#|.
    ....|...|.
    .#.O^---+.
    ........#.
    #.........
    ......#...
ืื‘ืœ ื™ืฉ ืขื•ื“ ืืคืฉืจื•ื™ื•ืช ื•ื”ืžืฉื™ืžื” ื”ื™ื ืœืžืฆื•ื ืืช ื›ืœ ื”ืืคืฉืจื•ื™ื•ืช ืฉื™ืชืงืขื• ืืช ื”ืฉื•ืžืจ ื‘ืœื•ืœืื” ืื™ื ืกื•ืคื™ืช. ื•ืคื” ืื ื™ ืžื•ื“ื” ืฉืื ื™ ืงืฆืช ื ืชืงืขืชื™ ื‘ืœื•ืœืื” ืื™ื ืกื•ืคื™ืช - ื”ืจืขื™ื•ืŸ ื”ืจืืฉื•ืŸ ืฉืœื™ ื”ื™ื” ืคื™ืชืจื•ืŸ ื ืื™ื‘ื™, ื›ืœื•ืžืจ ืœืงื—ืช ืืช ื›ืœ ื”ื ืงื•ื“ื•ืช ื‘ืžืกืœื•ืœ, ืœื ืกื•ืช ืœืฉื™ื ืžื›ืฉื•ืœ ื‘ื›ืœ ื ืงื•ื“ื” ื•ืœืจืื•ืช ืื ื”ืฉื•ืžืจ ื ืชืงืข ื‘ืœื•ืœืื” ืื™ื ืกื•ืคื™ืช. ืžื” ืฉื”ื›ืฉื™ืœ ืื•ืชื™ ื”ื™ื” ืคื•ื ืงืฆื™ื™ืช ื” initialize ื‘ืงื•ื“ ืžื•ื ื—ื” ื”ืขืฆืžื™ื ื”ืžื•ืคืœื ืฉื›ืชื‘ืชื™:
  def initialize()
    self.time_loop = false
    self.visited = Set.new
    self.matrix = File.read('input.txt').lines.each_with_index.flat_map do |line, line_index|
      line.chomp.split('').each_with_index.map do |char, column_index|
        if char == '^'
          self.guard_start = [line_index, column_index]
          self.guard = Guard.new(Complex(line_index, column_index))
          { [line_index, column_index] => '.' }
        else
          { [line_index, column_index] => char }
        end
      end
    end.reduce({}) {|acc, val| acc.merge(val) }

ToCode
1 417
ื–ื” ืœื ืชื•ืจืžื•ืก ื”ื™ื• ื™ืžื™ื ืฉื‘ืฉื‘ื™ืœ ืœื–ื”ื•ืช ืคืจื— ื”ื™ื” ืฆืจื™ืš ืœืคืชื•ื— ืžื’ื“ื™ืจ ืฆืžื—ื™ื ื•ืœื—ืคืฉ ื‘ื™ืŸ ืชืžื•ื ื•ืช ื“ื”ื•ื™ื•ืช. ื”ื™ื•ื ื‘ืขื™ื“ืŸ ื” AI ืžืกืคื™ืง ืœืฆืœื ืืช ื”ืคืจื—, ืœืฉืื•ืœ ืืช ื”ื—ื‘ืจ ืžื” ื™ืฉ ื‘ืชืžื•ื ื” ื•ืœื”ื—ื–ื™ืง ืืฆื‘ืขื•ืช. ื›ืฉื”ื•ื ื›ื•ืชื‘ ืชื•ืจืžื•ืก ืขืœ ืชืžื•ื ื” ืฉืœ ื‘ืŸ ื—ืฆื‘ ื™ืงื™ื ืชื•ื ื™ ื–ืืช ืื—ืจื™ื•ืช ืฉืœื ื• ืœื–ื”ื•ืช ืืช ื”ื˜ืขื•ืช (ืจืง ื‘ืฉื‘ื™ืœ ืœืงื‘ืœ ืžืžื ื• ืื™ื–ื” "ืืชื” ืฆื•ื“ืง ืžืื•ื“!"). ื›ืฉืขื•ื‘ืจื™ื ืœืคื™ื™ืชื•ืŸ ืื™ืŸ ืœื• ื‘ืขื™ื” ืœื–ืจื•ืง ืœื™ ื‘ื‘ื™ื˜ื—ื•ืŸ ืืช ื”ืžื™ืžื•ืฉ ื”ื‘ื ืœื—ื™ืฉื•ื‘ ืกื“ืจืช ืคื™ื‘ื•ื ืืฆ'ื™ ื‘ืฉื•ืจื” ืื—ืช:
fibonacci = lambda n, a=0, b=1: [a := b, b := a + b][0] if n else None
ื ืจืื” ื™ื•ืคื™ ืื‘ืœ ื›ืžื• ื”ืชื•ืจืžื•ืก, ื”ืชื•ืฆืื” ืื™ื ื” ืžืกืคืจ ืžืกื“ืจืช ืคื™ื‘ื•ื ืืฆ'ื™. ื•ื’ื ื‘ืชื›ื ื•ืช ื”ื˜ืขื•ื™ื•ืช ื™ื›ื•ืœื•ืช ืœื”ื™ื•ืช ื™ื•ืชืจ ืขื“ื™ื ื•ืช, ื•ืคื” ื–ื” ืžืชื—ื™ืœ ืœื”ื™ื•ืช ืžื˜ืจื™ื“. ื”ื ื” ืขื•ื“ ืฉื ื™ ืžื™ืžื•ืฉื™ื ืฉืงื™ื‘ืœืชื™, ืชื—ื™ืœื”:
from functools import lru_cache

fib = lru_cache(None)(lambda n: n if n < 2 else fib(n-1) + fib(n-2))

print(fib(10))  # Output: 55
ื•ืื– ื”ืฆืขื” ื ื•ืกืคืช ืฉ"ืžืฉืชืžืฉืช ื‘ืื™ื˜ืจืฆื™ื•ืช ื›ื“ื™ ืœืฉืคืจ ื‘ื™ืฆื•ืขื™ื":
fib = lambda n, a=0, b=1: a if n == 0 else fib(n-1, b, a+b)

print(fib(10))  # Output: 55
ื•ืืชื ืฆื•ื“ืงื™ื, ืื™ืŸ ืคื” ืื™ื˜ืจืฆื™ื•ืช ื•ื‘ื”ืฉื•ื•ืื” ืœ LRU Cache ื’ื ืื™ืŸ ืคื” ืฉื™ืคื•ืจ ื‘ื™ืฆื•ืขื™ื. ืขื›ืฉื™ื• ื”ืกื™ืคื•ืจ ื”ื•ื ืœื ืชื•ืจืžื•ืกื™ื ื•ืœื ืคื™ื‘ื•ื ืืฆ'ื™. ื”ืžืขื‘ืจ ืœืชื•ื›ื ื•ืช ืžื‘ื•ืกืกื•ืช GPT ื”ื•ื ื’ื ืžืขื‘ืจ ืœืžืขืจื›ื•ืช ืฉืขื•ืฉื•ืช ื˜ืขื•ื™ื•ืช. ืœื "ื‘ืื’ื™ื" ื›ืžื• ืฉืื ื—ื ื• ืจื’ื™ืœื™ื ืžืื– ื•ืžืขื•ืœื ืืœื ื˜ืขื•ื™ื•ืช ืจื ื“ื•ืžืœื™ื•ืช ืฉืžืงื•ืจืŸ ื‘ืžื‘ื ื™ื ื‘ืกื™ืกื™ื™ื ืœื ืืžื™ื ื™ื. ื’ื ืœื–ื” ืขื•ื“ ื ืฆื˜ืจืš ืœื”ืชืจื’ืœ.

ToCode
1 417
ื‘ื“ื™ืงื•ืช null ื‘ JavaScript ื‘ืคื•ืกื˜ ื”ื™ื•ื ื ืจืื” ืฉืœื•ืฉื” ืื•ืคืจื˜ื•ืจื™ื ืœื‘ื“ื™ืงืช Null Values ื•ื”ืชืžื•ื“ื“ื•ืช ืขื ืขืจื›ื™ื ืจื™ืงื™ื. ืœืžื” ืœื”ืชืžื•ื“ื“ ืขื ืขืจื›ื™ื ืจื™ืงื™ื ืชื•ื›ื ื™ื•ืช JavaScript ืžืฉืชืžืฉื•ืช ื‘ืขืจื›ื™ื ืจื™ืงื™ื ื›ื“ื™ ืœื™ื™ืฆื’ ืฉื’ื™ืื” ืื• ืžื™ื“ืข ื—ืกืจ. ื‘ื›ืœ ืชื•ื›ื ื™ืช ืฉืื ื—ื ื• ื›ื•ืชื‘ื™ื ื ืจืฆื” ืœื”ืชืžื•ื“ื“ ืขื ืฉื’ื™ืื•ืช ืื• ืžื™ื“ืข ื—ืกืจ ื‘ืชื•ืš ื—ื™ืฉื•ื‘ื™ื ืžื•ืจื›ื‘ื™ื. ื”ืฉืืœื” ื”ื™ื ืžื” ืขื•ืฉื™ื ืขื ื”ืžื™ื“ืข ื”ื—ืกืจ ืื• ื”ืฉื’ื™ืื” ืžื—ื™ืฉื•ื‘ื™ื ืงื•ื“ืžื™ื ื‘ื›ืชื™ื‘ืช ื—ื™ืฉื•ื‘ ืžื•ืจื›ื‘. ื”ืืคืฉืจื•ื™ื•ืช ื”ืŸ: 1. ืœื–ื”ื•ืช ืฉื™ืฉ ืžื™ื“ืข ื—ืกืจ ื•ืœืขืฆื•ืจ ืืช ื”ื—ื™ืฉื•ื‘ ื”ืžื•ืจื›ื‘. 2. ืœื”ืžืฉื™ืš ืืช ื”ื—ื™ืฉื•ื‘ ืขื "ื”ืžื™ื“ืข ื”ื—ืกืจ", ื•ืžื™ ืฉืฆืจื™ืš ืืช ื”ืชื•ืฆืื” ืฉืœ ื”ื—ื™ืฉื•ื‘ ื›ื‘ืจ ื™ืชืžื•ื“ื“ ืขื ื”ื‘ืขื™ื”. ื ื“ืžื™ื™ืŸ ืคื•ื ืงืฆื™ื” ืฉืžืงื‘ืœืช ืžืขืจืš ื•ืžืกืคืจ ื•ืžื—ื–ื™ืจื” ืืช ืžืกืคืจ ื”ืžืกืคืจื™ื ืžื”ืžืขืจืš ื”ื’ื“ื•ืœื™ื ืžื”ืžืกืคืจ ืฉืงื™ื‘ืœื”:
function largerThan(items, start) {
    return items.filter(x => x > start).length;
}
ืžื” ืงื•ืจื” ืื ืžื ืกื™ื ืœื”ืคืขื™ืœ ืื•ืชื” ืื‘ืœ ืžืขื‘ื™ืจื™ื ืจืง ืืช items ื‘ืœื™ start? ืžื” ืื ื—ื ื• ืจื•ืฆื™ื ืฉื™ืงืจื”? ื”ื’ื™ืฉื” ื”ืจืืฉื•ื ื” ื”ื™ื ืœื–ื”ื•ืช ื‘ืชื•ืš ื”ืคื•ื ืงืฆื™ื” ืฉื—ืกืจ ืžื™ื“ืข ื•ืœืขืฆื•ืจ ืืช ื”ื—ื™ืฉื•ื‘ ื‘ืืžืฆืขื•ืช ื–ืจื™ืงืช ืงื•ื“ ืฉื’ื™ืื”. ื’ื™ืฉื” ื–ื• ืขื•ื‘ื“ืช ื›ืฉืื ื—ื ื• ื™ื•ื“ืขื™ื ืฉื”ืงื•ื“ ื”ื—ื™ืฆื•ื ื™ ื”ืคืขื™ืœ ืืช largerThan ื‘ืชื•ืš ื‘ืœื•ืง try/catch ื•ืžื•ื›ืŸ ืœื”ืชืžื•ื“ื“ ื’ื ืขื ืžืกืœื•ืœ ื”ื”ืฆืœื—ื” ื•ื’ื ืขื ืžืกืœื•ืœ ื”ื˜ืขื•ืช. ื’ื™ืฉื” ืฉื ื™ื” ืื•ืžืจืช ืฉื ื ืกื” ืœื”ืชืžื•ื“ื“ ื‘ืืžืฆืขื•ืช ื”ื›ื ืกืช ื”ืขืจืš ื”ื—ืกืจ ืœืชื•ืš ื”ื—ื™ืฉื•ื‘, ื›ืœื•ืžืจ ื ื—ื–ื™ืจ ืœืžื™ ืฉืงืจื ืœื ื• ืืช ื”ืขืจืš 0 ืื• ืืคื™ืœื• ืืช ื”ืขืจืš null, ืžืชื•ืš ื”ื‘ื ื” ืฉืžื™ ืฉืงืจื ืœืคื•ื ืงืฆื™ื” ื™ื•ื›ืœ ืœื˜ืคืœ ื‘ื—ื™ืฉื•ื‘ ืขื ื”ืขืจืš ื”ื—ืกืจ. ื”ืชืžื•ื“ื“ื•ืช ื›ื–ืืช ืขื ืขืจื›ื™ื ืจื™ืงื™ื ื™ื›ื•ืœื” ืœืืคืฉืจ ื›ืชื™ื‘ืช ืงื•ื“ ืžืžื•ืงื“ ื™ื•ืชืจ ืฉื™ืฉ ืœื• ืจืง ืžืกืœื•ืœ ืคืขื•ืœื” ืื—ื“. ื‘ืงื•ื“ ื”ื“ื•ื’ืžื” ืื’ื‘ ืื ืื ื—ื ื• ืžืขื‘ื™ืจื™ื ืจืง ืคืจืžื˜ืจ ืื—ื“ ืœืคื•ื ืงืฆื™ื” ื”ื™ื ืชื—ื–ื™ืจ 0 ื•ื›ืš ื’ื ืื ื ืขื‘ื™ืจ ื˜ืงืกื˜ ืื• undefined ื‘ืชื•ืจ ื”ืคืจืžื˜ืจ ื”ืฉื ื™, ืื‘ืœ ืื ื ืขื‘ื™ืจ null ื”ื™ื ืชื”ืคื•ืš ืืช ื” null ืœ 0 ื•ืชื—ื–ื™ืจ ืืช ืžืกืคืจ ื”ืื™ื‘ืจื™ื ื‘ืžืขืจืš ืฉื’ื“ื•ืœื™ื ืžืืคืก, ื•ื–ื• ื”ืชื ื”ื’ื•ืช ืงืฆืช ืžื‘ืœื‘ืœืช. ื’ื™ืจืกืช ES2020 ื”ื•ืกื™ืคื” ืฉืชื™ ืคืขื•ืœื•ืช ืœืขื‘ื•ื“ื” ืขื ืขืจื›ื™ null ื‘ JavaScript ืžื‘ื•ืกืกื•ืช ืขืœ ืกื™ืžืŸ ื”ืฉืืœื”. ืื•ืคืจื˜ื•ืจ Nullish coalescing ืื•ืคืจื˜ื•ืจ ?? ื ืงืจื Nullish Coalescing ื•ืชืคืงื™ื“ื• ืœื‘ื—ื•ืจ ืืช ื”ืขืจืš ืฉืื™ื ื• null ืžื‘ื™ืŸ ืฉื ื™ ืขืจื›ื™ื. ื ื•ื›ืœ ืœื”ืฉืชืžืฉ ื‘ื• ื‘ืื•ืคืŸ ื”ื‘ื:
function printTimes(text, aTimes) {
    const times = aTimes ?? 5;
    for (let i=0; i < times; i++) {
        console.count(text);
    }
}
ื”ืคื•ื ืงืฆื™ื” ืชื“ืคื™ืก ืืช ื”ื˜ืงืกื˜ ืฉื”ื™ื ืงื™ื‘ืœื” times ืคืขืžื™ื, ืื• ืื times ืื™ื ื• ืžื•ื’ื“ืจ ืื• null ื”ื™ื ืชืฉืชืžืฉืช ื‘ื‘ืจื™ืจืช ื”ืžื—ื“ืœ 5. ื ืฉื™ื ืœื‘ ืฉืื ืžืขื‘ื™ืจื™ื ืขืจืš 0 ืื• false ืœ aTimes ืื– ื”ืขืจืš ืฉืœ times ื™ื”ื™ื” 0 ื•ื”ื˜ืงืกื˜ ืœื ื™ื•ื“ืคืก. ื”ืฉืžื” ื•ื‘ื“ื™ืงืช null ืืคืฉืจ ืœืฉืœื‘ ืืช ?? ืขื ืื•ืคืจื˜ื•ืจ ื”ืฉืžื” ื•ื–ื” ื ืจืื” ื›ืš:
function printTimes(text, times) {
    times ??= 5;
    for (let i=0; i < times; i++) {
        console.count(text);
    }
}
ื”ืชื•ืฆืื” ื–ื”ื” - ืื times ื”ื™ื” null ืื• ืœื ืžื•ื’ื“ืจ ื ืฉืžื•ืจ ื‘ื• ืืช ื”ืขืจืš 5, ื‘ื›ืœ ืžืฆื‘ ืื—ืจ ื”ื•ื ื™ืฉืžื•ืจ ืขืœ ืขืจื›ื•. ืฉืจืฉื•ืจ ืื•ืคืฆื™ื•ื ืืœื™ Optional Chaining ืคืขื•ืœื” ืื—ืจื•ื ื” ืฉืงืฉื•ืจื” ืœืขื‘ื•ื“ื” ืขื ืขืจื›ื™ื ืจื™ืงื™ื ื‘ื—ื™ืฉื•ื‘ ื•ืœื›ืŸ ื”ื›ื ืกืชื™ ืื•ืชื” ืœืจืฉื™ืžื” ื–ื• (ืœืžืจื•ืช ืฉื”ื™ื ืœื ืœื’ืžืจื™ ืงืฉื•ืจื” ืœืคืขื•ืœื•ืช ืขืœ null) ื ืงืจืืช Optional Chaining. ื”ืจืขื™ื•ืŸ ืฉืœื” ื”ื•ื ืœืืคืฉืจ ืœื ื• ืœื”ืžืฉื™ืš ื—ื™ืฉื•ื‘ ื’ื ื›ืฉื—ืกืจ ืฉื“ื” ื‘ืื•ื‘ื™ืงื˜, ืžืชื•ืš ื”ื ื—ื” ืฉื‘ื”ืžืฉืš ื”ืชื•ื›ื ื™ืช ืžื™ืฉื”ื• ื›ื‘ืจ ื™ื“ืข ืœื”ืชืžื•ื“ื“ ืขื ื”ืขืจืš ื”ืจื™ืง. ื ืชื‘ื•ื ืŸ ื‘ื“ื•ื’ืžื” ื”ื‘ืื”:
const data = {
    x: { times: 7 },
    y: { times: 2 },
};

const f = (what) => printTimes(what, data[what].times);
ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ืคื•ื ืงืฆื™ื” ื›ื“ื™ ืœื”ื“ืคื™ืก ืืช x ืื• y ื‘ืื•ืคืŸ ื”ื‘ื:
f('x');
f('y');
ืื‘ืœ ืื ื ื ืกื” ืœื”ืฉืชืžืฉ ื‘ื” ื›ื“ื™ ืœื”ื“ืคื™ืก ืžืฉื”ื• ืฉืœื ื ืžืฆื ื‘ืื•ื‘ื™ืงื˜ ืœืžืฉืœ ืืช ื”ืžื—ืจื•ื–ืช z ื ืงื‘ืœ ืฉื’ื™ืื” - ื”ืขืจืš ืฉืœ data[what] ื”ื•ื undefined ื•ืœื›ืŸ ืื™ ืืคืฉืจ ืœื’ืฉืช ืœืฉื“ื” times ืฉืœื•. ืคืขื•ืœืช Optional Chaining ืžืืคืฉืจืช ืœื“ืœื’ ืขืœ ื”ืฉื’ื™ืื” ื”ื–ืืช ื•ื‘ืžืฆื‘ ื‘ื• ืžื ืกื™ื ืœื’ืฉืช ืœืฉื“ื” ืฉืœ undefined ื”ื™ื ืžื—ื–ื™ืจื” undefined ื‘ืžืงื•ื ืœื–ืจื•ืง ืฉื’ื™ืื”. ื”ืคืขื•ืœื” ืžืกื•ืžื ืช ืขื ?. ื•ื‘ื“ื•ื’ืžื” ืฉืœื ื• ืชื™ืจืื” ื›ืš:
const f = (what) => printTimes(what, data[what]?.times);

f('z');
ื”ืคืขื ื”ื”ื“ืคืกื” ื”ืื—ืจื•ื ื” ืœื ื–ื•ืจืงืช ืฉื’ื™ืื” ื•ืžื“ืคื™ืกื” ืืช ื”ื˜ืงืกื˜ 5 ืคืขืžื™ื - ื”ืคื•ื ืงืฆื™ื” printTimes ื ืงืจืืช ืขื ืขืจืš undefined ื‘ืžืฉืชื ื” ื”ืฉื ื™ ื•ืชืฉืชืžืฉ ื‘ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœื” 5 ื›ื“ื™ ืœื”ื“ืคื™ืก.

ToCode
1 417
ื”ื™ื•ื ื ืชืชื™ ืœ Aider ืœื›ืชื•ื‘ ืคื™ืฆ'ืจ ื—ื“ืฉ ืœืืชืจ ื”ื‘ื•ืงืจ ื ืชืชื™ ืœ Aider ืœื›ืชื•ื‘ ืคื™ืฆ'ืจ ื—ื“ืฉ ืœืืชืจ - ืขื›ืฉื™ื• ื›ืฉืžืกืชื›ืœื™ื ืขืœ ืชื•ื›ืŸ ื”ืขื ื™ื™ื ื™ื ืฉืœ ืงื•ืจืก ืžืชื•ืš ืžืกืš ืฉืœ ืฉื™ืขื•ืจ, ื”ืฉื™ืขื•ืจ ื”ื ื•ื›ื—ื™ ืžื•ืคื™ืข ื‘ืฆื‘ืข ืงืฆืช ืื—ืจ ื•ื›ื›ื” ืืคืฉืจ ืœื“ืขืช ืื™ืคื” ืื ื—ื ื• ื ืžืฆืื™ื. ื–ื” ืคื™ืฆ'ืจ ืฉืจืฆื™ืชื™ ื”ืจื‘ื” ื–ืžืŸ ืื‘ืœ ืื™ื›ืฉื”ื• ืœื ื”ื’ืขืชื™ ืœืฉื‘ืช ืœื›ืชื•ื‘ ืื•ืชื•. ื•ืื– Aider ื ืชืŸ ืœื™ ื”ื–ื“ืžื ื•ืช. ืื’ื‘ ื’ื ืชื™ืขื“ืชื™ ืืช ื”ืžืฉื—ืง ืื™ืชื• ื‘ื•ื™ื“ืื• ื›ืืŸ: https://www.youtube.com/watch?v=thSABbP1rF4&feature=youtu.be ืขื›ืฉื™ื• ื”ืกื™ื›ื•ื: 1. ืื ื™ ืœื ื—ื•ืฉื‘ ืฉ AI ื™ื™ืงื— ืœื ื• ืืช ื”ืขื‘ื•ื“ื” ื‘ื–ืžืŸ ื”ืงืจื•ื‘. 2. ื”ื‘ืขื™ื” ื”ื›ื™ ื’ื“ื•ืœื” ืขื AI ื–ื” ื”ื‘ื™ื˜ื—ื•ืŸ ื”ืขืฆืžื™ ื”ืžื•ืคืจื– ืฉืœื•. ืื ื—ื ื• ืจื’ื™ืœื™ื ืœื”ืืžื™ืŸ ืœื“ื‘ืจื™ื ืฉื›ืชื•ื‘ื™ื ื‘ืื™ื ื˜ืจื ื˜, ืื‘ืœ AI ืžืฉื ื” ืืช ื–ื”. ื‘ื›ืœ ืขื‘ื•ื“ื” ืขื AI ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื”ืชื—ื™ืœ ืžืจืฃ ื—ืฉื“ื ื•ืช ืžืื•ื“ ื’ื‘ื•ื”. 3. ืงื•ื ื˜ืงืกื˜ ื”ื•ื ืžืœืš. ื›ื›ืœ ืฉื ืžืงื“ ืืช ื” AI ื‘ืžืฉื™ืžื” ืกืคืฆื™ืคื™ืช ืกื™ื›ื•ื™ื™ ื”ื”ืฆืœื—ื” ืžืฉืชืคืจื™ื. 4. ืœืคืขืžื™ื ืฆืจื™ืš ืœื—ื–ื•ืจ ืื—ื•ืจื” ืงื•ืžื™ื˜ ืื—ื“ ื•ืœืชืช ืœื• ืœื ืกื•ืช ืฉื•ื‘. ืื™ืŸ ืกืคืง ืฉื”ื™ื™ืชื™ ื›ื•ืชื‘ ืืช ื”ืคื™ืฆ'ืจ ื”ื–ื” ืžื”ืจ ื™ื•ืชืจ ืœื‘ื“, ืื‘ืœ ื‘ืกืš ื”ื›ืœ ื ื”ื ื™ืชื™ ืžื”ืžืฉื—ืง ื•ืื•ืœื™ ื”ื•ื ื™ืชื’ืœื” ืžื•ืขื™ืœ ื‘ืคื™ืฆ'ืจื™ื ื™ื•ืชืจ ืžืกื•ื‘ื›ื™ื.