Le programme doit sortir la lettre qui est le plus jumelée. Par exemple, si votre programme a reçu la chaîne suivante:
"Sally's friend Bobby searched for seashells."
il doit sortir L
car il "ll"
se produit deux fois, ce qui est plus fréquent que l'autre paire "bb"
.
Règles:
- Si plus d'une lettre a la 1ère place pour les occurrences, alors sortez-les toutes par ordre alphabétique (par exemple, vous
"Sally's friends Jimmy and Bobby rummaged for seashells."
devriez sortir les deuxL
ETM
[ou"LM"
si vous voulez] car elles se produisent toutes les deux plus fréquemment que les autres paires.) - Les lettres triplées, quadruplées, etc. comptent pour une paire (par exemple,
"lll"
dans"willless"
est compté pour une seule paireL
.) - Les paires de lettres doivent être composées d'un seul mot (par exemple, elles
"Sally's sociable friends Sammy and Bobby searched for fabulous seashells."
doivent sortirL
et non pasS
parce qu'elles ont"ss"
plus d'occurrences"ll"
qu'elles sont séparées par des espaces). - Ne compter que les lettres de l'alphabet anglais
- La casse n'a pas d'importance (par exemple,
"Ss"
c'est la même chose que"SS"
ou"ss"
, et tous sont comptés comme une paire deS
.)
Vous pouvez lire vos commentaires où bon vous semble. Le code le plus court gagne.
'
etc.?['l']
?Réponses:
Pyth,
2625241615 octetsEssayez-le en ligne: Démonstration
Explication:
la source
eC
->s
enregistre un octet.Bash + GNU coreutils, 133
Testcases:
la source
11ss11aa
-> SA)11ss11aa
-> AS :)sort -r
êtresort -rn
si vous avez 10 lettres paires ou plus.CJam,
2927 octetsMerci à @Optimizer d'avoir joué au golf sur 2 octets!
Essayez-le en ligne dans l' interpréteur CJam .
Comment ça fonctionne
la source
z~\)-,>
devrait fonctionner aussi loin que je peux voir.Pyth -
23222120 octetsUtilise la substitution regexp pour remplacer tous les deux ou plus de l'alphabet par une valeur temporaire, et utilise
.M
aximal pour obtenir toutes les occurrences les plus élevées. Merci à @Jakube d'avoir souligné la redondance du tri et de la sauvegarde d'un octet.Prend les entrées de stdin et les sorties comme
['l', 'm']
stdout.Essayez-le en ligne ici .
la source
C, 155
Quelque chose de différent, pas de regexps.
la source
Python 2,
132143 octetsExemple d'exécution:
la source
CJam, 37 octets
Essayez-le en ligne
Sans prise en charge des expressions régulières, je crains qu'il soit difficile de rivaliser avec Pyth. C'est le meilleur que j'ai trouvé lors d'un premier passage.
Explication:
la source
Q (66)
Relativement lisible pour démarrer:
la source
R, 105 octets
Cela lit une ligne de texte de STDIN et imprime une liste délimitée par des espaces des lettres appariées les plus courantes à STDOUT.
Non golfé + explication:
Exemples:
Vous pouvez l' essayer en ligne !
la source
toupper
si vous ignorez la casse et utilisez perl dans votregregexpr
. par exemplecat(substr(names(b<-table(regmatches(s<-readline(),gregexpr("(\\w)\\1+",s,T,T))))[b==max(b)],1,1))
toupper
pour s'assurer de toute façon.Rubis, 60
group_by
crée une structure de hachage (dictionnaire) où les clés sont la sortie du bloc et les valeurs sont des listes de lettres qui aboutissent à chaque clé. Dans ce cas, les clés correspondent à plus de 2 exécutions d'une lettre, sans tenir compte de la casse.max
compare chaque[key,value]
tuple lexicographiquement, donc il trouve juste la clé maximale.[1]
Retourne ensuite la partie liste de valeurs du tuple.la source
Python 2,
185 159153Prend l'entrée comme une chaîne entre guillemets.
la source
C # 160 octets
Où
s
est l'entrée:la source
rs, 146 octets
Essayez! S'il vous plaît! Il m'a fallu une éternité pour faire les boutons même avec la boîte de sortie sur cette page ...
Eh bien, c'était assez ... fou. La logique ici est un peu bizarre; Je ne posterai une explication que si quelqu'un le demande. (Bien sûr, j'ai aussi dit que pour une réponse INTERCAL dont l'explication était demandée ... que je n'ai jamais expliqué ...;)
la source
JavaScript
156153la source
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'')}
(les 2 derniers '' sont vraiment des backticks, & # 96Bash + textutils (grep, sed), 111 caractères
Bash + awk (au lieu de sed), 97 caractères
pour le tester, attribuez d'abord s
la source
R, 98 octets
Très similaire à la solution d'Alex, mais utilise une substitution plutôt qu'une correspondance pour déterminer les lettres consécutives. Le scan est utilisé pour obtenir l'entrée et également pour diviser le résultat de la substitution sur les espaces.
Quelques tests
la source