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
-430 kunlar
Postlar arxiv
ToCode
1 419
ืœืœืžื•ื“ ื›ื™- ื”ื›ื™ ืงืœ ืœืœืžื•ื“ ื›ื™ ืฆืจื™ืš. ืœืœืžื•ื“ ื›ื“ื™ ืœื”ืฆืœื™ื— ื‘ืžื‘ื—ืŸ, ื›ื“ื™ ืœื”ืฆืœื™ื— ื‘ืขื‘ื•ื“ื”, ื›ื“ื™ ืœื”ืฆืœื™ื— ืœืชืงืฉืจ ืขื ืื ืฉื™ื. ื›ืฉืœื•ืžื“ื™ื ื‘ืฉื‘ื™ืœ ืœื”ืฆืœื™ื— ืื ื—ื ื• ืžื•ื›ื ื™ื ืœื”ืฉืงื™ืข ืืช ื”ืฉืขื•ืช, ืœื”ื’ื™ืข ื›ืœ ื™ื•ื, ืœื”ืชืืžืฅ ืœื”ื‘ื™ืŸ ื’ื ื›ืฉืงืฉื”. ืื™ืŸ ื‘ืจื™ืจื”. ืžื” ืฉืžื—ื–ื™ืง ืื•ืชื ื• ื–ื” ืฉื™ืฉ ื ืงื•ื“ืช ืกื™ื•ื ื•ื’ืžื•ืœ ืžื™ื™ื“ื™ ืœื”ืฉืงืขื”. ื”ืจื‘ื” ืื ืฉื™ื ืœื•ืžื“ื™ื ื‘ืฉื‘ื™ืœ ื”ื›ื™ืฃ. ืื ื—ื ื• ืื•ื”ื‘ื™ื ืœื‘ืฉืœ ืื• ืœื’ื ืŸ ืื• ืœื›ืชื•ื‘ ืฉื™ืจื™ื, ื•ื”ืชื—ื‘ื™ื‘ ืžื•ื‘ื™ืœ ืื•ืชื ื• ืœื”ื‘ื™ืŸ ื˜ื•ื‘ ื™ื•ืชืจ ืืช ื”ืขื•ืœื. ืžืขื ื™ื™ืŸ ืื™ืš ื–ื” ืขื•ื‘ื“, ืžืขื ื™ื™ืŸ ืื™ืš ืื—ืจื™ื ืขื•ืฉื™ื ืืช ื–ื”, ืžืขื ื™ื™ืŸ ืžื” ื™ืงืจื” ืื ... ื›ืฉืœื•ืžื“ื™ื ื‘ืฉื‘ื™ืœ ื”ื›ื™ืฃ ืื ื—ื ื• ืฉืžื—ื™ื ืœื”ืฉืงื™ืข ืืช ื”ืฉืขื•ืช ื•ืชืžื™ื“ ืžื•ืฆืื™ื ื–ืžืŸ ื›ื“ื™ ืœื”ืชืงื“ื ื‘ืชื—ื‘ื™ื‘ ืฉืœื ื•, ืขื“ ืฉื™ืฉ ืขื•ืžืก ื•ืื– ืชืงื•ืคื” ืœื ืžื•ืฆืื™ื ื–ืžืŸ ืื• ืฉื”ื’ืขื ื• ืœื—ืœืง ืงืฉื” ืื• ืžืฉืขืžื ื•ืื– ืžืชืงื“ืžื™ื ื‘ืœื™ืžื•ื“ ืœื›ื™ื•ื•ืŸ ืื—ืจ. ืชื—ื‘ื™ื‘ ืืคืฉืจ ืœื”ืžืฉื™ืš ืœืคืชื— ืœืื•ืจืš ืฉื ื™ื ื•ืžื” ืฉืžื—ื–ื™ืง ืื•ืชื ื• ื”ื•ื ื”ืขื ื™ื™ืŸ ื‘ืชื—ื•ื. ื•ืœืคืขืžื™ื ืื ื—ื ื• ืœื•ืžื“ื™ื ืžืฉื”ื• ื‘ื’ืœืœ ืฉื”ื•ื ื—ืฉื•ื‘. ื›ืฉื›ื•ืœื ื”ื™ื• ืฆืจื™ื›ื™ื ืœืœืžื•ื“ ื›ืœ ืฉื‘ื•ืข JavaScript Framework ื—ื“ืฉ ื”ื™ื• ืื ืฉื™ื ืฉืขืฆืจื• ื›ื“ื™ ืœืœืžื•ื“ ืื™ืš ื‘ื ื•ื™ ื“ืคื“ืคืŸ, ืื™ืš JavaScript ืขื•ื‘ื“ืช ื•ืื™ืš ืœื‘ื ื•ืช JavaScript Framework ืžืืคืก. ืžื” ื”ืืชื’ืจื™ื ื‘ืคื™ืชื•ื— Single Page Application ื•ืื™ืš ืคื•ืชืจื™ื ืื•ืชื ื‘ืœื™ Framework, ืื™ืš ืœื›ืชื•ื‘ ืคื™ืชืจื•ืŸ Router ืžืืคืก. ืœื ื”ื™ื” ืœื™ื“ืข ื”ื–ื” ืขืจืš ืžื™ื™ื“ื™. ื–ื” ืœื ื”ื•ืคื™ืข ื‘ืฉื•ื ืจืฉื™ืžืช ื“ืจื™ืฉื•ืช ื‘ืžื•ื“ืขื•ืช ื“ืจื•ืฉื™ื ื•ืœื ื”ื•ืคื™ืข ื‘ืืฃ ืกื™ืœื‘ื•ืก. ื•ื‘ื›ืœ ื–ืืช ืื ืฉื™ื ืฉื”ืฉืงื™ืขื• ืืช ื”ืขื‘ื•ื“ื” ื‘ืœื™ืžื•ื“ ื”ื™ืกื•ื“ื•ืช ื”ืฆืœื™ื—ื• ืœืœืžื•ื“ ืคืจื™ื™ืžื•ื•ืจืงื™ื ื—ื“ืฉื™ื ื”ืจื‘ื” ื™ื•ืชืจ ืžื”ืจ ื•ืœืขื‘ื•ื“ ื ื›ื•ืŸ ื™ื•ืชืจ. ื”ืืชื’ืจ ืขื ื“ื‘ืจื™ื ื—ืฉื•ื‘ื™ื ื”ื•ื ืฉื›ืžื• ื“ื‘ืจื™ื ืฉืื ื—ื ื• ืœื•ืžื“ื™ื ื‘ืฉื‘ื™ืœ ืœื”ืฆืœื™ื— ื’ื ื”ื ื“ื•ืจืฉื™ื ื”ืฉืงืขื” ืขืฆื•ืžื”, ืื‘ืœ ื”ื ืœื ื›ื•ืœืœื™ื ื’ืžื•ืœ ืžื™ื™ื“ื™ ืื• ื ืงื•ื“ืช ืกื™ื•ื. ื”ื ืžืขื ื™ื™ื ื™ื ื‘ื”ืชื—ืœื” ืื‘ืœ ืžื”ืจ ืžืื•ื“ ืžื’ื™ืข ื”ื—ืœืง ื”ืงืฉื”, ื”ืžื•ื˜ื™ื‘ืฆื™ื” ื ืขืœืžืช ื•ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœืžืฆื•ื ืกื™ื‘ื” ืื—ืจืช ืœื”ืžืฉื™ืš ืœื”ืฉืงื™ืข. ื›ืฉืžืชื—ื™ืœื™ื ืœืœืžื•ื“ ืžืฉื”ื• ื—ื“ืฉ ื›ื“ืื™ ืœื”ื‘ื™ืŸ ืœืžื” ืื ื™ ืœื•ืžื“ ืืช ื–ื”, ืื™ืš ื™ืจืื” ืชื”ืœื™ืš ื”ืœืžื™ื“ื” ื•ืื™ืš ืชืฉืชื ื” ื”ืžื•ื˜ื™ื‘ืฆื™ื” ืฉืœื™ ืœืื•ืจืš ื”ืชื”ืœื™ืš. ื›ืฉืื ื™ ื™ื•ืฆื ืœื“ืจืš ืขื ื”ื‘ื ื” ืฉืœ ื”ืžืกืœื•ืœ ื”ืกื™ื›ื•ื™ ืœื”ืฆืœื—ื” ื’ื“ืœ ืžืฉืžืขื•ืชื™ืช.

ToCode
1 419
</div>
      
      <div className="carousel-indicators">
        {images.map((_, index) => (
          <button
            key={index}
            className={\carousel-indicator ${index === currentIndex ? 'active' : ''}\}
            onClick={() => goToSlide(index)}
            aria-label={\Go to slide ${index + 1}\}
          />
        ))}
      </div>
      
      {images.length > 1 && (
        <div className="carousel-countdown">
          Next image in: {countdown}s
        </div>
      )}
    </div>
  )
}

export default ImageCarousel
ื’ื ื”ื•ื ืขื•ื‘ื“ ื”ืคืขื ืขื ืžืฉืชื ื” ืกื˜ื™ื™ื˜ ื™ื—ื™ื“. ื›ื™ื•ื•ืŸ ืื—ืจ ืœืฉื‘ื•ืจ ืืช ื”ืงืฉืจ ื”ื•ื ืœืคืจืง ืืช ื”ืงื•ืžืคื•ื ื ื˜ื” ืœืฉืชื™ ืงื•ืžืคื•ื ื ื˜ื•ืช - ืงื•ืžืคื•ื ื ื˜ื” ืื—ืช ืฉืœ ืงืจื•ืกืœืช ืชืžื•ื ื•ืช ื•ืงื•ืžืคื•ื ื ื˜ื” ืฉื ื™ื” ื”ื™ื ื”ืฉืขื•ืŸ ืขืฆืจ. ื–ื” ื”ืงื•ื“ ืขื ื”ืคืจื“ืช ืงื•ืžืคื•ื ื ื˜ื•ืช:
import { useState, useEffect } from 'react'
import './ImageCarousel.css'

interface CountdownTimerProps {
  interval: number
  onTimeout: () => void
}

const CountdownTimer: React.FC<CountdownTimerProps> = ({ interval, onTimeout }) => {
  const [countdown, setCountdown] = useState(interval / 1000)

  useEffect(() => {
    const timer = setInterval(() => {
      setCountdown((prevCountdown) => {
        if (prevCountdown <= 1) {
          onTimeout()
          return interval / 1000 // Reset countdown
        }
        return prevCountdown - 1
      })
    }, 1000) // Update every second

    return () => clearInterval(timer)
  }, [interval, onTimeout])

  return (
    <div className="carousel-countdown">
      Next image in: {countdown}s
    </div>
  )
}

interface ImageCarouselProps {
  images: string[]
  interval?: number
}

const ImageCarousel: React.FC<ImageCarouselProps> = ({ images, interval = 3000 }) => {
  const [currentIndex, setCurrentIndex] = useState(0)

  const goToSlide = (index: number) => {
    setCurrentIndex(index)
  }

  const goToPrevious = () => {
    setCurrentIndex((prevIndex) => 
      prevIndex === 0 ? images.length - 1 : prevIndex - 1
    )
  }

  const goToNext = () => {
    setCurrentIndex((prevIndex) => (prevIndex + 1) % images.length)
  }

  if (images.length === 0) {
    return <div className="carousel-empty">No images to display</div>
  }

  return (
    <div className="carousel-container">
      <div className="carousel-wrapper">
        <button 
          className="carousel-btn carousel-btn-prev" 
          onClick={goToPrevious}
          aria-label="Previous image"
        >
          &#8249;
        </button>
        
        <div className="carousel-image-container">
          <img 
            src={images[currentIndex]} 
            alt={\Slide ${currentIndex + 1}\}
            className="carousel-image"
          />
        </div>
        
        <button 
          className="carousel-btn carousel-btn-next" 
          onClick={goToNext}
          aria-label="Next image"
        >
          &#8250;
        </button>
      </div>
      
      <div className="carousel-indicators">
        {images.map((_, index) => (
          <button
            key={index}
            className={\carousel-indicator ${index === currentIndex ? 'active' : ''}\}
            onClick={() => goToSlide(index)}
            aria-label={\Go to slide ${index + 1}\}
          />
        ))}
      </div>
      
      {images.length > 1 && (
        <CountdownTimer 
          key={currentIndex}
          interval={interval}
          onTimeout={goToNext}
        />
      )}
    </div>
  )
}

export default ImageCarousel
ื›ืืŸ ืฉื•ื‘ ื™ืฉ ืœื ื• ืืช ื” set ื‘ืชื•ืš set, ืื‘ืœ ื”ืคืขื ื”ื–ื–ืชื™ ืืช ื”ืืคืงื˜ ืจืง ืœืงื•ืžืคื•ื ื ื˜ื” ืฉืœ ื”ืฉืขื•ืŸ ืฉื”ื™ื ื”ืจื‘ื” ื™ื•ืชืจ ืงื˜ื ื” ื•ื›ืœ ืžืฉืชื ื” ืกื˜ื™ื™ื˜ ืฉืžื•ืจ ื‘ืงื•ืžืคื•ื ื ื˜ื” ืฉืœื•. ืžื” ื“ืขืชื›ื? ืื™ื–ื” ื’ื™ืจืกื” ืืชื ื”ื›ื™ ืื•ื”ื‘ื™ื ื•ืœืžื”?

ToCode
1 419
ืขื“ื›ื•ืŸ ืกื˜ื™ื™ื˜ ื‘ืชื•ืš ืขื“ื›ื•ืŸ ืกื˜ื™ื™ื˜ ื‘ื•ื•ื‘ื™ื ืจ ื”ื™ื•ื ื‘ื™ืงืฉื ื• ืžืงืœื•ื“ ืœืขื“ื›ืŸ ืงื•ืžืคื•ื ื ื˜ืช ืจื™ืืงื˜ ืฉืžืฆื™ื’ื” ืงืจื•ืกืœืช ืชืžื•ื ื•ืช ื•ืœื”ื•ืกื™ืฃ ืœื” ืฉืขื•ืŸ ืขืฆืจ ืฉืžืจืื” ื›ืžื” ื–ืžืŸ ืขื“ ื”ื—ืœืคืช ื”ืชืžื•ื ื” ื”ื‘ืื”. ื‘ื”ืชื—ืœื” ื”ื•ื ื™ืฆืจ ืฉื ื™ ืืคืงื˜ื™ื ื•ื›ืฉื”ืชืขืงืฉื ื• ืœื™ืฆื•ืจ ืืคืงื˜ ืื—ื“ ืงื™ื‘ืœื ื• ืืช ื”ืงื•ื“ ื”ื‘ื:
useEffect(() => {
  if (images.length <= 1) return

  // Reset countdown when component mounts or when interval changes
  setCountdown(interval / 1000)

  const timer = setInterval(() => {
    setCountdown((prevCountdown) => {
      if (prevCountdown <= 1) {
        // Time to switch image
        setCurrentIndex((prevIndex) => (prevIndex + 1) % images.length)
        return interval / 1000 // Reset countdown
      }
      return prevCountdown - 1
    })
  }, 1000) // Update every second

  return () => clearInterval(timer)
}, [images.length, interval])
ืฉื™ืžื• ืœื‘ ืœืงืจื™ืื” ืœ setCurrentIndex ื‘ืชื•ืš ืคื•ื ืงืฆื™ื™ืช ื”ืขื“ื›ื•ืŸ ืฉืขื•ื‘ืจืช ืœ setCountdown. ื™ืฆื ืœื™ ืœื›ืชื•ื‘ ืงื•ื“ ื‘ืกื’ื ื•ืŸ ื”ื–ื” ื•ื›ืœ ืคืขื ืฉื–ื” ืงืจื” ื–ื” ื”ืขื™ื“ ืขืœ ืื™ื–ื•ืฉื”ื™ ื‘ืขื™ื” ื‘ืชื›ื ื•ืŸ ื”ืงื•ืžืคื•ื ื ื˜ื” ื•ื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ ื™ืฆื ืžืฉืœื™ื˜ื” ื•ื’ืจื ืœื‘ืื’ื™ื ืžื•ื–ืจื™ื ื‘ืžืงื•ืžื•ืช ืื—ืจื™ื. ื•ื‘ื›ืœ ื–ืืช ื”ืงื•ื“ ืฉืœ ืงืœื•ื“ ืขื•ื‘ื“. ืื—ืจื™ ื”ื•ื•ื‘ื™ื ืจ ื ื™ืกื™ืชื™ ืœื”ื‘ื™ืŸ ืžื” ื”ืคืจื™ืข ืœื™ ื‘ืคื™ืชืจื•ืŸ ื•ืื ื™ ื—ื•ืฉื‘ ืฉื”ื‘ืขื™ื” ื”ื™ื ื›ืคื™ืœื•ืช ื‘ืกื˜ื™ื™ื˜ - ื‘ืขืฆื ื™ืฉ ืคื” ืฉื ื™ ืžืฉืชื ื™ ืกื˜ื™ื™ื˜ ืงืฉื•ืจื™ื ื•ืื ื—ื ื• ืฆืจื™ื›ื™ื ืืช ื”ืขื“ื›ื•ืŸ ื‘ืชื•ืš ืขื“ื›ื•ืŸ ื›ื“ื™ ืœื‘ื˜ื ืืช ื”ืงืฉืจ ื”ื–ื”. ืืคืฉืจ ืœื—ืฉื•ื‘ ืขืœ ื–ื” ืฉืจืฆื•ื™ ืฉืžืฉืชื ื™ ืกื˜ื™ื™ื˜ ืฉืœ ืงื•ืžืคื•ื ื ื˜ื” ื™ื”ื™ื• ืื•ืจืชื•ื’ื•ื ืœื™ื™ื ื•ื›ืฉื™ืฉ ืงืฉืจ ื‘ื™ื ื™ื”ื ื–ื” ืื•ืžืจ ืฉืžืฉื”ื• ืœื ืžื“ื•ื™ืง ื‘ืืจื›ื™ื˜ืงื˜ื•ืจื”. ืื ื™ืฉ ืžืฉืชื ื™ ืกื˜ื™ื™ื˜ ืงืฉื•ืจื™ื ืื•ืœื™ ื–ื” ืื•ืžืจ ืฉืื—ื“ ืžื”ื ื™ื›ื•ืœ ืœื”ื™ื•ืช ืขืจืš ืžื—ื•ืฉื‘? ื›ื™ื•ื•ืŸ ืื—ื“ ื™ื›ื•ืœ ืœื”ื™ื•ืช ืœืกืคื•ืจ ืจืง ืืช ื”ื–ืžืŸ ืฉืขื‘ืจ ืžืื– ืฉื”ืงื•ืžืคื•ื ื ื˜ื” ื ื›ื ืกื” ืœืžืกืš, ื•ืื– ืืคืฉืจ ืœื—ืฉื‘ ืืช ืื™ื ื“ืงืก ื”ืชืžื•ื ื” ืœื”ืฆื’ื” ืขื ื—ื™ืœื•ืง ื•ืฉืืจื™ืช. ื”ื‘ืขื™ื” ื”ื™ื ืžื” ืขื•ืฉื™ื ืขื ื”ืœื—ื™ืฆื•ืช. ืื ืžืžืฉื™ื›ื™ื ื‘ืื•ืชื• ื›ื™ื•ื•ืŸ ืืคืฉืจ ืœื”ื’ื“ื™ืจ ืฉื”ืœื—ื™ืฆื•ืช "ื™ืงื“ืžื•" ืืช ื”ืฉืขื•ืŸ, ื•ืื– ื™ืฉ ืœื ื• ืืช ื”ืงื•ื“ ื”ื‘ื:
import { useState, useEffect } from 'react'
import './ImageCarousel.css'

interface ImageCarouselProps {
  images: string[]
  interval?: number
}

const ImageCarousel: React.FC<ImageCarouselProps> = ({ images, interval = 3000 }) => {
  const [elapsedTime, setElapsedTime] = useState(0)
  
  // Derive currentIndex and countdown from elapsedTime
  const currentCycle = Math.floor(elapsedTime / interval)
  const currentIndex = currentCycle % images.length
  const timeInCurrentCycle = elapsedTime % interval
  const countdown = Math.ceil((interval - timeInCurrentCycle) / 1000)

  useEffect(() => {
    if (images.length <= 1) return

    const timer = setInterval(() => {
      setElapsedTime((prevTime) => prevTime + 1000)
    }, 1000) // Update every second

    return () => clearInterval(timer)
  }, [images.length, interval])

  const goToSlide = (index: number) => {
    // Calculate the elapsed time that would result in the desired index
    const targetCycle = Math.floor(elapsedTime / interval) + (index - currentIndex)
    const adjustedCycle = targetCycle >= 0 ? targetCycle : targetCycle + Math.ceil(Math.abs(targetCycle) / images.length) * images.length
    setElapsedTime(adjustedCycle * interval)
  }

  const goToPrevious = () => {
    const prevIndex = currentIndex === 0 ? images.length - 1 : currentIndex - 1
    goToSlide(prevIndex)
  }

  const goToNext = () => {
    const nextIndex = (currentIndex + 1) % images.length
    goToSlide(nextIndex)
  }

  if (images.length === 0) {
    return <div className="carousel-empty">No images to display</div>
  }

  return (
    <div className="carousel-container">
      <div className="carousel-wrapper">
        <button 
          className="carousel-btn carousel-btn-prev" 
          onClick={goToPrevious}
          aria-label="Previous image"
        >
          &#8249;
        </button>
        
        <div className="carousel-image-container">
          <img 
            src={images[currentIndex]} 
            alt={\Slide ${currentIndex + 1}\}
            className="carousel-image"
          />
        </div>
        
        <button 
          className="carousel-btn carousel-btn-next" 
          onClick={goToNext}
          aria-label="Next image"
        >
          &#8250;
        </button>

ToCode
1 419
ื‘ื•ืื• ื ืคืกื™ืง ืœื”ื’ื™ื“ "ืขื“ื™ื™ืŸ" ืขื•ื–ืจ ืœื—ื‘ืจ ืœืคืชื•ืจ ื‘ืื’, ืื—ืจื™ ื—ื™ืคื•ืฉื™ื ืžืฆืื ื• ืืช ื”ื‘ืขื™ื”, ืคืชืจื ื• ื•ื’ื ืฉื™ืคืจื ื• ืืช ื›ืœ ื”ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœ ื”ืงื•ื“ ื›ื“ื™ ืฉื‘ืื’ื™ื ื›ืืœื” ืœื ื™ื•ื›ืœื• ืœื—ื–ื•ืจ. ื ื–ื›ืจ ื‘ืžื ื›ืœ ืฉืœ ืกื•ืคื˜ื‘ื ืง ืฉื‘ื˜ื•ื— ืฉืขื“ ืกื•ืฃ ื”ืฉื ื” ื”ื•ื ืžืคื˜ืจ ืืช ื›ืœ ื”ืžืชื›ื ืชื™ื ื•ืžื—ืœื™ืฃ ืืช ื›ื•ืœื ื• ื‘ AI ื•ืžื—ื™ื™ืš ืœื—ื‘ืจ: ืดืืชื” ืจื•ืื”, ืฉื•ื AI ืœื ื™ื—ืœื™ืฃ ืื•ืชื ื• ื‘ื–ืžืŸ ื”ืงืจื•ื‘ืด ืจืง ื‘ืฉื‘ื™ืœ ืœืฉืžื•ืข ืฉื•ื‘ ืืช ื” ืดืขื“ื™ื™ืŸ...ืด. ื›ื“ืื™ ืœื–ื›ื•ืจ: 1. ื˜ื›ื ื•ืœื•ื’ื™ื™ืช AI ื”ื ื•ื›ื—ื™ืช ืžืฉื›ืคืœืช ืชื‘ื ื™ื•ืช ื•ืžื™ื™ืฆืจืช ื˜ืงืกื˜ื™ื ื—ื“ืฉื™ื ืœืคื™ ืชื‘ื ื™ื•ืช. ื”ื™ื ืœื ื—ื•ืฉื‘ืช. 2. ื—ืœืง ืžืฉืžืขื•ืชื™ ืžื”ืขื‘ื•ื“ื” ืฉืœื›ื ื”ื•ื ื—ืฉื™ื‘ื”. 3. ื›ืœ ืคืจื•ื™ืงื˜ ืชื•ื›ื ื” ืžืขื ื™ื™ืŸ ืฉืจืื™ืชื™ ื“ืจืฉ ื™ืฆื™ืจืชื™ื•ืช ื•ืคื™ืชืจื•ื ื•ืช ืžื—ื•ืฅ ืœืžื” ืฉื›ืชื•ื‘ ื‘ืกืคืจ. ืจืื™ืชื™ ืžืกืคื™ืง ืคืขืžื™ื ืžื” ืงื•ืจื” ืœืคืจื•ื™ืงื˜ื™ื ื›ืฉืžืขืชื™ืงื™ื ื‘ืฆื•ืจื” ืขื™ื•ื•ืจืช ืชื‘ื ื™ื•ืช ืžืกืคืจื™ื. ื–ื” ืœื ื ื’ืžืจ ื˜ื•ื‘. ื›ืŸ ื™ื•ื ืื—ื“ ืื•ืœื™ ืžื™ืฉื”ื• ื™ื‘ื ื” AI ืฉื™ื›ื•ืœ ืœื”ื‘ื™ืŸ. ื›ืชื‘ืชื™ ืขืœ ื”ื—ืœื•ื ื”ื–ื”: https://www.tocode.co.il/blog/2025-05-emergent-is-crazy ืื ื—ื ื• ืœื ืฉื ื•ื”ื˜ื›ื ื•ืœื•ื’ื™ื” ื”ื ื•ื›ื—ื™ืช ืœื ืžืงืจื‘ืช ืื•ืชื ื• ืœืฉื ื™ื•ืชืจ ืžืžื” ืฉื”ื™ื™ื ื• ืœืคื ื™ ChatGPT. ืื ื›ื‘ืจ ื”ืขื‘ื•ื“ื” ืขื AI ืจืง ื—ื™ื“ื“ื” ืืฆืœื™ ืืช ื”ื”ื‘ื ื” ื›ืžื” ื”ืžืงืฆื•ืข ืฉืœื ื• ืžื•ืจื›ื‘ ื•ื›ืžื” ืชืฉื•ืžืช ืœื‘ ื“ืจื•ืฉื” ื›ื“ื™ ืœื™ื™ืฆืจ ืžื•ื“ืœ ืžื ื˜ืœื™ ืฉืœ ืžืขืจื›ืช ืชื•ื›ื ื” ื•ืœืฉื™ื ืœื‘ ืœื›ืœ ืคืจื˜ ืงื˜ืŸ. ืœื”ื’ื™ื“ "ืขื“ื™ื™ืŸ" ื–ื” ื›ืžื• ืœื”ื’ื™ื“ ืฉืžื—ืฉื‘ื•ืŸ "ืขื“ื™ื™ืŸ" ืœื ืžืกื•ื’ืœ ืœื›ืชื•ื‘ ื”ื•ื›ื—ื•ืช. ื–ื” ื—ื•ืกืจ ื”ื‘ื ื” ืฉืœ ื”ื›ืœื™. ืžื—ืฉื‘ื•ืŸ ืœืขื•ืœื ืœื ื™ื”ื™ื” ืžืกื•ื’ืœ ืœื›ืชื•ื‘ ื”ื•ื›ื—ื” ืžืชืžื˜ื™ืช ื›ื™ ื”ื•ื ืœื ื ื•ืขื“ ืœื–ื”, ื‘ื“ื™ื•ืง ื›ืžื• ืฉืžืขืจื›ืช ื‘ื™ื ื” ืžืœืื›ื•ืชื™ืช ื’ื ืจื˜ื™ื‘ื™ืช ืœืขื•ืœื ืœื ืชื”ื™ื” ืžืกื•ื’ืœืช ืœืชื—ื–ืง ืงื•ื“. ื–ืืช ืœื ื”ื˜ื›ื ื•ืœื•ื’ื™ื”.

ToCode
1 419
ื”ืชืžื•ื ื” ืžืชื—ืœืคืช ื›ืœ ืฉืœื•ืฉ ืฉื ื™ื•ืช ืืคื™ืœื• ืื ืžืฉืชืžืฉื™ื ืžืขื‘ื™ืจื™ื ืชืžื•ื ื” ื™ื“ื ื™ืช. ื”ื‘ืขื™ื” ื”ื™ื ืฉืื ืื ื™ ืžื—ืœื™ืฃ ื™ื“ื ื™ืช ืชืžื•ื ื” ืื– ื™ื›ื•ืœ ืœื”ื™ื•ืช ืฉืื ื™ ืžื—ืœื™ืฃ ื‘ื“ื™ื•ืง ื‘ืจื’ืข ืฉืขื•ื‘ืจื•ืช 3 ืฉื ื™ื•ืช ื•ืื– ืื ื™ ืœื•ื—ืฅ ืื‘ืœ ื”ืงืจื•ืกืœื” ื–ื–ื” ื‘ืฉืชื™ ืชืžื•ื ื•ืช. ื™ื•ืชืจ ื”ื’ื™ื•ื ื™ ื™ื”ื™ื” ืœืกืคื•ืจ 3 ืฉื ื™ื•ืช ืžืจื’ืข ืฉื”ืชืžื•ื ื” ืžืชื—ืœืคืช, ื‘ืœื™ ืงืฉืจ ืื ื”ื™ื ื”ืชื—ืœืคื” ื‘ื’ืœืœ ืžืฉืชืžืฉ ืื• ื‘ื’ืœืœ ืฉื™ื ื•ื™ ืื•ื˜ื•ืžื˜ื™. ื›ืฉื ื‘ืงืฉ ืžืงืœื•ื“ ืœืชืงืŸ ื”ื•ื ื™ื›ืชื•ื‘ ืืช ื”ืงื•ื“ ื”ื‘ื:
  useEffect(() => {
    if (images.length <= 1) return

    const timer = setInterval(() => {
      setCurrentIndex((prevIndex) => (prevIndex + 1) % images.length)
    }, interval)

    return () => clearInterval(timer)
  }, [images.length, interval, currentIndex])
ื›ืœื•ืžืจ ืงืœื•ื“ ืฉื ืœื‘ ืฉื›ื“ืื™ ืœื• ืœืืคืก ืืช ื”ืืคืงื˜ ื›ืœ ืคืขื ืฉื”ืื™ื ื“ืงืก ืžืฉืชื ื” ืื‘ืœ ื”ื•ื ืœื ื—ืฉื‘ ืœืฉื ื•ืช ืืช setInterval ืœ setTimeout, ืœืžืจื•ืช ืฉ setTimeout ื™ื•ืชืจ ืงืจื™ื ื•ื ื›ื•ืŸ ื‘ื”ืงืฉืจ ื”ื–ื”. ืœืื—ืจ ืžื›ืŸ ื‘ื™ืงืฉืชื™ ืžืžื ื• ืฉื™ื•ืกื™ืฃ ืฉืขื•ืŸ ืกืคื™ืจื” ืœืื—ื•ืจ ืขื“ ื”ืฉื™ื ื•ื™ ื”ื‘ื. ืงืœื•ื“ ื”ื‘ื™ืŸ ืฉื”ื•ื ืฆืจื™ืš ืขื•ื“ ืžืฉืชื ื” ืกื˜ื™ื™ื˜ ืฉืœ "ื›ืžื” ื–ืžืŸ ื ืฉืืจ" ื•ื”ื•ืกื™ืฃ ืื•ืชื•, ืื‘ืœ ื”ื•ื ืœื ืจืื” ืฉื‘ืขืฆื ืฉื ื™ ื”ืืคืงื˜ื™ื ืงืฉื•ืจื™ื ื•ืืคืฉืจ ืœืื—ื“ ืื•ืชื. ื–ืืช ืื—ืช ื”ืกื™ื‘ื•ืช ืฉืื ื—ื ื• ืจื•ืื™ื ื”ืจื‘ื” ื›ืคืœ ืงื•ื“ ื‘ืงื•ื“ ืฉ AI ืžื™ื™ืฆืจ, ื•ื›ืฉืœื•ื ื•ืช ื›ืฉืื ืฉื™ื ืžื ืกื™ื ืœื”ืฉืชืžืฉ ื‘ AI ื›ื“ื™ ืœืฉื›ืชื‘ ืงื•ื“. ื”ื ื™ืกื™ื•ืŸ ืฉืœ AI ืœืฉืžืจ ืงื•ื“ ื™ืฉืŸ ืžื•ื‘ื™ืœ ืœืงื•ื“ ืืจื•ืš ื•ืžืกื•ืจื‘ืœ ื™ื•ืชืจ ื•ืคืขืžื™ื ืจื‘ื•ืช ื›ืคื•ืœ. ืจื•ืฆื™ื ืœืฉืžื•ืข ื™ื•ืชืจ ืคืจื˜ื™ื ืขืœ ื”ื“ื•ื’ืžืื•ืช, ืœืจืื•ืช ื“ื•ื’ืžืื•ืช ื ื•ืกืคื•ืช ืื• ืœืฉืชืฃ ื“ื•ื’ืžืื•ืช ืžืฉืœื›ื? ืืœ ืชืชื‘ื™ื™ืฉื• ืœื”ืฆื˜ืจืฃ ืœื–ื•ื ืžื—ืจ ื‘ืขืฉืจ ื ืคืชื— ืืช ื”ื›ืœ ื•ื’ื ื ืจืื” ืื™ืš ื›ืฉืื ื™ ืžื•ื“ืข ืœื‘ืขื™ื•ืช ื”ืืœื” ืื ื™ ื™ื›ื•ืœ ืœืžื ื•ืข ืื•ืชืŸ ืื• ืœื”ืชืžื•ื“ื“ ืื™ืชืŸ.

ToCode
1 419
# Count cows by counting occurrences of each digit in both sequences
        # and taking the minimum, then subtracting bulls
        secret_counts: dict[int, int] = {}
        guess_counts: dict[int, int] = {}
        
        for digit in self.secret_code:
            secret_counts[digit] = secret_counts.get(digit, 0) + 1
        
        for digit in guess:
            guess_counts[digit] = guess_counts.get(digit, 0) + 1
        
        total_matches = sum(min(secret_counts.get(digit, 0), guess_counts.get(digit, 0)) 
                           for digit in set(secret_counts.keys()) | set(guess_counts.keys()))
        
        cows = total_matches - bulls
        
        # Store the guess and result
        self.guesses.append(guess.copy())
        self.results.append((bulls, cows))
        
        return bulls, cows
ื›ืœ ื–ื” ื‘ืฉื‘ื™ืœ ืœืกืคื•ืจ ื›ืžื” ืกืคืจื•ืช ืžื•ืคื™ืขื•ืช ื‘ืžืงื•ื ื”ื ื›ื•ืŸ, ื•ื›ืžื” ืกืคืจื•ืช ืžื•ืคื™ืขื•ืช ื‘ืžืกืคืจ ืื‘ืœ ื‘ืื™ื ื“ืงืก ืื—ืจ. ื–ื” ืงื•ื“ ืฉืœื™ ืฉืคื•ืชืจ ืืช ืื•ืชื” ื‘ืขื™ื”:
def compare(guess, code):
  bulls = 0
  cows = 0
  
  for i in range(len(code)):
    if guess[i] == code[i]:
      cows += 1

    elif guess[i] in code:
      bulls += 1
    
  return (bulls, cows)
ื”ื“ืจืš ืฉืงืœื•ื“ ื”ื—ืœื™ื˜ ืฉืฆืจื™ืš ืœื—ืฉื‘ ืืช ืžืกืคืจ ื”ืคื’ื™ืขื•ืช ืžื ื•ืกื—ืช ื‘ื”ืขืจื” ื”ืžื•ื–ืจื” ื”ื–ืืช: > Count cows by counting occurrences of each digit in both sequences and taking the minimum, then subtracting bulls. ื’ื ืื ื”ืจืขื™ื•ืŸ ื ื›ื•ืŸ ื”ื•ื ืคืฉื•ื˜ ื™ื•ืชืจ ืžื“ื™ ืžืกื•ืจื‘ืœ ืœืชืจื’ื™ืœ ื”ื–ื”. ืงื•ื“ ื™ืฉืŸ ื”ื•ื ืงื•ื“ ื˜ื•ื‘ ื”ื˜ืขื•ืช ื”ื‘ืื” ืฉืœ AI ืฉื—ื•ื–ืจืช ื›ืœ ืคืขื ืฉื”ื•ื ื›ื•ืชื‘ ืงื•ื“ ื–ื• ื”ื”ืขื“ืคื” ืœืงื•ื“ ื”ืงื™ื™ื. ืงื•ื“ ืงื™ื™ื ื”ื•ื ื—ืœืง ืžื”ืคืจื•ืžืคื˜ ื•ืœื›ืŸ AI ืžืื•ื“ ื ื–ื”ืจ ืœื ืœื’ืขืช ื‘ื›ืœื•ื ืืœื ืื ื›ืŸ ื‘ื™ืงืฉืชื ื‘ืžืคื•ืจืฉ ื•ื’ื ืื– ืœื ื‘ื˜ื•ื—. ื‘ื“ื•ื’ืžื” ื”ื‘ืื” ื‘ื™ืงืฉืชื™ ืžืงืœื•ื“ ืœื›ืชื•ื‘ ืงื•ืžืคื•ื ื ื˜ื” ืฉืœ ืงืจื•ืกืœืช ืชืžื•ื ื•ืช ืฉื›ืœ ื›ืžื” ืฉื ื™ื•ืช ื”ืชืžื•ื ื” ืžืฉืชื ื” ื•ืงื™ื‘ืœืชื™ ืืช ื”ืงื•ืžืคื•ื ื ื˜ื” ื”ื‘ืื”:
const ImageCarousel: React.FC<ImageCarouselProps> = ({ images, interval = 3000 }) => {
  const [currentIndex, setCurrentIndex] = useState(0)

  useEffect(() => {
    if (images.length <= 1) return

    const timer = setInterval(() => {
      setCurrentIndex((prevIndex) => (prevIndex + 1) % images.length)
    }, interval)

    return () => clearInterval(timer)
  }, [images.length, interval])

  const goToSlide = (index: number) => {
    setCurrentIndex(index)
  }

  const goToPrevious = () => {
    setCurrentIndex((prevIndex) => 
      prevIndex === 0 ? images.length - 1 : prevIndex - 1
    )
  }

  const goToNext = () => {
    setCurrentIndex((prevIndex) => (prevIndex + 1) % images.length)
  }

  if (images.length === 0) {
    return <div className="carousel-empty">No images to display</div>
  }

  return (
    <div className="carousel-container">
      <div className="carousel-wrapper">
        <button 
          className="carousel-btn carousel-btn-prev" 
          onClick={goToPrevious}
          aria-label="Previous image"
        >
          &#8249;
        </button>
        
        <div className="carousel-image-container">
          <img 
            src={images[currentIndex]} 
            alt={\Slide ${currentIndex + 1}\}
            className="carousel-image"
          />
        </div>
        
        <button 
          className="carousel-btn carousel-btn-next" 
          onClick={goToNext}
          aria-label="Next image"
        >
          &#8250;
        </button>
      </div>
      
      <div className="carousel-indicators">
        {images.map((_, index) => (
          <button
            key={index}
            className={\carousel-indicator ${index === currentIndex ? 'active' : ''}\}
            onClick={() => goToSlide(index)}
            aria-label={\Go to slide ${index + 1}\}
          />
        ))}
      </div>
    </div>
  )
}
ืจื•ืื™ื ืืช ื”ื‘ืขื™ื”? ื‘ื•ืื• ื ืชืžืงื“ ื‘ืืคืงื˜:
  useEffect(() => {
    if (images.length <= 1) return

    const timer = setInterval(() => {
      setCurrentIndex((prevIndex) => (prevIndex + 1) % images.length)
    }, interval)

    return () => clearInterval(timer)
  }, [images.length, interval])

ToCode
1 419
ืฉืœื•ืฉ ื”ื˜ื™ื•ืช ืฉืœ AI ืฉื—ืฉื•ื‘ ืœื”ื›ื™ืจ ื›ืฉื›ื•ืชื‘ื™ื ืงื•ื“ ื›ื•ืœื ืžืชืœื•ื ื ื™ื ืขืœ ื”ืงื•ื“ ื”ื’ืจื•ืข ืฉ AI ืžื™ื™ืฆืจ ืื‘ืœ ืžื” ื–ื” ื‘ื“ื™ื•ืง ืื•ืžืจ? ืžืชื™ ื” AI ื˜ื•ืขื”? ื•ืื™ืš ื‘ื“ื™ื•ืง ื”ื•ื ืžืกื‘ืš ืืช ื”ืชื•ื›ื ื™ื•ืช ืฉืœื ื•? ืžื—ืจ ื‘ืขืฉืจ ื‘ื‘ื•ืงืจ ืื ื™ ืืขื‘ื™ืจ ื•ื•ื‘ื™ื ืจ ืฉืœ ืฉืขื” ืขื ื”ืกื‘ืจื™ื ื•ื“ื•ื’ืžืื•ืช ืกืคืฆื™ืคื™ื™ื ืขืœ ื”ื”ื˜ื™ื•ืช ืฉืœ AI ื‘ื›ืชื™ื‘ืช ืงื•ื“ ื•ืœืžื” ื—ืฉื•ื‘ ืœืฉื™ื ืœื‘ ื›ืฉืื ื—ื ื• ื ืขื–ืจื™ื ื‘ื• ื‘ืงื™ื“ื•ื“. ืžื•ื“ืขื•ืช ื•ื”ื™ื›ืจื•ืช ืขื ื”ื˜ื™ื•ืช ืืœื” ื™ื›ื•ืœื” ืœืขืฉื•ืช ืืช ื”ื”ื‘ื“ืœ ื‘ื™ืŸ ืงื™ื“ื•ื“ ืืคืงื˜ื™ื‘ื™ ืขื AI ืœื‘ื–ื‘ื•ื– ื–ืžืŸ, ื›ื™ ื›ืฉืื ื—ื ื• ื™ื•ื“ืขื™ื ืœืžื” ืœืฆืคื•ืช ืื ื—ื ื• ื™ื•ื“ืขื™ื ืœืชืงืŸ ืืช ื–ื”. ืื ืžืกืชื“ืจ ืœื›ื ืžื•ื–ืžื ื™ื ืœื”ืฆื˜ืจืฃ ืืœื™ื ื• ื‘ื–ื•ื - ืฆืจื™ืš ืจืง ืœื”ื™ืจืฉื ื›ืืŸ ื•ืžืงื‘ืœื™ื ืงื™ืฉื•ืจ ืœืžื™ื™ืœ: https://tocode.ravpage.co.il/tocodeai ืขื›ืฉื™ื• ื‘ื•ืื• ื ืจืื” ืืช ืขื™ืงืจื™ ื”ื“ื‘ืจื™ื. ื”ืขื“ืคื” ืœืชื›ื ื•ืช ืžื•ื ื—ื” ืขืฆืžื™ื ืืชื’ืจ ืจืืฉื•ืŸ ื‘ืขื‘ื•ื“ื” ืขื AI ื”ื•ื ื”ื”ืขื“ืคื” ืฉืœื• ืœื’ื™ืฉืช Object Oriented. ืขืœ ืคื ื™ื• ืชื›ื ื•ืช ืžื•ื ื—ื” ืขืฆืžื™ื ื”ื™ื ื’ื™ืฉื” ืคื•ืคื•ืœืจื™ืช ื‘ืชื›ื ื•ืช, ืฉืคื•ืช ืจื‘ื•ืช ืžืฉืชืžืฉื•ืช ื‘ื” ื‘ืชื•ืจ ืคืจื“ื™ื’ืžื” ืžื•ื‘ื™ืœื” ืื• ืืฃ ื™ื—ื™ื“ื” ื•ืžืฆื•ืคื” ืžืžืคืชื—ื™ื ืœื”ื›ื™ืจ ืืช ื”ืคืจื“ื™ื’ืžื”. ืื‘ืœ ื”ื‘ืขื™ื” ื”ื™ื ื”"ืื™ืš". ื‘ื—ื™ืจืช ื”ืงืœืืกื™ื ื•ื”ื’ื“ืจืช ื”ืื‘ืกื˜ืจืงืฆื™ื•ืช ื“ื•ืจืฉืช ื”ื™ื›ืจื•ืช ืขื ื”ืžืขืจื›ืช, ื ื™ืกื™ื•ืŸ ื•ื”ืจื‘ื” ืคืขืžื™ื ื—ืฉื™ื‘ื” ื™ืฆื™ืจืชื™ืช. ื›ืฉ AI ืžืืจื’ืŸ ืงื•ื“ ืœืงืœืืกื™ื ื”ื•ื ืžืคืกืคืก ื”ื–ื“ืžื ื•ื™ื•ืช ืœืงืœืืกื™ื ื˜ื•ื‘ื™ื, ืžื™ื™ืฆืจ ื›ืคืœ ืงื•ื“ ื‘ื™ืŸ ืงืœืืกื™ื ื•ืžื’ื“ื™ืจ ืงืœืืกื™ื ืฉื™ื”ื™ื” ืงืฉื” ืœื”ืชืื™ื ืื•ืชื ืœืชื ืื™ื ื”ืžืฉืชื ื™ื ื‘ืขืชื™ื“. ื“ื•ื’ืžื” ืจืืฉื•ื ื” ื”ื™ื Rails ื• Stimulus - ื‘ื™ืงืฉืชื™ ืž AI ืœื›ืชื•ื‘ ืžื•ื ื” ืœื—ื™ืฆื•ืช ื‘ Stimulus ื•ืงื™ื‘ืœืชื™ ืืช ื”ืงื•ื“ ื”ื‘ื:
import { Controller } from "@hotwired/stimulus"

// Connects to data-controller="click-counter"
export default class extends Controller {
  static targets = ["count"]
  static values = { count: Number }

  connect() {
    // Initialize count if not set
    if (!this.hasCountValue) {
      this.countValue = 0
    }
  }

  increment() {
    this.countValue++
  }

  countValueChanged() {
    this.countTarget.textContent = this.countValue
  }
}
ืžื“ื•ื‘ืจ ื‘ืงืœืืก JavaScript ื•ืฆืจื™ืš ืœื”ื’ื™ื“ - ื”ืงื•ื“ ืขื•ื‘ื“. ืงืœื•ื“ ืฉืžืข ืžื•ื ื” ืœื—ื™ืฆื•ืช ื•ืžื™ื“ ื™ืฆืจ ืงืœืืก ืฉืžืกืคืจ ื”ืœื—ื™ืฆื•ืช ื”ื•ื ืžืฉืชื ื” Instance Variable ื‘ืชื•ืš ื”ืงืœืืก. ื”ื‘ืขื™ื”? ื”ืขืจืš ืฉืœ ืžืกืคืจ ื”ืœื—ื™ืฆื•ืช ื›ื‘ืจ ื›ืชื•ื‘ ื‘ DOM ื‘ืชื•ืš ื”ืืœืžื ื˜ this.countTarget. ืืคืฉืจ ืœืจืื•ืช ืืคื™ืœื• ื‘ืงื•ื“ ืฉื ื•ืฆืจ ืฉื›ืœ ืžื” ืฉื”ื•ื ืขื•ืฉื” ืฉื ื–ื” ืœื”ืขืœื•ืช ืืช ื”ืขืจืš ืฉืœ ืื•ืชื• ืžืฉืชื ื” this.countValue ื•ืื– ืœื›ืชื•ื‘ ืื•ืชื• ืœ textContent ืฉืœ ื”ืืœืžื ื˜. ืงื•ื“ ื ื›ื•ืŸ ื•ืงืฆืจ ื™ื•ืชืจ ื™ื”ื™ื”:
import { Controller } from "@hotwired/stimulus"

// Connects to data-controller="click-counter"
export default class extends Controller {
  static targets = ["count"]

  increment() {
    this.countTarget.textContent++
  }
}
ื”ื”ื˜ื™ื” ืฉืœ AI ืœื›ื™ื•ื•ืŸ ืคื™ืชื•ื— ืžื•ื ื—ื” ืขืฆืžื™ื ื•ื”ื›ืžืกืช ืžื™ื“ืข ื’ืจืžื• ืœื™ืฆื™ืจืช ืงื•ื“ ืžื ื•ืคื— ืฉื™ื”ื™ื” ืงืฉื” ื™ื•ืชืจ ืœืฉื ื•ืช ื•ืœืชื—ื–ืง ื‘ืขืชื™ื“. ืžืกื•ื‘ืš ื™ื•ืชืจ ื˜ื•ื‘ ืžืคืฉื•ื˜ ื‘ื–ืŸ ืฉืœ ืคื™ื™ืชื•ืŸ ื›ืชื•ื‘ Simple is better than Complex ืื‘ืœ ืืฆืœ AI ื”ืกื™ืคื•ืจ ื”ื•ื ื”ืคื•ืš - ืื™ืคื” ืฉืืคืฉืจ ืœื‘ื ื•ืช ืคื™ืชืจื•ืŸ ืœื‘ืขื™ื” ืžืกื•ื‘ื›ืช ื™ื•ืชืจ ื”ื•ื ื™ืขื“ื™ืฃ ืืช ื”ืคื™ืชืจื•ืŸ ื”ืžืกื•ื‘ืš. ืื™ืคื” ืฉื™ืฉ ืงื•ื“ ืžืกื•ื‘ืš ืฉืคื•ืชืจ ื‘ืขื™ื” ื–ื” ืžืงื‘ืœ ืขื“ื™ืคื•ืช. ื‘ื“ื•ื’ืžื” ืจืืฉื•ื ื” ื‘ื™ืงืฉืชื™ ืžืงืœื•ื“ ืœื™ื™ืฆืจ ืžืฉื—ืง ืื™ืงืก ืขื™ื’ื•ืœ ื ื’ื“ ื”ืžื—ืฉื‘. ื‘ืœื™ ืœืฆื™ื™ืŸ ืื™ืš ืœืžืžืฉ ืืช ืฉื—ืงืŸ ื”ืžื—ืฉื‘, ืงืœื•ื“ ื‘ื—ืจ ืœืžืžืฉ ืืœื’ื•ืจื™ืชื min-max ื›ื“ื™ ืœื™ื™ืฆืจ ืืช ืฉื—ืงืŸ ื”ืžื—ืฉื‘ ื”ื˜ื•ื‘ ื‘ื™ื•ืชืจ ืฉื”ื•ื ืžื›ื™ืจ. ื‘ื”ืฉื•ื•ืื” ืœื‘ื ื™ ืื“ื, ื›ืœ ื”ืชืœืžื™ื“ื™ื ื”ืื ื•ืฉื™ื™ื ืฉืœื™ ื‘ืงื•ืจืกื™ ืคื™ื™ืชื•ืŸ ืฉืงื™ื‘ืœื• ืžืฉื™ืžื” ืœืžืžืฉ ืื™ืงืก ืขื™ื’ื•ืœ ืžื™ืžืฉื• ืงื•ื“ื ืฉื—ืงืŸ ืžื—ืฉื‘ ืฉื–ื– ื‘ืื•ืคืŸ ืืงืจืื™ ื•ืจืง ืื—ืจ ื›ืš ื›ืžืฉื™ืžืช ื‘ื•ื ื•ืก ืืช ืฉื—ืงืŸ ื”ืžื—ืฉื‘ ื”ื—ื›ื. ื‘ื“ื•ื’ืžื” ืฉื ื™ื” ื‘ื™ืงืฉืชื™ ืžืฉื—ืง ื‘ื•ืœ ืคื’ื™ืขื”. ื–ื” ื”ืงื•ื“ ืฉืงืœื•ื“ ื™ืฆืจ ื›ื“ื™ ืœื–ื”ื•ืช ื›ืžื” ื‘ื•ืœื™ื ื•ื›ืžื” ืคื’ื™ืขื•ืช ื™ืฉ ื‘ื ื™ื—ื•ืฉ ืžืกื•ื™ื:
    def evaluate_guess(self, guess: List[int]) -> Tuple[int, int]:
        """
        Evaluate a guess and return the number of bulls and cows.
        
        Args:
            guess: List of integers representing the guess
            
        Returns:
            Tuple of (bulls, cows) where:
            - Bulls: correct digits in correct positions
            - Cows: correct digits in wrong positions
        """
        if len(guess) != self.code_length:
            raise ValueError(f"Guess must be {self.code_length} digits long")
        
        if not all(self.min_digit <= digit <= self.max_digit for digit in guess):
            raise ValueError(f"All digits must be between {self.min_digit} and {self.max_digit}")
        
        bulls = sum(1 for i in range(self.code_length) if guess[i] == self.secret_code[i])

ToCode
1 419
ื”ืชื—ื•ืฉื” ืฉื”ื ื” ื™ืฉ ื›ืœื™ ื—ื“ืฉ ืฉื ืงืจื AI ื•ื”ื•ื ื™ืคืชื•ืจ ืœื ื• ืืช ื›ืœ ื”ื‘ืขื™ื•ืช ืžื’ื™ืขื” ืžื”ื™ื™ืค ื’ื“ื•ืœ ืกื‘ื™ื‘ ื” AI ื•ืื– ื›ืฉืื ืฉื™ื ื‘ืื™ื ืœื”ืฉืชืžืฉ ื‘ื–ื” ื”ื ืžื’ืœื™ื ืฉื™ืฉ ืขืงื•ืžืช ืœืžื™ื“ื” ื•ืฉืืคื™ืœื• ืื—ืจื™ ืขืงื•ืžืช ื”ืœืžื™ื“ื” ื”ื ื›ืŸ ืžื”ื™ืจื™ื ื™ื•ืชืจ ืื‘ืœ ืœื ืคื™ 100 ื•ื’ื ืœื ืคื™ 10 ืื ื™ ื”ืื—ืจื•ืŸ ืฉื™ื–ืœื–ืœ ื‘ AI. ืืœื” ื›ืœื™ื ืžื“ื”ื™ืžื™ื. ืื‘ืœ ืฆืจื™ืš ืœื”ื’ื™ื“ ืœื ื›ืœ ื”ื”ื™ื™ืค ืžื•ืฆื“ืง ืžืชื›ื ืชื™ื ืœื ื”ื•ืœื›ื™ื ืœื”ื™ืขืœื ื™ืฉ ืขืงื•ืžืช ืœืžื™ื“ื”

ToCode
1 419
ืงื˜ืข ืžืชื•ืš ืžื™ื™ืœ ืฉืฉืœื— ืื“ื ื•ื•ืชืณืŸ (ื”ื™ื•ืฆืจ ืฉืœ ื˜ื™ื™ืœื•ื•ื™ื ื“) ืขืœ ืคืจื•ื™ืงื˜ ืฉื”ื ื‘ื ื• - ืฉื™ืžื• ืœื‘ ืœ AI But even with all this effort, the results were honestly so inconsistent that I'm absolutely certain that reviewing + polishing all of the work done by the robots took more time than if we just did every single block by hand in the first place ๐Ÿ˜† We signed up for this project thinking that with AI we could do it in maybe ~6 weeks, and it turned out to be more like ~12 weeks.

ToCode
1 419
ืฉื™ืžื• ืœื‘ ืœืชื™ืงื•ืŸ - ื”ืคืจืžื˜ืจ ื”ืฉื ื™ ืœ exec ืฆืจื™ืš ืœื”ื™ื•ืช ns

ToCode
1 419
ื˜ื™ืค ืคื™ื™ืชื•ืŸ - ื”ืจืฆืช ืชื•ื›ื ื™ืช ื•ื”ื—ื–ืจืช ื”ืชื•ืฆืื” ื”ืคืงื•ื“ื” eval ื‘ืคื™ื™ืชื•ืŸ ืžืจื™ืฆื” ืคืงื•ื“ื” ื‘ื•ื“ื“ืช ื•ืžื—ื–ื™ืจื” ืืช ื”ืชื•ืฆืื”:
result = eval('2 + 5')
ืื‘ืœ ื‘ื ื™ื’ื•ื“ ืœ JavaScript, ื” eval ืฉืœ ืคื™ื™ืชื•ืŸ ืžืงื‘ืœ ืจืง ืคืงื•ื“ื” ืื—ืช. ื–ื” ืœื ืขื•ื‘ื“:
result = eval("""
import os
os.name
""")
ื‘ืžืงื•ื eval, ื”ืคืงื•ื“ื” exec ื™ื•ื“ืขืช ืœืงื‘ืœ ืงื•ื“ ื•ืœื”ืจื™ืฅ ืื•ืชื•. ื”ื‘ืขื™ื” ืขื exec ื”ื™ื ืฉื”ื™ื ืœื ืžื—ื–ื™ืจื” ืขืจืš ื•ืœื›ืŸ ื‘ืฉื‘ื™ืœ ืœื”ืฉืชืžืฉ ื‘ื” ืื ื™ ืืจืฆื” ื‘ืชื•ืš ื”ืงื•ื“ ืฉืื ื™ ืžืจื™ืฅ ืœืฉื™ื ืขืจืš ืœืชื•ืš ื’ืœื•ื‘ืืœื™. ืื ื™ ืžืขื‘ื™ืจ ืœ exec ืžื™ืœื•ืŸ ื‘ืชื•ืจ ืคืจืžื˜ืจ ืฉื ื™ ื•ื›ืœ ื”ืžืฉืชื ื™ื ื”ื’ืœื•ื‘ืืœื™ื™ื ื™ื™ืฉืžืจื• ืœืื•ืชื• ืžื™ืœื•ืŸ. ื–ื” ื ืจืื” ื›ื›ื”:
ns = {}
exec("""
import os
result = os.name
""")

print(ns['result'])
ืœืกื™ื•ื ื”ืจื‘ื” ืคืขืžื™ื ื ืจืฆื” ืœืขื˜ื•ืฃ ืืช ื” exec ื‘ try/except ื›ื“ื™ ืœื˜ืคืœ ื‘ืฉื’ื™ืื•ืช ืชื—ื‘ื™ืจ ืœื“ื•ื’ืžื”:
try:
    ns = {}
    exec("""
    import os
    result = os.name
    """)

    print(ns['result'])
except SyntaxError as e:
    print(f"Syntax error: {e}")
ืคืงื•ื“ืช exec ื™ื›ื•ืœื” ืœืขื–ื•ืจ ื›ืฉืื ื™ ืจื•ืฆื” ืœื˜ืขื•ืŸ ืงื•ื ืคื™ื’ื•ืจืฆื™ื” ืžืงื•ื‘ืฅ ืฉื ืจืื” ื›ืžื• ืคื™ื™ืชื•ืŸ ืœื“ื•ื’ืžื” ืงื•ื‘ืฅ ื›ื–ื”:
* settings.conf *

font_face = ""
font_size = 10
line_numbers = True
tab_size = 4
auto_indent = True
ื”ืคืขืœืช ื”ืงื•ื‘ืฅ ื‘ exec ื•ื”ืขื‘ืจืช ืžื™ืœื•ืŸ ืจื™ืง ื‘ืคืจืžื˜ืจ ื”ืฉื ื™ ืชืžืœื ืืช ื”ืžื™ืœื•ืŸ ื‘ืžืคืชื—ื•ืช ืžื”ืงื•ื‘ืฅ. ื ืฉื™ื ืœื‘ ืฉื’ื exec ื•ื’ื eval ืžื’ื™ืขื™ื ืขื ืกื™ื›ื•ื ื™ ืื‘ื˜ื—ื” ืžืฉืžืขื•ืชื™ื™ื ื•ื™ืฉ ืœื”ื™ื–ื”ืจ ื•ืœื”ืคืขื™ืœ ืื•ืชื ืจืง ื‘ืชื•ืš ืกื‘ื™ื‘ืช sandbox. ืืคื™ืœื• ืื ืื ื—ื ื• ืจืง ืจื•ืฆื™ื ืœื”ืจื™ืฅ ืงื•ื“ ืฉ AI ื™ืฆืจ ืžืชื•ืš ืคืจื•ืžืคื˜ ืฉืื ื™ ืฉืœื—ืชื™. ืœืžื™ื“ืข ื ื•ืกืฃ ื•ืขื•ื“ ื“ื•ื’ืžืื•ืช ืขืœ exec ืฉื•ื•ื” ืœืงืจื•ื ื›ืืŸ: https://realpython.com/python-exec/

ToCode
1 419
ืื™ืŸ ืขืงื•ืžืช ืœื™ืžื•ื“ ื–ื” ืžืจื’ื™ืฉ ื›ื›ื” ืขื AI ืœืคืขืžื™ื, ืœื? ืฉืคืช ื”ืชื›ื ื•ืช ื”ืจืืฉื•ื ื” ืฉืœืžื“ืชื™ ื ืงืจืื” Turbo Pascal. ื”ื™ื” ืœื™ ืกืคืจ ื‘ืฉื ื”ืžื“ืจื™ืš ื”ืฉืœื ืœ Turbo Pascal 6 ื•ื”ื™ื• ื‘ื• ื”ืกื‘ืจื™ื ื•ืงื˜ืขื™ ืงื•ื“ ื•ื”ื™ื™ืชื™ ืžืขืชื™ืง ืงื˜ืขื™ ืงื•ื“ ืžื”ืกืคืจ ืœืžื—ืฉื‘ ื•ืžื ืกื” ืœื”ื‘ื™ืŸ ืžื”ื”ืกื‘ืจื™ื ืžื” ื›ืœ ื“ื‘ืจ ืขื•ืฉื” ื•ื’ื ืœืฉื ื•ืช ืืช ื”ืงื•ื“. ืืคื™ืœื• ืœื›ืชื•ื‘ ืชื•ื›ื ื™ื•ืช ืคืฉื•ื˜ื•ืช ืœืงื— ื”ืจื‘ื” ื–ืžืŸ ื•ื›ืœ ืฉื™ื ื•ื™ ืงื˜ืŸ ื”ื™ื” ื›ืจื•ืš ื‘ื”ืžื•ืŸ ื ื™ืกื™ื•ื ื•ืช ืฉืœื ืขื‘ื“ื•. ืขื‘ืจื ื• ื”ืจื‘ื” ืžืื–. ื”ื™ื•ื ืืคืฉืจ ืœื”ื™ื›ื ืก ืœืงื•ืคื™ื™ืœื•ื˜ ืื• ืงืจืกืจ ืื• ื‘ื™ื™ืก44 ื•ืœืงื‘ืœ ืืช ื”ืชื•ื›ื ื™ืช ืฉืืชื” ืจื•ืฆื”, ืœื‘ืงืฉ ืฉื™ื ื•ื™ ื•ืœืงื‘ืœ ืื•ืชื•. ื‘ืœื™ ื˜ืขื•ื™ื•ืช ืชื—ื‘ื™ืจ, ื‘ืœื™ ื‘ืขื™ื•ืช ืงื•ืžืคื™ืœืฆื™ื” ื•ืขื ื”ืกื‘ืจ ืžืœื ื•ื‘ืขื‘ืจื™ืช ืžื” ื›ืœ ืฉื•ืจื” ืขื•ืฉื”. ืœื ืคืœื ืฉืื ืฉื™ื ื—ื›ืžื™ื ื›ื•ืชื‘ื™ื: > Learning how to use LLMs in a coding workflow is trivial ืื ืขื‘ืจืช ืืช ื›ืœ ื”ื“ืจืš ืฉืื ื—ื ื• ืขื‘ืจื ื•. ืื ืืชื” ื›ื‘ืจ ื™ื•ื“ืข ืœื›ืชื•ื‘ ืงื•ื“, ืื– AI ื™ืกื‘ืš ืื•ืชืš? ืืชื” ืจืง ื›ื•ืชื‘ ืฉืืœื” ื‘ืื ื’ืœื™ืช ื•ืžืงื‘ืœ ืชืฉื•ื‘ื”. ืžื” ื™ื•ืชืจ ืงืœ ืžื–ื”? ื›ืฉืฉืืœืชื™ ื—ื‘ืจ ืื—ืจ ืื™ืš ื”ื ืžืชื›ื•ื ื ื™ื ืœืฉื™ืœื•ื‘ ืงื•ืคื™ื™ืœื•ื˜ ื‘ืฆื•ื•ืชื™ ื”ืคื™ืชื•ื— ื”ื’ื™ืฉื” ื”ื™ืชื” "ืคืฉื•ื˜ ื ื™ืชืŸ ืœืžืชื›ื ืชื™ื ื’ื™ืฉื” ื•ื”ื ื›ื‘ืจ ื™ื‘ื™ื ื• ืžื” ืฆืจื™ืš ืœืขืฉื•ืช". ื—ื‘ืจ ืื—ืจ ื”ืกื‘ื™ืจ ืœื™ ืฉื–ื” ืคืฉื•ื˜ "ื˜ืื‘ ื˜ืื‘ ื˜ืื‘". ืื‘ืœ ืื– ื”ืคื•ืกื˜ ืžืกืชื™ื™ื ืขื ื”ืชืœื•ื ื”: > Every time I tried using an LLM for core features of applications I develop at work, the implementations were questionable and I spent at least as much time rewriting the code than I would have spent writing it from scratch. ื•ืœืžืขืฉื” ื–ืืช ื”ืชืœื•ื ื” ืฉืื ื™ ืฉื•ืžืข ื”ื›ื™ ื”ืจื‘ื” ืคืขืžื™ื ืžืžืคืชื—ื™ื ืฉืขื•ื‘ื“ื™ื ืขื AI ื›ืฉืื ื™ ืฉื•ืืœ ืื™ืš ื”ื•ืœืš ืขื ื–ื”. ืขืงื•ืžืช ื”ืœื™ืžื•ื“ ืฉืœ AI ืžื‘ืœื‘ืœืช. ื›ืฉืจื•ื›ื‘ื™ื ืขืœ ืื•ืคื ื™ื™ื ืืชื” ื™ื•ื“ืข ืื ืืชื” ืžืฆืœื™ื— ื›ื™ ืื—ืจืช ืืชื” ื ื•ืคืœ. ื›ืฉืœืžื“ืชื™ ืœื›ืชื•ื‘ ืงื•ื“ ื•ืœื ื”ืฆืœื—ืชื™ ื”ืชื•ื›ื ื™ืช ืœื ืจืฆื” ืื• ื–ืจืงื” ืฉื’ื™ืื•ืช. ืื‘ืœ AI? ืื ื”ื•ื ืœื ื ื•ืชืŸ ืชื•ืฆืื” ืžืกืคื™ืง ื˜ื•ื‘ื” ืžื™ื“ ืื•ืžืจื™ื ืฉื–ื” ื‘ื’ืœืœ ืฉื™ืฉ ื™ื•ืชืจ ืžื“ื™ ื”ื™ื™ืค, ืฉื›ืœื™ AI ืœื ื—ื›ืžื™ื ืžืกืคื™ืง ืื• ืกื™ืคื•ืจ ื“ื•ืžื”. ื›ื“ืื™ ืœื–ื›ื•ืจ: 1. ื’ื ืœ AI ื™ืฉ ืขืงื•ืžืช ืœื™ืžื•ื“. 2. ืืฃ ืื—ื“ ืœื ื™ื›ื•ืœ ืœื”ื—ืœื™ืฃ ืžืชื›ื ืชื™ื ื‘ AI. 3. ื”ื™ื›ืจื•ืช ืขื ื”ื™ื›ื•ืœื•ืช, ื”ืžื’ื‘ืœื•ืช ื•ืื•ืคืŸ ื”ืขื‘ื•ื“ื” ืฉืœ AI ืžืฉืคืจืช ืžืฉืžืขื•ืชื™ืช ืืช ื”ืชื•ืฆืื” ืฉืžืงื‘ืœื™ื ืžื”ื›ืœื™.