प्रोफेसर का आधार बिल्डिंग नंबर कनवर्टर


12

अखरोट के गणित के प्रोफेसर अपने सभी शोधों को एक प्रणाली का उपयोग करके सांकेतिक शब्दों में बदलना चाहते हैं ताकि वे अपने प्रतिद्वंद्वियों को भी पछाड़ सकें!

इसके अंत में प्रोफेसर ने न केवल अपने द्वारा लिखी गई संख्या के आधार को बदलने का निर्णय लिया है, बल्कि उस संख्या में हर एक अंक है, जिसके अनुसार अंक स्वयं को ढूँढता है (दाईं ओर से गिनती, 1 से शुरू)। उदाहरण के लिए:

संख्या 0 में एक अंक है, इसलिए इसे आधार 1: 0 में दर्शाया गया है

नंबर 1 में बेस दस में एक अंक होगा, लेकिन हमारे प्रोफेसर के सिस्टम में यह मान्य नहीं है। पहला स्थान केवल आधार 1 अंकों के लिए आरक्षित है! इसका मतलब यह है कि इसे दूसरी जगह पर ले जाना चाहिए जहां आधार 2 की अनुमति है: 10

नंबर 2 के लिए कम से कम आधार 3 लिखा होना आवश्यक है: 100

लेकिन अब अंक 3 को दूसरे स्थान पर अंक बदलकर: 110 लिखा जा सकता है

और 4 के रूप में: 200

इस विचार को प्राप्त करने में आपकी सहायता के लिए कुछ और उदाहरण हैं:

5: 210

6: 1000

7: 1010

8: 1100

9: 1110

10: 1200

11: 1210

12: 2000

13: 2010

14: 2100

15: 2110

16: 2200

17: 2210

18: 3000

इस प्रणाली का उपयोग करते हुए प्रोफेसर के नोट्स का किसी के लिए कोई मतलब नहीं होगा, लेकिन उन्हें और वे अंततः दुनिया को संभाल सकते हैं !!!! रात को अच्छी नींद लें।

बेशक एन्कोडिंग विधि यथासंभव अस्पष्ट होनी चाहिए।


आपका कार्य 10 कोड स्निपेट लिखना है, प्रत्येक आधार 10 अंकों में से एक का प्रतिनिधित्व करता है

0 1 2 3 4 5 6 7 8 9

जब संख्या को परिवर्तित करने के क्रम में संयुक्त किया जाता है तो प्रोफेसर की शैतानी संख्या प्रणाली में लिखित संख्या का उत्पादन होगा (आउटपुट विधि आपकी पसंद की हो सकती है लेकिन केवल 0-9 अंकों का उपयोग करके एक मानव पठनीय संख्या होनी चाहिए)

उदाहरण के लिए अगर मेरे स्निपेट हैं:

0 = MONKEY 1 = EXAMPLE, 2 = CODE, 3 = GOLF और 9 = TEST

फिर

19 = परीक्षा -> 3010

20 = CODEMONKEY -> 3100

21 = CODEEXAMPLE -> 3110

22 = CODECODE -> 3200

23 = CODEGOLF -> 3210

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

ADDENDUM: इससे पहले कि कोई भी शुरुआत करे कि क्या आधार 1 में 0 का सही प्रतिनिधित्व है, मैं आपको याद दिलाना चाहूंगा कि यह प्रोफेसर अखरोट है। इसके साथ जियो।


1
नोट: प्रोफेसर की प्रणाली को फैक्टोरियल नंबर सिस्टम के रूप में भी जाना जाता है
ETHproductions


@ETHproductions मैंने कभी नहीं कहा कि प्रोफेसर की एन्कोडिंग अच्छी थी
जो ब्लोग्स

@KritiiLithos इसके लिए धन्यवाद! मैं पुष्टि के रूप में उपयोग करने के लिए देख रहा था।
जो ब्लॉग्स 15

4
PPCG में आपका स्वागत है, वैसे :-)
ETHproductions

जवाबों:


1

गणितज्ञ (आरईपीएल पर्यावरण), 858 कुल बाइट्स

यहाँ अंक 9 के लिए 86-बाइट कोड स्निपेट है:

1;ValueQ@a||(a=0;b=3);a=10a+9;b++;FromDigits[a~IntegerDigits~MixedRadix@Range[b,1,-1]]

8 के माध्यम से अंक 1 के लिए कोड स्निपेट समान हैं, सिवाय इसके कि 9 को उचित अंक से बदल दिया जाता है। अंक 0 के लिए कोड स्निपेट समान है, सिवाय इसके कि +9बस हटा दिया जाता है।

a~IntegerDigits~MixedRadix@Range[b,1,-1]की तथ्यात्मक-संख्या-प्रणाली अंकों की सूची की गणना करता है a, जब तक कि अंकों की संख्या के रूप bमें कम से कम बड़े; FromDigitsआउटपुट के प्रयोजनों के लिए अंकों की सूची को एक नियमित आधार -10 पूर्णांक में परिवर्तित करता है। (यदि सूची तत्वों में से कोई भी 9 से अधिक है, तो कुछ मजेदार होता है।)

मैथेमेटिका के REPL वातावरण में, उत्पादन को दबाने के लिए अर्धविराम के साथ संगणना को समाप्त किया जा सकता है; इसलिए अर्धविराम से अलग श्रृंखला में केवल अंतिम आउटपुट प्रदर्शित किया जाएगा। हम aस्निपेट द्वारा निर्दिष्ट पूर्णांक को पुनरावर्ती रूप से परिभाषित करते हैं , और इसके bलिए आवश्यक तथ्यात्मक-प्रणाली अंकों की संख्या पर भी एक सीमा होती है। ValueQ@a||(a=0;b=3)यदि वे अनइंस्टाल्यूटेड हैं (यानी, पहले स्निपेट में) तो कमांड इन वैरिएबल्स को इनिशियलाइज़ करती है; फिर a=10a+9;b++पुनरावृत्ति किया जाता है। अंत में, प्रारंभिक 1;एक साथ स्निपेट्स को चमकाने के लिए है: यह मध्यवर्ती संगणना को 1 से गुणा करता है (जिसे हम कभी भी नहीं देखते हैं)।


मैं अर्धविराम का दुरुपयोग करता हूं।
जो ब्लॉग्स

0

गोरबी, 790 810 980

यहाँ एक दूसरा प्रयास है, इस तथ्य पर भरोसा करते हुए कि, मूल रूप से किसी भी शेल में, एक नई लाइन ("\ n") के बिना कैरिज रिटर्न ("\ r") प्रिंट करना, पहले से मुद्रित लाइन को अधिलेखित कर देगा, अंततः यह सुनिश्चित करना कि केवल अंतिम बिट मुद्रित (अर्थात अंतिम परिणाम) दिखाया गया है।

इसे एक शेल में चलाया जाना चाहिए, जैसे ruby name_of_file.rb

यह अप्रतिबंधित लंबाई की सकारात्मक संख्या के लिए काम करता है।

कोड नीचे स्निपेट की दस प्रतियां हैं, X(शीर्ष पर) 0-9 से अंकों के साथ प्रति स्निपेट में बदल दिया गया है।

->*t{n,d,o="X#{t}".toi,0,''
dw{n,r=n.dm d+=1;o.pr r.ts;n>0}
$>.fu
pr"\r",o
o}

यह है, स्निपेट का प्रतिनिधित्व (उदाहरण के लिए) 8 जैसा दिखेगा:

->*t{n,d,o="8#{t}".toi,0,''
dw{n,r=n.dm d+=1;o.pr r.ts;n>0}
$>.fu
pr"\r",o
o}

चुनौती में कहा गया है कि स्निपेट्स को कई अंकों की संख्या का प्रतिनिधित्व करने के लिए "संयुक्त" होने की आवश्यकता है, इसलिए, किसी अंक को एक संख्या में जोड़ने के लिए, बस इसे संख्या के अंत में वर्ग कोष्ठक में रखें। इस प्रकार, संख्या 103 (दशमलव में) होगी:

->*t{n,d,o="1#{t}".toi,0,''
dw{n,r=n.dm d+=1;o.pr r.ts;n>0}
$>.fu
pr"\r",o
o}[->*t{n,d,o="0#{t}".toi,0,''
dw{n,r=n.dm d+=1;o.pr r.ts;n>0}
$>.fu
pr"\r",o
o}[->*t{n,d,o="8#{t}".toi,0,''
dw{n,r=n.dm d+=1;o.pr r.ts;n>0}
$>.fu
pr"\r",o
o}[]]]

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