Applescriptでのゴルフのヒント


13

Applescriptでゴルフをするためのヒントはありますか?私は、少なくともApplescriptに特有のゴルフ問題全般のコーディングに適用できるアイデアを探しています(たとえば、「コメントの削除」は答えではありません)。


この質問は広すぎます。1つの完全な、よく書かれた答えでは答えられない可能性があります(質問はそれを明示的に禁止しています)。
レインボルト14

1
それでも、それは面白い質問です:)
MadTux 14

5
CWへの変換のフラグが設定されています(「xでのゴルフのヒント」の質問の規約に従って)。
ジオビット14

@MadTuxうん、Applescriptは通常、ゴルフ言語の最初の選択肢ではありません;-)。 ただし、特にソース制限されているカテゴリでは、わずかに役立つ場合があります。
デジタル外傷14

4
@Rainboltこれは、x質問でゴルフをするための他のヒント本質的にどのように違いますか?
デジタル外傷14

回答:


6

ofオペレータは、オブジェクトのプロパティを取得するために使用されます。

log words of "Hello World"

しかし、多くの場合's、1文字を保存するためのショートカットとして使用できます。

log "Hello World"'s words

6
Applescriptがアポストロフィを所有として解析することは、いくぶんばかげているように見えますが、いくぶん素晴らしいことでもあります。言語デザイナーがそのアイデアをグループに売り込んでいるのを想像できます。
ジオビット14

9
@Geobitsこれらは、Applescript全般を説明するための素晴らしい形容詞です。Applescriptがとてつもなくすごいのか、すごいとんでもないのかはまだ決めていません;-)
デジタルトラウマ14

4

Applescript Editorは、コードを構文強調表示して美しくする便利な小さなIDEです。ただし、ゴルフの目的のためには、インデントや余分なキーワードを追加するなど、逆効果endです。例えば:

repeat with w in "Hello World"'s words
log w
end

Applescript Editorに貼り付けてコンパイル/実行すると、次のようになります。

repeat with w in "Hello World"'s words
    log w
end repeat

明らかに、最初のスニペットはゴルフの目的に適しています。


IMOこれは、ASに固有ではなく、一般的なヒントとして見ることができます。最新のIDEの多くは、許可すればこれを行います。
ジオビット14

2
@Geobits同意しました。特定のキーワードを後に追加することは、endApplescript固有のことだと思いますが。
デジタル外傷14

いや、それは私を困惑させているだけです。ただし、インデント/間隔は非常に一般的ですが、不必要な括弧などもあります。
Geobits

@Geobits Applescriptはすべて読みやすさに関するものです。私はアイデアは、それがどの明確にするためであると思いendますが、複数のネストされたブロックがある場合どのブロック開始ステートメントに属している
デジタルトラウマを

4

tell Applescriptではブロックが一般的です:

tell application "TextEdit"
    activate
end tell

ただし、スペースを節約するために、tellブロックの内部が1行だけの場合、次のコードは同等です。

tell application "TextEdit" to activate

3
それ自体ですtell app "TextEdit" to activate
wchargin 14

@WCharginはい。必要に応じて、別の回答として追加してください。
デジタル外傷14

4

一部の単語には短い同義語があります。たとえば、* applicationと記述したりapp、とstring記述したりできますtext

また、(または)のevery <noun>ように、単に複数形で書くこともできます。characters of "hello world""foo"'s characters

*スクリプトエディタのコンパイラは元に戻しますが。


3

見積もりが必要な操作

何かをするために引用を必要とする操作、すなわち

ログ「Hello World!」

短縮できます

ログ「Hello World!」

繰り返し

繰り返しループでは、単語「times」を完全に削除できます。

x回繰り返す
終わり

xを繰り返す
終わり

<=および> =

これらの演算子が呼び出されるたびに、それぞれに置き換えることができます。(特別なバイトカウント規則が実装されていない限り、私が提案した、)これは、バイト数を減らすことではないかもしれないが、それはない文字カウントを減らします。

STDINからの取得

次の文字を使用して、STDINから取得できます。

実行時にargv
終わり

すぐに終了する

コードをすばやく終了する必要がある場合(何らかの理由で、つまり過度ifのsを防ぐため)...

終了する

ハハうわー、これを見つけるためにいくつかのトロールを行っている必要があります;)
ベータ崩壊

私はそれを使用してたくさん
アディソンクランプ

質問またはヒント?
ベータ崩壊

ヒント。AppleScript全般。
アディソンクランプ

ああ、私は質問について話していました:)
ベータ崩壊

2

Applescriptでは、読みやすくするためにいくつかの追加キーワードを挿入できます。

log the words of "Hello World"

ただし、theここは完全に不要であり、4文字の保存では省略できます。

log words of "Hello World"

2
さらに短いバリアントを使用することもできlog"Hello World"'s wordsます。1)式と引用符で囲まれたアイテムの間にスペースを必要としないため、2)の's代わりに使用できるためですof
アディソンクランプ

@VTCAKAVSMoACEはい、'sこの回答codegolf.stackexchange.com/a/37643/11259で対処されています。log"しかし知っておくと良い。
デジタル外傷

2

ブラケットの短縮

引用に関する投稿と同様に、後で次のように短縮することもできることに気付きました。

「a」=(文字列としてx)の文字1の場合、{true、true}を返します

if "a" =(文字列としてx)の1番目の文字。次に{true、true}を返す

角かっこも外します。この例では、5バイトを節約します。


2

検討中...

大文字と小文字の区別が必要な質問では、実際にケースに対処するのが難しい場合があります。

今まで:

検討ケース
    (大文字と小文字を区別するものと関係がある)
検討終了

本当に必要になるまで、私は実際にこのキーワードを知りませんでした。このヒントページの他のヒントを使用して、これを次のように減らすことができます。

検討ケース
(大文字と小文字を区別するものと関係がある)
終わり

私の知る限り、完全な声明が必要です。(多くのことを試しました。)詳細については、このページ参照してください。


1

いくつかの例外的なケースでは、«二重山括弧»または«二重山形»は、コマンド、パラメーター、または定数の英語名よりも短い場合があります。

シェブロンエンコードフォームは、AppleScriptを縮小してクリップボードを20文字から16文字に削除します。

set the clipboard to  -- 20
«event JonspClp»      -- 16

ダイアログからテキストを取得するときに2文字をドロップします(メトロノームPi Dayで発生します):

(display dialog""default answer"")'s text returned  -- 46
(display dialog""default answer"")'s«class ttxt»    -- 44

(少なくともMac OS X 10.4 を使用している場合は、ダイアログを避け、osascript(1)のコマンドライン引数を使用することをお勧めします。)

USキーボードの場合、«はoption- \で、»はoption-shift- \です。コマンド«event abcdefgh»は16文字です。パラメーターまたは定数«class abcd»は12文字です。

シェブロンエンコード形式は、ほとんどの場合、ゴルフには長すぎます。以下は、二重山括弧なしの例です。

set x to open for access"output"write permission 1
write"One line of text
"to x
close access x

そしてそれらと同じ:

set x to«event rdwropen»"output"given«class perm»:1
«event rdwrwrit»"One line of text
"given«class refn»:x
«event rdwrclos»x

_open for access(16)から(16)への変更«event rdwropen»は中立でした。write permission_(17)をgiven«class perm»:(18)に変更すると、1文字かかります。他の二重山形ブラケットはより高価です。

ダブル山括弧を使用するには、魔法の4文字または8文字のコードを知っている必要があります。スクリプトエディターからスクリプトファイルを保存し、16進エディターで開いていくつかのコードを見つけました。emacsターミナルで走って使ったM-x hexl-find-fileJonspClpinto JanspClpttxtinto などのコードを見つけて編集しましたatxt。次に、ファイルを保存し、スクリプトエディターで再度開きました。«event JanspClp»そして«class atxt»スクリプトに登場。

AppleScriptの用語とAppleイベントコードリファレンスというタイトルのドキュメントに、いくつかのコードがリストされています。https://applescriptlibrary.wordpress.com/でコピーを見つけました

スクリプトエディターは、スクリプトを保存する前に二重山括弧を英語に変換します。シェブロンに敬意を払うには、TextEditのような別のテキストエディターでスクリプトを記述する必要があります。Mac OS Roman(またはMacRoman)エンコーディングのプレーンテキストファイルとしてスクリプトを保存します。Mac OS Xでは、ファイルに.applescriptサフィックスを付けることをお勧めします。

バイトをカウントする場合、MacRomanは文字ごとに1バイトを持っているため、«または»はそれぞれ1バイトとしてカウントされます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.