文字化けcoder

atcoderの問題文がたまに文字化けします。縛りプレイ用。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         文字化けcoder
// @namespace    http://tampermonkey.net/
// @version      1
// @description  atcoderの問題文がたまに文字化けします。縛りプレイ用。
// @author       @neet1737984
// @license      MIT
// @match        https://atcoder.jp/*_*
// @grant        none
// ==/UserScript==

const bakemozi = "蜀?捉荳翫蛟九?轤ケ縺檎ュ蛾俣髫斐荳ヲ繧薙〒縺翫縲縲繧狗縺九縺ヲ譎ィ縺セ縺ァ縺ョ逡ェ蜿キ縺御サ倥¢繧峨蠑ヲ縺ゥ縺?@縺ョ莠、轤ケ縺悟ュ伜惠縺吶k縺?°蛻、螳壹@縺ヲ縺上□縺輔>縲縺ヲ縺?∪縺吶?�����������";

const jatch = /^[\p{scx=Hiragana}\p{scx=Katakana}\p{scx=Han}]+$/u;

const CORRUPTION_P = 0.2;

(function() {
    'use strict';

    // Your code here...
    let content = document.querySelectorAll('div.col-sm-12');
    if(content.length==2){
        let elements = content[1].querySelectorAll('p,h3,li');
        elements.forEach(element => {
            element.childNodes.forEach(child => {
                if (child.nodeType === Node.TEXT_NODE) {
                    let s = child.textContent;
                    let t = ""
                    for (var i = 0; i < s.length; ++i) {
                        if(jatch.test(s[i]) && Math.random()<CORRUPTION_P){
                            t += bakemozi[Math.floor(Math.random()*bakemozi.length)];
                        }
                        else{
                            t += s[i];
                        }
                    }
                    child.textContent = t;
                }
            });
        });
    }
})();