এনএনওউনএনএনসিসিএসইইআরআরআর ভোকসিসিই


18

একটি ফাংশন লিখুন যা অক্ষর এবং স্পেসগুলির একটি স্ট্রিং নেয় (নন-অক্ষরগুলি হ্যান্ডেল করার দরকার নেই) এবং আনোনসার ভয়েস অনুবাদ অ্যালগরিদমটি নিম্নলিখিতভাবে সম্পাদন করে:

  • প্রথমত, বড় হাতের সবকিছু।
  • প্রতিটি শব্দের জন্য,
    • প্রতিটি বর্ণকে তিনগুণ করে প্রতিটি ব্যঞ্জনাত্মক গোষ্ঠী দীর্ঘায়িত করুন ; শব্দটি যদি ব্যঞ্জনাত্মক গুচ্ছ দিয়ে শুরু হয় তবে এ ক্লাস্টারটি দীর্ঘায়িত করবেন না। উদাহরণস্বরূপ, otherহয়ে ওঠা উচিত OTTTHHHEEERRRকিন্তু motherহওয়া উচিত MOTTTHHHEEERRR।
    • চূড়ান্ত স্বরটি তিনগুণ করে দীর্ঘ করুন।
  • প্রলম্বনের উভয় ক্ষেত্রে , আপনি যদি কোনও চিঠি ট্রিপল করে থাকেন, প্রথমে উভয় দিকে সদৃশ অক্ষর দিয়ে একত্রিত করুন। উদাহরণস্বরূপ, hillহওয়া উচিত HIIILLLএবং bookkeeperহওয়া উচিত BOOKKKEEPPPEEERRR।
  • এই চ্যালেঞ্জের উদ্দেশ্যে, yব্যঞ্জনা হিসাবে গণনা করা হয়।
  • স্পষ্টকরণ / সরলকরণ: আপনি ধরে নিতে পারেন যে শব্দগুলির প্রতিটি জোড়া একটি একক স্পেস দ্বারা পৃথক করা হয়েছে এবং ইনপুটটিতে কোনও ক্রমাগত স্থান নেই এবং ইনপুটটি খালি স্ট্রিং হবে না।
  • সবচেয়ে কম কোড জয়!

পরীক্ষা ভেক্টর:

> sunday sunday
SUNNNDDDAAAYYY SUNNNDDDAAAYYY
> mia hamm
MIAAA HAAAMMM
> chester alan arthur
CHESSSTTTEEERRR ALLLAAANNN ARRRTTTHHHUUURRR
> attention please
ATTTENNNTTTIOOONNN PLEASSSEEE
> supercalifragilisticexpialidocious
SUPPPERRRCCCALLLIFFFRRRAGGGILLLISSSTTTICCCEXXXPPPIALLLIDDDOCCCIOUUUSSS
> moo
MOOO
> Aachen
AACCCHHHEEENNN
> Oooh
OOOHHH
> grifffest
GRIFFFEEESSSTTT
> k
K
> aaaabbbbc
AAAABBBBCCC

এখানে একটি রেফারেন্স বাস্তবায়ন যা আমি আজ সকালে প্রশ্নটি বন্ধ করে দেওয়া বাদ দিয়ে একটি উত্তরে চলে যাই। : P: P

import itertools,re
def j(s):return re.match('^[AEIOU]+$',s)
def c(s):return ''.join(sum(([h,h,h]for h in[k for k,g in itertools.groupby(s)]),[]))
def v(s):
 while len(s)>=2 and s[-2]==s[-1]:s=s[:-1]
 return s+s[-1]+s[-1]
def a(n):
 r=''
 for w in n.split():
  if r:r+=' '
  ss=re.split('([AEIOU]+)', w.upper())
  for i,s in enumerate(ss):
   r += [v(s),s][any(j(t) for t in ss[i+1:])]if j(s)else[s,c(s)][i>0]
 return r
while 1:print a(raw_input('> '))

2
ভবিষ্যতের জন্য একটি অনুরোধ: দয়া করে এড়ানোর শব্দ ও শব্দসমষ্টি পছন্দ ব্যঞ্জনবর্ণ সমষ্টি , একসঙ্গে বেড়ে ওঠা , এবং প্রতান । আমার মতো একজন অ-নেটিভ ইংরেজী স্পিকার আপনার পোস্টটি বোঝার জন্য অভিধানের প্রয়োজন হতে পারে।
— ডেনিস

এটি স্বরগুলি হওয়া উচিত যা "দীর্ঘায়িত" :(
— শয়তানের অ্যাডভোকেট

ব্যঞ্জনা গুচ্ছ কি?
— মিল্কিওয়ে 90

উত্তর:


6

এপিএল (ডায়ালগ) , 175 বাইট

1↓' +'⎕R' '⊢'[AEIOU][^AEIOU]+ '⎕R{m/⍨1,3×2≠/m←⍵.Match}'([AEIOU])\1*([^AEIOU]*? )' ' [AEIOU]' ' [^ AEIOU]+' '([^AEIOU ])\1*'⎕R'\1\1\1\2' '&' '&' '\1\1\1'⊢'$| |^'⎕R'  '⊢1(819⌶)⍞

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

⍞ অক্ষর ইনপুট জন্য প্রম্পট

1(819⌶) বড় হাতের মধ্যে রূপান্তর (819 ≈ বিগ)

⊢ ফলাফলটি আরও পাস করুন (স্ট্রিং এবং 1 টি পৃথক করে)

'$| |^'⎕R' ' আর এপিলেস:
 শেষ, যে কোনও স্থান এবং প্রারম্ভিক
 দুটি স্থান

⊢ ফলাফলটি আরও পাস করুন (দুটি গ্রুপের স্ট্রিং পৃথক করে)

'([AEIOU])\1*([^AEIOU]*? )' ' [AEIOU]' ' [^ AEIOU]+' '([^AEIOU ])\1*'⎕R'\1\1\1\2' '&' '&' '\1\1\1' আর এপিলেস:
 যেকোন অভিন্ন স্বর এবং যে কোনও সংখ্যক স্ব-স্বর এবং একটি স্থান thr
 স্বর তিনবার এবং স্বরবিহীন ব্যঞ্জনবর্ণ -
 একটি স্থান এবং একটি স্বরবৃত্ত
 →
 এঁরা
 নিজেই
 অভিন্ন ব্যঞ্জনবর্ণের একটি রান
 those এর মধ্যে তিনটি স্বরবর্ণ

'[AEIOU][^AEIOU]+ '⎕R{… } আর এপিলেস:
 অ স্বরধ্বনির একটি রান এবং একটি স্থান argument যুক্তি হিসাবে
 নেমস্পেসের সাথে নিম্নলিখিত বেনামী ফাংশনের ফলাফল ⍵:
  ⍵.Match যে পাঠ্যটি পাওয়া গিয়েছিল
  m← তা m
  2≠/ জোড়-ভিত্তিক পৃথক
  3× করে তিনটি দ্বারা গুণিত  করার জন্য
  1, একটি
  m/⍨ব্যবহারকে পুনরায় তৈরি করতে ব্যবহার করেm

⊢ ফলাফলটি আরও পাস করুন (দুটি স্ট্রিং পৃথক করে)

' +'⎕R' ' আর এপিলেস:
 এক বা একাধিক স্পেস।
 একক স্পেস সহ

1↓ প্রাথমিক চিঠি (একটি স্থান) ফেলে দিন


এটা কি কাজ করে? 1↓' +'⎕R' '⊢'[AEIOU][^AEIOU]+ '⎕R{m/⍨1,3×2≠/m←⍵.Match}'([AEIOU])\1*([^AEIOU]*? )' ' [AEIOU]' ' [^ AEIOU]+' '([^AEIOU ])\1*'⎕R(s,'\2')'&' '&'(s←6⍴'\1')⊢'$| |^'⎕R' '⊢1(819⌶)⍞
— জাকারি


5

জেএস (ইএস 6), 138 134 129 বাইট

s=>s.toUpperCase()[r="replace"](/(\w)\1/g,"$1")[r](/[AEIOU](?=[^AEIOU]*( |$))/g,s=>s+s+s)[r](/\B./g,s=>/[AEIOU]/.test(s)?s:s+s+s)

WAAYYY TOOO MAAANNNYYY BYYYTTTEEESSS। AEIOU3 বার ধারণ করে , তবে আমি সেগুলিতে একটিতে গল্ফ করতে পারি না।

হাইপারনিট্রিনো -4 বাইট ধন্যবাদ

Ungolfed

function v(str){
    return str.toUpperCase().replace(/(\w)\1/g,"$1").replace(/[AEIOU](?=[^AEIOU]*( |$))/g,s=>s+s+s).replace(/\B./g,s=>[..."AEIOU"].includes(s)?s:s+s+s);
}

আমি লিখতে চাই, কোড পড়ি না।


1
"WAAYYY TOOO MAAANNNYYY BYYYTTTEEESSSS" ... এপিএল এর আগে প্রথম স্থানে রয়েছে।
— জাকারি

আমি জাতীয় জানি না, কিন্তু আপনি প্রতিস্থাপন করতে পারেন s=>/[AEIOU]/.test(s)সঙ্গে /[AEIOU]/.test?
— musicman523

@ musicman523 দুঃখের সাথে, না, কারণ এটি একটি ত্রিশী অপারেটরের বিবৃতিতে শর্তযুক্ত।
— এপ্রোচ

এফওয়াইআই, আপনার ব্যঞ্জনবর্ণ গুচ্ছগুলির পরিচালনা সামান্য ভুল বলে মনে হচ্ছে; সঠিক আউটপুটটি হবে WAAAYYY TOOO MAAANNNYYY BYTEEESSS(যেমন প্রাথমিক ক্লাস্টারটি দীর্ঘায়িত করবেন না BYT)।
— কুইকপ্লসোন

ঠিক আছে, প্রথম স্থান ছিল।
— জাকারি

5

এপিএল, 90 বাইট

{1↓∊{s←{⍵⊂⍨1,2≠/⍵}⋄x↑⍨¨(3⌈≢¨s⍵)⌊≢¨x←s⍵/⍨(1+2×{⌽<\⌽⍵}∨~∧∨\)⍵∊'AEIOU'}¨w⊂⍨w=⊃w←' ',1(819⌶)⍵}

ব্যাখ্যা:

  • 1(819⌶)⍵: বড় হাতের মধ্যে রূপান্তর
  • w⊂⍨w=⊃w←' ',: স্পেসে বিভক্ত
  • {... }¨: প্রতিটি শব্দের জন্য ...
    • s←{⍵⊂⍨1,2≠/⍵}: sএটি এমন একটি ফাংশন যা একটি স্ট্রিংকে মেলানো অক্ষরের গ্রুপগুলিতে বিভক্ত করে
    • ⍵∊'AEIOU': স্বর চিহ্নিত করুন
    • (... ): কোন অক্ষরটি ত্রিভুজ করা হবে তা দেখুন
      • ~∧∨\: প্রথম স্বর পেরিয়ে সমস্ত ব্যঞ্জনবর্ণ,
      • {⌽<\⌽⍵}: শেষ স্বর।
      • 2×: বিট ভেক্টরকে দুটি দ্বারা গুণান,
      • 1+: এবং একটি যোগ করুন। এখন সমস্ত নির্বাচিত অক্ষর রয়েছে 3এবং বাকিগুলি রয়েছে 1।
    • ⍵/⍨: ⍵প্রদত্ত পরিমাণ দ্বারা প্রতিটি অক্ষর প্রতিলিপি
    • x←s: এটি মিলে যাওয়া অক্ষরের স্ট্রিংগুলিতে বিভক্ত করুন এবং এটিকে সঞ্চয় করুন x।
    • (3⌈≢¨s⍵): ইনপুট শব্দে প্রতিটি গ্রুপের মিলের অক্ষর, সর্বোচ্চ 3 দিয়ে।
    • ⌊≢¨: এর সর্বনিম্ন এবং গ্রুপগুলির দৈর্ঘ্য x।
    • x↑⍨¨: প্রতিটি গ্রুপকে সেই দৈর্ঘ্য করুন
  • 1↓∊: ফলাফলটি সমতল করুন এবং প্রথম অক্ষরটি ড্রপ করুন (বিভাজনে সহায়তার জন্য শুরুতে যে স্থানটি যুক্ত করা হয়েছিল)

তুমি আদমকে ... বাহ!
— জাকারি

খুব ঝরঝরে! আপনি যদি এটিকে কিছুটা বদলে যান এবং প্রোগ্রাম হিসাবে লিখে থাকেন (অ্যাডামের পরামর্শ অনুসারে প্রম্পট ব্যবহার করে) আপনি আরও 15 বাইট শেভ করতে পারেন:1↓∊{c/⍨(≢¨g)⌈3×((⌽<\∘⌽)∨~∧∨\)'AEIOU'∊⍨c←⊃¨g←⍵⊂⍨1,2≠/⍵}¨w⊂⍨w=⊃w←' ',1(819⌶)⍞
— গিল

3

পাইথন, 417 বাইট

পাইথনে এখানে একটি রেফারেন্স বাস্তবায়ন। ভয়াবহভাবে গল্ফ হয় না।

import itertools,re
def j(s):return re.match('^[AEIOU]+$',s)
def c(s):return ''.join(sum(([h,h,h]for h in[k for k,g in itertools.groupby(s)]),[]))
def v(s):
 while len(s)>=2 and s[-2]==s[-1]:s=s[:-1]
 return s+s[-1]+s[-1]
def a(n):
 r=''
 for w in n.split():
  if r:r+=' '
  ss=re.split('([AEIOU]+)',w.upper())
  for i,s in enumerate(ss):
   r+=[v(s),s][any(j(t) for t in ss[i+1:])]if j(s)else[s,c(s)][i>0]
 return r

এর সাথে পরীক্ষা করুন:

while True:
 print a(raw_input('> '))

অপ্রয়োজনীয় জায়গাগুলি সরিয়ে এবং এতে পরিবর্তন করে ssআপনার Sকি কমপক্ষে আরও কিছুটা গল্ফ করা উচিত নয় ?
— জাকারি 19

2

পাইথন 3 , 238 বাইট

def f(s):
 s=s.upper();k=[s[0]];s=''.join(k+[s[i]for i in range(1,len(s))if s[i]!=s[i-1]])
 for i in range(1,len(s)):k+=[s[i]]*(3-2*(s[i]in'AEIOU'and i!=max(map(s.rfind,'AEIOU'))))
 return''.join(k)
print(' '.join(map(f,input().split())))

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


আপনি কি সেট করে বাইটস সংরক্ষণ করতে vপারেন 'AEIOU'?
— জাকারি

@ জ্যাচারý ধন্যবাদ, তবে দুর্ভাগ্যক্রমে এটি বাইট কাউন্টে পরিবর্তন করে না।
— হাইপার নিউট্রিনো

ওহ, প্রথমদিকে ফাঁকা জায়গা v।
— জাকারি

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