Suggerimenti per giocare a golf in Applescript


13

Quali consigli hai per giocare a golf in Applescript? Sto cercando idee che possano essere applicate ai problemi del codice golf in generale che siano almeno in qualche modo specifiche per Applescript (ad esempio "rimuovere i commenti" non è una risposta).


Questa domanda è troppo ampia. Non è possibile rispondere con una risposta completa e ben scritta (e la domanda lo proibisce anche esplicitamente).
Rainbolt,

1
Comunque, è solo una domanda divertente :)
MadTux,

5
Contrassegnato per la conversione in CW (secondo la nostra convenzione per domande "suggerimenti per giocare a golf in x").
Geobits,

@MadTux Sì, di solito Applescript non è la prima scelta nelle lingue del golf ;-). Ma ci sono occasioni , in particolare nella categoria delle fonti limitate in cui diventa marginalmente utile.
Trauma digitale,

4
@Rainbolt Come è diverso in natura rispetto ad altri suggerimenti per giocare a golf in x domande?
Trauma digitale,

Risposte:


6

L' ofoperatore viene utilizzato per ottenere una proprietà da un oggetto:

log words of "Hello World"

Ma in molti casi puoi usare 'scome scorciatoia per salvare 1 carattere:

log "Hello World"'s words

6
Sembra un po 'ridicolo, ma anche un po' fantastico, che Applescript analizzi gli apostrofi come possessivi. Posso solo immaginare uno dei designer linguistici che presenta quell'idea al gruppo.
Geobits,

9
@Geobits Questi sono grandi aggettivi per descrivere Applescript in generale. Non ho ancora deciso se Applescript è ridicolmente fantastico o incredibilmente ridicolo ;-)
Digital Trauma

4

Applescript Editor è un piccolo IDE utile che evidenzia la sintassi e abbellisce il tuo codice. Tuttavia, ai fini del golf, è controproducente in quanto aggiunge rientri e parole chiave superflue, ad esempio dopo le enddichiarazioni. Per esempio:

repeat with w in "Hello World"'s words
log w
end

diventa il seguente quando incollato nell'editor di applescript e compilato / eseguito:

repeat with w in "Hello World"'s words
    log w
end repeat

Ovviamente il primo frammento è migliore ai fini del golf.


IMO questo può essere visto come un suggerimento generale, non specifico per AS. Molti IDE moderni lo fanno se glielo permetti.
Geobits,

2
@Geobits concordato. Anche se penso che l'aggiunta di parole chiave specifiche dopo endsia abbastanza specifica per Applescript.
Trauma digitale,

Sì, è solo sconcertante per me. La cosa di rientro / spaziatura è molto comune, però, insieme a parentesi non necessarie, ecc.
Geobits,

@Geobits Applescript è tutto sulla leggibilità. Immagino che l'idea sia quella di chiarire quale endappartiene a quale istruzione di inizio blocco quando si hanno più blocchi nidificati
Digital Trauma,

4

tell i blocchi sono comuni in Applescript:

tell application "TextEdit"
    activate
end tell

Tuttavia, per risparmiare spazio, ciò che segue è equivalente, quando l'interno del tellblocco è solo una riga:

tell application "TextEdit" to activate

3
Quale è di per sé tell app "TextEdit" to activate.
wchargin,

@WChargin Sì. Aggiungilo come un'altra risposta, se lo desideri.
Trauma digitale,

4

Alcune parole hanno sinonimi più brevi. Ad esempio, applicationpuò essere scritto come app* e stringpuò essere scritto come text.

Inoltre, every <noun>può essere scritto semplicemente come plurale, come in characters of "hello world"(o "foo"'s characters).

* Sebbene il compilatore di Script Editor lo cambierà nuovamente.


3

Offerta richiesta preventivo

Per qualsiasi operazione che richiede un preventivo per fare qualcosa, ad es

log "Ciao mondo!"

Puoi abbreviare

log "Ciao mondo!"

ripetendo

Nei cicli ripetuti, è possibile rimuovere completamente la parola "tempi".

ripetere x volte
fine

contro

ripetere x
fine

<= e> =

Ogni volta che vengono chiamati questi operatori, è possibile sostituirli con e , rispettivamente. Mentre questo non può ridurre il numero di byte (a meno che le convenzioni di conteggio speciale byte sono implementati, che suggerisco), si fa ridurre il numero di caratteri.

Afferrare da STDIN

Puoi prendere da STDIN con i seguenti caratteri:

in fuga argv
fine

Uscire rapidamente

Se è necessario uscire rapidamente da un codice (per qualsiasi motivo, vale a dire prevenire un numero eccessivo di ifs) ...

smettere

Haha wow, devi aver fatto un po 'di pesca a strascico per trovare questo;)
Beta Decay

Lo uso molto .
Addison Crump,

La domanda o i suggerimenti?
Decadimento beta

I consigli E AppleScript in generale.
Addison Crump,

Oh, stavo parlando della domanda :)
Decadimento beta

2

Applescript consente di inserire alcune parole chiave extra per aiutare la leggibilità:

log the words of "Hello World"

Ma thequi è completamente superfluo e può essere omesso per un salvataggio di 4 caratteri:

log words of "Hello World"

2
Puoi avere varianti anche più brevi:, log"Hello World"'s wordsperché 1) non hai bisogno dello spazio tra nessuna espressione e elemento tra virgolette, e 2) perché 'spuoi usarlo in sostituzione di of.
Addison Crump,

@VTCAKAVSMoACE sì, 'sè indirizzato in questa risposta codegolf.stackexchange.com/a/37643/11259 . Buono a sapersi log"però.
Trauma digitale,

2

Accorciamento della staffa

Simile al post sulle citazioni, mi sono reso conto in seguito che puoi anche abbreviare cose come questa:

se "a" = carattere 1 di (x come stringa) restituisce {true, true}

per

se "a" = carattere 1 di (x come stringa) restituisce {true, true}

Spazierà anche le parentesi per te. In questo esempio, salvo 5 byte.


2

Considerando...

Nelle domande che richiedono la distinzione tra maiuscole e minuscole, può essere difficile gestire effettivamente i casi.

FINO AD ORA:

considerando il caso
    (qualcosa a che fare con elementi sensibili al maiuscolo / minuscolo)
fine a considerare

In realtà non conoscevo questa parola chiave fino a quando non ne avevo davvero bisogno. Utilizzando gli altri suggerimenti in questa pagina di suggerimenti, possiamo ridurre questo fino a:

considerando il caso
(qualcosa a che fare con elementi sensibili al maiuscolo / minuscolo)
fine

Richiede una dichiarazione completa, per quanto ne so. (Ho provato molte cose.) Vedi questa pagina per maggiori dettagli.


1

In alcuni casi eccezionali, le «parentesi a doppio angolo» o i «chevron doppi» potrebbero essere più brevi del nome inglese di un comando, parametro o costante.

La forma codificata in chevron ridurrebbe AppleScript per eliminare gli Appunti da 20 a 16 caratteri:

set the clipboard to  -- 20
«event JonspClp»      -- 16

Rilascerebbe 2 caratteri quando recupera il testo da una finestra di dialogo (come accade nel metronomo e nel Pi Day ):

(display dialog""default answer"")'s text returned  -- 46
(display dialog""default answer"")'s«class ttxt»    -- 44

(Potresti preferire evitare la finestra di dialogo e utilizzare gli argomenti della riga di comando di osascript (1) , se hai almeno Mac OS X 10.4.)

Con una tastiera americana, «è opzione- \ e» è opzione-spostamento- \. Un comando «event abcdefgh»ha 16 caratteri. Un parametro o una costante «class abcd»ha 12 caratteri.

La forma codificata in chevron è quasi sempre troppo lunga per il golf. Ecco un esempio senza parentesi quadre doppie:

set x to open for access"output"write permission 1
write"One line of text
"to x
close access x

E lo stesso con loro:

set x to«event rdwropen»"output"given«class perm»:1
«event rdwrwrit»"One line of text
"given«class refn»:x
«event rdwrclos»x

Il passaggio da _open for access(16) a «event rdwropen»(16) era neutro. La modifica da write permission_(17) a given«class perm»:(18) costa 1 carattere. Le altre parentesi quadre hanno un costo maggiore.

Per usare le parentesi quadre doppie, è necessario conoscere il codice magico di 4 o 8 lettere. Ho trovato alcuni codici salvando un file di script da Script Editor, quindi aprendolo in un editor esadecimale. Ho corso emacsin un terminale e usato M-x hexl-find-file. Ho trovato e modificato alcuni codici, come JonspClpin JanspClpe ttxtin atxt. Ho quindi salvato il file e riaperto in Script Editor. «event JanspClp»ed è «class atxt»apparso nella sceneggiatura.

Un documento intitolato Terminologia AppleScript e Riferimenti codici eventi Apple elenca alcuni codici. Ne ho trovato una copia su https://applescriptlibrary.wordpress.com/

Script Editor tradurrà parentesi a doppio angolo in inglese prima di salvare lo script. Per la deferenza chevron, devi scrivere la tua sceneggiatura in un altro editor di testo, come TextEdit. Salvare lo script come file di testo semplice nella codifica romana (o MacRoman) di Mac OS. Mac OS X preferisce assegnare un nome al file con un suffisso .applescript.

Se conti byte, MacRoman ha 1 byte per carattere, quindi ogni «o» conta come 1 byte.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.