জাজুব জাজিফ (উল্টো ফিজ বাজ)


36

সমস্ত সংখ্যা মুছে ফেলা সহ ফিজ বাজ আউটপুটের একটি স্নিপেট দেওয়া , সর্বনিম্ন সম্ভাব্য মানগুলির সাথে সঠিক সংখ্যা পূরণ করুন যেমন ফিজ বাজ স্নিপেট সঠিক। এই চ্যালেঞ্জের উদ্দেশ্যে fizzএবং buzzতাদের যথাক্রমে 3 এবং 5 এর মান রয়েছে values

ইনপুট একটি অবৈধ ক্রম হয়, তাহলে fizz, buzzআউটপুট এবং খালি লাইন, তারপর পরিবর্তে মাত্র zzubzzif(সঙ্গে বা নতুন লাইন ছাড়াই)।

ইনপুট এবং আউটপুটটি নতুন লাইন দ্বারা পৃথক করা লাইন হতে পারে বা অ্যারে-অফ-স্ট্রিং ফর্ম্যাটটি আপনার ভাষার পক্ষে উপযুক্ত।

মূলধনের সাথে আপনি যা পছন্দ করেন তা এড়ানো বা করতে পারেন।

আপনি এক বা এই আরও হ্যান্ডেল করার জন্য চয়ন করতে হবে: fizzbuzz, fizz buzz, buzz fizz, ইত্যাদি, কিন্তু আপনি এই ফরম্যাটের অন্তত একটি বাছাই করা উচিত।

আপনি অনুমান হতে পারে যে সমস্ত ইনপুট কিছু ক্রম fizz, buzzএবং লাইন খালি।

উদাহরণ

ইনপুট:
সাঁ-সাঁ শব্দ

আউটপুট:
2
fizz
4
ইনপুট:
গুঁজন
সাঁ-সাঁ শব্দ

আউটপুট:
buzz
fizz
7
ইনপুট:

fizzbuzz


আউটপুট:
13
14
fizzbuzz
16
17
ইনপুট:


আউটপুট:

1
ইনপুট:
সাঁ-সাঁ শব্দ
সাঁ-সাঁ শব্দ

আউটপুট:
zzubzzif
ইনপুট:


আউটপুট:
zzubzzif

উত্তর:


17

জাভা, 205 বাইট

s->{o:for(int i=0,j,h=s.length;++i<16;){for(j=h;j-->0;)if(s[j].contains("fizz")^(i+j)%3<1||s[j].contains("buzz")^(i+j)%5<1)continue o;String z=i+"";for(j=1;j<h;)z+="\n"+(i+j++);return z;}return"zzubzzif";}

একটি String[]ইনপুট হিসাবে নেয় এবং একটি প্রদান করে String

প্রসারিত, চলমান কোড:

public class C {

    static final java.util.function.Function<String[], String> f = s -> {
        o:
        for (int i = 0, j, h = s.length; ++i < 16;) {
            for (j = h; j --> 0;) {
                if (s[j].contains("fizz") ^ (i + j) % 3 < 1 ||
                    s[j].contains("buzz") ^ (i + j) % 5 < 1) {
                    continue o;
                }
            }
            String z = i + "";
            for (j = 1; j < h;) {
                z += "\n" + (i + j++);
            }
            return z;
        }
        return "zzubzzif";
    };

    public static void main(String[] args) {
        System.out.print(f.apply(new String[]{"fizz", "", "buzz"}));
    }
}

1
s / fizz / f, s / buzz / b
djechlin

10

সি #, 212 বাইট

আমি কল্পনাতীত করেছিলাম। আমি gotoএকটি লুপ ভাঙ্গার জন্য একটি বিবৃতি ব্যবহার !

string[]R(string[]a){for(int i,l=a.Length,n=0;n++<15;){for(i=l;i-->0;)if(((n+i)%3<1?"fizz":"")+((n+i)%5<1?"buzz":"")!=a[i])goto z;for(i=l;i-->0;)a[i]=a[i]==""?""+(n+i):a[i];return a;z:;}return new[]{"zzubzzif"};}

এটি এই ক্রমটি প্রথম 15 টি উপাদানের মধ্যে শুরু হওয়া উচিত বলে সুবিধা গ্রহণ করে।

পাঠযোগ্যতার জন্য সূচক এবং নতুন লাইন:

string[]R(string[]a){
    for(int i,l=a.Length,n=0;n++<15;){
        for(i=l;i-->0;)
            if(((n+i)%3<1?"fizz":"")+((n+i)%5<1?"buzz":"")!=a[i])
                goto z;
        for(i=l;i-->0;)
            a[i]=a[i]==""?""+(n+i):a[i];
        return a;
    z:;
    }
    return new[]{"zzubzzif"};
}

সি # এর breakকিওয়ার্ড নেই?
বিড়াল

2
@ কেট, এটি করে তবে এটি gotoঅভ্যন্তরীণ লুপ থেকে বাইরে বেরিয়ে আসা এবং বাইরের লুপের বাকী যুক্তি ছাড়িয়ে যায়।
হ্যান্ড-ই-ফুড

প্রথমবার আমি gotoসি # তে শুনেছি ! এমনকি সি # এটিও জানত না!
সার্জিওল

4

সিজেম, 72 বাইট

"zzubzzif":MaqN/:Q,_F+{)_[Z5]f%:!MW%4/.*s\e|}%ew{:sQ1$A,sff&:s.e|=}=N*o;

প্রোগ্রামটি যদি কোনও zzubzzif মুদ্রণ করতে হয় তবে একটি ত্রুটি সহ প্রস্থান করবে ।

জাভা ইন্টারপ্রেটার ব্যবহার করে, একটি শেষ ত্রুটি বার্তাটি দমন করতে STDERR বন্ধ করা যেতে পারে can আপনি যদি সিজেএম ইন্টারপ্রেটারে প্রোগ্রামটি চেষ্টা করেন তবে প্রথম লাইনের পরে সমস্ত আউটপুট উপেক্ষা করুন।

কিভাবে এটা কাজ করে

"zzubzzif" e# Push that string.
:Ma        e# Save it in M and wrap in in an array.
qN/:Q      e# Split the input into lines and save in Q.
,_F+       e# Count the lines and add 15 to a copy of the result.
{          e# For each integer I between 0 and lines+14:
  )_       e#   Increment I and push a copy.
  [Z5]     e#   Push [3 5].
  f%       e#   Map % to push [(I+1)%3 (I+1)%5].
  :!       e#   Apply logical NOT to each remainder.
  MW%4/    e#   Push ["fizz" "buzz"].
  .*       e#   Vectorized string repetition.
  s\       e#   Flatten the result and swap it with I+1.
  e|       e#   Logical OR; if `s' pushed an empty string, replace it with I+1.    
}%         e#
ew         e# Push the overlapping slices of length "lines".
{          e# Find; for each slice:
  :s       e#   Cast its elements to string (e.g., 1 -> "1").
  Q1$      e#   Push the input and a copy of the slice.
  A,s      e#   Push "0123456789".
  ff&      e#   Intersect the slice's strings' characters with that string.
  :s       e#   Cast the results to string. This replaces "fizz", "buzz"
           e#   and "fizzbuzz" with empty strings.
  .e|      e#   Vectorized logical OR; replace empty lines of the input
           e#   with the corresponding elements of the slice.
  =        e#   Check the original slice and the modified input for equality.
}=         e# Push the first match or nothing.
           e# We now have ["zzubzzif"] and possibly a solution on the stack.
N*         e# Join the topmost stack item, separating by linefeeds.         
o          e# Print the result.
;          e# Discard the remaining stack item, if any.

1

পার্ল, 140 বাইট

$f=fizz;$b=buzz;@a=<>;@x=map{s!\d!!gr.$/}@s=map{$_%15?$_%3?$_%5?$_:$b:$f:$f.$b}(++$c..$c+$#a)while$c<15&&"@x"ne"@a";print$c<15?"@s":zzubzzif

ব্যাখ্যা

  1. @a ইনপুট লাইনের অ্যারে
  2. whileলুপের ভিতরে ,
  3. @s জেনারেটেড ফিজ-বাজ ক্রম রয়েছে
  4. @xহিসাবে একই @sকিন্তু খালি স্ট্রিং এবং একটি নতুন লাইন যে উপাদানে appened দিয়ে প্রতিস্থাপিত সংখ্যার (সঙ্গে মেলে @a)
  5. $c 1 থেকে 15 এর কাউন্টার
  6. লুপ চালানো পর্যন্ত @xইনপুট হিসাবে একই হয়ে যায়@a
  7. লুপের বাইরে, আউটপুটটি তার সীমাতে ছিল @sকিনা $cতার ভিত্তিতে zzufzzib হয়

1

পাইথন, 176 বাইট

সম্ভবত অনেক ভাল করতে পারে, কিন্তু গল্ফ এ প্রথম প্রচেষ্টা। টিপস প্রশংসা :)

সঙ্কুচিত

def f(a):l=len(a);g=lambda n:'fizz'*(n%3<1)+'buzz'*(n%5<1);r=range;return next(([g(x)or x for x in r(i%15,i%15+l)]for i in r(1,16)if all(g(i+x)==a[x]for x in r(l))),g(0)[::-1])

মূল

def f(a):
  l = len(a)
  g = lambda n: 'fizz'*(n%3<1)+'buzz'*(n%5<1)
  r = range
  return next(
    (
      [g(x) or x for x in r(i % 15,i % 15 + l)]
      for i in r(1,16)
      if all(
        g(i + x) == a[x] for x in r(l)
      )
    ),
    g(0)[::-1]
  )

পিপিসিজিতে আপনাকে স্বাগতম! মানক বিন্যাসের নির্দেশিকা হ'ল আপনার শিরোনামের সাথে উত্তরটি প্রবর্তন করা, যাতে পাঠকরা ভাষা জানেন এবং লিডারবোর্ড স্নিপেটগুলি আপনার উত্তরটিকে যথাযথভাবে পার্স করতে পারে। উদাহরণস্বরূপ, #Java, 205 Bytesআপনার উত্তরের প্রথম লাইন হিসাবে।
অ্যাডমবর্কবার্ক

1
নিম্নলিখিতগুলির সাথে ল্যাম্বদাটি প্রতিস্থাপনের চেষ্টা করুন: 'fizz'*(n%3<1)+'buzz'*(n%5<1)আপনি তখন f এবং b কার্যভার সরিয়ে ফেলতে পারেন। (f+b)[::-1]তারপরে কোনও পরিচিত 'ফিজবজ'-এর কাছে কল হতে পারে যেমন g(15)[::-1]
টড

পরামর্শের জন্য ধন্যবাদ! নিচে 183! আমি মনে করি g(0)এটি অন্য বাইট সংরক্ষণেও কাজ করে :)
arcyqwerty

1
অজগর 2 কীওয়ার্ডের আগে কিছু স্পেস সরিয়ে ফেলতে দেয় যখন কোনও অস্পষ্টতা নেই: উদাহরণস্বরূপ ..] for লিখিত হতে পারে ..]for। এই কৌশলটি প্রয়োগ করে আপনি 177 টি অক্ষর পাবেন
ডাইটার

আপনি পরবর্তী সময় কোডটি লেখার সময় আপনি যে ইনপুটটি ধরে নিয়েছিলেন তা অন্তর্ভুক্ত করতে পারে? উদাহরণস্বরূপ ফর্মের তালিকা ['','fizz','']আপনি যদি সমস্ত () ব্যবহার না করে ইনপুট তালিকার তুলনায় কোনও তালিকা কমের তুলনায় ইনপুট তালিকাটি তুলনা করেন তবে আরও কিছু আছেif a==[g(i + x) for x in r(l)]
টড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.