8

4clojureのエクササイズを行う場合、1つの目標は正しい答えを提供することであり、オプションの目標は可能な限り最短のソリューション(スペースはカウントされません)、別名コードゴルフを提供することです。その後、他のソリューションと比較できます。

エクササイズをするとき、私は最初に正しい答えを見つけます。次に、ソースコードに手動の リファクタリングを適用します。これは、変数名の名前を1文字に変更することで構成されます。たとえば、この基本的な手順を適用した後、私のコードは次のようになります。

(fn f[s]
   (if (empty? s)
     {}
     (let [[k & r] s
        [v n] (split-with number? r)]
        (assoc (f n) k v))))

人間にはまったく読めませんが、4Clojureコードゴルフコンテストでは多くのキャラクターを節約できるため、スコアが高くなります。

好奇心のために、それを自動化するためにemacsでどのように行いますか?clojure.coreに役立つリファクタリング関数はありますか?見つかりませんでした。

4

2 に答える 2

6

ライブラリを学びます。たとえば、if-letまたはを使用できるように見えますseq。静的分析ツールの「不正行為」の使用を検討していない場合は、Kibitをチェックしてください。

于 2012-09-15T20:47:29.590 に答える
5

clojure-リファクタリングは明らかに役立つ可能性があります。

于 2012-09-27T19:55:58.723 に答える