La La Land… 잠깐만, Moo Moo Moonlight


122

이 도전은 오스카 2017, La La Land Moonlight 에서 Best Picture의 우승자에게 경의를 표합니다 !


[A-Za-z]매일 문장 .,'?과 공백 에서 공통적으로 사용되는 네 개의 기호 인 characters 만 포함하는 문자열을 가져 와서 La La Land 스타일로 문자열을 출력 하는 함수 / 프로그램을 작성하십시오 .

보다 구체적으로, 첫 모음 그룹을 포함하여 글자를 가져 와서 공백을 두 번 추가하여 인쇄 / 출력 한 다음 전체 문자열을 인쇄 / 출력합니다. 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
대소 문자를 구분하지 않는 테스트 사례 : MOONLIGHT. 그리고 재미를 위해서만 :Why did the chicken cross the road?
Titus

35
후원 : National Stuttering Association
sergiol

6
또는 교수 Quirrell
Brian J

1
Louis Prima와 Jungle Book에서 6 번째 테스트 사례를 구입했습니다. 이 (나쁜) 말장난을 추가하기 위해 합류했습니다.
Toby

답변:



30

05AB1E , 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 바이트

Emigna의 훌륭한 답변 을 사용하여 -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)

다음은 정규식을 사용하지 않는 첫 번째 언어입니다 (정규식 사용).

Neil 덕분에 1 바이트를 절약했습니다 .


18

자바 스크립트 (ES6), 40 46

@ Arnauld에 저장된 5 + 1 바이트 편집

동일한 트릭을 사용하는 다른 방법에 비해 너무 오래

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);
})


@ Arnauld 아니오,하지만 사용할 수 있습니다 '$& $& $&'-나는 항상 특별한 달러 문자를 잊어 버립니다. 감사합니다. 불행히도 이제는 실제로 Martin의 망막 답변의 포트입니다.
edc65

^내가 생각 - - 기본적으로 모든 일치를 검색하는 망막 필요합니다. 그러나 우리는 여기에 정말로 필요합니까?
Arnauld

@Arnauld 당신이 다시 맞아요
edc65

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

사실 @ETHproductions. 알아 주셔서 감사합니다.
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우리가 모음을 보았는지 여부를 추적하므로 현재 문자가 모음이 아닌 경우 다음 문자를 출력할지 또는 계속 할지를 알 수 있습니다.



8

루비, 31 32 30 바이트

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

GB와 Cyoce 덕분에 2 바이트가 절약되었습니다.


6

PHP, 55 54 바이트

참고 : 인코딩 된 버전은 IBM-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사용 하여 바이트 저장 (Thx Titus)

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?">


6

펄, 25 + 1 ( -p깃발)

s/.*?[aeiouy]+/$& $& $&/i


5

C, 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);}

온라인으로 사용해보십시오!


골프를 떠난 것 :

• 두 개의 printf를 하나로 합치십시오.

• 공간 문자 인쇄는 %*c논리 로 바꿀 수 있습니다 .

• 어떻게 제거 할 수있는 조건을 사용하고 있습니다.

j=(i-13)/12단축 될 수 있습니다.

• [AY] 조건부 검사 ==0는 일반적으로 필요하지 않은지 여부 를 확인합니다. 현재 그 중 하나를 고수하고 있습니다 (만약 그렇지 않으면 전환을 시도했지만 ==0모두 더 많은 {브래킷}을 추가하고 바이트 크기를 증가시켜야 함).


내가이 골프를 쓰던 트릭 :

• x 축에는 모듈로를 사용하고 y 축에는 정수 나누기를 사용하여 이중 for 루프 문자열 검색을 결합했습니다 (입력 문자열 대 모음 문자열). (X 축은 y 축에서 한 번 반복하기 전에 두 번 반복됩니다. 첫 번째는 [AZ]로, 두 번째는 [AZ]로 문자 값 32의 차등을 사용합니다.

• 문자 집합과 모듈로 32 사이의 거리를 취하여 "[AY]와 [ay]"를 사용하지 않아도 됨. 거리가 0 (AA)이거나 거리가 32 (aA) 인 경우

• 더 이상 부울 변수로 사용되지 않는 정수 변수를 재사용합니다.

• 동일한 문자열로 함수를 재귀 적으로 호출하여 처리하고 두 번째 for-loop를 피하십시오.

• BOOL 값을 다른 변수를 설정하는 논리로 설정하십시오. (예 : bool = i = 5;) 두 개의 돌로 모두 녹아웃합니다.

• 비어있는 진정한 악용 악용. (GCC)


읽을 수있는 형식 :

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);
}

Keyu Gan 덕분에 10 바이트를 떨어 뜨 렸습니다 (댓글 포함)


자기주의 사항 : j=(i-13)/12단축 될 수 있습니다.
Albert Renshaw

뭔가 빠졌 i=j=k=m=n=0;습니까 , 아니면 시작할 수 있습니까?
Richard Irons

@RichardIrons 변수를 먼저 선언해야합니다.
Albert Renshaw

i,j,k,m,n;초기화에 사용할 수 있습니다 .
Keyu Gan

@KeyuGan 정의되지 않은 동작, 항상 0으로 보장되지는 않습니다. (알고있는 한)
Albert Renshaw

4

MATL, 33 바이트

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

MATL Online 에서 사용해보십시오

설명

                % 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 바이트 절약
Luis Mendo

'(^.*?[%s]+)'19Y2YD'$1 '8:)YX
B. Mehta를

19Y2이 답변이 불행히도 제출되었을 때 @ B.Mehta 는 존재하지 않았습니다
Suever

네, 약간의 대답을 기대했습니다 ... 다른 사람들도 내장 문자 'aeiouy'에 대해 배울 수 있도록 내 의견을 지키겠습니다.
B. Mehta

@ B.Mehta 걱정하지 마십시오. MATL Online (matl.suever.net)을 사용하면 오른쪽 상단의 드롭 다운을 사용하여 특정 버전을 선택할 수 있습니다
Suever

4

V , 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

16 진 덤프 :

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

대체 버전 (21 바이트) :

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

온라인으로 사용해보십시오!

이것은 어리석은 정규 표현식 압축을 사용하며 다른 골프 언어에 의해 엉덩이를 차게합니다. 참고로, 이것은 일반적인 "압축되지 않은"버전의 길이의 약 2/3입니다.

:%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

다음은 16 진수 덤프입니다.

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

2
+1 이것은 내가 본 가장 인상적인 V 정규식 제출로 가지고있다
소가 돌팔이


4

파이썬 3 , 75 68 바이트

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

온라인으로 사용해보십시오!

설명:

모음인지 여부에 따라 입력 문자열의 모든 문자에 대해 부울 값을 생성 0하고 첫 번째 모음이 아닌 첫 번째 모음이 아닌 가장 낮은 색인을 찾습니다 . 공백으로 구분 된이 문자열에 서브 스트링을 두 번 리턴하고 원래 문자열을 리턴합니다.


4

Clojure에서, 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) -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 바이트 (CP437), 비경쟁

새로운 언어와 함께, 나는 이것을 작동시키기 위해 몇 가지 새로운 기능을 추가해야했는데, 슬프게도 (비정 점이 있기 때문에) 비 경쟁적이었습니다.

≡┬ü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

어떤 기능을 구현했는지 궁금합니다.
Stewie Griffin

@StewieGriffin 스택 역전 (Q ), 하위 배열 검색 ( u), 문자열 / 배열 슬라이싱 ( ) 및 모음 상수 ( αvαy).
Nick Clifford

4

PHP, 69 65 53 바이트

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

PHP 5.3 이상이 필요합니다. 파이프로 실행 -F하거나 일부 버전을 온라인으로 사용해보십시오 .

@aross에서 도난당한 정규식으로 4 바이트를 저장하고 코드를 수정했습니다.
10 이상 preg_filter대신 preg_match하고 -F
및 개선 된 정규식 다른 두.

비정규 버전의 경우 75 81 바이트 :

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

PHP 5 이상이 필요합니다. 교체 ?:?1:오래된 PHP를 위해. 로 실행-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

@aross는 소문자 값만 확인하는 것 같습니다. 나는 틀릴지도 모른다 PHP를 잘 모른다
Albert Renshaw

1
@AlbertRenshaw 정규식 버전은 i정규식 대소 문자를 구분하지 않는 수정자를 사용합니다 . 다른 버전은 소문자 만 확인했습니다. 결정된.
Titus

4

R, 49 바이트

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

정규식 기반 대체는 모음이 될 때까지 모든 것을 일치시키고 캡처하여 3 번 대체합니다.

scandouble타입 입력을 기다렸다가 타입을 사용하도록 지시하려면 character두 개의 인수를 주어야합니다. 첫 번째는 기본, stdin에 대한 emtpy 문자열이고 두 번째는 R 평가가 c모호하지 않은 경우에만 사용할 수 있습니다.character 는이 문맥에서 .

T ~의 약자 TRUE 및합니다 (greedyness는 R 정규식 구문과 동일하지 않습니다) 케이스를 무시하고 PCRE를 사용하도록 말할 하위에 4, 5 매개 변수로 어떤 문자를 저장

실행중인 코드에 대한 Tio 링크 와 함께 Sumner18 제공으로 4 바이트 절약


3

Java 8, 147140 바이트

골프 :

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

언 골프 드 :

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.*;바이트를 절약 하는 데 사용할 수 있다고 생각합니다 .
Roman Gräf

@ RomanGräf 당신이 맞습니다. 이전 버전의 코드 (작동하지 않음)에서 가져 오기를 사용하지 않는 것이 더 짧았 기 때문에 패키지가 철자가되었습니다. 코드를 수정 한 후 재평가하지 않았습니다.

3

C, 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
이거 좋은데! 내 C 솔루션을 파크 롤에서 떨어 뜨렸다.
Albert Renshaw



2

파이썬 3 , 130102 바이트

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)

온라인으로 사용해보십시오!

어떤 종류의 기능도 사용하지 않고 외부 라이브러리를 사용하지 않습니다! (인쇄 및 입력이 기능으로 계산되지 않는 한).

제목의 시작 부분에있는 자음에서 '모음 영역'으로 들어가는 지 확인하여 작동합니다. 그것이 '모음 영역'에 있고 자음을 감지하면 제목을 인쇄합니다.

@LliwTelracs 덕분에 28 바이트 절약


2

MATLAB / 옥타브, 58 51 바이트

@HughNolan 덕분에 7 바이트 절약

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

ans문자열을 전달하여 호출 할 수 있는 익명의 함수를 만듭니다 .ans('Land')

온라인 데모

MATLAB 호환성 을 위해 위의 기능 $0대신에 사용해야합니다 $1.


이것에 대해 생각하고 있었고 이미 수행 한 것을 보았습니다. 몇 바이트 절약 : @(x)regexprep(x,'^.*?[aeiouyAEIOUY]+','$0 $0 $0 ');
Hugh Nolan

@HughNolan 감사합니다!
Suever

2

C (gcc) , 111110 바이트

*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()gcc가 함수 매개 변수를 평가하는 순서를 이용합니다. 약간 덜 골프

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

-1의 @gastropner에게 감사합니다.


와!! 잘 했어!
Albert Renshaw


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.