लंबाई N का एक यादृच्छिक अल्फ़ान्यूमेरिक स्ट्रिंग बनाना


30

दी गई लंबाई और केवल अल्फ़ान्यूमेरिक वर्णों के साथ यादृच्छिक स्ट्रिंग उत्पन्न करने का सबसे छोटा तरीका क्या है?

  • एक यादृच्छिक स्ट्रिंग का उदाहरण: N = 9 आउटपुट के साथ होगा aZua7I0Lk
  • दी गई लंबाई N को हमेशा 0 से अधिक माना जा सकता है
  • यदि आवश्यक हो तो आप एन के लिए अधिकतम मान के रूप में 256 मान सकते हैं, लेकिन एन के लिए उच्च सीमा वाले समाधान और अभी भी एक तेज गणना परिणाम पसंद कर रहे हैं
  • अनुमत वर्ण: 0-9, az और AZ
  • एक वर्ण आउटपुट स्ट्रिंग में एक से अधिक बार हो सकता है
  • प्रत्येक संभव स्ट्रिंग समान रूप से होने की संभावना होनी चाहिए (आपकी भाषा की यादृच्छिक संख्या जनरेटर की सटीकता के लिए)

1
क्या हम N के लिए अधिकतम मूल्य मान सकते हैं?
JAD

जवाबों:


4

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

ØBṗX

इसे ऑनलाइन आज़माएं!

व्याख्या

ØBṗX
ØB     All letters (uppercase and lowercase) and digits
  ṗ    Cartesian power with {the input}
   X   Select a random possibility

कार्टेशियन शक्ति मूल रूप से दी गई लंबाई की सभी सूची उत्पन्न करती है जिसे तत्वों के दिए गए सेट से बाहर बनाया जा सकता है; यहाँ ठीक वैसा ही है जैसा हमें चाहिए।


अगर यूटीएफ -8 अक्षर शामिल हैं जो वास्तव में सिर्फ 4 बाइट्स हो सकते हैं? UTF-8 का एक चरित्र सिर्फ एक बाइट से अधिक हो सकता है ...
m13r

@ m13r जेली अपने स्वयं के कोड पृष्ठ का उपयोग करती है जहां ये सभी एकल बाइट वर्ण हैं
23

13

टैक्सी , 2577 बाइट्स

Go to Post Office:w 1 l 1 r 1 l.Pickup a passenger going to The Babelfishery.Go to The Babelfishery:s 1 l 1 r.Pickup a passenger going to Sunny Skies Park.Go to Sunny Skies Park:n 1 l 1 l 1 r.[a]Go to Heisenberg's:n 1 r 1 r 3 r.Pickup a passenger going to Cyclone.Go to Go More:n 1 l 3 l 3 l.Go to Starchild Numerology:e 2 r.62 is waiting at Starchild Numerology.Pickup a passenger going to Cyclone.Go to Cyclone:e 1 l 2 r.Pickup a passenger going to What's The Difference.Pickup a passenger going to Divide and Conquer.Pickup a passenger going to Divide and Conquer.Go to Divide and Conquer:n 2 r 2 r 1 r.Pickup a passenger going to Trunkers.Go to Trunkers:e 1 r 3 r 1 l.Pickup a passenger going to Multiplication Station.Go to Cyclone:w 2 r.Pickup a passenger going to Multiplication Station.Go to Multiplication Station:s 1 l 2 r 4 l.Pickup a passenger going to What's The Difference.Go to What's The Difference:n 2 l 1 r 3 l.Pickup a passenger going to Addition Alley.Go to Starchild Numerology:e 1 r 3 l 2 r.1 is waiting at Starchild Numerology.63 is waiting at Starchild Numerology.Pickup a passenger going to Addition Alley.Pickup a passenger going to The Underground.Go to Addition Alley:e 1 l 2 r 3 r 1 r.Pickup a passenger going to Joyless Park.Go to Writer's Depot:n 1 l 1 l.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789- is waiting at Writer's Depot.Pickup a passenger going to Chop Suey.Go to Joyless Park:n 3 r 2 r 2 l.Go to Chop Suey:w 1 r 1 r 1 l.[b]Pickup a passenger going to Narrow Path Park.Go to Narrow Path Park:n 1 l 1 r 1 l.Go to The Underground:e 1 r.Switch to plan "c" if no one is waiting.Pickup a passenger going to The Underground.Go to Fueler Up:s.Go to Chop Suey:n 3 r 1 l.Switch to plan "b".[c]Go to Joyless Park:n 1 r.Pickup a passenger going to The Underground.Go to Narrow Path Park:w 1 r 3 l.[d]Pickup a passenger going to KonKat's.Go to KonKat's:e 1 r.Pickup a passenger going to KonKat's.Go to The Underground:s.Switch to plan "e" if no one is waiting.Pickup a passenger going to The Underground.Go to Fueler Up:s.Go to Narrow Path Park:n 4 l.Switch to plan "d".[e]Go to KonKat's:n.Pickup a passenger going to Riverview Bridge.Go to Riverview Bridge:n 1 l.Go to Narrow Path Park:e 1 l 1 r.Pickup a passenger going to Post Office.Go to Post Office:e 1 r 4 r 1 l.Go to Sunny Skies Park:s 1 r 1 l 1 r.Pickup a passenger going to The Underground.Go to The Underground:n 1 r 1 r 2 r.Switch to plan "f" if no one is waiting.Pickup a passenger going to Sunny Skies Park.Go to Sunny Skies Park:n 3 l 2 l 1 l.Switch to plan "a".[f]

इसे ऑनलाइन आज़माएं!

इसके लिए टैक्सी सुपर नहीं है, लेकिन आप इसे कर सकते हैं! मैं यह समझाने की कोशिश करूंगा कि अन-गोल्फ संस्करण के नीचे क्या हो रहा है।

Go to Post Office: west 1st left 1st right 1st left.
Pickup a passenger going to The Babelfishery.
Go to The Babelfishery: south 1st left 1st right.
Pickup a passenger going to Sunny Skies Park.
Go to Sunny Skies Park: north 1st left 1st left 1st right.
[a]
Go to Heisenberg's: north 1st right 1st right 3rd right.
Pickup a passenger going to Cyclone.
Go to Go More: north 1st left 3rd left 3rd left.
Go to Starchild Numerology: east 2nd right.
62 is waiting at Starchild Numerology.
Pickup a passenger going to Cyclone.
Go to Cyclone: east 1st left 2nd right.
Pickup a passenger going to What's The Difference.
Pickup a passenger going to Divide and Conquer.
Pickup a passenger going to Divide and Conquer.
Go to Divide and Conquer: north 2nd right 2nd right 1st right.
Pickup a passenger going to Trunkers.
Go to Trunkers: east 1st right 3rd right 1st left.
Pickup a passenger going to Multiplication Station.
Go to Cyclone: west 2nd right.
Pickup a passenger going to Multiplication Station.
Go to Multiplication Station: south 1st left 2nd right 4th left.
Pickup a passenger going to What's The Difference.
Go to What's The Difference: north 2nd left 1st right 3rd left.
Pickup a passenger going to Addition Alley.
Go to Starchild Numerology: east 1st right 3rd left 2nd right.
1 is waiting at Starchild Numerology.
63 is waiting at Starchild Numerology.
Pickup a passenger going to Addition Alley.
Pickup a passenger going to The Underground.
Go to Addition Alley: east 1st left 2nd right 3rd right 1st right.
Pickup a passenger going to Joyless Park.
Go to Writer's Depot: north 1st left 1st left.
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789- is waiting at Writer's Depot.
Pickup a passenger going to Chop Suey.
Go to Joyless Park: north 3rd right 2nd right 2nd left.
Go to Chop Suey: west 1st right 1st right 1st left.
[b]
Pickup a passenger going to Narrow Path Park.
Go to Narrow Path Park: north 1st left 1st right 1st left.
Go to The Underground: east 1st right.
Switch to plan "c" if no one is waiting.
Pickup a passenger going to The Underground.
Go to Fueler Up: south.
Go to Chop Suey: north 3rd right 1st left.
Switch to plan "b".
[c]
Go to Joyless Park: north 1st right.
Pickup a passenger going to The Underground.
Go to Narrow Path Park: west 1st right 3rd left.
[d]
Pickup a passenger going to KonKat's.
Go to KonKat's: east 1st right.
Pickup a passenger going to KonKat's.
Go to The Underground: south.
Switch to plan "e" if no one is waiting.
Pickup a passenger going to The Underground.
Go to Fueler Up: south.
Go to Narrow Path Park: north 4th left.
Switch to plan "d".
[e]
Go to KonKat's: north.
Pickup a passenger going to Riverview Bridge.
Go to Riverview Bridge: north 1st left.
Go to Narrow Path Park: east 1st left 1st right.
Pickup a passenger going to Post Office.
Go to Post Office: east 1st right 4th right 1st left.
Go to Sunny Skies Park: south 1st right 1st left 1st right.
Pickup a passenger going to The Underground.
Go to The Underground: north 1st right 1st right 2nd right.
Switch to plan "f" if no one is waiting.
Pickup a passenger going to Sunny Skies Park.
Go to Sunny Skies Park: north 3rd left 2nd left 1st left.
Switch to plan "a".
[f]

प्रारंभ करें: स्टडिन प्राप्त करें
, स्टडिन मान को टेक्स्ट के रूप में चुनें, इसे एक संख्या में परिवर्तित करें और प्रतीक्षा करने के लिए इसे कहीं न कहीं चिपका दें।

योजना A भाग 1: एक यादृच्छिक पूर्णांक
प्राप्त करें 1-62 एक यादृच्छिक पूर्णांक प्राप्त करें और फिर 62एक संख्या के रूप में प्राप्त करें । दोनों यादृच्छिक पूर्णांक को डुप्लिकेट करें और 62क्योंकि हमें बाद में उनकी आवश्यकता होगी। आप केवल एक बार तो हम अंत में 3 यात्रियों को ले सकते हैं rand, randऔर 62। (दूसरा 62तब तक इंतजार करेगा जब तक कि हम वापस नहीं लौट आते।) विभाजित randहोकर 62पूर्णांक प्राप्त करने के लिए परिणाम को काट दें। की अन्य प्रतिलिपि प्राप्त करने के लिए वापस जाएं 62और इसे विभाजन से पूर्णांक पूर्णांक से गुणा करें। अंत में, पहली प्रति से उत्पाद को घटाएं rand। यह हमें 0-61 नंबर देता है। अब हमें एक पिक लेने के लिए वापस जाना है 1और इसे 1-62 नंबर प्राप्त करने के लिए परिणाम में जोड़ना है। हाँ, पाठ की वे सभी पंक्तियाँ बस हैं mod(rand(),62)+1

एक भाग 2 की योजना बनाएं: उन पात्रों की एक सरणी बनाएं जिसमें से
पिक को सभी वैध वर्णों के साथ एक स्ट्रिंग चुनने के लिए और अंत में एक भी हम नहीं चाहते (उस पर बाद में)। 63हम इस स्ट्रिंग लंबाई पहले मैचों का चुनाव किया। इसे चोप सूय के ऊपर ले जाएं ताकि यह अलग-अलग यात्रियों में टूट जाए।

प्लान बी: ​​ऐरे को मूव करें ताकि हम एक-
एक करके कैरेक्टर को सेलेक्ट कर सकें , हर कैरेक्टर को नैरो पाथ पार्क में ले जा सकें । यह एकमात्र स्टैक उपलब्ध है और यात्रियों को रास्ते में नहीं मिलने का एकमात्र तरीका है। टाउनसबर्ग में बाकी सब कुछ फीफो है इसलिए मुझे वापस जाना होगा और सभी यात्रियों को समग्र लूप के प्रत्येक पुनरावृत्ति को साफ करना होगा। इस तरह, मैं बस उन्हें पार्क में छोड़ सकता हूं और वे हर बार 63 नए पात्रों द्वारा रास्ते से हट जाएंगे। बहुत पहले कभी नहीं बचने कीA संभावना है ।

योजना सी: एक चरित्र का चयन करने के लिए तैयार करें
यह वास्तव में बस कुछ ही स्टॉप है जिन्हें प्लान डी में होने की आवश्यकता नहीं थी। तैयारी में टैक्सी को पुनः स्थिति दें।

योजना डी: उन सभी पात्रों को प्राप्त करें जिन्हें हम चाहते
हुए भी उल्टे "सरणी" में पहले अक्षर से शुरू करते हैं (यह 63 वां वर्ण जो हम नहीं चाहते हैं), modफ़ंक्शन के परिणाम से गिने जाने वाले वर्णों को उठाते और समेटते रहें। योजना ए में एक बार जब आप शून्य को हिट करते हैं, तो अगला चरित्र वह होता है जो आप चाहते हैं।

योजना ई: उन लोगों को डुबोएं जिन्हें आप नहीं चाहते हैं और चुने हुए को वापस करें।
रिवरव्यू ब्रिज पर "पी] के यात्री गिर गए, ऐसा लगता है कि वे हमेशा किनारे पर और नदी में गिरते हैं ..." ठीक है, जो हारे हुए लोगों के उस कठोर तार से छुटकारा दिलाता है। अगले चरित्र को उठाओ और stdout को भेजें। अंत में, आइए देखें कि हमने अब तक कितने वर्ण छापे हैं। सनी के आसमान पर वापस जाने के लिए स्टाइन का मूल्य जो हमने बहुत पहले छोड़ दिया था। एक घटाएँ और, यदि परिणाम शून्य से अधिक है, तो इसे प्रतीक्षा करने के लिए वापस भेजें और प्लान ए पर फिर से शुरू करें।


क्या यह ट्यूरिंग पूरी भाषा है? मैंने इसके बारे में कभी नहीं सुना है? यदि ऐसा है, तो यह इतिहास में सबसे लंबे समय तक कोड के रूप में योग्य हो सकता है!
मेपल_शाफ्ट

4
@maple_shaft टैक्सी मज़ेदार है, लेकिन मैं गारंटी दे सकता हूं कि यह सबसे लंबा कोड गोल्फ उत्तर नहीं है। हैं कुछ एकल जवाब है कि गंभीरता से ट्रम्प यह।
इंजीनियर टोस्ट

1
@maple_shaft मैंने कुछ खुदाई की। PPCG पर मुझे जो सबसे बड़ा जवाब मिल सकता है, वह इस उत्तर का मूल संस्करण @ डेनिस I (बेशक यह डेनिस from है) से लिया गया है, लेकिन यह है कि code-bowlingइसे संशोधित किया गया था। सबसे लंबा code-golfजवाब जो मुझे मिल सकता है, वह है मूल ब्रेन-फ्लैक को मूल क्वीन चुनौती पर प्रस्तुत करना। यह 9.5 * 10 ^ 580 बाइट्स पर आता है। सबसे लंबा वर्तमान उत्तर मुझे यूनेरी में एक मुख्य परीक्षक मिला : 1.65 * 10 ^ 56 बाइट्स।
इंजीनियर टोस्ट

7

सी (जीसीसी) , 57 55 52 बाइट्स

संकेत के लिए 2501 धन्यवाद ...

i;f(n){for(;n-=isalnum(i=rand()%150)&&putchar(i););}

इसे ऑनलाइन आज़माएं!


rand()%74होना चाहिएrand()%75
2501

@ 2501 अच्छी कॉल।
क्लेब्लांक

1
आप &&putchar(i)टर्नरी ऑपरेटर के बजाय का उपयोग करके आकार को और कम कर सकते हैं ।
2501

अच्छा! यह बहुत अच्छा है, धन्यवाद।
क्लेब्लांक

6

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

एक चाल याद किया - ais523 के 4 बाइट देखें

ØBX$€

इसे ऑनलाइन आज़माएं!

कैसे?

ØBX$€ - Main link: n
    € - for each in range(n):
   $  -   last two links as a monad:
ØB    -     "base digits" - yields list of chars "01..9AB...Zab...z"
  X   -     random choice

मैं यूटीएफ -8 के चरित्र को एक बाइट ओ ओ की लंबाई के रूप में नहीं मानूंगा?
m13r

@ m13r जेली का अपना कोड पेज है - इसे देखने के लिए मेरे उत्तर के शीर्ष लेख में बाइट्स पर क्लिक करें।
जोनाथन एलन

5

शेल + pwgen , 13 बाइट्स

pwgen -s $1 1

-s, - असुरक्षित

पूरी तरह से यादृच्छिक, हार्ड-टू-याद पासवर्ड उत्पन्न करें।

नमूना उत्पादन

%pwgen -s 10 1
2cyhLovbfT

5

जावा 8, 183 149 97 88 बाइट्स

n->{for(int t;n-->0;t*=Math.random(),System.out.printf("%c",t+=t>9?t>35?61:55:48))t=62;}

इसे ऑनलाइन आज़माएं।

@ 2501 के सी उत्तर को पोर्ट करके -9 बाइट्स , इसलिए उसे भी उखाड़ना सुनिश्चित करें!

पुराना उत्तर, 97 बाइट्स

n->{for(int t;n-->0;t*=Math.random(),System.out.printf("%c",t>9?(t<36?65:97)+t%26:48+t%10))t=62;}

इसे ऑनलाइन आज़माएं।

स्पष्टीकरण:

n->{                           // Method with integer parameter and String return-type
  for(int t;                   //  Temp integer
      n-->0                    //  Loop the input amount of times:
      ;                        //    After every iteration:
       t*=Math.random(),       //     Set `t` to a random integer in the range [0,62)
       System.out.printf("%c", //     Print as character:
         t+=                   //      The random integer, after we've added:
            t>9?               //       If the random integer is larger than 9:
             t>35?             //        If the random integer is larger than 35:
              61               //         Add 61
             :                 //        Else:
              55               //         Add 55
            :                  //       Else:
             48))              //        Add 48
    t=62;}                     //   (Re)set `t` to 62 for the random

n->{for(int t;n-->0;t*=Math.random(),System.out.printf("%c",...))t=62;}
                               // Similar as above
         t>9?                  //      If the random integer is larger than 9:
          (t<36?               //       If the random integer is smaller than 36:
            65                 //        Start with 65 ('A')
           :                   //       Else:
            97)                //        Start with 97 ('a')
               +t%26           //       And add the random integer modulo-26
         :                     //      Else:
          48                   //       Start with 48 ('0')
            +t%10)             //       And add the random integer modulo-10

4

सी, 60 बाइट्स

r;f(n){for(;n--;)r=rand()%62,putchar(r+=r>9?r>35?61:55:48);}

इसे यहां देखें ।

वितरण यहाँ देखें ।

यह समान रूप से वितरित किया जाता है, यह मानते हुए rand() % 62एक समान वितरण का उत्पादन करता है। चूंकि 62 आमतौर पर RAND_MAX को समान रूप से विभाजित नहीं करता है, इसलिए बहुत छोटा पूर्वाग्रह है।


4

स्नोमैन , 58 बाइट्स

((}#`""*:48vn58nR|65vn91nR,aC|97vn123nR,aCAsH1AaL#aC*;bR))

इसे ऑनलाइन आज़माएं!

यह एक सबरूटीन है जो एक पूर्णांक को इनपुट के रूप में लेता है और यादृच्छिक स्ट्रिंग लौटाता है।

((             subroutine
  }            make b, e, g active
  #`           e = input (from +)
  ""*          store an empty string in +
  :            what follows is the block to prepend a random char to +
    48vn58nR|  generate range(48..58) and place in g (need b and e for next step)
    65vn91nR   generate range(65..91) in b
    ,aC|       move g to e, concatenate b and e, and move the result to g
    97vn123nR  generate range(97..123) in b
    ,aC        move g to e, concatenate b and e, keeping the result in b
    AsH        shuffle the array of candidate ASCII codes stored in b
    1AaL       equivalent to 0aAwR - get the first element wrapped in an array
    #aC        retrieve + and prepend the randomly generated character
    *          store back into +
  ;bR          repeat this block e times, where e has been set to the input
))             output is given via +

यह होना चाहिए ((}#`""*:48vn58nR|65vn91nR,aC|97vn123nR,aCAsH1AaL#aC*;bR)):।
2501

@ 2501 आह, आप सही कह रहे हैं। निश्चित, धन्यवाद।
दरवाज़े

4

पॉवरशेल, 58 54 बाइट्स

-4 आंद्रेई ओडेगो के लिए धन्यवाद - चार सरणी बनाने के लिए लूपिंग के बजाय एक चार सरणी के लिए कास्टिंग।

-join[char[]](65..90+97..122+48..57|random -C "$args")

1..2+4..5 = 1,2,4,5सभी स्वीकार्य चरक कोड की एक श्रृंखला उत्पन्न करता है, फिर $argsबेतरतीब ढंग से उपयोग करने वाले तत्वों की संख्या का चयन करता है random -Count- परिणामस्वरूप तत्वों को लूप किया जाता है |%{}और [char]एस में बदल दिया जाता है , उपयोग करने वाले वर्णों की एक सरणी में डाल दिया जाता है [char[]]- फिर पूरी चीज कोष्ठक और -joinएड में एक साथ संलग्न किया जाता है।

PS C:\users\sweeneyc\Desktop> .\grstr.ps1 5
oaCE5
PS C:\users\sweeneyc\Desktop> .\grstr.ps1 10
UReh6McG7D
PS C:\users\sweeneyc\Desktop> .\grstr.ps1 30
t1YrhZf5egyzqnPlWUKV3cEoIudMTs

0 के इनपुट के लिए काम नहीं करता है क्योंकि Get-Randomकेवल -Countपैरामीटर के लिए 1 से ऊपर की संख्या को स्वीकार करता है ।


आप बाइट्स की प्राप्त सारणी को एकल वर्णों के वर्ण के रूप में रख सकते हैं। यह 4 बाइट्स बचाने में मदद करेगा:-join[char[]](65..90+97..122+48..57|random -C "$args")
आंद्रेई ओडेगो



2

पर्ल 5 , 41 बाइट्स

कोड + -pध्वज के 40 बाइट्स ।

$\.=(a..z,A..Z,0..9)[rand 62]for 1..$_}{

इसे ऑनलाइन आज़माएं!

(a..z,A..Z,0..9)सभी अक्षरों और संख्याओं वाली एक सरणी बनाता है, [rand 62]इस सरणी का एक यादृच्छिक तत्व देता है, जो कि एपेंड ( .=) है $\, जिसे अंत में -pझंडे के साथ धन्यवाद के लिए मुद्रित किया जाता है }{


या, एक ही बाइटकाउंट के लिए, लेकिन सीमांत इनपुट के बजाय मापदंडों का उपयोग करना:

print+(a..z,A..Z,0..9)[rand 62]for 1..pop

इसे ऑनलाइन आज़माएं!


2

आर, 51 बाइट्स

अन्य आर उत्तर के समान लंबाई, लेकिन एक अलग दृष्टिकोण।

cat(sample(c(letters,LETTERS,0:9),scan(),T),sep="")

lettersऔर LETTERSदोनों बिल्ट-इन वैरिएबल हैं जिनमें क्रमशः सभी निचले और बड़े अक्षर हैं। उसको जोड़ना 0:9और हमारे पास अल्फ़ान्यूमेरिक वर्णों का पूरा सेट है।


2

आर, 54 52 51 49 बाइट्स

intToUtf8(sample(c(65:90,97:122,48:57),scan(),T))

स्पष्टीकरण:

  1. पढ़ें इनपुट पूर्णांक n :scan()
  2. ASCII मूल्यों के साथ वेक्टर: c(65:90,97:122,48:57)
  3. प्रतिस्थापन के साथ नमूना n ASCII मान:sample(c(65:90,97:122,48:57),scan(),T)
  4. के साथ एक चरित्र स्ट्रिंग के लिए ASCII मूल्यों को बदलना intToUtf8

मुझे उसी लंबाई के साथ एक और दृष्टिकोण मिला।
JAD

@JarkoDubbeldam अच्छा विचार है, इससे मुझे दो बाइट्स बचाने में मदद मिली
स्वेन

डी 'ओह! अच्छा काम :)
JAD

2

जावास्क्रिप्ट (ईएस 6), 61 54 39 52 64 बाइट्स

यह लगभग रिवर्स-गोल्फ की तरह है! बाइट काउंट पर एक बड़ी हिट को सुनिश्चित करते हुए कि सभी तीन समूहों के पात्रों की पूरी श्रृंखला का उपयोग किया जाएगा।

f=n=>n--?btoa(String.fromCharCode(Math.random()*248))[0]+f(n):""
  • 15 बाइट्स (एक चरण में) एक पुनरावर्ती कार्य का उपयोग करने के अरनॉल्ड के सुझाव के लिए धन्यवाद ।

कोशिश करो

f=n=>n--?btoa(String.fromCharCode(Math.random()*248))[0]+f(n):""
i.addEventListener("input",_=>o.innerText=f(+i.value))
<input id=i type=number><pre id=o>


मैंने इसे अपडेट किया है ताकि सभी 3 चरित्र समूह शामिल हों, @Arnauld; मैं सिर्फ एक सूचकांक खोजने की कोशिश कर रहा हूं जिसमें उनमें से 2 से अधिक हो सकते हैं। पुनरावर्ती विकल्प का सुझाव देने के लिए धन्यवाद।
झबरा

मुझे यह विचार पसंद है, लेकिन मुझे लगता है कि अब आप [0-5w-z]विशेष रूप से वर्ण उत्पन्न कर रहे हैं ।
अरनौलद

मैं btoa(String.fromCharCode(Math.random()*248))[0]पूरी रेंज को समान रूप से कवर करने का सुझाव दूंगा।
अरनौल

बस गौर किया कि खुद, @Arnauld। ऐसा लगता है कि मुझे toStringसभी 3 समूहों के पात्रों की एक पूरी श्रृंखला की गारंटी देने के लिए दोनों विधियों (कन्वर्ट और फिर सांकेतिक शब्दों) को संयोजित करना होगा।
झबरा

यह बेहतर है लेकिन अभी भी अधूरा है: 014589ABEFIJMNQRUVYZcdghklopstwx(और वर्दी नहीं)।
अरनौलड

2

एलिस , 24 बाइट्स

/w9u"Uz;r
\0.rdao"ki@/t&

इसे ऑनलाइन आज़माएं!

यह लेआउट पहले से बहुत बेहतर है कि मेरे पास मूल रूप से क्या था (32 बाइट्स), लेकिन मुझे यकीन है कि यह अभी तक इष्टतम नहीं है ...

व्याख्या

/      Reflect to SE. Switch to Ordinal.
       The IP now bounces diagonally up and down through the code.
09     Append 0 and 9 to an (implicit) empty string to create "09".
r      Range expansion, turns the string into "0123456789".
"az"   Push this string.
r      Range expansion, turns it into the lower-case alphabet.
i      Read all input as a string.
/      Reflect to E. Switch to Cardinal.
t      Implicitly convert the input string to the integer value N it
       contains and decrement it.
&      Run the next command N-1 times.
       The IP wraps around to the first column.
\      Reflect to NE. Switch to Ordinal. (This is not a command.)
w      Push the current IP address to the return address stack N-1
       times. This starts a loop whose body will run N times.
  .      Duplicate the lower-case alphabet.
  u      Convert it to upper case.
  d      Push the concatenation of all values on the stack. This pushes
         a single string with digits, lower-case and upper-case alphabet.
  U      Random choice. Pick a character from this string uniformly at random.
  o      Print it.
  ;      Discard the upper-case alphabet, because it will be regenerated
         in the next loop iteration (and if we leave it, then upper-case
         letters will become more and more likely as the output grows).
k      As long as there is still an address on the return address stack,
       jump back to that address (i.e. to the w). Once the return address
       stack has been depleted, this does nothing and the loop is exited.
@      Terminate the program.


2

पायथन 2, 79 83 79 बाइट्स

import random as r,string as s;lambda x:''.join(r.sample(s.printable[:62]*x,x))

+4 बाइट्स (पुनरावृत्ति के लिए खाता नहीं था)

-4 बाइट्स (उपयोग करने के सुझाव के लिए @Rod का धन्यवाद printable[:62])


1
काम नहीं करता है, इसमें दोहराव होना चाहिए। इसके (s.letters+s.digits)*xबजाय का उपयोग करके इसे ठीक किया जा सकता हैs.letters+s.digits
रॉड

@Rod फिक्स्ड, धन्यवाद!
वंडरक्रिक

तुम भी उपयोग कर सकते हैं `r.sample(...)`[2::5]बजाय ''.join(r.sample(...))एक बाइट (केवल अजगर 2) को बचाने के लिए और (s.letters+s.digits)*xकरने के लिए स्विच किया जा सकता s.printable[:62]*x4 बाइट को बचाने के लिए
रॉड

@Rod सुझाव के लिए धन्यवाद। मैंने लागू किया printable, [2::5]काम नहीं कर सका (शायद मैं इसे गलत कर रहा था?)
वंडरक्रिकेट

आपको इसके बारे में कुछ जानकारी केr.sample() साथ सूची को घेरने की जरूरत है``
रॉड



1

बैच, 175 बाइट्स

@set s=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
@for /l %%i in (1,1,%1)do @call :c
@echo %s:~62%
:c
@set/an=%random%%%62
@call set s=%s%%%s:~%n%,1%%

sयहाँ दोहरी ड्यूटी करता है क्योंकि इसमें अल्फ़ान्यूमेरिक सूची और बेतरतीब ढंग से चुने गए अक्षर दोनों शामिल हैं। परिणाम को प्रिंट करने के बाद कोड सबरूटीन के माध्यम से गिरता है जिसके परिणाम को अनदेखा किया जाता है।


1

Pyke , 4 बाइट्स

~JfH

इसे ऑनलाइन आज़माएं!

~J   -   "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  f  -  cominbations(^, length=input)
   H - random.choice(^)

यह 3 से अधिक किसी भी इनपुट के लिए काम नहीं करता है, और मुझे यकीन नहीं है कि यह एक से अधिक बार एक ही चरित्र उत्पन्न कर सकता है।
अताको

यह 3 से अधिक इनपुट्स के लिए काम नहीं करता है। मैंने इसे यहाँ आज़माया
m13r

इसके लिए लगभग 4 GB अल्फ़ान्यूमेरिक वर्णों की एक स्ट्रिंग बनाने के लिए लगभग 1 GB RAM की आवश्यकता है ... इसे 10. के इनपुट के लिए काम करने के लिए नहीं मिला। यह प्रोग्राम MemoryError
15 मार्च

1

पायथ, 7 11 बाइट्स

O^s++rG1GUT

इसे ऑनलाइन आज़माएं

व्याख्या

O^s++rG1GUT
    +rG1G      Take the uppercase and lowercase alphabets.
   +     UT    Add it to the list [0, ..., 9].
  s            Concatenate to get a string.
 ^         Q   Get all strings of length N.
O              Choose one at random.

इसमें केवल लोअरकेस वर्णमाला और संख्याएं शामिल हैं, न कि बड़े अक्षर
ब्लू

@ मुड्डीफिश अच्छा कैच। फिक्स्ड।


1

APL (Dyalog) AGL के साथ , 17 बाइट्स

(⎕A,∆a,⎕D)[?⎕⍴62]

इसे ऑनलाइन आज़माएं!

(... )[... में ] अनुक्रमणिका

⎕A,∆a,⎕D अपरकेस वर्णमाला और उसके बाद कम वर्णमाला और उसके बाद अंक

का उपयोग करते हुए

62 (संभावित प्रतीकों की संख्या

द्वारा फिर से तैयार

 मूल्यांकनित इनपुट ( n )

? रेंज 62 में प्रत्येक 62 को यादृच्छिक संख्या में बदलें ... 62

एपीएल (एपीएलएक्स) , 17 बाइट्स

(⎕A,⎕a,⎕D)[?⎕⍴62]


1

पिप , 13 बाइट्स

LaORCz.AZ.J,t

इसे ऑनलाइन आज़माएं!

व्याख्या

               a is cmdline arg; t is 10; z is lcase alphabet; AZ is ucase (implicit)
La             Do the following, a times:
  O             Output (without newline)
   RC           random choice from:
     z           Lowercase letters
      .AZ        concatenated with uppercase letters
         .J,t    concatenated with range(10) joined into a string

1

सिनक्लेयर ZX81 / टाइमेक्स TS1000 / 1500 बेसिक, ~ 63 टोकन बेसिक्स बाइट्स

 1 INPUT N
 2 IF NOT N THEN STOP
 3 FOR N=SGN PI TO N
 4 PRINT CHR$ (CODE "A"+RND*26);
 5 NEXT N

ZX81 में असेंबली का उपयोग किए बिना या UDG ROM या कुछ के बिना किसी प्रकार के लोअर-केस वर्ण नहीं हैं, और कुछ समय के लिए, यह केवल आउटपुट करता है A-Z। यदि शून्य दर्ज किया जाता है, तो कार्यक्रम रुक जाता है और सीधे मोड में लौट आता है।



0

स्टैक्ड , 33 बाइट्स

:>[alpha 10:>ALPHA,,''#`randin]"!

इसे ऑनलाइन आज़माएं! स्टैक के ऊपर से इनपुट लेता है और स्टैक के शीर्ष पर आउटपुट छोड़ता है।

:>[alpha 10:>ALPHA,,''#`randin]"!
:>                                  range from 0 to n-1
  [                           ]"!   on each, do:
   alpha                            push "abc...xyz"
         10:>                       push (0 1 2 ... 8 9)
             ALPHA                  push "ABC...XYZ"
                  ,,                concat twice
                    ''#`            join by nothing
                        randin      select random member in it
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.