O programa deve exibir a letra que está mais emparelhada. Por exemplo, se seu programa recebeu a seguinte string:
"Sally's friend Bobby searched for seashells."
deve sair L
porque "ll"
ocorre duas vezes, o que é mais frequente que o outro par "bb"
.
Regras:
- Se mais de uma letra tiver o primeiro lugar para ocorrências, imprima todas elas em ordem alfabética (por exemplo,
"Sally's friends Jimmy and Bobby rummaged for seashells."
deve gerarL
AND eM
[ou,"LM"
por favor], porque ambas ocorrem com mais frequência do que outros pares.) - Letras que são triplicadas, quadruplicadas, etc. contam como um par (por exemplo,
"lll"
in"willless"
é contado como apenas um par deL
). - Os pares de letras devem estar em uma palavra (por exemplo,
"Sally's sociable friends Sammy and Bobby searched for fabulous seashells."
devem ser exibidosL
e nãoS
porque, apesar de"ss"
terem mais ocorrências do que"ll"
, eles são separados por espaços). - Contar apenas letras do alfabeto inglês
- O caso não importa (por exemplo,
"Ss"
é o mesmo que"SS"
ou"ss"
, e todos são contados como um par deS
.)
Você pode ler sua opinião de onde quiser. O menor código vence.
'
etc?['l']
?Respostas:
Pitão,
2625241615 bytesExperimente online: Demonstração
Explicação:
fonte
eC
->s
salva um byte.Bash + coreUtil GNU, 133
Casos de teste:
fonte
11ss11aa
-> SA)11ss11aa
-> AS :)sort -r
precisa estarsort -rn
se tiver 10 ou mais cartas emparelhadas.CJam,
2927 bytesObrigado ao @Optimizer por jogar fora 2 bytes!
Experimente online no intérprete CJam .
Como funciona
fonte
z~\)-,>
deve funcionar tanto quanto eu posso ver.Pitão -
23222120 bytesUsa substituição regexp para substituir todos os dois ou mais do alfabeto por um valor temporário e usa
.M
aximal para obter todos os que têm a maior ocorrência. Agradecemos ao @Jakube por apontar a redundância de classificar e salvar um byte.Toma a entrada de stdin e as saídas gostam
['l', 'm']
de stdout.Experimente online aqui .
fonte
C, 155
Algo diferente, sem regexps.
fonte
Python 2,
132143 bytesExemplo de execução:
fonte
CJam, 37 bytes
Experimente online
Sem o apoio da expressão regular, receio que seja difícil competir com Pyth. Este é o melhor que descobri no primeiro passe.
Explicação:
fonte
Q (66)
Relativamente legível para inicializar:
fonte
R, 105 bytes
Isso lê uma linha de texto de STDIN e imprime uma lista delimitada por espaço das letras emparelhadas mais comuns para STDOUT.
Ungolfed + explicação:
Exemplos:
Você pode experimentá-lo online !
fonte
toupper
caso ignore o caso e use o perl no seugregexpr
. por exemplocat(substr(names(b<-table(regmatches(s<-readline(),gregexpr("(\\w)\\1+",s,T,T))))[b==max(b)],1,1))
toupper
para garantir isso de qualquer maneira.Ruby, 60
group_by
cria uma estrutura de hash (dicionário) em que as chaves são a saída do bloco e os valores são listas de letras que resultam em cada chave. Nesse caso, as chaves são contagens de 2 ou mais execuções de uma letra, sem distinção entre maiúsculas e minúsculas.max
compara cada[key,value]
tupla lexicograficamente, para encontrar a chave máxima. Em seguida,[1]
retorna a parte da lista de valores da tupla.fonte
Python 2,
185 159153Recebe a entrada como uma string entre aspas.
fonte
C # 160 bytes
Onde
s
está a entrada:fonte
rs, 146 bytes
Tente! Por favor! Levei uma eternidade para fazer os botões, mesmo com a caixa de saída nessa página ...
Bem, isso foi bastante ... louco. A lógica aqui é meio estranha; Só vou postar uma explicação se alguém perguntar. (Claro, eu também disse que para uma resposta INTERCAL cuja explicação foi solicitada ... que eu nunca expliquei ...;)
fonte
JavaScript
156153fonte
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'')}
(os últimos 2 '' são realmente backticks, & # 96Bash + textutils (grep, sed), 111 caracteres
Bash + awk (em vez de sed), 97 caracteres
para testá-lo, primeiro atribua s
fonte
R, 98 bytes
Muito semelhante à solução de Alex, mas usa uma substituição em vez de uma correspondência para determinar letras consecutivas. A digitalização é usada para obter a entrada e também para dividir o resultado da substituição em espaços.
Alguns testes
fonte