Litery słów chcą sprawiedliwości.
Postanowili pojawić się jednakowo tyle samo razy w zdaniu.
Przykład:
Priorities
Stanie się:
Ppprrioooritttieeesss
Każda litera pojawia się 3 razy, jak najczęściej i
, pojawia się 3 razy.
Nie ma znaczenia, gdzie umieszczasz powtarzające się litery, o ile znajdują się obok podobnej litery.
To znaczy:
Pppriooorritttieeesss
jest OK (litera „r”)
Ppprioororitttieeesss
nie jest OK (litera „r”)
Inny przykład:
invoice
Stanie się:
innvvooiccee
Inny przykład:
Remittance Advice
Stanie się:
Rrremmmiitttaannncce Adddvvvice
Spacja, przecinek, znak zapytania, cytat itp. Nie są traktowane jako litery do tego wyzwania. Trzeba tylko wziąć pod uwagę [a-zA-Z]. Tylko raz wystarczy miejsca, a kolejność liter powinna pozostać taka sama.
Wielkie litery nie mają znaczenia, wielkie i małe litery są liczone jako ta sama litera. To znaczy: Pip
ma 2 „P” i 1 „I”, więc się stanie Piip
.
Litery bez rozróżniania wielkości liter mogą mieć dowolną formę, Piip=piip=piiP=PiiP
To jest golf golfowy
źródło
Odpowiedzi:
05AB1E , 16 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
R , 106 bajtów
Wypróbuj online!
Podejście bazowe R:
+
operatora R.źródło
Perl 6 , 82 bajtów
-3 bajty dzięki nwellnhof
Wypróbuj online!
Pobiera zmienny ciąg i modyfikuje go na miejscu.
Wyjaśnienie:
źródło
.=
operatora jaka.=lc.=subst(...)
. Nie jestem jednak pewien, czy zmiana wielkości liter w istniejącym liście jest dozwolona. Również<:L>
zamiast<:Ll>
.JavaScript (ES6), 112 bajtów
Wypróbuj online!
Skomentował
źródło
o[l] = // updates o[l] to a non-numeric value
. Jeśli dobrze rozumiem,o
to tablica liczb całkowitych w funkcjachF
ig
, ale zmienia się w tablicę ciągów zawierającą jeden lub więcej znakówc
w części, o której wspomniałem wcześniej? Sądzę też, że wartościo
sąundefined
domyślnie, ponieważ używaszo[l]=-~o[l]
zamiast++o[l]
?o[l]
do litery, każda kolejna iteracja z tą samą literą doprowadzi dom - o[l] --> NaN
(liczba całkowita minus litera) il.repeat(NaN) == ''
. (O ostatnim punkcie: tak, zgadza się.)J ,
335646 bajtówWypróbuj online!
Nie można znaleźć sposobu na uniknięcie
~:tolower
dwukrotnego użycia .Jak to działa
źródło
R + stringr, 108 bajtów
Nie jestem zbyt dobry w
stringr
. Zwraca mieszaninę małych i wielkich liter, ponieważ pytanie mówi, że to nie ma znaczenia.Wypróbuj online!
Wyjaśnienie
źródło
K4 , 35 bajtów
Rozwiązanie:
Przykłady:
Wyjaśnienie:
Może być golfa z innym podejściem, będzie myśleć
źródło
Węgiel drzewny ,
3332 bajtyWypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
źródło
Java 11,
190176162 bajtów-14 bajtów dzięki @Nevay .
Dane wyjściowe są pisane wielkimi literami.
Wypróbuj online. (UWAGA:
String.repeat(int)
jest emulowany jakorepeat(String,int)
dla tej samej liczby bajtów, ponieważ Java 11 nie jest jeszcze w TIO).Wyjaśnienie:
źródło
char
myśli? Niestety nie.var
może być użyty tylko dla pojedynczych pól. Więc zamiastchar m=1,i=127,a[]=new char[i];
tego byłobyvar m=1;var i=127;var a=new char[i];
. Oto przydatna wskazówka dotycząca tego, co możesz, a czego nie możesz zrobić w Javie 10var
. (Mógłbym zamienićint
pętlę navar
, ale liczba bajtów pozostanie taka sama.)var
. A Java 11 prawie nie ma żadnych zmian związanych z kodegolfem, z wyjątkiemString.repeat
metody, której już używałem wiele razy. Ma także noweString.stripLeading
lubString.stripTrailing
, które działają jak,trim
ale tylko wiodące / końcowe białe spacje, iString.isBlank()
które są takie same jakString.trim().isEmpty()
(tylko puste lub tylko białe spacje).s->{s=s.toUpperCase();char m=2,i=91,a[]=new char[127];for(int c:s.getBytes())m-=m+~++a[c]>>-1;for(;i-->65;)s=s.replaceFirst(i+"",repeat((i+""),m-a[i]));return s;}
Japt
-h
, 27 bajtów-3 bajty z @ETHproductions
Próbuję wyjaśnić
Wypróbuj online!
źródło
ú
Sztuczka jestñ oC ó¥
, choć wymaga dodania z powrotem do;
...ñ
działało na łańcuchach ?! @ETHproductions, proszę powiedz mi, że to najnowszy dodatek i nie przeoczyłem go przez cały ten czas!Rubinowy , 89 bajtów
Wypróbuj online!
Próbowałem różnych podejść, ale to, co naprawdę oszczędza wiele bajtów, polega na dodawaniu jednego znaku na raz.
W jaki sposób:
źródło
PowerShell 6, 123 bajty
Używa zakresu char
'a'..'z'
. Zobacz skrypt dla poprzedniej Powershell poniżej.Wyjaśniony skrypt testowy:
Wynik:
PowerShell 5.1-, 133 bajty
źródło
Czerwony , 252 bajty
Wypróbuj online!
Śmiesznie długie rozwiązanie ...
Wyjaśnienie:
źródło
JavaScript (Node.js) ,
140137 bajtówWypróbuj online!
+33 bajtów od mojego pierwszego rozwiązania dla tych niekończących się dodatkowych ograniczeń. JS jest do bani z powodu nierozróżniających wielkości liter manipulacji ciągami, które znasz.
-3 bajty wstecz Dzięki @Arnauld.
Wyjaśnienie
źródło
f
s jako tymczasowego magazynu, więc pomyślałem, że to w porządkumap()
funkcji oddzwaniania można bezpiecznie używać do przechowywania, ponieważ są zdefiniowane w zasięgu lokalnym. Korzystanie z głównej funkcji - która jest zdefiniowana globalnie - jest bardziej niebezpieczne. Tutaj możesz użyć wywołania zwrotnego pierwszegomap()
, co spowoduje powrót do 137 bajtów .Łuska , 15 bajtów
Wypróbuj online!
Brutalna siła, bardzo wolna.
Wyjaśnienie
źródło
Perl 6 ,
7770 bajtówWypróbuj online!
Podejście GB do wstawiania znaku, dopóki wszystkie znaki nie pojawią się tyle samo razy. Otrzymuje ciąg, który jest modyfikowany w miejscu.
Jeśli podkreślenia można traktować jak litery, wyrażenie regularne może stać się
/\w/
, oszczędzając dwa bajty.Wyjaśnienie
źródło
{*}
sztuczkę..value(s)
prawda? Zgrabne, być może będę musiał zaktualizować niektóre z moich starych rozwiązańPython 2 ,
97117 bajtówWypróbuj online!
źródło
C (clang) ,
246223220210208193188 bajtówFlaga kompilatora
-DF=;for(i=0;b[i];i++
-DB=b[i]
(29 bajtów)Dodano obsługę mieszanych przypadków.
Wypróbuj online!
źródło
Pyth,
3130 bajtówWypróbuj tutaj
Wyjaśnienie
źródło
C (GCC) - 175 bajtów
Nie golfił
Wypróbuj online!
źródło
Kotlin Android, 413 bajtów
Wypróbuj online
Objaśnienie krok 1 -> Wybierz listę różnych znaków. krok 2 -> Zlicz liczbę znaków w ciągu i wybierz maksymalną częstotliwość znaków. krok 3 -> uzyskaj różnicę w częstotliwości znaków w stosunku do maksymalnej częstotliwości znaków krok 4 -> umieść znaki w odniesieniu do pozycji w łańcuchu. Happy Solving!
źródło
C # (interaktywny kompilator Visual C #) , 145 bajtów
Wypróbuj online!
źródło
PHP ,
185173170 bajtówWypróbuj online!
Nieskluczone (i nieskonfigurowane i niezoptymalizowane).
źródło