Es ist ein Verfahren zum Erfassen, Testen und Einreichen eines Testfalls auf dem Terminal (Mac) mit "atcoder-cli", "Online-Judge-Tools".
Als ich AtCoder gestartet habe, habe ich den Codetest auf der Wettbewerbsseite ohne spezielle Umgebungswartung verwendet. Durch die Verbesserung der Umgebung, wie in diesem Artikel beschrieben, wird alles in Visual Studio Code + iTerm2 abgeschlossen. Die Einreichungsgeschwindigkeit hat zugenommen.
Installation der notwendigen Werkzeuge
$ pip3 install online-judge-tools
$ npm install -g atcoder-cli
$ pip3 install selenium
Melden Sie sich mit dem Tool bei AtCoder an
$ acc login
$ oj login https://atcoder.jp/
Stellen Sie sicher, dass alle Problemverzeichnisse erstellt wurden. Lassen Sie beispielsweise für den AtCoder Begginer-Wettbewerb mit dem Befehl acc new abcXXX Fragen a ~ f erstellen
$ acc config default-task-choice all
Zeigen Sie den Speicherort des Konfigurationsverzeichnisses an
$ acc config-dir
Legen Sie die Vorlage fest. Erstellen Sie einen Ordner mit dem Vorlagennamen im Konfigurationsverzeichnis und erstellen Sie den Vorlagenquellcode (Beispiel: main.py
) und die Vorlagenkonfigurationsdatei ( template.json
) darin.
#Gehen Sie zum Konfigurationsverzeichnis
$ cd /Users/xxxxxxxxxx/Library/Preferences/atcoder-cli-nodejs
$ mkdir py
$ cd py
$ touch main.py template.json
Wenn das Problemverzeichnis erstellt wird, wird main.py erstellt. Um es an main.py zu senden, schreiben Sie wie folgt.
$ cat template.json
{
"task":{
"program": ["main.py"],
"submit": "main.py"
}
}
Bearbeiten Sie die Standardeinstellungen, wenn main.py erstellt wurde. #! / usr / bin / env python3
ist erforderlich. In meinem Fall schreibe ich standardmäßig zusätzliche allgemeine Eingabemuster.
$ 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())
Setzen Sie die Standardvorlageneinstellung auf py (die im py-Verzeichnis festgelegte Datei gilt)
$ acc config default-template py
Überprüfen Sie die Vorlage
$ acc templates
search template directories in /Users/xxxxxxxxxx/Library/Preferences/atcoder-cli-nodejs
NAME SUBMIT-PROGRAM
py main.py
Das folgende Beispiel dient zum Erstellen eines Verzeichnisses für den AtCoder Bergginer Contest 154. Eine Datei mit main.py
und Testein- und -ausgabe wird erstellt.
$ 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
Sobald das Programm abgeschlossen ist, testen Sie es mit "Online-Judge-Tools" (atcoder-cli hat keine Testbefehle)
$ oj t -c "python3 main.py" -d ./tests/
In meinem Fall habe ich einen Alias eingefügt, damit ich nur mit dem Befehl test
im Zielverzeichnis testen kann.
$ vim ~/.bash_profile
#Fügen Sie Folgendes hinzu
alias test='oj t -c "python3 main.py" -d ./tests/'
$ source ~/.bash_profile
Führen Sie den Befehl test
im gewünschten Verzeichnis aus
$ pwd
/xxxxx/atcoder/problem/abc151/a
$ test
Wenn Sie in einem anderen Testfall als der Problemstellung testen möchten, z. B. während des Debuggens, führen Sie das Programm normal aus und geben Sie den Testfall ein. Im Fall der folgenden Programme
n = int(input())
print(n)
Überprüfen Sie, ob das erwartete Ergebnis zurückgegeben wird, indem Sie die Ausgabe erhalten, indem Sie Folgendes ausführen und eingeben.
$ python main.py
1 #Eingang
1 #Ausgabe
Durch Ausführen des folgenden Befehls in dem betreffenden Verzeichnis wird automatisch zur AtCoder-Seite gesprungen und diese gesendet.
$ acc s