নেম গেম খেলছে


9

নামের গেমটি খেলতে একটি প্রোগ্রাম লিখুন ।

ইনপুট

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

আউটপুট

আপনার প্রোগ্রামটি অবশ্যই নীচের টেমপ্লেটটি পূরণ করে গানে বর্ণিত প্রদত্ত নামের ছড়াটি মুদ্রণ করবে:

(X), (X), bo-b(Y)
Banana-fana fo-f(Y)
Fee-fi-mo-m(Y)
(X)!

এখানে, (X)আসল নাম এবং (Y)কোনও প্রাথমিক ব্যঞ্জনবঞ্জন সরানো হলে ছোট ক্ষেত্রে এটির নাম।

তবে একটি ব্যতিক্রম আছে। যদি আসল নামটি দিয়ে শুরু হয় m, fবা b, এটি সংশ্লিষ্ট লাইনে এই চিঠিটি ছাড়া লেখা উচিত। উদাহরণস্বরূপ নামটি থাকলে Bob, "খ" লাইনটি শেষ হওয়া উচিত bo-ob। মনে রাখবেন যে, এই ক্ষেত্রে, অন্য কোন ব্যঞ্জনবর্ণ রাখা হয়, তাই জন্য Fredএটা fo-redনা fo-ed

উদাহরণ

শার্লি:

Shirley, Shirley, bo-birley
Banana-fana fo-firley
Fee-fi-mo-mirley
Shirley!

আর্নল্ড:

Arnold, Arnold, bo-barnold
Banana-fana fo-farnold
Fee-fi-mo-marnold
Arnold!

বব:

Bob, Bob, bo-ob
Banana-fana fo-fob
Fee-fi-mo-mob
Bob!

ফ্রেড:

Fred, Fred, bo-bed
Banana-fana fo-red
Fee-fi-mo-med
Fred!

স্কোরিং

সংক্ষিপ্ততম কোড জিতেছে।


1
আমি অনুমান করি Yকণ্ঠস্বর হিসাবে পরিচালনা করা Yvesহয়, যেমন Ivesবা হয় Arnold
ব্যবহারকারীর অজানা

1
তবে ইয়েটস, ইয়েস্টিন, ইওলান্দা বা ইউলিয়া সম্পর্কে কী?
প্রাক্তন

@ ফেফিয়েন্ট: আমার ধারণা আপনি Yযদি স্বরবর্ণ হিসাবে ব্যঞ্জনাত্মক অনুসরণ করেন তবেই আপনি স্বর হিসাবে বিবেচনা করতে পারবেন । এটি অন্তত এই মামলাগুলি কভার করা উচিত।
হামার

13
আমি টাকার জন্য দুঃখিত।
পিটার ওলসন

উত্তর:


3

vi, 118 115

Y2PA,<ESC>Ypj~Y2PIbo-b<c-o>wBanana-fana fo-f<c-o>wFee-fi-mo-m<c-o>2$!<ESC>HJJ:%s/\vo-(([bfm])\2([^aeiou]*))?([bfm]?)[^aeiou]*/o-\3\4
ZZ

কোডটিতে 5 টি নিয়ন্ত্রণ অক্ষর রয়েছে, যা আমি বন্ধনীতে রেখেছি। প্রত্যেকে কেবলমাত্র অক্ষর গণনার দিকে একক অক্ষর হিসাবে গণনা করে।

সম্পাদনা: প্রথম যোগদান (জে) কে পরবর্তীতে সরানো এবং পেস্ট-পূর্বে (পি) একটি পেস্ট-পরে (পি) এ পরিবর্তন করা আমার 1 টি চরিত্র সংরক্ষণ করেছে। এছাড়াও, রেগেক্সে ও-কে ক্যাপচার না করা আমাকে আরও 2 টি চরিত্র সংরক্ষণ করেছে।


3

এসএনওবিএল 4, 437 430 বাইট

 N = TRIM(INPUT)
 D = REPLACE(N,'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
+'abcdefghijklmnopqrstuvwxyz')
 B = "b" D
 F = "f" D
 M = "m" D
 &ANCHOR = 1
 D SPAN('bcdfghjklmnpqrstvwxyz') . I REM . R :F(Y)
 B = "b" R
 F = "f" R
 M = "m" R
 I "b" :S(U)
 I "f" :S(V)
 I "m" :S(W) F(Y)
U D "b" REM . B :(Y)
V D "f" REM . F :(Y)
W D "m" REM . M
Y OUTPUT = N ", " N ", bo-" B
 OUTPUT = "Banana-fana fo-" F
 OUTPUT = "Fee-fi-mo-" M
 OUTPUT = N "!"
END

অবহেলিত (প্লাস আমি একটি প্রম্পট যুক্ত করেছি; উপরের একটিটি কেবল নাম টাইপ করার জন্য অপেক্ষা করছে):

      OUTPUT = "Please enter your name."
      Name = TRIM(INPUT)
      UC = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
      LC = 'abcdefghijklmnopqrstuvwxyz'
      Low = REPLACE(Name, UC, LC)
      BName = "b" Low
      FName = "f" Low
      MName = "m" Low
      Consonants = SPAN('bcdfghjklmnpqrstvwxyz')
      &ANCHOR = 1
      Low Consonants . First REM . Rest  :F(READY)
      BName = "b" Rest
      FName = "f" Rest
      MName = "m" Rest
      First "b"                   :S(BINIT)
      First "f"                   :S(FINIT)
      First "m"                   :S(MINIT) F(READY)
BINIT Low "b" REM . BName         :(READY)
FINIT Low "f" REM . FName         :(READY)
MINIT Low "m" REM . MName
READY OUTPUT = Name ", " Name ", bo-" BName
      OUTPUT = "Banana-fana fo-" FName
      OUTPUT = "Fee-fi-mo-" MName
      OUTPUT = Name "!"
END

এটি আমি লিখেছি এটিই প্রথম SNOBOL প্রোগ্রাম।

SNOBOL একটি লাইন-ভিত্তিক ভাষা, যেমন ফরটারান, কোবল, বা বেসিক। প্রতিটি লাইনে কলাম 1 এ শুরু হওয়া একটি alচ্ছিক লেবেল, লাইনটির কোড যা অ্যাসাইনমেন্ট এবং প্যাটার্ন মেলাতে এবং optionচ্ছিক শাখা জড়িত করতে পারে। হ্যাঁ, লাইনগুলি (alচ্ছিক) জিওটিও দিয়ে শেষ হয়। এগুলি দুটি রূপে আসে:

        :(TARGET)

শাখাগুলি লেবেল করার TARGETসময়,

        :S(SUCCESS) F(FAILURE)

SUCCESSপ্যাটার্ন ম্যাচটি সাফল্য পেয়েছে বা FAILUREঅন্যথায় শাখাগুলি । আপনি কেবল সাফল্যের সাথে শাখা করতে পারেন এবং ব্যর্থতার পরবর্তী লাইনে যেতে পারেন বা বিপরীতে।

ধারাবাহিকতা লাইনগুলি একটি +বা দিয়ে শুরু হয় .। মন্তব্য একটি দিয়ে শুরু *

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

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

নমুনা রান:

 # $RUN *SNOBOL4 5=GOLF.SNO+*SOURCE* 6=*DUMMY*(1,28)+*SINK*(1,4)+*DUMMY*
 # Execution begins   16:57:25
   Snowman
   Snowman, Snowman, bo-bowman
   Banana-fana fo-fowman
   Fee-fi-mo-mowman
   Snowman!
 # Execution terminated   16:57:30  T=0.013

আমি এই দৌড়ে হারকিউলিস , S / 370 মেইনফ্রেম এর 6.0a মুক্তি চলমান এমুলেটর মিশিগান টার্মিনাল সিস্টেম এপ্রিল 1, 1973 মে 1, 1975 এমটিএস জন্য নির্মিত থেকে SNOBOL4 সংস্করণ 3.10 ব্যবহার করে, কিন্তু সেখানে চালানোর জন্য সম্ভবত সহজ উপায় আছে SNOBOL4 একটি উপর আধুনিক ব্যবস্থা :)

সম্পাদনা: একটি অপ্রয়োজনীয় সাফল্যের শাখা সরানো হয়েছে যা পতনের সমতুল্য ছিল (আমি বুঝতে পারি নি যে আমি নিজেই কেবলমাত্র একটি ব্যর্থতা শাখা রাখতে পারি) যা একটি অনিবন্ধিত শাখার লেবেলকে সরিয়ে দেয় এবং শর্তহীন গোটোটিকে পূর্বের লাইনে ব্যর্থ শাখায় পরিণত করে, 7 বাইট সঞ্চয় করার জন্য।

টিআইওর এসএনওবিএল 4 সমর্থন রয়েছে এখন আপনি এটি অনলাইনে চেষ্টা করতে পারেন ! দ্রষ্টব্য: এটি 430 এর পরিবর্তে আকারটি 429 হিসাবে দেখায় কারণ আমি যখন এটি সেখানে আটকানো হয়েছিল তখন চূড়ান্ত লাইনফিডটি সরিয়ে ফেলা হবে। আমি ধারাবাহিকতা রেখাটি ( +যার প্রথমটি দিয়ে শুরু করলাম ) একটি এক লাইনে পরিবর্তন করার চেষ্টা করেছি , যা মেইনফ্রেম সংস্করণে আইনী ছিল না কারণ লাইনটি দীর্ঘ ছিল এবং এটি কাজ করেছিল এবং এটিকে 427 এ নামিয়ে দিয়েছে। স্পষ্টতই CSNOBOL4 দীর্ঘ লাইনের অনুমতি দেয়। যদিও আমি আমার স্কোরটি 430-এ রেখে যাচ্ছি, যদিও আমার মেশিনে স্ক্রিপ্টটি ছিল কতটি বাইট, এবং তদ্ব্যতীত, এসএনওবিএল বেশ অ-প্রতিযোগিতামূলক।



@ জিউস্পেপ ওয়া, এটি দুর্দান্ত! আমাকে জানতে দেওয়ার জন্য ধন্যবাদ।
ডেভিড কনরাড

সিএসএনওবিএল 4 এর মধ্যে আরও কয়েকটি ভিন্নতা রয়েছে, কারণ অ্যাসাইনমেন্টের ক্ষেত্রে কেবল শীর্ষস্থানীয় স্থান প্রয়োজন, সুতরাং আপনার সমস্ত লাইনের মতো N = TRIM(INPUT)হতে পারে N =TRIM(INPUT)
জিউসেপে

2

জে , 149 টি অক্ষর

1!:2&2>|.(n,'!');('Fee-fi-mo-';'Banana-fana fo-';n,', ',n,', bo-'),&.>;/'mfb'(,`(}.@])`($:}.)@.((=+.2*5='aeiou'i.]){.)"0 _)a.{~32(23 b.)a.i.n=.1!:1]3

2

জাভাস্ক্রিপ্ট, 115 বাইট

r=x=>x.match(/[aeiou]\w*/i)[0];f=x=>`${x}, ${x}, bo-b${r(x)}\nBanana-fana fo-f${r(x)}\nFee-fi-mo-m${r(x)}\n${x}!`

ব্যাখ্যা:

এই ফাংশনটি প্রাথমিক ব্যঞ্জনা বাদ দিয়ে নামটি দেয়

r=x=>x.match(/[aeiouAEIOU]\w*/)[0]

তারপরে বাকী স্ট্রিং সম্পূর্ণ স্ট্রিং ফিরিয়ে ফাংশন।

f=x=>`${x}, ${x}, bo-b${r(x)}\nBanana-fana fo-f${r(x)}\nFee-fi-mo-m${r(x)}\n${x}!`

সম্পাদনা করুন: 119 মার্টিন ইন্ডারকে 119 থেকে 115 বাইট পর্যন্ত ধন্যবাদ


1
পিপিসিজিতে আপনাকে স্বাগতম! আমি বিশ্বাস করি আপনি এই রেজেক্সকে সংক্ষিপ্ত করতে পারবেন /[aeiou]\w*/i
মার্টিন এন্ডার

1
আপনি সংক্ষিপ্ত আকারের সাথে মূল সংস্করণটি প্রতিস্থাপন করতে পারেন। পুরাতনটি পোস্টের সম্পাদনা ইতিহাসে সংরক্ষণ করা হবে। আপনি যদি চান তবে আপনি আগের স্কোরগুলি JavaScript, <s>119</s> 115 bytesশিরোনামের মতো অন্তর্ভুক্ত করতে পারেন যাতে লোকেদের আগ্রহী হয় তবে তাদের মূলত একটি দীর্ঘ সংস্করণ ছিল int
মার্টিন এন্ডার

আহ, দুর্দান্ত। আবার সম্পাদনা করা হয়েছে :)
এনিয়েলেটর

1

ক্লোজার , কমিয়ে 292 টি অক্ষর

এখানে একটি প্রথম চেষ্টা, প্রায় ইতিবাচক আমি এটিকে আরও ঝুঁকতে পারি:

(defn name-game
  [n]
  (let [[b f m] (map (fn [x] (if (some #(= % (first n) (last x)) "bfm")
                              (str (apply str (butlast x)) (apply str (rest n)))
                              (str x (apply str (drop-while (fn [x] (not (some #(= % x) "aeiou"))) n))))) [", bo-b" "\nBanana-fana-fo-f" "\nFee-fi-mo-m"])]
    (str n ", " n b f m "\n" n "!")))

আমি কেবল ক্লোজার শিখছি এবং ভেবেছিলাম এটাকে শট দেওয়ার জন্য মজা হবে। এখানে আমার যুক্তি:

- স্ট্রিংয়ের শুরু থেকে ব্যঞ্জনবিন্যাসকে সরিয়ে ফেলার জন্য: (drop-while (fn [x] (not (some #(= % x) "aeiou"))) name)

- "বি", "এফ" এবং "এম" এর অতিরিক্ত নিয়মগুলি পরিচালনা করতে, আমি পাঠ্যগুলিকে বাক্যগুলির তালিকায় ভেঙে দিয়েছি: [", bo-b" "\nBanana-fana-fo-f" "\nFee-fi-mo-m"]

- তারপরে, আমি একটি ফাংশন প্রয়োগ করেছি যাতে বাক্যটি শেষ হয় কিনা জিজ্ঞাসা করে নামটি দিয়ে শুরু হওয়া একই চিঠির সাহায্যে এবং ধাঁধার নিয়মের উপর ভিত্তি করে 3 টি বাক্যাংশকে রূপান্তর করতে ব্যবহৃত হয়েছিল

- চূড়ান্ত পদক্ষেপটি ফলাফলের সাথে একটি স্ট্রিং তৈরি করা হয়


1

স্কেলা 281

আমি (এক্স) এবং সঙ্গে প্যাটার্ন (ওয়াই) প্রতিস্থাপিত #এবং 012। এটির Sজন্য একটি নতুন নাম Stringএবং a(b,c,d)এটির জন্য সংক্ষিপ্ত সংজ্ঞাb.replaceAll(c,d)

val v="""#, #, bo-b0
Banana-fana fo-f1
Fee-fi-mo-m2
#!"""
type S=String
def a(b:S,c:S,d:S)=b.replaceAll(c,d)
def r(t:S,n:S,i:Int)=if(n(0)=="bfm"(i).toUpper)a(t,"."+i,n.tail)else
a(t,""+i,a(n,"^[^AEIOUaeiou]*([aeiou].*)","$1")).toLowerCase
def x(n:S)=a(r(r(r(v,n,0),n,1),n,2),"#",n)

পরীক্ষার প্রার্থনা:

val l = List ("Shirley", "Arnold", "Bob", "Fred") 
for (n <- l) println (x (n) + "\n")

এবং অবরুদ্ধ:

val templ = """#, #, bo-b0
Banana-fana fo-f1
Fee-fi-mo-m2
#!"""

val names = List ("Shirley", "Arnold", "Bob", "Fred") 
val keys = "bfm"

def recode (template: String, n: String, i: Int) = 
 if (n(0) == keys(i).toUpper)
   template.replaceFirst ("." + i, n.tail) else 
 template.replaceAll ("" + i, (n.replaceAll ("^[^AEIOUYaeiouy]*([aeiou].*)", "$1").toLowerCase))

for (name <- names)
  println (recode (recode (recode (templ, name, 0), name, 1), name, 2).replaceAll ("#", name) + "\n")

1

পাইথন 3, 148 145 142 বাইট

হ্যাঁ আমি জানি একটু দেরি হলেও ...

n=input();i=0
r=n[i:].lower()
while n[i]not in'aeiouAEIOU':i+=1;r=n[i:]
print(f'{n}, {n}, bo-b{r}\nBanana-fana fo-f{r}\nFee-fi-mo-m{r}\n{n}!')

ফলাফলের স্ট্রিংটি ফর্ম্যাট করতে এটি নতুন এফ স্ট্রিং ব্যবহার করে ।

দুর্ভাগ্যক্রমে, টিআইও এখনও এফ-স্ট্রিং সমর্থন করে বলে আমি মনে করি না।

পুরাতন রুপ

def f(n,i=0):
 r=n[i:].lower()
 while n[i].lower()not in'aeiou':i+=1;r=n[i:]
 return f'{n}, {n}, bo-b{r}\nBanana-fana fo-f{r}\nFee-fi-mo-m{r}\n{n}!'

@ আফিসিয়ালাইমকে 3 বাইট সংরক্ষণ করা হয়েছে


'এআইইউইউইউউউ' আক্ষরিক ব্যবহার করে এবং তৃতীয় লাইনে নিম্ন () এড়িয়ে তিনটি বাইট সংরক্ষণ করুন
অফিসিয়ালাইম

1

সেড, 162 বাইট

sed 'h;G;G;G' |sed '1s/.*/&, &, bo-b\L&/i;2s/^.*/Banana-fana fo-f\L&/;3s/^.*/Fee-fi-mo-m\L&/;4s/$/!/;tx;:x;s/o-\([bfm]\)\1/o-/i;tz;s/\(o-[bfm]\)[^aeiou]\+/\1/;:z'

এই কাজটি করার আগে আমি সেডটি খুব ভাল করে জানতাম না। আমি, ওহ, এখন এটি আরও অনেক ভাল জানি। পাইপলাইনের প্রথম সেডটি তিনবার নামটির নকল করে যাতে এটি কেবল "বব" এর পরিবর্তে "বব \ nobi Bob nobi \ nobi" হয়ে যায়। পরের সেড ভারী উত্তোলন করে।

স্টিডিনের মতো ইনপুট আশা করে echo Name |sed ...

Ungolfed:

sed 'h                           ;# copy to hold buffer
G                                ;# append newline + hold buffer to pattern
G                                ;# ditto for next two G's
G' |sed '1s/.*/&, &, bo-b\L&/i   ;# 1st line -> X, X bo-bx (lowercase)
2s/^.*/Banana-fana fo-f\L&/      ;# 2nd line -> Banana-fana fo-fx
3s/^.*/Fee-fi-mo-m\L&/           ;# 3rd line -> Fee-fi-mo-mx
4s/$/!/                          ;# bang the 4th line!
tx                               ;# jump to :x if any s/// has matched
:x                               ;# spoiler alert: it has! reset t-flag
s/o-\([bfm]\)\1/o-/i             ;# match some o-cc where c = [bfm]
tz                               ;# if that matched, branch to :z
s/\(o-[bfm]\)[^aeiou]\+/\1/      ;# replace o-[bfm] plus consonants with o-[bfm]
:z                               ;# target of tz, skips over previous s///'

কয়েক নোট। প্রথম চারটি ম্যাচ, 1s, 2s, 3s, 4s, আউটপুটটিকে বেশ সঠিক কিছুতে রূপান্তরিত করে। বব বো-বোবব হয়েছেন, ফ্রেড ফো-ফ্রেড হয়ে গেছে, এবং মাইক মো-মিমিকে পরিণত হয়েছে। কায় হয়ে উঠবে মো-মাকে, এমকে?

তারপরে, আমাদের বো-ওববকে বো-ওব, বা বো-বকে বো-বে সহ প্রতিস্থাপন করতে হবে। এটি করার জন্য, আমরা একটি বৈশিষ্ট্যটি ব্যবহার করতে পারি যেখানে আমরা একটি s /// প্রতিস্থাপন করি এবং তারপরে এটি যদি সফল হয় তবে শাখাটি, যা এখন আমরা এড়িয়ে যেতে চাই। তবে যদি এটি মিস হয় তবে আমরা শাখার মধ্যে দিয়ে পড়ে পরবর্তী প্রতিস্থাপনটি করতে চাই।

টি [লেবেল] কমান্ড এটি করে, কেবল পূর্ববর্তী এস /// মেলে তবেই ব্রাঞ্চিং। তবে স্ক্রিপ্টের শুরুতে আমি ইতিমধ্যে প্রতিটি লাইনের জন্য একটি s /// করেছি (1s, 2s ইত্যাদির শীর্ষস্থানীয় সংখ্যাগুলি ঠিকানা; তাদের অর্থ হ'ল ঠিকানার সাথে মেলে তবে কমান্ডটি সম্পাদিত হবে)। সুতরাং, 1, 2, 3, বা 4 আমরা কোন লাইনে থাকি না কেন, কমপক্ষে একটি এস /// মিলিয়েছে। (আমি অন্যান্য উপায়ে এটি অন্য নামে করার চেষ্টা করেছি, নামগুলি ম্যাসেজ করার পরে "কলা-ইত্যাদি" পরে যুক্ত করেছিলাম, তবে সেভাবে আটকে গেলাম এবং একবারে এটি করার চেষ্টা করার ফলে কিছুটা পুনরাবৃত্তি ঘটবে।) ভাগ্যক্রমে, পতাকাটি পারে একটি শাখা নিয়ে পরিষ্কার হয়ে যাবে, তাই আমরা এটি "tx;: x" দিয়ে করি। x টি লেবেলে tx শাখা, এবং: x হল x লেবেল।

রক্ষে! এটি চূড়ান্ত দুটি বিকল্পের জন্য তালু সাফ করে। আমরা একটি চেষ্টা করি এবং যদি এটি সফল হয় তবে আমরা অন্যটির উপর শাখা রাখি, অন্যথায় আমরা দ্বিতীয়টি করি। যে কোনও উপায়ে আমরা শেষ করব: জেড লেবেল এবং প্যাটার্ন বাফারটিতে লিরিক্সের একটি লাইন রয়েছে যা স্টাডাউটে মুদ্রিত।

সেড ম্যান পেজ এবং টেক্সিনফোর ম্যানুয়াল সহ আমার কীভাবে বেশি সময় ব্যয় করার জন্য অবশেষে সেড এস / ফু / বার / এর চেয়ে আরও কী কী করা উচিত তা বোঝার জন্য ধন্যবাদ


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

0

পাইথন, 161

x=raw_input('')
a,b,c=x[0],x[1:],'bfm'
if b[0] in c:b=b[1:]
d="X, X, bo-@\nBanana-fana fo-@\nFee-fi-mo-@\nX!".replace('X',a)
for y in c:d=d.replace('@',y+b,1)
print d


সবেমাত্র বুঝতে পেরেছি আমার কোড ব্যর্থ হয়েছে ... - প্রাথমিক ব্যঞ্জনা সরিয়ে দেয় না।
- 'বো-ওব' ব্যবসা পরিচালনা করে না।

এটি আমার কাছে সবচেয়ে দূরের, সম্ভবত কেউ এটি শেষ করতে পারে।


0

গ্রোভী, 146

r={n->m={n[0]==it[0]?n[1..-1]:it[1]+(n.toLowerCase()=~'[aeiou].*')[0]};"$n, $n, bo-${m 'Bb'}\nBanana-fana fo-${m 'Ff'}\nFee-fi-mo-${m 'Mm'}\n$n!"}

assert ['Shirley', 'Arnold', 'Bob', 'Fred'].collect { r(it) } == [
'''Shirley, Shirley, bo-birley
Banana-fana fo-firley
Fee-fi-mo-mirley
Shirley!''',
'''Arnold, Arnold, bo-barnold
Banana-fana fo-farnold
Fee-fi-mo-marnold
Arnold!''',
'''Bob, Bob, bo-ob
Banana-fana fo-fob
Fee-fi-mo-mob
Bob!''',
'''Fred, Fred, bo-bed
Banana-fana fo-red
Fee-fi-mo-med
Fred!'''
]

0

আর, 189 অক্ষর

x=scan(,'');f=function(b)if(grepl(b,x))sub('.','',x)else tolower(sub('^[^aoueiy]*',b,x,i=T));cat(sprintf('%s, %1$s, bo-%s\nBanana-fana fo-%s\nFee-fi-mo-%s\n%1$s!\n',x,f('B'),f('F'),f('M')))

তবে আরও একটি চরিত্রের সাহায্যে আপনি এক সাথে অনেকগুলি নাম প্রবেশ করতে পারেন:

x=scan(,'');f=function(b)ifelse(grepl(b,x),sub('.','',x),tolower(sub('^[^aoueiy]*',b,x,i=T)));cat(sprintf('%s, %1$s, bo-%s\nBanana-fana fo-%s\nFee-fi-mo-%s\n%1$s!\n',x,f('B'),f('F'),f('M')))

0

পাইথ , 111 বাইট এসবিসিএস

V"BFM"IqhzN=aYtrz0.?=aY+rN0:rz0"^[^aeiou]+"k))+%." s­ÞXY:lÍ"*]z2@Y0+." o1}1ÃЬÛJî½"@Y1+."-o Âkq°ë¹è"@Y2+z\!

পরীক্ষা স্যুট

কোডটি অপ্রিন্টযোগ্য অক্ষর ব্যবহার করে এবং এগুলি স্ট্যাক এক্সচেঞ্জে সঠিকভাবে প্রদর্শিত হয় না। প্রদত্ত লিঙ্কটিতে এই অক্ষরগুলি রয়েছে এবং এটি প্রোগ্রামটির সঠিক সংস্করণ।


-1

পাইথন

n=raw_input('')
if n[0].lower() in ("m", "f", "b"): r=n[1:]
else:
    i = iter(n.lower())
    for a in range(len(n)):
        if i.next() in ("a","e","i","o","u"):
            r = n[a:]
            break
print "%s, %s, bo-b%s\nBanana-fana fo-f%s\nFee-fi-mo-m%s\n%s!" %(name,name,rhyme,rhyme,rhyme,name)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.