Welche Tipps haben Sie zum Golfen in Applescript? Ich bin auf der Suche nach Ideen, die sich auf Code-Golf-Probleme im Allgemeinen anwenden lassen, die zumindest etwas spezifisch für Applescript sind (z. B. "Kommentare entfernen" ist keine Antwort).
13
Antworten:
Der
of
Operator wird verwendet, um eine Eigenschaft von einem Objekt abzurufen:In vielen Fällen können Sie jedoch
's
eine Verknüpfung zum Speichern eines Zeichens verwenden:quelle
Der Applescript Editor ist eine praktische kleine IDE, die Ihren Code syntaktisch hervorhebt und verschönert. Für das Golfen ist es jedoch kontraproduktiv, da es Einrückungen und überflüssige Schlüsselwörter hinzufügt, z
end
. B. nach Aussagen. Beispielsweise:wird wie folgt, wenn es in den Applescript-Editor eingefügt und kompiliert / ausgeführt wird:
Offensichtlich ist das erste Snippet für die Zwecke des Golfspiels besser.
quelle
end
ziemlich Applescript-spezifisch ist.end
, welche Block-Start-Anweisung zu welcher gehört, wenn Sie mehrere verschachtelte Blöcke habentell
Blöcke sind in Applescript üblich:Um jedoch Platz zu sparen, ist Folgendes äquivalent, wenn das Innere des
tell
Blocks nur eine Zeile ist:quelle
tell app "TextEdit" to activate
.Einige Wörter haben kürzere Synonyme. Beispielsweise
application
kann alsapp
* undstring
als geschrieben werdentext
.Auch
every <noun>
kann geschrieben werden als einfach Plural, wie incharacters of "hello world"
(oder"foo"'s characters
).* Obwohl der Compiler des Skript-Editors es wieder ändern wird.
quelle
Angebot erforderlich Operation
Für jede Operation, die ein Angebot erfordert, um etwas zu tun, dh
Sie können zu verkürzen
Wiederholen
In Wiederholungsschleifen kann man das Wort "times" vollständig entfernen.
gegen
<= und> =
Jedes Mal, wenn diese Operatoren aufgerufen werden, können Sie sie durch
≤
und ersetzen≥
. Während dies nicht Byteanzahl reduzieren kann (es sei denn , besondere Bytezählung Konventionen umgesetzt werden, was ich vorschlagen), es tut Zeichenzahl reduzieren.Grabbing von STDIN
Sie können aus STDIN mit den folgenden Zeichen greifen:
Schnell beenden
Wenn Sie einen Code schnell verlassen müssen (aus welchem Grund auch immer, dh um übermäßige
if
s zu verhindern) ...quelle
In Applescript können einige zusätzliche Schlüsselwörter eingefügt werden, um die Lesbarkeit zu verbessern:
Das
the
hier ist jedoch völlig überflüssig und kann für eine Speicherung von 4 Zeichen weggelassen werden:quelle
log"Hello World"'s words
weil Sie 1) keinen Abstand zwischen einem Ausdruck und einem zitierten Element benötigen und 2)'s
anstelle von verwenden könnenof
.'s
wird in dieser Antwort angesprochen codegolf.stackexchange.com/a/37643/11259 . Gut zu wissenlog"
.Bracket Shortening
Ähnlich wie in dem Beitrag über Zitate wurde mir später klar, dass Sie auch Dinge wie diese verkürzen können:
zu
Es wird auch für Sie Klammern platzieren. In diesem Beispiel spare ich 5 Bytes.
quelle
In Anbetracht...
Bei Fragen, die Groß- und Kleinschreibung erfordern, kann es schwierig sein, Fälle tatsächlich zu behandeln.
BIS JETZT:
Ich kannte dieses Schlüsselwort nicht wirklich, bis ich es wirklich brauchte. Mit den anderen Tipps auf dieser Seite können wir dies auf Folgendes reduzieren:
Soweit ich weiß, ist eine vollständige Erklärung erforderlich. (Ich habe viele Dinge ausprobiert.) Weitere Informationen finden Sie auf dieser Seite .
quelle
In einigen Ausnahmefällen können die "doppelten spitzen Klammern" oder "doppelten Winkel" kürzer sein als der englische Name eines Befehls, eines Parameters oder einer Konstante.
Die Chevron-codierte Form würde das AppleScript verkleinern, um die Zwischenablage von 20 auf 16 Zeichen zu löschen :
Beim Abrufen von Text aus einem Dialogfeld werden 2 Zeichen entfernt (wie im Metronom und in Pi Day ):
(Möglicherweise möchten Sie den Dialog lieber vermeiden und die Befehlszeilenargumente von osascript (1) verwenden , wenn Sie mindestens Mac OS X 10.4 verwenden.)
Bei einer US-Tastatur ist «Option- \ und» Option-Umschalt- \. Ein Befehl
«event abcdefgh»
hat 16 Zeichen. Ein Parameter oder eine Konstante«class abcd»
hat 12 Zeichen.Die Chevron-codierte Form ist fast immer zu lang für Golf. Hier ist ein Beispiel ohne doppelte spitze Klammern:
Und das gleiche mit ihnen:
Das Ändern von
_open for access
(16) zu«event rdwropen»
(16) war neutral. Das Ändern vonwrite permission_
(17) zugiven«class perm»:
(18) kostet 1 Zeichen. Die anderen Doppelwinkel kosten mehr.Um doppelte spitze Klammern zu verwenden, müssen Sie den magischen 4-Buchstaben- oder 8-Buchstaben-Code kennen. Ich habe einige Codes gefunden, indem ich eine Skriptdatei aus dem Skript-Editor gespeichert und dann in einem Hex-Editor geöffnet habe. Ich bin
emacs
in ein Terminal gelaufen und habe benutztM-x hexl-find-file
. Ich habe einige Codes gefunden und bearbeitet, wieJonspClp
inJanspClp
undttxt
inatxt
. Ich habe die Datei dann gespeichert und im Skript-Editor erneut geöffnet.«event JanspClp»
und«class atxt»
erschien im Skript.In einem Dokument mit dem Titel " AppleScript Terminology" und "Apple Event Codes Reference" werden einige Codes aufgelistet. Ich habe eine Kopie davon unter https://applescriptlibrary.wordpress.com/ gefunden.
Der Skript-Editor übersetzt doppelte spitze Klammern ins Englische, bevor Sie Ihr Skript speichern. Für die Chevron-Ehrerbietung müssen Sie Ihr Skript in einem anderen Texteditor wie TextEdit schreiben. Speichern Sie das Skript als reine Textdatei in der Mac OS Roman- (oder MacRoman-) Codierung. Mac OS X bevorzugt, dass Sie die Datei mit einem .applescript-Suffix benennen.
Wenn Sie Bytes zählen, hat MacRoman 1 Byte pro Zeichen, also zählt jedes «oder» als 1 Byte.
quelle