Czy kiedykolwiek miałeś ochotę stworzyć fajne hashtagi typu twitter, takie jak #brexit lub #brangelina ? ten golf jest dla ciebie.
Napisz program, który akceptuje dwa ciągi A i B jako dane wejściowe i scala je zgodnie z następującym algorytmem:
- niech
n
będzie liczbą grup samogłosek w A (np.britain
ma 2 grupy samogłosek:i
w pozycji 3 iai
na pozycji 5).- if n = 1: obetnij A zaczynając od pierwszej pozycji grupy samogłosek (przykład:
bill
=>b
) - jeśli n> 1: obetnij A zaczynając od
n-1
pozycji grupy samogłoskowej (przykład:programming
=>progr
,britain
=>br
)
- if n = 1: obetnij A zaczynając od pierwszej pozycji grupy samogłosek (przykład:
- usuń wszystkie spółgłoski na początku B (
jennifer
=>ennifer
) - połączyć zmodyfikowane A i B
Samogłoski są aeiou
; spółgłosek sąbcdfghjklmnpqrstvwxyz
.
Wejście
Możesz założyć, że łańcuchy wejściowe są pisane małymi literami i zawierają co najmniej jedną samogłoskę i jedną spółgłoskę.
Przykłady
brad + angelina => brangelina
britain + exit => brexit
ben + jennifer => bennifer
brangelina + exit => brangelexit
bill + hillary => billary
angelina + brad => angelad
programming + puzzle => progruzzle
code + golf => colf
out + go => o
donald trump
.Django + Angular = Djular
Odpowiedzi:
Rubinowy,
444340 + 1 = 41 bajtów+1 bajt dla
-p
flagi. Pobiera wejście oddzielone spacją w STDIN.-1 bajt dzięki Martin Ender
-2 bajty dzięki histocrat
Wypróbuj online!
GNU sed,
3937 + 1 = 38 bajtów+1 bajt dla
-E
flagi. Pobiera wejście oddzielone spacją w STDIN.-1 bajt dzięki Martin Ender
Wypróbuj online!
Nie publikowanie tego jako oddzielnej odpowiedzi, ponieważ jest to dosłownie to samo rozwiązanie.
źródło
[^aeiou]
/([aeiou]+([^aeiou]*)){,2} \g<2>/
ruby -e "..."
. W tymruby -pe "..."
celu dodaje tylko jeden bajt.MATL,
3130 bajtówWypróbuj online
Wyjaśnienie
źródło
JavaScript (ES6),
817372 bajtyZaoszczędzono 8 bajtów dzięki @Jordan, 1 dzięki @DavidConrad
Mimo że
.match
zwraca tablicę,array+array
zwraca ciąg znaków z zawartością połączonych tablic (tzn.[0]+[1]
Zwraca"01"
).Testowy fragment kodu
Pokaż fragment kodu
Doskonałe rozwiązanie Ruby dla Jordana miałoby 53 bajty w JS:
źródło
(a,b)=>
doa=>b=>
oszczędza 1 bajt.Galaretka ,
2322 bajtówTryItOnline
W jaki sposób?
źródło
PowerShell v2 +, 76 bajtów
Najwyraźniej jest to popularne wyrażenie regularne ... ;-)
Używa
-replace
operatora, aby pobrać odpowiednie elementy, a następnie łączy wyniki razem. Dodaje a$
do pierwszego, aby upewnić się, że wyciągamy koniec sznurka, i dodaje^
do drugiego, aby upewnić się, że ściągamy przód sznurka.źródło
Siatkówka , 35 bajtów
Wypróbuj online! (Pierwszy wiersz włącza pakiet testowy oddzielony od linii).
Po prostu usuwa wszystkie dopasowania wyrażenia regularnego w pierwszym wierszu.
źródło
/^((\(\g<1>\))*)$/
w Ruby.Guma cynamonowa, 23 bajty
Wypróbuj online.
Wyjaśnienie
To dekompresuje do
d([aeiou]+[^aeiou]*)([aeiou]+[^aeiou]*)? [^aeiou]*
, cod
usuwa wszystko pasujące do tego wyrażenia regularnego. (Należy pamiętać, że golfista Jordanad([aeiou]+[^aeiou]*){,2} [^aeiou]*
kompresuje do 24 bajtów z powodu braku powtarzających się elementów do skompresowania).źródło
d[aeiou]+[^aeiou]*[aeiou]*[^aeiou]* [^aeiou]*
krótszy?PHP, 95 bajtów
z preg_match zamiast preg_filter 110 bajtów
źródło
+
zamiast{1,2}
.$v=aeiou;
aby zapisać 3 kolejne.Lua, 66 bajtów
źródło
Perl 5, 39 bajtów
38, plus 1 za
-pe
zamiast-e
Czapka z daszkiem.
źródło
Python 2, 139 bajtów
Ten był trudny.
Sprawdź to na repl.it
źródło
Lithp , 65 bajtów
Jest to w zasadzie część powyższej odpowiedzi JavaScript w moim funkcjonalnym języku programowania Lisp.
Przykładowe użycie:
Nie ma jeszcze tłumacza online. Niedługo dostarczę. To nie będzie trudne, mój język jest napisany w JavaScript.
Zamiast tego to rozwiązanie łamigłówek zostało zaimplementowane jako działający przykład dla mojego języka. Można go uruchomić za pomocą następującego polecenia:
źródło
Haskell,
111108 bajtówTo rozwiązanie niebędące wyrażeniem regularnym okazało się dłuższe niż oczekiwano. W każdym razie ideone.
źródło
Jq 1,5 , 45 bajtów
Nic specjalnego, tylko port perlowego rozwiązania msh210 w PCRE jq.
Wypróbuj online!
źródło
Japt , 18 bajtów
Wypróbuj online!
Bezpośredni port krótkiego rozwiązania JS, który z kolei jest portem Jordańskiego rozwiązania Ruby .
Jak to działa
źródło