Jakie masz wskazówki dotyczące gry w golfa w Applescript? Szukam pomysłów, które można by zastosować do problemów z golfem w kodzie, które są przynajmniej nieco specyficzne dla Applescript (np. „Usuń komentarze” nie jest odpowiedzią).
Jakie masz wskazówki dotyczące gry w golfa w Applescript? Szukam pomysłów, które można by zastosować do problemów z golfem w kodzie, które są przynajmniej nieco specyficzne dla Applescript (np. „Usuń komentarze” nie jest odpowiedzią).
Odpowiedzi:
of
Operator jest używany, aby uzyskać właściwości z obiektu:
log words of "Hello World"
Ale w wielu przypadkach możesz użyć 's
skrótu do zapisania 1 znaku:
log "Hello World"'s words
Edytor Applescript to poręczne małe IDE, które wyróżnia składnię i upiększa Twój kod. Jednak w przypadku gry w golfa przynosi efekt przeciwny do zamierzonego, ponieważ dodaje wcięcia i zbędne słowa kluczowe, np. Po end
wyrażeniach. Na przykład:
repeat with w in "Hello World"'s words
log w
end
staje się następujący po wklejeniu do edytora Applescript i skompilowaniu / uruchomieniu:
repeat with w in "Hello World"'s words
log w
end repeat
Oczywiście pierwszy fragment jest lepszy do gry w golfa.
end
jest dość specyficzne dla Applescript.
end
należy do której instrukcji początku bloku, gdy masz wiele zagnieżdżonych bloków
tell
bloki są powszechne w Applescript:
tell application "TextEdit"
activate
end tell
Jednak, aby zaoszczędzić miejsce, poniższe są równoważne, gdy wnętrze tell
bloku to tylko jedna linia:
tell application "TextEdit" to activate
tell app "TextEdit" to activate
.
Niektóre słowa mają krótsze synonimy. Na przykład application
można zapisać jako app
* i string
można zapisać jako text
.
Ponadto, every <noun>
mogą być zapisywane jako po prostu mnogiej, tak jak w characters of "hello world"
(lub "foo"'s characters
).
* Chociaż kompilator edytora skryptów zmieni go z powrotem.
Dla każdej operacji, która wymaga wyceny, aby coś zrobić, tj
log „Witaj świecie!”
Możesz skrócić do
log „Witaj świecie!”
W pętlach powtarzalnych można całkowicie usunąć słowo „razy”.
powtórz x razy koniec
przeciw
powtórz x koniec
Za każdym razem te podmioty są nazywane, można zastąpić je ≤
i ≥
odpowiednio. Chociaż nie może zmniejszyć liczbę bajtów (chyba specjalny bajt konwencje liczenia są realizowane, co sugeruję), to ma zmniejszyć liczbę znaków.
Możesz pobrać ze STDIN za pomocą następujących postaci:
w biegu argv koniec
Jeśli musisz szybko wyjść z kodu (z dowolnego powodu, tj. Zapobiegając nadmiernemu if
s) ...
porzucić
Applescript pozwala wstawić dodatkowe słowa kluczowe, aby poprawić czytelność:
log the words of "Hello World"
Ale the
tutaj jest całkowicie zbędny i można go pominąć w przypadku zapisywania 4 znaków:
log words of "Hello World"
log"Hello World"'s words
ponieważ 1) nie potrzebujesz odstępu między wyrażeniem a cytowanym przedmiotem oraz 2), ponieważ 's
można go użyć zamiast of
.
's
jest rozwiązany w tej odpowiedzi codegolf.stackexchange.com/a/37643/11259 . Warto o tym wiedzieć log"
.
Podobnie jak w poście o cytatach, uświadomiłem sobie później, że możesz także skrócić takie rzeczy:
jeśli „a” = znak 1 z (x jako ciąg), to zwróć {true, true}
do
jeśli „a” = znak 1 z (x jako ciąg), to zwróć {true, true}
Dla ciebie też rozdzieli nawiasy. W tym przykładzie zapisuję 5 bajtów.
W przypadku pytań wymagających rozróżniania wielkości liter rzeczywiste rozpatrywanie spraw może być trudne.
rozważanie przypadku (coś wspólnego z rozróżnianiem wielkości liter) koniec rozważania
Właściwie nie znałem tego słowa kluczowego, dopóki go naprawdę nie potrzebowałem. Korzystając z innych wskazówek na tej stronie ze wskazówkami, możemy zmniejszyć to do:
rozważanie przypadku (coś wspólnego z rozróżnianiem wielkości liter) koniec
O ile mi wiadomo, wymaga pełnego oświadczenia. (Próbowałem już wielu rzeczy.) Więcej informacji na tej stronie .
W kilku wyjątkowych przypadkach „nawiasy podwójne” lub „podwójne szewrony” mogą być krótsze niż angielska nazwa polecenia, parametru lub stałej.
Forma zakodowana w postaci szewronu zmniejszyłaby AppleScript, aby usunąć schowek z 20 do 16 znaków:
set the clipboard to -- 20
«event JonspClp» -- 16
Upuszczałby 2 znaki podczas pobierania tekstu z okna dialogowego (jak to się dzieje w metronomie i dniu Pi ):
(display dialog""default answer"")'s text returned -- 46
(display dialog""default answer"")'s«class ttxt» -- 44
(Możesz preferować unikanie okna dialogowego i używanie argumentów wiersza poleceń osascript (1) , jeśli masz przynajmniej Mac OS X 10.4.)
W przypadku klawiatury amerykańskiej «to Option- \, a» to Option-shift- \. Polecenie «event abcdefgh»
ma 16 znaków. Parametr lub stała «class abcd»
ma 12 znaków.
Forma kodowana szewronem jest prawie zawsze za długa do gry w golfa. Oto przykład bez nawiasów podwójnych:
set x to open for access"output"write permission 1
write"One line of text
"to x
close access x
I to samo z nimi:
set x to«event rdwropen»"output"given«class perm»:1
«event rdwrwrit»"One line of text
"given«class refn»:x
«event rdwrclos»x
Zmiana _open for access
(16) na «event rdwropen»
(16) była neutralna. Zmiana write permission_
(17) na given«class perm»:
(18) kosztuje 1 postać. Inne podwójne wsporniki kątowe kosztują więcej.
Aby używać nawiasów podwójnych, musisz znać magiczny 4-literowy lub 8-literowy kod. Znalazłem kilka kodów, zapisując plik skryptu z edytora skryptów, a następnie otwierając go w edytorze szesnastkowym. Uruchomiłem emacs
terminal i korzystałem M-x hexl-find-file
. Znalazłem i zredagowałem niektóre kody, takie jak JonspClp
do JanspClp
i ttxt
do atxt
. Następnie zapisałem plik i otworzyłem go ponownie w edytorze skryptów. «event JanspClp»
i «class atxt»
pojawił się w skrypcie.
Dokument zatytułowany Terminologia AppleScript i Dokumentacja kodów zdarzeń Apple zawiera listę niektórych kodów. Znalazłem jego kopię na https://applescriptlibrary.wordpress.com/
Script Editor przetłumaczy nawiasy z podwójnym kątem na angielski przed zapisaniem skryptu. Aby zachować szacunek dla chevronów, musisz napisać skrypt w innym edytorze tekstu, takim jak TextEdit. Zapisz skrypt jako zwykły plik tekstowy w kodowaniu Roman Mac OS (lub MacRoman). Mac OS X woli, aby nazwać plik sufiksem .applescript.
Jeśli policzysz bajty, MacRoman ma 1 bajt na znak, więc każdy «lub» liczy się jako 1 bajt.