开发背景

初次在拼题A(Pintia)上刷题是在2019年的暑假,使用的首选语言是 C++,编辑器则以 VS Code 为主。VS Code 由于其免费、轻量以及插件库丰富的特性,吸引了越来越多的开发者,当然这也是它非常适合用于刷题的原因,如刷题时常用的C/C++、Python或者Java语言都可以通过在 VS Code 上安装对应的插件以及配置其编译器得到支持。而在 VS Code 上开发 Pintia 刷题插件的起因是由于我在刷 LeetCode 题时无意间注意到在 VS Code 插件商店中发布了一款用于 LeetCode 的刷题插件,可以在 VS Code 中直接登录与提交力扣代码,并在插件中实现了网页版 LeetCode 的许多功能,如预览、收藏、提交测试等。这种将刷题和编码通过编辑器整和的创意对练习者来说是非常便利的,于是,我向@陈越姥姥询问百腾是否有做这样一款插件的计划,当时的回复大概是说“这类插件通常是社区自主开发,官方不会出这样一个插件”。因此利用暑期的这段时间,完成了第一个 Beta 版本。

代码的开源仓库:GitHub | Gitee

插件首页地址:Pintia - Visual Studio Marketplace

0. 功能介绍

  • 使用微信二维码扫码登录 Pintia/PTA(暂不支持账号密码登录)
  • 本地显示公共题库(需要读者验证码的题集会被标记上锁符号)
  • 在 VS Code 中预览题目
  • 题目中的输入/输出样例可点击复制
  • 向 Pintia/PTA 提交或测试你的 Solution
  • 在编辑区中快速添加多个自定义测试样例
  • 自动签到 Pintia/PTA 的教育超市

1. 插件安装


  1. 在本地安装 VS Code
  2. 在 VS Code 的插件商店中,搜索关键字pintia或者pta,点击安装。或者点此进入插件主页点击安装进行跳转。

2. 使用介绍

2.1. 登录/登出

  • 在 Pintia Explorer 中点击 Sign in to Pintia ,即可登录PTA(目前,只支持扫描微信二维码登录)

  • 亦可使用以下命令来登录/登出

    • Pintia: Sign In
    • Pintia: Sign Out

2.2. 预览问题与编码

  • 点击问题,即可查看问题描述
  • 点击右下角的Code New按键,开始编码

注:插件中默认选择的语言是C++,可以在设置中或者使用命令面板键入Pintia: Change Default Language来快速修改默认使用的编程语言。部分题集(如教材类题集)指定了可用的编程语言,此时创建源文件则会以规定使用的语言为准,如果指定可用的编程语言有多个(如ZOJ Problem Set题集),则会弹出提示以重新选择想用的编程语言。
⭐️ 预览区的输入输出样例点击可复制

每道题目的源文件会被创建到用户指定的工作区目录,首次创建源文件时,需要用户选择所用的工作区(默认推荐的工作区目录为 $HOME/.pintia/codes ),或者也可在 VS Code 的设置中修改pintia.workspaceFolder配置项。

2.3. 编辑器快捷键

  • Pintia 插件暂支持2个编辑器快捷键
  • Submit:向 Pintia 提交你的答案
  • Test:用自定义的测试样例默认样例测试你的答案

点击Test测试代码时,会自动获取题目中可用的测试样例(并不是问题描述中的输入输出样例)作为默认测试样例,若无默认测试样例插件会予以提示。

注:默认的测试样例指的是,Pintia能提供答案的测试样例。使用自定义的测试样例测试代码时,Pintia只会返回你的代码对测试样例的输出而不会返回真实的答案。而使用默认的测试样例时,Pintia会提供正确的输出予以对照(但实际上部分题目即使提供了默认测样样例,Pintia 也不会返回正确输出)。

2.4. 自定义测试样例

自定义测试样例是为了方便快速测试自己的代码,你可以直接在代码的下方将自定义的测试样例放置在@pintia test=start@pintia test=end之间(输入ptatest可快速添加),并点击Test custom sample来快速测试。自定义测试样例可添加多个。

注:在代码编辑区点击Submit或者Test提交代码时,只有包裹在@pintia code=start@pintia code=end中的代码会被提交,区域外的文本内容不会被提交到Pintia,因此这有个小trick,即提交函数题时,可以在源文件中添加完整的代码供本地测试,而将所要提交的函数段代码包裹在上述标识符中。如果误删了上述标识,可在编辑区中输入ptacode来快速添加。

2.5. View 菜单

在 Explorer 的顶部实现了5个快捷菜单,分别用于:

  • 打开 Pintia 官网
  • 登录/登出
  • 刷新列表
  • Report Issue
  • 收起所有列表

3. 命令面板

为了快速使用相关功能,可以在 VS Code 中使用 Ctrl+Shift+P (in Windows) 或 Command+Shift+P (in Mac)打开命令面板并输入pintia以快速使用插件的相关命令。可用的命令如下:

其中,Pintia: Clear Cache命令用于清除缓存,由于 Pintia 中的题目集或题目信息通常是不变的,因此,为了避免发送重复的请求造成资源浪费,插件会将请求到的信息缓存在本地,如果发现本地显示的内容和官网上有冲突可以使用上述命令清除本地缓存后点击Refresh刷新题目列表或者重启 VS Code。

4. 插件配置项

设置名称 描述 默认值
pintia.showLocked 指定是否显示锁定的问题(一些题目集需要验证用户的读者码后方可提交) true
pintia.defaultLanguage 指定用于解题的默认语言。支持的语言有C (gcc), C++ (g++), C (clang), C++ (clang++), Java (javac), Python (python2), Python (python3), Ruby (ruby), Bash (bash), Plaintext (cat), CommonLisp (sbcl), Pascal (fpc), Go (go), Haskell (ghc), Lua (lua), Lua (luajit), C# (mcs), JavaScript (node), OCaml (ocamlc), PHP (php), Perl (perl), AWK (awk), D (dmd), Racket (racket), Vala (valac), Visual Basic (vbnc), Kotlin (kotlinc), Swift (swiftc), Objective-C (gcc), Fortran95 (gfortran), Octave (octave-cli), R ®, ASM (nasm. sh), Rust (rustc), Scala (scalac), Python (pypy3), SQL (SQL) C++ (g++)
pintia.workspaceFolder 指定工作区文件夹的路径,以存储代码文件 “”
pintia.enableStatusBar 指定是否显示Pintia状态栏 true
pintia.editor.shortcuts 指定编辑器中的自定义快捷方式。目前仅支持submit, test [“Submit”,“Test”]
pintia.paging.pageSize 当问题集过大时,是否对问题列表进行分页。当pageSize为0表示不分页 100
pintia.autoCheckIn 指定当Pintia插件被激活时,是否自动签到Pintia的教育商店 false

5. 维护计划

插件目前刚刚发布,仅实现了较为基础的答题功能,仍处于 Beta 版本,如果在使用过程中出现 Bug,可在 GitHub 上 New Issue。初步预想的一些功能会在后续逐步添加,如:

  • 直接使用账号密码登录Pinta/PTA
  • 在本地记录答题历史
  • 快速搜索题解
  • 题目搜索

Pintia(拼题A)刷题插件 on VS Code相关推荐

  1. 北邮oj题库刷题计划(更新ing)

    北邮oj题库刷题计划(更新ing) 83. A + B Problem 84 Single Number 85. Three Points On A Line 120 日期 121 最值问题 122 ...

  2. 基于科目分类的题库刷题小程序系统

    基于科目分类的题库刷题小程序系统 使用场景 在线答题,是一种在线练习.考试.测评的智能答题系统,适用于企业培训.学生练习.评测考核.知识竞赛.模拟考试等场景. 简介 考研刷题小程序云开发实战.题库小程 ...

  3. 大学计算机基础-题库刷题-精选

    题库刷题: 写在前面: 这个是我准备应对学校转专业考试而刷的题库, 也是大学计算机的题库,同样适用于大学计算机这门课的期末考试. 精选了一些重要的题目. 目录 题库刷题: 写在前面: 题目1:(接下来 ...

  4. 在哪里刷题_刷题过程中,这些坑你踩了几个?

    练习卷做了一套又一套,题目刷了一遍又一遍,一考试却发现,分数进步并不大,有些同学甚至没有进步.刷刷刷,为什么分刷不上来?你可能掉进了这些刷题误区--一看就会不少同学在做题的过程中遇到不会的题目的时候, ...

  5. 《剑指offer》第1~11题:刷题week1[C++题解]

    文章目录 1. 找出数组中重复的数字 思路一:排序 思路二:hash表 思路三:原地交换 2. 不修改数组找出重复的数字 思路:抽屉原理+二分 3. 二维数组中的查找 思路:思维题(选取右上角的值) ...

  6. python题库刷题训练软件_Python基础练习100题 ( 11~ 20)

    刷题继续 上一期和大家分享了前10道题,今天继续来刷11~20 Question 11: Write a program which accepts a sequence of comma separ ...

  7. 掌中题库刷题神奇微信小程序介绍

    微信小程序无需安装.便于传播,安卓与ios平台都可以使用. "掌中题库"微信小程序,针对个人或单位用户进行复习备考.业务学习.党建活动.继续教育而设计. 程序功能实用,界面简约,尤 ...

  8. 使用 软考免费真题app刷题库 手机小程序版

    方案1: APP刷真题(免费真题app) 手机软件:软考题库(ios)/希赛软考助手(安卓版) 软考题库免费真题app,含有历年真题.模拟考试.高频考点.知识点整理,还有收藏功能,错题记录功能等等.有 ...

  9. 自建题库刷题小程序,添加更丰富的练习设置,模糊选项、自动切题、夜间模式、答题音效、答对移除错题、练习完交卷后统计正确率

    土著刷题微信小程序v1.6,主要迭代练习设置,开发了较为实用的设置,练习交卷后,对练习结果进行统计本次练习的正确率,并且列出本次答错的试题,接下来就逐一介绍v1.6主要迭代开发的功能. 模糊选项设置 ...

最新文章

  1. Git安装与Github基本使用(完整版 for mac)
  2. 最详细的JavaWeb开发基础之java环境搭建(Windows版)
  3. python 给定URL 如何获取其内容,并将其保存至HTML文档。
  4. 【Android 应用开发】BluetoothClass详解
  5. 2.15 Python 中的广播-深度学习-Stanford吴恩达教授
  6. Git学习记录 力做全网最强入门教程
  7. HBase单机版安装详细步骤
  8. 我的世界梦之边缘5服务器在维护吗,8月5日服务器例行维护公告(已完成)
  9. 围住浮动元素(消除浮动)的三种方法
  10. manjaro Linux调节屏幕显示亮度
  11. 第四篇:断路器(Hystrix)(Finchley版本)V2.0_dev
  12. oracle group by 取最新的一条_大国智能制造全文免费阅读_大国智能制造最新章节_乌溪小道的小说...
  13. dcdc芯片效率不高的原因_电动汽车DCDC变换器应用详解
  14. 【树状数组+离线查询】HDU 3333 Turing Tree
  15. c3p0连接池配置及实现详解
  16. 吴恩达亲述:如何高效阅读论文,开启一个新的领域!
  17. 【php】PHP数据库访问
  18. hasText()和isEmpty()区别
  19. (三)dubbo工作原理
  20. python 文件命令_python中写入文件数据及文件定位操作命令

热门文章

  1. 【实战】物联网安防监控项目【5】———把模拟数据传输到web网页、web显示mjpeg-streamer视频图像
  2. 局域网IP变成广域网的IP
  3. 2022-2028年全球与中国救生艇行业市场前瞻与投资战略规划分析
  4. java 文本框 虚体字_虚字的意思、虚的繁体字、虚的笔顺笔画、虚字部首和繁体字虚的意思...
  5. ftp软件绿色版,四款好用的绿色版ftp软件
  6. 从瑞银集团看客户导向型财富管理机构如何从资产配置服务中获利
  7. 谈谈自己关于阅读源码的一点鄙见
  8. git使用 - 暂存更改
  9. 卫生事业单位计算机科学与技术,卫生事业单位考试-计算机科学与技术的知识点.doc...
  10. UE4像素流(Pixel Streaming)应用场景演示和分析