my cf

CF插件,可以跳转洛谷

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         my cf
// @namespace    xay5421
// @author       xay5421
// @match        *://codeforces.com/problemset/problem/*
// @match        *://codeforces.com/contest/*/problem/*
// @match        *://codeforces.ml/problemset/problem/*
// @match        *://codeforces.ml/contest/*/problem/*
// @match        *://codeforces.com/*
// @version      0.1
// @description  CF插件,可以跳转洛谷
// @require       https://code.jquery.com/jquery-3.4.1.min.js
// ==/UserScript==

const pathname=location.pathname

if(/\/problemset\/problem\/(\d*)\/([A-Z][1-9]?)$/.test(pathname)){
	location.href=`/contest/${RegExp.$1}/problem/${RegExp.$2}`;
}
else if(/\/contest\/(\d*)\/problem\/([A-Z][1-9]?)$/.test(pathname)){
	let x=$('.header>.title'),y=x.html();
	x.html(`<a href="https://www.luogu.com.cn/problem/CF${RegExp.$1+RegExp.$2}" target="_blank">${y}</a>`);
}

if(0){
    var stateObject = {};
    var title = "Wow Title";
    var newUrl = "/my/awesome/url";
    history.pushState(stateObject,title,newUrl);
}