AI補助付きAtCoder

智神がコードを書きます

// ==UserScript==
// @name         AI補助付きAtCoder
// @namespace    http://atcoder.jp/
// @version      2025-06-19
// @description  智神がコードを書きます
// @author       Yukkku
// @match        https://atcoder.jp/contests/*
// @icon         https://atcoder.jp/favicon.ico
// @grant        none
// @license      MIT
// ==/UserScript==

(() => {
  'use strict';

  const button = Object.assign(document.createElement("button"), {
    innerText: "AI補助",
    className: "btn btn-default btn-sm",
  });
  document.querySelector(".editor-buttons").appendChild(button);
  button.onclick = async e => {
    e.preventDefault();
    const now = Date.now();
    if (new Date(startTime._i) <= now && now <= new Date(endTime._i)) {
      alert("コンテスト中のAIの使用は禁止されているよ!");
      return
    }
    const sleep = t => new Promise(r => setTimeout(r, t));
    const asciiChokudai = atob("ICAgICAgICAgICAgICAgICAgICAgICAgLwogICAgICAgICAgICAgICAgICAgICAgIC8gKC8vLi9cXFwpCiAgICAgICAgICAgICAgICAgICgvLy8vLy8vLy9cXFxcXFxcKQogICAgICAgICAgICAgICAgKC8vLy8vLy8vLy8vLy9cXFxcXFxcKQogICAgICAgICAgICAgICgvLy8vLy8vLy8vLy8vLyAgIFxcXFxcXCkKICAgICAgICAgICAgKC8vLy8vLy8vLy8vLy8vICAgICAgIFxcXFxcXCkKICAgICAgICAgICAoLy8vLy8vLy8vLy8vLyAgICAgICAgICAgXFxcXFwpCiAgICAgICAgICAgKC8vLy8vLy8vLy8vIC8gICAgICAgX18gIFxcXFxcXCkKICAgICAgICAgICgvLy8vLy8vLy8vLS0gICAgICBgKiogKmAgIFxcXFxcKQogICAgICAgICAgKC8vLy8vLy8gX19fXyAgICAgICAtLS0tPiAgXFxcXFwpCiAgICAgICAgICAoLy8vLy8vICAgIH4gICAgICAgICcnICAgICAgXFxcKQogICAgICAgICAgICgvLy8gICAgICAgIC8gICAgIFwgICAgICAgIFxcKQogICAgICAgICAgICAgXFwgICAgIC8gICBgLS0tJyAgICBcICAgICAvCiAgICAgICAgICAgICAgICggICAgXCA8PS0tLS0tLT1eKi8gICAgKQogICAgICAgICAgICAgICAgICggICAgIGBgJycnJydgICAgICAgKQogICAgICAgICAgICAgICAgICB8XCAgICAgICAgICAgICAgICAvfAogICAgICAgICAgICAgICAgICB8ICBgXCAgICAgICAgICAvJyAgfAogICAgICAgICAgICAgICAgICB8ICAgICBgYC0tLS0tJycgICAgIFwKICAgICAgICAgICAgICAgIC8jLyAgICAgICAgICAgICAgICAgICAgXCMjYFwKICAgICAgICAgICAgLyMjIyMvXCAgICAgICAgICAgICAgICAgICAvIFwjIyMjYFwKICAgICAgIC8jIyMjIyMjIy8gIFwgICAgICAgICAgICAgICAgLycgICBcIyMjIyMjIyNgXA==");
    const lineChokudai = asciiChokudai.split('\n');
    const speekChokudai = m => {
      const r = [...lineChokudai];
      r[7] += '      <  ' + m;
      return r;
    };
    const toggleButton = document.querySelector("button.btn-toggle-editor");
    const editor = document.querySelector("#plain-textarea");
    const getEditor = () => {
      toggleButton.click();
      toggleButton.click();
      return editor.value;
    };
    const setEditor = s => {
      toggleButton.click();
      editor.value = s;
      toggleButton.click();
      editor.value = s;
    };
    const s = getEditor();
    setEditor("\n" + s);
    await sleep(1000);
    setEditor("智\n" + s);
    await sleep(500);
    setEditor("智 神\n" + s);
    await sleep(500);
    setEditor("智 神 降\n" + s);
    await sleep(500);
    setEditor("智 神 降 臨\n" + s);
    await sleep(500);
    const g = ["智 神 降 臨", "", "", ...lineChokudai];
    for (let i = 1; i <= g.length; ++i) {
      await sleep(100);
      setEditor(g.slice(0, i).join("\n") + "\n" + s);
    }
    await sleep(1000);
    setEditor("#include <bits/stdc++.h>\n\n\n" + asciiChokudai + "\n" + s);
    await sleep(500);
    setEditor("#include <bits/stdc++.h>\nusing namespace std;\n\n" + asciiChokudai + "\n" + s);
    await sleep(500);
    setEditor("#include <bits/stdc++.h>\nusing namespace std;\n#include <atcoder/all>\n" + asciiChokudai + "\n" + s);
    await sleep(1000);
    const schokudai = speekChokudai("あとは頑張るのじゃぞ");
    for (let i = g.length - 1; i >= 0; --i) {
      await sleep(100);
      setEditor("#include <bits/stdc++.h>\nusing namespace std;\n#include <atcoder/all>\n" + schokudai.slice(0, i).join("\n") + "\n" + s);
    }
    setEditor("#include <bits/stdc++.h>\nusing namespace std;\n#include <atcoder/all>\n" + s);
  };
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址