একবচনকে বহুবচনতে রূপান্তর করুন


27

বিশেষ্য দুটি শব্দ, একবচন এবং বহুবচন। এই দুজনের মধ্যে রূপান্তর করা বেশ সহজ।

  1. সাধারণত, আপনি এটি দিয়ে শেষ করবেন s। প্রাক্তন। car=> cars

  2. এটা দিয়ে শেষ হয় তাহলে s, x, z, chবা sh, এটা দিয়ে শেষ es। প্রাক্তন। bus=> buses

  3. এটা দিয়ে শেষ হয় তাহলে yশুধু এটা আগে একটি ব্যঞ্জনবর্ণ সঙ্গে পরিবর্তন yকরতে ies। প্রাক্তন। penny=> pennies

  4. যদি এটি দিয়ে fবা শেষ হয় তবে এটিকে feপরিবর্তন করুন ves। প্রাক্তন। knife=> knives

  5. এটির oঠিক আগে যদি কোনও ব্যঞ্জনবর্ণ নিয়ে শেষ হয় তবে এটিকে পরিবর্তন করুন oes। প্রাক্তন। potato=> potatoes


কার্য

আপনাকে একটি একক বিশেষ্য দেওয়া হবে। আপনাকে প্রদত্ত বিশেষ্যটি বহুবচনতে রূপান্তর করতে হবে এবং আউটপুট করতে হবে।


বিধি

  • আপনাকে অনিয়মিত বিশেষ্য দেওয়া হবে না, যেমন mouseএবং moose

  • আপনাকে safe( যেমন safes# 4 লঙ্ঘন করা), piano( pianos; # 5 লঙ্ঘন করা) এবং o( oes, # 5 লঙ্ঘন করা ) ব্যতিক্রম দেওয়া হবে না ।

  • mosquito( mosquitosবা mosquitoes) এবং roof( roofsবা rooves) যেমন আপনার দুটি বা ততোধিক বহুবচন রূপ রয়েছে এমন শব্দ দেওয়া হবে না ।

  • আপনাকে অগণিত নাম দেওয়া হবে না।

  • y স্বর হিসাবে গণনা করা হয় না


উদাহরণ

car => cars
bus => buses
potato => potatoes
knife => knives
penny => pennies
exception => exceptions
wolf => wolves
eye => eyes
decoy => decoys
radio => radios

স্বচ্ছতার জন্য সম্পাদিত প্রশ্ন। রোলব্যাক নির্দ্বিধায়।
জংহওয়ান মিন

11
আহ, ইংলিশ - স্বেচ্ছাসেবী বিধি এবং বিশেষ মামলার এক বিশাল স্তূপ :)
23

38
@ চ্যালেঞ্জার 5 হ্যাঁ, তবে আপনি কঠোর গভীর চিন্তাভাবনার মাধ্যমে এটি বুঝতে পারবেন through ;)
জংহওয়ান মিন

@ ম্যাথেরহোহ আমি ব্যঞ্জনবর্ণটি পরিষ্কার করার জন্য সামনের নিয়মে সম্পাদনা করেছি। একই জন্য পরীক্ষার কেস জোড়া। আমি যদি ভুল বুঝে থাকি তবে স্পষ্ট করে এটি সম্পাদনা করুন।
ভুতগুলি_ইন_কোড

2
@ চ্যালেঞ্জার 5 আপনি যদি ডাচ এর সাথে ইংরেজী তুলনা করেন তবে খুব কমই নিয়ম থাকে .. ডাচদের বিশেষ নিয়ম এবং বিশেষ কেস থাকে এবং সেই বিশেষ ক্ষেত্রেগুলির বিরোধিতা করে এমন কিছু বিশেষ ক্ষেত্রে এমনকি সেই বিশেষ ক্ষেত্রেও এই বিশেষ ক্ষেত্রে বিরোধী যে বিশেষ ক্ষেত্রে এটি বিরোধিতা করে। ;)
কেভিন ক্রুইজসেন

উত্তর:


46

গণিত, 9 বাইট

Pluralize

হ্যাঁ, এর জন্য একটি বিল্ট-ইন রয়েছে!

নমুনা আউটপুট

Pluralize["car"]

cars

Pluralize /@ {"bus", "potato", "knife", "penny", "exception", "wolf", "eye"}

{"buses", "potatoes", "knives", "pennies", "exceptions", "wolves", "eyes"}


6
Waaaaaat! ম্যাথামেটিকার কোনও বিল্ট-ইন নেই এমন কিছু আছে কি?
কীউইউএসআর

2
ডি: বিল্টিনরাও এই চ্যালেঞ্জকে আক্রমণ করেছে
ম্যাথু রোহ


18

রেটিনা , 57 53 56 55 58 57 বাইট

কিছু গল্ফিং পরামর্শের জন্য মার্টিনএন্ডারকে ধন্যবাদ

বিজনেসগেটকে 1 বাইট গল্ফ করার জন্য ধন্যবাদ

([^aeiou]o|sh?|ch|z|x)$
$1e
fe?$
ve
([^aeiou])y$
$1ie
$
s

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

ব্যাখ্যা (পুরানো)

([^aeiou])y$
$1ie

পরিবর্তনগুলি {consonant}yকরার{consonant}ie

([^aeiou]o|[fxzs]|[sc]h)$
$&e

একটি আপনার স্বাক্ষরে eযখন একটি শব্দ প্রান্ত {consonant}o, f, x, z, s, shবা ch

fe$
ve

শেষ হওয়া পরিবর্তন feকরেve

$
s

অবশেষে sশব্দের সাথে একটি যুক্ত করুন ।

সম্পাদনাগুলি

  • বাইট যুক্ত হয়েছে কারণ আমি দ্বিতীয় নিয়মটি ভুলে গেছি
  • eyeউদাহরণ হিসাবে আপডেট করার জন্য বাইট যুক্ত করা হয়েছে

1
দুঃখিত যদি এটি একটি বোকা প্রশ্ন হয়, আমি রেটিনা ব্যবহার করি নি। প্রথম লাইনে কেন বৃত্তাকার বন্ধনীগুলির প্রয়োজন?
ব্যবহারকারী 2390246

কিছু মনে করবেন না, আমি মনে করি আমি নিজের প্রশ্নের উত্তর দিয়েছি। এটি নিম্নলিখিত লাইনে লুকব্যাক রেফারেন্সের কারণে।
ব্যবহারকারী 2390246

হ্যাঁ, এটি কারণ আমরা yব্যবহারের আগে চরিত্রটি ক্যাপচার করতে চাই$1
ক্রিটিক্সী লিথোস

আমি মনে করি এটি 57 বাইটে পেয়েছি: অনলাইনে চেষ্টা করে দেখুন
বিজনেস ক্যাট

16

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

s=>s[R='replace'](/([^aeiou])y$/,'$1ie')[R](/fe?$/,'ve')[R](/([^aeiou]o|[sxz]|[cs]h)$/,'$1e')+'s'

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


তোমার ()সামনে কেন আছে fe?
কোডোস জনসন

1
@ কোডস জনসন সমস্ত replace()পুনরাবৃত্তিতে প্রথম মিলের গ্রুপের সাথে একটি রেফারেন্স অন্তর্ভুক্ত থাকে (সহ $1)। এজন্য আমার এখানে একটি খালি ম্যাচিং গ্রুপ দরকার।
আর্নল্ড

আপনি চেষ্টা করেছেন (?<![aeiou])y?
তিতাস

@ টিটাস দুর্ভাগ্যক্রমে, জেএস দৃbe় প্রত্যাহার বাস্তবায়ন করে না।
আর্নৌল্ড

11

ব্যাচ, 325 বাইট

@set/ps=
@for %%v in (a e i o u)do @(
for %%e in (o y)do @if %s:~-2%==%%v%%e goto s
if %s:~-2%==%%vf set s=%s:~,-1%ve&goto s
if %s:~-3%==%%vfe set s=%s:~,-2%ve&goto s
)
@if %s:~-1%==y set s=%s:~,-1%ie
@for %%e in (o s x z)do @if %s:~-1%==%%e set s=%s%e
@for %%e in (c s)do @if %s:~-2%==%%eh set s=%s%e
:s
@echo %s%s

@echo offশুরুতে বরং @সব জায়গার চেয়ে কী হবে ? এছাড়াও, @set/ps=ফোন থেকে কিছুটা মরিচা লাগে। sভেরিয়েবল কি আর কাটা মানগুলি গ্রহণ করবে না?
কীউইউএসআর

@ কেইউইউউসআর @echo offইতিমধ্যে নিউলাইন ছাড়াই 9 বাইট রয়েছে, সুতরাং এটি আমার কিছুই সংরক্ষণ করে না। এছাড়াও, @set/ps=প্রথম স্থানে মান ইনপুট করা প্রয়োজন।
নীল

7

হাস্কেল, 216 207 205 বাইট

সহায়তার জন্য @ লিন, @ ইউজার 1472751 এবং @ লাইকনি ধন্যবাদ!

import Data.List
(!)s=or.map(\x->x`isSuffixOf`s)
c=['b'..'z']\\"eiou"
p s|s!(words"s x z ch sh"++map(:"o")c)=s++"es"|s!map(:"y")c=init s++"ies"|s!["f"]=init s++"ves"|s!["fe"]=(init.init)s++"ves"|0<1=s++"s"

সুপাঠ্য

import Data.List;

endsWithOneOf :: String -> [String] -> Bool
endsWithOneOf str ends = (or . map (\end -> end `isSuffixOf` str)) ends 

consonants :: [Char]
consonants = ['a'..'z'] \\ "aeiou"

pluralize :: String -> String
pluralize str
    | str `endsWithOneOf` (words "s x z ch sh" ++ (map (:"o") consonants)) = str ++ "es"
    | str `endsWithOneOf` (map (:"y") consonants) = init str ++ "ies"
    | str `endsWithOneOf` ["f"] = init str ++ "ves"
    | str `endsWithOneOf` ["fe"] = (init.init) str ++ "ves"
    | otherwise = str ++ "s"

ব্যাখ্যা

import Data.Listফাংশন জন্য isSuffixOfendsWithOneOf( গল্ফযুক্ত সংস্করণে) তালিকাভুক্ত উপাদানগুলির মধ্যে একটি স্ট্রিংয়ের সমাপ্তি কিনা তা প্রত্যাবর্তন করে। consonants(c)সমস্ত ব্যঞ্জনবর্ণের তালিকা মাত্র।

শেষ pluralize(p)অবধি, শেষগুলির জন্য পরীক্ষা করে যথাযথ বহুবচন প্রদান করে।

উদাহরণ:

p "potato" == "potatoes"

1
চমৎকার সমাধান! এটি 216 টি অক্ষর , তবে একাধিক বাইট দীর্ঘ যা আপনার সমাধানটি 226 বাইট করে। (কোড গল্ফ চ্যালেঞ্জগুলি স্পষ্টভাবে বাইটে স্কোর করা হয়, কারণ অক্ষর গণনা করা আপনাকে মাঝে মাঝে প্রতারণা করতে দেয়)) আপনি কেবল এটির নাম পরিবর্তন করতে পারেন !, যদিও! এছাড়াও, words"s x z ch sh"5 বাইট সঞ্চয় চারপাশে পেরেনগুলি সরানো (map(:"o")c))এবং (map(:"y")c))আরও 4 টি সঞ্চয় করে।
লিন

সহায়তার জন্য ধন্যবাদ, লিন! আমি আপনার পরামর্শ বাস্তবায়ন।
আইসফুঙ্কে

2
c=['b'..'z']\\"eiou"যেহেতু 'a'সর্বদা অপসারণ করা হয় তা ব্যবহার করে আপনি একটি বাইট সংরক্ষণ করতে পারেন ।
ব্যবহারকারী 1472751

1
0<1এর চেয়ে এক বাইট ছোট True। এছাড়াও ;নিউলাইনগুলি হ'ল একই বাইট গণনা তবে গল্ফ কোডটি আরও ভালভাবে পাঠযোগ্য।
লাইকনি


5

রাদা , 80 বাইট

f&s{s~="([^aeiou])y$","$1ie","([sxz]|[cs]h|[^aeiuo]o)$","$1e","fe?$","ve"s.="s"}

ফাংশনটি তার যুক্তি সংশোধন করে। ব্যবহার: main word { f word; print word }এখানে এমন একটি সংস্করণ যা রিটার্ন মান (83 বাইট) ব্যবহার করে:

f s{s~="([^aeiou])y$","$1ie","([sxz]|[cs]h|[^aeiuo]o)$","$1e","fe?$","ve";[s.."s"]}

এবং নীচে একটি ফাংশন যা ইনপুট স্ট্রিম থেকে অসীম অনেকগুলি মান পড়ে এবং বহুতল রূপগুলিকে আউটপুট স্ট্রিমে চাপ দেয় ( 87 83 বাইট):

{replace"([^aeiou])y$","$1ie","([sxz]|[cs]h|[^aeiuo]o)$","$1e","fe?$","ve","$","s"}

এটি একটি বেনামে ফাংশন, কারণ এটি একটি নামযুক্ত ফাংশন তৈরির চেয়ে কম।


প্রথম ফাংশনের ফলাফলটি (কী দিয়ে শুরু করা হচ্ছে f&s) আপনি কীভাবে প্রদর্শন করবেন ? কেবল f("word")কোনও কিছুই প্রদর্শিত হচ্ছে বলে মনে হচ্ছে না
ক্রিটিক্সী লিথোস

@ ক্রিটিক্সিলিথোস প্যারামিটারটি একটি রেফারেন্স, সুতরাং যুক্তিটি অবশ্যই একটি পরিবর্তনশীল হতে হবে।
ফার্গুসক

5

পিএইচপি, 103 100 বাইট

<?=preg_replace(['/([^aeiou]o|sh?|x|z|ch)$/','/(?<![aeiou])y$/','/fe?$/'],['\1e',ie,ve],$argv[1]).s;

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

preg_replaceফাংশন নিদর্শন এবং প্রতিস্থাপন একটি অ্যারের মধ্যে লাগে।

  • টাইটাসকে ধন্যবাদ 2 বাইট সংরক্ষণ করা হয়েছে।
  • দেবী মরগানকে ধন্যবাদ 1 বাইট সংরক্ষিত।

2
আমি মনে করি আপনি -Rএবং এর সাথে একটি বাইট সংরক্ষণ করতে পারেন $argn। এবং yদুটি সংরক্ষণের সাথে একটি দৃ as ়তা ব্যবহার করে : প্রতিস্থাপন হিসাবে (?<![aeiou])y$অনুমতি দেয় ie: না \1, কোনও উদ্ধৃতি নেই।
তিতাস

1
আরেকটি বাইট([^aeiou]o|sh?|x|z|ch)$
দেবি মরগান

@ টিটাস আসলে দেখে মনে হচ্ছে ব্যবহারের জন্য 1 টি বাইট জরিমানা রয়েছে -R(তবে না -r) যাতে দুর্ভাগ্যক্রমে বাইট গণনাটি পরিবর্তন হয় না। তবে নজরদারি পরামর্শটি দুর্দান্ত কাজ করে। ধন্যবাদ।
কোডস জনসন

4

পাইথন 3, 271 239 199 বাইট

Ov২ বাইট কমিয়ে দেওয়ার জন্য @ ওভসকে ধন্যবাদ!

lambda s,v="aeiou":(s[-2:]=="fe"and s[:-2]+"ve"or s[:-1]+((s[-1]=="y"and s[-2]not in v)*"ie"or s[-1]=="f"and"ve"or s[-1]+((s[-1]in"sxz"or s[-2:]in["ch","sh"])+(s[-1]=="o"and s[-2]not in v))*"e"))+"s"

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


1
আপনি কিছু অপ্রয়োজনীয় হোয়াইটস্পেসগুলি সরিয়ে প্রথম এবং শেষটি একত্রিত করতে পারেন elif। একক অক্ষরের তালিকাগুলি স্ট্রিং দ্বারা প্রতিস্থাপন করা যেতে পারে। পাইথনে স্যুইচ করা অতিরিক্ত 3 বাইট সংরক্ষণ করে। Tio
ovs

@ ওভস সম্পন্ন, ধন্যবাদ! আমি elifতবে এসগুলিকে একত্রিত করিনি , কারণ এর অর্থ potatoহয়ে যায় potaties
নম্বরমানিয়াক

1
আমি ভুল লাইনে চেয়েছিলাম;)। আপনি যদি শেষ এলিফের সাথে মিলিত করতে পারেন। আরও কিছু বাইট সংরক্ষণের জন্য শেষ লাইনটি প্রতিস্থাপন করুন print(s+"s")এবং অন্য শব্দটি পাশাপাশি প্রতি শব্দকে সরিয়ে ফেলুন যা আপনি শব্দের সাথে যুক্ত করছেন। টিও
ওভস

1
আপনি যদি আপনার এলিফ লজিকের সাথে প্রতিস্থাপন করেন and/*এবং or/+একটি নামহীন ল্যাম্বদা ফাংশন তৈরি করেন তবে আপনি এটি 200 বাইটের আওতায় পেতে পারেন (আমি কেসগুলি কিছুটা
স্বরূপে নিয়েছি

@ ওওস ওহ, এটি print(s+"s")চতুর সব বদলে গেছে; আপনি পুরোপুরি পুরোপুরি নতুন করে লিখুন। ধন্যবাদ! (আপনি এমনকি এটি করতে পারেন তা আমি জানতাম না True and "string")
নম্বরমানিয়াক


2

Pip, 63 61 bytes

Y`[^aeiou]`OaR[C`sh?|x|z|ch`Cy.'y`fe?`y.'o].'$[_B.'i'v_].'e's

So close to catching Retina! But it's probably not going to happen. :(

Try it online!

Explanation

Basic strategy: Replace performs several replacements one after the other when given lists of patterns and replacements. We want to make the following replacements:

  • (sh?|x|z|ch)$ -> add an e
  • [^aeiou]y -> change the y to i and add an e
  • fe? -> change to v and add an e
  • [^aeiou]o -> add an e

Then we want to tack on an s regardless.

Tricks:

  • দ্য C operator, given a regex, wraps it in a capturing group; C`xyz` is one byte shorter than `(xyz)`.
  • A list of regexes or replacements that all end with the same character can be created by concatenating the character to the list instead of including it in all the items. Concatenating a Scalar (string) to a Pattern (regex/replacement) coerces to a Pattern.
  • Concatenating পরিবর্তে s(এবং এর প্রাধান্য ক্রম নিয়ে ভোগ Rএবং .), আমরা কেবল পারবেন Oশব্দের প্রধান অংশ utput এবং তারপর প্রিন্টs separately.

ব্যবধানযুক্ত এবং মন্তব্য করা কোড:

                  a is 1st cmdline input (implicit)
Y`[^aeiou]`       Yank the consonant regex into the y variable
O a R             Output (without newline): a, with the following replacements:
 [                List of regexes to replace:
  C `sh?|x|z|ch`    (sh?|x|z|ch)
  Cy . 'y           ([^aeiou])y
  `fe?`             fe?
  y . 'o            [^aeiou]o
 ] . '$           End of list; concatenate $ to each item
 [                List of replacements:
  _                 Identity function (replace with whole match)
  B                 B is short for {b}, a function returning its second argument; as a
                    callback function for regex replacement, the second argument is
                    the value of capturing group 1 (the consonant before y)
    . 'i            To that, concatenate i
  'v                Scalar literal v
  _                 Identity function
 ] . 'e           End of list; concatenate e to each item
's                Return Scalar literal s, which is autoprinted

2

সি #, 73 163 বাইট:

Func<string,string>p=System.Data.Entity.Design.PluralizationServices.PluralizationService.CreateService(System.Globalization.CultureInfo.CurrentCulture).Pluralize

হ্যাঁ, এটি অন্তর্নির্মিত অন্য একটি ভাষা (যদিও আপনাকে এটিতে একটি রেফারেন্স যুক্ত করতে হবে System.Data.Entity.Design.dll )

ব্যবহার করা:

var words = new[] { "car", "bus", "potato", "knife", "penny", "exception", "wolf", "eye", "decoy", "radio" };
foreach (var word in words)
{
    var plural = p(word);
    Console.Out.WriteLine($"{word} => {plural}");
}

আউটপুট:

car => cars
bus => buses
potato => potatoes
knife => knives
penny => pennies
exception => exceptions
wolf => wolves
eye => eyes
decoy => decoys
radio => radios

সাইটে স্বাগতম। আমি এই কোডটি কীভাবে চালাব?
গম উইজার্ড

@ ওয়েট উইজার্ড আপডেট হয়েছে। বাইট গণনায় আমার আরও বিবরণ (বিবৃতি ইত্যাদি) অন্তর্ভুক্ত করা উচিত ছিল?
রোডিরিচ

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

আমি মনে করি নামগুলির স্থানগুলি এই একের বাইট গণনায় অন্তর্ভুক্ত করা দরকার, বিশেষত প্রদত্ত যে এটি 'সাধারণ' এর মধ্যে একটি নয়। তবে আমি মনে করি আপনারও কমপক্ষে একটি ল্যাম্বডায় এটি মোড়ানো প্রয়োজন, পদ্ধতিতে যুক্তিটি পাস করে। যেমন এটি কেবল একটি পদ্ধতি গ্রুপ
গোলাপিফ্লোয়েডএক্স 33

@ পিঙ্কফ্লোয়েডএক্স 33 এখন আরও ভাল?
রোডিরিচ


2

রেল রানার, 18 বাইট

$><<gets.pluralize

উদাহরণ:

$ echo knife | rails r filename.rb
knives

এখন এটি একটি রহস্যময় ভাষা।
ভেন

2

পাইথন, 296 বাইট

z = input()
if z[-1]in['s','x','z','ch','sh']:print(z+'es')
elif z[-1]=='y'and z[-2]not in['a','e','i','o','u']:print(z[:-1]+'ies')
elif z[-2:]=='fe':print(z[:-2]+'ves')
elif z[-1]=='f':print(z[:-1]+'ves')
elif z[-1]=='o'and z[-2]not in['a','e','i','o','u']:print(z[:-1]+'oes')
else:print(z+'s')

0

রেটিনার সরাসরি বন্দর:

রুবি , 111 বাইট

'sub(/([^aeiou])y/){"#{$1}ie"};sub(/(.*)([^aeiou]o|[fxzs]|[sc]h)$/){"#{$1}#{$2}e"};sub(/fe/,"ve");sub(/$/,"s")'

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

প্রথম সিএলআই আর্গুমেন্ট ruby -lpeহিসাবে একটি ফাইলটি চাওয়া এবং সরবরাহ করুন input.txt


সম্ভবত আরও 'গল্ফড' হতে পারে। বিটিডব্লিউ .: কেউ কি টিআইওতে ফাইল যুক্ত করতে পারেন?
স্টেফানমগ

0

সি, 321 বাইট

#define E else if(
#define C unsigned char
C*p(C*b){static C r[999],i,w,n,m;for(n=w=i=0;r[i]=b[i];n=w,w=b[i++]);m=!strchr("aeiou",n);if(strchr("sxz",w)||(w=='h'&&strchr("cs",n))||(w=='o'&&m))r[i++]='e';E'y'==w&&m)r[i-1]='i',r[i++]='e';E'f'==w)r[i-1]='v',r[i++]='e';E'f'==n&&w=='e')r[i-2]='v';r[i++]='s';r[i]=0;return r;}

পরীক্ষা:

C*mx[]={"car","bus","potato","knife","penny","exception","wolf","eye","decoy","radio",0};

main()
{unsigned i;
 for(i=0;mx[i];++i)
    printf("[%s] [%s]\n", mx[i], p(mx[i]));
 return 0;
}

ফলাফল:

[car] [cars]
[bus] [buses]
[potato] [potatoes]
[knife] [knives]
[penny] [pennies]
[exception] [exceptions]
[wolf] [wolves]
[eye] [eyes]
[decoy] [decoys]
[radio] [radios]
[radio] [radios]

It should be wolves not wolfves.
mbomb007

@ স্টাইলিংক্যাট "স্ট্যাটিক সি r [256], / * জেড =" আইইউউ ", আই = 0, ডব্লু, এন;" সম্পর্কে কী হবে? " "স্ট্যাটিক সি আর [256] এর জায়গায়; সি / * জেড =" আইইউউ ", আই = 0, ডব্লিউ, এন;"?
রোজলুপ


-1

জাভা 7, 408 বাইট

Golfed:

boolean b="bcdfghjklmnpqrstvwxyzs".contains(String.valueOf(s.charAt(s.length()-2))); String x=s.substring(0,s.length()-1);if(s.endsWith("s")||s.endsWith("x")||s.endsWith("z")||s.endsWith("ch")||s.endsWith("sh"))return s+"es";if(s.endsWith("y")&&b)return x+"ies";if(s.endsWith("f")) return x+"ves";if(s.endsWith("fe"))return s.substring(0,s.length()-2)+"ves";if(s.endsWith("o")&&b)return s+"es";return s+="s";

মূলত স্ট্রিংয়ের শেষ কী তা পরীক্ষা করে এবং কী ক্ষেত্রে তা নির্ভর করে অক্ষর যুক্ত / প্রতিস্থাপন করা হয়। শুরুতে বুলিয়ান এবং স্ট্রিং কেবল পরীক্ষার ক্ষেত্রে পুনরাবৃত্তি সরিয়ে এবং কোডটি আরও ছোট করে তোলার জন্য।

পঠনযোগ্য সংস্করণ:

public static String pluralize(String s){

// Consonant at the 2nd last position?
boolean b = "bcdfghjklmnpqrstvwxyzs".contains(String.valueOf(s.charAt(s.length()-2))); 

// Substring for cases where last letter needs to be replaced
String x = s.substring(0,s.length()-1);

if(s.endsWith("s") || s.endsWith("x") || s.endsWith("z") || s.endsWith("ch") || s.endsWith("sh"))
    return s + "es";
if(s.endsWith("y") && b)
    return x + "ies";
if(s.endsWith("f")) 
    return x + "ves";
if(s.endsWith("fe"))
    return s.substring(0,s.length()-2) + "ves";
if(s.endsWith("o") && b)
    return s + "es";

return s += "s";
}

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