Python 경쟁 프로 er에 대한 테스트 환경 구축 with Atom

대상인



앞으로 Python에서 경기 프로그래밍을 시작하는 사람이나 이미 경쟁 프로 er이지만 테스트 환경을 가지고 있지 않기 때문에 사람을위한 기사입니다. 테스트 환경을 만드는 방법의 기사가 보이지 않아서 곤란했기 때문에 썼습니다. 단순히 표준 입력을 받는 방법을 알고 싶은 사람은 다음 기사가 정리되어있어 매우 좋습니다.

파이썬에서 경쟁 프로를 할 때 자주 쓰는 코드를 정리해 보았습니다.

예를 들어 입력으로
N M
s1 t1 w1 
s2 t2 w3
...
sN tN wN

와 같은 복수행의 입력이 있을 때, 실행할 때마다 이것을 입력하는 것은 매우 힘들어요… 이 기사에서는 Atom에서 로컬 테스트 환경을 만듭니다. VSCode 등을 사용하는 사람은 보통 터미널을 사용할 수 있다고 생각하므로 Powershell에서 실행에서 읽어 진행하십시오. 그러나 맥이나 리눅스는
python spam.py < input.txt

라는 바람에 입력 데이터를 text 파일에 써 두고 리디렉션하고 읽는 것만으로 좋다고 합니다. 수고하셨습니다. 다음 Windows 10을 가정합니다.

Atom 및 package 소개



아래의 기사를 참고로 Atom과 package platformio-ide-terminal의 도입을 해 주세요(atom · python으로 경쟁 프로그래밍 테스트 환경 구축). 이제 Atom에서 PowerShell을 쉽게 시작할 수 있습니다.

위에 올린 기사에서는
import sys
f = open('input.txt', 'r')
sys.stdin = f

x = input()
print(x)

처럼 파일로부터 표준 입력을 받고 있습니다만, 경프로에서는 이대로 제출할 수 없기 때문에 조금 불편합니다(비판하고 있는 것은 아닙니다). 로컬에서 테스트하고 그대로 제출할 수있는 것을 목표로합니다.

PowerShell에서 실행



Windows에서는 python spam.py < input.txt 대신
Get-Content ./input.txt | python ./spam.py

와 같이 실행할 수 있습니다. PowerShell은 Atom 하단의 [+]에서 시작할 수 있습니다 (아래 그림).


매번 이것을 박는 것은 귀찮아서 스크립트를 쓰고 거슬러 올라갑니다. 앞으로 PowerShell 스크립트를 만들지 만 어렵지 않으므로 처음이라도 괜찮습니다. (나도 이것이 2번째이므로…)

스크립트를 쓰고 편하게 하고 싶다



방금 코드를 실행하는 PowerShell 스크립트 test.ps1를 작성하십시오.

test.ps1
Get-Content ./input.txt | python ./spam.py

주의점이지만 PowerShell에서는 현재 디렉토리라도 상대 경로를 명시하지 않으면 안됩니다. hoge.txt 대신 ./hoge.txt처럼 쓰자 (자계).

사실 PowerShell 스크립트는 그대로 실행할 수 없습니다. 실행 정책을 변경하지 않으면 실행할 수 없게 되었기 때문입니다. 따라서 Atom에서 Powershell을 시작하면 실행 정책을 자동으로 변경할 수 있습니다. Atom의 [file]->[setting]->[Packages]->[platformio-ide-terminal]->[Core]->[Auto Run Command]로
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

를 추가합니다. 필요한 경우 [Working Directrory]도 변경해 두면 좋을지도 모릅니다. 나는 [Active File]으로 만들었습니다.

이제 준비가 되었습니다! ! !

시도해보세요!



spam.py
import sys
N,M = map(int, sys.stdin.readline().split())
print(N, M)
for _ in range(M):
    s,t,w = map(int, sys.stdin.readline().split())
    print(s,t,w)

input.txt
5 3
0 1 4
0 2 3
1 1 2

준비가되면 Atom에서 PowerShell을 열고 test.ps1를 실행해보십시오. 표준 입력을 올바르게 받았습니까?

마지막으로



경험이 얕기 때문에, 이런 편이 좋다고 하는 지적등 기다리고 있습니다 m(__)m. 또 이해하기 어려운 점은 부담없이 들어주세요!

참고



PowerShell 리디렉션
PowerShell 스크립팅의 첫걸음

좋은 웹페이지 즐겨찾기