es
Feedback
ToCode

ToCode

Ir al canal en Telegram

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

Mostrar mรกs
1 420
Suscriptores
+124 horas
+17 dรญas
-430 dรญas
Archivo de publicaciones
ToCode
1 420
ื”ื™ื•ื ืœืžื“ืชื™: ื‘ื“ื™ืงืช ืžืืคื™ื™ืŸ ื‘ Beautiful Soup ื‘ืคื™ื™ืชื•ืŸ ื”ืงื•ื“ ื”ื‘ื ื ื›ืฉืœ ื›ื™ ืœืœื™ื ืง ื”ืฉื ื™ ืื™ืŸ ืžืืคื™ื™ืŸ href:
from bs4 import BeautifulSoup
text = """<div>
    <a href="#a">a</a>
    <a>not a link</a>
</div>"""

if __name__ == "__main__":
    soup = BeautifulSoup(text, features="html.parser")
    for link in soup.find_all("a"):
        print(link["href"])
ื™ื•ืชืจ ืžืขื ื™ื™ืŸ ืœืฉื™ื ืœื‘ ืฉ bs4.Tag ืœื ืžื™ืžืฉื• ื‘ื“ื™ืงืช ืฉื™ื™ื›ื•ืช ื”ืงื•ื“ ื”ื–ื” ืจืฅ ืื‘ืœ ืœื ืžื“ืคื™ืก ืืฃ ืœื™ื ืง:
for link in soup.find_all("a"):
    if "href" in link:
        print(link["href"])
ืžื” ืขื•ืฉื™ื? ื“ืจืš ืื—ืช ื”ื™ื ืœื”ืกืชื›ืœ ืขืœ ืžืืคื™ื™ืŸ attrs ืฉืœ ื”ืชื’, ืฉื”ื•ื ื›ืŸ ืžื™ืœื•ืŸ:
for link in soup.find_all("a"):
    if "href" in link.attrs:
        print(link["href"])
ื“ืจืš ืฉื ื™ื” ื”ื™ื ืœื”ืฉืชืžืฉ ื‘ get ื‘ืžืงื•ื ื‘ืกื•ื’ืจื™ื™ื ืžืจื•ื‘ืขื™ื, ื›ื™ get ืžื—ื–ื™ืจ None ื›ืฉื”ืžืืคื™ื™ืŸ ืœื ืงื™ื™ื:
for link in soup.find_all("a"):
    if link.get("href") is not None:
        print(link["href"])

ToCode
1 420
ืฉื’ื™ืื•ืช ื‘ืชื•ืจ ืขืจื›ื™ื ื‘ืคื™ื™ืชื•ืŸ? ืื—ืช ื”ืกื™ื‘ื•ืช ืฉืขื‘ืจืชื™ ืžืคื™ื™ืชื•ืŸ ืœืกืงืืœื” ื‘ืคืจื•ื™ืงื˜ ื—ื“ืฉ ืฉืื ื™ ื‘ื•ื ื” ื”ื™ื ืžืขืจื›ืช ื”ื˜ื™ืคื•ืกื™ื ืฉืœ ืกืงืืœื”, ื•ื›ืŸ ื‘ื™ืŸ ื”ืฉืืจ ื’ื ืขื‘ื•ื“ื” ืขื ืฉื’ื™ืื•ืช ื‘ืชื•ืจ ืขืจื›ื™ื. ืžืชื›ื ืชื™ ืคื™ื™ืชื•ืŸ ืจื‘ื™ื ืฉืžื’ื™ืขื™ื ืœืกืงืืœื” ืื• ื’ื• ืขื•ื‘ืจื™ื ื—ื•ื•ื™ื” ื“ื•ืžื” ื•ืชื•ื”ื™ื ืื™ืš ืœื—ื–ื•ืจ ืœืขื•ืœื ื”ืคื™ื™ืชื•ื ืื™ ื‘ื• ื›ืœ ืฉื•ืจื” ืฉืื ื—ื ื• ืžืคืขื™ืœื™ื ื™ื›ื•ืœื” ืœื–ืจื•ืง Exception ื•ืœืฉื ื•ืช ืืช ื›ืœ ืžื”ืœืš ื”ืชื•ื›ื ื™ืช, ื•ืื™ืŸ ืœื ื• ื“ืจืš ื˜ื•ื‘ื” ื‘ื”ื’ื“ืจื” ืฉืœ ืคื•ื ืงืฆื™ื” ืœื”ืฆื”ื™ืจ ืฉืื•ืชื” ืคื•ื ืงืฆื™ื” ื–ื•ืจืงืช Exception. ื ื™ืกื™ื•ืŸ ืื—ื“ ืœื”ืชืžื•ื“ื“ ืขื ื”ืืชื’ืจ ื”ื•ืคื™ืข ื‘ืคื•ืกื˜ ืฉืœ ืžื”ื ื“ืกื™ ื—ื‘ืจืช Inngest. ื”ื ื”ืฆื™ืขื• ืœืืจื’ืŸ ืืช ื”ืงื•ื“ ืฉืœื”ื ื›ืš ืฉืœืขื•ืœื ืœื ื™ื–ืจื•ืง Exception ื•ื‘ืžืงื•ื ื–ื” ื™ื—ื–ื™ืจ ืชืžื™ื“ ืขืจืš ืื• ืงื•ื“ ืฉื’ื™ืื”, ืœื“ื•ื’ืžื”:
* Define a function that returns a union of a User and an error *
def get_user(user_id: str) -> User | Exception:
    rows = users.find(user_id=user_id)
    if len(rows) == 0:
        return Exception("user not found")
    return rows[0]

def rename_user(user_id: str, name: str) -> User | Exception:
    # Consume the function
    user = get_user(user_id)
    if isinstance(user, Exception):
        return user
    user.name = name
    return user
ื‘ืžื‘ื˜ ืจืืฉื•ืŸ ื–ื” ื ืจืื” ืžืขื ื™ื™ืŸ ื•ืื•ืœื™ ืžื–ื›ื™ืจ ืืช ืจืืกื˜ ืื• ื’ื•. ื”ืคื•ื ืงืฆื™ื” get_user ื™ื›ื•ืœื” ืœื”ืฆืœื™ื— ืื• ืœื”ื™ื›ืฉืœ ื•ื”ืขื•ื‘ื“ื” ื”ื–ืืช ืžื•ืคื™ืขื” ื‘ื—ืชื™ืžื” ืฉืœื”, ื•ื›ืœ ืžื™ ืฉืžืคืขื™ืœ ืื•ืชื” ื•ืžื‘ืฆืข ื‘ื“ื™ืงืช ื˜ื™ืคื•ืกื™ื ื™ื”ื™ื” ื—ื™ื™ื‘ ืœื•ื•ื“ื ืฉื”ืคื•ื ืงืฆื™ื” ื”ืฆืœื™ื—ื” ืœืคื ื™ ืฉืืคืฉืจ ื™ื”ื™ื” ืœืขื‘ื•ื“ ืขื ื”ืขืจืš. ืื‘ืœ ืงืฉื” ืœืจืื•ืช ืื™ืš ืžืžืฉืง ื›ื–ื” ื™ื•ื‘ื™ืœ ืœืฉื™ืคื•ืจ ื‘ืงื•ื“. ื”ืชื•ืฆืื” ื”ื™ื•ืชืจ ืกื‘ื™ืจื” ื”ื™ื ืงื•ื“ ื‘ืกื’ื ื•ืŸ Java ืฉืžื›ืจื™ื— ืื•ืชื ื• ืœื‘ื“ื•ืง ืื ืคื•ื ืงืฆื™ื” ื ื›ืฉืœื” ื‘ื›ืœ ืงืจื™ืื” ืœืคื•ื ืงืฆื™ื”. ื–ื” ืงืฆืช ื™ื•ืชืจ ื˜ื•ื‘ ืžื”ืคื–ืจื ื•ืช ืฉืœ ืคื™ื™ืชื•ืŸ ืื‘ืœ ื™ื•ืฆืจ ืขื•ืžืก ืœื ืกื‘ื™ืจ ืขืœ ื”ืงื•ื“ ืฉืงื•ืจื ืœืคื•ื ืงืฆื™ื•ืช. ื ืฉื•ื•ื” ืืช ื–ื” ืœืกืงืืœื” (ืื• ืฉืคื•ืช ืื—ืจื•ืช ืฉืžืืคืฉืจื•ืช ืฉื’ื™ืื”-ื‘ืชื•ืจ-ืขืจืš):
case class User(id: Long, name: String)

val users: List[User] = List(
  User(1, "glassgrieving"),
  User(2, "wrensponge"),
  User(3, "horizonhow"))

def getUserIndex(userId: Long): Option[Int] =
  users.indexWhere(p => p.id == userId) match
    case i if i >= 0 => Some(i)
    case _ => None

def renameUser(userId: Long, newName: String): Option[List[User]] =
  for {
    index <- getUserIndex(userId)
  } yield users.updated(index, User(userId, newName))
ื‘ื’ื™ืจืกืช ื”ืกืงืืœื” ื”ื—ืชื™ืžื” ืฉืœ ื”ืคื•ื ืงืฆื™ื” ื‘ืจื•ืจื” ืœื’ื‘ื™ ื”ืกื™ื›ื•ืŸ ืœื›ื™ืฉืœื•ืŸ - ืื ื—ื ื• ืžื—ื–ื™ืจื™ื Option ื•ืœื ืืช ื”ืื•ื‘ื™ืงื˜ ื”ื ื“ืจืฉ, ื• Option ื‘ืกืงืืœื” ืขืฉื•ื™ ืœื”ื—ื–ื™ืง ืขืจืš ืื‘ืœ ื’ื ื™ื›ื•ืœ ืœื”ื™ื•ืช ืจื™ืง. ื”ืงืกื ืžื’ื™ืข ื‘ืคื•ื ืงืฆื™ื” ื”ืฉื ื™ื” renameUser. ื ื›ื•ืŸ ื‘ืกืงืืœื” ืื ื—ื ื• ืขื•ื‘ื“ื™ื ืขื ืžื™ื“ืข ืฉื”ื•ื Immutable ื•ืœื›ืŸ ื”ื™ื” ืฆืจื™ืš ืœืฉื ื•ืช ืงืฆืช ืืช ื”ื“ื•ื’ืžื” ื•ืœื”ื—ื–ื™ืจ ืจืฉื™ืžืช ืžืฉืชืžืฉื™ื ื—ื“ืฉื”, ืื‘ืœ ื”ื“ื‘ืจ ื”ื—ืฉื•ื‘ ื›ืืŸ ื”ื•ื ืื•ืคืŸ ื”ืขื‘ื•ื“ื” ืขื ื”ืขืจืš ืฉื™ื›ื•ืœ ืœื”ื™ื•ืช ืจื™ืง. ื”ืคื•ื ืงืฆื™ื” renameUser ื”ื™ื ื‘ืกืš ื”ื›ืœ ื—ื™ืฉื•ื‘ ื•ืขืจืš ืจื™ืง ืžืžืฉื™ืš ืœื”ื™ื•ืช ืจื™ืง ื›ืฉื”ื—ื™ืฉื•ื‘ ืžืžืฉื™ืš. ืืคืฉืจ ืœื—ืฉื•ื‘ ืขืœ ื–ื” ื›ืžื• ืกื™ืžืŸ ืฉืืœื” ื‘ื˜ื™ื™ืคืกืงืจื™ืคื˜ ื›ืฉืื ื—ื ื• ื›ื•ืชื‘ื™ื:
a?.b?.c?.d
ืื ืื—ื“ ืžื”ืขืจื›ื™ื ื™ื”ื™ื” ืจื™ืง ื”ื—ื™ืฉื•ื‘ ื›ื•ืœื• ื™ื—ื–ื™ืจ ืชื•ืฆืื” ืจื™ืงื” ื•ื”ื›ืœ ื‘ืกื“ืจ, ืื ื—ื ื• ืœื ืฆืจื™ื›ื™ื ืืช ื” if ืฉื‘ื•ื“ืง ืžื” ืขืจืš ื”ื”ื—ื–ืจ ื‘ืฆื•ืจื” ืžืคื•ืจืฉืช - ืฉื’ื™ืื” ื‘ืชื•ืจ ืขืจืš ืื•ืžืจืช ืฉืืคืฉืจ ืœื”ืžืฉื™ืš "ืœืขื‘ื•ื“" ืขื ื”ืฉื’ื™ืื” ื›ืื™ืœื• ื”ื™ืชื” ืขืจืš ืจื’ื™ืœ, ื•ืจืง ื›ืฉื ืฆื˜ืจืš ืืช ื”ืขืจืš ืœื”ื—ืœื™ื˜ ืžื” ืœืขืฉื•ืช ืขื ื”ืชื•ืฆืื” ืื• ื”ืฉื’ื™ืื”. ืœื›ืŸ ืœื“ืขืชื™ ื”ื ื™ืกื™ื•ืŸ ืฉืœ Inngest ืœืขืงื•ืฃ ืืช ืžื ื’ื ื•ืŸ ื–ืจื™ืงืช ื”ืฉื’ื™ืื•ืช ืฉืœ ืคื™ื™ืชื•ืŸ ืœื ืขื‘ื“ ืœื˜ื•ื‘ืชื, ื•ื”ืคืš ืžื ื’ื ื•ืŸ ืฉื”ื™ื” ื“ื™ ื ื•ื— ืœืขื‘ื•ื“ ืื™ืชื• ืœืžื ื’ื ื•ืŸ ืฉืจืง ืžื•ืกื™ืฃ ืกื™ืจื‘ื•ืœ ื•ืœื ื‘ืืžืช ื™ืคืชื•ืจ ืืช ื”ื‘ืขื™ื”, ื›ื™ exceptions ื‘ืคื™ื™ืชื•ืŸ ื ื–ืจืงื™ื ืžื›ืœ ืกืคืจื™ื” ื•ืžื›ืœ ืžื•ื“ื•ืœ ืžื•ื‘ื ื”.

ToCode
1 420
ืคื™ืชืจื•ืŸ Advent Of Code 2023 ื™ื•ื 10 ื—ืœืง ืจืืฉื•ืŸ ื‘ืกืงืืœื” ืื™ืŸ ื›ืžื• ื—ื™ื“ืช ื’ืจืคื™ื ื˜ื•ื‘ื” ื‘ืฉื‘ื™ืœ ืœื”ืชื—ื™ืœ ืืช ื”ืฉื‘ื•ืข, ื•ื›ืš ื”ื’ืขื ื• ืœื™ื•ื ื”ืขืฉื™ืจื™ ื›ื‘ืจ ืฉืœ Advent Of Code ื”ืื—ืจื•ืŸ ื‘ืกืงืืœื”. ืื ื™ ื›ืžื•ื‘ืŸ ืžืงื•ื•ื” ืขื“ ืกื•ืฃ ื”ืฉื ื” ืœืกื™ื™ื ืืช ื›ืœ 25 ื”ื—ื™ื“ื•ืช ื›ื“ื™ ืœื”ื’ื™ืข ืžื•ื›ืŸ ืœ 2024, ืื‘ืœ ื”ืชืžื“ื” ื–ื” ืชืžื™ื“ ื“ื‘ืจ ืžืกื•ื‘ืš. ื‘ื›ืœ ืžืงืจื” ื‘ื•ืื• ื ืจืื” ืžื” ื”ื›ื™ืŸ ืœื ื• ืืจื™ืง ื•ื•ืกื˜ืœ ืœื—ืœืง ื”ืจืืฉื•ืŸ ืฉืœ ื”ื—ื™ื“ื” ื”ืขืฉื™ืจื™ืช. ื—ื™ืคื•ืฉ ืžืขื’ืœ ื‘ื’ืจืฃ ื”ืงืœื˜ ื”ืคืขื ื”ื•ื ืชื™ืื•ืจ ืฉืœ ืžืกืœื•ืœื™ื ืืคืฉืจื™ื™ื ื‘ืžืจื—ื‘ ื‘ืคื•ืจืžื˜ ืงืฆืช ืžื•ื–ืจ, ืœื“ื•ื’ืžื”:
.....
.F-7.
.|.|.
.L-J.
.....
ื ืงื•ื“ื” ืžืกืžื ืช ืžืฉื‘ืฆืช ืฉื ืžืฆืืช ืžื—ื•ืฅ ืœื’ืจืฃ, ื•ื”ืกื™ืžื ื™ื ื”ืื—ืจื™ื ืžืกืžื ื™ื ืœืื™ื–ื” ืžืฉื‘ืฆื•ืช ื”ืžืฉื‘ืฆืช ืขื ื”ืกื™ืžืŸ ืžื—ื•ื‘ืจืช. ืœืžืฉืœ ื”ืžืฉื‘ืฆืช ืขื ื”ืกื™ืžืŸ - ื‘ืฉื•ืจื” ื”ืฉื ื™ื” ืžื—ื•ื‘ืจืช ืœืžืฉื‘ืฆืช ืขื ื”ืกื™ืžืŸ F ื•ื–ื• ืขื ื”ืกื™ืžืŸ 7. ืœื›ืœ ืกื™ืžืŸ ื™ืฉ ืžืฉืžืขื•ืช ืœืคื™ ื”ืคื™ืจื•ื˜ ื”ื‘ื: 1. ืงื• ืื ื›ื™ ืžื—ื‘ืจ ืืช ื”ืžืฉื‘ืฆื•ืช ืฉืžืขืœื™ื• ื•ืžืชื—ืชื™ื• 2. ืงื• ืื•ืคืงื™ ืžื—ื‘ืจ ืืช ื”ืžืฉื‘ืฆื•ืช ืžืฉื ื™ ืฆื“ื“ื™ื• 3. ื”ืื•ืช L ืžื—ื‘ืจืช ืืช ื”ืžืฉื‘ืฆืช ืฉืžืขืœื™ื” ืขื ื–ืืช ืฉืžื™ืžื™ื ื” 4. ื”ืื•ืช J ืžื—ื‘ืจืช ืืช ื”ืžืฉื‘ืฆืช ืฉืžืขืœื™ื” ืขื ื–ื• ืฉืžืฉืžืืœื” 5. ื”ืื•ืช F ืžื—ื‘ืจืช ืืช ื”ืžืฉื‘ืฆืช ืฉืžืชื—ืชื™ื” ืขื ื–ืืช ืฉืžื™ืžื™ื ื” 6. ื”ืื•ืช L ืžื—ื‘ืจืช ืืช ื”ืžืฉื‘ืฆืช ืฉืžืขืœื™ื” ืœื–ื• ืฉืžื™ืžื™ื ื” ื”ืืชื’ืจ ื”ื‘ื ื”ื•ื ืฉื ืงื•ื“ืช ื”ื”ืชื—ืœื” ืžืกื•ืžื ืช ื‘ืื•ืช S ื•ืื ื—ื ื• ืœื ื™ื•ื“ืขื™ื ืื™ื–ื” ืกื•ื’ื™ ื—ื™ื‘ื•ืจื™ื ื™ืฉ ืœื”, ื›ืœื•ืžืจ ืงืœื˜ ืืžื™ืชื™ ืœื“ื•ื’ืžื” ื™ื”ื™ื” ื‘ืขืฆื:
.....
.S-7.
.|.|.
.L-J.
.....
ื”ืžืฉื™ืžื” ืฉืœื ื• ื”ื™ื ืœืžืฆื•ื ืืช ื”ืžืขื’ืœ ื•ืœื”ื“ืคื™ืก ืืช ื”ืžืจื—ืง ืฉืœ ื”ื ืงื•ื“ื” ื”ืจื—ื•ืงื” ื‘ื™ื•ืชืจ ืฉื‘ืชื•ื›ื• ืžื ืงื•ื“ืช ื”ื”ืชื—ืœื”. ื‘ืงืœื˜ ื”ื“ื•ื’ืžื” ื”ืชืฉื•ื‘ื” ื”ื™ื 4 ื•ื”ื ืงื•ื“ื” ื”ื›ื™ ืจื—ื•ืงื” ื”ื™ื ืื™ืคื” ืฉืžื•ืคื™ืขื” ื”ืื•ืช J (ืชืกืคืจื• ื•ืชืจืื•). ืคื™ืขื ื•ื— ื”ืงืœื˜ ื‘ืกืงืืœื” ื“ืจืš ืงืœื” ืœื™ื™ืฆื’ ืืช ื”ืงืœื˜ ื”ื™ื Hash Map ื‘ื• ื”ืžืคืชื— ื”ื•ื ืงื•ืื•ืจื“ื™ื ื˜ื•ืช ืฉืœ ืžืฉื‘ืฆืช ื•ื”ืขืจืš ื”ื•ื ืจืฉื™ืžื” ืฉืœ ื›ืœ ื”ืžืฉื‘ืฆื•ืช ืืœื™ื” ืืคืฉืจ ืœื”ื’ื™ืข ืžืื•ืชื” ืžืฉื‘ืฆืช. ื‘ืฉื‘ื™ืœ ืœื‘ื ื•ืช ืืช ื”ืงืœื˜ ื”ืชื—ืœืชื™ ืขื ืคื•ื ืงืฆื™ื” ืฉืžืงื‘ืœืช ืงื•ืื•ืจื“ื™ื ื˜ื•ืช ืฉืœ ืžืฉื‘ืฆืช ื•ืกื™ืžืŸ ื•ืžื—ื–ื™ืจื” ืืช ืจืฉื™ืžืช ื”ืžืฉื‘ืฆื•ืช ืืœื™ื”ืŸ ืืคืฉืจ ืœื”ื’ื™ืข:
  def connections(ch: Char, row: Int, column: Int): List[(Int, Int)] =
    ch match
      case '.' => List()
      case '|' => List((row - 1, column), ((row + 1), column))
      case '-' => List((row, column - 1), (row, column + 1))
      case 'L' => List((row - 1, column), (row, column + 1))
      case 'J' => List((row - 1, column), (row, column - 1))
      case '7' => List((row + 1, column), (row, column - 1))
      case 'F' => List((row + 1, column), (row, column + 1))
      case 'S' => List((-1, -1)) // marker
ื‘ื’ืœืœ ืฉืื ื™ ืœื ื™ื•ื“ืข ืื™ื–ื” ืกื•ื’ ืฆื™ื ื•ืจ ื™ื”ื™ื” ื‘ืžืฉื‘ืฆืช ื”ื”ืชื—ืœื” ื”ืฉืืจืชื™ ืื•ืชื” ืขื ืจืฉื™ืžื” ืคื™ืงื˜ื™ื‘ื™ืช. ื‘ื”ืžืฉืš ื”ืงื•ื“ ืื—ืœื™ืฃ ืืช ื”ืจืฉื™ืžื” ื”ื–ืืช ื›ืœ ืคืขื ื‘ืฆื™ื ื•ืจ ืื—ืจ ื›ื“ื™ ืœืžืฆื•ื ืืช ื”ืžืขื’ืœื™ื ื”ืฉื•ื ื™ื ื”ืืคืฉืจื™ื™ื ื•ืื‘ื—ืจ ืžื”ื ืืช ื”ืืจื•ืš ื‘ื™ื•ืชืจ. ืœืื—ืจ ืžื›ืŸ ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ืคื•ื ืงืฆื™ื” ื™ื—ื“ ืขื ืงืฆืช ืงืกื ืฉืœ ืกืงืืœื” ื›ื“ื™ ืœื‘ื ื•ืช ืืช ื”ืžื˜ืจื™ืฆื”:
  def parseInput(input: Source): Map[(Int, Int), List[(Int, Int)]] =
    input
      .getLines()
      .zipWithIndex
      .collect {
        case (line: String, index: Int) => line.toList.zipWithIndex.map((ch, column) => (index, column, ch))
      }
      .flatten
      .flatMap { case (row, column, ch) => Map((row, column) -> connections(ch, row, column))}
      .toMap
ื”ืžืคืชื— ื”ื•ื ื”ืคื•ื ืงืฆื™ื” zipWithIndex ืฉืžื•ืกื™ืคื” ืืช ื”ืื™ื ื“ืงืกื™ื ื•ื›ืš ื ื•ืฆืจืช ืœื•ืœืื” ื›ืคื•ืœื” ืฉืœ ืฉื•ืจื•ืช ื•ืขืžื•ื“ื•ืช. ื”ื—ืœืง ื”ื‘ื ื•ื”ืžืจื›ื–ื™ ื‘ืคื™ืชืจื•ืŸ ื”ื•ื ื”ืคื•ื ืงืฆื™ื” ื”ืจืงื•ืจืกื™ื‘ื™ืช ืฉืžื—ืคืฉืช ืืช ื”ืžืขื’ืœ. ื”ื—ื™ืคื•ืฉ ื”ื•ื ื‘ืฉื™ื˜ืช DFS ื‘ืขื–ืจืช ืžื—ืกื ื™ืช ื•ืื ื—ื ื• ื™ื•ื“ืขื™ื ืฉืžืฆืื ื• ืžืขื’ืœ ื›ืฉื”ื’ืขื ื• ืœืฆื•ืžืช ืฉื›ื‘ืจ ืจืื™ื ื• ื‘ืขื‘ืจ:
  @tailrec
  def findCycleSizeDFS(map: Map[(Int, Int), List[(Int, Int)]],
                       workQueue: List[(Int, Int)],
                       seen: Set[(Int, Int)] = Set()): Int =

    workQueue match
      case start :: tail if seen.contains(start) =>
        // Loop
        seen.size

      case start :: tail =>
        val neighbors = map.getOrElse(start, List()).filterNot { p => seen.contains(p) }
        findCycleSizeDFS(map, neighbors ++ workQueue, seen + start)

      case Nil =>
        // Dead End
        0
ื”ืื ื•ื˜ืฆื™ื” tailrec ืžื‘ื˜ื™ื—ื” ืœื™ ืฉื”ืคื•ื ืงืฆื™ื” ืœื ืชืฉืชืžืฉ ื‘ื˜ืขื•ืช ื‘ืžื—ืกื ื™ืช ื”ืจืงื•ืจืกื™ื” ื•ืชืžื™ื“ ืชืืคืฉืจ ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืขืœ ื™ื“ื™ ืžื—ื™ืงืช ื–ื ื‘ ื”ืจืงื•ืจืกื™ื” (ืจืงื•ืจืกื™ื™ืช ื–ื ื‘). ืื—ืจื™ ืฉื‘ื ื™ื ื• ืืช ื”ืชืฉืชื™ืช ืืคืฉืจ ืœื”ืžืฉื™ืš ืœ main - ืชืคืงื™ื“ื• ืœืจื•ืฅ ืขืœ ื›ืœ ื”ืืคืฉืจื•ื™ื•ืช ืœืžืฉื‘ืฆืช ื”ื”ืชื—ืœื” ื•ืœืžืฆื•ื ืืช ื–ื• ืฉืชืชืŸ ืืช ื”ืžืขื’ืœ ื”ื’ื“ื•ืœ ื‘ื™ื•ืชืจ, ื•ื’ื ืœื”ื“ืคื™ืก ืืช ื’ื•ื“ืœ ื”ืžืขื’ืœ ื—ืœืงื™ 2 ื‘ืฉื‘ื™ืœ ืœืžืฆื•ื ืืช ื”ืžืจื—ืง ืฉืœ ื”ื ืงื•ื“ื” ื”ืจื—ื•ืงื” ื‘ื™ื•ืชืจ:
  
  @main
  def day10part1(): Unit =

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

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

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

ToCode
1 420
ืชืจื’ื™ืœ ืคื™ื™ืชื•ืŸ: ื‘ื•ืœ ืคื’ื™ืขื” ืขื ื—ื–ืจื•ืช ื‘ืžืฉื—ืง ื‘ื•ืœ ืคื’ื™ืขื” ืžืฉืชืžืฉ ืื—ื“ ื‘ื•ื—ืจ ืžืกืคืจ ื•ื”ืฉื ื™ ืฆืจื™ืš ืœื ื—ืฉ ืžื”ื•, ื›ืืฉืจ ื‘ื›ืœ ืกื™ื‘ื•ื‘ ื”ืจืžื– ื”ื•ื ื›ืžื” ืกืคืจื•ืช ืžื•ืคื™ืขื•ืช ื‘ืžืกืคืจ ื”ืกื•ื“ื™ ื‘ืžืงื•ื ืื—ืจ ืžื”ื ื™ื—ื•ืฉ, ื•ื›ืžื” ืกืคืจื•ืช ืžื•ืคื™ืขื•ืช ื‘ืžืกืคืจ ื”ืกื•ื“ื™ ื‘ื“ื™ื•ืง ื‘ืื•ืชื• ืžืงื•ื (ื‘ืฉื ื™ ื”ืžืงืจื™ื ื‘ืœื™ ืœื’ืœื•ืช ืื™ื–ื” ืกืคืจื•ืช ืžื•ืคื™ืขื•ืช ืื™ืคื”). ื‘ื’ื™ืจืกื” ืฉืœ ื”ืžืฉื—ืง ืขื ื—ื–ืจื•ืช ืกื™ืคืจื” ื™ื›ื•ืœื” ืœื”ื•ืคื™ืข ื›ืžื” ืคืขืžื™ื ื‘ืžืกืคืจ ื”ืกื•ื“ื™, ื•ืฆืจื™ืš ืœืงื—ืช ืืช ื–ื” ื‘ื—ืฉื‘ื•ืŸ ื›ืฉืžื—ื–ื™ืจื™ื ืชืฉื•ื‘ื” ืœืžืฉืชืžืฉ ืฉืžื ื—ืฉ. ื‘ื•ืื• ื ืจืื” ืืช ื”ืืชื’ืจื™ื ื•ืื– ืืช ื”ืคื™ืชืจื•ืŸ ื‘ืคื™ื™ืชื•ืŸ. ืœืžื” ื—ื–ืจื•ืช ื–ื” ื›ืœ ื›ืš ืžืกื•ื‘ืš ืืœื’ื•ืจื™ืชื ื ืื™ื‘ื™ ืœื—ื™ืฉื•ื‘ "ื›ืžื” ืกืคืจื•ืช ื‘ืžืงื•ื ื”ื ื›ื•ืŸ" ื•"ื›ืžื” ืกืคืจื•ืช ื‘ืžืงื•ื ื”ืœื ื ื›ื•ืŸ" ื™ื›ื•ืœ ืœื”ื™ื›ืชื‘ ื‘ืชื•ืจ ืœื•ืœืื” ื›ืคื•ืœื”:
blacks = 0
whites = 0
for idx1, i in enumerate(str(value)):
    for idx2, j in enumerate(str(other)):
        if i == j:
            if idx1 == idx2:
                blacks += 1
            else:
                whites += 1
ื›ืืฉืจ whites ืžื™ื™ืฆื’ ืืช ืžืกืคืจ ื”ืกืคืจื•ืช ื‘ืžืงื•ื ื”ืœื ื ื›ื•ืŸ, ื• blacks ืืช ืžืกืคืจ ื”ืกืคืจื•ืช ืฉื ืžืฆืื•ืช ื‘ื“ื™ื•ืง ื‘ืžืงื•ื ื”ื ื›ื•ืŸ ื‘ื™ืŸ ืฉื ื™ ืžืกืคืจื™ื - ื”ืื—ื“ ืฉืžื•ืจ ื‘ืžืฉืชื ื” value ื•ื”ืฉื ื™ ื‘ืžืฉืชื ื” other. ืื‘ืœ ืœื•ืœืื” ื›ื–ืืช ื›ื‘ืจ ืœื ืขื•ื‘ื“ืช ืื ื™ืฉ ื—ื–ืจื•ืช, ื‘ื’ืœืœ ืฉืื ื—ื ื• ืžืงื‘ืœื™ื ื™ื•ืชืจ ืžื“ื™ "ืœื‘ื ื™ื". ื—ื™ืฉื‘ื• ืขืœ ืฉื ื™ ื”ืžืกืคืจื™ื 112 ื• 221 - ืื ื”ื ื™ื—ื•ืฉ ื”ืกื•ื“ื™ ื”ื•ื 221 ื•ืžื™ืฉื”ื• ืžื ืกื” ืœื ื—ืฉ ืืช ื”ืžืกืคืจ 112 ืขืœื™ื ื• ืœืขื ื•ืช ืœื• ืฉื™ืฉ ืœื• ืฉื ื™ ืžืกืคืจื™ื ื‘ืžืงื•ื ื”ืœื ื ื›ื•ืŸ ื•ื–ื”ื•. ืคื™ืชืจื•ืŸ ื‘ืคื™ื™ืชื•ืŸ ืฉืžืชืžื•ื“ื“ ื’ื ืขื ื›ืคื™ืœื•ื™ื•ืช ื‘ืฉื‘ื™ืœ ืœื—ืฉื‘ ืืช ืžืกืคืจ ื”ืœื‘ื ื™ื ื•ื”ืฉื—ื•ืจื™ื ืขื ื›ืคื™ืœื•ื™ื•ืช ืขืœื™ื ื• ืœืงื—ืช ื‘ื—ืฉื‘ื•ืŸ ืฉื›ืœ ืกื™ืคืจื” ื™ื›ื•ืœื” "ืœื”ืฉืคื™ืข" ืจืง ืคืขื ืื—ืช. ื“ืจืš ืื—ืช ืœื’ืฉืช ืœื–ื” ืชื”ื™ื” ืœืฉืžื•ืจ ืืช ื”ืื™ื ื“ืงืกื™ื ืฉืœ ื›ืœ ืกื™ืคืจื” ื‘ืžื™ืœื•ืŸ ื›ืืฉืจ ื”ืžืคืชื— ื”ื•ื ื”ืกื™ืคืจื” ื•ื”ืขืจืš ื”ื•ื ืงื‘ื•ืฆืช ื›ืœ ื”ืื™ื ื“ืงืกื™ื ืฉืœื”. ื‘ื™ื™ืฆื•ื’ ื›ื–ื” ืืคืฉืจ ืœื—ืฉื‘ ืืช ื”ืฉื—ื•ืจื™ื ื‘ืชื•ืจ ืงื‘ื•ืฆืช ื”ื—ื™ืชื•ืš ืฉืœ ืฉืชื™ ืงื‘ื•ืฆื•ืช ื”ืื™ื ื“ืงืกื™ื, ื•ื‘ืฉื‘ื™ืœ ื”ืœื‘ื ื™ื ื ื•ืจื™ื“ ืžืฉืชื™ ื”ืงื‘ื•ืฆื•ืช ืืช ืงื‘ื•ืฆืช ื”ื—ื™ืชื•ืš (ื›ื™ ื”ืฉืชืžืฉื ื• ื‘ื” ื›ื‘ืจ ื‘ืฉื‘ื™ืœ ื”ืฉื—ื•ืจื™ื) ื•ื ื™ืงื— ืืช ื’ื•ื“ืœ ื”ืงื‘ื•ืฆื” ื”ืงื˜ืŸ ืžืฉืชื™ื”ืŸ. ืงื•ื“? ื‘ืจื•ืจ:
class Guess:
    def __init__(self, value: int):
        digitgroups = itertools.groupby(
            sorted(list(enumerate(str(value))), key=lambda m: m[1]),
            lambda m: m[1])

        self.value = {
            k: set([i[0] for i in v])
            for k, v in digitgroups
        }

    def compare(self, other: "Guess") -> Result:
        white = 0
        black = 0
        for digit in self.value.keys():
            if digit in other.value:
                intersection = self.value[digit].intersection(other.value[digit])
                black += len(intersection)
                white += min(len(self.value[digit] - intersection), len(other.value[digit] - intersection))

        return Result(white=white, black=black)
ื•ืขื›ืฉื™ื• ื”ื”ืฉื•ื•ืื” ื ื•ืชื ืช ืืช ื”ืชื•ืฆืื” ื”ื ื›ื•ื ื”:
g1 = Guess(112)
g2 = Guess(221)

* prints: Result(white=2, black=0) *
print(g1.compare(g2))
ื™ืฉ ืœื›ื ืจืขื™ื•ื ื•ืช ื ื•ืกืคื™ื? ืื•ืœื™ ื˜ื•ื‘ื™ื ื™ื•ืชืจ? ืืชื ื›ื‘ืจ ื™ื•ื“ืขื™ื ืžื” ืœืขืฉื•ืช - ื”ื“ื‘ื™ืงื• ื›ืืŸ ื‘ืชื’ื•ื‘ื•ืช ืื• ื‘ื˜ืœื’ืจื.

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

ToCode
1 420
ื›ืจื™ืš ืฉืœ ื‘ืืฉืจ ื‘ื“ืจืš ื”ื—ื•ืฆื” ืžื”ื—ื“ืจ ื›ื•ืฉืจ ื™ืฉ ืžืขื“ื ื™ื™ืช ื’ื‘ื™ื ื•ืช (ืคืจืžื–'ืจื™, ื‘ืฉื‘ื™ืœ ื”ืื•ื•ื™ืจื” ื”ื—ื•"ืœื™ืช) ื‘ืฉื ื‘ืืฉืจ ืขื ืฉืœื˜ ืžื–ืžื™ืŸ "ื›ืจื™ืš ืฉืœ ื‘ืืฉืจ ื›ื‘ืจ ื˜ืขืžืช?" ื•ืื ื™ ื›ืœ ืคืขื ืขื‘ืจืชื™ ืฉื ื•ืจืฆื™ืชื™ ืœื˜ืขื•ื, ืื‘ืœ ืคืขื ืื—ืช ื”ื›ืจื™ืš ื ืจืื” ื™ืงืจ ืžื“ื™, ื•ืคืขื ืื—ืจืช ื”ื•ื ืœื ื ืจืื” ืžืกืคื™ืง ื˜ืจื™, ื•ืขื•ื“ ืคืขื ื‘ื“ื™ื•ืง ืœื ื”ื™ื™ืชื™ ื‘ืžืฆื‘ ืจื•ื— ืœื›ืจื™ืš ื’ื‘ื™ื ื” ื•ื›ื›ื” ืขื•ื‘ืจื™ื ื”ื™ืžื™ื ื•ื™ื“ืขืชื™ ืฉื›ืœ ืคืขื ืฉืื ื™ ืขื•ื‘ืจ ืœื™ื“ ื”ืคืจื•ืžื–'ืจื™ ืื ื™ ืžืกืจื‘ ืœื”ื–ื“ืžื ื•ืช ืื‘ืœ ืžืฉืื™ืจ ืืช ื”ื“ืœืช ืคืชื•ื—ื”. ื”"ืœื" ื”ื™ื” ื‘ืกืš ื”ื›ืœ "ืœื ื”ื™ื•ื", ืื‘ืœ ืืœ ืชื“ืื’ ื‘ืืฉืจ ืžื—ืจ ื ื ืกื” ืฉื•ื‘. ื•ื›ืฉื”ืคืกืงืชื™ ืœืื›ื•ืœ ืžื•ืฆืจื™ ื—ืœื‘ ืจืฆื™ืชื™ ืœื”ืกืชื›ืœ ืื—ื•ืจื” ื•ืœื”ื’ื™ื“ "ืจื’ืข, ืžื” ืขื ื”ื›ืจื™ืš?" ื•"ื™ืฉ ืœื™ ืคื” ื”ื–ื“ืžื ื•ืช ืฉืžื—ื›ื”" ืื‘ืœ ื–ื” ื›ื‘ืจ ื”ื™ื” ืžืื•ื—ืจ ืžื“ื™. ืืช ื”ื›ืจื™ืš ืฉืœ ื‘ืืฉืจ ืื ื™ ื›ื‘ืจ ืœื ืื•ื›ืœ. ื ื–ื›ืจืชื™ ื‘ื‘ืืฉืจ ื›ืฉื”ืกืชื›ืœืชื™ ืฉื•ื‘ ืขืœ ืงื•ืจืก ืžืงืฆื•ืขื™ ืฉืจืฆื™ืชื™ ืœืขืฉื•ืช, ื•ืžื›ืœ ืžื™ื ื™ ืกื™ื‘ื•ืช ืœื ืžืฆืืชื™ ืืช ื”ื”ื–ื“ืžื ื•ืช. ื”ืคืขื ื–ื” ืœื ืื ื™ ืฉื”ืฉืชื ื™ืชื™ ืืœื ื”ืงื•ืจืก ืฉื™ืจื“ ืžื”ืื•ื•ื™ืจ. ื“ืจืง ืกื™ื‘ืจืก ืืžืจ Hell Yeah Or No ื•ื”ืจื‘ื” ื–ืžืŸ ืฉืžืขืชื™ ืื•ืชื• ืื‘ืœ ื‘ืจืืฉ ืฉืœื™ ื–ื” ื”ื™ื” Hell Yeah or Not Now. ืื‘ืœ ื”ืืžืช ืฉื” No ืฉืœ ื“ืจืง ื”ืจื‘ื” ื™ื•ืชืจ ืขื•ื–ืจ ืœืคื•ืงื•ืก. ืœื ืจื•ืฆื”? ืชืžืฉื™ืš ื”ืœืื”, ืžื›ืœ ื”ืœื‘. ื”ื”ืžืชื ื” ืœื”ื–ื“ืžื ื•ื™ื•ืช ื˜ื•ื‘ื•ืช ื™ื•ืชืจ ืจืง ืžื‘ืœื‘ืœืช.

ToCode - Estadรญsticas y analรญtica del canal de Telegram @tocodeil