C'est une procédure pour acquérir, tester et soumettre un cas de test sur le terminal (Mac) en utilisant ʻatcoder-cli, ʻonline-Judge-tools
.
Quand j'ai démarré AtCoder, j'ai utilisé le test de code sur la page du concours sans aucune maintenance particulière de l'environnement, mais en améliorant l'environnement comme décrit dans cet article, tout sera terminé sur Visual Studio Code + iTerm2. La vitesse de soumission a augmenté.
Installation des outils nécessaires
$ pip3 install online-judge-tools
$ npm install -g atcoder-cli
$ pip3 install selenium
Connectez-vous à AtCoder avec l'outil
$ acc login
$ oj login https://atcoder.jp/
Assurez-vous que tous les répertoires problématiques sont créés. Par exemple, pour AtCoder Begginer Contest, demandez à la nouvelle commande acc abcXXX de créer des questions a ~ f
$ acc config default-task-choice all
Afficher l'emplacement du répertoire de configuration
$ acc config-dir
Définissez le modèle. Créez un dossier avec le nom du modèle dans le répertoire de configuration et créez le code source du modèle (exemple: main.py
) et le fichier de configuration du modèle ( template.json
).
#Aller au répertoire de configuration
$ cd /Users/xxxxxxxxxx/Library/Preferences/atcoder-cli-nodejs
$ mkdir py
$ cd py
$ touch main.py template.json
Lorsque le répertoire de problèmes est créé, main.py est créé et pour le soumettre à main.py, écrivez comme suit.
$ cat template.json
{
"task":{
"program": ["main.py"],
"submit": "main.py"
}
}
Modifiez les paramètres par défaut lors de la création de main.py. #! / usr / bin / env python3
est requis. Dans mon cas, j'écris des modèles d'entrée communs supplémentaires par défaut.
$ cat main.py
#!/usr/bin/env python3
S = input()
N = int(input())
S = input().split()
A, B, C = input().split()
L = list(map(int, input().split()))
H, N = map(int, input().split())
Définissez le paramètre de modèle par défaut sur py (le fichier défini dans le répertoire py s'applique)
$ acc config default-template py
Vérifiez le modèle
$ acc templates
search template directories in /Users/xxxxxxxxxx/Library/Preferences/atcoder-cli-nodejs
NAME SUBMIT-PROGRAM
py main.py
L'exemple ci-dessous concerne la création d'un répertoire pour AtCoder Bergginer Contest 154. Un fichier de main.py
et de test d'entrée et de sortie est créé.
$ acc new abc154
$ tree
.
├── a
│ ├── main.py
│ └── tests
│ ├── sample-1.in
│ ├── sample-1.out
│ ├── sample-2.in
│ └── sample-2.out
├── b
│ ├── main.py
│ └── tests
│ ├── sample-1.in
│ ├── sample-1.out
│ ├── sample-2.in
│ ├── sample-2.out
│ ├── sample-3.in
│ └── sample-3.out
├── c
│ ├── main.py
│ └── tests
│ ├── sample-1.in
│ ├── sample-1.out
│ ├── sample-2.in
│ ├── sample-2.out
│ ├── sample-3.in
│ └── sample-3.out
├── contest.acc.json
├── d
│ ├── main.py
│ └── tests
│ ├── sample-1.in
│ ├── sample-1.out
│ ├── sample-2.in
│ ├── sample-2.out
│ ├── sample-3.in
│ └── sample-3.out
├── e
│ ├── main.py
│ └── tests
│ ├── sample-1.in
│ ├── sample-1.out
│ ├── sample-2.in
│ ├── sample-2.out
│ ├── sample-3.in
│ ├── sample-3.out
│ ├── sample-4.in
│ └── sample-4.out
└── f
├── main.py
└── tests
├── sample-1.in
├── sample-1.out
├── sample-2.in
└── sample-2.out
12 directories, 41 files
Lorsque le programme est terminé, testez-le en utilisant ʻonline-Judge-tools` (atcoder-cli n'a pas de commandes de test)
$ oj t -c "python3 main.py" -d ./tests/
Dans mon cas, j'ai mis un alias pour pouvoir tester uniquement avec la commande test
dans le répertoire cible.
$ vim ~/.bash_profile
#Ajoutez ce qui suit
alias test='oj t -c "python3 main.py" -d ./tests/'
$ source ~/.bash_profile
Exécutez la commande test
dans le répertoire qui vous intéresse
$ pwd
/xxxxx/atcoder/problem/abc151/a
$ test
Si vous souhaitez effectuer un test dans un scénario de test autre que celui répertorié dans l'énoncé du problème, par exemple pendant le débogage, exécutez le programme normalement et entrez le scénario de test. Dans le cas des programmes suivants
n = int(input())
print(n)
Vérifiez si le résultat attendu est renvoyé en obtenant la sortie en exécutant et en entrant comme suit.
$ python main.py
1 #contribution
1 #production
En exécutant la commande suivante dans le répertoire en question, il passera automatiquement à la page AtCoder et la soumettra.
$ acc s
Recommended Posts