এ, বাজ, সি, ডি, ই, ফিজ, জি


14

স্ট্রিং ব্যবহার করে একটি সাধারণ ফিজবজ uzz

প্রদত্ত

  • 1 শব্দ বা বাক্যাংশ (স্ট্রিং)
  • 2 অনন্য অক্ষর

আউটপুট

প্রথম অক্ষরের প্রতিটি ঘটনার সাথে শব্দ বা বাক্যাংশটি ফিজির সাথে প্রতিস্থাপিত হয়েছিল এবং দ্বিতীয় চরিত্রের প্রতিটি বাজে পরিবর্তিত হয়েছে

বিধি

  • ফিজ এবং বাজ উভয়ের প্রথম অক্ষরের অবশ্যই মূলধন থাকতে হবে
  • Fizz এবং buzz শব্দের বাকি অংশগুলির জন্য আপনাকে অবশ্যই প্রতিস্থাপন করা চরিত্রের সাথে মিলিয়ে যেতে হবে (যদি কোনও ক্ষেত্রে না থাকে তবে ছোট হাতের অক্ষর রাখুন)
  • প্রদত্ত অক্ষরগুলি যদি বাক্যটিতে না থাকে তবে মূল বাক্যাংশটি আউটপুট করুন

পরীক্ষার কেস

Given: Hello, h, l
Output: FIZZeBuzzBuzzo

Given: test, a, b
Output: test

Given: PCG rocks!,  , !
PCGFizzrocksBuzz

Given: This
Is
SPARTA!, 
, S
Output: ThiBuzzFizzIBuzzFizzBUZZPARTA!

Given: FizzBuzz, a, b
Output: FizzBUZZuzz

এটি কোড-গল্ফ তাই সংক্ষিপ্ততম কোড, বাইটে, জিতে!

বিঃদ্রঃ

প্রযুক্তিগতভাবে নতুন লাইনের কেস পরিচালনা করা (এটি স্পার্টা!) চ্যালেঞ্জের একটি অংশ। তবে, আমি এটি অন্তর্ভুক্ত না করার জন্য একটি উত্তর বাতিল করব না, কারণ এটি বেশ কয়েকটি চ্যালেঞ্জিং বা কিছু ভাষায় এমনকি অসম্ভব।


2
you must match the case of the replaced characterএবং Input is not case sensitiveএকে অপরের বিরোধিতা বলে মনে হচ্ছে।
গ্রেগ মার্টিন

@ গ্রেগমার্টিন আহ আপনাকে ধন্যবাদ, আমি বলতে চেষ্টা করেছিলাম যে ইনপুট হিসাবে দুটি অক্ষর কেস সংবেদনশীল (উদাহরণস্বরূপ এ এর ​​অর্থ একই)
গ্রেসফুললেমিং

1
ThiBuzzFizzIBuzzFizzBUZZPARTAএকটি চূড়ান্ত উদ্দীপনা চিহ্ন অনুপস্থিত।
আর্নল্ড

আমরা যেমন ইনপুট সমর্থন করার কথা aa, a, f? প্রত্যাশিত আউটপুট কি হবে? BUZZizzBUZZizz,, FizzFizzবা উভয়ই আমাদের বিকল্পে অনুমোদিত?
আর্নল্ড

@ আমল্ড সর্বশেষ পরীক্ষার মামলার ভিত্তিতে, আমি বলব এটির ফলাফল হওয়া উচিত FizzFizz
ফান্ড মনিকার লসুইট

উত্তর:


2

জেলি , 34 বাইট

Œl=€⁹Œl¤ȧ€"“¡Ṭ4“Ụp»o"/ȯ"Œu⁹Œln$T¤¦

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

কিভাবে?

Œl=€⁹Œl¤ȧ€"“¡Ṭ4“Ụp»o"/ȯ"Œu⁹Œln$T¤¦ - Main link: characters, string
Œl                                 - lowercase the characters
       ¤                           - nilad followed by link(s) as a nilad:
    ⁹                              -     right argument, the string
     Œl                            -     lowercase
  =€                               - equals (vectorises) for €ach (a list of 2 lists that identify the indexes of the string matching the characters regardless of case)
           “¡Ṭ4“Ụp»                - dictionary strings ["Fizz", "Buzz"]
          "                        - zip with
        ȧ€                         -     logical and (non-vectorising) for €ach (replace the 1s with the words)
                     /             - reduce with:
                    "              -     zip with:
                   o               -         logical or (vectorises) (make one list of zeros and the words)
                                   - implicit right argument, string
                       "           - zip with:
                      ȯ            -     logical or (non-vectorising) (replace the zeros with the original characters from the string)
                                 ¦ - apply...
                        Œu         -     uppercase
                                   - ...to the indexes (the words at indexes):
                                ¤  -     nilad followed by link(s) as a nilad:
                          ⁹        -         right argument, the string
                              $    -         last two links as a monad (i.e. the string on both sides):
                           Œl      -             lowercase
                             n     -             not equals (vectorises)
                               T   -         truthy indexes (the indexes of the capital letters in the string)

+1, নিউলাইন কেসটি ব্যবহার করার জন্য আপনাকে ধন্যবাদ। এটি এটিকে প্রথম সম্পূর্ণ সঠিক জমা দেয়
গ্রেসফুললেমিং

6

পাইথন 3 , 180 174 168 160 152 বাইট

from sys import*
J=''.join
L=str.lower
s,a,b=J(stdin).split(', ')
print(J('FBFBiuIUzzZZzzZZ'[L(k)==L(b)::2][k!=L(k)::2]*(L(k)in L(a+b))or k for k in s))

এটি পাইথন 3-তে স্টিফেনের উত্তরের আরও গল্ফযুক্ত সংস্করণ This এটি চিপস তার বাইটের 42% দূরে। পাইথন 2 মুদ্রণে একটি বাইট সংরক্ষণ করতে পারে তবে অগ্রগতির দাম এটি। এটি সঠিকভাবে নিউলাইনগুলি পরিচালনা করে।

ইনপুটটিতে 8 বাইট সংরক্ষণ করার জন্য ব্ল্যাকনাটকে ধন্যবাদ।


1
fileinputমডিউলগুলি কীসের জন্য ব্যবহৃত হয়?
কেয়ার্ড কোইনারিংহিংহ

@ ভ্যালিরিও অ্যাকাউন্ট, ফাইল ইনপুট.িনপুট বিল্ট ইন ইনপুট পদ্ধতিকে ওভাররাইড করে। এটি নতুন লাইনের সাথে ইনপুটগুলিকে সক্ষম করে।
বেন ফ্রাঙ্কেল

2
কিভাবে from sys import*এবং s,a,b=J(stdin).split(', ')কয়েক অক্ষর সংরক্ষণ?
ব্ল্যাককিংহিট

4

পাইথন, 109 বাইট

lambda s,w:"".join([c,"Fizz","Buzz","BUZZ","FIZZ"][-~w.lower().find(c.lower())*-~(-2*c.isupper())]for c in s)

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


দুটি অক্ষরকে একক স্ট্রিং হিসাবে নিয়ে যায়

সম্পাদনা: টিআইও লিঙ্কে টেস্টকেস যুক্ত হয়েছে, নিউলাইনটিও কাজ করে


2

পাইথন 2 , 271 , 261 বাইট

import fileinput as f
a=''
for m in f.input():a+=m
a=a.split(', ')
l=L=list(a[0])
for i in range(0,len(a[0])):
 j,k=l[i].lower(),l[i].istitle()
 if j==a[1].lower():
  L[i]='FIZZ'if k else'Fizz'
 elif j==a[2].lower():
  L[i]='BUZZ'if k else'Buzz'
print''.join(L)

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

বাহ এই এক ডুজি ছিল! দেখা যাচ্ছে পাইথন মাল্টি-লাইন ইনপুটগুলি গ্রহণ করবে নাfileinput অবশ্যই ব্যবহার করা উচিত।

সম্পাদনা করুন: এখন সব ক্ষেত্রে পাস করা উচিত :)


নিউলাইন দিয়ে মামলা পরিচালনা করার জন্য ডিফিনেট +1! অনেকেই এটি সংযুক্ত করতে সক্ষম নয়
গ্রেসফুললেমিং

আপনি এই জাতীয় কিছু করে 3 বাইট সংরক্ষণ করতে পারেন import fileinput as f...for m in f.input():
গ্রেসফুললেমিং

@ কালেব এই পরামর্শের জন্য ধন্যবাদ! এটি এখন সমস্ত পরীক্ষায় পাস করা উচিত
স্টিফেন

2

ম্যাটল্যাব / অক্টোবায় , 106 102 111 বাইট

@(a,b,c)regexprep(a,num2cell([lower([b c]) upper([b c]) '1234']),{'2','4','1','3','FIZZ','Fizz','BUZZ','Buzz'})

এটি সম্ভবত আরও অনুকূলিত করা যেতে পারে।

এটি একটি সাধারণ রেজেক্স রিপ্লেসমেন্ট ব্যবহার করে। তবে প্রথমে সংখ্যার সাথে ইনপুট অক্ষরগুলি প্রতিস্থাপন করে একটি মধ্যবর্তী পদক্ষেপের প্রয়োজন। এই এত যে যদি দ্বিতীয় ইনপুট অক্ষর প্রতিস্থাপন অন্তর্ভুক্ত করা হয়েছিল FizzযেFizz তারপর প্রতিস্থাপিত না হয়ে যায় যখন পরবর্তী Regex সঞ্চালিত হয়।

এটি অবশ্যই ধরে নেয় ইনপুটটিতে কোনও সংখ্যা নেই। তবে প্রশ্নটি দেওয়া ইনপুটটি একটি শব্দ বা বাক্যাংশ বলে আমি মনে করি এটি একটি গ্রহণযোগ্য ধারণা।

কোড ইনপুটটিতে নতুন লাইনগুলি সঠিকভাবে পরিচালনা করবে।

আপনি এটি অনলাইন চেষ্টা করতে পারেন !


2

4.4 + জিএনইউ বেড, 70 228 222 227 বাইট

IFS=;alias e=echo;K=`sed $([[ $2 != '
' ]]&&e "s/${2,}/Fizz/g;s/${2^}/FIZZ/g"||:)$([[ $3 != '
' ]]&&e ";s/${3,}/Buzz/g;s/${3^}/BUZZ/g"||:)<<<"$1"`;[[ $2 = '
'||$3 = '
' ]]&&e ${K//$'\n'/`[[ $2 = '
' ]]&&e Fizz||e Buzz`}||e "$K"

alias e=echo4.3 বা নীচে বাশগুলিতে রেফারেন্স করা থাকলে স্পষ্টতই একটি ত্রুটি নিক্ষেপ করছে, টিআইও সংস্করণটি আপাতভাবে ব্যবহার করছে। সুতরাং, দীর্ঘতর এবং সমতুল্য বাশ 4.3 কোডটি পরীক্ষার স্বার্থে নীচের টিআইও পরীক্ষার স্যুটটিতে দেওয়া হয়েছে। এটি পরীক্ষার সমস্ত ক্ষেত্রে পাস করে, তাই দুর্দান্ত।

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


পছন্দ করুন দুঃখিত যে এটি ঠিক করতে কিছুটা সময় নিয়েছে।
আর কাপ,

2

জাভাস্ক্রিপ্ট (ES6), 92 বাইট

স্ট্রিং এবং দুটি অক্ষরের অ্যারে হিসাবে ইনপুট নেয়। নিউলাইন সমর্থন করে।

f=(s,[a,b],r='Fizz')=>a?f(s.replace(RegExp(a,'gi'),m=>m<'a'?r.toUpperCase():r),[b],'Buzz'):s

পরীক্ষার মামলা


1

পাইথ - 25 বাইট

sXzsrBQ1scL2rB"FizzBuzz"1

টেস্ট স্যুট


2
অক্ষরের একটি হিসাবে একটি মূলধন সমস্যার কারণ হিসাবে মনে হয় - "Hl", Helloআউটপুটকে সঠিকভাবে মূলধন "hL", Helloকরে না এবং lএর বিকল্পগুলি দেয় না ।
জোনাথন অ্যালান

1

জিএনইউ সেড , 135 + 1 (আর পতাকা) = 136 বাইট

ডিফল্টরূপে, একটি সেড স্ক্রিপ্ট যতবার ইনপুট লাইন থাকে ততবার সম্পাদিত হয়। মাল্টি-লাইন ইনপুট হ্যান্ডেল করতে, আমি একটি নতুন চক্র শুরু না করে, প্রথমটিতে সমস্ত সম্ভাব্য অবশিষ্ট রেখা যুক্ত করার জন্য একটি লুপ ব্যবহার করি।

:r
$!N
$!br
s:, (.), (.):;\u\1FIZZ;\l\1Fizz;\u\2BUZZ;\l\2Buzz:
s:^:,:
:
s:,(.)(.*;\1)(...)(.):\3,\4\2\3\4:
s:,(.):\1,:
/,;.F/!t
s:,.*::

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

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

যেহেতু সেডের কোনও ডেটা টাইপ নেই, তাই আমি স্ট্রিংটির পুনরাবৃত্তি করতে একটি অক্ষর ডিলিমিটার ব্যবহার করি। এটি আমার বর্তমান অবস্থান চিহ্নিত করবে এবং একটি লুপে আমি এটিকে বাম থেকে ডানে স্থানান্তর করব। ভাগ্যক্রমে, আমি ,এটির জন্য ব্যবহার করতে পারি , কারণ এটি ইনপুট ডেটা ডিলিমিটার।

ব্যাখ্যা:

:r                                                 # reading loop
$!N                                                # append next input line
$!br                                               # repeat till EOF
s:, (.), (.):;\u\1FIZZ;\l\1Fizz;\u\2BUZZ;\l\2Buzz: # create replacement table
s:^:,:                                             # append my string delimiter
:                                                  # main loop
s:,(.)(.*;\1)(...)(.):\3,\4\2\3\4:                 # apply char replacement, if any
s:,(.):\1,:                                        # shift delimiter to right
/,;.F/!t                                           # repeat till end of string
s:,.*::                                            # print only the final string

0

হাস্কেল, 114 বাইট

u=Data.Char.toUpper
p[f,b]x|f==u x="Fizz"|b==u x="Buzz"|2>1=[x]
q x y|u y<y=x|2>1=u<$>x
r x=concatMap$q=<<p(u<$>x)

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


u=Data.Char.toUpperআমি যতদূর জানি শুধুমাত্র gci এ কাজ করে। স্ট্যান্ডার্ড হাস্কেল আপনার প্রয়োজন import। তবে আপনার =<<পরিবর্তে কিছু বাইট সংরক্ষণ করতে সক্ষম হওয়া উচিত concatMap
লাইকোনি

0

গণিত, 94 বাইট

a=ToLowerCase;b=ToUpperCase;StringReplace@{a@#->"Fizz",b@#->"FIZZ",a@#2->"Buzz",b@#2->"BUZZ"}&

বেনামে ফাংশন। ইনপুট হিসাবে দুটি স্ট্রিং নেয় এবং একটি ফাংশন দেয় যা ইনপুট হিসাবে স্ট্রিং নেয় এবং আউটপুট হিসাবে আউটপুট হিসাবে একটি স্ট্রিং প্রদান করে। এটি অবশ্যই ফর্ম্যাটে কল করা উচিতprog["c1", "c2"]["s"] , যেখানে "s"লক্ষ্য স্ট্রিং এবং "c1"এবং "c2"দুই অক্ষর। সম্ভবত আরও গল্ফ করা যেতে পারে।

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