Das Programm muss den Buchstaben ausgeben, der am häufigsten gekoppelt ist. Wenn Ihr Programm beispielsweise die folgende Zeichenfolge erhalten hat:
"Sally's friend Bobby searched for seashells."
es muss ausgegeben werden, L
weil "ll"
es zweimal auftritt, was häufiger ist als das andere Paar "bb"
.
Regeln:
- Wenn mehr als ein Buchstabe den 1. Platz für Vorkommen hat, geben Sie alle in alphabetischer Reihenfolge aus (z. B.
"Sally's friends Jimmy and Bobby rummaged for seashells."
sollten beideL
UND- Zeichen ausgegeben werdenM
(oder"LM"
wenn Sie möchten), da beide häufiger vorkommen als andere Paare.) - Buchstaben, die verdreifacht, vervierfacht usw. werden, zählen als ein Paar (z. B. wird
"lll"
in"willless"
als nur ein Paar gezähltL
.) - Buchstabenpaare müssen aus einem Wort bestehen (zB
"Sally's sociable friends Sammy and Bobby searched for fabulous seashells."
sollten ausgegeben werdenL
und nicht,S
weil sie trotz"ss"
mehr Vorkommen als"ll"
durch Leerzeichen getrennt sind.) - Zähle nur Buchstaben aus dem englischen Alphabet
- Groß- / Kleinschreibung spielt keine Rolle (z. B.
"Ss"
ist das Gleiche wie"SS"
oder"ss"
, und alle werden als ein Paar gezähltS
.)
Sie können Ihre Eingaben von jedem beliebigen Ort aus lesen. Kürzester Code gewinnt.
'
usw. enthalten?['l']
?Antworten:
Pyth,
2625241615 BytesProbieren Sie es online aus: Demonstration
Erläuterung:
quelle
eC
->s
spart ein Byte.Bash + GNU-Coreutils, 133
Testfälle:
quelle
11ss11aa
-> SA)11ss11aa
-> AS :)sort -r
brauchen,sort -rn
wenn Sie 10 oder mehr Buchstabenpaare haben.CJam,
2927 BytesVielen Dank an @Optimizer für das Golfen mit 2 Bytes!
Probieren Sie es online im CJam-Interpreter aus .
Wie es funktioniert
quelle
z~\)-,>
sollte soweit ich sehen kann funktionieren.Pyth -
23222120 BytesVerwendet die reguläre Ausdrücke-Ersetzung, um alle zwei oder mehr Buchstaben durch einen temporären Wert zu ersetzen, und verwendet die
.M
Option "Aximal", um alle Buchstaben mit dem höchsten Vorkommen zu erhalten. Vielen Dank an @Jakube für den Hinweis auf die Redundanz beim Sortieren und Speichern eines Bytes.Übernimmt Eingaben von stdin und Ausgaben
['l', 'm']
von stdout.Probieren Sie es hier online aus .
quelle
C 155
Etwas anderes, keine regulären Ausdrücke.
quelle
Python 2,
132143 BytesBeispiellauf:
quelle
CJam, 37 Bytes
Probieren Sie es online aus
Ohne Unterstützung durch reguläre Ausdrücke ist es leider schwierig, mit Pyth zu konkurrieren. Dies ist das Beste, was ich mir bei einem ersten Durchgang ausgedacht habe.
Erläuterung:
quelle
Q (66)
Relativ lesbar zum Booten:
quelle
R, 105 Bytes
Dies liest eine Textzeile aus STDIN und druckt eine durch Leerzeichen getrennte Liste der häufigsten gepaarten Buchstaben an STDOUT.
Ungolfed + Erklärung:
Beispiele:
Sie können es online ausprobieren !
quelle
toupper
wenn Sie Groß - und Kleinschreibung ignorieren und Perl in Ihrem verwendengregexpr
. zBcat(substr(names(b<-table(regmatches(s<-readline(),gregexpr("(\\w)\\1+",s,T,T))))[b==max(b)],1,1))
toupper
sowieso dafür sorgen.Rubin, 60
group_by
Erstellt eine Hash (Wörterbuch) -Struktur, in der die Schlüssel die Ausgabe des Blocks sind und die Werte Buchstabenlisten sind, die zu jedem Schlüssel führen. In diesem Fall handelt es sich bei den Schlüsseln um Zählungen von mehr als 2 Buchstabenläufen, bei denen die Groß- und Kleinschreibung nicht berücksichtigt wird.max
vergleicht jedes[key,value]
Tupel lexikografisch, sodass nur der maximale Schlüssel gefunden wird. Dann[1]
gibt die Werteliste Teil des Tupels.quelle
Python 2,
185 159153Nimmt Eingaben in Anführungszeichen.
quelle
C # 160 Bytes
Wo
s
ist die Eingabe:quelle
Rs, 146 Bytes
Versuch es! Bitte! Es hat ewig gedauert, bis ich die Schaltflächen auch mit dem Ausgabefeld auf dieser Seite erstellt habe ...
Nun, das war ziemlich ... verrückt. Die Logik hier ist irgendwie komisch; Ich werde nur eine Erklärung posten, wenn jemand danach fragt. (Natürlich habe ich auch gesagt, dass ich für eine INTERCAL-Antwort, deren Erklärung angefordert wurde, nie erklärt habe ...;)
quelle
JavaScript
156153quelle
f[s]?f[s]+1:1
->-~f[s]
Count only letters from the English alphabet
f=x=>{x.toUpperCase(f={},a=0,o).replace(/([A-Z])\1+/g,(m,s)=>a<(m=f[s]=-~f[s])?(a=m,o=[s]):a>m?0:o.push(s));alert(o.sort().join'')}
(die letzten 2 '' sind wirklich Backticks, & # 96Bash + Textutils (grep, sed), 111 Zeichen
Bash + awk (statt sed), 97 Zeichen
Um es zu testen, weisen Sie zuerst s zu
quelle
R, 98 Bytes
Sehr ähnlich zu Alex 'Lösung, verwendet jedoch eher eine Substitution als eine Übereinstimmung, um aufeinanderfolgende Buchstaben zu bestimmen. Scan wird verwendet, um die Eingabe abzurufen und das Substitutionsergebnis auf Leerzeichen aufzuteilen.
Ein paar Tests
quelle