热门标签 | 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
推荐阅读
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 本文将带你快速了解 SpringMVC 框架的基本使用方法,通过实现一个简单的 Controller 并在浏览器中访问,展示 SpringMVC 的强大与简便。 ... [详细]
  • 本文回顾了作者初次接触Unicode编码时的经历,并详细探讨了ASCII、ANSI、GB2312、UNICODE以及UTF-8和UTF-16编码的区别和应用场景。通过实例分析,帮助读者更好地理解和使用这些编码。 ... [详细]
  • 在分析Android的Audio系统时,我们对mpAudioPolicy->get_input进行了详细探讨,发现其背后涉及的机制相当复杂。本文将详细介绍这一过程及其背后的实现细节。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 本文主要探讨了Java中处理ActionEvent事件的接口,以及一些常见的编程问题和解决方案,包括方法重载、成员变量访问、镜片质量检测等。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 本文详细解析了Java类加载系统的父子委托机制。在Java程序中,.java源代码文件编译后会生成对应的.class字节码文件,这些字节码文件需要通过类加载器(ClassLoader)进行加载。ClassLoader采用双亲委派模型,确保类的加载过程既高效又安全,避免了类的重复加载和潜在的安全风险。该机制在Java虚拟机中扮演着至关重要的角色,确保了类加载的一致性和可靠性。 ... [详细]
  • 深入解析CAS机制:全面替代传统锁的底层原理与应用
    本文深入探讨了CAS(Compare-and-Swap)机制,分析了其作为传统锁的替代方案在并发控制中的优势与原理。CAS通过原子操作确保数据的一致性,避免了传统锁带来的性能瓶颈和死锁问题。文章详细解析了CAS的工作机制,并结合实际应用场景,展示了其在高并发环境下的高效性和可靠性。 ... [详细]
  • 在本文中,我们将详细介绍如何构建一个用于自动回复消息的XML类。当微信服务器接收到用户消息时,该类将生成相应的自动回复消息。以下是具体的代码实现:```phpclass We_Xml { // 代码内容}```通过这个类,开发者可以轻松地处理各种消息类型,并实现高效的自动回复功能。我们将深入探讨类的各个方法和属性,帮助读者更好地理解和应用这一技术。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
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社区 版权所有