बाइनरी Sierpinski त्रिकोण अनुक्रम की गणना करें


23

द्विआधारी Sierpinski त्रिभुज अनुक्रम संख्याओं का अनुक्रम है, जिसका द्विआधारी प्रतिनिधित्व बाइनरी Sierpinski त्रिभुज की पंक्तियों को देता है, जो कि 1 से शुरू होकर शून्य की अनंत पंक्ति में दिया जाता है, फिर बार-बार उन बिट्स के xor के साथ बिट्स की प्रत्येक जोड़ी को प्रतिस्थापित करना। , इस तरह:

f(0)=      1                    =1
f(1)=     1 1                   =3
f(2)=    1 0 1                  =5
f(3)=   1 1 1 1                 =15
f(4)=  1 0 0 0 1                =17

अधिक अंक OEIS: https://oeis.org/A001317 पर दिए गए हैं

इनपुट: आपके द्वारा पसंद किए गए किसी भी प्रारूप में एक गैर-नकारात्मक पूर्णांक n। (सभी 30 के लिए काम करना चाहिए।)

आउटपुट: दशमलव संख्या के रूप में अनुक्रम का nth शब्द (0-अनुक्रमित)।

यह इसलिए बाइट्स में सबसे छोटा उत्तर देने का प्रयास करें, जिसमें आपकी भाषा सक्षम हो। कोई उत्तर स्वीकार नहीं किया जाएगा। मानक कमियां लागू होती हैं (उदाहरण के लिए कोई हार्ड-कोडिंग अनुक्रम नहीं), सिवाय इसके कि आप इस चुनौती को पोस्ट करने के बाद बनाई / संशोधित की गई भाषा का उपयोग कर सकते हैं। (किसी अन्य समाधान को उस भाषा में पोस्ट करने से बचें जो पहले से ही उपयोग की जा चुकी है जब तक कि आपका समाधान कम न हो।)

लीडरबोर्ड

इस पोस्ट के निचले हिस्से में स्टैक स्निपेट उत्तर से सूची बनाता है) क) प्रति भाषा में सबसे छोटे समाधान की सूची के रूप में और बी) एक समग्र लीडरबोर्ड के रूप में।

यह सुनिश्चित करने के लिए कि आपका उत्तर दिख रहा है, कृपया अपना उत्तर शीर्षक मार्कडाउन टेम्पलेट का उपयोग करके शीर्षक के साथ शुरू करें:

## Language Name, N bytes

Nआपके प्रस्तुत करने का आकार कहां है। यदि आप अपने स्कोर में सुधार करते हैं, तो आप पुराने अंकों को हेडलाइन में रख सकते हैं , उनके माध्यम से स्ट्राइक करके। उदाहरण के लिए:

## Ruby, <s>104</s> <s>101</s> 96 bytes

यदि आप अपने हेडर में कई संख्याओं को शामिल करना चाहते हैं (जैसे कि आपका स्कोर दो फ़ाइलों का योग है या आप दुभाषिया ध्वज दंड को अलग से सूचीबद्ध करना चाहते हैं), तो सुनिश्चित करें कि हेडर में वास्तविक अंक अंतिम संख्या है:

## Perl, 43 + 2 (-p flag) = 45 bytes

आप भाषा के नाम को एक लिंक भी बना सकते हैं जो बाद में स्निपेट में दिखाई देगा:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes


8
मैं का एक बड़ा प्रशंसक नहीं हूँ चाहिए नहीं उत्पादन किसी भी n के लिए एक गलत जवाब । यह मूलतः बलों भाषाओं कि डिफ़ॉल्ट रूप से मनमाना परिशुद्धता पूर्णांकों का उपयोग नहीं करते, तो इनपुट, इतने छोटे है ... जांच करने के लिए
डेनिस

कृपया स्पष्ट करें कि क्या नियमों को सही ढंग से समझा गया है ( यहां और यहां टिप्पणियां देखें ) और यदि राउंडेड आउटपुट (उदाहरण के लिए, इनपुट 33 के लिए 1.288490189e10) गलत के रूप में गिना जाता है
डेनिस

"सभी n के लिए 30 तक काम करना चाहिए, और किसी भी n के लिए गलत उत्तर का उत्पादन नहीं करना चाहिए।" । यह स्व-विरोधाभासी है - निश्चित रूप से "गलत उत्तर नहीं देना चाहिए" "काम करना चाहिए" के समान है ???
डिजिटल ट्रामा

5
इनपुट सत्यापन के अनुचित और आत्मा-कुचलने वाले बोझ के लिए लोकप्रिय विरोध के कारण, इस आवश्यकता को हटा दिया गया है। आप बड़े n के लिए जो भी कचरा चाहते हैं उसका उत्पादन कर सकते हैं। का आनंद लें!
क्विंटोपिया

2
यह कहने के बजाय कि आउटपुट गलत नहीं होना चाहिए, मैं सिर्फ यह कहने की सिफारिश करूंगा कि सबमिशन को इनपुट का सबसे बड़ा समर्थन करना होगा n, जिसके लिए कुछ भी नहीं होगा।
एलेक्स ए।

जवाबों:


14

05AB1E , 5 4 बाइट्स

मैं गर्व से आपके सामने उपस्थित हूं, 05AB1E। हालांकि यह बहुत कम है, यह लंबी चुनौतियों पर बहुत बुरा है।

1 बाइट शेविंग के लिए ETHproductions का धन्यवाद :)

$Fx^

स्पष्टीकरण:

$      # Pushes 1 and input
 F     # Pops x, creates a for-loop in range(0, x)
  x    # Pops x, pushes x and 2x
   ^   # Bitwise XOR on the last two elements
       # Implicit, ends the for-loop
       # Implicit, nothing has printed so the last element is printed automatically

तुम्हें पता है, एक कस्टम भाषा में कई कार्यक्रमों के एक बाइट गोल्फ के लिए एक अच्छा तरीका है एक अनुगामी }स्वचालित रूप से डाला जा बनाने के लिए है । तब यह 4 बाइट होगा। :)
ETHproductions 15

1
@ETHproductions एक मिनट प्रतीक्षा करें, जो पहले से ही लागू हो गया है :)। 1 बाइट हाहा शेविंग के लिए धन्यवाद।
अदनान

2
इस कोड में एक बग है। मुझे कैसे पता चलेगा? यह डेनिस की पिटाई है।
आर्कटिकस

2
@Ampora न केवल डेनिस की पिटाई कर रहा है, यह डेनिस की कस्टम गोल्फ भाषा को हरा रहा है ;)
ETHproductions

@ अदनान वाह। तुम किसी चीज पर हो।
आर.के.


6

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

1Ḥ^$³¡

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

बाइनरी संस्करण जो जेली इंटरप्रेटर के इस संशोधन के साथ काम करता है, उसके पास xxd डंप है

0000000: 31 a8 5e 24 8b 80  1.^$..

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

1Ḥ^$³¡    Input: n

1         Set the left argument to 1.
 Ḥ        Multiple the left argument by two.
  ^       Hook; XOR it with its initial value.
   $      Create a monadic chain from the last two insructions.
    ³¡    Call the chain n times, updating the left argument after each call.

5

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

import Data.Bits
f n=iterate((2*)>>=xor)1!!n

में ((->) r)इकाई, (f >>= g) xके बराबर होती है g (f x) x


मुझे लगता है कि आप अंतिम पंक्ति(iterate((2*)>>=xor)1!!)
xnor

मैंने कोशिश की है, लेकिन यह खतरनाक मोनोमोर्फिस्म प्रतिबंध कारणों से काम नहीं करता है।
लिन

हालाँकि, यह एक कानूनी अभिव्यक्ति के रूप में लागू हो सकता है, क्योंकि मोनोमोर्फिज्म प्रतिबंध अभिव्यक्ति पर नहीं, बल्कि घोषणाओं पर लागू होता है। और अभिव्यक्ति को कानूनी जवाब माना जाता है, अगर मैं गलत नहीं हूँ।
गर्वित हेकलर

4

मतलाब, 45 बाइट्स

समाधान:

@(i)2.^[0:i]*diag(mod(fliplr(pascal(i+1)),2))

परीक्षा:

ans(10)
ans =
1285

स्पष्टीकरण: pascalपास्कल त्रिकोण का निर्माण करता है, लेकिन यह 1 से शुरू होता है, इसलिए इनपुट होना चाहिए i+1fliplrबाएं से दाएं सरणी फ़्लिप करती है। mod(_,2)विभाजन के बाद शेष रहता है 2. diagमुख्य विकर्ण को निकालता है। 2.^[0:i]सदिश को दशमलव में कनवर्ट करता है

मुझे ख़ुशी है, @flawr कि मुझे यहां मतलाब प्रतियोगी मिला :)


ऑक्टेव के साथ भी काम करने लगता है।
डेनिस

4

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

f=x=>x?(y=f(x-1))^y*2:1

OEIS पृष्ठ पर पहले सूत्र के आधार पर। यदि आपको 30 के इनपुट के लिए कोड को हमेशा के लिए समाप्त करने का मन नहीं है, तो हम एक बाइट को हटा सकते हैं:

f=x=>x?f(--x)^f(x)*2:1

यहाँ एक गैर-पुनरावर्ती संस्करण है, एक में forलूप का उपयोग कर eval: (32 बाइट्स)

x=>eval("for(a=1;x--;a^=a*2);a")

वर्तमान में लिखे गए नियम f(35)रिटर्न के बाद से इस उत्तर को अमान्य कर देते हैं 15। इसके अलावा, कांटा बम अलर्ट: मुझे क्रोमियम को बंद करने f(30)(मूल संशोधन) को चलाने से रोकने के लिए मजबूर करना पड़ा । : पी
डेनिस

1
@ डेनिस रुको, इसलिए अगर मैं किसी भी गलत मूल्य का उत्पादन नहीं कर सकता, तो मुझे क्या करना चाहिए जो 30 से अधिक इनपुट के साथ करना है?
ETHproductions

मुझे यकीन नहीं है (और मुझे उम्मीद है कि नियम बदल जाएगा ), लेकिन कुछ f=x=>x?(y=f(x-(x<31)))^y*2:1ऐसा काम करेगा।
डेनिस

@ डेनिस आह, असीम रूप से पुनरावृत्ति = कोई आउटपुट नहीं। जब मैं अपने कंप्यूटर पर वापस आऊंगा तो इसे ठीक कर दूंगा। मुझे उम्मीद है कि नियम भी बदल जाएगा।
ETHproductions

नियम को सवाल से हटा दिया गया है।
डेनिस

3

मतलाब, 77 70 बाइट्स

यह फ़ंक्शन पास्कल त्रिकोण की एन-वें पंक्ति की गणना बार-बार कनवल्शन के माध्यम से करता है [1,1](उर्फ द्विपद विस्तार या द्विपद के साथ बार-बार गुणा), और उससे संख्या की गणना करता है।

function r=c(n);k=1;for i=1:n;k=conv(k,[1,1]);end;r=2.^(0:n)*mod(k,2)'

3

रूबी, 26 बाइट्स

गुमनाम समारोह।

->n{a=1;n.times{a^=a*2};a}

यह पुनरावर्ती कार्य एक बाइट छोटा होता है, लेकिन जैसा कि इसे स्वयं को संदर्भित करने में सक्षम होने के लिए नामित होने की आवश्यकता है, यह एक बाइट को समाप्त करता है।

f=->n{n<1?1:(s=f[n-1])^s*2}

3

रूबी, 25 बाइट्स

->n{eval"n^=2*"*n+?1*n=1}

यहाँ अभी तक अन्य उत्तरों की तुलना में कम है। यह इस स्ट्रिंग का निर्माण करता है:

n^=2*n^=2*n^=2*n^=2*1

फिर यह सेट करता है n=1(यह वास्तव में तब होता है जब स्ट्रिंग बनाया जा रहा है) और उपरोक्त स्ट्रिंग का मूल्यांकन करता है, परिणाम लौटाता है।


क्या वह *n=1वास्तव में कुछ भी बचाती हैm=1;"m^=2*"*n+?1
मार्टिन एंडर

नहीं, लेकिन इसे केवल एक चर के साथ करना बहुत ही शोभनीय है :)
Lynn

3

सामौ , 4 बाइट्स

अब सामाउ में XOR गुणन और XOR शक्ति के लिए अंतर्निहित कार्य हैं ।

▌3$ⁿ

हेक्स डंप (Samau CP737 एन्कोडिंग का उपयोग करता है):

dd 33 24 fc

स्पष्टीकरण:

▌       read a number
 3      push 3
  $     swap
   ⁿ    take the XOR power

क्या पहले दो आदेशों की अदला-बदली करके और स्वैप को समाप्त करके इसे 3 बाइट्स तक कम किया जा सकता है?
क्विंटोपिया

@quintopia No. सामौ स्वचालित रूप से एक स्ट्रिंग के रूप में स्टैक पर इनपुट को धक्का देता है, और स्ट्रिंग से एक नंबर पढ़ता है। यदि हम पहले दो कमांड स्वैप करते हैं, तो यह एक नंबर पढ़ने की कोशिश करेगा 3, जो एक स्ट्रिंग नहीं है।
एलेफाल्फा

जब संभव हो तो समाउ स्ट्रिंग को खाली करने की कोशिश क्यों नहीं करता है?
क्विंटोपिया


2

शुद्ध बैश (कोई बाहरी उपयोगिताओं नहीं), 37

बैश पूर्णांक 64-बिट हस्ताक्षरित हैं, इसलिए यह 62 तक के इनपुट्स के लिए काम करता है:

for((x=1;i++<$1;x^=x*2)){
:
}
echo $x

2

पायथन 2.7.6, 38 33 बाइट्स

कुछ बाइट्स शेविंग करने के लिए डेनिस के लिए धन्यवाद!

x=1
exec'x^=x*2;'*input()
print x

1
प्रोग्रामिंग पहेलियाँ और कोड गोल्फ में आपका स्वागत है! दृष्टिकोण exec'x^=x*2;'*input()पर कुछ बाइट्स बचाता है for
डेनिस

यह मेरी पायथॉन प्रविष्टि को f=lambda n:f(n-1)^2*f(n-1)if n>0 else 1
हराता है

2

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

uxyGGQ1

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

स्पष्टीकरण:

u    Q1   apply the following statement input-times to G=1:
 xyGG        update G with (2*G xor G)


2

एमआइपी, 28 बाइट्स

में इनपुट $a0, आउटपुट में $v0

0x00400004  0x24020001          li      $v0, 1
0x00400008  0x10800005  loop:   beqz    $a0, exit
0x0040000c  0x00024021          move    $t0, $v0
0x00400010  0x00021040          sll     $v0, $v0, 1
0x00400014  0x00481026          xor     $v0, $v0, $t0
0x00400018  0x2084ffff          addi    $a0, $a0, -1
0x0040001c  0x08100002          j       loop


1

k4, 26 बाइट्स

{x{2/:~(=). 0b\:'1 2*x}/1}

0b\:एक बूलियन वेक्टर (यानी बिटस्ट्रिंग) के लिए एक संख्या को धर्मान्तरित करता है, XOR को "बराबर नहीं" के रूप में लागू किया जाता है, 2/:एक बिटस्ट्रीम को एक बहुपद के रूप में मूल्यांकन करने के लिए इसे वापस करके धर्मान्तरित करता है, और एक पूर्णांक के x f/yसाथ पहले लागू किया जाता है , और फिर इसके लिए। क्रमिक उत्पादन बार।xfyx

नमूना रन:

  {x{2/:~(=). 0b\:'1 2*x}/1}'!5                                                                                                                                                                                    
1 3 5 15 17

1

रूबी, 31 26 बाइट्स

संपादित करें: पूरी तरह से एक अलग भाषा में बदल गया! सभी गोल्फ सुझाव का स्वागत करते हैं!

यह कार्यक्रम बिट्स XORs अनुक्रम के पिछले तत्व को दो बार ही, अर्थात f(n) = f(n-1) ^ 2*f(n-1)

->n{v=1;n.times{v^=2*v};v}

1

MATL , 15 बाइट्स

करने के लिए इसी तरह के @ flawr के जवाब :

i:1w"TToX+]2\XB

EDIT (20 मई, 2016) इसे ऑनलाइन आज़माएं! साथ X+द्वारा प्रतिस्थापित Y+भाषा के संस्करण 18.0.0 के अनुरूप।

उदाहरण

>> matl i:1w"TToX+]2\XB
> 5
51

व्याख्या

i              % input                                                     
:              % vector of values 1, 2, ... to previous input                           
1              % number literal                                            
w              % swap elements in stack                                    
"              % for                                                       
    TTo        % vector [1 1]
    X+         % convolution                                               
]              % end                                                       
2\             % modulo 2
XB             % convert from binary to decimal              

1

ब्रेनफक , 87 बाइट्स

,[>>[>]++<[[->+>+<<]>-->[-<<+>>]<[>+<-[>-<-]]>+<<<]>>>[[-<+>]>]<<[<]<-]>>[<[->++<]>>]<+

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

अनंत आकार की कोशिकाओं को मानता है (अन्यथा यह पिछले 7 नहीं मिल सकता है, जो कि आसानी से 255 है)। पास्कल का त्रिकोण मॉड 2 विधि वास्तव में महंगा मॉड 2 ऑपरेशन के कारण बहुत लंबा है, जबकि XOR को लागू करना बहुत आसान है।


0

एपीएल, 31 बाइट्स

{({2⊥⊃~1 2=.{(64⍴2)⊤⍺×⍵}⍵}⍣⍵)1}

यह लगभग निश्चित रूप से भयानक कोड है, लेकिन मैं एक पूर्ण एपीएल न्यूब हूं। मुझे उम्मीद है कि किसी भी कौशल के साथ सभी डी-कार्यों से छुटकारा पा सकते हैं और इसे काफी कम कर सकते हैं। तर्क कमोबेश मेरे k4उत्तर के समान ही है - इसके द्वारा गुणा करें 1या 2, बिट्स में परिवर्तित करें , XOR का उपयोग नहीं के बराबर है, एक नंबर के साथ वापस कन्वर्ट करें , एक फ़ंक्शन में पूरी चीज़ लपेटें और एक विशिष्ट संख्या के पुनरावृत्तियों के लिए पूछें । मुझे नहीं पता कि आंतरिक उत्पाद से निकलने वाला परिणाम क्यों संलग्न है, लेकिन इसे साफ करता है।


आप को बदलने के द्वारा एक बाइट को बचाने के लिए सक्षम होना चाहिए ~1 2=.करने के लिए1 2≠.
Zachary

और, यह किस एपीएल प्रणाली पर है? यदि यह Dyalog पर है, तो आपको इसे बनाने में सक्षम होना चाहिए {({2⊥⊃1 2≠.((64⍴2)⊤×)⍵}⍣⍵)1}[28 बाइट्स]
Zacharý

0

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

2,╣`2@%`Mεj¿

हेक्स डंप:

322cb960324025604dee6aa8

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

चूँकि सीरियसली बिटवॉर एक्सर करने के किसी भी साधन को शामिल नहीं किया जाता है, यह समाधान पूरी तरह से चुनौती देता है, सीधे त्रिकोण की दी गई पंक्ति को कंप्यूटिंग करता है। यह विधि n = 1029 तक सही उत्तर देती है (जिसके बाद पास्कल के त्रिकोण की दी गई पंक्ति की गणना करने के लिए पर्याप्त मेमोरी नहीं है)।

स्पष्टीकरण:

 ,                       get input
  ╣                 push the nth row of pascal's triangle
   `2@%`M           take each element of the row mod 2
         εj         join all the binary digits into a string
2          ¿        interpret it as a base 2 number

0

Pyt , 40 10 बाइट्स

Đ0⇹Řć2%ǰ2Ĩ

स्पष्टीकरण:

यह देखते हुए कि बाइनरी सीरपिन्स्की ट्रायंगल पास्कल के त्रिभुज मॉड 2 के बराबर है,

                      Implicit input
Đ                     Duplicate input
 0⇹Ř                  Push [0,1,2,...,input]
    ć2%               Calculate the input-th row of Pascal's Triangle mod 2
       ǰ              Join elements of the array into a string
        2Ĩ            Interpret as a binary number
                      Implicit print

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


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