Какие у вас есть советы по игре в гольф в Applescript? Я ищу идеи, которые могут быть применены к кодовым проблемам гольфа в целом, которые, по крайней мере, несколько специфичны для Applescript (например, «удалить комментарии» - это не ответ).
13
Ответы:
of
Оператор используется , чтобы получить свойство от объекта:Но во многих случаях вы можете использовать
's
как ярлык для сохранения 1 символа:источник
Редактор Applescript - это удобная маленькая IDE, которая выделяет синтаксис и украшает ваш код. Тем не менее, для целей игры в гольф это контрпродуктивно, так как добавляет отступы и лишние ключевые слова, например, после
end
заявлений. Например:становится следующим после вставки в редактор Applescript и компиляции / запуска:
Очевидно, что первый фрагмент лучше подходит для игры в гольф.
источник
end
довольно специфично для Applescript.end
принадлежит к какому выражению начала блока, когда у вас есть несколько вложенных блоковtell
блоки распространены в Applescript:Однако для экономии места следующее эквивалентно, когда внутри
tell
блока находится всего одна строка:источник
tell app "TextEdit" to activate
.Некоторые слова имеют более короткие синонимы. Например,
application
можно записать какapp
*, иstring
можно записать какtext
.Кроме того,
every <noun>
может быть записано как просто множественное число, как вcharacters of "hello world"
(или"foo"'s characters
).* Хотя компилятор Script Editor вернет его обратно.
источник
Цитата Требуется операция
Для любой операции, которая требует кавычки, чтобы сделать что-то, т.е.
Вы можете сократить до
повторяющий
В повторяющихся циклах можно полностью удалить слово «времена».
против
<= и> =
Каждый раз, когда вызываются эти операторы, вы можете заменить их на
≤
и≥
, соответственно. Хотя это не может уменьшить количество байтов (если не будут реализованы специальные соглашения по подсчету байтов, которые я предлагаю), это действительно уменьшает количество символов.Захват от STDIN
Вы можете получить из STDIN следующие символы:
Быстро выход
Если вам нужно быстро выйти из кода (по какой-либо причине, т.е. предотвратить чрезмерное количество
if
s) ...источник
Applescript позволяет вставлять некоторые дополнительные ключевые слова для удобства чтения:
Но
the
здесь это совершенно излишне и может быть опущено для сохранения 4 символов:источник
log"Hello World"'s words
потому что вам 1) не нужно пространство между каким-либо выражением и элементом в кавычках, и 2) потому что's
его можно использовать вместоof
.'s
рассматривается в этом ответе codegolf.stackexchange.com/a/37643/11259 . Полезно знать,log"
хотя.Укорочение кронштейна
Как и в посте о цитатах, позже я понял, что вы также можете сократить такие вещи:
в
Для вас тоже будут скобки. В этом примере я экономлю 5 байтов.
источник
Принимая во внимание ...
В вопросах, которые требуют чувствительности к регистру, на самом деле может быть трудно иметь дело с кейсами.
ДО НЫНЕШНЕГО МОМЕНТА:
Я не знал этого ключевого слова до тех пор, пока оно мне действительно не понадобилось. Используя другие советы на этой странице советов, мы можем уменьшить это до:
Насколько я знаю, это требует полного заявления. (Я много чего перепробовал.) Смотрите эту страницу для более подробной информации.
источник
В некоторых исключительных случаях «двойные угловые скобки» или «двойные шевроны» могут быть короче английского названия команды, параметра или константы.
Форма в шевронном коде сократила бы AppleScript для удаления буфера обмена из 20-16 символов:
При извлечении текста из диалогового окна будет сброшено 2 символа (как это происходит в метрономе и Pi Day ):
(Вы можете предпочесть избегать диалога и использовать аргументы командной строки osascript (1) , если у вас есть хотя бы Mac OS X 10.4.)
На клавиатуре США «это опция- \, а» опция-shift- \. Команда
«event abcdefgh»
имеет 16 символов. Параметр или константа«class abcd»
имеет 12 символов.Форма в кодировке шеврона почти всегда слишком длинна для гольфа. Вот пример без двойных угловых скобок:
И то же самое с ними
Изменение
_open for access
(16) на«event rdwropen»
(16) было нейтральным. Изменениеwrite permission_
(17) наgiven«class perm»:
(18) стоит 1 символ. Другие двойные угловые кронштейны стоят дороже.Чтобы использовать двойные угловые скобки, вам нужно знать магический 4-буквенный или 8-буквенный код. Я нашел некоторые коды, сохранив файл скрипта из редактора скриптов, а затем открыв его в шестнадцатеричном редакторе. Я побежал
emacs
в терминал и использовалM-x hexl-find-file
. Я нашел и отредактировал некоторые коды, какJonspClp
вJanspClp
, так иttxt
вatxt
. Затем я сохранил файл и снова открыл его в редакторе скриптов.«event JanspClp»
и«class atxt»
появился в сценарии.В документе под названием « Терминология AppleScript и справочник кодов событий Apple» перечислены некоторые коды. Я нашел его копию на https://applescriptlibrary.wordpress.com/
Редактор скриптов переведет двойные угловые скобки на английский язык перед сохранением скрипта. Для шеврона, вы должны написать свой скрипт в другом текстовом редакторе, таком как TextEdit. Сохраните сценарий в виде простого текстового файла в кодировке Mac OS Roman (или MacRoman). Mac OS X предпочитает, чтобы вы называли файл суффиксом .applescript.
Если вы подсчитываете байты, у MacRoman есть 1 байт на символ, поэтому каждое «или» считается за 1 байт.
источник