¿Qué consejos tienes para jugar al golf en Applescript? Estoy buscando ideas que se puedan aplicar a los problemas de golf de código en general que sean al menos algo específicos de Applescript (por ejemplo, "eliminar comentarios" no es una respuesta).
13
Respuestas:
El
of
operador se utiliza para obtener una propiedad de un objeto:Pero en muchos casos, puede usar
's
como acceso directo para guardar 1 carácter:fuente
Applescript Editor es un pequeño IDE útil que resalta la sintaxis y embellece su código. Sin embargo, a los fines del golf, es contraproducente ya que agrega sangría y palabras clave superfluas, por ejemplo, después de las
end
declaraciones. Por ejemplo:se convierte en lo siguiente cuando se pega en el Editor de Applescript y se compila / ejecuta:
Obviamente, el primer fragmento es mejor para el golf.
fuente
end
es bastante específica de Applescript.end
pertenece a qué instrucción de inicio de bloque cuando tiene múltiples bloques anidadostell
Los bloques son comunes en Applescript:Sin embargo, para ahorrar espacio, lo siguiente es equivalente, cuando el interior del
tell
bloque es solo una línea:fuente
tell app "TextEdit" to activate
.Algunas palabras tienen sinónimos más cortos. Por ejemplo,
application
se puede escribir comoapp
* ystring
se puede escribir comotext
.Además,
every <noun>
se puede escribir simplemente como el plural, como encharacters of "hello world"
(o"foo"'s characters
).* Aunque el compilador de Script Editor lo cambiará de nuevo.
fuente
Operación de cotización requerida
Para cualquier operación que requiera una cotización para hacer algo, es decir
Puedes acortar a
Repitiendo
En los bucles de repetición, se puede eliminar por completo la palabra "veces".
versus
<= y> =
Cada vez que se llama a estos operadores, puede reemplazarlos con
≤
y≥
, respectivamente. Si bien esto puede no reducir el conteo de bytes (a menos que se implementen convenciones especiales de conteo de bytes, lo que sugiero), sí reduce el conteo de caracteres.Agarrando de STDIN
Puede tomar STDIN con los siguientes caracteres:
Saliendo rápidamente
Si necesita salir de un código rápidamente (por cualquier razón, es decir, evitando
if
s excesivos ) ...fuente
Applescript permite insertar algunas palabras clave adicionales para facilitar la lectura:
Pero el
the
aquí es completamente superfluo y puede omitirse para guardar 4 caracteres:fuente
log"Hello World"'s words
porque 1) no necesita el espacio entre ninguna expresión y elemento citado, y 2) porque's
se puede usar en reemplazo deof
.'s
se trata en esta respuesta codegolf.stackexchange.com/a/37643/11259 .log"
Aunque es bueno saberlo .Acortamiento de soporte
Similar a la publicación sobre citas, me di cuenta más tarde que también puedes acortar cosas como esta:
a
También espaciará los corchetes para ti. En este ejemplo, guardo 5 bytes.
fuente
Considerando...
En las preguntas que requieren mayúsculas y minúsculas, puede ser difícil lidiar con los casos.
HASTA AHORA:
En realidad, no conocía esta palabra clave hasta que realmente la necesitaba. Usando los otros consejos en esta página de consejos, podemos reducir esto a:
Requiere una declaración completa, que yo sepa. (He intentado muchas cosas). Consulte esta página para obtener más detalles.
fuente
En algunos casos excepcionales, los «corchetes de doble ángulo» o los «dobles galones» pueden ser más cortos que el nombre en inglés de un comando, parámetro o constante.
La forma codificada en chevron reduciría el AppleScript para eliminar el portapapeles de 20 a 16 caracteres:
Caería 2 caracteres al recuperar texto de un cuadro de diálogo (como sucede en el metrónomo y Pi Day ):
(Es posible que prefiera evitar el diálogo y usar los argumentos de la línea de comandos de osascript (1) , si tiene al menos Mac OS X 10.4).
Con un teclado estadounidense, «es opción- \ y» es opción-cambio- \. Un comando
«event abcdefgh»
tiene 16 caracteres. Un parámetro o constante«class abcd»
tiene 12 caracteres.La forma codificada en chevron es casi siempre demasiado larga para el golf. Aquí hay un ejemplo sin corchetes de doble ángulo:
Y lo mismo con ellos:
Cambiar
_open for access
(16) a«event rdwropen»
(16) fue neutral. Cambiarwrite permission_
(17) agiven«class perm»:
(18) cuesta 1 personaje. Los otros soportes de doble ángulo cuestan más.Para usar corchetes de doble ángulo, debe conocer el código mágico de 4 u 8 letras. Encontré algunos códigos guardando un archivo de script desde Script Editor, luego abriéndolo en un editor hexadecimal. Corrí
emacs
en una terminal y uséM-x hexl-find-file
. Encontré y edité algunos códigos, comoJonspClp
intoJanspClp
yttxt
intoatxt
. Luego guardé el archivo y lo volví a abrir en Script Editor.«event JanspClp»
y«class atxt»
apareció en el guión.Un documento titulado AppleScript Terminology y Apple Event Codes Reference enumera algunos códigos. Encontré una copia en https://applescriptlibrary.wordpress.com/
Script Editor traducirá corchetes de doble ángulo al inglés antes de guardar su script. Para la deferencia de chevron, debe escribir su script en otro editor de texto, como TextEdit. Guarde la secuencia de comandos como un archivo de texto sin formato en la codificación romana de Mac OS (o MacRoman). Mac OS X prefiere que nombre el archivo con un sufijo .applescript.
Si cuenta bytes, MacRoman tiene 1 byte por carácter, por lo que cada «o» cuenta como 1 byte.
fuente