CMD (Windows Batch)는 코드 골프에 가장 적합한 언어 일 것입니다.
개행 문자를 피하십시오 . 문자와 달리 가장 짧은 코드를 바이트 단위로 찾으려면 불필요한 캐리지 리턴 (줄 바꿈 문자 = 2 바이트)을 모두 제거해야합니다. 이 &
작업을 수행하여 각 명령에 대해 1 바이트를 트리밍 할 수 있습니다 .
echo Hello&echo World.
변수 설정 . 스위치를 사용하여 변수를 설정하면 set
파서는 공백을 무시합니다.
set /a a+=1
set /p b="User Input: "
:: Will be handled the same as..
set/aa+=1
set/pb="User Input: "
예를 들어 for 루프에는 공백이 필요한 동일한 구문 분석기 규칙이 모든 명령에 적용되지는 않습니다. set, string, or command
(즉, 괄호 안에있는 것)과 단어 사이는 제외합니다 do
.
for /f %%a in (file.txt)do ...
간단한 수학적 표현 . 또한 set /a
명령 에서 증분에 사용한 표현식을 확인하십시오 . 간단한 수학 표현식의 경우 += -= *= /=
(예를 들어) 대신 사용하십시오 set /a a=%a%+1
.
명령 출력 수집 . 명령의 출력을 얻으려면 때로는 파일을 출력하고 파일에서 읽는 것이 유용 할 수 있습니다. 그렇지 않으면 for 루프를 사용하여 출력을 수집했을 수 있습니다.
for /f %%a in ('echo test') do set a=%%a
:: Can be shortened to
echo test>f&set/pa=<f
echo test
stdout을 f라는 파일로 보내고 >f
새 명령을 시작한 &
다음 파일의 내용을 변수로 가져옵니다 set/pa=<f
. 분명히 이것이 항상 유용한 것은 아닙니다. 그러나 필요한 것은 한 줄의 출력 일 때도 가능합니다.
명령 출력 . 명령 출력 @
을 억제 할 때는 9 개 이상의 명령 을 억제해야하는 경우가 아니면 명령 시작 전에 사용 하십시오 .이 경우 @echo off
스크립트 시작시 사용 하십시오. @echo off
는 9 바이트 길이이므로 일반적으로 더 긴 스크립트로 더 많은 바이트를 저장합니다.
명령은 종종 명백한 것 이상 을 수행합니다. 명령이 수행하는 작업에 대해 생각하십시오. 예를 들어; 변수를 설정하고 다른 변수를 에코해야하는 경우 :
set a=OUTPUT
echo %a%
echo test>f
set /p b=<f
/p
스위치 와 함께 set 명령을 사용하여 출력 %a%
할 수 있습니다.
set a=OUTPUT
echo test>f
set /p b=%a%<f
완전 골프 ...
set a=OUTPUT&echo test>f&set/pb=%a%<f
expamples의 몇 - 모든 숫자의 합계를 계산 - 골드 바흐의 추측 .
다른 팁은 고맙게 생각합니다. 다른 것을 생각하면 계속 업데이트하겠습니다.