2011-05-30 17 views
5

मेरे पास सॉर्ट किए गए क्रम में शब्दों और वाक्यांशों का एक बफर है और मैं यादृच्छिक क्रम में क्रमबद्ध रेखाएं बनाना चाहता हूं। मैं इसे किसी भी emacs बिल्टिन फ़ंक्शन या elisp के साथ कैसे करूँगा?मैं बफर में यादृच्छिक सॉर्ट लाइन कैसे कर सकता हूं?

उदाहरण के लिए, दिए गए

 
bar 
elisp 
emacs 
foo 
hello world 
the quick brown fox 

मैं जैसे कुछ पूरी तरह से यादृच्छिक परिणाम चाहते हैं:

 
foo 
the quick brown fox 
hello world 
elisp 
emacs 
bar 

या ...

 
hello world 
elisp 
bar 
the quick brown fox 
foo 
emacs 

उत्तर

6

randomize-region.el करने लगता है तुम्हें जो करना है करो।

+0

मैं इसे Emacs में कैसे लोड करूं? धन्यवाद – Geremia

+1

@Geremia: सबसे आसान तरीका शायद आपके .emacs फ़ाइल में कोड को काटने और पेस्ट करने के लिए है। – Nemo

4

आप पर्ल के लिए बाहर बमबारी कोई आपत्ति नहीं है, तो आप क्षेत्र आप randomize करने के लिए चाहते हैं का चयन कर सकते हैं, और फिर टाइप सी-यूएम |perl -MList::Util=shuffle -e 'print shuffle <STDIN>'

मुझे यकीन है कि कई अन्य लोकप्रिय प्रोग्रामिंग भाषाएं इसी तरह की सुविधाएं प्रदान करती हैं।

6

वैकल्पिक रूप से, इस आवश्यकता को अनुकूलित करने के लिए sort-lines है।

मैंने reverse तर्क (स्पष्ट रूप से यहां प्रासंगिक नहीं है) को हटा दिया है, और बस एक 'तुलना' फ़ंक्शन को sort-subr पर एक यादृच्छिक परिणाम लौटा दिया है।

(defun my-random-sort-lines (beg end) 
    "Sort lines in region randomly." 
    (interactive "r") 
    (save-excursion 
    (save-restriction 
     (narrow-to-region beg end) 
     (goto-char (point-min)) 
     (let ;; To make `end-of-line' and etc. to ignore fields. 
      ((inhibit-field-text-motion t)) 
     (sort-subr nil 'forward-line 'end-of-line nil nil 
        (lambda (s1 s2) (eq (random 2) 0))))))) 

मूल के लिए:
एमएक्सfind-functionआरईटीsort-linesआरईटी

4

जीएनयू/लिनक्स पर बैश का उपयोग करना:

शॉन के समाधान के समान, क्षेत्र और उसके बाद का चयन करें:

C-u M-| shuf 

स्पष्टीकरण:

एम- | चयनित क्षेत्र की सामग्री को बैश कमांड शफ में पाइप करता है। शफ लाइनों shuffles। उपसर्ग सी-यू शफ का उत्पादन लेता है और चयनित क्षेत्र को ओवरराइट करने के लिए इसका उपयोग करता है।

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