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


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≠/ জোড়-ভিত্তিক পৃথক
   করে তিনটি দ্বারা গুণিত  করার জন্য
  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': স্বর চিহ্নিত করুন
    • (... ): কোন অক্ষরটি ত্রিভুজ করা হবে তা দেখুন
      • ~∧∨\: প্রথম স্বর পেরিয়ে সমস্ত ব্যঞ্জনবর্ণ,
      • {⌽<\⌽⍵}: শেষ স্বর।
      • : বিট ভেক্টরকে দুটি দ্বারা গুণান,
      • 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.