Lípínguapua dopo Pêpê


20

Língua do Pê veya P Language, Brezilya ve Portekiz'de Portekizce ile konuşulan bir dil oyunudur. Hollandaca ve Afrikaanca gibi diğer dillerde de bilinir. ( Wikipedia )

Bu dil oyununda bazı lehçeler var. Oyunun oynandığı farklı diller kendi benzersiz lehçelerine bile sahiptir. Bazı insanlar P Dili konuşmada akıcıdır ve en iyisi herhangi bir metni yerinde tercih ettikleri lehçeye çevirebilir!

P Dili

Bu meydan okumada, Double Talk lehçesini kullanacağız .

Metni P Dili'ne çevirmek için, metindeki herhangi bir ünlüler dizisine tek bir pkarakter ve ardından ünlüler dizisinin bir kopyası eklenir .

Meydan okuma

Bir dizeyi giriş olarak kabul eden ve çevirisini P Dili olarak veren bir işlev veya program yazın.

  • Giriş yalnızca yazdırılabilir ASCII karakterlerden oluşur.
  • Çıktı yalnızca çevrilmiş girdiden ve isteğe bağlı olarak bir satırsonu satırından oluşur.
  • Ünlüler aşağıdaki karakterlerden biridir aeiouyAEIOUY.
  • Ünlüler dizisi başka herhangi bir karakterle sınırlandırılır. Dize "Aa aa-aa"üç sesli harf dizisine sahiptir.
  • Öndeki ve sondaki boşluk isteğe bağlı olarak çevrilmiş çıktı dizesinden çıkarılabilir.

Örnekler

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

Çift tırnak karakteri ", örneklerde giriş ve çıkış dizelerini sınırlamak için kullanılır, ancak bu karakter herhangi bir geçerli giriş dizesinde de görünebilir.


2
Kimse henüz yığını karşıladı olup olmadığını emin değilim, yani: Code Golf Stack Exchange hoş geldiniz! Güzel belirlenen ilk meydan okuma. :-)
Giuseppe

@Giuseppe Nazik sözler için teşekkürler!
Maarten Bamelis

Ayrıca İspanyolca olarak es.wikipedia.org/wiki/Jerigonza
leonbloy

Yanıtlar:


9

JavaScript (ES6), 35 bayt

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

Çevrimiçi deneyin!

Özel değiştirme modeli eşleşen alt dize$& anlamına gelir .


8
Ben bilmiyordum $&. Tüm bu yıllar boyunca, tüm regex'i bir yakalama grubuna sarıyorum. Kod golfünün pratik olmadığını kim söyledi ?!
özyinelemeli

2
$&daha yaygın şekilde? Java'da $0afaiktir ve Retina her ikisine de izin verir. $&JavaScript'ten geldiğini bilmiyordum . Yoksa bir .NET aromalı normal ifade ve JavaScript de kullanıyor?
Kevin Cruijssen


7

Japt , 10 bayt

r"%y+"_+ip

Dene

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"

Lanet olsun, 2 dakika çok geç! Aynı cevabı verdim, ancak Japt 2.0 kısa regexes kullandı "%v"->\v
Cehalet

@EmbodimentofIgnorance, \ybunun yerine ihtiyacınız olacak \v.
Shaggy

6

Java 8, 40 bayt

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

Çevrimiçi deneyin.

Açıklama:

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

Normal ifade açıklaması:

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

Python 3 , 55 bayt

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

Çevrimiçi deneyin!


Sans normal ifadesi:

Python 3 , 101 bayt

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

Çevrimiçi deneyin!

Python 3.8 (ön sürüm): 99 bayt

açıklama

Yinelenen işlev, bir dize sve isteğe bağlı bir bağımsız değişkeni kabul eder q. s( i) Öğesinin ilk karakteri sesli harfse, kuyrukta depolanır q. Değilse, bir dize oluşur hangi döndürülür qharfi, 'p', qyine, karakter ive dizesinin ilk karakteri ile özyinelemeli işlevinin sonucu sıyrılıp. İşlev boş bir dizeyle karşılaştığında özyineleme durur s.


2
Normal ifade olmadan çözümü seviyorum!
Maarten Bamelis

3

05AB1E , 22 20 bayt

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

05AB1E maalesef herhangi bir normal ifadeye sahip değil.
Çoğaltmayı gerçekten sevmiyorum žÁyнå, ama şu anda alternatif aramak için biraz fazla meşgulüm.

@Grimy sayesinde var olduğumu bile bilmediğim bir sabit gösterdiği için -2 bayt sayesinde (ve Wiki sayfasında eksikti ..>.>)

Çevrimiçi deneyin veya tüm test senaryolarını doğrulayın .

Açıklama:

               # 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)

žÁbunun yerine žObırakmanıza izin verir l.
Grimmy

@Grimy Belki Wiki sayfası yerine info.txt dosyasını kullanmaya başlamalıyım .. -_- '
Kevin Cruijssen

İkisi de aynı komutları olmasa da çok sayıda komut eksik (umarım. Bazen her ikisinden de eksik gizli komutlar olup olmadığını merak ediyorum).
Grimmy

1
@Grimy Evet, belki info.txt veya Wiki sayfaları yerine kaynak kodunu kullanmalıyız. ;)
Kevin Cruijssen

2

Retina 0.8.2 , 17 bayt

i`[aeiouy]+
$&p$&

Çevrimiçi deneyin! Bağlantı, test senaryolarını içerir. Açıklama: Önemsiz normal ifade yaklaşımı; ivaka duyarsızlığı temel bayrak dönüşler (global maça Retina zaten varsayılan).





1

Stax , 17 bayt

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

Çalıştırın ve hata ayıklayın staxlang.xyz!

Ambalajsız (20 bayt) ve açıklama:

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'ta büyük / küçük harfe duyarlı olmayan düzenli ifadeler yoktur ve sesli harf yerleşikleri Y'yi içermez. Dokümantasyon size bir bloğu yedek olarak kullanma hakkında bilgi vermez, ancak yine de çalışan bir özelliktir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.