फ़िज़्ज़ बज़ .. क्रैकल पॉप! (सामान्यीकृत फ़िज़ बज़)


11

हम सभी ने ओल 'फ़िज़ बज़ समस्या के बारे में सुना है, लेकिन जब आप इसे और अधिक कारकों के साथ लागू करने की कोशिश करते हैं तो क्या होता है? फ़िज़्ज़ बज़ क्रैकल पॉप!

चुनौती

एक पूर्ण प्रोग्राम लिखें जो पूर्णांक इनपुट n लेता है , फिर n tuples जिसमें पूर्णांक और एक स्ट्रिंग है, फिर एक और पूर्णांक (> 1) k, जैसे:

 n int1 str1 int2 str2 (...) intn strn k

आप इस लाइन को कमांड लाइन या STDIN में से ले सकते हैं।

फिर, सभी पूर्णांक 1 से k के लिए, यदि यह int1 , int2 ... intn में से किसी के द्वारा विभाज्य है, तो इनपुट क्रम में सभी संबंधित str s , आउटपुट को एक नई पंक्ति द्वारा अनुसरण किया जाता है। यदि ऐसा नहीं है, तो केवल पूर्णांक का उत्पादन करें, उसके बाद एक नई पंक्ति।

उदाहरण के लिए, इनपुट के साथ

3 2 Fizz 3 Buzz 5 Crackle 10

हमें मिला

1
Fizz
Buzz
Fizz
Crackle
FizzBuzz
7
Fizz
Buzz
FizzCrackle

लेकिन इनपुट के साथ (आदेश परिवर्तन पर ध्यान दें)

3 3 Buzz 2 Fizz 5 Crackle 10

हमें मिला

1
Fizz
Buzz
Fizz
Crackle
BuzzFizz
7
Fizz
Buzz
FizzCrackle

वैकल्पिक अनुगामी न्यूलाइन स्वीकार्य है।

बाइट्स में सबसे छोटा कोड जीतता है।

संपादन:

जाहिर है मुझे बहुत याद किया, क्षमा करें।

  • कंसोल और एसटीडीआईएन से इनपुट , कहीं भी और कहीं भी +5 बाइट्स (: c) मिलते हैं
  • पूर्ण कार्यक्रम कृपया।
  • स्ट्रिंग के लिए गैर-रिक्त स्ट्रिंग्स मान लें
  • चींटियों की विशिष्टता की कोई गारंटी नहीं है

नमूना C ++ प्रोग्राम (20 पर सीमित है क्योंकि मैं आलसी हूं):

#include <iostream>
#include <string>
using namespace std;

int main() {
  string names[20];
  int mods[20], n, max;
  cin >> max >> n;
  for (int i=0; i<n; i++) {
    cin >> mods[i] >> names[i];
  }
  for (int i=1; i<=max; i++) {
    bool found = false;

    for (int j=0; j<n; j++) {
      if (i % mods[j] == 0) {
        found = true;
        cout << names[j];
      }
    }
    if (!found)
     cout << i;
    cout << endl;
  }

  return 0;
}

5
क्या इनपुट इतना कठोर होना चाहिए? या हम एक हैशटेबल / शब्दकोश / सरणी / आदि में ले सकते हैं। भाषा के मूल स्वरूप में?
AdmBorkBork

2
इसके अलावा, PPCG में आपका स्वागत है!
AdmBorkBork

1
यदि संख्या दो समान हो तो क्या होगा? क्या वे हमेशा अद्वितीय सकारात्मक पूर्णांक होंगे?
डेविड कॉनरेड

1
संख्याओं के बारे में क्या गारंटी है: क्या वे सभी सकारात्मक होंगे, या कम से कम गैर-शून्य होंगे? स्ट्रिंग्स के बारे में क्या: क्या वे सभी गैर-खाली हैं?
पीटर टेलर

1
एक बेहतर शीर्षक हो सकता है Generalized Fizz Buzz
mbomb007

जवाबों:



4

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

एक अग्रणी न्यूलाइन बनाता है।

f=(a,i=a.pop())=>i?f(a,i-1)+`
`+(a.map((_,j)=>++j>a[0]|i%a[j*2-1]?'':a[j*2]).join``||i):''

परीक्षा



1

सी ++, 194 बाइट्स

#include <iostream>
#define p std::cout<<
int main(int c,char**a){c=2*atoi(a[1])+2;int x,f,i,n=atoi(a[c]);for(x=1;x<=n;x++){f=0;for(i=2;i<c;i+=2)if(x%atoi(a[i])<1)f=1,p a[i+1];if(!f)p x;p'\n';}}

Ungolfed:

#include <iostream>

int main(int c, char **a) {
    c = 2 * atoi(a[1]) + 2;
    int x, f, i, n = atoi(a[c]);
    for (x = 1; x <= n; x++) {
        f = 0;
        for (i = 2; i < c; i += 2)
            if (x % atoi(a[i]) < 1) f = 1, std::cout << a[i+1];
        if (!f) std::cout << x;
        std::cout << '\n';
    }
}

1
यदि परिणाम x%atoi(a[i])नकारात्मक नहीं हो सकता है, तो बस जांचें x%atoi(a[i])<1
यति

@TuukkaX अच्छा बिंदु, धन्यवाद।
डेविड कॉनरेड

1
इसके अलावा, मुझे पूरा यकीन है कि आप ऐसा कर सकते हैं p'\n':)
Yytsi


0

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

g=(m,k,i=1)=>i<-~k?([...m.keys()].filter(j=>i%j<1).map(j=>m.get(j)).join``||i)+"\n"+g(m,k,i+1):""

जोड़े के नक्शे में m (पूर्णांक, स्ट्रिंग) और एक पूर्णांक k लेता है । एक अनुगामी न्यूलाइन के साथ आता है।

यहां एक गैर-पुनरावर्ती संस्करण (105 बाइट्स) है, लेकिन एक अनुगामी न्यूलाइन नहीं मिलता है।

m=>k=>[...Array(k).keys()].map(x=>[...m.keys()].filter(j=>-~x%j<1).map(j=>m.get(j)).join``||x+1).join`\n`

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


0

जावा, 331 बाइट्स

क्योंकि जावा।

import java.util.*;class A{A(int c,String x){i=c;v=x;}int i;String v;void x(String[]x){ArrayList<A>l=new ArrayList();int n=0;for(;++n<x.length-1;)l.add(new A(Integer.valueOf(x[n++]),x[n]));n=Integer.valueOf(x[n]);for(int i=1;i++<n;){String o="";boolean y=1>0;for(A a:l)if(i%a.i==0){y=1<0;o+=a.v;}if(y)o+=i;System.out.println(o);}}}

इसके लिए आवश्यक पूर्ण वर्ग है। हालाँकि, इसे चलाने के लिए, आपको xमौजूदा उदाहरण पर विधि को कॉल करना होगा A। परीक्षण के लिए, मैंने नीचे एक कमांड-लाइन रननेबल क्लास प्रदान की है, जो आंशिक रूप से अनफॉर्म्ड है।

import java.util.*;
class A{
A(int c,String x){i=c;v=x;}
int i;
String v;
void x(String[]x){
ArrayList<A>l=new ArrayList();
int n=0;
for(;++n<x.length-1;)
l.add(new A(Integer.valueOf(x[n++]),x[n]));
n=Integer.valueOf(x[n]);
for(int i=1;i++<n;){
String o="";
boolean y=1>0;
for(A a:l)if(i%a.i==0){y=1<0;o+=a.v;}
if(y)o+=i;
System.out.println(o);
}
}
public static void main(String[] args) {
new A(0,"").x(args);
}
}


0

डीसी , 121 बाइट्स

?dstsw?[rdlt:Y:Rlt1-dst0<q]dsqx?sb1sm[ln;Y;RnlP1+sP]ss[lmn]sF[1sn0sP[lnd;Ylmr%0=s1+dsnlw!<g]dsgxlP0=Flm1+dsm10Plb!<i]dsix

3 अलग-अलग लाइनों पर इनपुट लेता है, पहली पंक्ति जिसमें पूर्णांक n, दूसरी आवास int strमें वर्ग कोष्ठक ( []) में संलग्न तार के साथ ट्यूपल्स , और तीसरी पंक्ति में पूर्णांक होते हैं k। उदाहरण के लिए, 3 2 Fizz 3 Buzz 5 Crackle 10इनपुट के रूप में किया जा सकता है:

3
3 [Buzz] 2 [Fizz] 5 [Crackle]
10

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

या एक अलग क्रम में इनपुट लेना:

डीसी , 118 बाइट्स

?dstsw[dlt:Y:Rlt1-dst0<q]dsqxsb1sm[ln;Y;RnlP1+sP]ss[lmn]sF[1sn0sP[lnd;Ylmr%0=s1+dsnlw!<g]dsgxlP0=Flm1+dsm10Plb!<i]dsix

यह एक अलग क्रम में इनपुट लेता है, लेकिन प्रारूप में एक पंक्ति में

k [str1] int1 [str2] int2 (...) [strn] intn n

उदाहरण के लिए, 3 2 Fizz 3 Buzz 5 Crackle 10इनपुट इस प्रकार होगा:

10 [Buzz] 3 [Fizz] 2 [Crackle] 5 3

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

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