Que dicas você tem para jogar golfe no Applescript? Estou procurando idéias que possam ser aplicadas para codificar problemas de golfe em geral que sejam pelo menos um pouco específicos ao Applescript (por exemplo, "remover comentários" não é uma resposta).
13
Respostas:
O
of
operador é usado para obter uma propriedade de um objeto:Mas, em muitos casos, você pode usar
's
como atalho para salvar 1 caractere:fonte
O Applescript Editor é um pequeno IDE útil que destaca a sintaxe e embeleza o seu código. No entanto, para fins de golfe, é contraproducente, pois adiciona indentação e palavras-chave supérfluas, por exemplo,
end
declarações após . Por exemplo:torna-se o seguinte quando colado no Editor de Applescript e compilado / executado:
Obviamente, o primeiro trecho é melhor para fins de golfe.
fonte
end
seja bastante específica da Applescript.end
pertence a qual declaração bloco inicial quando você tem vários blocos aninhadostell
blocos são comuns no Applescript:No entanto, para economizar espaço, o seguinte é equivalente quando o interior do
tell
bloco é apenas uma linha:fonte
tell app "TextEdit" to activate
.Algumas palavras têm sinônimos mais curtos. Por exemplo,
application
pode ser escrito comoapp
* estring
pode ser escrito comotext
.Além disso,
every <noun>
pode ser escrito como simplesmente o plural, como emcharacters of "hello world"
(ou"foo"'s characters
).* Embora o compilador do Script Editor o altere novamente.
fonte
Operação necessária de cotação
Para qualquer operação que exija uma cotação para fazer algo, ou seja,
Você pode reduzir para
recorrente
Nos loops de repetição, pode-se remover completamente a palavra "tempos".
versus
<= e> =
Sempre que esses operadores forem chamados, você poderá substituí-los por
≤
e≥
, respectivamente. Enquanto isto pode não reduzir a contagem de byte (a menos que as convenções de contagem byte especial são implementadas, o que eu sugiro), que faz reduzir a contagem de caracteres.Agarrando a partir de STDIN
Você pode acessar STDIN com os seguintes caracteres:
Saindo rapidamente
Se você precisar sair rapidamente de um código (por qualquer motivo, ou seja, evitando excesso de
if
s) ...fonte
O Applescript permite que algumas palavras-chave extras sejam inseridas para facilitar a legibilidade:
Mas o
the
aqui é completamente supérfluo e pode ser omitido para salvar 4 caracteres:fonte
log"Hello World"'s words
porque você 1) não precisa do espaço entre nenhuma expressão e item entre aspas e 2) porque's
pode ser usado em substituição deof
.'s
é abordado nesta resposta codegolf.stackexchange.com/a/37643/11259 . É bom saber sobre issolog"
.Encurtamento do suporte
Semelhante ao post sobre citações, percebi depois que você também pode encurtar coisas assim:
para
Também vai colocar colchetes para você. Neste exemplo, eu salvo 5 bytes.
fonte
Considerando...
Em perguntas que exigem distinção entre maiúsculas e minúsculas, pode ser difícil lidar com os casos.
ATÉ AGORA:
Na verdade, eu não conhecia essa palavra-chave até precisar dela. Usando as outras dicas nesta página de dicas, podemos reduzir isso para:
Requer uma declaração completa, até onde eu saiba. (Eu tentei muitas coisas.) Veja esta página para mais detalhes.
fonte
Em alguns casos excepcionais, os "colchetes de ângulo duplo" ou "divisas duplas" podem ser menores que o nome em inglês de um comando, parâmetro ou constante.
O formulário codificado em chevron reduziria o AppleScript para excluir a área de transferência de 20 a 16 caracteres:
Ele solta 2 caracteres ao buscar texto em uma caixa de diálogo (como acontece no metrônomo e no dia do Pi ):
(Você pode preferir evitar a caixa de diálogo e usar os argumentos da linha de comando do osascript (1) , se você tiver pelo menos o Mac OS X 10.4.)
Com um teclado americano, «é opção- \ e» é opção-shift- \. Um comando
«event abcdefgh»
tem 16 caracteres. Um parâmetro ou constante«class abcd»
possui 12 caracteres.A forma codificada em chevron é quase sempre muito longa para o golfe. Aqui está um exemplo sem colchetes de ângulo duplo:
E o mesmo com eles:
Mudar
_open for access
(16) para«event rdwropen»
(16) foi neutro. Alterarwrite permission_
(17) paragiven«class perm»:
(18) custa 1 caractere. Os outros suportes de ângulo duplo custam mais.Para usar colchetes de ângulo duplo, você precisa conhecer o código mágico de 4 ou 8 letras. Encontrei alguns códigos salvando um arquivo de script no Editor de scripts e abrindo-o em um editor hexadecimal. Eu corri
emacs
em um terminal e useiM-x hexl-find-file
. Eu encontrei e editei alguns códigos, comoJonspClp
emJanspClp
ettxt
ematxt
. Salvei o arquivo e o reabri no Editor de scripts.«event JanspClp»
e«class atxt»
apareceu no script.Um documento intitulado AppleScript Terminology e Apple Event Codes Reference lista alguns códigos. Encontrei uma cópia em https://applescriptlibrary.wordpress.com/
O Editor de scripts traduzirá colchetes de ângulo duplo para o inglês antes de salvar seu script. Para deferência da chevron, você deve escrever seu script em outro editor de texto, como o TextEdit. Salve o script como um arquivo de texto sem formatação na codificação Mac OS Roman (ou MacRoman). O Mac OS X prefere que você nomeie o arquivo com um sufixo .applescript.
Se você contar bytes, o MacRoman terá 1 byte por caractere, portanto cada «ou» contará como 1 byte.
fonte