Windows Batch (CMD) es probablemente el lenguaje menos adecuado para el golf de código.
Evita los personajes de nueva línea . Si está buscando el código más corto en bytes, en lugar de caracteres, querrá deshacerse de todos los retornos de carro innecesarios (caracteres de nueva línea = 2 bytes). Puede usar la &
operación para hacer esto, recortando un byte para cada comando.
echo Hello&echo World.
Configuración de variables . Cuando se configuran variables usando interruptores, el set
analizador ignorará los espacios.
set /a a+=1
set /p b="User Input: "
:: Will be handled the same as..
set/aa+=1
set/pb="User Input: "
Tenga en cuenta que las mismas reglas del analizador no se aplican a todos los comandos; por ejemplo, para los bucles se requieren espacios. Excepto entre el set, string, or command
(es decir, lo que está dentro de los corchetes) y la palabra do
.
for /f %%a in (file.txt)do ...
Expresiones matemáticas simples . Además, observe la expresión que usé para incrementar en el set /a
comando. Para expresiones matemáticas simples, use en += -= *= /=
lugar de (por ejemplo) set /a a=%a%+1
.
Recopilación de salida del comando . Para obtener la salida de un comando, a veces puede ser útil enviar y leer desde un archivo, donde de lo contrario podría haber usado un bucle for para recopilar la salida:
for /f %%a in ('echo test') do set a=%%a
:: Can be shortened to
echo test>f&set/pa=<f
echo test
envíe stdout a un archivo llamado f, >f
inicie un nuevo comando &
y obtenga el contenido del archivo en una variable set/pa=<f
. Obviamente esto no siempre es útil. Pero puede ser cuando todo lo que necesita es una sola línea de salida.
Comando de salida . Al suprimir la salida del comando, úselo @
antes de los comandos, a menos que necesite suprimir más de 9 comandos, en cuyo caso, úselo @echo off
al comienzo de su script. @echo off
tiene una longitud de 9 bytes y, por lo tanto, generalmente guardará más bytes con secuencias de comandos más largas.
Los comandos a menudo hacen más que lo que es obvio : piense en lo que están haciendo sus comandos. Por ejemplo; si necesita establecer una variable y hacer eco de otra variable, en lugar de:
set a=OUTPUT
echo %a%
echo test>f
set /p b=<f
Puede usar el comando set con el /p
interruptor para enviarlo %a%
por usted.
set a=OUTPUT
echo test>f
set /p b=%a%<f
Completamente golf ...
set a=OUTPUT&echo test>f&set/pb=%a%<f
Un par de ejemplos: cuenta de suma de todos los dígitos , conjetura de Goldbach .
Cualquier otro consejo es más que apreciado. Seguiré actualizando esto si pienso en otra cosa.