Jusqu'à présent, AtCoder était réalisé en Python x Jupyter Lab. Cette fois, je souhaite utiliser VS Code récemment, et j'ai eu du mal à exécuter des exemples de cas de test à chaque fois, je vais donc le laisser car il y avait un moyen d'essayer Google!
Le but cette fois est de pouvoir effectuer les opérations suivantes.
Ctrl + Shift + B``` sur VS CodeJe construis sur Ubuntu cette fois, mais comme j'utilise des scripts shell et VS Code, c'est correct si le sous-système Windows pour Linux est inclus dans Windows ainsi que Mac ...?
Il y avait un article que j'ai pratiqué sur Windows 10! Competition Pro avec Python et VSCode-Simplification de la saisie standard et automatisation de l'exemple de jugement de cas-
J'ai l'impression de pouvoir ramasser et manger de chacun. Cela a été très utile. Je vous remercie! Création d'un environnement professionnel compétitif avec Visual Studio Code (édition pratique) Créer un environnement Python pour les professionnels de la concurrence avec VS Code sur Windows [GitHub]online-judge-tools
J'ai coupé un répertoire appelé AtCoder et construit l'environnement là-bas. Les problèmes du concours sont tous plongés dans le répertoire des problèmes avec le nom de fichier {nom du concours} \ _ {nom du problème} .py. Veuillez noter que la partie {nom du concours} du nom de fichier ne fonctionnera que si elle est identique à l'URL de la page du concours AtCoder.
//atcoder.jp/contests/{Nom du concours}
Exemple de nom de fichier:
AtCoder Beginner Contest 158 Un problème
(URL:https://atcoder.jp/contests/abc158/tasks/abc158_a)
→abc158_a.py
Hitachi, Ltd. Concours de programmation de la Division des systèmes sociaux 2020 Problème C
(URL:https://atcoder.jp/contests/hitachi2020/tasks/hitachi2020_c)
→hitachi2020_c.py
```shell
AtCoder
├── cptest.sh #Cette fois, le script shell principal
│
├── input.txt #Fichier pour mettre la valeur entrée manuellement de l'objectif 2
│
├── problems #Répertoire pour stocker les problèmes de concours
│
├── test #Répertoire de stockage des exemples de cas de concours
│
└── .vscode #Répertoire de stockage des fichiers de configuration VS Code
├── launch.json #Fichier de paramètres de l'objectif 2
└── tasks.json #Fichier de paramètres de l'objectif 1
C'est un outil incroyablement utile qui extrait des exemples de cas de test en question du site du concours AtCoder et les exécute automatiquement.
Installez avec pip.
bash
$ pip install online-judge-tools
Une fois l'installation terminée, vous devrez vous connecter avec votre compte AtCoder pour utiliser l'outil. Connectez-vous avec la commande suivante.
bash
$ oj login -u {Nom d'utilisateur} -p {mot de passe} "https://atcoder.jp/"
Vous pouvez vérifier votre connexion ci-dessous.
bash
oj login --check "https://atcoder.jp/"
cptest.sh
Si vous exécutez le nom du fichier de problème sans extension (.py) comme
cptest.sh abc158_a``` pendant que la connexion est terminée, le test dans l'exemple de cas de test sera exécuté automatiquement. C'est un script shell qui le fait. L'attribuera au code VS
Ctrl + Shift + B '' ', donc vous n'avez pas à le taper dans le terminal pour l'exécuter.
cptest.sh
#!/bin/bash
problem_name=$1
test_dir=test/${problem_name}
base_url=${problem_name%_*}
# make test directory
if [ ! -e ${test_dir} ]; then
oj dl -d test/${problem_name} https://atcoder.jp/contests/${base_url}/tasks/${problem_name}
fi
oj test -c "python3 problems/${problem_name}.py" -d test/${problem_name}
oj dl -d test~
Téléchargez les informations de l'exemple de cas de test de la question du concours dans le répertoire de test dans la partie deoj test -c~
Test en utilisant le cas de test téléchargé dans la section.
input.txt
Il s'agit d'un fichier texte contenant les valeurs d'entrée pour l'exécution manuelle des tests.
Vous pouvez l'utiliser depuis le terminal sous la forme de
python abc158_a.py <input.txt```. Sera assigné à `` F5 '', donc il ne sera pas exécuté à partir du terminal.
input.txt
(Décrivez le contenu que vous souhaitez transmettre comme entrée standard)
task.json
Il s'agit d'un fichier de paramètres pour attribuer l'exécution du test dans l'exemple de cas de test à
Ctrl + Shift + B```.
Le fichier .py étant ouvert, appuyez sur Ctrl + Maj + B '' pour configurer la tâche de construction et créez
task.json '' comme suit.
task.json
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "test_atcoder_sample",
"group": {
"kind": "build",
"isDefault": true
},
"type": "shell",
"command": "${workspaceFolder}/cptest.sh",
"args": [
"${fileBasenameNoExtension}"
}
]
}
launch.json
f5
Il devient un fichier de paramétrage pour exécuter le débogueur de vs code.
Si vous appuyez sur `` F5 '' alors que le fichier .py que vous souhaitez déboguer est ouvert, il prendra le contenu de input.txt comme entrée et exécutera le fichier .py.
Launch.json peut être affiché en appuyant sur Ctrl + Maj + D '' ou
F5 '' dans VS Code pour entrer en mode débogage et en cliquant sur l'engrenage supérieur gauche. Lors du réglage pour la première fois, «Créer un nouveau fichier launch.json» apparaîtra (devrait) sur le côté gauche, alors créez-en un nouveau pour le fichier Python.
launch.json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"args": [
"<",
"input.txt"
]
}
]
}
Après avoir terminé les paramètres ci-dessus, tout ce que vous avez à faire est d'écrire et d'exécuter le code. Prenons Un problème d'ABC158 comme exemple.
Ci-dessous se trouve la capture lorsque
Ctrl + Shift + B``` est exécuté.
Tous les exemples de cas de test sont AC.
J'effectuerai également un test manuel. Testons avec l'entrée "AAA".
Après avoir enregistré en tant que "AAA" dans input.txt, revenez à abc158_a.py et appuyez sur
F5```.
input.txt
AAA
Le résultat sera renvoyé comme "Non".
Bien sûr, le test dans l'exemple de cas de test est automatisé, mais il est également très confortable de pouvoir définir la valeur d'entrée dans input.txt. Ceci est particulièrement utile lorsque la valeur d'entrée est une liste ou lorsqu'elle est répétée * i * fois. Les outils de juge en ligne utilisés cette fois semblent être capables d'automatiser les soumissions autres que des exemples de tests, il peut donc être bon d'essayer diverses choses. Aussi, j'ai fait mes débuts avec VS Code à cette occasion, mais il semble qu'il y ait beaucoup de fonctions que je n'ai pas encore maîtrisées, alors j'aimerais continuer à m'y consacrer! !!
Recommended Posts