फिबोनाची + फ़िज़ बज़ = फिबो नेकीस!


74

फिबोनाची + फ़िज़बज़्ज़ = फिबो नेकीस!


आपकी चुनौती एक फिबो नेकी कार्यक्रम बनाने की है!

  • एक Fibo Nacci कार्यक्रम पहले 100 फाइबोनैचि संख्याओं (1 से शुरू) को आउटपुट करता है ।
  • यदि फाइबोनैचि संख्या 2 और 3 दोनों से विभाज्य है (अर्थात यह 6 से विभाज्य है), तो संख्या के बजाय FiboNacci आउटपुट करें।
  • अन्यथा, यदि फाइबोनैचि संख्या 2 से विभाज्य है, तो संख्या के बजाय फ़िबो आउटपुट करें।
  • अन्यथा, यदि फाइबोनैचि संख्या 3 से विभाज्य है, तो संख्या के बजाय Nacci आउटपुट करें।

नियम

  • कार्यक्रम को कोई इनपुट नहीं लेना चाहिए।
  • कार्यक्रम को \nहर प्रविष्टि के बाद एक नई लाइन ( ) का उत्पादन करना चाहिए ।
  • कार्यक्रम को STDERR के लिए कुछ भी प्रिंट नहीं करना चाहिए ।
  • कार्यक्रम को पहले 100 Fibo Nacci प्रविष्टियों (1 से शुरू) का उत्पादन करना चाहिए
  • मानक खामियों की अनुमति नहीं है (डिफ़ॉल्ट रूप से)।
  • यह बाइट्स जीत में इतना छोटा कोड है!

यहाँ अपेक्षित उत्पादन है:

1
1
Fibo
Nacci
5
Fibo
13
Nacci
Fibo
55
89
FiboNacci
233
377
Fibo
Nacci
1597
Fibo
4181
Nacci
Fibo
17711
28657
FiboNacci
75025
121393
Fibo
Nacci
514229
Fibo
1346269
Nacci
Fibo
5702887
9227465
FiboNacci
24157817
39088169
Fibo
Nacci
165580141
Fibo
433494437
Nacci
Fibo
1836311903
2971215073
FiboNacci
7778742049
12586269025
Fibo
Nacci
53316291173
Fibo
139583862445
Nacci
Fibo
591286729879
956722026041
FiboNacci
2504730781961
4052739537881
Fibo
Nacci
17167680177565
Fibo
44945570212853
Nacci
Fibo
190392490709135
308061521170129
FiboNacci
806515533049393
1304969544928657
Fibo
Nacci
5527939700884757
Fibo
14472334024676221
Nacci
Fibo
61305790721611591
99194853094755497
FiboNacci
259695496911122585
420196140727489673
Fibo
Nacci
1779979416004714189
Fibo
4660046610375530309
Nacci
Fibo
19740274219868223167
31940434634990099905
FiboNacci
83621143489848422977
135301852344706746049
Fibo
Nacci

कैटलॉग

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

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

## 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


6
केवल 64 बिट्स के उच्चतम पूर्णांक प्रकार वाली भाषाओं के बारे में क्या? :( 90
तंतुओं की

3
@Zereges उस मामले में, मुझे खेद है। :(
क्रुति लिथोस

28
शायद इसे "
फ़िज़ो नेकी

4
@SztupY क्योंकि इस प्रश्न में आउटपुट पूरी तरह से अपरिवर्तनीय है, इसलिए आपको पूर्णांक की भी आवश्यकता नहीं है। बस इस प्रश्न को कोलमोगोरोव-जटिलता प्रश्न के रूप में मानें (मैंने टैग भी जोड़ा) और वहां से जाना।
क्रिस जस्टर-यंग

3
@ क्रिसजैस्टर-यंग यह अभी भी एक अस्वाभाविक सीमा है, जो रचनात्मक कार्यान्वयनकर्ताओं को इस कार्य से दूर कर सकता है। और अधिकांश समाधान (2 सबसे ऊपर वाले सहित) पहले से ही टूट रहे हैं
SztupY

जवाबों:


18

पायथ, 37 बाइट्स

मैं उन्हें पहले से उत्पन्न करने के बजाय फाइबोनैचि संख्याओं के माध्यम से लूप करता हूं, क्योंकि यह वास्तव में करने के लिए कम है।

K1V100|+*"Fibo"!%=+Z~KZ2*"Nacci"!%Z3Z

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


इस चुनौती को जीतने के लिए बधाई! मुझे अच्छा लगा कि यह समाधान तेज था।
क्रिसेटी लिथोस

45

पायथन 2, 62 बाइट्स

a=b=1;exec"print~a%2*'Fibo'+~a%3/2*'Nacci'or a;a,b=b,a+b;"*100

मानक FizzBuzz से बहुत अलग नहीं, वास्तव में।


1
ये अद्भुत है।
J Atkin

मुझे अपने अगले रूबी गोल्फ के लिए इस लूपिंग निर्माण को याद रखना होगा। ये अद्भुत है।
ताली

21

सी ++ 11 मेटाप्रोग्रामिंग, 348 बाइट्स

#include<iostream>
#define D static const unsigned long long v=
template<int L>struct F{D F<L-1>::v+F<L-2>::v;};template<>struct F<2>{D 1;};template<>struct F<1>{D 1;};template<int Z>struct S:S<Z-1>{S(){auto&s=std::cout;auto l=F<Z>::v;s<<(l%2?"":"Fibo")<<(l%3?"":"Nacci");(l%2&&l%3?s<<l:s)<<"\n";}};template<>struct S<0>{S(){}};int main(){S<100>s;}

क्योंकि, क्यों नहीं। यह संकलन करता है warning C4307: '+': integral constant overflow, ठीक चलता है, लेकिन 93+ वें फाइबोनैचि संख्याओं को सही ढंग से (अतिप्रवाह के कारण) नहीं दिखाया गया है, इसलिए यह अमान्य प्रविष्टि है (लेकिन मैं इसे बाइट्स के साथ नहीं जीत सका हालांकि)

Ungolfed

#include <iostream>
#define D static const unsigned long long v = 
template<int L>struct F { D F<L - 1>::v + F<L - 2>::v; };
template<>struct F<2> { D 1; };
template<>struct F<1> { D 1; };

template<int Z>struct S : S<Z - 1>
{
    S()
    {
        auto&s = std::cout;
        auto l = F<Z>::v;
        s << (l % 2 ? "" : "Fibo")
          << (l % 3 ? "" : "Nacci");
        (l % 2 && l % 3 ? s << l : s) << "\n";
    }
};

template<>struct S<0>
{
    S() { }
};

int main()
{
    S<100>s;
}

आप template <char H, char ...T>अपने टेम्प्लेट में (सैद्धांतिक रूप से) मनमाने-लंबाई मान को संभालने के लिए विस्फोटित तार ( ) का उपयोग कर सकते हैं । तो फिर यह सिर्फ प्रत्येक स्ट्रिंग में पिछले 2 वर्ण की जांच 2 और / या 3. द्वारा विभाज्यता निर्धारित करने के लिए की बात होगी
Mego

@ मैं आपको नहीं समझता। यह मुझे मूल्यों को संभालने में कैसे मदद करेगा, जो 64 बिट्स में फिट नहीं होते हैं। इसके अलावा, आपको यह पता लगाने के लिए सभी अंकों की आवश्यकता है कि क्या संख्या 3 से विभाज्य है
Zereges

स्ट्रिंग्स को मनमाने ढंग से लंबा किया जा सकता है (जब तक आप स्मृति से बाहर नहीं निकलते हैं)। और तुम सही हो, मैंने अपनी टिप्पणी गड़बड़ कर दी। फिर भी, आप डिजिटल राशि की गणना 3. द्वारा विभाज्यता निर्धारित करने के लिए कर सकता है
Mego

@ मैं उन स्ट्रिंग्स के कार्यान्वयन को लागू करने के लिए बहुत अधिक प्रयास की आवश्यकता होगी।
ज़ेरेगस

1
आप ग्नू बोली और उपयोग कर सकते हैं __uint128_t, हो सकता है।

14

सी #, 175 171 152 145 बाइट्स

class c{static void Main(){for(dynamic a=1m,b=a,c=0;c++<100;b=a+(a=b))System.Console.WriteLine(a%6>0?a%2>0?a%3>0?a:"Nacci":"Fibo":"FiboNacci");}}

असम्पीडित:

class c {
    static void Main()
    {
        for (dynamic a = 1m, b = a, c = 0; c++ < 100; b = a + (a = b))
            System.Console.WriteLine(a%6>0?a%2>0?a%3>0?a:"Nacci":"Fibo":"FiboNacci");
    }
}

यहां तक ​​कि एक DeflateStream के साथ आउटपुट को कम से कम मैं 191 चार्ट प्राप्त कर सकता था, इसलिए यह सबसे अच्छा संभव सी # उत्तर के बहुत करीब है। एक शर्मनाक BigInteger की आवश्यकता है।
जोडरेल

"सिस्टम का उपयोग?" आकार में एक और -1 देगा।
१०:१५ बजे

1
मुझे अभी भी System.Numerics का उपयोग करने के बावजूद System के साथ उपसर्ग करना पड़ा है: -तो, मुझे यकीन नहीं है कि प्रयोग काम करेगा।
जॉडरेल

1
आप ternaries के ==0साथ s को प्रतिस्थापित करके 3 अक्षरों को बचा सकते हैं >0:class c{static void Main(){for(System.Numerics.BigInteger a=1,b=1,c=0;c++<100;b=a+(a=b))System.Console.WriteLine(a%6>0?a%2>0?a%3>0?a:(object)"Nacci":"Fibo":"FiboNacci");}}
Bob

3
आप को बदलने के द्वारा एक और 7 वर्ण बचा सकते हैं decimal a=1,b=1करने के लिए dynamic a=1m,b=aऔर फिर आप खो सकते हैं (object):)
Timwi

13

Oracle SQL, 212 बाइट्स

एक गोल्फ भाषा नहीं है, लेकिन मुझे कोशिश करनी थी ...

सभी पंक्तियों के साथ संबंधित \n:

WITH F(R,P,C)AS(SELECT 1,0,1 FROM DUAL UNION ALL SELECT R+1,C,P+C FROM F WHERE R<100)SELECT LISTAGG(NVL(DECODE(MOD(C,2),0,'Fibo')||DECODE(MOD(C,3),0,'Nacci'),''||C),CHR(13))WITHIN GROUP(ORDER BY R)||CHR(13)FROM F

SQLFIDDLE

या अनुक्रम प्रति पंक्ति से एक प्रविष्टि (162 बाइट्स) के साथ:

WITH F(R,P,C)AS(SELECT 1,0,1 FROM DUAL UNION ALL SELECT R+1,C,P+C FROM F WHERE R<100)SELECT NVL(DECODE(MOD(C,2),0,'Fibo')||DECODE(MOD(C,3),0,'Nacci'),''||C)FROM F

2
बहुत बढ़िया, बस SQL ​​का उपयोग करने के लिए
वेन वर्नर

बस पिछले एक का उपयोग करें, क्योंकि यह "प्रति पंक्ति" आउटपुट के लिए "समकक्ष" है। और यह वास्तव में कोड का एक अच्छा टुकड़ा है। बहुत बढ़िया!
इस्माइल मिगुएल

@IsmaelMiguel यदि यह SQL * Plus (या किसी अन्य कमांड लाइन इंटरफ़ेस) में चलाया जाता है, तो प्रत्येक पंक्ति के बाद एक नया उत्पादन होगा (जैसा कि यह क्वेरी आउटपुट कैसे रिपोर्ट करता है)। हालाँकि, यह CLI का एक कार्य है और एसक्यूएल भाषा नहीं है - नियम के अनुरूप होने के लिए The program should output a new line (\n) after every entryमैं इसे लंबे समय तक कोड के रूप में छोड़ दूंगा लेकिन छोटे ||CHR(13)को अंतिम के पहले जोड़कर (सीएलआई पर भरोसा किए बिना) आज्ञाकारी बनाया जा सकता है FROM171 chracters के लिए।
MT0

क्या आप उपयोग नहीं कर सकते "\n"? MySQL पर काम करने लगता है। (रनिंग select length("\n")रिटर्न 1, और रनिंग रिटर्न select "\n"नहीं है n, जैसा कि एक अवैध एस्केप होने के कारण select "\p"रिटर्न pके साथ )
इस्माइल मिगुएल

SELECT LENGTH('\n') FROM DUAL2Oracle में आउटपुट के रूप में '\n'परिवर्तित नहीं होता है CHR(13)
MT0

11

शेपस्क्रिप्ट , 83 बाइट्स

11'1?1?+'77*2**!""'"%r
"@+@0?2%1<"Fibo"*1?3%1<"Nacci"*+0?_0>"@"*!#%'52*0?**!"'"$""~

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


15
वस्तुतः ऐसा लगता है कि मेरी बिल्ली मेरे कीबोर्ड के ऊपर कूद गई जबकि मैंने चिपचिपी चाबियों को चालू करने की कोशिश की। अच्छी नौकरी।
चरण

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

3
@JanDvorak मुझे लगता है कि चरण के लिए मैक्रोज़ सेटअप है;)
वेन वर्नर

2
@ पेज 1। आपके कमरे में बिल्ली क्यों है ?; 2. आप चिपचिपी चाबियों को चालू क्यों करना चाहेंगे? 3? अपनी बिल्ली को अपने कीबोर्ड पर कूदने से बचने के लिए आपके डेस्क पर बिल्ली का जाल बॉक्स क्यों नहीं है?
Nzall

7

जावा, 407 398 351 308 बाइट्स

@Geobits और @SamYonnou की मदद से इसे तैयार किया

प्रचार कीजिये: Verbose == Java

import java.math.*;class A{public static void main(String[]w){BigInteger a=BigInteger.ZERO,b=a.flipBit(0),c,z=a,t=a.flipBit(1),h=t.flipBit(0),s=t.flipBit(2);for(int i=0;i<100;i++){System.out.println(b.mod(s).equals(z)?"FiboNacci":b.mod(t).equals(z)?"Fibo":b.mod(h).equals(z)?"Nacci":b);c=a;a=b;b=c.add(b);}}}

Ungolfed संस्करण:

import java.math.*;

class A
{
  public static void main(String[]w)
  {
    BigInteger a=BigInteger.ZERO,b=a.flipBit(0),c,z=a,t=a.flipBit(1),h=t.flipBit(0),s=t.flipBit‌​(2);
    for(int i=1;i<=100;i++) {
      System.out.println(b.mod(s).equals(z)?"FiboNacci":b.mod(t).equals‌​(z)?"Fibo":b.mod(h).equals(z)?"Nacci":b);                
      c=a;a=b;b=c.add(b);
    }
  }
}

1
यह अधिक गोल्फ हो सकता है। java.math.*पूरी चीज के बजाय आयात करें । स्थिरांक के लिए प्रयोग करें ONEऔर ZEROके बजाय newBigIntegers। publicकक्षा से निकालें । लूप घोषणा के अंदर शरीर printlnमें बयान के अलावा सब कुछ पैक करें for, मैं सामान्य रूप से जावा गोल्फिंग युक्तियों को देखने की सलाह देता हूं ।
Geobits

@Geobits किया! 'ट्वास ए दया कि मैं अपरिचित था BigIntegerऔर इसकी विभिन्न गोल्फ तकनीकों से।
जुर्राब

BigInteger.ZERO को स्टोर करना, नए BigInteger (...) के विकल्प के रूप में फ्लिपबिट (...) का उपयोग करना, और कुछ अन्य छोटी चीजें जो आप इसे 308 तक प्राप्त कर सकते हैं:import java.math.*;class A{public static void main(String[]w){BigInteger a=BigInteger.ZERO,b=a.flipBit(0),c,z=a,t=a.flipBit(1),h=t.flipBit(0),s=t.flipBit(2);for(int i=0;i<100;i++){System.out.println(b.mod(s).equals(z)?"FiboNacci":b.mod(t).equals(z)?"Fibo":b.mod(h).equals(z)?"Nacci":b);c=a;a=b;b=c.add(b);}}}
SamYonnou

BigIntegerहमेशा ऐसा लगता है कि BigInteger.ZEROजब कोई ऑपरेशन add(...)शून्य की तरह मूल्यांकन करता है, तो आप ==इसके बजाय उपयोग कर सकते हैं .equals(z), साथ ही आप s=t.flipBit‌​(2)import java.math.*;class A{public static void main(String[]w){BigInteger a=BigInteger.ZERO,b=a.flipBit(0),c,d,z=a,t=a.flipBit(1),h=t.flipBit(0);for(int i=0;i<100;i++){System.out.println((c=b.mod(t)).add(d=b.mod(h))==z?"FiboNacci":c==z?"Fibo":d==z?"Nacci":b);c=a;a=b;b=c.add(b);}}}
स्टोरिंग

2
मुझे लगता है कि आप मतलब हैVerbose.isEqualTo(Java)
Cyoce

7

मैथेमेटिका, 80 बाइट्स

a=b_/;#∣b&;Print/@(Fibonacci@Range@100/.{%@6->FiboNacci,%@2->Fibo,%@3->Nacci})

मेरे पुराने FizzBuzz समाधान का अनुकूलन।


1
@JacobAkkerboom क्षमा करें, ठीक किया गया। इसके अलावा, 10.3 से कम संस्करणों के लिए, के Echoसाथ बदलें Print
लीजियनममाल 978

5

रूबी, 71 66 बाइट्स

a=b=1;100.times{puts [b,f='Fibo',n='Nacci',f,b,f+n][~b%6];a=b+b=a}

ungolfed:

a = b = 1 #starting values
100.times{
  # create an array, and selects a value depending on the current number
  puts([b, 'Fibo', 'Nacci', 'Fibo', b, 'FiboNacci'][~b%6])
  a=b+b=a # magic
}

मैंने इस पर लंबे समय तक काम किया है, जिसे मैं प्रशासित करना चाहता हूं और इसे सुधारने का कोई तरीका नहीं खोज सकता। f,n=%w[Fibo Nacci], f,n='Fibbo','Nacci'और f='Fibbo';n='Nacci'सभी की एक ही वर्ण गणना है। +1
शेल्वैकु 22

1
आप तीन बाइट्स का उपयोग करके बचा सकते हैं [b,f='Fibo',n='Nacci',f,b,f+n][~b%6], और दो कोष्ठक को हटाकर a=b+b=a
प्राइमो

साभार @primo यह ~ऑपरेटर के साथ एक साफ-सुथरी चाल है । इसे पहले कभी नहीं देखा। और अब मुझे पता है कि नकारात्मक सूचकांक माणिक का हिस्सा क्यों हैं :)
मेगाटॉम

puts [इसके बजाय वास्तव में जरूरत है puts[?
को आउटगोल्फ

1
गुलाब लाल हैं, वायलेट नीले हैं, हास्केल और रूबी के लिए, मेरे पास कोई सुराग नहीं है।
आउटगोल्फ

5

> <> , 116 बाइट्स

01:n1&61>.
ao:@+:v
vv?%2:<
">:3%?vv^16<
o>:3%?!v~v<&
bov"ci"< 6 ;
io"   n  6~?
Focv1&<   o=
"o">+:aa*!o^
>^>"aN"ooo^

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


6
साइट पर आपका स्वागत है! :)
DJMcMayhem

आप शायद दोनों 3%वर्गों को जोड़ सकते हैं
जो किंग

@JoKing आप ऐसा सोचते होंगे, लेकिन वे वास्तव में अलग परिणाम की ओर ले जाते हैं अगर n% 3! = 0। मुझे यकीन है कि उन्हें संयोजित करने का एक तरीका है, लेकिन इसका मतलब पूरे कार्यक्रम का पुनर्गठन होगा, और मुझे लगता है कि यह वास्तव में लंबा होगा।
hakr14


4

सी #, 498 392 320 बाइट्स

मैं वास्तव में linq के साथ ऐसा करना चाहता था, बहुत बुरा मुझे BigInteger के लिए अपना स्वयं का फ़ंक्शन लिखना पड़ा जो वास्तव में मारे गए: --(

using System.Linq;using System.Numerics;using System.Collections.Generic;static class a{static void Main(){var f=new List<BigInteger>(){1,1};while(f.Count<100)f.Add(f.Skip(f.Count-2).Take(2).Aggregate((a,b)=>b+a));f.ForEach(x=>{System.Console.WriteLine(x%6==0?"FiboNacci":x%2==0?"Fibo":x%3==0?"Nacci":x.ToString());});}}

Ungolfed:

using System.Linq;
using System.Numerics;
using System.Collections.Generic;
static class a
{
    static void Main()
    {
        var f=new List<BigInteger>(){1,1};
        while(f.Count<100)
            f.Add(f.Skip(f.Count-2).Take(2).Aggregate((a,b)=>b+a));
        f.ForEach(x=>
        {
            System.Console.WriteLine(x%6==0?"FiboNacci":x%2==0?"Fibo":x%3==0?"Nacci":x.ToString());
        });
    }
}

संपादित करें: कुल सुझाव के लिए LegionMammal978 के लिए 320 बाइट्स के लिए धन्यवाद और ऑलिज़ के सी # उत्तर के लिए धन्यवाद एक्स% 2 और& एक्स% 3 के लिए एक्स% 6 शॉर्टहैंड के लिए और साथ ही एक सिंगल लिक्लाइन स्टेटमेंट में टर्नरी ऑपरेटरों के उपयोग के लिए।


4
क्या आपने AggregateLINQ फ़ंक्शन के बारे में सुना है ?
लीजियनममला 978

6 बाइट्स दाढ़ी करने के लिए "सम" को "t" से बदलें।
Xantix

3

पायथन 2, 171 121 बाइट्स

"जानवर बल दृष्टिकोण।"

a=[1,1]
print 1
for _ in"q"*99:print[a[1],"Fibo","Nacci","FiboNacci"][a.append(a.pop(0)+a[0])or(1-a[0]%2)+(a[0]%3<1)*2]

3

जावास्क्रिप्ट, 93 90 86 बाइट्स

for(a=0,b=1,i=100;i--;a=[b,b=a+b][0])console.log((b%2?'':'Fibo')+(b%3?'':'Nacci')||b)

1
आप को बदलने के द्वारा चार बाइट्स बचा सकता है a=[b,b=a+b][0]के लिए b=a+b,a=b-a। इसके अलावा, एक पूरी तरह से असंबंधित नोट में, मैं जिस तरह से जवाब देता हूं, जैसे कि स्टैक ओवरफ्लो में वास्तव में तेज है, उसके पास एक अच्छा दिन है
पीआईएन

2

पायथन 2, 100 बाइट्स

x=[1,1]
exec"x+=[x[-1]+x[-2]];"*98
print"\n".join(["Fibo"*(i%2==0)+"Nacci"*(i%3==0)or`i`for i in x])

बड़ी संख्या के लिए, Lयह एक लंबी संख्या दिखाते हुए अंत में जोड़ता है ।

यदि यह समस्या है, तो यहां 104 बाइट समाधान है

x=[1,1]
exec"x+=[x[-1]+x[-2]];"*98
print"\n".join(["Fibo"*(i%2==0)+"Nacci"*(i%3==0)or str(i)for i in x])

आप forइस टिप का उपयोग करके लूप को छोटा कर सकते हैं : codegolf.stackexchange.com/a/5047/42736 । विशेष रूप से execटिप अच्छा लग रहा है।
जे एटकिन

exec <program_string>*nचाल के लिए +1 । अच्छा!
agtoever

2

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

g=x=>(a=[1,1],f=(x)=>(a[x]=y=a[x-1]+a[x-2],(y%2&&y%3?y:(!(y%2)?'Fibo':'')+(!(y%3)?'Nacci':''))+'\n'+((++x<99)?f(x):'')),'1\n1\n'+f(2))

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

यह जावास्क्रिप्ट संख्या परिशुद्धता के कारण 73 पर टूटता है। केवल उसी के आसपास जाने का तरीका मेरी अपनी गणना को जोड़ना होगा।


यह काम नहीं करता है, यह 5527939700884757 + 8944394323791464 = 14472334024676220तब गलत हो जाता है जब यह होना चाहिए 14472334024676221क्योंकि जावास्क्रिप्ट 16 बिट सटीक फ़्लोट्स का उपयोग करता है और इसके लिए 17 बिट्स सटीक की आवश्यकता होती है। आपको 1दो बार प्रिंट भी करना चाहिए ।
जॉर्ज रीथ

दो बार प्रिंट 1 जोड़ा। सटीकता के लिए, मुझे इसे काम करने के लिए कोड पर एर्थिन बदलने की जरूरत है (संख्या का उपयोग नहीं करना लेकिन Uint32Array और बिट्स द्वारा कम्प्यूटेशन बिट्स करना)
Naouak

2

QBasic, 144 141 बाइट्स

विशेष रूप से छोटा नहीं है, लेकिन यह C ++ और C # धड़कता है

r=1:FOR i=1 TO 046:a$="":q=p+r
IF q MOD 2=0 THEN a$="Fibo"
IF q MOD 3=0 THEN a$=a$+"Nacci"
IF a$="" THEN a$=STR$(q)
PRINT a$:r=p:p=q:NEXT

कोई घोषणा नहीं, :जहाँ भी संभव हो उपयोग किया क्योंकि यह 1 बाइट से सस्ता है CRLF। एक 0 से लूप काउंटर के लिए उपसर्ग: बेसिक 47 वें फाइबोनैचि चरित्र पर अतिप्रवाह करेगा, इसलिए उस अतिरिक्त बाइट के लिए मुआवजा दिया जाना चाहिए जो वहां होना चाहिए।

संपादित करें: नील ने मुझे 3 बाइट्स बचाए: 141 बाइट्स।


आप पहले को हटा सकते हैं a$+क्योंकि यह इस बिंदु पर रिक्त स्ट्रिंग के रूप में जाना जाता है।
नील

2

वोल्फ्राम भाषा, 84 बाइट्स

बिल्ट इन की वजह से धोखा देने की तरह Fibonacci

t=Fibonacci@Range@100;g=(t[[#;;;;#]]=#2)&;g[3,Fibo]g[4,Nacci]g[12,FiboNacci]Print/@t

उदाहरण स्क्रिप्ट चलाने के लिए कमांड

/Applications/Mathematica.app/Contents/MacOS/WolframKernel -script ~/Desktop/fibo.wl

2

पर्ल, 74 बाइट्स

map{print+(Fibo)[$_%2].(Nacci)[$_%3]||$_ for$a+=$b||1,$b+=$a}1..50

निम्न कमांड लाइन विकल्प की आवश्यकता है:, -lMbigint8 के रूप में गिना जाता है।


नमूना उपयोग

$ perl -lMbigint fibo-nacci.pl

पर्ल, 79 बाइट्स

use bigint;map{print+(Fibo)[$_%2].(Nacci)[$_%3]||$_,$/for$a+=$b||1,$b+=$a}1..50

किसी भी कमांड लाइन विकल्प की आवश्यकता के बिना ऊपर के समान।


2

गोल्फस्क्रिप्ट, 47 बाइट्स

100,{1.@{.@+}*;..2%!'Fibo'*\3%!'Nacci'*+\or}%n*

व्याख्या

100,            # push 0..99
{               # map
  1.@           # push 1 twice, rotate counting var to the top
  {             # apply that many times
    .@+         # copy the top, rotate and add
                # if the stack is [a b], this produces: [a b b] -> [b b a] -> [b b+a]
  }*
  ;..           # discard the top, duplicate twice
  2%!'Fibo'*\   # divisible by 2 ? 'Fibo' : ''
  3%!'Nacci'*   # divisible by 3 ? 'Nacci' : ''
  +\or          # concatenate, if empty use the numeric value instead
}%
n*              # join all with a newline

2

PARI / GP, 76 73 बाइट्स

मिच श्वार्ट्ज के सौजन्य से तीन बाइट्स को बचाया ।

for(n=b=!a=1,99,b=a+a=b;print(if(b%2,"",Fibo)if(b%3,if(b%2,b,""),Nacci)))

नमूना उपयोग

$ gp -qf < fibo-nacci.gp

1
यह अंतर्निहित उपयोग नहीं करने के लिए कम है; मुझे 73 के साथfor(i=b=!a=1,99,b=a+a=b; ...
मिच श्वार्ट्ज

1
@ मिचस्चवार्ट्ज जिसे यह कहा जाता था fibo;)
प्रिमो

2

> <>, 128 119 बाइट्स

111&v       >:3%0=?v>  v
?;ao>:2%0=?v :3%0=?v :n>:}+&:1+&aa*=
            ^oooo < ^ooooo <
           >"obiF"^>"iccaN"^

मैंने बेशर्मी से एक मौजूदा कार्यक्रम FizzBuzz कार्यक्रम को उधार लिया और इसे Fibo Nacci अनुक्रम के लिए काम करने के लिए संशोधित किया। यह हमेशा के लिए नंबर आउटपुट करता है। अब यह तय हो गया है, यानी यह केवल 100 नंबर का आउटपुट देता है। इसे यहाँ आज़माएँ ।


2
आपको केवल पहले 100 Fibo Nacci नंबर को आउटपुट करना होगा, और अधिक नहीं, कम नहीं।
कृतिका लिथोस

@ ΣριΚικσιΛίθοΚ मैं अंत में इसे केवल 100 नंबर का उत्पादन करने के लिए मिला।
DanTheMan

यह 101 नंबर TIO पर आउटपुट करता है, लेकिन लिंक्ड साइट पर काम नहीं करता है
जो किंग

1

पायथ, 51 बाइट्स

V.Wn100lHaZ+@Z_1@Z_2[1 1)|+*"Fibo"}2JPN*"Nacci"}3JN

फाइबोनैचि अनुक्रम उत्पन्न करता है फिर निर्णय लेता है कि क्या प्रिंट करना है।

                    [1 1)                           - H = [1,1]
  Wn100lH                                           - While len(H)!=100 
         aZ+@Z_1@Z_2                                - H.append(H[-1]+H[-2])
V.                                                  - For N in H:
                                    JPN             - Set J to the prime factorization of H
                           *"Fibo"}2J               - If there is a 2 in the factorization, add "Fibo" to a string
                                       *"Nacci"}3J  - If there is a 3 in the factorization, add "Nacci" to a string
                          +                         - Join them together
                         |                        N - If the string isn't empty (If it isn't divisible by 2 or 3), print N
                                                    - Else print the string

परीक्षण करने के लिए, इसे आज़माएं (केवल पहले 20 नंबर पर)

V.Wn20lHaZ+@Z_1@Z_2[1 1)|+*"Fibo"}2JPN*"Nacci"}3JN

वास्तविक कार्यक्रम को चलाने में कितना समय लगता है?
१०:४५ पर क्रिति लिथोस

मेरे पास कोई विचार नहीं है, यह 30 सेकंड में काम नहीं करता था जो कि ऐसे बड़े प्रधान कारकों को काम कर रहा था जो शायद इसे बहुत धीमा कर देगा।
ब्लू

1

क्लोजर, 127 बाइट्स

(def f(lazy-cat[1 1](map +' f(rest f))))(doseq[x(take 100 f)](println(str(if(even? x)'Fibo)({0'Nacci}(mod x 3)(if(odd? x)x)))))

Ungolfed:

(def fib (lazy-cat [1 1] (map +' fib (rest fib))))

(doseq [x (take 100 fib)]
  (println (str (if (even? x) 'Fibo)
                ({0 'Nacci}
                 (mod x 3)
                 (if (odd? x) x)))))

उपयोग किए गए कुछ ट्रिक्स:

  • यह बहुत कम है defकि फाइबोनैचि अनुक्रम खुद को कोनराड गेरुस से बेशर्मी से चुराया जाता है
  • strइनपुट के रूप में प्रतीक ले सकते हैं। पागल, है ना?
  • नक्शे और डिफ़ॉल्ट मान ifकुछ मामलों में लिखने का सबसे छोटा तरीका है ।

क्या है lazy-cat?
क्रिकटी लिथोस

@ ΣριΚικσιΛίθοΚ यह कई दृश्यों को आलसी बनाता है। इस मामले में, यह फाइबोनैचि अनुक्रम के पहले दो तत्वों ( [1 1]) का अनुसरण करता है, इसके बाद के तत्व के साथ फिबोनाची अनुक्रम में प्रत्येक तत्व को जोड़ते हैं।
सैम एस्टेप

क्या मैं यह अनुमान लगाने में सही हूं कि यह मूल रूप से क्लोजर संस्करण है fibs = 0 : 1 : zipWith (+) fibs (tail fibs)?
सोहम चौधरी

@SohamChowdhury हाँ, जहाँ तक मैं बता सकता हूँ।
सैम एस्टेप


1

डीसी, 100 89 79 बाइट्स

[sG[]]sx[dn]s01df[sbdlb+lbrdd2%d[Fibo]r0!=xnr3%d[Nacci]r0!=xn*0!=0APzZ3>o]dsox

Http://c2.com/cgi/wiki?DeeCee से प्रेरित है


प्रोग्रामिंग पहेलियाँ और कोड गोल्फ में आपका स्वागत है!
डेनिस

1

जावास्क्रिप्ट (ES2015), 99 बाइट्स

f=n=>n<3?1:f(n-1)+f(n-2);for(i=0;i<100;)console.log((f(++i)%2?'':'Fibo')+(f(i)%3?'':'Nacci')||f(i))

Ungolfed:

// fibonacci function
var fibonacci = (n) => n < 3 ? 1 : fibonacci(n-1) + fibonacci(n-2) // (implicit return)

for (var i = 0; i<100;) {
  var output = fibonacci(++i) % 2 !== 0 ? '' : 'Fibo';
  output += fibonacci(i) % 3 !== 0 ? '' : 'Nacci';
  console.log(output || fibonacci(i));
}

के alertबजाय का उपयोग करें console.log; यह कुछ बाइट्स को बंद कर देता है।
क्रिक्टी लिथोस

1

एफ #, 202 163 149 बाइट्स

Seq.unfold(fun(a,b)->printfn"%s"(a%6m|>function|0m->"FiboNacci"|2m|4m->"Fibo"|3m->"Nacci"|_->string a);Some(1,(b,a+b)))(1m,1m)|>Seq.take 100|>Seq.sum

यह एक FSX (F # स्क्रिप्ट) फ़ाइल है


मुझे आश्चर्य है कि यह काम करता है
asibahi

1

PHP, 75 बाइट्स

<?for(;4e20>$b=bcadd($a,$a=$b)?:1;)echo[Fibo][++$i%3].[Nacci][$i%4]?:$b,~õ;

आश्चर्यजनक रूप से प्रतिस्पर्धी। PHP v5.5 या उच्चतर requres। मैं डिफ़ॉल्ट सेटिंग्स मान लेता हूं, क्योंकि वे बिना .ini के हैं (आप -nविकल्प के साथ अपने स्थानीय .ini को अक्षम कर सकते हैं )।


नमूना उपयोग

$ php -n fibo-nacci.php

साथ -n bcaddजब भी काम नहीं करता है bcmathस्थापित किया गया है। बिना -n सामान के बहुत से स्टादर पर आउटपुट होता है।
सिल्वेस्टर

मेरे बॉक्स पर काम करता है (तों)।
प्रिमो

1

प्रोलॉग, 182 बाइट्स

f(A,B,X):-X<100,C is A+B,Z is X+1,(Y is B mod 6,Y=0->writeln('FiboNacci');(Y is B mod 2,Y=0->writeln('Fibo');(Y is B mod 3,Y=0->writeln('Nacci');writeln(B)))),f(B,C,Z).
p:-f(0,1,0).

इसे यहाँ ऑनलाइन आज़माएं
कार्यक्रम चलाने के लिए, क्वेरी का उपयोग करें:

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