কলামগুলিতে স্বতন্ত্র অক্ষরের সাথে ফিঞ্জ বাজ


21

তাদের লেনে অঙ্কগুলি দ্বারা অনুপ্রাণিত এবং 1, 2, ফিজ, 4, বাজ

ভূমিকা

আপনার কাজটি হ'ল নিম্নলিখিত আউটপুট উত্পন্ন করা:

1
2
Fizz
4
  Buzz
    Fizz
7
8
      Fizz
        Buzz
 11
          Fizz
   13
    14
            FizzBuzz
     16
      17
              Fizz
       19
                  Buzz
                    Fizz
 22
    23
                      Fizz
                        Buzz
   26
                          Fizz
     28
      29
                            FizzBuzz
       31
      32
                              Fizz
34
                                  Buzz
                                    Fizz
 37
  38
                                      Fizz
                                        Buzz
        41
                                          Fizz
  43
   44
                                            FizzBuzz
      46
       47
                                              Fizz
         49
                                                  Buzz

চ্যালেঞ্জ

এই চ্যালেঞ্জটি ফিজ বাজ চ্যালেঞ্জের উপর ভিত্তি করে তৈরি করা হয়েছে, এবং এখানে একটি পুনরুদ্ধার করা হবে: 1 থেকে 100 পর্যন্ত সংখ্যার আউটপুট, নিজস্ব লাইনে প্রতিটি সংখ্যা, তবে যদি সংখ্যাটি 3 এর একাধিক হয় তবে আপনার পরিবর্তে "ফিজ" আউটপুট নেওয়া উচিত আসল সংখ্যা, যদি সংখ্যাটি 5 এর একাধিক হয় তবে আপনার মূল সংখ্যাটির পরিবর্তে "বাজ" আউটপুট করা উচিত। সংখ্যাটি যদি 15 এর একাধিক হয় তবে আপনার মূল সংখ্যাটির পরিবর্তে "FizzBuzz" আউটপুট করা উচিত।

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

উদাহরণস্বরূপ, 1,2,Fizz,4কোনো খাঁজ প্রয়োজন আছে না, কারণ তারা ইতিমধ্যেই প্রতিটি কলামের অনন্য অক্ষর (কলাম 1: আছে 12F4, COLUMN2: i, column3: z, column4: z), কিন্তু যখন যোগ Buzzআমরা দুটি শূণ্যস্থান দ্বারা ইন্ডেন্ট প্রয়োজন কারণ অন্যথায় আমরা দুটি হবে z'র উভয় তৃতীয় এবং চতুর্থ কলামে। যেহেতু দুটি শূন্যস্থান লক্ষ্য অর্জনের জন্য যথেষ্ট, আপনার এটি তিনটি স্পেসে ইন্ডেন্ট করা উচিত নয়। 7এবং 8কোনও ইনডেন্টেশন প্রয়োজন হয় না তবে আউটপুট দেওয়ার সময় 11আমাদের এক স্পেসে ইনডেন্ট করা প্রয়োজন কারণ 1 ম কলামে ইতিমধ্যে একটি রয়েছে 113তারপরে তিনটি স্পেস দিয়ে ইন্টেন্ট করা দরকার কারণ এখন প্রথম, দ্বিতীয় এবং তৃতীয় কলামের সমস্ত একটি 1। বাকী রেখাগুলির इंडেন্টেশন একই নিয়ম অনুসরণ করে।

চ্যালেঞ্জটিকে আরও সহজ করার জন্য, উপরের সীমাটি 50 এ পরিবর্তন করা হয়েছে।

চশমা

  • আপনি একটি প্রোগ্রাম বা একটি ফাংশন লিখতে পারেন। তাদের উভয়েরই কোনও খালি খালি ইনপুট নেওয়া উচিত নয়। খালি ইনপুট নেওয়া ভাল।

  • যেহেতু এটি একটি কেসি চ্যালেঞ্জ, আপনার পরিচিতি বিভাগে উল্লিখিত আউটপুট উত্পাদন করতে হবে। একটি একক ট্রেলিং নিউলাইন ঠিক আছে। নতুন শিরোনাম বা অতিরিক্ত শিরোনাম স্থান নেই। প্রতিটি লাইনের জন্য কোনও অতিরিক্ত ট্রেলিং স্পেস নেই।

  • আপনার প্রোগ্রাম ত্রুটি সহ প্রস্থান করতে পারে বা STDOUT স্পেসিফিকেশন মেনে চলাকালীন অবধি খালি খালি STDERR আউটপুট থাকতে পারে।

  • এটি আন্তঃ-ভাষা , এর ভাষায় সবচেয়ে কম সংখ্যক বাইট জয় প্রোগ্রাম।

  • ডিফল্ট লুফোলস প্রয়োগ হয়।


2
প্রদত্ত আউটপুট ঠিক বৈশিষ্ট সাথে মেলে না, লাইন 12, 20, 35 এবং 50. যেমন
Bubbler

1
তবে প্রথম দুটি লাইনের দ্বিতীয় চরিত্রটি হ'ল ক্যারেজ রিটার্ন।
সংগৃহীত

আমি স্পেস বাদ দিয়েছি, এখন আমারও নিউলাইনগুলি বাদ দেওয়া উচিত।
ওয়েইজুন চিউ

উত্তর:


9

পাইথন 2 , 127 বাইট

i=0;exec"print ord('<<<<>@<<BD=F?@HABJCNP=@RT?VABXCBZ<^`=>bdDf>?hBCjEn'[i])%60*' '+(i%3/2*'Fizz'+i%5/4*'Buzz'or`-~i`);i+=1;"*50

এটি অনলাইন চেষ্টা করুন!

একটি পঞ্চাশ-বাইট দেখার সারণীটি প্রতিটি কলামে কোন অক্ষরগুলি ঘটেছে তা ট্র্যাক করার জন্য প্রয়োজনীয় যুক্তির চেয়ে কোডের আকারটিকে কম আঘাত করবে বলে মনে হচ্ছে।


1
এর পরিবর্তে আমাদের যদি 100 টি পর্যন্ত মুদ্রণের প্রয়োজন হয় তবে
যুক্তিটি আরও ভাল

5

পাইথন 2 , 167 166 163 161 157 বাইট

a=eval(`[{0}]*99`);i=0
exec"f=i%3/2*'Fizz'+i%5/4*'Buzz'or`i+1`;i+=1;g=0\nwhile any(b>{c}for b,c in zip(a[g:],f)):g+=1\nmap(set.add,a[g:],f);print' '*g+f;"*50

এটি অনলাইন চেষ্টা করুন!

সম্পাদনা:

  • whilefor..range()1 বাইটের চেয়ে কম
  • 3 ও বাইট কামিয়ে দেওয়ার জন্য @ ওভসকে ধন্যবাদ। আমি সবসময় ভুলে যাই exec...
  • i%3/2লিনের উত্তর (-২ বাইট) থেকে অভিযোজিত কৌশল।
  • @ লিন পরামর্শ দিলেন a=map(set,[[]]*99)তবে আমি একই উপায় evalএবং reprএকই বাইট (-4 বাইট) ব্যবহার করে অন্য একটি উপায় খুঁজে পেয়েছি ।

প্রতিটি কলামে ব্যবহৃত অক্ষরগুলি অনুসরণ করতে সেটগুলির একটি তালিকা ব্যবহার করুন এবং সদস্যতার জন্য বৈষম্য নির্ধারণ করুন। বাকী সঠিক বর্ণনার অনুসরণ করে।


4

সি (জিসিসি) , 145 144 বাইট (হেক্সের জন্য 143)

i;main(){for(;i++<50;printf("%*s%s%.d\n","000402800:81>34@56B7BH14JH3N56P76R0RX12ZX8^23`67b9b"[i]-48,i%3?"":"Fizz",i%5?"":"Buzz",i%3*i%5?i:0));}

এটি অনলাইন চেষ্টা করুন!

0000h: 69 3B 6D 61 69 6E 28 29 7B 66 6F 72 28 3B 69 2B ; i;main(){for(;i+
0010h: 2B 3C 35 30 3B 70 72 69 6E 74 66 28 22 25 2A 73 ; +<50;printf("%*s
0020h: 25 73 25 2E 64 5C 6E 22 2C 22 FE FE FE 02 FE 00 ; %s%.d\n","......
0030h: 06 FE FE 08 06 FF 0C 01 02 0E 03 04 10 05 10 16 ; ................
0040h: FF 02 18 16 01 1C 03 04 1E 05 04 20 FE 20 26 FF ; ........... . &.
0050h: 63 28 26 06 2C 00 01 2E 04 05 30 07 30 22 5B 69 ; c(&.,.....0.0"[i
0060h: 5D 2B 32 2C 69 25 33 3F 22 22 3A 22 46 69 7A 7A ; ]+2,i%3?"":"Fizz
0070h: 22 2C 69 25 35 3F 22 22 3A 22 42 75 7A 7A 22 2C ; ",i%5?"":"Buzz",
0080h: 69 25 33 2A 69 25 35 3F 69 3A 30 29 29 3B 7D    ; i%3*i%5?i:0));}

3

রুবি , 129 বাইট

puts (1..50).map{|n|" "*(".<<<<>@<<BD=F?@HABJCNP=@RT?VABXCBZ<^`=>bdDf>?hBCjEn"[n].ord%60)+("FizzBuzz
"[i=n**4%-15,i+13]||n.to_s)}

এটি অনলাইন চেষ্টা করুন!

ডাবল ক্রেডিট লিনে এখানে আছে, দেখার জন্য সারণী পদ্ধতির জন্য এবং ফিজবুজ আলগোরিদিম

ফিজবুজ অ্যালগরিদমটি খুব আকর্ষণীয় এবং এটি উল্লেখযোগ্য কাকতালীয়তার উপর নির্ভর করে যে চতুর্থ শক্তিতে উত্থাপিত হওয়ার পরে 15 (কম এবং 3 এবং 5 এর চেয়ে কম) কম সংখ্যক সমস্ত ধনাত্মক, 15 এর একাধিকের চেয়ে 1 বেশি In বিষয়:

 n     n**4  n**4%15  n**4%-15
 1        1     1       -14
 2       16     1       -14
 3       81     6        -9
 4      256     1       -14
 5      625    10        -5
 6     1296     6        -9
 7     2401     1       -14
 8     4096     1       -14
 9     6561     6        -9
10    10000    10        -5
11    14641     1       -14
12    20736     6        -9
13    28561     1       -14
14    38416     1       -14
15    50625     0         0

মানগুলি 3**4%15এবং 5**4%154 টি পৃথক: স্ট্রিংটির দৈর্ঘ্য "Fizz"। আমরা স্ট্রিংয়ের শেষে থেকে কমপক্ষে 9 টি অক্ষরের দৈর্ঘ্যে সূচকগুলিতে তাদের ব্যবহার করে এটি ব্যবহার করতে পারি। 3 এর গুণকগুলি স্ট্রিংয়ের শুরু থেকে সূচী করবে এবং 5 এর গুণকগুলি শেষে থেকে 5 টি অক্ষর থেকে সূচক করবে। অন্যান্য প্রতিটি নম্বর স্ট্রিং শুরুর আগে থেকেই সূচকে চেষ্টা করবে এবং ব্যর্থ হয়ে ফিরে আসবে nil। তারপরে 15, অবশ্যই 0 তম চরিত্রের সূচক। "ফিজবজ" কেবলমাত্র 8 টি অক্ষরের দীর্ঘ এটি একটি ছোট বাধা; আমরা এটি প্যাড করতে একটি নতুন লাইন অক্ষর ব্যবহার করি, যা পরে এড়ানো হবে puts

এটি আরও সম্ভব যে পদ্ধতিগত পদ্ধতির সাহায্যে লুক টেবিলটি গল্ফ হতে পারে, তবে আমার চেষ্টা ছিল 190 বাইটের আশেপাশে।


2
মজাদার. এটি উল্লেখ্য হওয়া উচিত যে সমস্ত সংখ্যার কপিরাইট হয় 15 যখন 1 মডিউল 15 এর সমান 4 র্থ শক্তিতে উত্থিত হয় তখন ফর্মাতের সামান্য উপপাদ্য থেকে নেওয়া যেতে পারে।
ওয়েইজুন চিউ 21

2

[জাভাস্ক্রিপ্ট (নোড.জেএস) আরপিএল], 144 বাইট

(f=(i,s=[['Fizz'][i%3]]+[['Buzz'][i%5]]||i+[],b=i>1?f(i-1):[])=>[...s].some((p,j)=>b.some(w=>w[j]==p&0!=p))?f(i,' '+s):b.push(s)&&b)(50).join`

`

এটি অনলাইন চেষ্টা করুন!

সতর্কতা প্রোগ্রাম নিজেই অগ্রহণযোগ্য সময় চলে

জাভাস্ক্রিপ্ট (নোড.জেএস) , আরনাউল্ড দ্বারা 132 বাইট

f=(a=n=[],s=`${b=++n%5?'':'Buzz',n%3?b||n:'Fizz'+b}
`)=>n>50?'':a.some(x=>[...x].some((c,i)=>c!=0&c==s[i]))?f(a,' '+s):s+f([s,...a])

এটি অনলাইন চেষ্টা করুন!


আপনার উত্তর টিআইও লিঙ্কের মতো বলে মনে হচ্ছে না
জো কিং

@ জোকিং টিআইও আউটপুট অ্যারে আউটপুটস, এবং এটি অনুমোদিত কিনা তা আমি জানি না
l4m2

2

জাভা (জেডিকে 10) , 185 বাইট

v->{for(int n=0,l;n<50;System.out.printf((l>0?"%"+l:"%")+"s%s%n","",(n%3<1?"Fizz":"")+(n%5<1?"Buzz":n%3<1?"":n)))l="####%'##)+$-&'/()1*57$'9;&=()?*)A#EG$%IK+M%&O)*Q,U#".charAt(n++)-35;}

এটি অনলাইন চেষ্টা করুন!

ক্রেডিট


1

হাস্কেল , 190 187 186 178 176 বাইট

unlines$foldl(\a x->a++[[z|z<-iterate(' ':)x,all(\m->null[p|(p,q)<-m`zip`z,p==q&&p>' '])a]!!0])[]$h<$>[1..50]
a%b=a`mod`b<1
h n|n%15="FizzBuzz"|n%3="Fizz"|n%5="Buzz"|1<2=show n

এটি অনলাইন চেষ্টা করুন!

সামান্য আরও পঠনযোগ্য (এবং বর্ণিত) সংস্করণ:

-- check if a is evenly divisible by b
a%b=a`mod`b<1
-- produce correct FizzBuzz output for a number
h n|n%15="FizzBuzz"|n%3="Fizz"|n%5="Buzz"|1<2=show n
-- test if all chars distinct between two strings
x#y=null[a|(a,b)<-x`zip`y,a==b&&a>' ']
-- given a new string and all previous strings
-- shift the new string to the right until all
-- chars are distinct
x!y=[z|z<-iterate(' ':)y,all(z#)x]!!0
g=h<$>[1..50]
f'=foldl step[]g
  where step acc x = acc++[acc!x]

সম্পাদনা করুন: আমি আরও বাইট সংরক্ষণ করতে গল্ফযুক্ত সংস্করণে কিছু ফাংশন সন্নিবেশ করিয়েছি।


@ লাইকনি ঠিক আছে সংশোধন করা হয়েছে।
ক্রিশ্চিয়ান লুপাস্কু

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.