热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Pintia(拼题A)刷题插件onVSCode

开发背景初次在拼题A(Pintia)上刷题是在2019年的暑假

开发背景

初次在拼题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. 插件安装

img

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

2. 使用介绍

2.1. 登录/登出

img

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

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

    • Pintia: Sign In
    • Pintia: Sign Out

2.2. 预览问题与编码

preview

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

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

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

2.3. 编辑器快捷键

img

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

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

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

2.4. 自定义测试样例

img

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

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

2.5. View 菜单

img

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

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

3. 命令面板

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

img

其中,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
  • 在本地记录答题历史
  • 快速搜索题解
  • 题目搜索

版权声明:本文为charjindev原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/charjindev/article/details/126196475
推荐阅读
  • Python入门:第一天准备与安装
    本文详细介绍了Python编程语言的基础知识和安装步骤,帮助初学者快速上手。涵盖Python的特点、应用场景以及Windows环境下Python和PyCharm的安装方法。 ... [详细]
  • 本文将深入探讨PHP编程语言的基本概念,并解释PHP概念股的含义。通过详细解析,帮助读者理解PHP在Web开发和股票市场中的重要性。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • c# – UWP:BrightnessOverride StartOverride逻辑 ... [详细]
  • 解决Linux系统中pygraphviz安装问题
    本文探讨了在Linux环境下安装pygraphviz时遇到的常见问题,并提供了详细的解决方案和最佳实践。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 高效解决应用崩溃问题!友盟新版错误分析工具全面升级
    友盟推出的最新版错误分析工具,专为移动开发者设计,提供强大的Crash收集与分析功能。该工具能够实时监控App运行状态,快速发现并修复错误,显著提升应用的稳定性和用户体验。 ... [详细]
  • Python 异步编程:ASGI 服务器与框架详解
    自 Python 3.5 引入 async/await 语法以来,异步编程迅速崛起,吸引了大量开发者的关注。本文将深入探讨 ASGI(异步服务器网关接口)及其在现代 Python Web 开发中的应用,介绍主流的 ASGI 服务器和框架。 ... [详细]
  • PHP插件机制的实现方案解析
    本文深入探讨了PHP中插件机制的设计与实现,旨在分享一种可行的实现方式,并邀请读者共同讨论和优化。该方案不仅涵盖了插件机制的基本概念,还详细描述了如何在实际项目中应用。 ... [详细]
author-avatar
嘉兴布奇乐乐园
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有