2010-10-16 19 views

उत्तर

16

आप का उपयोग rotatef कर सकते हैं:

(rotatef (nth i lst) (nth j lst)) 
बेशक

, सूची अनुक्रमण महंगा हो सकता है (लागत ओ (सूची) की आकार), इसलिए यदि आप किसी भी नियमितता के साथ ऐसा करते हैं, आप नहीं बल्कि चाहते हैं

(rotatef (aref arr i) (aref arr j)) 
4

मैं nthcdr का उपयोग कर पहला तत्व है कि आप स्वैप और उसके बाद करना चाहते हैं विपक्ष सेल के सीडीआर पाने के लिए द्वारा दो बार सूची में अनुक्रमण से बच जाएंगे elt करने के लिए उपयोग छ: एक सरणी का उपयोग करने के और शेष तत्व उपन्यास से बाहर है। इसका मतलब है कि आपको केवल एक बार सूची के प्रमुख से शुरू होने वाली इंडेक्स करना होगा।

(let ((list-tail (nthcdr i list))) 
    (rotatef (car list-tail) 
      (elt list-tail (- j i))) 
    list) 

कम से कम मेरे परिप्रेक्ष्य से, यह एक समारोह को औचित्य देने के लिए पर्याप्त कठिन है।

+6

डैमन! इसलिए सिंटैक्स हाइलाइटिंग के बारे में कुछ करने की ज़रूरत है। मैंने सोचा कि यह अजगर के लिए बुरा था। – aaronasterling

संबंधित मुद्दे