{"id":49494,"date":"2025-08-18T10:23:29","date_gmt":"2025-08-18T10:23:29","guid":{"rendered":"https:\/\/skdojo.com\/?p=49494"},"modified":"2025-08-18T10:35:05","modified_gmt":"2025-08-18T10:35:05","slug":"%ed%85%8c%ec%8a%a4%ed%8a%b8-100-%ec%9e%90%eb%a6%ac%ec%9d%98-%ed%8c%8c%ec%9d%b4","status":"publish","type":"post","link":"https:\/\/skdojo.com\/ko\/%ed%85%8c%ec%8a%a4%ed%8a%b8-100-%ec%9e%90%eb%a6%ac%ec%9d%98-%ed%8c%8c%ec%9d%b4\/","title":{"rendered":"\u03c0\uc758 100\uac00\uc9c0 \uccab \ubc88\uc9f8 \uc22b\uc790"},"content":{"rendered":"\n<p class=\"translation-block\">O objetivo \u00e9 simples:&nbsp;<strong>digitar os 100 primeiros d\u00edgitos de \u03c0 (pi)<\/strong>, um por um, na ordem correta e no menor tempo poss\u00edvel. Parece f\u00e1cil? Tente. Qualquer erro ou demora pode te tirar da partida.<\/p>\n\n\n\n<div>\n<div class=\"quiz-container\">\n  <p id=\"game-instruction\" class=\"translation-block\">Digite os <strong>100 primeiros d\u00edgitos<\/strong> de \u03c0 na ordem correta!<\/p>\n\n  <select id=\"difficulty-select\">\n    <option value=\"normal\" data-time=\"40\" selected>Normal (40s)<\/option>\n    <option value=\"facil\" data-time=\"90\">F\u00e1cil (90s)<\/option>\n    <option value=\"mobile\" data-time=\"120\">Super F\u00e1cil (120s)<\/option>\n    <option value=\"dificil\" data-time=\"30\">Dif\u00edcil (30s)<\/option>\n    <option value=\"impossivel\" data-time=\"15\">Imposs\u00edvel (20s)<\/option>\n  <\/select>\n\n  <div id=\"timer\">00:40<\/div>\n\n  <div id=\"input-area\">\n    <input type=\"text\" id=\"guess-input\" placeholder=\"Digite o pr\u00f3ximo d\u00edgito...\" autofocus maxlength=\"1\" inputmode=\"numeric\" pattern=\"[0-9]*\">\n    <button id=\"guess-button\">Enviar<\/button>\n    <button id=\"reset-button\">Resetar<\/button>\n  <\/div>\n\n  <div id=\"message\"><\/div>\n\n  <div id=\"results-container\"><\/div>\n\n  <!-- MENSAGENS (para tradu\u00e7\u00e3o) -->\n  <div id=\"msg-success\" hidden>Parab\u00e9ns! Voc\u00ea digitou os 100 primeiros d\u00edgitos de \u03c0!<\/div>\n  <div id=\"msg-timeout\" hidden>Tempo esgotado! Voc\u00ea chegou at\u00e9: {REACHED} d\u00edgitos.<\/div>\n  <div id=\"msg-wrong\" hidden>Errado! O pr\u00f3ximo d\u00edgito \u00e9: {NEXT}.<\/div>\n<\/div>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', () => {\n  const guessInput       = document.getElementById('guess-input');\n  const guessButton      = document.getElementById('guess-button');\n  const resetButton      = document.getElementById('reset-button');\n  const resultsContainer = document.getElementById('results-container');\n  const timerDisplay     = document.getElementById('timer');\n  const messageDisplay   = document.getElementById('message');\n  const diffSelect       = document.getElementById('difficulty-select');\n\n  \/\/ 100 primeiros d\u00edgitos de pi (sem ponto decimal), come\u00e7ando em \"3\"\n  const piDigits = \"3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067\".split(\"\");\n\n  \/\/ L\u00ea textos do HTML (para tradu\u00e7\u00e3o)\n  const getMsg = (id) => document.getElementById(id).textContent;\n\n  let currentIndex, timeLeft, timer, started;\n\n  function updateTimerText(sec) {\n    const m = Math.floor(sec \/ 60), s = sec % 60;\n    timerDisplay.textContent = `${String(m).padStart(2,'0')}:${String(s).padStart(2,'0')}`;\n    timerDisplay.style.color = sec <= 5 ? '#d9534f' : '#337ab7';\n  }\n\n  function tick() {\n    updateTimerText(timeLeft);\n    if (timeLeft <= 0) end(false);\n    else timeLeft--;\n  }\n\n  function start() {\n    if (started) return;\n    started = true;\n    timeLeft = parseInt(diffSelect.options[diffSelect.selectedIndex].dataset.time, 10) || 15;\n    diffSelect.disabled = true;\n    updateTimerText(timeLeft);\n    timer = setInterval(tick, 1000);\n    render();\n  }\n\n  function end(won) {\n    clearInterval(timer);\n    guessInput.disabled = true;\n    guessButton.disabled = true;\n    if (won) {\n      messageDisplay.textContent = getMsg('msg-success');\n      messageDisplay.style.color = '#5cb85c';\n    } else {\n      \/\/ Substitui {REACHED} pelo n\u00famero de d\u00edgitos corretos\n      const base = getMsg('msg-timeout');\n      const reached = Math.max(0, currentIndex);\n      messageDisplay.textContent = base.replace('{REACHED}', reached);\n      messageDisplay.style.color = '#d9534f';\n    }\n  }\n\n  function render() {\n    resultsContainer.innerHTML = '';\n    piDigits.forEach((digit, i) => {\n      const div = document.createElement('div');\n      div.className = 'result-item';\n      div.textContent = (i < currentIndex) ? digit : '\u2014';\n      if (i < currentIndex) div.classList.add('correct');\n      resultsContainer.appendChild(div);\n    });\n  }\n\n  function handleEnter() {\n    start();\n    const guess = guessInput.value.trim();\n    guessInput.value = '';\n    if (!guess) return;\n\n    \/\/ Apenas d\u00edgitos\n    if (!\/^\\d$\/.test(guess)) {\n      guessInput.focus();\n      return;\n    }\n\n    if (guess === piDigits[currentIndex]) {\n      currentIndex++;\n      render();\n      if (currentIndex === piDigits.length) {\n        end(true);\n      }\n    } else {\n      \/\/ Substitui {NEXT} pelo pr\u00f3ximo d\u00edgito correto\n      const base = getMsg('msg-wrong');\n      messageDisplay.textContent = base.replace('{NEXT}', piDigits[currentIndex]);\n      messageDisplay.style.color = '#d9534f';\n    }\n  }\n\n  function resetGame() {\n    clearInterval(timer);\n    currentIndex = 0;\n    started = false;\n    guessInput.disabled = false;\n    guessButton.disabled = false;\n    diffSelect.disabled = false;\n    messageDisplay.textContent = '';\n    timeLeft = parseInt(diffSelect.options[diffSelect.selectedIndex].dataset.time, 10) || 15;\n    updateTimerText(timeLeft);\n    render();\n    guessInput.value = '';\n    guessInput.focus();\n  }\n\n  \/\/ Eventos\n  guessInput.addEventListener('keydown', (e) => { if (e.key === 'Enter') handleEnter(); });\n  guessButton.addEventListener('click', handleEnter);\n  resetButton.addEventListener('click', resetGame);\n\n  \/\/ Inicializa\u00e7\u00e3o\n  resetGame();\n});\n<\/script>\n\n<style>\n.result-item {\n  display: inline-block;\n  width: 24px;\n  height: 24px;\n  text-align: center;\n  margin: 2px;\n  padding: 2px;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n.correct {\n  background: #5cb85c;\n  color: white;\n  font-weight: bold;\n}\n#reset-button {\n  margin-left: 8px;\n  background: #f0ad4e;\n  border: none;\n  padding: 5px 10px;\n  border-radius: 4px;\n  cursor: pointer;\n}\n#reset-button:hover {\n  background: #ec971f;\n  color: white;\n}\n#input-area { margin-top: 8px; }\n#message { margin-top: 8px; min-height: 1.2em; }\n#timer { margin: 8px 0; font-weight: bold; }\n<\/style>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Regras b\u00e1sicas<\/h2>\n\n\n\n<ul class=\"wp-block-list translation-block\">\n<li>Voc\u00ea come\u00e7a com o n\u00famero 3 (o primeiro d\u00edgito de \u03c0).<\/li>\n\n\n\n<li>A cada rodada, digite&nbsp;<strong>apenas o pr\u00f3ximo n\u00famero<\/strong>. Um campo de texto aceita&nbsp;<strong>1 d\u00edgito por vez<\/strong>.<\/li>\n\n\n\n<li>Se errar, o jogo mostra o d\u00edgito correto e voc\u00ea continua de onde parou (mas o tempo continua correndo).<\/li>\n\n\n\n<li>Se o tempo acabar, o jogo exibe at\u00e9 qual d\u00edgito voc\u00ea chegou corretamente.<\/li>\n\n\n\n<li>Ao acertar todos os 100 d\u00edgitos dentro do tempo, voc\u00ea vence!<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">O que \u00e9 \u03c0 (pi)?<\/h2>\n\n\n\n<p class=\"translation-block\">\u03c0 (l\u00ea-se \u201cpi\u201d) \u00e9 uma constante matem\u00e1tica usada para calcular a circunfer\u00eancia e \u00e1rea de c\u00edrculos. Seu valor come\u00e7a com 3.14159&#8230; e continua infinitamente, sem se repetir. Por isso, memorizar os d\u00edgitos de \u03c0 virou um desafio mental popular entre f\u00e3s de matem\u00e1tica, l\u00f3gica e cultura geek.<\/p>\n\n\n\n<details> <summary>\ud83d\udccc Clique para ver a resposta dos 100 primeiros d\u00edgitos de \u03c0<\/summary> 3.1415926535 8979323846 2643383279 5028841971 6939937510 5820974944 5923078164 0628620899 8628034825 342117067 <\/details>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":49499,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-49494","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-games","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-25","no-featured-image-padding"],"_links":{"self":[{"href":"https:\/\/skdojo.com\/ko\/wp-json\/wp\/v2\/posts\/49494","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/skdojo.com\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/skdojo.com\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/skdojo.com\/ko\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/skdojo.com\/ko\/wp-json\/wp\/v2\/comments?post=49494"}],"version-history":[{"count":5,"href":"https:\/\/skdojo.com\/ko\/wp-json\/wp\/v2\/posts\/49494\/revisions"}],"predecessor-version":[{"id":49505,"href":"https:\/\/skdojo.com\/ko\/wp-json\/wp\/v2\/posts\/49494\/revisions\/49505"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/skdojo.com\/ko\/wp-json\/wp\/v2\/media\/49499"}],"wp:attachment":[{"href":"https:\/\/skdojo.com\/ko\/wp-json\/wp\/v2\/media?parent=49494"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/skdojo.com\/ko\/wp-json\/wp\/v2\/categories?post=49494"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/skdojo.com\/ko\/wp-json\/wp\/v2\/tags?post=49494"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}