उल्टा और वर्ग


19

इस चुनौती में आप एक जिज्ञासु अनुक्रम से संख्याओं की गणना करेंगे।

आपका इनपुट एकल दशमलव nonnegative पूर्णांक है। इस पूर्णांक में बिट्स को उल्टा करें और फिर आवश्यक आउटपुट प्राप्त करने के लिए संख्या को वर्ग करें।

बिट्स को उलटते समय आपको इनपुट में किसी भी अग्रणी शून्य का उपयोग नहीं करना चाहिए। उदाहरण के लिए:

26 (base 10) = 11010 (base 2) -> 01011 (base 2) = 11 -> 11*11 = 121

इस क्रम के पहले 25 इनपुट / आउटपुट:

0: 0
1: 1
2: 1
3: 9
4: 1
5: 25
6: 9
7: 49
8: 1
9: 81
10: 25
11: 169
12: 9
13: 121
14: 49
15: 225
16: 1
17: 289
18: 81
19: 625
20: 25
21: 441
22: 169
23: 841
24: 9

आपका समाधान मनमाने ढंग से पूर्णांकों के आकार के लिए काम करना चाहिए। यदि आपकी भाषा में उन का उपयोग करने का एक सुविधाजनक अंतर्निहित तरीका नहीं है, तो अपने उत्तर को लागू करें जैसे कि वह करता है। यदि आपका उत्तर बड़ी संख्या में टूटता है, तो आपको माफ कर दिया जाता है। हालाँकि, ऐसे ट्रिक्स / सीमा का उपयोग न करें जो केवल एक सीमित डोमेन (जैसे लुकअप टेबल) के लिए ही काम करें।


आपका स्कोर स्रोत कोड के बाइट्स की संख्या है।

-50% बोनस अगर आप बाइनरी से / को नंबर कभी नहीं बदलते हैं। यह बिल्डिंस तक सीमित नहीं है, यदि आप संख्या में बिट बिट द्वारा (या तो स्थानांतरण या मास्किंग या किसी अन्य विधि से) करते हैं, तो यह रूपांतरण के रूप में भी गिना जाएगा। मुझे नहीं पता कि यह वास्तव में संभव है, लेकिन यह अनुक्रम में एक पैटर्न को प्रदर्शित करने के लिए एक प्रोत्साहन देता है।

सबसे छोटा स्कोर जीतता है।



1
यदि कोड एक विधि को कॉल करता है जिसके परिणामस्वरूप चरित्र स्ट्रिंग होता है जो बिट्स का प्रतिनिधित्व करता है, तो क्या यह बोनस के लिए योग्य है?
ब्रैड गिल्बर्ट b2gills

2
@ ब्रैडगिल्बर्ब २गिल्स नं।

मुझे लगता है कि बिट्स निकालने के लिए गणित का उपयोग करना द्विआधारी रूपांतरण के रूप में भी गिना जाता है?
२०

जवाबों:


5

बराबर , 5 बाइट्स

✶Σ⌐Σ²

यह बाइनरी-रिवर्स-बाइनरी-स्क्वायर है।



@ C @O'Bʀɪᴇɴ कि बाइट काउंटर UTF-8 मान लेता है। मेरा मानना ​​है कि मॉरिस अपने बाइट्स की गणना करने के लिए कुछ एन्कोडिंग का उपयोग कर रहा है जो यूटीएफ -8 नहीं है, लेकिन उसने इस एन्कोडिंग को निर्दिष्ट नहीं किया।
orlp

Par अपने ही अजीब एन्कोडिंग का उपयोग करता है। इसका कैनोनिकल प्रतिनिधित्व <256 यूनिकोड वर्णों का एक निश्चित सबसेट है। मुझे यकीन नहीं है कि अगर इसका कोई नाम है; मुझे इंतजार करना चाहिए @Ypnypn को चाइम करने के लिए।
लिन

ओह मैं समझा। @orlp
कॉनर ओ'ब्रायन

संभवतः इसकी अपनी SBCS है?
HyperNeutrino

19

गणितज्ञ, 42 21 बाइट्स

स्कोर को आधा करने के लिए alephalpha का धन्यवाद।

#~IntegerReverse~2^2&

मैथेमेटिका में मैंने जो वास्तविक कारण किया, वह इसलिए था क्योंकि मैं एक कथानक को देखना चाहता था ... यह निश्चित रूप से मजाकिया लगता है:

यहाँ छवि विवरण दर्ज करें


11
लेकिन मुझे स्कोर पसंद है! XD
कॉनर ओ'ब्रायन 18

1
इस उत्तर में कम से कम बाइट्स वाले उत्तर की तुलना में अधिक वोट क्यों हैं? o_O
सद्रुस

27
@Seadrus आप जानते हैं कि वे क्या कहते हैं। एक तस्वीर 7 बाइट्स के लायक है।
मार्टिन एंडर 20

5
इसलिए आपका स्कोर ४२ + 49 = ४ ९ बाइट्स है: पी
सद्रुस

3
क्षमा करें, @ CᴏɴᴏʀO'Bʀɪᴇɴ।
मार्टिन एंडर 10

8

मिंकोलंग 0.14 , 43 बाइट्स

यह प्रेरणा देने के लिए मेगो को धन्यवाद।

n1{d1`,2$3*&$z2zd2%-2l$Md1%-;z2%*z2:{+}2;N.

यहां कोड का परीक्षण करें और यहां सभी परीक्षण मामलों की जांच करें

व्याख्या

यह इस पुनरावृत्ति संबंध का उपयोग करता है:

a(0) = 0
a(1) = 1
a(2n) = a(n)
a(2n+1) = a(n) + 2^(floor(log_2(n))+1)

यदि nइनपुट है, तो a(n)इसके बाइनरी अनुक्रम को फ़्लिप करने के बाद परिणामी संख्या है। 0 और 1 स्पष्ट हैं। इसके लिए a(2n) = a(n), विचार करें कि x0(जहां xबाइनरी अंकों का कोई अनुक्रम है) फ़्लिप किया गया 0x, जो कि जैसा है वैसा ही है x। के लिए a(2n+1), तर्क थोड़ा और अधिक जटिल है। x1फ़्लिप है 1x, जो x + 2^kकुछ के लिए बराबर है k। यह kअंकों की संख्या से एक अधिक है x, जो कि है floor(log_2(n))+1। पूर्ण सूत्र इस प्रकार है, सिवाय इसके कि यह थोड़ा संशोधित है। यह वही है जो मैं वास्तव में कोड:

a(0) = 0
a(1) = 1
a(n) = a(n//2) + (n%2) * 2^(floor(log_2(n - n%2)))

जैसा कि मैंगो और मैंने चैट में काम किया है floor(n/2) = (n - n%2)/2। इस प्रकार, log_2(floor(n/2))+1 = log_2(n - n%2)। इसके अलावा, (n%2)एक अभिव्यक्ति में दोनों विषम और यहां तक ​​कि हिस्सों को गुणा करके ।

अंत में, किसी भी आगे की हलचल के बिना, यहां कोड बताया गया है।

n                                              Take number from input
 1{                                            Start recursion that takes only one element
   d1`,                                        1 if top of stack 0 or 1, 0 otherwise
       2$3*                                    26
           &                                   Jump if top of stack is not zero
            $z                                 Store top of stack in register (z)

               zd2%-                           n - n%2
                    2l$M                       log_2(n - n%2)
                        d1%-                   floor(log_2(n - n%2))
              2             ;                  2^floor(log_2(n - n%2))
                             z2%               n%2
                                *              Multiply
                                 z2:           n//2
                                    {          Recurse
                                     +         Add
                                      }        Return
                                       2;N.    Square it, output as number, and stop.

1
मुझे लगता है कि पुनरावृत्ति केवल व्यक्तिगत बिट्स पर पुनरावृत्ति का सुधार है।
मार्टिन एंडर

3
मुझे डर है कि यह गिनती नहीं है। जब भी आप देखते हैं 2nऔर 2n+1एक पुनरावृत्ति संबंध में आप तुरंत इसे बिट्स पर पाशन के रूप में सोचना चाहिए।
orlp

1
@orlp: ठीक है, कि एक bummer है। अब मैं आश्वस्त हूं कि आपका बोनस असंभव है।
एल'एंडिया स्ट्रोमैन

@ El'endiaStarman मुझे लगभग मिल गया है, मुझे लगता है।
कॉनर ओ'ब्रायन

8

Japt , 29 28 11 7 बाइट्स

(आप प्रोग्राम को 7-बाइट IEC_8859-1-एन्कोडेड फ़ाइल के रूप में सहेज सकते हैं, फिर इंटरप्रेटर पर अपलोड कर सकते हैं ।)

Japt छोटा है जावास्क्रिप्ट द्वारा किए गए ETHproductions

¢w n2 ²

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

स्पष्टीकरण:

  1. ¢शॉर्टकट है Us2, जो करने के लिए संकलित करता है U.s(2)Uइनपुट (निहित) है, .s(2)जिसे एक संख्या द्वारा बुलाया जाता है, आह्वान करता है .toString(2)(बाइनरी में कनवर्ट करता है, स्ट्रिंग के रूप में पर्स)।

  2. wसंकलन करता है .w(), जो स्ट्रिंग को उलट देता है ( .split('').reverse().join(''))।

  3. n2के रूप में काम करता है parseInt(<number>,2), यानी बाइनरी को दशमलव में कनवर्ट करता है।

  4. ²आह्वान Math.pow(<number>,2), यानी संख्या वर्ग।


1
वहाँ एक स्ट्रिंग फ़ंक्शन है n, ताकि आप कर सकें Us2 a w a n2 p2। हालांकि अच्छी नौकरी!
ETHproductions

1
इसके अलावा, wस्ट्रिंग्स पर भी वैसा ही काम करता है , जैसा कि एरेज़ पर होता है, इसलिए आपको दो aएस की जरूरत नहीं है :)
ETHproductions

1
एक आखिरी चीज़: Us2 = ¢, और p2= ², इसे 7 बाइट्स तक लाना:¢w n2 ²
ETHproductions

3
ऑनलाइन दुभाषिया अब IEC_8859-1 इनकोडिंग फ़ाइलें स्वीकार करता है। (हालांकि मुझे यकीन नहीं है कि UTF-8 और UTF-16 कैसे करें ...)
ETHproductions

2
@ETHproductions - अब मैं इसे +1 कर सकता हूं
डिजिटल ट्रॉमा

5

पायथन, 32 बाइट्स

lambda x:int(bin(x)[:1:-1],2)**2

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

कोड बहुत सीधा है:, bin(6)उदाहरण के लिए, देता है 0b110, 6. का द्विआधारी प्रतिनिधित्व [:1:-1]स्ट्रिंग को पीछे हटाता है और हटाता है 0bintस्ट्रिंग को बाइनरी से पूर्णांक में कनवर्ट करता है, और **2इसे वर्ग करता है।


5

जोल्फ , 7 बाइट्स

बस इसे चलाओ। पृष्ठ पर इनपुट काम नहीं करता है।

^C_Bj22

व्याख्या

^C_Bj22
    j   numeric input
   B    convert to binary (str)
  _     reverse
 C   2  parse as binary integer to base 10
^     2 square
        implicit output

मैंने Qकमांड जोड़ा , जो यह 6 बाइट्स बनाता है:QC_Bj2


4
7 से पार किया अभी भी एक 7 की तरह लग रहा है
एक स्पेगेटो

2
@quartata नहीं के रूप में एक को काटकर 4. बुरा के रूप में
orlp

4

TeaScript , 9 बाइट्स 11

TeaScript गोल्फ के लिए जावास्क्रिप्ट है

®x÷v¤)**2

एक बार जब मैं अपने कंप्यूटर पर वापस आ जाऊंगा तो गोल्फ करेगा

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

सभी का परीक्षण करें


क्या दुभाषिया UTF8 के अलावा किसी भी एन्कोडिंग को समझता है? UTF8 एन्कोडिंग का उपयोग करना, मुझे लगता है कि आपकी प्रविष्टि 12 बाइट्स लंबी है
डिजिटल ट्रामा

4

गंभीरता से , 8 7 बाइट्स

2;,¡R¿ª

इस तरह की चुनौतियाँ गंभीर रूप से सही हैं :)

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

स्पष्टीकरण:

2;,¡    get a string representing the (decimal) input in binary, with a 2 on the bottom of the stack
R      reverse the string
¿    convert binary string to decimal int (using that extra 2 from earlier)
ª      square it

जॉल्फ से मेल खाती अच्छी नौकरी!
कॉनर ओ'ब्रायन

+1 आपके दुभाषिया को CP437 एन्कोडिंग स्वीकार करने के लिए (या कम से कम हेक्स प्रतिनिधित्व)
डिजिटल ट्रामा

4

जे, 10 9 बाइट्स

2^~|.&.#:

यह एक मौसमी, मौदिक क्रिया है। इसे ऑनलाइन आज़माएं!

1 बाइट को बंद करने के लिए @randomra को धन्यवाद!

यह काम किस प्रकार करता है

2^~|.&.#:  Right argument: y

       #:  Convert y to binary.
   |.      Reverse the digits.
     &.    Dual; apply the inverse of #:, i.e., convert back to integer.
 ^~        Apply power (^) with reversed argument order (~)...
2          to 2 and the previous result.

लिंक काम नहीं करता है, मुझे एक Google पृष्ठ पर 404 त्रुटि मिलती है जो कहती है "अनुरोधित URL /host/0B3cbLoy-_9Dbb0NaSk9MRGE5UEU/index.html इस सर्वर पर नहीं मिला था। यह सब हम जानते हैं।"
बिजन


2

जावास्क्रिप्ट, 64 63 56 53 बाइट्स

n=>parseInt([...n.toString(2)].reverse().join``,2)**2

मुझे लगता है कि मैं अतिरिक्त लंबा हूं, लेकिन हे, मैं यह कर सकता हूं: पी

डेमो


इसके बजाय parseInt(आप कर सकते हैं+("0b"+
Downgoat

@Downgoat hm, यह सही परिणाम नहीं देता है।
निकेल

[...n.toString(2)]और.join``
कॉनर ओ'ब्रायन

1
यहां तक ​​कि छोटे w / ES7 (49 बाइट्स) n=>+("0b"+[...n.toString(2)].reverse().join``)**2:। अभी तक किसी भी ब्राउज़र में काम नहीं करता है
डाउनग्रेड

1
@ C @O'Bʀɪᴇɴ धन्यवाद, यह कुछ बाइट्स बचाता है।
निकेल

2

पर्ल 6 , 21 बाइट्स

{:2(.base(2).flip)²}

उदाहरण का उपयोग:

say {:2(.base(2).flip)²}(26); # 121

say (0..24).map: {:2(.base(2).flip)²};
# (0 1 1 9 1 25 9 49 1 81 25 169 9 121 49 225 1 289 81 625 25 441 169 841 9)

my &code = {:2(.base(2).flip)²};
say code 3; # 9

say chars code 10¹⁰⁰; # 140



1

पायथ - 9 बाइट्स

सीधा-साधा रूपांतरण। मैंने वास्तव में 2 को एक var को सौंपा है जो बहुत अजीब है।

^i_jQK2KK

टेस्ट सूट


1

अजगर, 9 बाइट्स

^i_.BQ2 2

यह पायथन वन के समान एक बहुत ही सरल pyth आधारित उत्तर है


1

S, 12 चार्ट / 21 बाइट्स

⦅`ᶀ`+ᴙ(ïß2)²

Try it here (Firefox only).

गैर-जवाबदेह उत्तर, 9 वर्ण / 18 बाइट

⦅Յ+ᴙ(ïⓑ)²

Try it here (Firefox only).


1
इस बाइट काउंटर के माध्यम से , 15 बाइट्स देता है (दूसरे एन्कोडिंग का उपयोग करता है)।
निकेल

मैं UTF-8 का उपयोग कर ग्रेड (जब तक मुझे काम करने के लिए खान एन्कोडिंग मिल सकती है)।
मामा फन रोल

... भाषा का नाम ... बक्से है?
corsiKa

यह डबलिनट्रैक में ESMin है। यूनिकोड वर्ण पूरी तरह से समर्थित नहीं हैं।
मामा फन रोल


1

टीआई-बेसिक (टीआई -84 प्लस सीई), 42 बाइट्स

Prompt X
0→S
While X
2S→S
If X/2≠int(X/2
S+1→S
End
S2
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.