Kiat apa yang Anda miliki untuk bermain golf di Applescript? Saya mencari ide yang dapat diterapkan pada masalah kode golf secara umum yang setidaknya agak spesifik untuk Applescript (mis. "Hapus komentar" bukan jawaban).
Kiat apa yang Anda miliki untuk bermain golf di Applescript? Saya mencari ide yang dapat diterapkan pada masalah kode golf secara umum yang setidaknya agak spesifik untuk Applescript (mis. "Hapus komentar" bukan jawaban).
Jawaban:
The ofoperator yang digunakan untuk mendapatkan properti dari suatu objek:
log words of "Hello World"
Namun dalam banyak kasus, Anda dapat menggunakan 'spintasan untuk menyimpan 1 karakter:
log "Hello World"'s words
Editor Applescript adalah IDE kecil praktis yang menyoroti dan mempercantik kode Anda. Namun, untuk tujuan bermain golf, itu kontraproduktif karena menambahkan lekukan dan kata kunci berlebihan, misalnya setelah endpernyataan. Sebagai contoh:
repeat with w in "Hello World"'s words
log w
end
menjadi yang berikut saat disisipkan ke dalam Editor Applescript dan dikompilasi / dijalankan:
repeat with w in "Hello World"'s words
log w
end repeat
Jelas potongan pertama lebih baik untuk tujuan bermain golf.
endini cukup spesifik.
endyang memiliki pernyataan mulai blok mana ketika Anda memiliki beberapa blok bersarang
tell blok umum di Applescript:
tell application "TextEdit"
activate
end tell
Namun untuk menghemat ruang, yang berikut ini setara, ketika bagian dalam tellblok hanya satu baris:
tell application "TextEdit" to activate
tell app "TextEdit" to activate.
Beberapa kata memiliki sinonim yang lebih pendek. Misalnya, applicationdapat ditulis sebagai app*, dan stringdapat ditulis sebagaitext .
Juga, every <noun>dapat ditulis hanya sebagai jamak, seperti dalam characters of "hello world"(atau"foo"'s characters ).
* Meskipun kompiler Script Editor akan mengubahnya kembali.
Untuk setiap operasi yang memerlukan penawaran harga untuk melakukan sesuatu, yaitu
log "Halo Dunia!"
Anda dapat mempersingkat menjadi
log "Halo Dunia!"
Dalam loop berulang, seseorang dapat sepenuhnya menghapus kata "kali".
ulangi x kali akhir
melawan
ulangi x akhir
Setiap kali operator ini dipanggil, Anda dapat menggantinya dengan ≤dan ≥, masing-masing. Meskipun ini mungkin tidak mengurangi jumlah byte (kecuali byte khusus konvensi penghitungan diimplementasikan, yang saya sarankan), itu tidak mengurangi jumlah karakter.
Anda dapat mengambil dari STDIN dengan karakter berikut:
di jalankan argv akhir
Jika Anda perlu keluar dari kode dengan cepat (untuk alasan apa pun, misalnya mencegah kelebihan if) ...
berhenti
Applescript memungkinkan beberapa kata kunci tambahan dimasukkan untuk membantu keterbacaan:
log the words of "Hello World"
Tetapi di thesini benar-benar berlebihan dan dapat dihilangkan untuk penghematan 4 karakter:
log words of "Hello World"
log"Hello World"'s wordskarena Anda 1) tidak memerlukan spasi antara ekspresi apa pun dan item yang dikutip, dan 2) karena 'sdapat digunakan sebagai pengganti of.
'sditujukan dalam jawaban ini codegolf.stackexchange.com/a/37643/11259 . Senang tahu tentang itu log".
Mirip dengan posting tentang kutipan, saya menyadari kemudian bahwa Anda juga dapat mempersingkat hal-hal seperti ini:
jika "a" = karakter 1 dari (x sebagai string) lalu kembalikan {true, true}
untuk
jika "a" = karakter 1 dari (x sebagai string) lalu kembalikan {true, true}
Ini akan menghilangkan kurung untuk Anda juga. Dalam contoh ini, saya menyimpan 5 byte.
Dalam pertanyaan yang membutuhkan sensitivitas kasus, mungkin sulit untuk benar-benar menangani kasus.
mempertimbangkan kasus
(ada hubungannya dengan hal-hal sensitif huruf)
akhir mempertimbangkan
Saya tidak benar-benar tahu kata kunci ini sampai saya benar-benar membutuhkannya. Dengan menggunakan kiat lain di laman kiat ini, kami dapat mengurangi ini ke:
mempertimbangkan kasus (ada hubungannya dengan hal-hal sensitif huruf) akhir
Itu memang membutuhkan pernyataan lengkap, sejauh yang saya tahu. (Saya sudah mencoba banyak hal.) Lihat halaman ini untuk lebih jelasnya.
Dalam beberapa kasus luar biasa, «kurung sudut ganda» atau «chevron ganda» mungkin lebih pendek dari nama bahasa Inggris dari perintah, parameter, atau konstanta.
Bentuk yang dikodekan chevron akan mengecilkan AppleScript untuk menghapus clipboard dari 20 hingga 16 karakter:
set the clipboard to -- 20
«event JonspClp» -- 16
Itu akan menjatuhkan 2 karakter ketika mengambil teks dari dialog (seperti yang terjadi di metronom dan Pi Day ):
(display dialog""default answer"")'s text returned -- 46
(display dialog""default answer"")'s«class ttxt» -- 44
(Anda mungkin lebih suka menghindari dialog dan menggunakan argumen baris perintah osascript (1) , jika Anda memiliki setidaknya Mac OS X 10.4.)
Dengan keyboard US, «adalah opsi- \ dan» adalah opsi-shift- \. Perintah «event abcdefgh»memiliki 16 karakter. Parameter atau konstanta «class abcd»memiliki 12 karakter.
Bentuk yang dikodekan chevron hampir selalu terlalu panjang untuk golf. Berikut ini contoh tanpa kurung sudut ganda:
set x to open for access"output"write permission 1
write"One line of text
"to x
close access x
Dan sama dengan mereka:
set x to«event rdwropen»"output"given«class perm»:1
«event rdwrwrit»"One line of text
"given«class refn»:x
«event rdwrclos»x
Mengubah _open for access(16) menjadi «event rdwropen»(16) netral. Mengubah write permission_(17) menjadi given«class perm»:(18) biaya 1 karakter. Kurung sudut ganda lainnya harganya lebih mahal.
Untuk menggunakan kurung sudut ganda, Anda perlu mengetahui kode ajaib 4 huruf atau 8 huruf. Saya menemukan beberapa kode dengan menyimpan file skrip dari Script Editor, lalu membukanya di hex editor. Saya berlari emacsdi terminal dan digunakan M-x hexl-find-file. Saya menemukan dan mengedit beberapa kode, seperti JonspClpke JanspClp, dan ttxtke atxt. Saya kemudian menyimpan file dan membukanya kembali di Script Editor. «event JanspClp»dan «class atxt»muncul dalam naskah.
Dokumen berjudul AppleScript Terminology dan Apple Event Codes Reference berisi daftar beberapa kode. Saya menemukan salinannya di https://applescriptlibrary.wordpress.com/
Editor Skrip akan menerjemahkan kurung sudut ganda ke Bahasa Inggris sebelum menyimpan skrip Anda. Untuk penghormatan chevron, Anda harus menulis skrip Anda di editor teks lain, seperti TextEdit. Simpan skrip sebagai file teks biasa di penyandian Mac OS Roman (atau MacRoman). Mac OS X lebih suka bahwa Anda memberi nama file dengan akhiran .applescript.
Jika Anda menghitung byte, MacRoman memiliki 1 byte per karakter, sehingga setiap «atau» dihitung sebagai 1 byte.