实训答案查询入口
EduCoder平台答案在此,里面搜集了一些答案。
不要直接复制答案哦,建议自己做完再看答案。
查询答案入口网页版
小程序版:
它的后台数据库保存了大约一百多个实训关卡的答案,实现的方法见下文简介。
实现方法
在EduCoder平台上完成一个实训关卡后能够获得相应的金币奖励,而开启本关卡答案所需的金币正是奖励的金币数量,完成实训后开启答案可以做到不亏不赚(注:现在开启答案需要10倍的金币了,得同时维护十多个账号才行)。这样就只要写了多少实训,就能开启多少实训的答案。
但如果遇到不会写的实训,这时只能直接解锁查看答案,然后再通关,此时不会获得金币奖励。
如何弥补直接开启答案造成的金币亏损呢?这就首先需要每天进行自动签到领取金币。
通过领取这些金币,如果遇到不会写的实训,就可以解锁来看实训的答案了。而对于会写的实训,在完成后就直接用奖励的金币解锁答案。
更进一步,用程序维护3到4个账号(注:现在开启答案需要10倍的金币了,得同时维护十多个账号才行…),用其中一个账号解锁答案,其他账号有一定几率可以用刚刚解锁的答案直接通过关卡,从而获得金币奖励,这样总的金币数量可以维持稳定。
最后通过下面介绍的接口获取已开启的答案,保存为数据库就行了。
EduCoder接口封装代码
以下代码均为nodejs环境
const rp = require("request-promise");
class Session{
/**
简单的一个Session会话类,用于记录cookies
*/
constructor(cookies){
this.cookies = cookies||""; //记录cookies
}
async request({
url, method="GET",header, data, success, fail, complete}){
var options = {
method,
json:true,
uri: url,
headers:{
Cookie: this.cookies, ...header //每次请求带上cookies
},
resolveWithFullResponse:true // 加上这个可以获取到请求头,从而得到新cookies,否则只返回请求得到的数据
}
if(method=="GET"){
options.qs = data //如果是GET,把data传入querystring
}else if(method=="POST"){
options.body = data //如果是POST,把data传入body
}
try{
console.debug("request options", options);
let {
headers, body} = await rp(options); //用request-promise发起网络请求
console.debug