अनोखा पैडलॉक पिन सूची!


16

परिचय

एक निजी चैट में, मेरा एक मित्र स्पष्ट रूप से हाल ही में एक सुरक्षा प्रणाली से टकरा गया है, जिसके वैध पिन पर निम्नलिखित दो प्रतिबंध हैं:

  • प्रत्येक अंक अद्वितीय होना चाहिए (यह "1" केवल एक बार दिखाई दे सकता है)
  • अंकों का क्रम मायने नहीं रखता ("1234" = "4321")

तो यह बताने के लिए कि यह पैडलॉक सिस्टम कितना बुरा है, आइए वास्तव में सभी मान्य पिनों की गणना करें!

इनपुट

आपके इनपुट में एकल, धनात्मक पूर्णांक शामिल होगा, जो पिन की लंबाई को दर्शाता है।

उत्पादन

आपके आउटपुट में गैर-नकारात्मक पूर्णांक या स्ट्रिंग्स * की एक सूची होती है, जो दी गई लंबाई के सभी मान्य पिनों की गणना करती है।

* अधिक सटीक कुछ है कि एक मानव सभी संयोजनों की कोशिश करने के लिए उपयोग कर सकता है अगर आप इसे उनके लिए प्रिंट करेंगे। इसका मतलब है अंकों के सेट और अंकों के सरणियों के सेट ठीक हैं।

किसी जीत?

यह इसलिए बाइट्स जीत में सबसे छोटा जवाब है! मानक नियम और खामियां लागू होती हैं।

कॉर्नर केस

  • 10 से अधिक पूर्णांक इनपुट होने पर आउटपुट व्यवहार अपरिभाषित होता है।
  • प्रत्येक आउटपुट प्रविष्टि के भीतर अंकों का क्रम अपरिभाषित है, क्योंकि एक शून्य के साथ प्रविष्टियों में वास्तव में शून्य कहा जाता है, कि आप "0123" को "123" पर नहीं "लेकिन" 1230 "," 1203 "और" 1023 "सभी के लिए मान्य कर सकते हैं। जैसा कि "0123" है।

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

1
[0,1,2,3,4,5,6,7,8,9]

2
[10,20,30,40,50,60,70,80,90,21,31,41,51,61,71,81,91,32,42,52,62,72,82,92,43,53,63,73,83,93,54,64,74,84,94,65,75,85,95,76,86,96,87,97,98]

3
[210,310,410,510,610,710,810,910,320,420,520,620,720,820,920,430,530,630,730,830,930,540,640,740,840,940,650,750,850,950,760,860,960,870,970,980,321,421,521,621,721,821,921,431,531,631,731,831,931,541,641,741,841,941,651,751,851,951,761,861,961,871,971,981,432,532,632,732,832,932,542,642,742,842,942,652,752,852,952,762,862,962,872,972,982,543,643,743,843,943,653,753,853,953,763,863,963,873,973,983,654,754,854,954,764,864,964,874,974,984,765,865,965,875,975,985,876,976,986,987]

4
[3210,4210,5210,6210,7210,8210,9210,4310,5310,6310,7310,8310,9310,5410,6410,7410,8410,9410,6510,7510,8510,9510,7610,8610,9610,8710,9710,9810,4320,5320,6320,7320,8320,9320,5420,6420,7420,8420,9420,6520,7520,8520,9520,7620,8620,9620,8720,9720,9820,5430,6430,7430,8430,9430,6530,7530,8530,9530,7630,8630,9630,8730,9730,9830,6540,7540,8540,9540,7640,8640,9640,8740,9740,9840,7650,8650,9650,8750,9750,9850,8760,9760,9860,9870,4321,5321,6321,7321,8321,9321,5421,6421,7421,8421,9421,6521,7521,8521,9521,7621,8621,9621,8721,9721,9821,5431,6431,7431,8431,9431,6531,7531,8531,9531,7631,8631,9631,8731,9731,9831,6541,7541,8541,9541,7641,8641,9641,8741,9741,9841,7651,8651,9651,8751,9751,9851,8761,9761,9861,9871,5432,6432,7432,8432,9432,6532,7532,8532,9532,7632,8632,9632,8732,9732,9832,6542,7542,8542,9542,7642,8642,9642,8742,9742,9842,7652,8652,9652,8752,9752,9852,8762,9762,9862,9872,6543,7543,8543,9543,7643,8643,9643,8743,9743,9843,7653,8653,9653,8753,9753,9853,8763,9763,9863,9873,7654,8654,9654,8754,9754,9854,8764,9764,9864,9874,8765,9765,9865,9875,9876]

1
इनपुट गैर-ऋणात्मक है - इसलिए इनपुट शून्य पर, प्रोग्राम में एक मान होना चाहिए, खाली स्ट्रिंग?
एशप्लेनर

@aschepler वास्तव में, शून्य केस 11 केस जितना ही कामुक है, इसलिए मैंने इसे "सकारात्मक पूर्णांक" में बदल दिया।
SEJPM

जवाबों:


7

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

ØDœc

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

व्याख्या

ØDœc  Double-builtin; main link
  œc  Number of combinations of          of length
ØD                              [digits]
                                                   <right argument>

के लिए व्यवहार n > 10खाली सूची है।


यह 10 से अधिक इनपुट के साथ कैसे काम नहीं करता है (यह कोशिश की, और मुझे अजीब लग रहा था)?
विंडमिल कुकीज

2
@ गन्नू-कोई नहीं यह खाली सूची देता है क्योंकि आपके पास 10 विकल्पों के साथ 11 तत्वों का संयोजन नहीं हो सकता है।
हाइपरनेत्रिनो

ओह, ,D "0123456789" है। धन्यवाद।
विंडमिल कुकीज

6

05AB1E , 5 बाइट्स

žhæsù

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

व्याख्या

   sù  # keep elements the length of the input
  æ    # from the powerset
žh     # of 0123456789

नहीं पता ùथा कि एक बात है। यकीन है कि मैं पहले फिल्टर का इस्तेमाल किया है। वह कितना नया है?
मैजिक ऑक्टोपस Urn

1
@MagicOctopusUrn: बहुत पुराना। लंबे समय तक वहाँ रहा: पी
एमिग्ना

मुझे दिमाग नहीं अब से पहले आदेश देखें। मी ब्रेन नो स्मार्ट।
मैजिक ऑक्टोपस Urn

एक दो बार मेरे साथ हुआ है। कुछ आदेशों पर एक से अधिक बार, जो है ...
एमिग्ना

... एक देव-स्तरीय 05AB1Er (05AB1E-ite? 05AB1E-a?) जैसे कि स्वयं के लिए स्वीकार्य है।
मैजिक ऑक्टोपस Urn

6

जावास्क्रिप्ट (ईएस 7), 89 बाइट्स

अंकों की सूची (वर्णों के रूप में), या रिक्त सूची की सूची लौटाता है यदि n> 10

n=>[...2**29+'4'].reduce((a,x)=>[...a,...a.map(y=>[x,...y])],[[]]).filter(a=>a.length==n)

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

कैसे?

हम पहले सभी दशमलव अंकों की एक सूची 2 29 = 536870912 की गणना करके वर्णों की सूची बनाते हैं , जो लापता '4' और विभाजन को जोड़ते हैं :

[...2**29+'4']  [ '5', '3', '6', '8', '7', '0', '9', '1', '2', '4' ]

हम तो शक्तियां गणना करते हैं:

.reduce(                                   ,[[]]) // starting with a[] holding an empty list
        (a,x)=>[                          ]       // for each decimal digit x:
                ...a,                             //   copy all previous entries in a[]
                     ...a.map(y=>        )        //   and duplicate each previous entry y
                                 [x,...y]         //   with x prepended at the beginning

अंत में, हम उनकी लंबाई पर परिणाम फ़िल्टर करते हैं:

.filter(a=>a.length==n)










2

हास्केल , 47 बाइट्स

f 0=[[]]
f n=[a:x|x<-f$n-1,a<-[0..9],all(/=a)x]

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

व्याख्या

जब अंकों की संख्या शून्य होती है तो केवल एक संयोजन होता है, जो कि खाली होता है:

f 0=[[]]

जब अंकों की संख्या होती है nऔर n/=0संयोजन सभी तरह से अंकों को जोड़ने के तरीके होते हैं, तो f$n-1ऐसे अंकों को जोड़ दिया जाता है जो पहले से ही इसमें शामिल नहीं होते हैं।

f n=[a:x|x<-f$n-1,a<-[0..9],all(/=a)x]

2

गैया ,  4  3 बाइट्स

₸…K

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

जब से मैंने Gaia में उत्तर पोस्ट किया है, तब तक यह एक समय हो गया है! बाइट बचाने के लिए मिस्टर एक्सकोडर का धन्यवाद!

      % implicit input n
₸     % push 10
 …    % pop 10, push 0..9
  K   % all subsets of size n
      % print top of stack implicitly

आप की जरूरत नहीं है @
श्री Xcoder

@ Mr.Xcoder धन्यवाद। महसूस नहीं किया कि; यह बहुत स्पष्ट रूप से प्रलेखित नहीं लगता है।
ग्यूसेप

2

रेटिना , 51 36 बाइट्स

.+
10*
"$+"{%`^.
*_$&
L$v`_+
$.%`$%'

इसे ऑनलाइन आज़माएं! आउटपुट कुछ नहीं के लिए n>10। स्पष्टीकरण:

.+
10*

इनपुट को 10 _एस से बदलें ।

"$+"{

कार्यक्रम के बाकी nसमय को दोहराएं ।

%`^.
*_$&

प्रत्येक संख्या _को उसके पहले अंक के अनुसार दोहराया गया।

L$v`_+

सभी से मिलान करें _, लेकिन निम्नलिखित _में से सभी को मैच में भी शामिल करें, जिसके लिए हमें ओवरलैपिंग मैचों को सक्षम करने की आवश्यकता है।

$.%`$%'

प्रत्येक _पाया के लिए, _s की संख्या को इसके बाईं ओर संख्या में उपसर्ग करें ।

यह थोड़ा मुश्किल है इसलिए शायद एक वास्तविक मामला बेहतर होगा। मान लीजिए कि हमने पहले ही दो बार लूप चलाया है, ताकि सभी 2-अंकीय पिन उत्पन्न हो गए हैं, और हम वर्तमान में उनके माध्यम से 3-अंकीय पिन बनाने के लिए काम कर रहे हैं। हम देखेंगे कि क्या होता है 36: पहला अंक है 3, इसलिए बनाने के लिए तीन _s उपसर्ग हैं ___36। इसके बाद निम्न मिलान बनाए जाते हैं, जिनके साथ यहां चिह्नित किया गया है`' s के :

Match   $%` $.%`
`___'36     0
_`__'36 _   1
__`_'36 __  2

$%'करने के लिए evalutes 36सभी तीन मामलों में, 3 अंकों पिन में जिसके परिणामस्वरूप036 , 136और 236

यदि हम तब 4 अंकों के पिन बनाने के लिए जाते थे, तो 036कोई _उपसर्ग नहीं होगा , और इसलिए अंतिम आउटपुट में कोई भी मैच नहीं होगा।


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

@aschepler वास्तव में; मुझे लगता है कि ओपी ने उस मामले को बाहर करने का फैसला किया है, लेकिन यदि आप सोच रहे हैं, तो फिक्स को प्रीपेन्ड करना होगा ^0और 5 बाइट्स की कीमत पर।
नील

1

प्रोटॉन , 43 बाइट्स

(0..9)&__import__("itertools").combinations

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

प्रोटॉन अंत में अजगर को पछाड़ता है: DI ने सोचा (import itertools)कि मूल्य वापस कर दूंगा लेकिन जाहिर तौर पर मैं उस पर असफल रहा। *बाद में आयात करना भी काम नहीं करता क्योंकि यह लंबोदर में नहीं है, यह एक शीर्ष-स्तरीय अभिव्यक्ति है।


1

जाप, 5 बाइट्स

अंक सारणियों के एक सरणी को आउटपुट करता है। आउटपुट सभी संयोजनों इनपुट है अगर 0या एक खाली सरणी यदि इनपुट है <0या >10

Ao àU

कोशिश करो


व्याख्या

          :Implicit input of integer U
A         :10
 o        :Range [0,10)
   àU     :Combinations of length U

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

@aschepler, आप कहाँ से प्राप्त कर रहे हैं?
झबरा

1

स्टैक्स , 4 बाइट्स

Vd,S

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

Vdहै "0123456789",इनपुट को मुख्य स्टैक पर ले जाता है।Sनिर्दिष्ट आकार का संयोजन मिलता है।

टियो लिंक में, mप्रत्येक आउटपुट को प्रिंट करने के लिए पाद लेख में उपयोग किया जाता है।


1

मानक एमएल , 124 122 121 बाइट्स

open List;fun f(s:: &)m=(if exists(fn x=>x=m)s then[]else[m::s])@f&m|f&m= &
fun!0=[[]]| !n=concat(tabulate(10,f(!(n-1))))

इसे ऑनलाइन आज़माएं! उदाहरण उपयोग: !2पैदावार[[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,9],[1,0],[1,2],[1,3], ...]

Ungolfed:

open List;

(* int list list -> int -> int list list *)
fun f (s::r) m =
    if exists (fn x => x=m) s 
    then f r m
    else (m::s) :: f r m
  | f [] m = []

(* int -> int list list *)
fun g 0 = [[]]
  | g n = concat(tabulate(10, f(g(n-1))))

कुछ विकल्प:

125 123 बाइट्स

fun f(s:: &)m=(if List.exists(fn x=>x=m)s then[]else[m::s])@f&m|f&m= &
fun!m 0=[[]]| !10n=[]| !m n=f(!0(n-1))m@ !(m+1)n;!0;

इसे ऑनलाइन आज़माएं!एक अनाम फ़ंक्शन को परिभाषित करता है जो करने के लिए बाध्य हैit

127 124 बाइट्स

fun!0=[[]]| !n=let fun f(s:: &)m=(if List.exists(fn x=>x=m)s then[]else[m::s])@f&m|f&9=[]|f&m=f(!(n-1))(m+1)in f(!(n-1))0end

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



1

Oracle 18 SQL, 169 बाइट्स

गोल्फ की भाषा नहीं बल्कि:

WITH t(v)AS(SELECT*FROM SYS.ODCINUMBERLIST(0,1,2,3,4,5,6,7,8,9)),n(a,b,c)AS(SELECT a,-1,''FROM i UNION ALL SELECT a-1,v,v||c FROM n,t WHERE v>b)SELECT c FROM n WHERE a=0

iस्तंभ के साथ तालिका में इनपुट होने की उम्मीद a:

CREATE TABLE i (a INT);
INSERT INTO i VALUES ( 3 );

ओरेकल लाइव एसक्यूएल पर इसे ऑनलाइन आज़माएं (एक नि: शुल्क लॉगिन की आवश्यकता होती है, फिर समाधान को एक वर्कशीट में कॉपी करें) या एसक्यूएलफ़िल्ड (कोई लॉगिन नहीं है लेकिन कम ओरेकल संस्करण पर काम करने के लिए +7 बाइट्स की आवश्यकता होती है)।


1

सीजेएम , 13 11 बाइट्स

{Ae!f<:$_|}

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

तकनीकी रूप से tio.run पर नहीं चलता है, क्योंकि हीप स्पेस चलता है। हालांकि, यह 9 अंकों के कीपैड के लिए ठीक से काम करता है, और अधिक रैम के साथ ठीक चलना चाहिए।

डेनिस की बदौलत 2 बाइट्स बचाए


0

बैश , 113 99 बाइट्स

p()(r $1 0 $[10-$1])
r()for i in `seq $2 $3`;{ (($1>1))&&r $[$1-1] $[i+1] $[$3+1] $4$i||echo $4$i;}

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


r 0काम नहीं करता है।
एशप्लेनर

rपुनरावर्ती कार्य है: यह केवल 1 पैरामीटर के साथ लॉन्च करने के लिए नहीं है। p 0व्यवहार प्रश्न में अनिर्दिष्ट है।
ग्लेन जैकमैन

0

जावास्क्रिप्ट (फ़ायरफ़ॉक्स 30-57), 67 बाइट्स

n=>n?[for(x of f(n-1))for(y of Array(x?+x[0]:10).keys())y+x]:['']

मेरे रेटिना उत्तर का पोर्ट, लेकिन इसके लिए n=0भी काम करता है (खाली स्ट्रिंग की सूची लौटाता है, जैसा कि एक खाली सूची से अलग है n>10)।


0

चारकोल , 21 बाइट्स

⊞υωFχ≔⁺υEυ⁺κIιυΦυ⁼θLι

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। स्पष्टीकरण:

⊞υω

पूर्वनिर्धारित सूची में खाली स्ट्रिंग पुश करें।

Fχ

प्रत्येक अंक पर लूप।

Eυ⁺κIι

सूची में प्रत्येक स्ट्रिंग के लिए अंक जोड़ें।

≔⁺υ...υ

परिणाम को मूल सूची में जोड़ें।

Φυ⁼θLι

सभी स्ट्रिंग को अंकों की सही संख्या के साथ प्रिंट करें।



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