Lípínguapua dopo 페페


20

Língua do Pê 또는 P Language는 포르투갈어로 브라질과 포르투갈에서 사용되는 언어 게임입니다. 또한 네덜란드어 및 아프리칸스어와 같은 다른 언어로도 알려져 있습니다. ( 위키 백과 )

이 언어 게임에는 방언이 있습니다. 게임에서 사용되는 언어마다 고유 한 방언이 있습니다. 어떤 사람들은 P 언어에 능통하며, 가장 잘하는 사람은 그 자리에서 원하는 텍스트로 번역 할 수 있습니다!

P 언어

이 도전에서 우리는 더블 토크 방언을 사용할 것 입니다.

텍스트를 P 언어로 번역하기 위해 텍스트의 모음 모음에 단일 p문자 가 추가되고 모음 모음이 추가됩니다 .

도전

문자열을 입력으로 받아들이고 P 언어로 번역을 출력하는 함수 또는 프로그램을 작성하십시오.

  • 입력은 인쇄 가능한 ASCII 문자로만 구성됩니다.
  • 출력은 변환 된 입력과 선택적으로 후행 줄 바꾸기로 구성됩니다.
  • 모음은 다음 문자 중 하나 aeiouyAEIOUY입니다.
  • 모음의 순서는 다른 문자로 구분됩니다. 현 "Aa aa-aa"은 세 모음 모음이 있습니다.
  • 변환 된 출력 문자열에서 선행 및 후행 공백은 선택적으로 생략 될 수 있습니다.

""                              =>   ""
"Lingua do Pe"                  =>   "Lipinguapua dopo Pepe"
"Hello world!"                  =>   "Hepellopo woporld!"
"Aa aa-aa"                      =>   "AapAa aapaa-aapaa"
"This should be easy, right?"   =>   "Thipis shoupould bepe eapeasypy, ripight?"
"WHAT ABOUT CAPS?"              =>   "WHApAT ApABOUpOUT CApAPS?"
"   Hi "                        =>   "   Hipi " or "Hipi"

큰 따옴표 문자 "는 예제에서 입력 및 출력 문자열을 구분하는 데 사용되지만 분명히이 문자는 유효한 입력 문자열에도 나타날 수 있습니다.


2
아무도 아직 스택에 당신을 환영했는지 확신 할 수 없으므로 Code Golf Stack Exchange에 오신 것을 환영합니다! 멋지게 지정된 첫 번째 도전. :-)
주세페

@Giuseppe 친절한 말에 감사드립니다!
마틴 바 멜리 스

답변:


9

자바 스크립트 (ES6), 35 바이트

s=>s.replace(/[aeiouy]+/gi,'$&p$&')

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

특수 대체 패턴 $&일치하는 하위 문자열을 의미 합니다.


8
나는 몰랐다 $&. 몇 년 동안, 나는 정규식 전체를 캡처 그룹으로 포장했습니다. 코드 골프가 비현실적이라고 누가 말했습니까?!
재귀

2
$&더 일반적인 방법은? Java에서는 $0afaik이며 Retina는 둘 다 허용합니다. 몰랐어요 $&JavaScript에서 왔어요. 아니면 .NET 맛 정규식입니까, JavaScript도 사용합니까?
케빈 크루이 센


7

Japt , 10 바이트

r"%y+"_+ip

시도 해봐

r"%y+"_+ip     :Implicit input of string
r              :Replace
 "%y+"         :RegEx /[aeiouy]+/gi
      _        :Pass each match through a function
       +       :  Append a copy of the match
        ip     :  Prepended with "p"

2 분 너무 늦었 어! 이 2.0 짧은 정규 표현식에 JAPT을 사용하는 것을 제외하고 나는 똑같은 대답을했다 "%v"> -\v
예 무지의

@EmbodimentofIgnorance \y대신에 필요 합니다 \v.
얽히고 설킨

6

자바 8, 40 바이트

s->s.replaceAll("(?i)[aeiouy]+","$0p$0")

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

설명:

s->                              // Method with String as both parameter and return-type
  s.replaceAll("(?i)[aeiouy]+",  //  Replace the regex matches
               "$0p$0")          //  With this replacement

정규식 설명 :

(?i)[aeiouy]+                    // MATCH:
(?i)                             //  Enable case insensitivity
            +                    //  Match one or more
    [aeiouy]                     //  Adjacent vowel characters

$0p$0                            // REPLACEMENT:
$0                               //  The entire match (the vowel 'sequence')
  p                              //  Appended with a literal "p"
   $0                            //  Appended with the entire match again


3

파이썬 3 , 55 바이트

lambda s:re.sub('([aeiouy]+)',r'\1p\1',s,0,2)
import re

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


산세 정규식 :

파이썬 3 , 101 바이트

def f(s,q=''):i=s[:1];t=i in{*'aeiouyAEIOUY'};return(q+(q!='')*'p'+q+i)*0**t+(s and f(s[1:],(q+i)*t))

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

Python 3.8 (시험판) : 99 바이트

설명

문자열 받아들이는 재귀 기능, s및 선택적 인수를 q. s( i) 의 첫 문자가 모음이면 대기열에 저장됩니다 q. 그렇지 않은 경우, q문자 'p', q다시 문자 i및 문자열의 첫 번째 문자가 제거 된 재귀 함수의 결과 로 구성된 문자열이 리턴 됩니다. 함수가 빈 문자열을 만나면 재귀가 중지됩니다 s.


2
정규식없이 솔루션을 사랑하십시오!
마틴 바 멜리 스

3

05AB1E , 22 20 바이트

.γžÁyå}vyžÁyнåi'py}J

05AB1E에는 불행히도 정규 표현식이 없습니다.
나는 복제 된 것을 정말로 좋아하지 žÁyнå않지만, 현재 대안을 찾기에는 너무 바쁩니다.

내가 알지도 못했던 상수를 보여준 @Grimy 덕분에 -2 바이트 덕분에 (Wiki 페이지에서 누락되었습니다.

온라인으로 시도 하거나 모든 테스트 사례를 확인하십시오 .

설명:

               # Group the characters in the (implicit) input-string by:
  žÁ             #  Push vowels builtin: "aeiouyAEIOUY"
    yå           #  And check if the current character is in this string
 }v              # After grouping: loop over each group `y`:
   y             #  Push group `y`
    žÁyнåi   }   #  If the first character of the group is a vowel:
          'p    '#   Push a "p"
            y    #   And push group `y` again
              J  #  Join everything on the stack together to a single string
                 # (after the loop, implicitly output the result)

žÁ대신을 ( žO를) 삭제할 수 있습니다 l.
그리미

@Grimy 어쩌면 Wiki 페이지 대신 info.txt 파일을 사용해야합니다. -_- '
Kevin Cruijssen

둘 다 동일한 명령은 아니지만 많은 명령이 누락되었습니다.
그리미

1
@Grimy 네, info.txt 또는 Wiki 페이지 대신 소스 코드 를 사용해야 것입니다. ;)
Kevin Cruijssen





1

Stax , 17 바이트

àº`≈Zö=q╦ⁿ↔èblTï÷

staxlang.xyz에서 실행하고 디버그하십시오!

압축 해제 (20 바이트) 및 설명 :

Vv'y+c^+:}'++{'pnL}R
                   R    Regex replace using
                        Pattern:
Vv'y+                     Push "aeiou", push "y", and concatenate
     c^+                  Copy, convert copy to all caps, and concatenate
        :}                Enclose in []
          '++             Push "+" and concatenate
                        And replacement:
             {    }       Block:
              'p            Push "p"
                n           Copy second item (matching substring) to top
                 L          Listify
                          Implicit concatenate
                        Implicit print

Stax에서는 대소 문자를 구분하지 않는 정규 표현식이 없으며 모음 내장에는 Y가 포함되어 있지 않습니다. 설명서에는 블록을 대체물로 사용하는 방법이 나와 있지 않지만 작동하는 기능입니다.

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