Kekemelik , çoğumuzun deneyimlediği veya en azından gördüğü bir sorundur. Ünlü konuşma tanıma yazılımlarının çoğunun kekemeli konuşma ile ilgili ciddi sorunları olsa da, kekemeliği anlayan, ancak bunları düzeltemeyen ve sadece olduğu gibi yazan bir yazılım düşünelim.
Böyle bir yazılım tarafından yazılmış bir örnek şöyle olabilir: "lütfen dikkatli olun" . Bu örnekte "dikkatli" orijinal kelime ve "ca ca" ise kekemeli kelimelerdir.
Meydan okuma
Orijinal kelimeleri korurken kekemeli kelimeleri girişten kaldırarak düzelten bir program veya işlev yazın. Örneği sabit sürümü için "lütfen dikkatli olun ca ca" olacağını "lütfen dikkatli olun" .
Bu kod golf , her dilde en kısa cevap kazanır!
Kekemeli kelimeler nedir?
Kekemeliğin birçok farklı varyasyonu vardır. Ancak bu zorluğun basitliği için, bunu aşağıdaki kurallarla sınırlayacağız:
- Kekemeli kelimeler orijinal kelimenin tamamlanmamış bir parçası veya tamamı olabilir. "Tamamlanmamış kısım" ile, orijinal kelimenin tam olarak kekemeli kelimeyle başlaması gerektiği anlamına gelir. Örneğin "ope" ve "açık" hem duraksamalı kelimesine olabilir "açık" , ama "kalem" beri bir olamaz "açık" ile başlamıyor "kalem" .
- Kekemelik kelimeler "aeiou" sesli harflerinden en az birini içermelidir . Örneğin "yıldız" , "a" içerdiğinden "başlangıç" için kesikli bir kelime olabilir , ancak "st" , belirtilen sesli harfleri içermediği için kekemeli bir kelime olamaz.
- Kekemeli kelimeler sadece orijinal sözcükten önce görünebilir ve geçerli olmak için en az iki kez tekrarlanmalıdır (orijinal kelime tekrarlarda sayılmaz). Örneğin "oo open" sözcükleri kesik kesiktir, ancak "o open o" söz konusu değildir, çünkü orijinal sözcükten sonraki "o" sayılmaz ve orijinal sözcükten önceki "o" en az iki kez tekrarlanmaz. "git git git git git" orijinal kelimeden önce kekemeli kelimelerin beş tekrarına sahiptir ve geçerlidir.
- Tekrarlanan kekemeli kelimelerin tek bir kümesi karışık formlar içeremez ve kelimeler birbirleri gibi olmalıdır. Örneğin, "op o op open" kekemelik kelimeler olarak sayılmaz. Öte yandan, "o op op open" sözcükleri kekemeli çünkü ilk "o" burada tamamen farklı bir kelime olarak görülüyor ve iki "op" , "açık" kekemeli kelimeleri olarak sayılıyor .
- Birbirinden hemen sonra tekrarlanan kekemeli kelimelerin birden fazla geçerli kümesinde sadece son orijinal sözcük kalır. Örneğin, "ooo op op op open" da , "oo o" kısmı ilk "op" kelimesinin düzensiz kelimeleri olarak görülür , bu yüzden kaldırılmaları ve daha sonra "op op op" ifadesinin "open" düzensiz kelimeleri olarak görülmesi " ve bunlar da kaldırılmalıdır, bu nedenle kekemeli kelimelerin kaldırılmasından sonra yalnızca " açık " bırakılacaktır. Çok sabitleme, sadece soldan sağa başına gelen tekrarlanan stuttered kelimelerin birden fazla geçerli setleri varsayabiliriz "op op ooo açık" olmasına neden olur "açık op op" aka (
Giriş
- Giriş yalnızca ASCII İngilizce harfler (az), rakamlar (0-9) ve boşluk karakterlerini içeren tek satırlık bir dizedir. Harf muhafazası önemli değildir ve küçük veya büyük harf veya her ikisini birden kabul etmeye karar verebilirsiniz, ancak kasa aynı kalmalıdır ve çıktıda değiştiremezsiniz.
["l","i","s","t"," ","o","f"," ","l","e","t","t","e","r","s"]Dize yerine bir harf listesi (gibi ) kullanabilirsiniz, ancak sözcük listesini kullanamazsınız. Dilinizin farklı bir giriş yapısı varsa, onu kullanın. Mesele, girdinin kelimelerle ayrılmaması gerektiğidir, bu nedenle bazı dillerde kelimeleri ayırmanın maliyeti aslında diğer yaratıcı çözümleri tetikleyebilir.- Giriş, içinde hiç, bir veya birden fazla kekemeli kelime içerebilir.
- Kelimeler ve / veya sayılar tek bir boşlukla ayrılır ve girdi yan yana iki boşluk içermez.
Çıktı
- Bir dize veya bir harf listesi ya da girdideki tüm kesilmiş sözcüklerin kaldırıldığı dilinizdeki uygun yapı.
- Çıktı sözcükleri tam olarak bir boşlukla (girdi ile aynı) ayrılmalıdır.
- Tek satır başı ve sondaki satır başı veya boşluk kullanılabilir.
Standart boşluklar yasaktır.
Test senaryoları
Kekemelik kelime yok:
"hello world" => "hello world"
Tekrarlanan kekemeli kelimelerin tek bir örneği:
"ope ope ope ope open the window" => "open the window"
Tekrarlanan kekemeli kelimelerin birden fazla örneği:
"there is is is is something un un under the the the table" => "there is something under the table"
Kekemeli kelimeler yok, yeterince tekrarlanmadı:
"give me the the book" => "give me the the book"
Kekemelik kelimeler yok, sözü edilen sesli harflerden hiçbirine sahip değilsiniz:
"h h help m m m me" => "h h help m m m me"
Sayılar kekemelik kelimeler değil, sözü edilen sesli harflerden hiçbirine sahip değiller:
"my nu nu number is 9 9 9 9876" => "my number is 9 9 9 9876"
Ancak hem sesli harflere hem de sayılara sahip bir kelimede kekeme sözleri olabilir:
"my wi wi windows10 is slow" => "my windows10 is slow"
Aynı tekrar grubundaki kekemeli kelimelerin farklı biçimleri sayılmaz:
"this is an ant antarctica does not have" => "this is an ant antarctica does not have"
Birbiri ardına sürekli kekemeli kelime grupları için sadece son orijinal kelimeyi sakla:
"what a be be be beauti beauti beautiful flower" => "what a beautiful flower"
Bu, birbiri ardına çok sayıda sürekli kekemeli kelime kümesi değildir:
"drink wat wat wa wa water" => "drink wat wat water"
Boş giriş:
"" => ""
Yorumlardan daha fazla vaka:
"a ab abc" => "a ab abc"
"a ab ab abc" => "a abc"
"ab ab abc abcd" => "abc abcd"
"a a ab a able" => "ab a able"
"i have ave ave average" => "i have average"
"my wi wi windows 10 is cra cra crap" => "my windows 10 is crap"
Yukarıdaki test senaryolarının kopyalanması kolay bir listesi:
"hello world",
"ope ope ope ope open the window",
"there is is is is something un un under the the the table",
"give me the the book",
"h h help m m m me",
"my nu nu number is 9 9 9 9876",
"my wi wi windows10 is slow",
"this is an ant antarctica does not have",
"what a be be be beauti beauti beautiful flower",
"drink wat wat wa wa water",
"",
"a ab abc",
"a ab ab abc",
"ab ab abc abcd",
"a a ab a able",
"i have ave ave average",
"my wi wi windows 10 is cra cra crap"
"drink wat wat wa wa water" => "drink wat wat water"kuralın tekrar tekrar uygulanması gerektiği gibi görünüyor, böylece bu "içecek su" olur