Buchstaben der Worte wollen Fairness.
Sie beschlossen, gleich oft in einem Satz vorzukommen.
Beispiel:
Priorities
Wird werden:
Ppprrioooritttieeesss
Jeder Buchstabe erscheint dreimal, wie der häufigste i
, dreimal.
Es spielt keine Rolle, wo Sie die wiederholten Buchstaben ablegen, solange sie sich neben einem ähnlichen Buchstaben befinden.
Dh:
Pppriooorritttieeesss
ist OK (der Buchstabe 'r')
Ppprioororitttieeesss
ist nicht OK (der Buchstabe 'r')
Ein anderes Beispiel:
invoice
Wird werden:
innvvooiccee
Ein anderes Beispiel:
Remittance Advice
Wird werden:
Rrremmmiitttaannncce Adddvvvice
Leerzeichen, Komma, Fragezeichen, Anführungszeichen usw. gelten für diese Herausforderung nicht als Buchstaben. Ich muss nur [a-zA-Z] berücksichtigen. Nur einmal ist Platz genug und die Reihenfolge der Buchstaben sollte gleich bleiben.
Die Groß- und Kleinschreibung von Buchstaben spielt keine Rolle, Groß- und Kleinschreibung werden als der gleiche Buchstabe gezählt. Das heißt: Pip
hat 2 'P's und 1' I ', so wird es Piip
.
Es ist der Fall, unempfindliche Buchstaben können in jeder Form sein, Piip=piip=piiP=PiiP
Das ist Code-Golf
quelle
Antworten:
05AB1E , 16 Bytes
Probieren Sie es online!
Erläuterung
quelle
R , 106 Bytes
Probieren Sie es online!
Base-R-Ansatz:
+
Operator zu missbrauchenquelle
Perl 6 , 82 Bytes
-3 bytes dank nwellnhof
Probieren Sie es online!
Nimmt eine veränderbare Zeichenfolge und ändert sie an Ort und Stelle.
Erläuterung:
quelle
.=
Operator wie verkettena.=lc.=subst(...)
. Ich bin mir nicht sicher, ob das Ändern der Groß- / Kleinschreibung eines vorhandenen Briefes zulässig ist. Auch<:L>
statt<:Ll>
.JavaScript (ES6), 112 Byte
Probieren Sie es online!
Kommentiert
quelle
o[l] = // updates o[l] to a non-numeric value
. Wenn ich das richtig verstehe,o
ist ein Integer-Array inF
undg
funktionsfähig, ändert sich aber in ein String-Array, das ein oder mehrmals das Zeichenc
in dem zuvor erwähnten Teil enthält? Auch ich denke , die Werteo
sindundefined
standardmäßig, da Sie verwendeno[l]=-~o[l]
statt++o[l]
?o[l]
auf einen Buchstaben führt jede nachfolgende Iteration mit demselben Buchstaben zum - o[l] --> NaN
(Ganzzahl minus Buchstabe) undl.repeat(NaN) == ''
. (Über den letzten Punkt: Ja, das ist richtig.)J ,
335646 BytesProbieren Sie es online!
Es konnte kein Weg gefunden werden, der Verwendung zu entgehen
~:tolower
zweimal zu verwenden.Wie es funktioniert
quelle
R + stringr, 108 Bytes
Ich bin nicht sehr gut in
stringr
. Gibt eine Mischung aus Groß- und Kleinschreibung zurück, da die Frage besagt, dass es egal ist.Probieren Sie es online!
Erläuterung
quelle
K4 , 35 Bytes
Lösung:
Beispiele:
Erläuterung:
Könnte mit einer anderen Herangehensweise golfbar sein, wird weiter denken
quelle
Kohle ,
3332 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
quelle
Java 11,
190176162 Bytes-14 Bytes dank @Nevay .
Die Ausgabe erfolgt in Großbuchstaben.
Probieren Sie es online aus. (HINWEIS:
String.repeat(int)
wird emuliert alsrepeat(String,int)
bei derselben , da Java 11 noch nicht mit TIO ausgeführt wird.)Erläuterung:
quelle
char
meinst du? Unglücklicherweise nicht.var
kann nur für einzelne Felder verwendet werden. Alsochar m=1,i=127,a[]=new char[i];
wäre es stattdessenvar m=1;var i=127;var a=new char[i];
. Hier ein nützlicher Tipp, was Sie mit Java 10 tun können und was nichtvar
. (Ich könnte dasint
in der Schleife durch ersetzenvar
, aber dievar
. Und Java 11 hat kaum Änderungen in Bezug auf Codegolf, mit Ausnahme derString.repeat
Methode, die ich schon viele Male verwendet habe. Es hat auch das neueString.stripLeading
oderString.stripTrailing
, das wietrim
aber nur die führenden / nachfolgenden Leerzeichen fungiert undString.isBlank()
dasselbe ist wieString.trim().isEmpty()
(leer oder nur Leerzeichen).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 Bytes-3 Bytes von @ETHproductions
Ich versuche es zu erklären
Probieren Sie es online!
quelle
ú
Trick ist genial, übrigens :-)ñ oC ó¥
, obwohl es erforderlich ist, diese wieder in die;
...ñ
an Saiten gearbeitet ?! @ETHproductions, bitte sagen Sie mir, dass es sich um eine neue Erweiterung handelt, die ich die ganze Zeit nicht übersehen habe!Ruby , 89 Bytes
Probieren Sie es online!
Ich habe verschiedene Ansätze ausprobiert, aber was wirklich viele Bytes spart, ist das Hinzufügen von jeweils einem Zeichen.
Wie:
quelle
Powershell 6, 123 Bytes
Es wird ein Zeichenbereich verwendet
'a'..'z'
. Siehe Skript für vorherige PowerShell unten.Erklärtes Testskript:
Ausgabe:
Powershell 5.1-, 133 Bytes
quelle
Rot , 252 Bytes
Probieren Sie es online!
Lächerlich lange Lösung ...
Erläuterung:
quelle
JavaScript (Node.js) ,
140137 ByteProbieren Sie es online!
+33 Bytes aus meiner ersten Lösung für diese endlosen zusätzlichen Einschränkungen. JS nervt mit Manipulationen, bei denen die Groß- und Kleinschreibung nicht beachtet wird.
-3 Bytes zurück Danke @Arnauld.
Erläuterung
quelle
f
als temporären Speicher verwenden, also dachte ich, dass das in Ordnung istmap()
Rückruffunktionen können sicher für die Speicherung verwendet werden, da sie in einem lokalen Bereich definiert sind. Die Verwendung der global definierten Hauptfunktion ist gefährlicher. Hier können Sie den Rückruf des ersten verwendenmap()
, der Sie zurück zu bringt 137 Bytes .Schale , 15 Bytes
Probieren Sie es online!
Brute Force, also sehr langsam.
Erläuterung
quelle
Perl 6 ,
7770 BytesProbieren Sie es online!
So fügt GB ein Zeichen ein, bis alle Zeichen gleich oft vorkommen. Erhält eine Zeichenfolge, die direkt geändert wird.
Wenn Unterstriche wie Buchstaben behandelt werden, kann dies zu einem regulären Ausdruck werden
/\w/
zwei Bytes einsparen.Erläuterung
quelle
{*}
Trick entdeckte..value(s)
? Klar, ich muss möglicherweise einige meiner alten Lösungen aktualisierenPython 2 ,
97117 BytesProbieren Sie es online!
quelle
C (clang) ,
246223220210208193188 BytesCompiler-Flag
-DF=;for(i=0;b[i];i++
-DB=b[i]
(29 Byte)Unterstützung für gemischte Groß- und Kleinschreibung hinzugefügt.
Probieren Sie es online!
quelle
Pyth,
3130 BytesProbieren Sie es hier aus
Erläuterung
quelle
C (GCC) - 175 Bytes
Ungolfed
Probieren Sie es online!
quelle
Kotlin Android, 413 Bytes
Versuchen Sie es online
Erklärung Schritt 1 -> Liste der verschiedenen Zeichen auswählen. Schritt 2 -> Ermitteln Sie die Anzahl aller Zeichen in der Zeichenfolge und wählen Sie die maximale Zeichenfrequenz aus. Schritt 3 -> Unterschied in der Häufigkeit der Zeichen in Bezug auf die maximale Zeichenhäufigkeit ermitteln. Schritt 4 -> Zeichen in Bezug auf die Positionen in der Zeichenfolge platzieren. Viel Spaß beim Lösen!
quelle
C # (Visual C # Interactive Compiler) , 145 Byte
Probieren Sie es online!
quelle
PHP ,
185173170 BytesProbieren Sie es online!
Ungolfed (und nicht ternär und nicht optimiert).
quelle