Bisher wurde AtCoder in Python x Jupyter Lab durchgeführt. Dieses Mal möchte ich VS Code neu verwenden, und ich hatte jedes Mal Probleme beim Ausführen von Beispieltestfällen. Daher werde ich es verlassen, da es eine Möglichkeit gab, Google auszuprobieren!
Dieses Mal ist es das Ziel, die folgenden Operationen ausführen zu können.
Ich baue diesmal auf Ubuntu auf, aber da ich Shell-Skripte und VS-Code verwende, ist es in Ordnung, wenn Windows Subsystem für Linux sowohl in Windows als auch in Mac enthalten ist ...?
Es gab einen Artikel, den ich unter Windows 10 geübt habe! Competition Pro mit Python und VSCode - Vereinfachung der Standardeingabe und Automatisierung der Beurteilung von Beispielfällen
Es fühlt sich an, als könnte ich von jedem abholen und essen. Es war sehr hilfreich. Vielen Dank! Aufbau eines wettbewerbsfähigen professionellen Umfelds mit Visual Studio Code (praktische Ausgabe) Erstellen einer Python-Umgebung für Profis mit VS Code unter Windows [GitHub]online-judge-tools
Ich schneide ein Verzeichnis namens AtCoder und baue dort die Umgebung auf. Wettbewerbsprobleme werden alle mit dem Dateinamen {Wettbewerbsname} \ _ {Problemname} .py in das Problemverzeichnis getaucht. Bitte beachten Sie, dass der Teil {Dateiname} des Dateinamens nur funktioniert, wenn er mit der URL der AtCoder-Wettbewerbsseite übereinstimmt.
//atcoder.jp/contests/{Name des Wettbewerbs}
Beispiel für Dateinamen:
AtCoder Anfängerwettbewerb 158 Ein Problem
(URL:https://atcoder.jp/contests/abc158/tasks/abc158_a)
→abc158_a.py
Programmierwettbewerb 2020 C der Hitachi, Ltd.-Abteilung für soziale Systeme Problem
(URL:https://atcoder.jp/contests/hitachi2020/tasks/hitachi2020_c)
→hitachi2020_c.py
```shell
AtCoder
├── cptest.sh #Diesmal das Haupt-Shell-Skript
│
├── input.txt #Datei, um den manuell eingegebenen Wert von Ziel 2 zu setzen
│
├── problems #Verzeichnis zum Speichern von Wettbewerbsfragen
│
├── test #Verzeichnis zum Speichern von Wettbewerbsbeispielen
│
└── .vscode #Verzeichnis zum Speichern von VS-Code-Konfigurationsdateien
├── launch.json #Einstellungsdatei für Ziel 2
└── tasks.json #Einstellungsdatei für Ziel 1
Es ist ein wahnsinnig nützliches Tool, das Beispiel-Testfälle von der AtCoder-Wettbewerbsseite entfernt und automatisch ausführt.
Mit pip installieren.
bash
$ pip install online-judge-tools
Nach Abschluss der Installation müssen Sie sich mit Ihrem AtCoder-Konto anmelden, um das Tool verwenden zu können. Melden Sie sich mit dem folgenden Befehl an.
bash
$ oj login -u {Nutzername} -p {Passwort} "https://atcoder.jp/"
Sie können Ihr Login unten überprüfen.
bash
oj login --check "https://atcoder.jp/"
cptest.sh
Wenn Sie den Namen der Problemdatei ohne Erweiterung (.py) wie `cptest.sh abc158_a``` ausführen, während Sie angemeldet sind, wird der Test im Beispieltestfall automatisch ausgeführt. Es ist ein Shell-Skript, das dies tut. Weist es dem VS-Code
`Strg + Umschalt + B``` zu, sodass Sie es nicht in das Terminal eingeben müssen, um es auszuführen.
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~
Laden Sie die Informationen des Beispieltestfalls der Wettbewerbsfrage im Testverzeichnis im Teil von herunteroj test -c~
Testen Sie mit dem im Abschnitt heruntergeladenen Testfall.
input.txt
Es ist eine Textdatei, die die Eingabewerte für die manuelle Testausführung enthält.
Sie können es vom Terminal aus in Form von `python abc158_a.py <input.txt``` verwenden. Wird
`F5``` zugewiesen, so dass es nicht vom Terminal ausgeführt wird.
input.txt
(Beschreiben Sie den Inhalt, den Sie als Standardeingabe übergeben möchten)
task.json
Dies ist eine Einstellungsdatei zum Zuweisen der Testausführung im Beispieltestfall zu `Strg + Umschalt + B```. Drücken Sie bei geöffneter .py-Datei
Strg + Umschalt + B```, um die Build-Task zu konfigurieren und
`` task.json``` wie folgt zu erstellen.
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
Es wird zu einer Einstellungsdatei für die Ausführung des Debuggers von vs-Code.
Wenn Sie `` `F5``` drücken, während die zu debuggende .py-Datei geöffnet ist, wird der Inhalt von input.txt als Eingabe verwendet und die .py-Datei ausgeführt.
Launch.json kann angezeigt werden, indem Sie im VS-Code `Strg + Umschalt + D``` oder`
F5``` drücken, um in den Debug-Modus zu wechseln und auf den oberen linken Gang zu klicken. Bei der erstmaligen Einstellung wird auf der linken Seite "Neue Datei launch.json erstellen" angezeigt (sollte angezeigt werden). Erstellen Sie daher eine neue Datei für die Python-Datei.
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"
]
}
]
}
Nachdem Sie die obigen Einstellungen vorgenommen haben, müssen Sie nur noch den Code schreiben und ausführen. Nehmen wir als Beispiel Ein Problem von ABC158.
Unten ist die Aufnahme, wenn `` `Strg + Umschalt + B``` ausgeführt wird.
Alle Beispieltestfälle sind AC.
Ich werde auch einen manuellen Test durchführen. Testen wir mit dem Eingang "AAA". Gehen Sie nach dem Speichern als "AAA" in input.txt zurück zu abc158_a.py und drücken Sie `` `F5```.
input.txt
AAA
Das Ergebnis wird als "Nein" zurückgegeben.
Natürlich ist der Test im Beispieltestfall automatisiert, aber es ist auch sehr bequem, den Eingabewert in input.txt festlegen zu können. Dies ist besonders nützlich, wenn der Eingabewert eine Liste ist oder wenn er * i * Mal wiederholt wird. Die diesmal verwendeten Online-Richtertools scheinen in der Lage zu sein, andere Einreichungen als Beispieltests zu automatisieren. Daher kann es sinnvoll sein, verschiedene Dinge auszuprobieren. Auch ich habe bei dieser Gelegenheit mein Debüt mit VS Code gegeben, aber es scheint, dass es viele Funktionen gibt, die ich noch nicht beherrsche, deshalb möchte ich mich weiterhin diesem Thema widmen! !!
Recommended Posts