লা লা ল্যান্ড… অপেক্ষা নেই, মু মু মুনলাইট


122

এই চ্যালেঞ্জটি অস্কার 2017, লা লা ল্যান্ড মুনলাইটের সেরা ছবির বিজয়ীর শ্রদ্ধাঞ্জলি !


একটি ফাংশন / প্রোগ্রাম লিখুন যা কেবল অক্ষরযুক্ত স্ট্রিং নেয় [A-Za-z], চারটি প্রতীক যা প্রতিটি বাক্য .,'?এবং স্পেসে প্রচলিত থাকে এবং লা লা ল্যান্ডের স্টাইলে স্ট্রিংটিকে আউটপুট দেয়।

আরও সুনির্দিষ্ট হওয়ার জন্য, প্রথম স্বরবর্ণের গোষ্ঠী পর্যন্ত অন্তর্ভুক্ত এবং এইগুলিতে অক্ষরগুলি নিয়ে যান এবং প্রতিবার একটি স্পেস যুক্ত করে দু'বার মুদ্রণ / আউটপুট দিন, তারপরে পুরো স্ট্রিংটি মুদ্রণ / আউটপুট করুন। y এই চ্যালেঞ্জের একটি স্বরবর্ণ । যতিচিহ্ন এবং মূলধন রাখা উচিত।

আপনি ধরে নিতে পারেন যে সমস্ত স্ট্রিংয়ে কমপক্ষে একটি স্বর থাকে এবং সমস্ত স্ট্রিং একটি অক্ষর দিয়ে শুরু হয়।

পরীক্ষার কেস:

Land
La La Land

Moonlight
Moo Moo Moonlight

quEueIng
quEueI quEueI quEueIng

This isn't a single word.
Thi Thi This isn't a single word.

It's fun to play golf
I I It's fun to play golf

Ooo
Ooo Ooo Ooo

I'm okay
I I I'm okay

Hmm, no. There will be at least one vowel, but it can be anywhere.
Hmm, no Hmm, no Hmm, no. There will be at least one vowel, but it can be anywhere.

Why is y a vowel?
Why Why Why is y a vowel?

এটি তাই প্রতিটি ভাষার সংক্ষিপ্ততম কোড জিততে পারে। মূলধারার ভাষাগুলিতেও ব্যাখ্যাগুলি উত্সাহিত করা হয়


1
কেস insensitivity জন্য পরীক্ষার ক্ষেত্রে: MOONLIGHT। এবং কেবল মজাদার জন্য:Why did the chicken cross the road?
টাইটাস

35
চ্যালেঞ্জ পৃষ্ঠপোষকতা করেছেন: ন্যাশনাল
স্টুটরিং

6
বা অধ্যাপক কুইরেল
ব্রায়ান জে

1
6th ষ্ঠ পরীক্ষার কেস আপনার কাছে লুই প্রাইমা এবং জঙ্গল বুক কিনেছেন। এই (খারাপ) শ্লেষ যুক্ত করতে যোগ দিয়েছেন।
টবি

উত্তর:



30

05 এ বি 1 ই , 23 19 18 বাইট

Okx ধন্যবাদ 1 বাইট সংরক্ষণ করা

Dlð«žOsSåJTk>£D¹ðý

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

ব্যাখ্যা

 Dl                  # create a lowercase copy of implicit input
   ð«                # append a space
     žO              # push the vowels
       s             # swap lowercase input to the top of the stack
        S            # split into a list of chars
         å           # check each char for membership in the vowel-string
                     # (creates a list with 1 at the index of vowels and 0 for non-vowels)
          J          # join to string
           Tk        # find the index of 10
             >       # increment
              £      # take that many items from input
               D     # duplicate this string
                ¹    # push input
                 ðý  # join the strings by space

25

জেলি , 24 22 20 19 14 বাইট

এমিগানার উজ্জ্বল উত্তর থেকে একটি কৌশল ব্যবহার করে -5 বাইট (isVowel তালিকার 10 এর জন্য দেখুন)

;⁶e€Øyw⁵ḣ@;⁶Ȯ;

এটি অনলাইন চেষ্টা করুন! (এই সম্পূর্ণ প্রোগ্রামের জন্য কীভাবে কোনও পরীক্ষার স্যুট তৈরি করা যায় তা পুরোপুরি নিশ্চিত নয়)


15 বাইট বিকল্প:

;⁶e€Øyw⁵ḣ@;⁶ẋ2;

এখানে সম্পূর্ণ পরীক্ষার স্যুট।

কিভাবে?

;⁶e€Øyw⁵ḣ@;⁶Ȯ; - Main link: string s
 ⁶             - space character
;              - concatenate to s (for all vowel edge case)
    Øy         - vowels + y yield
  e€           - exists in? for €ach (gives a list of isVowel identifiers)
       ⁵       - 10
      w        - index of first sublist (with implicit decimalisation of 10 to [1,0])
        ḣ@     - head with reversed @rguments (start of word up to & including vowel group)
           ⁶   - space character
          ;    - concatenate (start of word up to & including vowel group plus a space)
            Ȯ  - print and yield (hence a full program...
               -     ...the alternative ẋ2 repeats instead in order to return the result)
             ; - join with the input, s
               - implicit print (of the second repetition and input string)

19

পাইথন, 61 বাইট

import re;lambda x:re.sub('(.*?[aeiouy]+)',r'\1 \1 \1',x,1,2)

এখানে প্রথম নন-রেজেক্স-ভিত্তিক ভাষা আসে (রেজেেক্স ব্যবহার করে)।

নীলকে ধন্যবাদ 1 বাইট সংরক্ষণ করা হয়েছে ।


18

জাভাস্ক্রিপ্ট (ES6), 40 46

5 + 1 বাইট সম্পাদনা করুন THX @Arnauld সংরক্ষণ করা

একই কৌশল ব্যবহার করে অন্যান্যদের তুলনায় অতিরিক্ত দীর্ঘ (যথারীতি)

x=>x.replace(/.*?[aeiouy]+/i,'$& $& $&')

let f=
x=>x.replace(/.*?[aeiouy]+/i,'$& $& $&')

test=`Land
La La Land

Moonlight
Moo Moo Moonlight

queueing
queuei queuei queueing

This isn't a single word.
Thi Thi This isn't a single word.

It's fun to play golf
I I It's fun to play golf

Ooo
Ooo Ooo Ooo

I'm okay
I I I'm okay

Hmm, no. There will be at least one vowel, but it can be anywhere.
Hmm, no Hmm, no Hmm, no. There will be at least one vowel, but it can be anywhere.`
test.split(`\n\n`).forEach(z=>{
  var [i,k]=z.split(`\n`),x=f(i);
  console.log(k==x ? 'OK':'KO',i+'\n'+x);
})


@ আরনাউল্ড না, তবে আমি ব্যবহার করতে পারি '$& $& $&'- আমি সবসময় বিশেষ ডলারের অক্ষরগুলি ভুলে যাই। ধন্যবাদ. দুর্ভাগ্যক্রমে এখন এটি মার্টিনের রেটিনা উত্তরের একটি বন্দর।
edc65

দ্য ^অক্ষিপট প্রয়োজন যা হয় - আমার মনে হয় - ডিফল্ট দ্বারা সব মিল দেখায়। তবে আমাদের এখানে কি সত্যিই প্রয়োজন?
আর্নৌল্ড

@ আরনাউল্ড আপনি আবার ঠিক আছেন
edc65

-2: x=>(y=/.*?[aeiouy]+/i.exec(x)+' ')+y+x
nderscore

@ ইথ প্রডাকশনগুলি বাস্তবে। লক্ষ্য করার জন্য ধন্যবাদ।
edc65


12

ব্যাচ, 180 বাইট

@echo off
set/ps=
set v=aeiouy
set g=c
set t=
:l
call set w=%%v:%s:~,1%=%%
if %v%==%w% goto %g%
set g=o
:c
set t=%t%%s:~,1%
set s=%s:~1%
goto l
:o
echo %t% %t% %t%%s%

একটি রাষ্ট্রীয় যন্ত্র প্রয়োগ করে। gআমরা কখনও স্বর দেখেছি কিনা তা খতিয়ে রাখে, সুতরাং যদি বর্তমান বর্ণটি স্বর না হয় তবে আমরা জানি যে পরবর্তী অক্ষরটি আউটপুট দিতে হবে বা চালিয়ে যেতে হবে।


12

পাওয়ারশেল , 46 47 41 39 38 বাইট

$args-replace"^.*?[aeiouy]+",(,'$&'*3)

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

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

রেন্যান্টকে ধন্যবাদ 6 বাইট সংরক্ষণ করা হয়েছে

সংরক্ষিত 2 জোয়ি 3 বাইট ধন্যবাদ


8

রুবি, 31 32 30 বাইট

->s{(s[/.*?[aeiouy]+/i]+' ')*2+s}

দুটি বাইট জিবি এবং সায়োসকে ধন্যবাদ বাঁচিয়েছে।


6

পিএইচপি, 55 54 বাইট

দ্রষ্টব্য: এনকোড সংস্করণে আইবিএম -850 এনকোডিং ব্যবহার করা হয়েছে।

echo preg_filter("/^(.*?[aeiouy]+)/i","$1 $1 $0",$argn);
echo preg_filter(~ðíÎÐı└ñ×ÜûÉèåóÈÍðû,~█╬▀█╬▀█¤,$argn);     # Encoded

এভাবে চালান:

echo "This isn't a single word." | php -nR 'echo preg_filter(~ðíÎÐı└ñ×ÜûÉèåóÈÍðû,~█╬▀█╬▀█¤,$argn);'

ব্যাখ্যা

স্ট্রিংয়ের শুরুতে যে কোনও অক্ষরকে অ-উত্সাহী ম্যাচিংয়ের সাথে কেবল কোনও রেজেক্স প্রতিস্থাপন করে, তার পরে কোনও পরিমাণ স্বর (ব্যবহার করুন) i সংবেদনশীলতার ক্ষেত্রে বিকল্প ব্যবহার করুন)। এরপরে ক্যাপচার গ্রুপটি পুরো দু'বার মুদ্রিত হয় এবং তারপরে পুরো স্ট্রিংটি থাকে।

বদলান

  • উপলব্ধ -Rকরার জন্য একটি বাইট সংরক্ষণ করেছেন $argn(থেক্স টাইটাস)

6

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

x=>(y=/.*?[aeiouy]+/i.exec(x)+' ')+y+x

f=
x=>(y=/.*?[aeiouy]+/i.exec(x)+' ')+y+x
<!-- snippet demo: -->
<input list=l oninput=console.log(f(this.value))>
<datalist id=l><option value=Land>
<option value=Moonlight>
<option value=queueing>
<option value="This isn't a single word.">
<option value="It's fun to play golf">
<option value=Ooo>
<option value="I'm okay.">
<option value="Hmm, no. There will be at least one vowel, but it can be anywhere.">
<option value="Why is y a vowel?">




5

সি, 202 196 195 193 190 180

i,j,k,m,n;f(char*a){if((a[i/12]-"AEIOUY"[i++%6])%32==0)k=n=24-(i%12);else if(k&&!n--){m=j=(i-13)/12;for(i=0;i<j*2;)printf("%c%c",a[i%j],(i==j-1)*32),i++;printf(" %s", a);}m?:f(a);}

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


গল্ফ থেকে জিনিস বাম:

one দুটি মুদ্রণ একটিতে সঙ্কুচিত।

Space আমার স্পেস চরটি মুদ্রণ করে এটিকে পরিবর্তন করা যেতে পারে %*c যুক্তিকে আমি নিশ্চিত।

• আমি শর্তসাপেক্ষ ব্যবহার করছি যা কোনওভাবে সরানো যেতে পারে

j=(i-13)/12Likely সম্ভবত ছোট করা যেতে পারে

• [এওয়াই] শর্তসাপেক্ষ চেকগুলি ==0যা সাধারণত অপ্রয়োজনীয় হয়, যদিও আমি বর্তমানে ==0এটির সাথে আটকে আছি (অন্যথায় যদি স্যুইচ করে পুরোপুরি খনন করার চেষ্টা করি তবে এর জন্য আরও rac বন্ধনী যুক্ত করা এবং বাইট আকার বাড়ানো প্রয়োজন)


আমি এগুলি গল্ফ করার জন্য যে কৌশলগুলি ব্যবহার করেছি:

X এক্স-অক্ষের জন্য মডুলো এবং y- অক্ষের জন্য পূর্ণসংখ্যা-বিভাগ (স্বর স্ট্রিং বনাম ইনপুট স্ট্রিং) দ্বারা লুপ স্ট্রিং অনুসন্ধানের জন্য একটি ডাবল একত্রিত। (এক্স-অক্ষটি একবার y- অক্ষের উপর পুনরাবৃত্ত হওয়ার আগে দুবার লুপ করা হয়; প্রথমবার [AZ] দিয়ে এবং দ্বিতীয়বার [এজে] অক্ষরের মান 32 ডিফারেনশন ব্যবহার করে।

Character কেবলমাত্র অক্ষর সেট এবং মডিউল 32 এর মধ্যবর্তী দূরত্ব নিয়ে "[AY] এবং [ay]" ব্যবহারের বাইপাস করা হয়েছে That এভাবে যদি দূরত্ব 0 (এএ) হয় বা দূরত্ব 32 (এএ) হয়

Inte পূর্ণসংখ্যার ভেরিয়েবলগুলি পুনরায় ব্যবহার করা যা বুলিয়ান ভেরিয়েবল হিসাবে আর ব্যবহার হয় না।

Through একই স্ট্রিং সহ ক্রিয়াকলাপটি কল করে এটির মাধ্যমে প্রক্রিয়া করতে এবং দ্বিতীয় সেকেন্ডের লুপ এড়াতে।

Another অন্য ভেরিয়েবল সেট করার যুক্তিতে BOOL মান সেট করুন। (যেমন বুল = i = 5;) উভয়কে একটি পাথর দিয়ে আউট করতে।

• টার্নারি খালি-সত্য অপব্যবহারের শোষণ করে। (জিসিসি)


পঠনযোগ্য ফর্ম্যাট:

i,j,k,m,n;
f(char*a){
    if((a[i/12]-"AEIOUY"[i++%6])%32==0)
        k=n=24-(i%12);
    else
        if(k&&!n--){
            m=j=(i-13)/12;
            i=0;
            for(;i<j*2;)
               printf("%c%c",a[i%j],(i==j-1)?32:0),i++;
            printf(" %s", a);
        }
    m?:f(a);
}

কিউ গানকে 10 টি বাইট ছুঁড়ে ফেলেছে (মন্তব্যে)


স্বরে নোট: j=(i-13)/12সম্ভবত সংক্ষিপ্ত করা যেতে পারে।
অ্যালবার্ট রেনশওয়া

আমি কি কিছু মিস করছি, বা আপনি কি দিয়ে শুরু করতে পারেন i=j=k=m=n=0;?
রিচার্ড আইরনগুলি

@ রিচার্ডআইরনগুলিকে প্রথমে ভেরিয়েবলগুলি ঘোষণা করতে হবে।
অ্যালবার্ট রেনশওয়া

আপনি i,j,k,m,n;আরম্ভের জন্য ব্যবহার করতে পারেন ।
কিউ গান

@ কেইউগান অপরিজ্ঞাত আচরণ, সর্বদা 0 থাকার নিশ্চয়তা নেই (যতদূর আমি জানি?)
অ্যালবার্ট রেনশো

4

এমএটিএল, 33 বাইট

'(^.*?[yY%s]+)'13Y2YD'$1 $1 $1'YX

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

ব্যাখ্যা

                % Implicitly grab input as a string
'(^.*?[yY%s]+)' % Push this string literal (regex pattern)
13Y2            % Push the string literal 'AEIUOaeiuo'
YD              % Replace the '%s' in the string with 'AEIUOaeiuo'
'$1 $1 $1'     % Push the string literal to use for replacement which repeats
                % the first match 3 times
YX              % Perform regular expression matching and replacement
                % Implicitly display the result

'(^.*?[yY%s]+)'13Y2YD'$1 '8:)YX2 বাইট সংরক্ষণ করুন
লুইস মেন্ডো

'(^.*?[%s]+)'19Y2YD'$1 '8:)YXঅন্য 2
বি মেহতা

19Y2দুর্ভাগ্যক্রমে এই উত্তরটি জমা দেওয়া হলে @ বি.মেহতার অস্তিত্ব ছিল না
স্যুভার

হ্যাঁ, সামান্য প্রত্যাশিত উত্তরটি ... আমি আমার মন্তব্য রাখব যাতে অন্যরাও অন্তর্নিহিত আক্ষরিক 'আইইউই' সম্পর্কে জানতে পারে।
বি মেহতা

@ বি মেহতা কোনও উদ্বেগ নেই। এমএটিএল অনলাইন (matl.suever.net) এর সাহায্যে আপনি উপরের ডানদিকে ড্রপ-ডাউন ব্যবহার করে একটি নির্দিষ্ট সংস্করণ নির্বাচন করতে পারেন
স্যুভার

4

ভি , 21 , 20 বাইট

é /ã[aeiouy]«“.
3ä|<

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

ব্যাখ্যা:

é               " Insert a space
  /             " Jump forward too...
   ã[aeiouy]«. "   The first non-vowel after a vowel
3ä              " Make three copies of
  |             " Everything from the cursor to the first character
   <            " Delete the space we inserted

Hexdump:

00000000: e920 2fe3 5b61 6569 6f75 795d ab93 2e0a  . /.[aeiouy]....
00000010: 33e4 7c3c                                3.|<

বিকল্প সংস্করণ (21 বাইট):

Í㨃[aeiouy]«©/± ± &

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

এটি হাস্যকর রেজেক্স সংক্ষেপণ ব্যবহার করে এবং এটি এখনও অন্যান্য গল্ফিং ভাষাগুলি দ্বারা বাটটিকে লাথি মারতে সক্ষম করে। রেফারেন্সের জন্য, এটি নিয়মিত "সঙ্কুচিত" সংস্করণের দৈর্ঘ্যের প্রায় দুই / তৃতীয়াংশ, যথা:

:%s/\v\c(.{-}[aeiou]).*/\1 \1 &

ব্যাখ্যা:

Í                               " Replace on every line:
 ã                              "   Case-insensitive
  ¨              ©              "   Capture-group 1
   <131>                        "   Any character, any number of times (non-greedy)
        [aeiouy]«               "   A vowel, repeated once or more
                  <129>         "   Followed by anything
                       /        " Replaced with:
                        ± ±     "   Capture group one twice, with spaces between
                            &   "   The whole matched pattern

এখানে একটি হেক্সডাম্প:

00000000: cde3 a883 5b61 6569 6f75 795d aba9 812f  ....[aeiouy].../
00000010: b120 b120 26                             . . &

2
+1 এটি আমি দেখেছি সবচেয়ে চিত্তাকর্ষক ভি রেজেক্স জমা হতে পেরেছি
গাভী


4

পাইথন 3 , 75 68 বাইট

lambda s:(s[:[x in"aAeEiIoOuUyY"for x in s][1:].index(0)+1]+" ")*2+s

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

ব্যাখ্যা:

এটি স্বর হয় কি না তার উপর ভিত্তি করে ইনপুট স্ট্রিংয়ের প্রতিটি চরিত্রের জন্য বুলিয়ান মান উত্পন্ন করে 0এবং প্রথম অ-স্বর (প্রথম অক্ষর বাদে) এর সর্বনিম্ন সূচকের সন্ধান করে Works এটি দুটি বার এই সূচকে স্ট্রিংগুলি ফাঁকা স্থান এবং মূল স্ট্রিং দ্বারা পৃথক করে ফেরত দেয়।


4

ক্লোজার, 192 188 181 বাইট

(fn[p](let[[f] p v #(#{\a \e \i \o \u \y}(Character/toLowerCase %))[q r](split-with(if(v f)v #(not(v %)))p)[w _](split-with v r)as #(apply str %)](str(as(repeat 2(str(as q)(as w) \ )))p)))

ইনলাইন করে first-sp-pred(ওফস) দ্বারা 4 বাইটস ।

কিছু মিস স্পেস সরিয়ে -7 বাইট

এটি যে আরও বেশি চ্যালেঞ্জিং ছিল তার চেয়েও বেশি চ্যালেঞ্জিং ছিল যে আমি এটি ভিতরে যাব! আমি ম্যানুয়ালি স্ট্রিংটি পার্স করছি ... যেহেতু এখনও আমি রেজেক্স শিখতে পারিনি: /

ব্রেকডাউন করার জন্য প্রাক-গল্ফযুক্ত কোডটি দেখুন:

(defn repeat-prefix-cons [phrase]
  (let [[first-letter] phrase ; Get first letter

        ; Function that checks if a lowercased character is a part of the vowel set
        vowel? #(#{\a \e \i \o \u \y} (Character/toLowerCase %))

        ; cons(onant)? Negation of above
        cons? #(not (vowel? %))

        ; Decide how to split it depending on if the first character is a vowel
        first-sp-pred (if (vowel? first-letter) vowel? cons?)

        ; Split off the first chunk of cons/vowels
        [pre1 r] (split-with first-sp-pred phrase)

        ; Split off the rest of the vowels
        [pre2 r2] (split-with vowel? r)

        ; Shortcut function that turns a list into a string (Basically (join "" some-list-of-strings) )
        as #(apply str %)]

    (str ; ... then concat the prefix in front of the original phrase, and return
      (as ; ...then turn it back into a string since "repeat" returns a list... ^
        (repeat 2 ; ... then repeat it twice (shame Clojure doesn't have string multiplication)... ^
                (str (as pre1) (as pre2) \ ))) ; Concat the 2 prefix parts together with an space at the end... ^
      phrase)))

4

পাইথন 3 , 101 96 বাইট

s=input()
v=i=0
for c in s:
 w=c in'aAeEiIoOuUyY'
 if v*~-w:break
 v=w;i+=1
print(s[:i],s[:i],s)

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

একটি নন-রেজেক্স সমাধান


মন্তব্য করেছে:

s=input()
a='aAeEiIoOuUyY'
v=i=0
for c in s:          # for each character in the string
 w=c in a            # w = True if the character is a vowel, else false
                     # true is equivalent to 1  and false to zero
                     # v*(w-1) evaluates only to true (-1 in this case) if v=1 (last character was a vowel) and w=0 (current character is not a vowel)
 if v*(w-1):break    # if so, break the loop
 v=w;i+=1            # increase the counter and set v to w
print(s[:i],s[:i],s)

তোমার দরকার কেন? প্রতিস্থাপন w=c in aসঙ্গেw=c in'aAeEiIoOuUyY'
sagiksp

4

ওহম , 19 বাইট (সিপি 437), অ-প্রতিযোগী

নতুন ভাষা এবং এর মতো, এই কাজটি করার জন্য আমাকে কিছু নতুন বৈশিষ্ট্য যুক্ত করতে হয়েছিল, যা দুঃখের সাথে এটিকে অ-প্রতিযোগিতামূলক করে তোলে (কারণ লুফোলস)।

≡┬üC▓αy_ε;TF«u├DQüj

ব্যাখ্যা:

≡┬üC▓αy_ε;TF«u├DQüj     Main wire, arguments: s

≡                       Triplicate input
 C                    Push input, all lowercase with concatenated space character
    ▓    ;              Map string into an array with...
     αy_ε                 Boolean: is element a vowel?
          TF«u          Find first occurrence of [true, false]
              ├D        Slice input up to that index and duplicate it
                Q       Reverse stack
                 üj     Join on spaces, implicitly print

আপনি কোন বৈশিষ্ট্য প্রয়োগ করেছেন তা জানতে আগ্রহী ...?
স্টিভি গ্রিফিন

@ স্টিভিগ্রিফিন স্ট্যাকটি বিপরীতমুখী ( Q), সুবারে অনুসন্ধান ( u), স্ট্রিং / অ্যারে স্লাইসিং ( ), এবং স্বরযুক্ত ধ্রুবক ( αvএবং αy)
নিক ক্লিফোর্ড

4

পিএইচপি, 69 65 53 বাইট

<?=preg_filter("#.*?[aeiouy]+#i","$0 $0 $0",$argn,1);

পিএইচপি 5.3 বা তার পরে প্রয়োজন। পাইপ হিসাবে চালনা করুন-F বা কিছু সংস্করণ অনলাইনে চেষ্টা করুন

@ অ্যারোস থেকে চুরি হওয়া রেগেক্স সহ 4 বাইট (এবং কোডটি স্থির করে) সংরক্ষণ করা হয়েছে;
এর preg_filterপরিবর্তে আরও 10 preg_matchএবং -F
একটি আরও উন্নত রেজেক্স সহ আরও দুটি।

নন-রেজেক্স সংস্করণটির জন্য 75 81 বাইট :

for(;$c=$argn[$i++];)($k+=$k^!trim($c,aeiouyAEIOUY))>1?:$w.=$c;echo"$w $w $argn";

পিএইচপি 5 বা তার পরে প্রয়োজন; প্রতিস্থাপন ?:সঙ্গে ?1:পুরোনো পিএইচপি জন্য। সাথে চালাও-nR

ভাঙ্গন

for(;$c=$argn[$i++];)       // loop $c through input characters
    ($k+=$k^!                   // 2. !$k and vowel or $k and not vowel: increment $k
        trim($c,aeiouyAEIOUY)   // 1. strip vowels -> vowel=false, non-vowel=true
    )>1                         // 3. if $k>1
    ?                           // do nothing
    :$w.=$c;                    // else append $c to $w
echo"$w $w $argn";          // output

কাজে হাজির হয় না। আউট জন্য করা This isn't a single word:T T This isn't a single word.
aross

@ অ্যারোস মনে হচ্ছে এটি কেবল ছোট হাতের মানগুলি পরীক্ষা করছে? আমার ভুল হতে পারে আমি পিএইচপি খুব ভাল জানি না
অ্যালবার্ট রেনশওয়া

1
@ অ্যালবার্ট্রেনশো রেজেক্স সংস্করণটি এমন iসংশোধক ব্যবহার করে যা রেজেক্স কেসকে সংবেদনশীল না করে। অন্য একটি সংস্করণ কেবল লোয়ারকেস চেক করে। সংশোধন করা হয়েছে।
তিতাস

4

আর, 49 বাইটস

sub("(.*?[aeiouy]+)","\\1 \\1 \\1",scan(,""),T,T)

রিজেক্স ভিত্তিক প্রতিস্থাপন করুন, স্বর না হওয়া পর্যন্ত সমস্ত কিছু মেলাবেন, এটিকে 3 বার ক্যাপচার করুন এবং প্রতিস্থাপন করুন।

scandoubleটাইপ characterইনপুটটির জন্য অপেক্ষা করুন, টাইপটি ব্যবহার করতে বলার জন্য আমাদের এটি দুটি আর্গুমেন্ট দিতে হবে, প্রথমটি ডিফল্ট, স্টিডিনের জন্য এমটিপি স্ট্রিং এবং দ্বিতীয়টির জন্য আর মূল্যায়ন কেবলমাত্র cএটি ব্যবহারের অনুমতি দেয় কারণ এটি characterএই প্রসঙ্গে নয়, এটি অস্পষ্ট নয় ।

Tঘোরা TRUEএবং 4 র্থ ও উপ 5 ম প্যারামিটার ক্ষেত্রে উপেক্ষা করুন এবং PCRE ব্যবহার করার জন্য এটি বলতে কিছু গৃহস্থালির কাজ সংরক্ষণ করুন (greedyness আর Regex সিনট্যাক্স সঙ্গে একই নয়)

চলমান কোডের টিও লিঙ্কের সাথে সামার 18 এর সৌজন্যে 4 বাইট সংরক্ষণ করা হয়েছে


3

জাভা 8, 147 140 বাইট

Golfed:

import java.util.regex.*;s->{Matcher m=Pattern.compile("([^aeiouy]*[aeiouy]+)",2).matcher(s);m.find();return m.group()+" "+m.group()+" "+s;}

Ungolfed:

import java.util.regex.*;

public class LaLaLandNoWaitMooMooMoonlight {

  public static void main(String[] args) {
    for (String[] strings : new String[][] { { "Land", "La La Land" }, { "Moonlight", "Moo Moo Moonlight" },
        { "queueing", "queuei queuei queueing" }, { "This isn't a single word.", "Thi Thi This isn't a single word." },
        { "It's fun to play golf", "I I It's fun to play golf" }, { "Ooo", "Ooo Ooo Ooo" },
        { "I'm okay", "I I I'm okay" }, { "Hmm, no. There will be at least one vowel, but it can be anywhere.",
            "Hmm, no Hmm, no Hmm, no. There will be at least one vowel, but it can be anywhere." } }) {
      final String input = strings[0];
      final String expected = strings[1];
      final String actual = f(s -> {
        java.util.regex.Matcher m = java.util.regex.Pattern.compile("([^aeiouy]*[aeiouy]+)", 2).matcher(s);
        m.find();
        return m.group() + " " + m.group() + " " + s;
      } , input);
      System.out.println("Input:    " + input);
      System.out.println("Expected: " + expected);
      System.out.println("Actual:   " + actual);
      System.out.println();
    }

  }

  private static String f(java.util.function.Function<String, String> function, String input) {
    return function.apply(input);
  }
}

দ্রষ্টব্য: কোডটিতে আক্ষরিক 2মানটির মান java.util.regex.Pattern.CASE_INSENSITIVE


2
আমি মনে করি আপনি import java.util.regex.*;কিছু বাইট সংরক্ষণ করতে ব্যবহার করতে পারেন ।
রোমান গ্রাফ

@ রোমানগ্রাফ আপনি সঠিক আছেন আমার প্যাকেজগুলি বানান ছিল কারণ কোডটির পূর্ববর্তী সংস্করণে (কাজ হয়নি) আমদানি না করাই খাটো ছিল। কোড ঠিক করার পরে আমি পুনরায় মূল্যায়ন করিনি।

3

সি, 123 বাইট

#define v(x)while(x strchr("AEIOUY",*s&95))++s;
a;f(s,t)char*s,*t;{t=s;v(!)v()a=*s;*s=0;printf("%s %s ",t,t);*s=a;puts(t);}

যেমন কল করুন:

main(){char s[] = "queueing"; f(s);}

1
এটা সুন্দর! আপনি আমার সি সমাধানটি পার্কের বাইরে ছুঁড়ে ফেলেছেন ol
অ্যালবার্ট রেনশওয়া


2

রেটিনা, 24 বাইট

i1`.*?[aeiouy]+
$0 $0 $0

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


বেশ অনুরূপ এই
Emigna

হ্যাঁ আমি জানি. তবে আমি উত্তরটি স্বাধীনভাবে দিয়েছি। তবুও, সিদ্ধান্ত নেওয়া হয়েছে যে কাজটি চুরি না করা হলে সদৃশ জবাবগুলি অনুমোদিত।
mbomb007

2

পাইথন 3 , 130 102 বাইট

w=input();a='';v=0
for i in w:
	if i in 'aeiouyAEIOUY': v=1
	elif v:
		break
	a+=i
a+=' ';print(a*2+w)

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

কোনও ধরণের কোনও ফাংশন এবং কোনও বাহ্যিক লাইব্রেরি ব্যবহার করে না! (যদি না মুদ্রণ এবং ইনপুটটিকে ফাংশন হিসাবে গণনা করা হয়, যা তারা করে)।

শিরোনাম শুরুর সময়টিতে এটি স্বরবর্ণ অঞ্চলতে ব্যঞ্জনবর্ণ থেকে বেরিয়ে আসে কিনা তা দেখে কাজ করে। যদি এটি 'স্বর জোনে' থাকে এবং কোনও ব্যঞ্জনা সনাক্ত করে তবে এটি শিরোনামটি মুদ্রণ করে।

@ ফ্ল্যাটেল্যাক্সকে ধন্যবাদ 28 টি বাইট সংরক্ষণ করা হয়েছে


2

ম্যাটল্যাব / অক্টেভ, 58 বাইট

7 বাইট @ হাগনোলানকে ধন্যবাদ সংরক্ষণ করেছে

@(x)regexprep(x,'(^.*?[aeiouyAEIOUY]+)','$1 $1 $1')

নামে একটি বেনামি ফাংশন তৈরি করে ansযার কাছে স্ট্রিং দিয়ে ফোন করা যায়:ans('Land')

অনলাইন ডেমো

ম্যাটল্যাব সামঞ্জস্যের জন্য উপরের ফাংশনের $0জায়গায় ব্যবহার করা উচিত $1


এটি সম্পর্কে চিন্তাভাবনা করছে এবং তারপরে আপনি এটি ইতিমধ্যে সম্পন্ন করে দেখেছেন। কয়েকটি বাইট সংরক্ষণ করুন: @(x)regexprep(x,'^.*?[aeiouyAEIOUY]+','$0 $0 $0 ');-
হিউ নোলান

@ হাগনোলান দুর্দান্ত পয়েন্ট, ধন্যবাদ!
সোয়েভার

2

সি (জিসিসি) , 111 110 বাইট

*d="AEIOUYaeiouy";b;f(char*a){b=strcspn(a,d);write(printf(" "),a,write(1,a,b+strspn(a+b,d)));printf(" %s",a);}

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

এটি কেবল গ্রন্থাগারের ফাংশন ব্যবহার করে strspn()এবং strcspn()ক্রমটি ফাংশন প্যারামিটারগুলি মূল্যায়নে ক্রম ব্যবহার করে। কিছুটা কম গল্ফ

*d="AEIOUYaeiouy";b;
f(char*a){
  b=strcspn(a,d);
  write(printf(" "),a,write(1,a,b+strspn(a+b,d)));
  printf(" %s",a);
}

-১-এর জন্য @ গ্যাস্ট্রোপনারকে ধন্যবাদ।


কি দারুন!! চমৎকার কাজ!
অ্যালবার্ট রেনশওয়া


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