どちらも競技会です。どちらにも明確に定義された一連のルールがありますが、簡単にするために省略します。どちらにも明確な目標があります。つまり、「競合他社よりも少ないヒット/キャラクターを使用する」ということです。
試合に勝つために、アスレチックゴルファーは頼りにしています
コードゴルファーは、アスリートゴルファーの装備、テクニック、戦略に類似しているものは何ですか?
これを始めるための回答例:適切なクラブを使用してください! C#の代わりにGolfScriptを選択してください。
あなたの言語の構文上の奇妙さについての完全な知識が助けになると思います。これが私がRubyコードゴルフをしているときに見つけたものです:
の代わりに
require "sequel"
require "nokogiri"
require "chronic"
あなたはこのようなことをすることができます:
body_of_your_program if %w{sequel nokogiri chronic}.each{|i| require i}
このようなことで、あなたも信じられないほど手の込んだRubyワンライナー!
RubyおよびPerlでは、文字列や正規表現を使用してあらゆる種類の魔法を実行するために使用できる「$ _」のような魔法の変数も取得します。データは文字列ではありませんか?文字列に変換したい。
明らかに、Cではプリプロセッサがあなたの友達です。
そしていつものように:あなたの図書館を知ってください!
ほとんどの問題について、重要な機能はすでに出荷されたライブラリにあります。もちろん、これには非冗長言語を選択する必要があります。そうしないと、必要な関数のインポートが短いインライン定義よりも長くなります。
コードゴルフチャレンジを行うと、必然的にコードが短くなる一般的なデザインパターンのセットにたどり着きます。このセットは、コードゴルフチャレンジが増えるにつれて、または言語の通常の使用の過程で、時間の経過とともに増加します。
たとえば、インクリメンタルループが必要な場合、通常行うことの1つは次のとおりです。
_for ($i = 1; $i <= 10; $i++) {
// code
}
_
または
_$i = 1;
while ($i < 10) {
// code
$i++;
}
_
しかし、これも常に機能します。
_while ($i++<10) {
// code
}
_
その他のものは次のとおりです。
fwrite()
の代わりにfile_put_contents()
)<?=
_はprint
またはecho
よりも短い)ゴルフコードの課題に応じて、コーディングから始めます。最初のキャラクターの量を集めるのではなく、それが最初のステップです。最小の文字で最初からコーディングしようとすると、それが難しくなる可能性があります。その後、コードを最適化できる場所を探します(1文字の変数を使用する、チェーン操作を行うなど)。この部分では、ゴルフコードを実行している言語を習得する必要があります。それをよく理解すればするほど、キャラクターを救うTweakをよりよく知ることができます。
この戦略/テクニックの例:
https://stackoverflow.com/questions/3173415/code-golf-2d-platformer/3173614#3173614
装備に関しては、ほとんどのゴルフコードチャレンジでは、理想的な装備はチャレンジ専用に作られたカスタム言語を使用することです。その言語がすでに存在する場合もあれば、それを発明してそのインタプリタをコーディングできる場合もあります。