अपवित्र संख्या


11

यह चुनौती दी अत्यधिक क्या @Mego उसके साथ बनाया से प्रेरित है पवित्र और Holier नंबर, उसे और उसके मजाक करने के लिए धन्यवाद के बहुत सारे।

पवित्र संख्याएं केवल छेद वाले अंकों से बनी संख्याएं हैं , जो हैं:

04689

कम से कम एक अपवित्र अंक वाले अंक को अपवित्र माना जाता है। अपवित्र अंक परिभाषा से बुरे हैं, लेकिन पवित्र अंकों के करीब होने से उन्हें तटस्थ होने में मदद मिलती है। इसलिए, वे जितने नज़दीक होते हैं, उतना कम अपवित्र (1 आसन्न होने पर)।

किसी संख्या की अपवित्रता उसके अंकों की अपवित्रता का योग है, केवल एक अपवित्र संख्या से बना एक संख्या में एक अनहोनी है।

Number            :8 5 5 8 7
Digital Unholiness:0+1+1+0+1
Total Unholiness  :3

Number            :0 1 7 5 5 2 8 5 7 
Digital Unholiness:0+1+2+3+2+1+0+1+2
Total Unholiness  :12

Number            :1 5 7 3 2 1
Digital Unholiness:∞+∞+∞+∞+∞+∞
Total Unholiness  :∞

Number            :0 4 6 8 9
Digital Unholiness:0+0+0+0+0
Total Unholiness  :0

आपका कार्य

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

असीम अपवित्रता के मामले में, आप तीन आउटपुट के बीच चुन सकते हैं

  • चरित्र (3 बाइट्स)
  • कम से कम 1 गैर-शून्य अंक वाले अनंत आउटपुट, लेकिन केवल अंक।
  • एक निर्मित Infinityमूल्य।

यह कोड-गोल्फ है, इसलिए बाइट जीत में सबसे छोटा कोड, शुभकामनाएं!


क्या एक निर्मित Infinityमूल्य कानूनी लौटा रहा है ?
नील

1
@ मैं इसे अनुमति दूंगा, क्योंकि मैंने इसके बारे में सोचा भी नहीं था, अच्छी बात है।
कटेंको

आपके कुछ उदाहरण इनपुट एक प्रमुख शून्य से शुरू होते हैं; क्या यह इरादा है कि हम अपने कार्य को इनपुट के साथ लिख सकते हैं "एक सकारात्मक पूर्णांक" केवल अगर हमारी पसंद की भाषा स्वचालित रूप से अग्रणी शून्य को नहीं गिराएगी? कई भाषाओं को इस कारण से स्ट्रिंग इनपुट लेने के लिए मजबूर किया जाएगा।
एक सीमन्स

@ASimmons यही कारण है कि मैंने (थोड़ी देर पहले) इनपुट को संशोधित किया है ताकि यह "स्ट्रिंग केवल अंकों से बना" हो। इसके अलावा, महत्वपूर्ण बिंदु यह नहीं है कि यह 0एक पवित्र अंक है, मैं गैर-अग्रणी 0 नंबरों के आधार पर उत्तर की अनुमति के अनुसार पोस्ट को संशोधित करूंगा।
कटेंको

@katenkyo हाँ, मैंने देखा कि आप एक स्ट्रिंग के रूप में इनपुट कर सकते हैं, लेकिन पूर्णांक के रूप में इसे लेना कठिन लग रहा था। मैं ओपी को आपके संपादन को मंजूरी देता हूं।
एक सीमन्स

जवाबों:


2

MATL , 25 24 बाइट्स

7Zq1hVmt~f!wf-|X<st~?xYY

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

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

व्याख्या

7         % number literal                                 
Zq        % prime numbers up to a 7: [2 3 5 7]
1         % number literal                        
h         % horizontal concatenation                       
V         % convert numbers to string: '2  3  5  7  1'
m         % take input implicitly. Determine which digits are 1,2,3,5,7
t         % duplicate
~         % element-wise negate: which digits are 4,6,8,9,0
f         % indices of occurrences of digits 4,6,8,9,0
!         % transpose into column array
w         % swap elements in stack           
f         % indices of occurrences of digits 1,2,3,5,7  
-         % element-wise subtraction with broadcast. Gives 2D array
|         % element-wise absolute value                          
X<        % minimum of each column
s         % sum of elements of array
t         % duplicate                       
~         % element-wise negate
?         % if all elements are true                            
  x       %   delete                                         
  YY      %   push infinity                                       
          % (implicit) end if
          % (implicit) convert to string and display  

4

पायथन (3), 137 131 बाइट्स

def f(s):
 l=range(len(s))
 r=[min(i)for i in zip(*[[abs(j-i)for j in l]for i in l if s[i]in'46890'])]
 return sum(r)if r else'∞'

परिणाम

>>> [f(i) for i in ['85587', '012321857', '157321', '04689']]
[3, 12, '∞', 0]

मुझे 131 बाइट्स की गिनती मिलती है , क्या मुझे कुछ याद आ रहा है? इसके अलावा, महान जवाब :)।
काटनेंको

@Katenkyo मैं हमेशा अपने संपादक को फ़ाइल के अंत में en खाली लाइन जोड़ना भूल गया
Erwan

2

पायथ, 31 29 27 25 बाइट्स

smhS.e?}b"04689"akd.n4zUz

इसे ऑनलाइन आज़माएँ: प्रदर्शन या टेस्ट सूट

प्रत्येक अंक के लिए मैं प्रत्येक संख्या के लिए दूरी की गणना करता हूं। एक दूरी अनंत है, अगर दूसरा अंक पवित्र नहीं है। इन सूचियों से मैं न्यूनतम दूरी तय करता हूं और इसे पूरा करता हूं।

स्पष्टीकरण:

smhS.e?}b"04689"akd.n4zUz  implicit: z = input string of numbers
 m                     Uz  map each d in [0, 1, ..., len(z)-1] to:
    .e                z      map each k (index), b (value) of b to:
                akd            absolute difference between k and d

      ?}b"04689"               if b in "04689" else
                   .n4         infinity
   S                           sort
  h                            take the first element (=minimum)
s                              print the sum

1

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

s=>[...s].map(n=>/[12357]/.test(n)?++u:u=0,u=1/0).reverse().map(n=>r+=n?n<++u?n:u:u=0,r=0)&&r

यदि Infinityकोई कानूनी अनन्तता नहीं है, तो 13 बाइट्स जोड़ें ==1/0?'∞':r

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