एराटोस्थनीज शफल


9

चुनौती

एक फ़ंक्शन या प्रोग्राम लिखें जो इनपुट की एक पंक्ति को स्वीकार करता है, अपने पात्रों पर एक बहुत विशिष्ट और अजीब तरह से परिचित फेरबदल करता है, और परिणाम को आउटपुट करता है।

निम्नलिखित फेरबदल का उपयोग करके आवश्यक फेरबदल का वर्णन किया जा सकता है:

  1. इनपुट में प्रत्येक वर्ण को 1 आधारित सूचकांक के साथ लेबल करें।
  2. आउटपुट के रूप में वर्ण संख्या 1 लिखें।
  3. चरित्र संख्या 2 से शुरू होकर, वर्ण 2 को छोड़कर , क्रम में आउटपुट के लिए हर दूसरे चरित्र को लिखें । दूसरे शब्दों में, वर्ण 4, 6, 8, 10 और इसी तरह आउटपुट पर लिखें।
  4. अगले वर्ण संख्या n अभी तक उत्पादन के रूप में लिखा नहीं के साथ शुरू, उत्पादन के लिए हर n वें चरित्र लिखते हैं, को छोड़कर चरित्र एन ही है, और (संख्यात्मक लेबल के द्वारा) किसी अन्य चरित्र को छोड़कर आप पहले से ही उत्पादन के लिए लिखा हो सकता है।
  5. चरण 4 को दोहराएं क्योंकि यह आउटपुट में नए वर्णों को जोड़ना जारी रखता है।
  6. शेष वर्णों को आउटपुट में लिखें, क्रम में।

उदाहरण

  1. पात्रों को लेबल करें।
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
  OLDDOCYAK 'SBEAUTYCORNER

2. आउटपुट के लिए पहला वर्ण लिखें:

 1   2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
  हे   LDDOCYAK 'SBEAUTYCORNER
हे

3. 2 को छोड़कर हर दूसरे वर्ण को लिखें, 2 को छोड़कर।

 1   2 3 4   5 6   7 8   9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 
 हे   एलडी    डी   सी    वाई एक   कश्मीर '   एस    बी यू   टी वाई     सी आर   एन   आर
O OA 'EUYCRE

4. अगला चरित्र अभी तक नहीं लिखा गया है चरित्र संख्या 3; प्रत्येक 3 अक्षर को 3 से शुरू करें, लेकिन वर्ण 3 को छोड़कर, और पहले से लिखा गया कोई भी वर्ण।

 1   2 3 4   5 6   7 8   9  10 11 12 13 14  15  16 17 18 19 20  21  22 23 24 25 26  27
  हे   एलडी    डी   सी वाई एक   कश्मीर '   एस बी यू   टी वाई सी आर   एनआर 
OOA 'EUYCRE YB R             

5. अगले चरित्र, चरित्र 5 का उपयोग करके चरण 4 को दोहराएं।

4. अगला चरित्र अभी तक नहीं लिखा गया है चरित्र संख्या 5; 5 वें से शुरू होने वाले हर 5 वें चरित्र को लिखें, लेकिन चरित्र 5 को छोड़कर, और पहले से ही लिखा गया कोई भी चरित्र। (यह सिर्फ चरित्र 25 के लिए मात्रा)।

 1   2 3 4   5 6   7 8  9  10 11 12 13 14  15  16 17 18 19 20  21  22 23 24  25  26  27
  हे   एलडी    डी   सी वाई एक   कश्मीर '   एस बी  यू   टी वाई सी आर एनआर 
OOA 'EUYCREYB आर एन               

5. अगला चरित्र 7 है; लेकिन 14, 21 पहले ही लिखे जा चुके हैं, इसलिए यदि हम चरण 4 को दोहराते हैं तो कोई भी वर्ण आउटपुट नहीं होगा। इस प्रकार, हम 5 के साथ कर रहे हैं।

6. शेष वर्णों को क्रम से लिखिए।

 1   2 3 4   5 6   7 8  9  10 11 12 13 14  15  16 17 18 19 20  21  22 23 24  25  26  27
  हे   एलडी   डी   सी वाई एक   कश्मीर '   एस बी यू   टी वाई सी आर एन आर 
OOA 'EUYCREYB RN LDDCKSATO                  

नियम

इनपुट और आउटपुट मानक इनपुट / मानक आउटपुट, स्ट्रिंग्स या वर्णों के सरणियों के माध्यम से हो सकता है।

अगर आप अपनी सुविधानुसार मानक इनपुट के रूप में पढ़ रहे हैं, तो मान लें कि एक अनुगामी न्यूलाइन है, या कि पूरे इनपुट में लाइन है। न्यूलाइन वर्ण फेरबदल में भाग नहीं लेते हैं।

इसी तरह, आपकी सुविधानुसार, आपके आउटपुट में एक अनुगामी न्यूलाइन हो सकती है या नहीं।

मानक खामियों को अस्वीकार कर दिया जाता है।

यह एक कोड गोल्फ प्रतियोगिता है। बाइट्स में सबसे छोटा कोड जीतता है।

परीक्षण के मामलों

123456789ABCDEF -> 1468ACE9F2357BD

OLD DOC YAK'S BEAUTY CORNER -> O O A' EUYCREYB RNLDDCKSATO

Blue boxes use a 2600hz tone to convince telephone switches that use in-band signalling that the caller is actually a telephone operator.
->
Bebxsuea20h oet ovnetlpoesice htuei-adsgaln httecle satal  eehn prtre 0ncce ha nng aiuapootnt ihyon atallu o s 6z oi ehwstsnbilt lr clee.

अब मैं देखता हूं कि यह इतना अजीब रूप से परिचित क्यों है ... यह एक प्रमुख छलनी है ...
बुसुक्सुआन

1
मैं वास्तव में आपके कोड ब्लॉक में 4 से हैरान था। क्रॉस आउट 4 अभी भी नियमित 4 है ...
मामा फन रोल

@MamaFunRoll हाँ, लेकिन संख्यात्मक लेबल दिखाने के लिए सब कुछ बहुत थोड़ा बाहर रखा गया है। इसका फायदा उठाते हुए, मैंने स्ट्राइकआउट बढ़ाया। अब 4 वास्तव में बाहर पार लग रहा है ... बेहतर?
एच वाल्टर्स

1
हाँ, यह आंशिक रूप से एक पुराना पीपीसीजी मेम था: पी धन्यवाद हालांकि, स्पष्टता की सराहना करें!
मामा फन रोल

जवाबों:


4

जेली , 10 बाइट्स

JÆfṂ$ÞÆPÞị

TryItOnline

कैसे?

JÆfṂ$ÞÆPÞị - Main link: theString
J          - range(length), the 1-based indexes of theString
     Þ     - sort these by
    $      -     last two links as a monad
 Æf        -         prime factorization array (e.g. 20 -> [2,2,5])
   Ṃ       -         minimum
        Þ  - sort these by
      ÆP   - isPrime, i.e. move all the primes to the right
         ị - index into theString

5

गणितज्ञ, 61 बाइट्स

#[[SortBy[Range@Length@#,FactorInteger[#][[1,1]]PrimeQ@#&]]]&

इनपुट के रूप में वर्णों की सूची लेने और वर्णों की सूची लौटाने का कार्य करें।

FactorInteger[#][[1,1]]#(और 1अगर #बराबर होता है 1) का सबसे छोटा प्रमुख कारक देता है । इसलिए FactorInteger[#][[1,1]]PrimeQ@#एक अजीब अभिव्यक्ति देता है: [ #का सबसे छोटा अभाज्य कारक] Falseयदि #अभाज्य नहीं है, और # Trueयदि #अभाज्य है (ये एक संख्या और एक बूलियन के निर्विवाद उत्पाद हैं)।

Range@Length@#इनपुट की लंबाई तक संख्याओं की एक सूची देता है। फिर SortByऊपर वर्णित मजेदार फ़ंक्शन द्वारा उन संख्याओं को क्रमबद्ध करें। गणितज्ञ कई मायनों में वास्तव में टाइप-संवेदी है, लेकिन उन्हें अन्य तरीकों से ख़ुशी-ख़ुशी मिलाता है: प्रपत्र की संख्या [संख्या] Falseवर्णानुक्रम में प्रपत्र [संख्या] के अभिव्यक्तियों से पहले क्रमबद्ध होती है True, जबकि संख्याओं को संख्यात्मक रूप से क्रमबद्ध करके तोड़ा जाता है। जो हमारे यहां चाहते हैं, उसी क्रम में उत्पादन करता है और #[[...]]उसी के अनुसार इनपुट के वर्णों की अनुमति देता है।


2

सी, 164 बाइट्स

यह पहले कमांड पैरामीटर के रूप में इनपुट लेता है और स्टडआउट पर वापस प्रिंट करता है। जैसा कि हम प्रत्येक चरित्र को संसाधित करते हैं, हम इसे स्पष्ट करते हैं, जिससे अंतिम पास की अनुमति मिलती है।

#define p putchar
main(c,s,i,j,t)char**s,*t;{c=strlen(t=s[1]);p(*t);for(;j++<c;)if(t[j])for(i=2*j+1;i<=c;i+=j+1)!t[i]?:p(t[i]),t[i]=0;for(j=0;j++<c;)!*++t?:p(*t);}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.