স্মার্ট ব্যক্তির মেরাজ


29

একসময়, আমি এই প্রশ্ন / উত্তরটি কোওরায় পড়ছিলাম

কম্পিউটার সায়েন্স ডিগ্রি সহ সত্যিই এমন প্রোগ্রামাররা আছেন যারা ফিজবুজ পরীক্ষায় পাস করতে পারবেন না?

এই কোডটি সুস্পষ্ট উত্তর হিসাবে দেওয়া হয়েছে

for i in range(1, 100):
    if i % 3 == 0 and i % 5 == 0:
        print "FizzBuzz"
    elif i % 3 == 0:
        print "Fizz"
    elif i % 5 == 0:
        print "Buzz"
    else:
        print i

অবশ্যই ফিজবজকে মৃত্যুর মুখোমুখি করা হয়েছে, তবে এই প্রশ্নটি এটাই নয়। আপনি দেখুন, মন্তব্যে, কেউ উল্লেখ করেছেন যে এই স্পষ্ট উত্তরটি দুর্দান্ত কারণ 4 এর গুণকগুলির জন্য "জাজ" মুদ্রণের মতো অতিরিক্ত শর্তাদি যুক্ত করা সহজ easy (আমি সম্মত নই this ) কোড লাইন।)

আপনার চ্যালেঞ্জ হ'ল আপনার সমবয়সীদের দ্বারা বিচারিত হিসাবে ফিজজাজবজ-এর সবচেয়ে সুন্দর সংস্করণ লিখুন।

ভোটারদের জন্য কিছু বিষয় বিবেচনা করুন:

  1. শুকনো
  2. বিভাগ / মডুলাস অপারেশন দক্ষতা

কোওরার উত্তরগুলির মধ্যে অনেকগুলি পাইথন ব্যবহার করছিল, তবে এখানে ভাষার কোনও সীমাবদ্ধতা নেই।

আমি এখন থেকে এক মাসের মধ্যে সবচেয়ে বেশি ভোট দিয়ে উত্তরটি গ্রহণ করব

নমুনা আউটপুট:

1
2
Fizz
Jazz
Buzz
Fizz
7
Jazz
Fizz
Buzz
11
FizzJazz
13
14
FizzBuzz
Jazz
17
Fizz
19
JazzBuzz
Fizz
22
23
FizzJazz
Buzz
26
Fizz
Jazz
29
FizzBuzz
31
Jazz
Fizz
34
Buzz
FizzJazz
37
38
Fizz
JazzBuzz
41
Fizz
43
Jazz
FizzBuzz
46
47
FizzJazz
49
Buzz
Fizz
Jazz
53
Fizz
Buzz
Jazz
Fizz
58
59
FizzJazzBuzz
61
62
Fizz
Jazz
Buzz
Fizz
67
Jazz
Fizz
Buzz
71
FizzJazz
73
74
FizzBuzz
Jazz
77
Fizz
79
JazzBuzz
Fizz
82
83
FizzJazz
Buzz
86
Fizz
Jazz
89
FizzBuzz
91
Jazz
Fizz
94
Buzz
FizzJazz
97
98
Fizz
JazzBuzz
popularity-contest  code-challenge  word  popularity-contest  string  grid  language-design  code-golf  source-layout  math  fastest-algorithm  assembly  code-golf  json  code-golf  arithmetic  array-manipulation  code-golf  ascii-art  code-golf  crossword  code-golf  string  restricted-complexity  code-golf  ascii-art  kolmogorov-complexity  code-golf  string  decision-problem  balanced-string  syntax  code-golf  grid  puzzle-solver  hexagonal-grid  code-golf  math  number  sequence  code-golf  string  decision-problem  code-golf  cryptography  king-of-the-hill  code-challenge  fastest-code  code-golf  number  code-golf  code-golf  string  code-golf  cryptography  king-of-the-hill  java  code-golf  number-theory  base-conversion  code-golf  code-golf  array-manipulation  code-golf  array-manipulation  sorting  code-challenge  restricted-source  quine  code-golf  tips  python  king-of-the-hill  code-golf  source-layout  fractal  code-golf  tips  game  king-of-the-hill  path-finding  grid  code-golf  kolmogorov-complexity  natural-language  code-golf  tips  python  code-golf  number  arithmetic  sequence  array-manipulation  code-golf  number  combinatorics  random  integer-partitions  code-golf  string  code-golf  vim  comment  code-golf  combinatorics  counting  code-challenge  rosetta-stone  code-golf  combinatorics  sequence  subsequence  code-golf  code-challenge  restricted-source  primes  printable-ascii  popularity-contest  graphical-output  image-processing 

1
আপনার দ্বিতীয় বুলেট পয়েন্টটি কিছুটা অস্পষ্ট ... কোন বিভাগকে দক্ষ করে তোলে? কেন এই চ্যালেঞ্জ জন্য গুরুত্বপূর্ণ?
39-এ

@ সানচিইসস, এখনও প্ল্যাটফর্মগুলি রয়েছে, বিশেষত মাইক্রোকন্ট্রোলারগুলি, যেগুলির খুব ব্যয়বহুল (চক্র / সময়) বিভাগীয় ক্রিয়াকলাপ রয়েছে। নীচের উত্তরগুলির মধ্যে কমপক্ষে একটি সম্পূর্ণরূপে বিভাগ / মডুলাস এড়িয়ে চলে - তবে সম্ভবত পাঠ্যতা ব্যথা করে। এটি ভোটারদের বিবেচনা করার মতো কিছু।
gnibbler

1
@ সংশ্লেষগুলি একেবারেই অস্পষ্ট নয় এই আইএমএইচও বিন্দুটি বিভাগ / মডুলাসটি মোটেই ব্যবহার করছে না। আপনি প্রতিটি এন = (3,4,5 ...) এর জন্য কেবল একটি ভেরিয়েবল রেখে এবং এটির অসুবিধাগ্রস্থ হওয়ার সময়ে এটি পুনরায় সেট করতে এবং কোনও শব্দ মুদ্রণ করতে এবং যখন না বাড়ানো যায় তখন এটি করতে পারেন। শুকনো অংশটি একটি ক্রিয়া / পদ্ধতি গ্রহণ করতে পারে (এন, শব্দ) এবং এইভাবে আরও শব্দকে বাতাস যুক্ত করার "রক্ষণাবেক্ষণ" করতে পারে
জিন

1
অত্যন্ত প্রাসঙ্গিক: themonadreader.files.wordpress.com/2014/04/fizzbuzz.pdf
হজুল

উত্তর:


101

সবচেয়ে সুন্দর সংস্করণ, আপনি বলেন? তারপরে, এর মধ্যে এটি চেষ্টা করি ...

শেক্সপিয়ার প্রোগ্রামিং ভাষা

The Marvelously Insane FizzBuzzJazz Program.

Lady Capulet, an old bossy woman that loves to count.
The Archbishop of Canterbury, an old fart who adores to spit out letters.


          Act I: The only one of them.

          Scene I: The Archbishop of Canterbury is a bastard.

[Enter The Archbishop of Canterbury and Lady Capulet]

The Archbishop of Canterbury:
 You are nothing!

          Scene II: Count, Lady Capulet, count.

The Archbishop of Canterbury:
 You are as beautiful as the sum of yourself and a cat!

Lady Capulet:
 Am I worse than the square of the product of the sum of a warm gentle flower and a rose
 and my pretty angel?

The Archbishop of Canterbury:
 If not, let us proceed to Scene VIII.

          Scene III: Fizzing to no end!

The Archbishop of Canterbury:
 Is the remainder of the quotient between yourself and the sum of a happy cow and a
 chihuahua as good as nothing?

Lady Capulet:
 If not, let us proceed to Scene IV. Thou art as handsome as the sum of the sum of
 the sweetest reddest prettiest warm gentle peaceful fair rose and a happy proud kindgom
 and a big roman. Speak thy mind!

 Thou art as fair as the sum of thyself and a honest delicious cute blossoming peaceful
 hamster. Thou art as cunning as the sum of the sum of an embroidered King and a horse
 and thyself. Speak thy mind!

 Thou art as amazing as the sum of the sum of a good happy proud rich hero and a hair and
 thyself! Speak thy mind.

 Speak your mind!

          Scene IV: Milady, there is jazz in thy robe.

The Archbishop of Canterbury:
 Is the remainder of the quotient between yourself and a proud noble kingdom as good as
 nothing?

Lady Capulet:
 If not, let us proceed to Scene V. You are as charming as the sum of the sum of a noble
 cunning gentle embroidered brave mighty King and a big warm chihuahua and an amazing
 pony! Speak your mind!

 You are as prompt as the sum of yourself and a big black sweet animal. You are as noble
 as the sum of the sum of a gentle trustworthy lantern and yourself and a hog. Speak your
 mind!

 You are as bold as the sum of the sum of yourself and a good delicious healthy sweet
 horse and my smooth cute embroidered purse. You are as peaceful as the sum of a flower
 and yourself. Speak your mind.

 Speak your mind!

          Scene V: Buzz me up, Scotty!

The Archbishop of Canterbury:
 Is the remainder of the quotient between yourself and the sum of a gentle happy cow and a
 chihuahua as good as nothing?

Lady Capulet:
 If not, let us proceed to Scene VI. Thou art as handsome as the sum of the sweetest
 reddest prettiest warm gentle peaceful fair rose and a small town. Speak your mind!

 You are as prompt as the sum of yourself and a big healthy peaceful fair rich kingdom.
 You are as loving as the sum of the sum of an embroidered King and a horse and thyself.
 You are as amazing as the sum of yourself and a cute fine smooth sweet hamster. Speak
 your mind!

 You are as prompt as the sum of the sum of yourself and an amazing cunning Lord and a
 hair. Speak your mind.

 Speak your mind!

The Archbishop of Canterbury:
 Let us proceed to Scene VII.

          Scene VI: Output or die!

The Archbishop of Canterbury:
 Open your heart!

          Scene VII: Oh, to jump the line.

Lady Capulet:
 You are as handsome as the sum of a proud noble rich kingdom and a rural town. Speak your
 mind! You are as gentle as the sum of the sum of yourself and a green mistletoe and my
 father. Speak your mind!

The Archbishop of Canterbury:
 We must return to Scene II.

          Scene VIII: Goodbye, cruel world!

[Exeunt]

সুতরাং, এখানে এসপিএলের সাথে আমার লড়াইয়ের পরে , আমার মনে হয়েছিল যে কোনও চ্যালেঞ্জের সাথে এটির সাথে আমার কমপক্ষে একটি জমা দিতে হয়েছিল। এবং এটি এটি।

তো, এত কিছুর পরে?

সুতরাং, প্রথমে, আমরা ভেরিয়েবলগুলি ঘোষণা করি আমরা পুরো প্রোগ্রাম জুড়ে ব্যবহার করতে যাচ্ছি, যা অবশ্যই শেক্সপিয়ার নাটকগুলি থেকে আসা উচিত। রোমিও, জুলিয়েট, ওফেলিয়া এবং ওথেলো থেকে বিরক্ত হয়ে আমি ক্যানটারবেরির আরচবিশপ এবং লেডি ক্যাপুলেটের সাথে উঠেছিলাম । তাদের বিবরণগুলির পাশাপাশি আইনগুলির / দৃশ্যের শিরোনামগুলি পার্সার দ্বারা অসম্মানিত হয়, যাতে আপনি নিজের পছন্দমতো কিছু রাখতে পারেন।

সুতরাং, আসুন আমরা কিছুটা কম জিব্বারিশির অনুবাদে কিছু রাজা তৈরি করি ।

আইন আমি, দৃশ্য আমি

Begin Lady Capulet = 0;

আইন আমি বেশ সহজবোধ্য: আমরা 0 দিয়ে আমাদের পরিবর্তনশীল সূচনা করি।

আইন প্রথম, দৃশ্য II

Lady Capulet += 1; if(Lady Capulet < Math.pow((2*2*1+1)*(2*1),2)) continue; else goto Scene VIII;

আমরা লেডি ক্যাপুলেটের মান বৃদ্ধি করি এবং এটি 100 এর সাথে তুলনা করি (হ্যাঁ, এই পুরো বাক্যটি কেবলমাত্র 100 নম্বর পাওয়ার জন্য কাজ করে); যদি এটি ছোট না হয়, তবে আমরা দৃশ্যে অষ্টম (শেষ) পর্যন্ত চলে যাই; অন্যথায়, আমরা পরবর্তী দৃশ্যে অবিরত থাকি।

আইন আই, সিন তৃতীয়

if(Lady Capulet % (2+1) == 0) continue; else goto Scene IV; The Archbishop of Canterbury = 2*2*2*2*2*2*1; System.out.print((char)The Archbishop of Canterbury); The Archbishop of Canterbury += 2*2*2*2*2*1; The Archbishop of Canterbury += 2*1+1; System.out.print((char)The Archbishop of Canterbury); The Archbishop of Canterbury += 2*2*2*2*1+1; System.out.print((char)The Archbishop of Canterbury); System.out.print((char)The Archbishop of Canterbury);

প্রথমত, আমরা দেখতে পাই যে 3 দ্বারা বিভাজনের মডুলাস 0 হয়; যদি তা না হয় তবে আমরা দৃশ্য চতুর্থ দিকে ঝাঁপ দাও; যদি এটি হয়, আমরা পাটিগণিত অপারেশনগুলি শুরু করি এবং তাদের আর্চিপিসনরে স্টোরেজ করা, অক্ষর আকারে আউটপুট আউট করার পরে আমরা যার সন্ধান করছি তার সন্ধান করি। হ্যাঁ, শেষ পর্যন্ত, ধারণাটি পাওয়া উচিত Fizz

আইন আই, দৃশ্য চতুর্থ

if(Lady Capulet % (2*2) == 0) continue; else goto Scene V; The Archbishop of Canterbury = 2*2*2*2*2*2*1+2*2*1+2*1; System.out.print((char)The Archbishop of Canterbury); The Archbishop of Canterbury += 2*2*2*1; The Archbishop of Canterbury += 2*2*1+(-1); System.out.print((char)The Archbishop of Canterbury); The Archbishop of Canterbury += 2*2*2*2*1+2*2*2*1; The Archbishop of Canterbury += 1; System.out.print((char)The Archbishop of Canterbury); System.out.print((char)The Archbishop of Canterbury);

4 টি দ্বারা বিভাগের মডুলাস 0 হয় কিনা তা প্রথমে পরীক্ষা করে দেখুন, তারপরে আগের মতো একই দৃশ্যের মতো অবিরত থাকবে Jazz

আইন আই, দৃশ্য ভি

if(Lady Capulet % (2*2+1) == 0) continue; else goto Scene VI; The Archbishop of Canterbury = 2*2*2*2*2*2*1+2*1; System.out.print((char)The Archbishop of Canterbury); The Archbishop of Canterbury += 2*2*2*2*2*1; The Archbishop of Canterbury += 2*1+1; The Archbishop of Canterbury += 2*2*2*2*1; System.out.print((char)The Archbishop of Canterbury); The Archbishop of Canterbury += 2*2+1; System.out.print((char)The Archbishop of Canterbury); System.out.print((char)The Archbishop of Canterbury); goto Scene VII;

আগের দুটির মতো ফাংশন, বিভাগের মডিউলাস 5 দিয়ে 0 দেখায় কিনা তা পরীক্ষা করে, তারপর লেখার চেষ্টা করে Buzz; পার্থক্যটি হ'ল শেষ পর্যন্ত, আমরা একটি দৃশ্য ছেড়ে চলে যাই।

আইন আই, দৃশ্য ষষ্ঠ

System.out.print(Lady Capulet);

এই দৃশ্যে পৌঁছানোর জন্য, লেডি ক্যাপুলেট দ্বারা ধরে নেওয়া সংখ্যা অবশ্যই ফিজ বা জাজ বা বুজ নয়; সুতরাং, আমরা এটি সংখ্যার আকারে আউটপুট।

আইটেম আই, সিন অষ্টম

The Archbishop of Canterbury = 2*2*2*1+2*1; System.out.print((char)The Archbishop of Canterbury); The Archbishop of Canterbury += 2*1+1; System.out.print((char)The Archbishop of Canterbury); goto Scene II;

সুতরাং, এই একমাত্র উপায়টি আমি পরের লাইনে ঝাঁপিয়ে দেখতে পেয়েছি: আউটপুট, প্রথমে, একটি সিআর, তারপরে একটি এলএফ; তারপরে, আমরা দৃশ্যের দ্বিতীয়টিতে ফিরে যাই, যাতে আমরা প্রোগ্রামটি চালিয়ে যেতে পারি।

আইটেম আই, দৃশ্য অষ্টম

End.

যথেষ্ট সোজা।

আমি এখনও অনলাইনে এই চলমানটি প্রদর্শন করতে পারি কিনা তা দেখার চেষ্টা করছি, তবে আমি একটি অনলাইন সংকলকটি খুঁজে পাচ্ছি না - যা আমি জানি তিনি ইতিমধ্যে লোড হওয়া ব্যতীত অন্য কোনও প্রোগ্রামের সাথে ভালভাবে একত্রিত হবে বলে মনে হয় না, বা সম্ভবত কিছু রকম রয়েছে কীবোর্ড এবং চেয়ারের মধ্যে ইন্টারফেস নিয়ে সমস্যা ...

আপডেট 1:

ম্যাথমন্ডনের মন্তব্যের পরে, আমি জাজ এবং বুজের দৃশ্যের ক্রম সম্পাদনা করেছি। এটা করা ছিল।


1
দেখে মনে হচ্ছে আমার ডিএনএস সমস্যা আছে। মিথ্যা এলার্ম জন্য দুঃখিত।
রেনবোল্ট

17
শেক্সপীয়র কখনই কোড-গল্ফ হয় না কেন তা অবাক করে দেয়।
Sanchises

5
আমি আশা করছিলাম যে দৃশ্য III, IV এবং V যথাক্রমে ফিজ, জাজ এবং বাজের সাথে মিল রাখবে। তবুও, সুন্দর করে!
mathmandan

1
টুইটার উজ্জ্বল কিছু করার নষ্ট সুযোগ। অভিশাপ !!
রোডলফো ডায়াস

1
এটি দুর্দান্ত, তবে আমি একটি বাগ লক্ষ্য করেছি বলে মনে হচ্ছে। আমার মনে হয় এটি বাজ না হলেও এটি সংখ্যাটি আউটপুট করে দেবে, এটি কোনও ফিজ বা জ্যাজ নির্বিশেষে। আমি এটি চালাইনি, তবে আমি এটির জন্য চেকটি খুঁজে পাচ্ছি না। আর্কবিশপ হ'ল zএবং প্রতিটি লুপের আগে তাকে পুনরায় সেট করতে পারলে আপনি শেষ পর্যন্ত পরীক্ষা করতে পারেন ।
মাতেগা

45

> <> (মাছ)

1 > :9b*)?; 0& v
               \ :3%?v "Fizz" r}oooo &1+& \
               /     <                    /
               \ :4%?v "Jazz" r}oooo &1+& \
               /     <                    /
               \ :5%?v "Buzz" r}oooo &1+& \
               /     <                    /
               \   &?v :n                 \
  ^  +1 oa           <                    /

> <> একটি 2 ডি প্রোগ্রামিং ল্যাঙ্গুয়েজ যেখানে নির্দেশাবলী একক অক্ষর এবং নির্দেশ পয়েন্টার (আইপি) তীর ^>v<এবং আয়নাগুলির উপর নির্ভর করে উপরে, নীচে, বাম বা ডানদিকে যেতে পারে /\। এটিতে ভেরিয়েবল বা স্ট্রিং নেই তাই নিজেকে পুনরাবৃত্তি না করা কিছুটা শক্ত, তবে আমি মনে করি এটি নিজস্ব পদ্ধতিতে দুর্দান্ত।

আমরা 1লুপটি টিপুন এবং শুরু করি। :9b*)?;সংখ্যাটি 99 ( 9b* = 9*11) এর চেয়ে বেশি কিনা তা পরীক্ষা করে এবং যদি তাই হয় তবে প্রোগ্রামটি বন্ধ রয়েছে ;। অন্যথায়, নিবন্ধরে একটি 0 রাখুন এবং down vেউয়ের অংশে সরান ।

:3%?মডুলো ৩ নম্বর পরীক্ষা করে দেখুন it's এটি যদি ননজারো হয় তবে আমরা vএকটি সারিতে নেমে বাম দিকে সরে যাই <। অন্যথায়, আমরা নীচের তীরটি এড়িয়ে ধাক্কা দিয়ে "Fizz"এটিকে মুদ্রণ করুন ( r}oooo) মুদ্রণ করুন ( ) এবং &1+&একটি সারিতে নীচে যাওয়ার জন্য ডান প্রাচীরের আয়নাগুলি ঝাঁকিয়ে যাওয়ার আগে রেজিস্টার বৃদ্ধি করুন ( )। যে কোনও উপায়ে আমরা তৃতীয় সারির বাম দিকে অগ্রসর হব, যতক্ষণ না আমরা বাম প্রাচীরের আয়নাগুলি বন্ধ করে আছি। তারপরে আমরা Jazzএবং এর জন্য পুনরাবৃত্তি করি Buzz

এটি 7 তম লাইন পর্যন্ত অব্যাহত থাকে যা নিবন্ধকের &মান পরীক্ষা করে । যদি এটি ননজারো হয় তবে আমরা কেবল নেমে যাব। অন্যথায়, আমরা nনামার আগে নম্বরটি নিজেই মুদ্রণ করি ।

শেষ aoঅবধি , (মনে রাখবেন, আমরা এখন বাম দিকে চলে যাচ্ছি!) 1+আমরা উপরে উঠে আবার ^লুপটি করার আগে একটি ASCII নিউলাইন প্রিন্ট করে এবং সংখ্যাটি বাড়িয়ে তোলে >

(এখন আমরা একটি নান্দনিক পিট উত্তরের জন্য অপেক্ষা করছি ...)


3
এটা সুন্দর. > << উত্তরগুলির জন্য এটি খ্যাতির হলে যাওয়া উচিত।
জোশপবারন

2
আমার চোখ তত্ক্ষণাত লাফিয়ে উঠল: 3।
এমবিলেম

ঠিক আছে, সেই ভাষা কোনও পাঠযোগ্যতার পুরষ্কার জিততে পারে না, তবে এটি বেশ ঝরঝরে।
উইলিয়াম টি ফ্রগগার্ড

40

LOLCODE

মার্জিত? নাঃ। দক্ষ? অবশ্যই না. সুন্দর? ওয়েল, আপনি কী জানেন তারা জানেন: সৌন্দর্য দর্শকের চোখে পড়ে।

HAI
I HAS A kitty ITZ 1
IM IN YR house UPPIN YR kitty TIL BOTH SAEM kitty AN 100

    BTW, computin yr mods
    I HAS A d00d ITZ NOT MOD OF kitty AN 3
    I HAS A doge ITZ NOT MOD OF kitty AN 4
    I HAS A bro ITZ NOT MOD OF kitty AN 5

    ANY OF d00d bro doge MKAY, O RLY?
    YA RLY
        d00d, O RLY?
        YA RLY
            VISIBLE "Fizz"!
        OIC
        doge, O RLY?
        YA RLY
            VISIBLE "Jazz"! BTW, wow such jazz
        OIC
        bro, O RLY?
        YA RLY
            VISIBLE "Buzz"!
        OIC
    NO WAI
        VISIBLE kitty!
    OIC

    VISIBLE ""
IM OUTTA YR house
KTHXBYE

কিছু ব্যাখ্যা:

ললকোডি প্রোগ্রামগুলি শুরু হয় HAIএবং শেষ হয় KTHXBYE

ভেরিয়েবলগুলি ডায়নামিকভাবে টাইপ করা হয় এবং ব্যবহার করে নির্ধারিত হয় I HAS A <variable> ITZ <value>। একবার সংজ্ঞায়িত হয়ে গেলে ভেরিয়েবলগুলিও ব্যবহার করে বরাদ্দ করা যেতে পারে <variable> R <value>

LOLCODE এ লুপগুলির নাম দেওয়া হয়েছে। বাক্য গঠনটি হ'ল:

IM IN YR <loop> UPPIN YR <index> TIL BOTH SAEM <index> AN <end>
    <stuff to do>
IM OUTTA YR <loop>

এটি "i = শেষ না হওয়া পর্যন্ত" লুপের জন্য কেবল ইন্টারনেট স্পোক। LOLCODE 1.2 এ, সূচী ভেরিয়েবলটি লুপের আগে শুরু করা দরকার। এখানে লুপটির নাম দেওয়া হয়েছে "বাড়ি" কারণ এটি লুপের প্রারম্ভিক পড়াটি হাস্যকর করে তোলে।

VISIBLEstdout প্রিন্ট। ডিফল্টরূপে একটি নতুন লাইন সংযুক্ত করা হয়, তবে যুক্ত করা !নতুনলাইনটিকে দমন করে।

শর্তাবলী নিম্নলিখিত হিসাবে নির্দিষ্ট করা হয়:

<condition>, O RLY?
YA RLY
    <code to execute if condition is true>
NO WAI
    <code to execute if condition is false>
OIC

শর্তগুলি হয় এমন একটি মত প্রকাশের হতে হবে যা বুলিয়ান বা বুলিয়ান মানগুলির মূল্যায়ন করে। ললকোডে, বুলিয়ান টাইপ বলা হয় TROOFএবং এর মান WIN(সত্য) এবং FAIL(মিথ্যা) থাকে।

একক লাইন মন্তব্য দিয়ে শুরু BTW

তেহ ইন্টারনেটৰ ভাষাতে ভাল পৰা নাই? শুধু আমাকে জানান এবং আমি আনন্দের সাথে আরও ব্যাখ্যা সরবরাহ করব।


3
গ্রেট। এই অবিশ্বাস্য. আমি এখনও হাসছি
rpax

@ আরপ্যাক্স: দুর্দান্ত ... সব পরিকল্পনা অনুযায়ী চলছে ...
অ্যালেক্স এ।

33

Python3

lst = [('Fizz', 3),
       ('Jazz', 4),
       ('Buzz', 5),
       ]

for i in range(1, 101):  
    print(*[w for w, m in lst if i % m == 0] or [i], sep='')

বর্তমান শীর্ষ উত্তর মধ্যে এই শুধুমাত্র একটি কোন ফর্ম রয়েছেEfficiency of division/modulus operations
aross

@ আরসস আপনার মানে কি? আমি যে সমস্ত উত্তর দেখেছি সেগুলি এই বিভাগ হিসাবে প্রায়শই একই সংখ্যক / মডুলাস অপারেশন ব্যবহার করে।
হিজুল

সত্যি? অন্যান্য সমস্ত উত্তর প্রতিটি জন্য একটি মডুলাস অপারেটর ব্যবহার (3, 4, 5)। এটি তিনবার নকল করা হয়। এটি কেবলমাত্র একক মডুলাস অপারেটরের সাথে একমাত্র শীর্ষ উত্তর।
aross

1
আমি শুধু প্রশ্নের মন্তব্য পড়েছি। আমার ধারণা আমি উদ্ধৃত বাক্যটির ভুল ব্যাখ্যা করেছি। DRYপরিবর্তে উল্লেখ করা উচিত ছিল । তদুপরি, এই উত্তরটি ওপি দ্বারা রচিত।
aross

31

Piet

বড় দৃশ্যআসল "উত্স"

আমি চেষ্টা করেছি এবং পিটের সাথে খেলব এবং আমি কী কোড তৈরি করতে পারি তা দেখুন। আমি এখানে কোনও কিছুর পুনরাবৃত্তি না করার চেষ্টা করি, যদিও সৎ হতে আমাকে মোডের গণনাগুলি পুনরাবৃত্তি করতে হবে। তবে প্রতিটি স্বতন্ত্র মোড (এন% 3, এন% 4, এবং এন% 5) কেবল কোডের পুনরাবৃত্তির জন্য একবার চালানো হয়।

ছোট চিত্রটি হ'ল সঠিক উত্স, এবং এখানে আপলোড এবং চালানো যেতে পারে ।

উপভোগ করুন!


4
"সত্যিই কম্পিউটার বিজ্ঞান ডিগ্রী সঙ্গে প্রোগ্রামারদের যারা FizzBuzz পরীক্ষা পাস করতে পারে না Piet মধ্যে ?"
Sanchises

26

ম্যাথামেটিকাল

গাণিতিকায় আপনি খুব নির্দিষ্ট প্যারামিটারের জন্য ফাংশন সংজ্ঞায়িত ও ওভারলোড করতে পারেন (কেবল টাইপ অনুসারে নয়, স্বেচ্ছাসেবী যৌক্তিক অবস্থার দ্বারাও)। আসুন কয়েকটি ফাংশন সংজ্ঞায়িত করা যাক:

Fizz[n_, s___] := {n, s}
Fizz[n_ /; Divisible[n, 3], s___] := {n, "Fizz" <> s}
Jazz[n_, s___] := {n, s}
Jazz[n_ /; Divisible[n, 4], s___] := {n, "Jazz" <> s}
Buzz[n_, s___] := {n, s}
Buzz[n_ /; Divisible[n, 5], s___] := {n, "Buzz" <> s}
DoThe[n_] := n
DoThe[_, s_] := s

এবং এখন আসল প্রোগ্রাম নিছক

DoThe @@@ Fizz @@@ Jazz @@@ Buzz /@ Range[100] // TableForm

এখন যখন উপরেরটি কেবলমাত্র বিভাজকের সংখ্যার সাথে সামঞ্জস্যভাবে বৃদ্ধি পায়, তখনও এটি খুব বেশি শুষ্ক নয়। তবে আমরা আসলে এই সংজ্ঞাগুলিতে নাম হিসাবে ভেরিয়েবল ব্যবহার করতে পারি। সুতরাং আমরা আসলে একটি ফাংশন লিখতে পারি যা এই ফাংশন সংজ্ঞা উত্পন্ন করে:

addFunction[f_, divisor_] := (
  f[n_, s___] := {n, s};
  f[n_ /; Divisible[n, divisor], s___] := {n, ToString[f] <> s}
)
addFunction[Fizz, 3];
addFunction[Jazz, 4];
addFunction[Buzz, 5];
DoThe[n_] := n
DoThe[_, s_] := s

DoThe @@@ Fizz @@@ Jazz @@@ Buzz /@ Range[100] // TableForm

এখন আপনাকে যা করতে হবে তা হ'ল অন্য addFunctionকল যুক্ত করুন **zzএবং চূড়ান্ত লাইনে আপনার নতুন যুক্ত করুন ।


13
DoThe @@@ Time @@@ Warp @@@ Again /@ Range[100] // TableForm
Sp3000

10
এটি কেবল একটি JMPবাম দিকে!
মাইক দ্য লাইয়ার

"আপনাকে যা করতে হবে তা হ'ল আরেকটি অ্যাডফানশন কল যোগ করা" "... এবং চূড়ান্ত লাইনে নতুন ফাংশন যুক্ত করুন?
স্পার

@ স্পার ওহ হ্যাঁ এটি সত্য
মার্টিন এন্ডার

22

Haskell,

আপনি ছেলেরা DRY গুরুত্বের সাথে নিচ্ছেন না। "ফিজ জাজ বুজ" সিকোয়েন্সে সুস্পষ্ট নিদর্শনগুলি পাওয়া যায়।

import Control.Applicative

-- All words end with "zz" and the numbers are in a sequence
fizzes = zip [3..] $ (++ replicate 2 'z') <$> words "Fi Ja Bu"

main = putStrLn . unlines $ fizzIt <$> [1..99]

-- Point free style with reader monad ((->) a) to minimize
-- unnecessary repetition of variable names
fizzIt = nonFizzy =<< fizzy

-- Show the number if no fizziness was found. Partially point free
-- with respect to n. But xs is needed to prevent the error:
-- "Equations for ‘nonFizzy’ have different numbers of arguments"
nonFizzy "" = show
nonFizzy xs = const xs

-- (Ab)use the list monad for concatenating the strings

fizzy i = snd =<< filter ((==0).mod i.fst) fizzes
-- Could also be written as:
-- > fizzy i = concat [ str | (n,str) <- fizzes, i`mod`n==0]
-- but that would be way too readable, and not pointless (ahem, point free) enough. ;)

এই কোডটি সহজেই এক্সটেনসিবল। "ফিজ জাজ বুজ টিজ" সমস্যাটি সমাধান করার জন্য , স্ট্রিংয়ের Tiপরে আপনাকে যা করতে হবে তা হল Bu। এটি অন্য যে কোনও সমাধানের জন্য যা প্রয়োজন তার চেয়ে অনেক কম।


5
আপনি যদি ফিৎস-জাজ-বাজ-সাসেজ সমস্যাটি সমাধান করতে চান?
আনকো

@ আনকো আমি হয় এরকম কিছু করতে পারি fizzes = zip [3..] $ ((++ replicate 2 'z') <$> words "Fi Ja Bu") ++ ["Sausage"], বা কেবল ফিরে যেতে পারি fizzes = zip [3..] $ words "Fizz Jazz Buzz Sausage"
Hjulle

3
replicate 2 zএটি কিছুটা প্রসারিত করছে। । ।
সোহম চৌধুরী

3
@ অকটোটান আমি প্রতিরোধ করতে পারি না ;)
হিজুল

16

এক্সেল ভিবিএ

             Sub scopeeeeeeeeeeeeeeee()
                     '   ||
               For u = 1 To 100
   If u Mod 3 = 0 Then yell = "Fizz"
If u Mod 4 = 0 Then yell = yell & "Jazz" '---------------------------------------------|
If u Mod 5 = 0 Then yell = yell & "Buzz" '---------------------------------------------|
            'made in USA
            If yell = "" Then yell = u
             Debug.Print yell      '\\
             yell = ""              '\\
            Next                     '\\
           End Sub                    '\\

এটি বোকা লাগতে পারে তবে এটি একটি 2 ডি স্নিপার রাইফেল!


অর্ধেক। !!!!
অপ্টিমাইজার

2
এছাড়াও, এটি মজাদার - "যদি আপনি মোড 3 করেন"
অপ্টিমাইজার 16

ধন্যবাদ!! আমি এতক্ষণে কেউ ইউ মোড 3 অংশটি এত তাড়াতাড়ি বুঝতে পারিনি বলে আশা করিনি
অ্যালেক্স

বুঝলাম না কেন এর অর্ধেক!
অ্যালেক্স

স্নিপার মাত্র অর্ধেক। স্কোপটি সাধারণত স্নিপারের মাঝখানে থাকে।
অপ্টিমাইজার

15

জাভা

void fizzy(int limit){
    String[] output = new String[limit];
    Arrays.fill(output,"");

    List<SimpleEntry<Integer,String>> tests = new ArrayList<SimpleEntry<Integer,String>>();
    tests.add(newEntry(3,"Fizz"));      
    tests.add(newEntry(4,"Jazz"));      
    tests.add(newEntry(5,"Buzz"));      

    for(SimpleEntry<Integer,String> test : tests)
        for(int i=test.getKey();i<limit;i+=test.getKey())
            output[i] += test.getValue();           

    for(int i=1;i<limit;i++)
        System.out.println(output[i].length()<1 ? i : output[i]);
}   

SimpleEntry<Integer,String> newEntry(int key, String value){
    return new SimpleEntry<Integer,String>(key,value);
}

সুতরাং জাভা বেশিরভাগই "সুন্দর" হিসাবে বিবেচিত নয়, তবে এটি পাগল বিষয়ী তাই আমি প্রশ্নের গাইডলাইনগুলি অনুসরণ করেছিলাম:

  • নিজেকে পুনরাবৃত্তি করবেন না: সমস্যা নেই। আপনাকে কেবল প্রতিটি সংখ্যার জন্য একটি লাইন যুক্ত করতে হবে। এমনকি আমি একটি সহায়ক ফাংশনও তৈরি করেছি যাতে আপনি যখন করবেন তখন আপনাকে তেমন টাইপ করতে হবে না (জাভা মাঝে মাঝে কিছুটা ভার্বোজ হতে পারে, যদি আপনি না জানতেন)।
  • বিভাগ / মডুলাস অপারেশনগুলির দক্ষতা : নিখুঁত দক্ষতা, যেহেতু কোনও মডিউল বা বিভাগ নেই division

এটি বলার অপেক্ষা রাখে না যে সামগ্রিকভাবে অ্যালগরিদম সবচেয়ে কার্যকর (এটি নয়) তবে আমি মনে করি এটি বুলেটযুক্ত পয়েন্টগুলিকে ভালভাবে আঘাত করে।


2
আপনি যদি কোনও শ্রেণি সংজ্ঞায়িত না করেন তবে এটি জাভা হবে না। : ডি
অ্যাড্রিয়ান লিওনহার্ড

আমি একটি জাভা উত্তর পছন্দ করতে চেয়েছিলাম এবং আমি এই পদ্ধতির পছন্দ করি তবে আমার মনে হয় ফর-স্টেটমেন্টগুলিতে কোড এম্বেড করা অপ্রয়োজনীয় বাধা। সুন্দর জাভা পঠনযোগ্য জাভা!
অ্যালেক্স প্রিচার্ড

@ অ্যালেক্সপ্রিটচার্ড আমি কোড গল্ফিং এর একটি পার্শ্ব প্রতিক্রিয়া বিবেচনা করি। কোনও পিসিতে হলে ঠিক হয়ে যাবে :)
জিওবিটস

11

7 অবহিত

ইনফর্ম 7 হ'ল একটি নিয়ম ভিত্তিক প্রোগ্রামিং ভাষা যা ইন্টারেক্টিভ কথাসাহিত্যের জন্য ডিজাইন করা হয়েছে। এটি অন্যতম সফল প্রাকৃতিক ভাষা ভিত্তিক প্রোগ্রামিং ভাষা হিসাবে উল্লেখযোগ্য। দেখুন জানাও 7 ভাষা শোকেস অন্যান্য উদাহরণ এবং তুচ্ছ বস্তু কয়েক বিট জন্য।

The number printing rules are a number based rulebook.

Definition: a number is fizzy if the remainder after dividing it by 3 is 0.
Definition: a number is jazzy if the remainder after dividing it by 4 is 0.
Definition: a number is buzzy if the remainder after dividing it by 5 is 0.

A number printing rule for a fizzy number:
    say "Fizz";

A number printing rule for a jazzy number:
    say "Jazz";

A number printing rule for a buzzy number:
    say "Buzz";

A number printing rule for a number (called N):
    unless a paragraph break is pending:
        say N;
    say conditional paragraph break;

To print a series of numbers from (min - a number) to (max - a number):
    repeat with N running from min to max:
        follow the number printing rules for N;

এই কোডটির সুবিধা রয়েছে যে ফিজবুজ নিয়মগুলির প্রতিটি সম্পূর্ণ স্বাধীন: সাধারণ কাঠামো পরিবর্তন করার প্রয়োজন ছাড়াই যে কোনও সময়ে অতিরিক্ত নিয়ম যুক্ত করা যেতে পারে। দুর্ভাগ্যক্রমে এটি কিছুটা পুনরাবৃত্তিযোগ্য, বিশেষত সংজ্ঞা বাক্যগুলির সাথে। আমি একটি% অপারেটর সংজ্ঞায়িত করতে পারি, তবে তারপরে এটি ইংরেজী হবে না। ;)

এই কোডটি প্লেফিক ব্যবহার করে অনলাইনে চালানো যেতে পারে ।


7

ডায়ালগ এপিএল

∇FizzJazzBuzz;list;items;names
   items ← ⍳100    
   list  ← ↑('Fizz' 3) ('Jazz' 4) ('Buzz' 5)   

   names ← (,/ ↑(↓0=⍉list[;2]∘.|items) /¨ ⊂list[;1]) ~¨ ' '
   ⎕← ↑,/↑names ,¨ (∊0=⍴¨names) ⍴¨ ⊂¨⍕¨items
∇
  • DRY: কোনও ডাবল কোড নেই
  • অবস্থার পরিবর্তন করা সহজ: নামগুলি একটি তালিকা থেকে নেওয়া হয়, যাতে প্রতিটি বিভাজক, যাতে ন্যূনতম পরিবর্তন প্রয়োজন হয়
  • পরিসর পরিবর্তন করা সহজ: itemsসংখ্যার একটি স্বেচ্ছাসেবী তালিকাতে পরিবর্তন করা যেতে পারে
  • দক্ষ: কেবলমাত্র পার্শ্ব-প্রতিক্রিয়া মুক্ত আদিম সমন্বিত সহজেই সমান্তরাল তালিকা-ভিত্তিক অ্যালগরিদম ব্যবহার করে।
  • সরল কোড প্রবাহ: না শুধুমাত্র সেখানে নেই এতে যান এস, আছে কোন সময় s অথবা যদি গুলি পারেন। কোডটি সম্পূর্ণ রৈখিক।
  • আপনার কাজটি সুরক্ষিত করে: খুব কমই অন্য কেউ এতে কাজ করতে সক্ষম হবে ...

এর মান কী ⎕MLএবং ⎕IO?
FUZxxl

তারা উভয়ই 1ডিফল্ট।
মেরিনাস

7

সি শার্প

for(int i = 1; i <= 99; i++){
    string s = "";
    if (i % 3 == 0) s += "Fizz";
    if (i % 4 == 0) s += "Jazz";
    if (i % 5 == 0) s += "Buzz";
    System.Console.WriteLine(s == "" ? "" + i : s);
}

মোড পরীক্ষা করুন, স্ট্রিং তৈরি করুন, প্রিন্ট নম্বর ফাঁকা হলে বা স্ট্রিং না থাকলে। কোন পুনরাবৃত্তি। শুধুমাত্র নতুন প্রয়োজনীয়তার জন্য শর্ত এবং আউটপুট যুক্ত করা দরকার।


2
"কোন পুনরাবৃত্তি"? (ঠিক আছে, কমপক্ষে কোডের আকার অতিরিক্ত শব্দের সাথে রৈখিকভাবে বৃদ্ধি পায়))
আঙ্কো

আমি আমার সি # উত্তর দিয়ে কিছুটা পুনরাবৃত্তি না করার চ্যালেঞ্জ নিয়েছিলাম, তবে কোন সংখ্যায় মডুলাস আনতে হবে সে সম্পর্কে কোনও নমনীয়তা ত্যাগ করেছি। আমি মনে করি সেরা ফলাফলটি একটি ডেটাস্ট্রাকশন সম্পর্কিত সংখ্যা এবং শব্দ সম্পর্কিত।
sydan

@ আঙ্কো নিশ্চিত নন যে আপনি কী পেয়ে যাচ্ছেন, কোনও ফাংশন পুনরাবৃত্তি হয়নি। আমি কোডের কোথাও দু'বার একই জিনিস করছি না।
র‌্যাপজ্রি 11

@ রপজ্র 1111 কোডটি চেক করে i- %বেশ কয়েকবার কিছু জিনিস, পাশাপাশি sঅনেক সময় সংযোজন করে । (সিনট্যাক্সের অনেকগুলি পুনরাবৃত্তিযোগ্য তবে এটি সম্ভবত সি এর দোষ))
আনকো

7

পাইথন 2.7

আমি এটিকে কাব্যিক করার চেষ্টা করেছি ...

আমি প্রেমের কবিতায় খুব একটা ভাল না ...

of = 1
my_love = 100
youre = "ever"

#You are
for ever in range(of, my_love) :
    never = "out my mind"
    for I,am in[#audibly
                (3, "Fizzing"),
                (4, "Jazzing"),
                #and
                (5, "Buzzing")]:
        if( ever % I ==0):# near you
            never += am #I lonely.
    #because
    youre = ever #in my mind.
    if( youre, never == ever,"out my mind" ):
        never += str(youre) #(I gave up with this line...)
    #then our foot-
    print"""s will"""( never [11:3])# part. 

প্রাথমিক ধ্রুবকগুলি ছাড়া এটি আরও অনেক ভাল হবে: পি


সৃজনশীল, তবে পাইথন ২.7.৯ এ আমার পক্ষে চলবে না। এরা বলছে: TypeError: 'str' object is not callable
অ্যালেক্স এ।

হুমমম ... ধিক ... আমি কীভাবে এটি মিস করেছি তা পুরোপুরি নিশ্চিত নয়: /
জামজার 100

5

ক্লাস সহ জাভা

অ্যালগরিদম:

public static void main(String... args) {

    List<Condition> conditions = new ArrayList<Condition>();
    conditions.add(new TerminatingCondition(100));
    conditions.add(new ModuloCondition(3, "Fizz"));
    conditions.add(new ModuloCondition(4, "Jazz"));
    conditions.add(new ModuloCondition(5, "Buzz"));
    conditions.add(new EchoCondition());

    while (true) {
        for (Condition c : conditions){
            c.apply();
        }
    }

}

ক্লাস:

interface Condition {
    void apply();
}

static class ModuloCondition implements Condition {
    int modulo, count = 0;
    String message;
    ModuloCondition(int modulo, String message){
        this.modulo = modulo;
        this.message = message;
    }
    public void apply() {
        count++;
        if (count == modulo) {
            out.append(message);
            count = 0;
        }
    }
}

static class TerminatingCondition implements Condition {
    int limit, count = 0;
    TerminatingCondition(int limit) {
        this.limit = limit;
    }
    public void apply() {
        count++;
        if (count > limit) {
            System.exit(0);
        }
    }
}

static class EchoCondition implements Condition {
    int count = 0, lastOutCount = 0;
    public void apply() {
        count++;
        out.println((lastOutCount == out.count) ? String.valueOf(count) : "");
        lastOutCount = out.count;
    }
}

static class Out {
    int count = 0;
    void append(String s) {
        System.out.append(s);
        count++;
    }
    void println(String s){
        append(s + System.lineSeparator());
    }
}

static Out out = new Out();

2
+1, আপনি এই 70-লাইনের FizzBuzzJazz এর সাহায্যে জাভা কোডিংয়ের স্পিরিটটি সত্যই ক্যাপচার করেছেন। এটি অবজেক্ট-ওরিয়েন্টেড এবং একটি স্পষ্টভাবে নির্দিষ্ট, অ সংক্ষেপিত, পাঠযোগ্য স্টাইলে লেখা হয়েছে is খুব দীর্ঘ. তবে খুব পঠনযোগ্য। ;।)
DLosc

4

ম্যাটল্যাব / অকটাভ

অবশ্যই, আপনার নিজের লুপগুলি লেখক প্রোগ্রামারদের জন্য মজাদার, তবে সকলেই জানেন যে ইনডেক্সিংয়ের ট্র্যাকিং রাখা সত্যিই কতটা ক্লান্তিকর (যারা for(j=i;j<n;i++)তাদের জীবনে কমপক্ষে একবার নেস্ট লুপে লিখেছেন না?)

ম্যাটল্যাবের সমাধান রয়েছে। সত্যই, এই কোডটি সবচেয়ে কার্যকর নয়, এবং অবশ্যই কোড-গল্ফ নয়, তবে এটি ম্যাটল্যাবের আরও আকর্ষণীয় ফাংশনগুলির একটি ভাল প্রদর্শনী। অক্টাভ হ'ল ম্যাটল্যাবের জিএনইউ সংস্করণ; এটি কোড-গল্ফের পক্ষে উপযুক্ত নয় কারণ এটি ভেরিয়েবল প্রকারের সাথে সামান্য কঠোর, যা কোড-গল্ফের জন্য ক্ষতিকারক।

সম্পাদনা: এসএটি-তে ম্যাটল্যাবের জন্য সিনট্যাক্স হাইলাইট হওয়া অবধি আমি খুব কম মন্তব্য সহ একটি সংস্করণ পোস্ট করছি, কারণ অন্যথায় এটি সরল পাঠ্যের কেবল একটি বড় ভয়ঙ্কর ব্লক ছিল।

function out = fizzjazzbuzz(n)
    %Initialization
    numberlist=1:n;
    fizz=cell(1,100);
    jazz=fizz;buzz=jazz;

    %Complex loops - no, wait, easy logical indexing.
    fizz(~mod(numberlist,3))={'Fizz'}; 
    jazz(~mod(numberlist,4))={'Jazz'};
    buzz(~mod(numberlist,5))={'Buzz'};
    out=strcat(fizz,buzz,jazz);
    %Fill with numbers
    out(cellfun(@isempty,out))=num2cell(numberlist(cellfun(@isempty,out)));

    %Pretty output (although the default printing is perfectly acceptable)
    out=cellfun(@num2str,out,'UniformOutput',0);
    strjoin(out,sprintf('\n'));
end

2
for(j=i;j<n;i++)? আমার প্রশ্ন হচ্ছে: কারা হয়নি লিখতে এই "অন্তত তাদের জীবনে একবার"? যদি আপনি তা করেন তবে আপনার জন্য আমার কাছে নতুন নতুন কিছু আছে ...
বোগদান আলেকজান্দ্রু

1
@ বোগদান অ্যালেক্সানড্রু আপনি নিজের জীবনে কখনও কখনও দুর্ঘটনাক্রমে একটি forলুপের ভুল ভেরিয়েবলকে বাড়িয়েছিলেন না (উদাহরণস্বরূপ বাসা বাঁধলে)? আপনি কি সেই লোক, যার কোডটি প্রথমবারের মতো সফলভাবে সংকলন করেছে? আপনি যদি হন তবে আপনার জন্য আমার কাছে news
শ্বরের

2
আমি ভুল ভেরিয়েবলটি বাড়ানোর কথা বলছি না, আমার কোডটি godশ্বর-লিখিত নয়। আমি সেই কোডিং স্টাইলের কথা বলছি, এটি নিজের মধ্যে খুব ত্রুটিযুক্ত pr jএকটি লুপ স্থানীয় পরিবর্তনশীল জন্য নাম জরিমানা, কিন্তু iনাম খুব খারাপ অভ্যাস এবং আপনার ভুল উৎস। এটি নিখুঁতভাবে দুর্ঘটনাক্রমে নয় :)
বোগদান আলেকজান্দ্রু

@ বোগদান অ্যালেক্সান্দ্রু আহা, আমি বেশ সম্মত; প্রদত্ত কার্যভারগুলি কার্যকর করার সময় আমি এখনও এই স্টাইলের লুপটি ব্যবহার করার কারণটি (আমি একজন মাস্টার্সের ছাত্র); আমি বরং প্রশ্নটিতে অধ্যাপকের ব্যবহৃত সূচক চিহ্নটি ব্যবহার করি, বরং নিজের ব্যবহার করে দরিদ্র বৃদ্ধকে বিভ্রান্ত করার চেয়ে।
সান্চাইজস

1
লুপের সূচকে একটি বর্ণের নাম দেওয়া কোনও সমস্যা নয়, তবে অন্যান্য ভেরিয়েবলগুলির আরও অর্থপূর্ণ নাম থাকা উচিত।
বোগদান আলেকজান্দ্রু

4

পাইথন

from collections import defaultdict

lst = [(3, 'Fizz'),
       (5, 'Buzz'),
       (4, 'Jazz')]

word_list = defaultdict(list)

for d, w in sorted(lst):
    for i in range(d, 100, d):
        word_list[i].append(w)

for i in range(1, 100):
    print(''.join(word_list[i]) or i)

এটি অবশ্যই অনেক দীর্ঘ। gnibbler এর সমাধানটি আরও ভাল। (যদিও প্রতিস্থাপন *..., sep=''সঙ্গে ''.joinআরো সুন্দর হতে হবে)

তবে বিভাগ / মডুলাস অপারেশনগুলির ক্ষেত্রে এটি বেশ দক্ষ।


1
আপনি কেন ব্যবহার করবেন sorted(lst), কেন আপনি এটি সংজ্ঞা দেবার সময় আপনার প্রয়োজনীয় ক্রমে রাখবেন না?
mbomb007

অথবা এটি লুপের আগে জায়গায় সাজান। lst.sort()
ডেভিডম

4

চুনি

100.times do |n|
  l = [nil, 'Fizz', 'Jazz', 'Buzz'].select.with_index{|x, i| x && (n % (i+2)) == 0 }
  puts l.empty? ? n : l * ''
end

দেখে মনে হচ্ছে এটি 2,3 এবং 4 এর গুণক?
gnibbler

@gnibbler ওফস, হ্যাঁ এটি। সংশোধন করা হয়েছে।
Doorknob

4

Haskell,

inp = [(3, "Fizz"), (4, "Jazz"), (5, "Buzz")]

mkList (n, str) = cycle $ replicate (n-1) "" ++ [str]

merge lists = (head =<< lists) : merge (map tail lists)

checkFJB "" n = show n
checkFJB s  _ = s

fjb = zipWith checkFJB (merge $ map mkList inp) [1..]

print100fjb = mapM_ putStrLn $ take 100 fjb

তবুও বিভাজন বা মডুলাস ছাড়াই অন্য একটি সমাধান। fjbFizzes, জাজ, বাজেস এবং / অথবা সংখ্যাগুলির একটি অসীম তালিকা তৈরি করে। takeআপনি চান এমন কোনও পরিমাণ, যেমন দেখা গেছে print100fjbযা প্রথম 100 উপাদানকে মুদ্রণ করে।


4

এসকিউএল (মাইএসকিউএল)

SELECT COALESCE(GROUP_CONCAT(FizzJazzBuzz.str ORDER BY FizzJazzBuzz.n SEPARATOR ''), I.id)
FROM I
    LEFT JOIN (
        SELECT 3 n,'Fizz' str
        UNION SELECT 4, 'Jazz'
        UNION SELECT 5, 'Buzz'
    ) FizzJazzBuzz ON I.id MOD FizzJazzBuzz.n = 0
GROUP BY I.id
ORDER BY I.id;

যেখানে আমি 100 টি পূর্ণসংখ্যার সমন্বয়ে একটি কলাম (আইডি INT) সহ একটি টেবিল।

আমি এমন কোনও এসকিউএল স্বাদ জানি না যা আমি সহজেই টেবিলটি উত্পন্ন করতে পারি, বা ভ্যালিউসকে সাবকিউরিস হিসাবে ব্যবহার করতে পারি, যা এটি আরও ভাল এবং সম্পূর্ণ করে তুলতে পারে।


1
আপনি mysql এ ভেরিয়েবল ব্যবহার করতে পারেন। SELECT @i:= (@i + 1) FROM mysql.help_relation, (SELECT @i:=0) v WHERE @i < 100;
কাটা কাটা

@ স্লাইডডএডও SELECT DISTINCT help_keyword_id FROM mysql.help_relation WHERE help_keyword_id>0 AND help_keyword_id<=100কাজ করেছে। তবে যদি 100 কে পরিবর্তন করে 10000 করা হয় তবে উভয়ই ভেঙে যাবে।
জিমি 23013

1
আপনার আরও সারি প্রয়োজন হলে কেবল এতেই যোগ দিন।
কাটা টু

যতদূর আমি সচেতন মাইএসকিউএল হ'ল একমাত্র এসকিউএল উপভাষা যার পক্ষে সহজ সারি-জেনারেটর বিকল্প নেই। বেশিরভাগই কেবল একটি পুনরাবৃত্ত সাধারণ টেবিল এক্সপ্রেশন ব্যবহার করতে পারেন।
বেন

@ বেন তবে পুনরাবৃত্তির উপায়গুলি সর্বদা ভাল লাগে না। ডায়ালেক্ট পরিবর্তন করে আমি আমার উত্তরটি ঠিক করব না কারণ ইতিমধ্যে একটি ওরাকল এসকিউএল উত্তর রয়েছে।
jimmy23013

3

চুনি

1.upto(100) do |i|

  rules = { 3 => 'Fizz', 4 => 'Jazz', 5 => 'Buzz' }

  print(i) unless rules.select! { |n,s| i.modulo(n) > 0 or print(s) }

  puts

end

3

জাভাস্ক্রিপ্ট


সম্ভবত সবচেয়ে দক্ষ উপায় নয়, তবে আমি মনে করি এটি সহজ এবং সুন্দর <3

(function fizzBuzz(iter){
    var str = '';
    

    if(!(iter % 3)) str += 'Fizz'
    if(!(iter % 4)) str += 'Jazz'
    if(!(iter % 5)) str += 'Buzz'


    console.log(str || iter)


    if(iter >= 100) return

    
    fizzBuzz(++iter)
})(1)


মোয়ার ডিআরওয়াই এবং এফিন কুরুচিপূর্ণ: সি

(function fizzBuzz(iter){
    var 
        str,
        fijabu = ['Fi','Ja','Bu']
    ;
    

    (function isMod(_str,val){

        if(!(iter % val)) _str += fijabu[val-3] + 'zz'


        if(val >= 5) return str = _str


        isMod(_str,++val)
    })('',3)


    console.log(str || iter)


    if(iter >= 100) return

    
    fizzBuzz(++iter)
})(1)


8
ডাবল ফাঁক কেন?
আনকো

ব্যক্তিগত কনভেনশন। আমি মনে করি এটি পড়তে ভাল লাগছে।
সাউন্ডোগোগি


আমি এটি কেবল ব্যক্তিগত প্রকল্প এবং মজাদার জন্য করি। বেশিরভাগ টিম এটি পছন্দ করে না।
সাউন্ডোগোগি

2

জাভাস্ক্রিপ্ট

DRYish ...;)

(function FizzJazzBuzz(iter) {
    var output = ["Fi", "Ja", "Bu"];
    var str = "";

    output.map(function(v,i,a) {
        if(!(iter%(i+3))) str += output[i] + "zz";
    });

    console.log(str || iter);

    if(iter < 100) FizzJazzBuzz(++iter);

    return;
})(1);

2

একেবারে বোকা সি #

অর্ধেক সংক্ষিপ্তটি 'নিজেকে নিজেকে পুনরুদ্ধার করবেন না' তাই আমি সি # এর সাথে যতটা আক্ষরিকভাবে পারলাম তা নিয়েছিলাম এবং এটি ঘটনাক্রমে কোডটি গল্ফ করার দিকে অগ্রসর হয়েছিল। এটি আমার প্রথম গল্ফ এবং আমি সি # তে এটি করেছি, বোকা আমি জানি তবে ফলাফল এখানে:

গল্ফড ( 240 232 230 চর):

namespace System{using Diagnostics;using i=Int32;using s=String;class P{static void Main(){s[] z=new s[]{"Fi","Ja","Bu"};for(i a=1;a<100;a++){s l="";for(i b=3;b<6;b++)if(a%b==0)l+=z[b-3]+"zz";Trace.WriteLine((l!="")?l:a+"");}}}}

Ungolfed:

namespace System
{
   using Diagnostics;
   using i = Int32;
   using s = String;
   class P 
   { 
      static void Main() 
      {
         s[] z = new s[] { "Fi","Ja","Bu" }; 
         for(i a = 1;a < 100;a++) 
         { 
            s l = ""; 
            for(i b = 3;b < 6;b++)
               if(a % b == 0)
                  l += z[b - 3] + "zz"; 
            Trace.WriteLine((l != "") ? l : a+""); 
         } 
      } 
   }
}

উদ্দেশ্যটি ছিল একটি সম্পূর্ণ সি # প্রোগ্রাম তৈরি করার সময় কোডটি সংক্ষিপ্ত রাখতে আমি একাধিকবার এবং সাধারণভাবে আমার যে কোনও জিনিস ব্যবহার করতে হয়েছিল তা ছোট করা। এর জন্য আপনাকে ভিজ্যুয়ালস্টুডিও ব্যবহার করতে হবে এবং স্টার্টআপ অবজেক্টটি 'পি' তে সেট করতে হবে আপনাকে ডিবাগিং আউটপুট উইন্ডোতে আউটপুটটিও সন্ধান করতে হবে।

এখানে কিছু গুরুতর সীমাবদ্ধতা রয়েছে:

  • কোডটি ধরে নিয়েছে যে সমস্ত শব্দ 'zz' এ শেষ হবে
  • কোডটি ধরে নিয়েছে যে মডিউলগুলি ধারাবাহিকভাবে ঘটবে (3,4,5,6 ...)
  • কোডটি এখনও সত্য গল্ফলিংয়ের তুলনায় অভাব বা পুনরাবৃত্তির পক্ষে রয়েছে, কিছু পুনরাবৃত্তি এড়াতে আরও অক্ষর যুক্ত করা হয়েছে

2

পাইথন 2

আমি এর জন্য কয়েকটি পরিপাটি পাইথনটিতে এর জন্য একটি উত্তর লিখতে চেয়েছিলাম যা ভাষার বৈশিষ্ট্যগুলি দেখায়, DRY নীতিটি মেনে চলে এবং মোটামুটি পাঠযোগ্য।

group = range(100)
rules = [('fizz', group[::3]), ('jazz', group[::4]), ('buzz', group[::5])]
for number in group[1:]:
    labelset = ''
    for label, matches in rules:
        if number in matches:
            labelset += label
    print labelset if labelset else number

এই ছোট্ট উদাহরণটি স্লাইসিং, inঅপারেটর এবং ভার্বোজ কিন্তু বোধগম্য টের্নারি সিনট্যাক্স দেখায় । এটি মোটেও মডুলো অপারেটর ব্যবহার করে না। এটি রান-টাইম দক্ষতার জন্য ডিজাইন করা হয়নি তবে এটি লক্ষ্য ছিল না। এটি সংক্ষিপ্ত, বোধগম্য এবং রক্ষণাবেক্ষণের জন্য ডিজাইন করা হয়েছে।


set(group[...])নিয়মে কেন ব্যবহার করবেন না?
gnibbler

আমি গতির চেয়ে কমনীয়তার জন্য যাচ্ছিলাম। সেট () ব্যবহার করা অবশ্যই বাস্তব অ্যাপ্লিকেশনগুলিতে আরও দ্রুত হবে।
লজিক নাইট

2

পাইথন 2.7, 111 বাইট

এটি আমার প্রথম অবদান। আমি কিছু পাইথন কোডগল্ফিং ট্রিকস প্রয়োগ করার চেষ্টা করেছি (স্ট্রিং ইন্টারলিভিং, টিপল সূচক অ্যাক্সেসের পরিবর্তে if)। আপনার যদি কোনও পরামর্শ থাকে তবে দয়া করে সেগুলি ভাগ করুন!

for i in range(1,101):
 p=""
 for x in 3,4,5:
  if not(i%x):p+="FJBiauzzzzzz"[x-3::3]
 print((p,i)[not len(p)])

আউটপুট:

1
2
Fizz
Jazz
Buzz
Fizz
7
Jazz
Fizz
Buzz
11
FizzJazz
13
14
FizzBuzz
Jazz
17
Fizz
19
JazzBuzz
Fizz
22
23
FizzJazz
Buzz
26
Fizz
Jazz
29
FizzBuzz
31
Jazz
Fizz
34
Buzz
FizzJazz
37
38
Fizz
JazzBuzz
41
Fizz
43
Jazz
FizzBuzz
46
47
FizzJazz
49
Buzz
Fizz
Jazz
53
Fizz
Buzz
Jazz
Fizz
58
59
FizzJazzBuzz
61
62
Fizz
Jazz
Buzz
Fizz
67
Jazz
Fizz
Buzz
71
FizzJazz
73
74
FizzBuzz
Jazz
77
Fizz
79
JazzBuzz
Fizz
82
83
FizzJazz
Buzz
86
Fizz
Jazz
89
FizzBuzz
91
Jazz
Fizz
94
Buzz
FizzJazz
97
98
Fizz
JazzBuzz

দুটি forলুপ রয়েছে বলে আমিও ডিআরওয়াই নীতিটি পুরোপুরি প্রয়োগ করতে পারি নি । এটি করার সম্ভবত একটি স্মার্ট উপায় আছে!


আমি প্রথম forবিবৃতিতে সম্ভবত একটি টুপল ব্যবহার করতে পারি । আমি যখন আপডেট করতে পারবেন!
নেফো

ঠিক আছে, সুতরাং এটি একই লুপটিতে
নেপো

1

যান

একযোগে ফিজজ্যাজবাজার

package main

import (
    "fmt"
    "sort"
    "sync"
)

var hooks map[int]string = map[int]string{
    3: "Fizz",
    4: "Jazz",
    5: "Buzz"}

type candidate struct {
    num     int
    message string
}

func FizzJazzBuzzer(hooks map[int]string) (chan<- int, *sync.WaitGroup) {
    var wg *sync.WaitGroup = new(sync.WaitGroup)
    final := func(c chan candidate) {
        for i := range c {
            if i.message == "" {
                fmt.Println(i.num)
            } else {
                fmt.Println(i.message)
            }
            wg.Done()
        }
    }
    prev := make(chan candidate)
    go final(prev)
    var keys []int = make([]int, 0)
    for k := range hooks {
        keys = append(keys, k)
    }
    sort.Sort(sort.Reverse(sort.IntSlice(keys)))
    for _, mod := range keys {
        c := make(chan candidate)
        s := hooks[mod]
        go (func(in chan candidate, next chan candidate, mod int, s string) {
            for i := range in {
                if i.num%mod == 0 {
                    i.message += s
                }
                next <- i
            }
        })(c, prev, mod, s)
        prev = c
    }
    in := make(chan int)
    go (func(in <-chan int) {
        for i := range in {
            prev <- candidate{i, ""}
        }
    })(in)
    return in, wg
}

func main() {
    in, wg := FizzJazzBuzzer(hooks)
    for i := 1; i < 20; i++ {
        wg.Add(1)
        in <- i
    }
    wg.Wait()
}

এটি এখানে চেষ্টা করুন: http://play.golang.org/p/lxaZF_oOax

এটি পরীক্ষিত সংখ্যায় কেবল একটি মডুলাস ব্যবহার করে এবং যেকোন সংখ্যক, ভাল ... সংখ্যায় নির্বিচারে বাড়ানো যেতে পারে।

এটির প্রসারিত করতে আপনাকে কেবল তিনটি ভিন্ন জায়গায় পরিবর্তন করতে হবে, hooksমানচিত্রে, FizzJazzBuzzerফাংশনের নাম এবং অবশ্যই, FizzJazzBuzzerফাংশনে কল ।


1

আর

এটি এমন একটি ফাংশন তৈরি করে যা ব্যবহারকারীর জোড়া এবং শব্দের বিভাজক (এবং বিকল্প হিসাবে সর্বাধিক সংখ্যক, ডিফল্ট হিসাবে 100 সহ) নির্দিষ্ট করতে দেয়। ফাংশনটি 1 থেকে সর্বাধিক সংখ্যায় একটি ভেক্টর তৈরি করে, তারপরে "fizzbuzz" পজিশনে কোনও সংখ্যার পরিবর্তে "" দিয়ে এবং শেষ পর্যন্ত প্রতিটি শব্দকে তার পছন্দসই অবস্থানে আটকায়। ফাংশনটি তালিকাটিকে সর্বনিম্ন থেকে সর্বোচ্চ সংখ্যায় অর্ডার করে যাতে সর্বনিম্ন সংখ্যা সর্বদা "ফিজবজ" এর প্রথম অংশ হয়। seqনির্দিষ্ট নম্বর থেকে শুরু করে ভেক্টর তৈরি করতে এবং সর্বাধিক কাঙ্ক্ষিত সংখ্যাটি না পৌঁছা পর্যন্ত সেই সংখ্যাটির বৃদ্ধি বৃদ্ধি করে অবস্থানগুলি গণনা করা হয়।

fizzbuzzer = function(max.num=100, ...){

input = list(...)
input = input[order(unlist(input))] #reorder input list by number
words = names(input)

#vector containing the result
output = seq_len(max.num)

#remove numbers at positions to contain a "fizzbuzz"
sapply(input, function(x) output[seq(x, max.num, x)] <<- "")

#add words at required points
sapply(seq_len(length(input)), function(i) output[seq(input[[i]], max.num, input[[i]])] <<- paste0(output[seq(input[[i]], max.num, input[[i]])], words[i]))

return(output)
}    

আমি মনে করি এটি খুব সুন্দর নয়, তবে বিভিন্ন পরামিতিগুলির সাথে এটি পুনরায় ব্যবহার করা সহজ।

ব্যবহারের উদাহরণ:

fizzbuzzer(fizz=3, buzz=5)
fizzbuzzer(fizz=3, buzz=5, jazz=4)
fizzbuzzer(max.num=10000, golf=10, stack=100, code=1, exchange=1000)

এর ফলাফল fizzbuzzer(fizz=3, buzz=5):

[1] "1"        "2"        "fizz"     "4"        "buzz"     "fizz"    
[7] "7"        "8"        "fizz"     "buzz"     "11"       "fizz"    
[13] "13"       "14"       "fizzbuzz" "16"       "17"       "fizz"    
[19] "19"       "buzz"     "fizz"     "22"       "23"       "fizz"    
[25] "buzz"     "26"       "fizz"     "28"       "29"       "fizzbuzz"
[31] "31"       "32"       "fizz"     "34"       "buzz"     "fizz"    
[37] "37"       "38"       "fizz"     "buzz"     "41"       "fizz"    
[43] "43"       "44"       "fizzbuzz" "46"       "47"       "fizz"    
[49] "49"       "buzz"     "fizz"     "52"       "53"       "fizz"    
[55] "buzz"     "56"       "fizz"     "58"       "59"       "fizzbuzz"
[61] "61"       "62"       "fizz"     "64"       "buzz"     "fizz"    
[67] "67"       "68"       "fizz"     "buzz"     "71"       "fizz"    
[73] "73"       "74"       "fizzbuzz" "76"       "77"       "fizz"    
[79] "79"       "buzz"     "fizz"     "82"       "83"       "fizz"    
[85] "buzz"     "86"       "fizz"     "88"       "89"       "fizzbuzz"
[91] "91"       "92"       "fizz"     "94"       "buzz"     "fizz"    
[97] "97"       "98"       "fizz"     "buzz"    

(বর্গাকার বন্ধনীর সংখ্যা হ'ল ভ্যাক্টরের ফাংশন আউটপুটগুলির সূচকগুলি)


1

Haskell,

অপ্রয়োজনীয় কাজের পুনরাবৃত্তি এড়াতে কমপক্ষে সাধারণ একাধিক গণনা করা ছাড়া কোনও মডিউলার পাটিগণিত ব্যবহার করা হয় না। স্ট্রিং কনটেনটেশনগুলি কেবলমাত্র 60 বার করা দরকার, আমরা উপরের সীমাটি কী সেট করি তা নির্ধারণ করে।

-- Don't repeat `transpose` from `Data.List`
import Data.List (transpose)

-- The desired problem
lst = [(3, "Fizz"), (4, "Jazz"), (5, "Buzz")]

-- Map a function over both sides of a tuple.
-- We could also get this from importing Bifunctor (bimap), bit it's not in the core libraries
bimap f g (x, y) = (f x, g y)

-- Make infinite lists with the word occuring only once every n items, starting with the first
fizzify = map (cycle . uncurry take . bimap id (:repeat ""))

-- Reorganize the lists so there's a single infinite list, smash the words together, and drop the first set.
fjb = tail . map concat . transpose . fizzify

-- The following two functions avoid repeating work building the lists
-- Computes the least common multiple of a list of numbers
lcms = foldr lcm 1

-- fjbLcm is just a more efficient version of fjb; they can be used interchangably
fjbLcm lst = cycle . take (lcms . map fst $ lst) . fjb $ lst

-- show the number if there aren't any words
result = zipWith (\x y -> if null x then show y else x) (fjbLcm lst) [1..100]

main = print result

প্রতিস্থাপন করা হচ্ছে fjbLcmসঙ্গে fjbছাড়া ব্যবহার করা কোন গাণিতিক সঙ্গে ঠিক একই জিনিস করে, [1..100]এবং take


এটি মূলত নিমির সমাধান হিসাবে একই , যা আমি আগে লক্ষ্য করি নি।
সিরডেক

1

Python2

আপডেট: নতুন সংস্করণ কোনও মোড বা বিভাগ ক্রিয়াকলাপ ব্যবহার করে না।

word_dict = {3: 'Fizz', 4: 'Jazz', 5: 'Buzz'}

def fizz_jazz_buzz(n, d):
    counters = {k: k for k in d}
    for i in xrange(1, n + 1):
        u = ''
        for k in d:
            if counters[k] == i:
                u += d[k]
                counters[k] += k
        print u or i

fizz_jazz_buzz(100, word_dict)

আপনি যদি পরীক্ষায় অন্য একটি শব্দ যুক্ত করতে চান, কেবল কী / মান জোড়াটি শব্দ_দিকিত অভিধানে ফেলে দিন:

word_dict[7] = 'Razz'
fizz_jazz_buzz(100, word_dict)

আপনি যদি কোনও শব্দ থেকে মুক্তি পেতে চান তবে কেবল এটি মুছে ফেলুন (ব্যবহার করে del) অথবা বিকল্পভাবে সেট করুন ''

del word_dict[3]
fizz_jazz_buzz(100, word_dict)

আমার আগে পোস্ট করা Gnibbler এবং Jakube এর পাইথন উত্তরগুলিও দেখুন ।


1

সি শার্প

রক্ষণাবেক্ষণযোগ্যতা:
অভিধানের প্রতিটি উপাদানের উপরে আমি পুনরায় পুনরুক্ত করে প্রতিটি উপাদানকে এক রেখা যুক্ত করবো, এটি বর্তমান সংখ্যার বিভাজক কিনা তা পরীক্ষা করতে এবং এটি স্ট্রিংয়ের সাথে যুক্ত করে।
একবার শেষ হয়ে গেলে, স্ট্রিংটি মুদ্রণ করুন, যদি না এটি শূন্য হয় (নাল কোলেসিং অপারেটর ব্যবহার করে), সেক্ষেত্রে সংখ্যাটি একটি স্ট্রিং তৈরির জন্য খালি স্ট্রিংটি প্রিন্ট করুন। (আমি টু স্ট্রিং ব্যবহার করতে পারি, তবে আমার ধারণা এটি ব্যক্তিগত পছন্দ)

Dictionary<int, string> dict = new Dictionary<int, string>()
{
    {3, "Fizz"},
    {4, "Jazz"},
    {5, "Buzz"}
};
for (int i = 0; i < 100; i++)
{
    string msg = null;
    foreach (var pair in dict)
        if (i % pair.Key == 0)
            msg += pair.Value;
    Console.WriteLine(msg ?? i + "");
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.