रैंडम टिकट कोड जनरेटर


18

एक लॉटरी कंपनी लंबाई 10 वर्णों की एक यादृच्छिक लॉटरी टिकट संख्या उत्पन्न करना चाहती है।

ऐसी संख्या बनाने के लिए किसी भी भाषा में एक कोड लिखें जिसमें प्रत्येक अंक केवल एक बार उदाहरण के लिए आता 9354716208है इस संख्या में सभी पूर्णांक 0 से 9 तक एक बार आते हैं। यह संख्या एक यादृच्छिक संख्या होनी चाहिए।

  • उत्पन्न संख्या को स्क्रीन पर दिखाया जाना चाहिए।
  • यह सभी स्वीकार्य पात्रों के सभी क्रमपरिवर्तन उत्पन्न करने में सक्षम होना चाहिए।
  • कोड जितना संभव हो उतना छोटा होना आवश्यक है (बाइट्स में)।

3
यह जावा या पीएचपी में क्यों होना चाहिए?
फाबिनौट

4
आमतौर पर, कोड-गोल्फ विवरण के अनुसार, किसी भी भाषा की अनुमति देना अच्छा होता है ।
कोनराड बोरोस्की

10
यह कैसे है कि सबसे लंबे और कम से कम गोल्फ के जवाब (एसक्यूएल जवाब) में से एक, यहां तक ​​कि एक चार गिनती के बिना, कोड-गोल्फ में स्वीकृत उत्तर के रूप में खड़े हों जब @ हॉवर्ड जैसे लोगों के पास 5 या 8 चरित्र के उत्तर हों?
डैरेन स्टोन

1
हां, @marinus का 4 बाइट समाधान है (मेरा 6 बाइट्स है)
Timtech

4
-1 विजेता का चयन अनुचित है, यह देखते हुए कि यह एक कोड-गोल्फ चुनौती थी।
डेविड जेएन

जवाबों:


41

जे (4 बाइट्स)

विरोध नहीं कर सका।

?~10

J में, यदि Fडाइएडिक है, F~ xजैसा ही है x F x


3
+ 1 मुझे लगता है कि मुझे इसे हराने के लिए पायथन की तुलना में कुछ ज्यादा ही कोशिश करनी पड़ सकती है।
जोकिम इस्कसन

क्या यह एक पासवर्ड के लिए अनुमति देता है जो शून्य से शुरू होता है? नियमों के अनुसार, कार्यक्रम "सभी स्वीकार्य पात्रों के सभी
क्रमपरिणामों

@DavidCarraher: हाँ। यह अंतराल से 10 गैर-दोहराए जाने वाले यादृच्छिक संख्याओं का चयन करता है [0..10), ताकि मूल रूप से '0123456789' का यादृच्छिक क्रमांकन हो।
मारिनस

1
समझा। मैंने इसे इसलिए उठाया क्योंकि अधिकांश भाषाओं में, "संख्या", 0123456789, स्वचालित रूप से 123456789 के रूप में संपादित हो जाएगी। स्ट्रिंग, "0123456789", अछूती रहती है। तो मेरा प्रश्न वास्तव में यही है: क्या आपका आउटपुट एक नंबर या एक स्ट्रिंग है?
डेविड जेएन

@DavidCarraher यह एक सरणी है।
बेंत की मार

12

जे, 5 अक्षर और एपीएल, 8 अक्षर

जे

10?10

J में बिल्ट-इन सौदा ऑपरेटर ( ?) है। इस प्रकार, हम 10 में से 10 ले सकते हैं ( 10?10)।

एपीएल

1-⍨10?10

एपीएल के पास एक ही ऑपरेटर है जो दुर्भाग्य से शून्य के बजाय एक के साथ शुरू होता है। इसलिए हम प्रत्येक संख्या से घटाने पर कर रहे हैं ( 1-⍨Xसाधन X-1लघुकरण ऑपरेटर के कारण)।


ओह, वाह, यह अच्छा है।
कोनराड बोरोस्की

ओपी संख्या नहीं एक सरणी के लिए विशेष रूप से पूछा है चाहते हैं, तो आप इसे Base10 संख्या के लिए भी परिवर्तित करना चाहिए साथ10#.
बेंत की मार

आप यह मान सकते हैं कि ⎕IO←0आपको एक को घटाना नहीं है। इसके अलावा, जे और एपीएल दोनों के लिए, आप एक बाइट को बचाने के लिए कम्यूट का उपयोग कर सकते हैं ?~10और ?⍨10चूंकि व्युत्पन्न फ़ंक्शन के मोनैडिक एप्लिकेशन इसके सही तर्क का उपयोग बाएं तर्क के रूप में भी करते हैं। लेकिन ध्यान दें कि यह जम्मू कोड के समान बनाता है Marinus की कि
आदम

9

पायथन 2.7 ( 64 63 57)

ऑपरेटर भारी भाषाओं की तुलना में यहां कोई मौका नहीं है और डिफ़ॉल्ट लोड किए गए यादृच्छिक की कमी के कारण :) यह सबसे छोटा है जिसके साथ मैं आ सकता था;

from random import*
print''.join(sample("0123456789",10))

यह एक सीमा बनाता है और बिना प्रतिस्थापन के 10 नंबर के नमूने लेता है।

(थोड़ा आयात प्रारूप तय करने के लिए @xfix के लिए धन्यवाद और मेरे कुछ जटिल नमूना नमूने को इंगित करने के लिए @blkknght)

पायथन 2.7 (40)

यदि आप इसे इंटरेक्टिव प्रॉम्प्ट से चलाते हैं और कॉमा को अलग करके पढ़ सकते हैं, तो आप इसे 40 पर शेव कर सकते हैं, लेकिन यह नियमों की भावना को तोड़ने जैसा लगता है;

from random import*
sample(range(10),10)

1
आप from random import*एक चरित्र को बचाने के लिए उपयोग कर सकते हैं । यह मेरे पर्ल 6 समाधान की तरह दिखता है, लेकिन अधिक क्रिया है, लेकिन यह देखकर बहुत अच्छा लगता है कि पायथन में कुछ इस तरह से काम कर सकता है, भले ही अधिक क्रिया।
कोनराड बोरोस्की

@xfix हाँ, दुख की बात है कि पायथन में मॉड्यूल तुलना में पाने के लिए थोड़ा सा क्रियात्मक हैं :) आपके आयात फिक्स के साथ अपडेट किया गया, मेरे मुहावरों पर "बराबर" नहीं तो गोल्फिंग चीज़ के लिए काफी नया।
जोकिम इस्कासन

आप "0123456789"उपयोग करने rangeऔर उन्हें मैप करने के बजाय स्ट्रिंग से नमूने द्वारा कुछ और अक्षर बचा सकते हैं str
ब्लैंकनथ

@Blckknght धन्यवाद, आपके सुझाव के साथ अद्यतन किया गया :)
जोआचिम इस्कसन

8

PHP, 29 वर्ण

<?=str_shuffle('0123456789');

PHP के साथ, समापन टैग की आवश्यकता नहीं है। लेकिन अगर यह नियमों के खिलाफ है, तो आप बदल सकते हैं; के साथ?> 1 शुद्ध वृद्धि के लिए।


आपने मुझे इस समाधान के लिए हराया।
शॉन बेबर्स

8

रूबी, १,

इसमें चलाएं irb:

[*0..9].shuffle*''

यदि आप चाहते हैं कि यह एक स्टैंड-अलोन प्रोग्राम हो, जिसमें आउटपुट stdout(नियमों को इसकी आवश्यकता नहीं लगती है ), तो शुरुआत में इन 4 वर्णों को जोड़ें:

$><<

आप छोटा (0..9).to_aकर सकते हैं [*0..9]
हावर्ड

हो गया और हो गया, सर। धन्यवाद!
डेरेन स्टोन

आपका स्वागत है। लेकिन आप [*0..9].shuffleपहली जगह में उपयोग क्यों नहीं करते हैं ?
हावर्ड

@ हावर्ड, क्योंकि यह देर हो चुकी है और मैं गूंगा हूं। :) धन्यवाद!
डैरेन स्टोन

नंबर नहीं के साथ यह रिटर्न एरे

8

PHP - 37 वर्ण

<?=join('',array_rand(range(0,9),10))

मेरे पास एक 18-चरित्र वाला समाधान था जो सैद्धांतिक रूप से काम करना चाहिए लेकिन PHP अजीब है।

या, यदि आप एक xkcd उत्तर चाहते हैं:

<?="5398421706" // Chosen by program above; guaranteed to be random ?>

संपादित करें: धन्यवाद xfix, यह अब 5 अक्षर छोटा और पूर्ण है। संपादित करें: लाइव उदाहरण


केवल पूर्ण भागों के बजाय एक पूरा कार्यक्रम लिखें। इसके अलावा, echoपरगनों की आवश्यकता नहीं है, और यदि echoकार्यक्रम में पहला बयान है, तो आप के <?php echoसाथ बदल सकते हैं <?=। इसके अलावा, के joinलिए एक उपनाम है implode
कोनराड बोरोस्की

@xfix धन्यवाद, मैं ठीक कर दूँगा। :)
cjfaure

तुम भी जरूरत नहीं है <?=और ?>। यह उन लोगों के बिना वैध PHP कोड है।
जेरेमी

@ जेरेमी गोल्फ की आवश्यकता है कि संख्या प्रदर्शित हो; इसके अलावा, echo एक ही लंबाई के रूप में <?=और ?>संयुक्त है, और उन लोगों के बिना, यह कोडपैड में काम नहीं करता है। हालांकि धन्यवाद। : P
cjfaure

1
@ जेरेमी आह, पीएचपी, जहां एक टर्मिनल के अलावा गैर-एम्बेडेड कार्यान्वयन दुर्लभ हैं। : पी
cjfaure

8

पर्ल 6 (18 16 अक्षर)

print pick *,^10

यह सरणी को सभी यादृच्छिक तत्वों ( pick *) से उत्पन्न करता 0है 9और परिणाम ( print) को आउटपुट करता है ।

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

$ perl6 -e 'print pick *,^10'
4801537269
$ perl6 -e 'print pick *,^10'
1970384265
$ perl6 -e 'print pick *,^10'
3571684902

+1 मुझे लगता है कि आपको पहले व्हाट्सएप की आवश्यकता नहीं है pick
हावर्ड

1
@ हॉवर्ड: मुझे वास्तव में इसकी आवश्यकता है। [~](जिसे पर्ल 6 व्याकरण के अनुसार एक लिस्टोप के रूप में देखा गया है) इसके बाद एक व्हाट्सएप (या पेरेन) की आवश्यकता होती है यदि इसमें कोई तर्क हो। अन्यथा, पर्ल 6 संकलक "पंक्ति में दो शब्द" के बारे में शिकायत करता है। पर्ल 6 के पुराने संस्करणों में इसकी आवश्यकता नहीं थी, लेकिन यह अतीत है। पर्ल 6 पर अभी भी काम किया जा रहा है।
कोनराड बोरोस्की

1
@xfix: 2 अक्षरों के printबजाय उपयोग करें say [~]और सहेजें :)
Ayiko

@ एइको: एक सुधार के लिए धन्यवाद :)।
कोनराड बोरोस्की

7

GolfScript, 12 अक्षर

10,{;9rand}$

बस अंकों की सूची ( 10,) उत्पन्न करता है और इसे {...}$कुछ यादृच्छिक कुंजियों के अनुसार क्रमबद्ध करता है - जो अंकों के क्रम को क्रमबद्ध करता है।

उदाहरण ( ऑनलाइन प्रयास करें ):

4860972315

0137462985

पी: मैं इस पोस्ट करने के लिए के बारे में था
दरवाज़े

यह एक बकवास फेरबदल की तरह है, हालांकि: उदाहरण के लिए, पहला अंक 0 होने की संभावना के रूप में लगभग 3 गुना है। 1. के 9randसाथ प्रतिस्थापित 99randकरना (ज्यादातर) इसे ठीक करना होगा; 9.?randहोगा व्यावहारिक रूप से सही
इल्मरी करोनें

1
@IlmariKaronen मुझे पता है, लेकिन सवाल समान वितरण के बारे में कुछ नहीं कहा।
हावर्ड

6

आर (23 अक्षर)

cat(sample(0:9),sep="")

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

> cat(sample(0:9),sep="")
3570984216
> cat(sample(0:9),sep="")
3820791654
> cat(sample(0:9),sep="")
0548697132

6

टीआई-बेसिक, 5 बाइट्स

randIntNoRep(1,10

एक संख्या के बजाय एक सूची प्रदर्शित करता है। तुम खोज रहे हो randIntNoRep(0,9:.1sum(Ans10^(cumSum(1 or Ans
lirtosiast

2
मुझे नहीं लगता कि इस चुनौती के लिए पूर्णांक प्रकार की आवश्यकता है, केवल यह कि "उत्पन्न संख्या को स्क्रीन पर दिखाया जाना चाहिए" जो कि यह है।
टिमटेक

हम्म, मैंने सोचा था कि सवाल एक नंबर के लिए पूछ रहा था (जैसा कि दूसरों ने किया था लेकिन ऐसा लगता है कि चुनौती लेखक का इरादा कभी भी स्पष्ट नहीं किया गया था। किसी भी मामले में एक सूची (जे और एपीएल) के रूप में कुछ अन्य समाधान आउटपुट।
lirtosiast

खैर, मैं यह नहीं मानूंगा कि जब तक मुझे यकीन नहीं था, क्योंकि यह तरीका छोटा है।
टिमटेक

5

ऑक्टेव (14)

randperm(10)-1

randperm दुर्भाग्यवश 1..n से चयन होता है, इसलिए 0-9 प्राप्त करने के लिए अंत में 1 घटाना होगा।


5

Sql सर्वर में

DECLARE @RandomNo varchar(10)
SET @RandomNo = ''

;WITH num as (
SELECT 0 AS [number]
Union 
select 1
Union 
select 2
Union 
select 3
Union 
select 4
Union 
select 5
Union 
select 6
Union 
select 7
Union 
select 8
Union 
select 9
)
SELECT Top 9 @RandomNo = COALESCE(@RandomNo + '', '') + cast(n.number AS varchar(1))
FROM numbers n
ORDER BY NEWID()

SELECT cast(@RandomNo AS numeric(10,0))

डेमो देखें

या कुछ इसी तरह (@manatwork के सौजन्य से) पुनरावृत्ति और xml का उपयोग कर।

with c as(select 0i union all select i+1from c where i<9)select i+0from c order by newid()for xml path('')

1
यार, तुम सीटीई से प्यार करते हो ... लेकिन यह एक कोड-गोल्फ चुनौती है, इसे जितना संभव हो उतना छोटा कर दो। मेरा सर्वश्रेष्ठ 186 अक्षर है select i+0from(select 0i union select 1union select 2union select 3union select 4union select 5union select 6union select 7union select 8union select 9)f order by newid()for xml path(''):। (BTW, महान चाल है कि newid()।)
मैनटवर्क

1
ठीक है, तुम सही हो। CTE से छोटा है। 106 अक्षर: with c as(select 0i union all select i+1from c where i<9)select i+0from c order by newid()for xml path('')
मैनटवर्क

आप cte को सरल बना सकते हैं(VALUES (1),(2),...)
ypercube

5

जावास्क्रिप्ट ( 79 78 68 अक्षर)

0-9 की संख्या के साथ एक सरणी बनाने और उसे क्रमबद्ध करने के बजाय, मैंने यादृच्छिक संख्याएँ उत्पन्न करने का निर्णय लिया। जब यह एक ऐसी संख्या के साथ आया जो पहले से ही सरणी में नहीं थी, तब इसे जोड़ा। यह दस बार दोहराता है और फिर आउटपुट को अलर्ट करता है।

for(a="";!a[9];){~a.indexOf(b=~~(Math.random()*10))||(a+=b)}alert(a)


आप ||शॉर्ट-सर्किट मूल्यांकन का उपयोग करके 1 बाइट को बचा सकते हैं ifजैसे: for(a="";!a[9];){b=Math.floor(Math.random()*10);~a.indexOf(b)||(a+=b)}alert(a)
स्टीवन पलिंकस

1
@StevenPalinkas धन्यवाद, महान विचार! मैंने उसी हिसाब से पोस्ट अपडेट की है।
scribblemaniac

हम कोड में पुनर्व्यवस्था के साथ 2 बाइट्स भी बचा सकते हैं:for(a="";!a[9];){~a.indexOf(b=Math.floor(Math.random()*10))||(a+=b)}alert(a)
स्टीवन पलिंकास 25'17

हम Math.floor के लिए "शॉर्टहैंड" का उपयोग करके एक अतिरिक्त 8 बाइट्स बचा सकते हैं:for(a="";!a[9];){~a.indexOf(b=~~(Math.random()*10))||(a+=b)}alert(a)
स्टीवन पलिंकास


4

शेल / कोरुटिल्स, 23

shuf -i0-9|paste -sd ''

अगर हमें एक अनुगामी न्यूलाइन की आवश्यकता नहीं है, तो आप इसे 20 के साथ शेव कर सकते हैं shuf -i0-9|tr -d \\n
joeytwiddle 16

किस बारे में shuf -zi0-9
सुबह

@marcosm: यह आपको जीरो के साथ समाप्त होने वाली लाइनें देता है, जो थोड़ा अजीब है।
हस्त्कर्ण

4

जावास्क्रिप्ट, 82 वर्ण

संपादित करें: रोब डब्ल्यू के लिए धन्यवाद , कोड की लंबाई 90 वर्णों तक कम हो जाती है।

EDIT: जॉर्ज रीथ की बदौलत कोड की लंबाई घटकर 82 अक्षर (लूप के लिए) हो गई है।

बहुत सरल तरीका: [0,1,2,3,4,5,6,7,8,9]सरणी का यादृच्छिक तत्व चुनें और इसे आउटपुट में जोड़ें, फिर सरणी और पुनरावृत्ति को कम करें।

पुराना संस्करण (106 अक्षर):

a=[0,1,2,3,4,5,6,7,8,9],l=11,t="";while(--l){r=Math.floor(Math.random()*l);t+=a[r];a.splice(r,1);}alert(t)

पठनीय संस्करण:

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], l = 10,t = "";
while(l--) {
  r = Math.floor(Math.random() * l);
  t += a[r];
  a.splice(r, 1);
}
alert(t);

बेहतर संस्करण (90 वर्ण):

a="0123456789".split(t=""),l=11;while(--l)t+=a[r=0|Math.random()*l],a.splice(r,1);alert(t)

अंतिम संस्करण (82 अक्षर):

a="0123456789".split(t='');for(l=11;--l;t+=a.splice(0|Math.random()*l,1));alert(t)

JSFiddle: http://jsfiddle.net/gthacoder/qH3t9/


1
मैंने आपकी विधि को 90 वर्णों तक गढ़ा है a='0123456789'.split(t=''),l=10;while(l--)t+=a[r=0|Math.random()*l],a.splice(r,1);alert(t):। बिग सेवर: Math.random(x)=== 0|x। घुंघराले ब्रेसिज़ और अर्धविराम को अल्पविराम से बदलें। एक मध्यवर्ती चर का उपयोग करने के बजाय, एक असाइनमेंट के परिणाम को सीधे मान के रूप में उपयोग करें। अंत में, प्रारंभिक सरणी का उपयोग करके आरंभ करें .split(r='')। यह एरे शाब्दिक का उपयोग करके एक सरणी बनाने और एक अलग अभिव्यक्ति में स्ट्रिंग मान असाइन करने से कम है।
रोब डब्ल्यू

@RobW सुझावों के लिए धन्यवाद। मैंने अपना उत्तर अपडेट कर दिया। PS मुझे लगता है कि आपका मतलब है Math.floor(x) === 0|x
gthacoder 18

1
यह हमेशा अंत में 9 है। l=11लूप की स्थिति को ठीक करने, बदलने और बदलने के लिएwhile(--l)
ग्रेग

@ अच्छी बात है। धन्यवाद। मैंने जवाब अपडेट किया।
gthacoder

1
82 वर्ण: a="0123456789".split(t='');for(l=11;--l;t+=a.splice(0|Math.random()*l,1));alert(t)- आपका कोड लूप्स इनिशियलाइज़ेशन, कंडीशन और एक्सप्रेशन तर्कों के लिए पूरी तरह से फिट बैठता है। rचर अनावश्यक है।
जॉर्ज रीथ

4

सी #, 145 बाइट्स

Ungolfed

using System;
using System.Linq;
class P
{
    static void Main()
    {
        Enumerable.Range(0,10).OrderBy(g => Guid.NewGuid()).ToList().ForEach(Console.Write);
    }
}

golfed

using System;using System.Linq;class P{static void Main(){Enumerable.Range(0,10).OrderBy(g => Guid.NewGuid()).ToList().ForEach(Console.Write);}}

1
आप उपयोग कर सकते हैं Enumerable.Range(0,10), और आपको foreachलूप में घुंघराले कोष्ठक की आवश्यकता नहीं है ।
रिक

3

जावास्क्रिप्ट (80 अक्षर)

alert("0123456789".split("").sort(function(){return .5-Math.random()}).join(""))

JS-Fiddle: http://jsfiddle.net/IQAndreas/3rmza/


3
ध्यान दें कि इसे एक तीर फ़ंक्शन का उपयोग करके आगे बढ़ाया जा सकता है (जो वर्तमान में केवल एफएफ में काम करता है, लेकिन जल्द ही हर जगह दुभाषियों के लिए आ रहा है):alert("0123456789".split("").sort(n=>.5-Math.random()).join(""))
अप्सिलर्स

1
आप के बीच जगह की जरूरत नहीं है returnऔर.5
टिबोस

1
@Greg Shhhh! क्या आपके पास कोई विचार है कि एक वास्तविक फेरबदल समारोह में कितने वर्ण हैं ? ;)
IQAndreas

1
@Greg यह एक यादृच्छिक वितरण है (यह मानते हुए कि Math.random पर्याप्त रूप से यादृच्छिक है), यह सिर्फ एक समान नहीं है।
SuperJedi224

1
मूल ब्लॉग पोस्ट चला गया है, जो पोस्टरिटी के लिए इंटरनेट संग्रह को जोड़ रहा है: web.archive.org/web/20150212083701/http://sroucheray.org/blog/…
ग्रेग

3

के / कोना (6)

-10?10

जे के साथ के रूप ?में, सौदा ऑपरेटर है; -बलों के लिए मूल्यों को दोहराना नहीं।


3

गणितज्ञ ४०

संख्या को एक स्ट्रिंग के रूप में बनाया जाता है ताकि शून्य को पहले चरित्र के रूप में प्रदर्शित किया जा सके, जब आवश्यक हो।

""<>RandomSample["0"~CharacterRange~"9"]

आउटपुट उदाहरण

"0568497231"
"6813029574"

व्याख्या

"0"~CharacterRange~"9" `कैरेक्टरेंज [" 0 "," 9 "]" के लिए इन्फिक्स नोटेशन है। इनमें से किसी ने सूची में लौटाया है, {"0", "1", "2", "3", "4", "5", " 6 "," 7 "," 8 "," 9 "}।

RandomSample[list]डिफ़ॉल्ट रूप से सूची का एक क्रमचय लौटाता है। (इसका उपयोग अन्य प्रकार के नमूने के लिए भी किया जा सकता है, जब मापदंडों को शामिल किया जाता है। ईजी RandomSample[list, 4]4 वर्णों का यादृच्छिक नमूना लौटाएगा, जिसमें कोई दोहराव नहीं है।


लेकिन 0 को पहले चरित्र के रूप में क्यों प्रदर्शित किया जाए?
अंकुश

ओपी के अनुसार, कार्यक्रम "सभी स्वीकार्य पात्रों के सभी क्रमपरिवर्तन उत्पन्न करने में सक्षम होना चाहिए"।
डेविड सी

@Ankush यह infix संकेतन है, इसलिए "0" हमेशा पहला वर्ण नहीं है।
अजजा

अजसजा सही है। कार्यक्रम किसी भी क्रमपरिवर्तन को उत्पन्न कर सकता है। मैंने इसे स्पष्ट करने के लिए ऊपर कुछ टिप्पणियां जोड़ीं।
डेविड जेएन


2

फोर्थ, 72

needs random.fs : r ': '0 do i loop 9 for i 1+ random roll emit next ; r

अभी भी गोल्फ के लिए कमरा, शायद, लेकिन फोर्थ ने इसे मुश्किल बना दिया। मुझे लगता है।


2

प्रस्तावना, 177/302 अक्षर

मैं प्रोलॉग पर एक शुरुआत कर रहा हूं, इसलिए शायद यह सबसे गाढ़ा कोड नहीं है।

:- use_module(library(clpfd)).
sort(N) :-
    N = [N0,N1,N2,N3,N4,N5,N6,N7,N8,N9],
    domain([N0],1,9),
    domain([N1,N2,N3,N4,N5,N6,N7,N8,N9],0,9),
    all_different(N),
    labeling([],N).

यह दिखाता है:

| ?- sort2(N).                                         
N = [1,0,2,3,4,5,6,7,8,9] ? ;
N = [1,0,2,3,4,5,6,7,9,8] ? ;
N = [1,0,2,3,4,5,6,8,7,9] ? ;
N = [1,0,2,3,4,5,6,8,9,7] ? ;
N = [1,0,2,3,4,5,6,9,7,8] ? 
yes

यदि आप चाहते हैं कि यह पूर्णांक लौटाए:

:- use_module(library(clpfd)).
sort(M) :-
    N = [N0,N1,N2,N3,N4,N5,N6,N7,N8,N9],
    domain([N0],1,9),
    domain([N1,N2,N3,N4,N5,N6,N7,N8,N9],0,9),
    all_different(N),
    labeling([],N),
    M is (N0*1000000000)+(N1*100000000)+(N2*10000000)+(N3*1000000)+
         (N4*100000)+(N5*10000)+(N6*1000)+(N7*100)+(N8*10)+N9.

यह दिखाता है:

| ?- sort(N).
N = 1023456789 ? ;
N = 1023456798 ? ;
N = 1023456879 ? ;
N = 1023456897 ? ;
N = 1023456978 ? 
yes

इसके बजाय का उपयोग करना:

labeling([down],N)

विपरीत क्रम में संख्या देता है:

| ?- sort(N).                                        
N = 9876543210 ? n
N = 9876543201 ? n
N = 9876543120 ? n
N = 9876543102 ? n
N = 9876543021 ? 
yes

पोस्ट किए गए कुछ अन्य कोड के विपरीत, यह सभी संभावनाएं (बिना किसी पुनरावृत्ति के) देता है।


2

q / kdb [6 वर्ण]

-10?10

10 अद्वितीय यादृच्छिक संख्या उत्पन्न करेगा।



2

क्लोजर, 42

(println (apply str (shuffle (range 10))))

6209847315


उत्पन्न संख्या को स्क्रीन पर दिखाया जाना चाहिए, न कि यह भागों में।
सिल्वेस्टर

2

जावास्क्रिप्ट, 83 वर्ण

a=[];while(!a[9]){b=Math.floor(Math.random()*10);!a.includes(b)&&a.push(b)}alert(a)

जब तक सरणी में 10 तत्व होते हैं, तब तक चल रहा है।

0 - 9 से रैंडम नंबर जनरेट करना, फिर ऐरे की जाँच करें! इस नंबर को शामिल करें और इसे ऐरे में जोड़ें।


1
साइट पर आपका स्वागत है! :)
DJMcMayhem

1

यह JMK के उत्तर से बहुत छोटा नहीं है, लेकिन यहाँ थोड़ा छोटा C # समाधान (135) है:

using System;
using System.Linq;
class P { 
    static void Main() 
    { 
        Console.Write(string.Join("", "0123456789".OrderBy(g => Guid.NewGuid()))); 
    } 
}

संकुचित (134):

using System;using System.Linq;class P{static void Main(){Console.Write(string.Join("", "0123456789".OrderBy(g => Guid.NewGuid())));}}

वैकल्पिक संस्करण (135):

using System;
using System.Linq;
class P { 
    static void Main() 
    { 
        "0123456789".OrderBy(g => Guid.NewGuid()).ToList().ForEach(Console.Write); 
    } 
}

जमा:

using System;using System.Linq;class P{static void Main(){"0123456789".OrderBy(g => Guid.NewGuid()).ToList().ForEach(Console.Write);}}

वे लंबाई में बराबर हैं, लेकिन यह वास्तव में सिर्फ इस बात पर निर्भर करता है कि आप Linq के ForEach फ़ंक्शन या String's Join फ़ंक्शन का उपयोग करना चाहते हैं। मैं Enumerable.Range (0, 10) का उपयोग करने के बजाय एक स्ट्रिंग में "0123456789" सीमा को वर्तनी द्वारा लंबाई में 10 वर्णों को निकालने में सक्षम था।


1

लोगो , 64 वर्ण

make "d 1234567890
repeat 10 [
    make "n pick d
    show n
    make "d butmember n d
]

आपूर्ति की गई सूची का यादृच्छिक आइटम चुनेंबटरमेड रिटर्न सूची को हटाए गए निर्दिष्ट आइटम की सभी घटनाओं के साथ। नोट: सभी लोगो कार्यान्वयन butmemberआदेश का समर्थन नहीं करते हैं ।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.