Wkład
Ciąg znaków ASCII do wydruku, na przykład:
This is an example string.
Wydajność
Do każdej spółgłoski ( BCDFGHJKLMNPQRSTVWXYZbcdfghjklmnpqrstvwxyz
), po której nie następuje samogłoska ( AEIOUaeiou
), dodaj ostatnią samogłoskę przed nią małymi literami.
Spółgłoski przed pierwszą samogłoską pozostają bez zmian :
Thisi isi ana examapale seterinigi.
Przypadki testowe
AN EXAMPLE WITH A LOT UPPERCASE (plus some lowercase)
=> ANa EXAMaPaLE WITiHi A LOTo UPuPEReCASE (pelusu some lowerecase)
And here comes a **TEST** case with 10% symbols/numbers(#)!
=> Anada here comese a **TESeTe** case witihi 10% siyimiboloso/numuberese(#)!
This is an example string.
=> Thisi isi ana examapale seterinigi.
abcdefghijklmnopqrstuvwxyz
=> abacadefegehijikiliminopoqorosotuvuwuxuyuzu
A pnm bnn
=> A panama banana
Tell me if you need more test cases!
=> Telele me ifi you neede more tesete casese!
Punktacja
Ponieważ jest to gra w golfa , wygrywa odpowiedź o najniższej liczbie bajtów w każdym języku (żadna odpowiedź nie zostanie zaakceptowana).
A pnm bnn
!Odpowiedzi:
Siatkówka , 48 bajtów
Wypróbuj online! Objaśnienie: Lookahead szuka punktu, po którym nie następuje samogłoska, podczas gdy lookbehind szuka bezpośrednio poprzedzającej spółgłoski i poprzedniej samogłoski, która jest następnie wstawiana małymi literami.
źródło
JavaScript (ES6),
108105 bajtów(Zaoszczędź 3 bajty dzięki @Shaggy.)
Wyszukuje samogłosek lub spółgłosek bez następującej samogłoski:
(Nie musimy jawnie szukać spółgłosek, ponieważ samogłoski są wykluczane na podstawie
/[aeiou]|...
.)Samogłoski są przechowywane w
v
, iv
wstawiono spółgłosek bez następującej samogłoski :(Jeśli
r[1]
istnieje, dopasowaliśmy spółgłoskę i samogłoskę).Jeśli nic się nie zmieniło, zwracamy dane wejściowe. W przeciwnym razie powracamy do zastąpionego ciągu.
Pokaż fragment kodu
źródło
s=>s.replace(/[aeiou][^a-z]*([a-z](?![aeiou]))+/gi,s=>s.replace(/(?!^)./g,a=>a+s[0].toLowerCase()))
Wydaje mi się, że nie mam problemów z sekwencjami(s+=' ')
powinien zaoszczędzić kilka bajtów.Python 2 ,
134119 bajtówWypróbuj online!
EDYCJA: 15 bajtów dzięki Lynn
źródło
<vowels>.count
.Standardowy ML ,
225223 bajtówWypróbuj online!
Mniej golfa:
Wypróbuj online!
źródło
it
i używam$
nazwy zmiennej.it
, ale jeszcze się nie obejrzałem.sed 4.2.2 , 64 bajty
Wypróbuj online!
źródło
Perl 5,
686759 bajtówOto świetny przykład przydatności
\K
i nie mogę uwierzyć, że nie wiedziałem o tej funkcji, zanim Dom Hastings zwrócił na to uwagę.Nie byłem w stanie uzyskać prawidłowego zachowania po prostu przy użyciu
s///g
, więc faktyczna pętla wydaje się konieczna. (Możliwe jest, że prawidłowe użycie twierdzenia, które się spogląda, mogłoby działać bez wyraźnego określeniawhile
- ale go nie znalazłem).źródło
[aeiou])
do zmiennej: Wypróbuj online!JavaScript ES6, 115 bajtów
Oszczędza 8 bajtów dzięki @ETHProductions
Udało mi się to jeszcze bardziej napompować podczas gry w golfa O_o, ale to także naprawia błąd
źródło
JavaScript,
8882 bajtówSporządzono z jednym wyrażeniem regularnym:
Wersja oryginalna (88 bajtów):
Zaktualizowana wersja (82 bajtów) po zapoznaniu się z wyrażeniem regularnym Neila :
źródło
Japt
-P
, 28 bajtówWypróbuj online!
Rozpakowane i jak to działa
ó
Funkcja wygrywa nad wszelkiego rodzaju regexes.źródło
JavaScript (Node.js) ,
146143132127125 bajtówWypróbuj online!
źródło
Perl 6 ,
75 73 7169 bajtówSpróbuj
Spróbuj
Spróbuj
Spróbuj
Rozszerzony:
źródło
Python 3 , 125 bajtów
Wypróbuj online!
Python 3.6 pozwala nam (ab) używać f-stringów do ponownego wykorzystania naszego zestawu samogłosek (i dla czterech kolejnych zapisanych znaków, początek odwróconej klasy znaków regex) tanio (
f
prefiks na każdym łańcuchu, a następnie{v}
w razie potrzeby, zamiast'+v+'
potrzebujesz konkatenacji lub[^aeiouAEIOU
wstawiłbyś dosłownie.Wyrażenie regularne, które nie pasuje do żadnych znaków, a tylko pozycja, pozwala uniknąć problemów z nie nakładającymi się dopasowaniami, których wymagają normalne wyrażenia regularne, i eliminuje potrzebę ponownego odniesienia dowolnej części dopasowania; używamy tylko obiektu dopasowania, aby uzyskać indeks plasterka, którego używamy do znalezienia poprzedniej samogłoski.
Częściowo bez golfa byłoby to coś w stylu:
źródło
TSQL, 500 bajtów
Tabela
i
służy do wprowadzania danychźródło
SWI-Prolog, 593 bajty
Używany tylko z wbudowanymi predykatami (bez wyrażeń regularnych i biblioteki do manipulowania listami).
Stosowanie:
źródło
Haskell ,
142130 bajtówWypróbuj online!
Inicjał
""&
jest częściowym zastosowaniem(&)
funkcji zdefiniowanej później i jest tak dziwnie umieszczony, aby TIO policzył bajty""&
, ale nie zlicza bajtów, które w pełnym programie byłyby potrzebne, aby przypisać je do dowolnej nazwanej wartości.Mniej golfa:
Naprawdę powinien istnieć sposób, aby zrobić to bardziej zwięźle z fałdem zamiast rekurencji, ale nie mogłem tego rozgryźć.
źródło
f
nie pojawia się w treści: Wypróbuj online!v = (
i można zdefiniowaćg
jako operator infix .g _""=""
w ostatniej pozycji oszczędza bajt:g _ x=x
(dwa bajty, jeśli przejdziesz na infix, jak sugeruje Laikoni).""&
aby funkcja działała.05AB1E , 34 bajty
Wypróbuj online!
Cofam to, że mogę ogolić 3 bajty z tej potworności ... Myślę, że mógłbym ogolić wartość logiczną, ale MUSZĄ być 3 przypadki. 1 dla samogłosek. 1 dla spółgłosek. 1 w przypadku istnienia cyfry / symbolu.
źródło
PowerShell, 104 bajty
na podstawie wyrażenia regularnego Neila .
zapisz to jako
get-rememebere.ps1
. Skrypt do testowania:źródło
$t
. Odpowiedni meta post: codegolf.meta.stackexchange.com/a/8731/78123Czerwony , 276 bajtów
Wypróbuj online!
Czytelny:
źródło
Yabasic , 180 bajtów
Pełny program, który pobiera dane ze STDIN i wysyła do STDOUT
Wypróbuj online!
źródło