Tips untuk bermain golf di Applescript

13

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).

Peluruhan Beta
sumber
Pertanyaan ini Terlalu Luas. Itu tidak mungkin dijawab dengan satu jawaban yang lengkap dan ditulis dengan baik (dan pertanyaan itu bahkan secara eksplisit melarang itu).
Rainbolt
1
Tetap saja, ini hanya pertanyaan lucu :)
MadTux
5
Ditandai untuk dikonversi ke CW (sesuai konvensi kami untuk 'kiat bermain golf di pertanyaan x').
Geobits
@ MadTux Yap, Applescript biasanya bukan pilihan pertama dalam bahasa golf ;-). Tetapi ada beberapa kesempatan , khususnya dalam kategori sumber terbatas di mana ia menjadi sedikit berguna.
Digital Trauma
4
@Rainbolt Bagaimana perbedaan sifat ini dengan tip lainnya untuk bermain golf dalam x pertanyaan?
Trauma Digital

Jawaban:

6

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
Trauma Digital
sumber
6
Tampaknya agak konyol, tetapi juga agak luar biasa, bahwa Applescript mem-parsing apostrof sebagai posesif. Saya bisa membayangkan salah satu perancang bahasa mengajukan gagasan itu kepada kelompok.
Geobits
9
@ Geobits Itu adalah kata sifat yang bagus untuk menggambarkan Applescript secara umum. Saya hanya belum memutuskan apakah Applescript luar biasa mengagumkan atau luar biasa konyol ;-)
Digital Trauma
4

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.

Trauma Digital
sumber
IMO ini dapat dilihat sebagai tip umum, tidak khusus untuk AS. Banyak IDE modern melakukan ini jika Anda membiarkannya.
Geobits
2
@ Geobits Setuju. Padahal saya pikir penambahan kata kunci spesifik setelah endini cukup spesifik.
Digital Trauma
Ya, itu hanya membingungkan saya. Namun, lekukan / spasi sangat umum, bersama dengan tanda kurung yang tidak perlu, dll.
Geobits
@Geobits Applescript adalah tentang keterbacaan. Saya kira idenya adalah untuk memperjelas siapa endyang memiliki pernyataan mulai blok mana ketika Anda memiliki beberapa blok bersarang
Digital Trauma
4

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
Trauma Digital
sumber
3
Yang itu sendiri tell app "TextEdit" to activate.
wchargin
@WChargin Ya. Tambahkan itu sebagai jawaban lain jika Anda mau.
Digital Trauma
4

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.

Peter Hosey
sumber
3

Operasi yang Dibutuhkan Kutipan

Untuk setiap operasi yang memerlukan penawaran harga untuk melakukan sesuatu, yaitu

log "Halo Dunia!"

Anda dapat mempersingkat menjadi

log "Halo Dunia!"

Mengulangi

Dalam loop berulang, seseorang dapat sepenuhnya menghapus kata "kali".

ulangi x kali
akhir

melawan

ulangi x
akhir

<= dan> =

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.

Meraih dari STDIN

Anda dapat mengambil dari STDIN dengan karakter berikut:

di jalankan argv
akhir

Keluar dengan cepat

Jika Anda perlu keluar dari kode dengan cepat (untuk alasan apa pun, misalnya mencegah kelebihan if) ...

berhenti
Addison Crump
sumber
Haha wow, Anda pasti telah melakukan beberapa upaya untuk menemukan ini;)
Beta Decay
Saya menggunakannya banyak .
Addison Crump
Pertanyaan atau tips?
Beta Decay
Tips. Dan AppleScript secara umum.
Addison Crump
Oh saya sedang berbicara tentang pertanyaan :)
Beta Decay
2

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"
Trauma Digital
sumber
2
Anda dapat memiliki varian yang lebih pendek:, 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.
Addison Crump
@VTCAKAVSMoACE ya, 'sditujukan dalam jawaban ini codegolf.stackexchange.com/a/37643/11259 . Senang tahu tentang itu log".
Digital Trauma
2

Pemendekan Bracket

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.

Addison Crump
sumber
2

Mengingat...

Dalam pertanyaan yang membutuhkan sensitivitas kasus, mungkin sulit untuk benar-benar menangani kasus.

SAMPAI SEKARANG:

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.

Addison Crump
sumber
1

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.

kernigh
sumber