El programa debe generar la letra que está más emparejada. Por ejemplo, si su programa recibió la siguiente cadena:
"Sally's friend Bobby searched for seashells."
debe salir L
porque "ll"
ocurre dos veces, lo cual es más frecuente que el otro par "bb"
.
Reglas:
- Si más de una letra tiene el primer lugar para las ocurrencias, escríbalas todas en orden alfabético (p. Ej.,
"Sally's friends Jimmy and Bobby rummaged for seashells."
Debería emitir ambasL
YM
[o"LM"
si lo desea] porque ambas aparecen con más frecuencia que otros pares). - Las letras que se triplican, cuadruplican, etc. cuentan como un par (por ejemplo,
"lll"
en"willless"
se cuenta como un solo par deL
). - Los pares de letras deben estar en una palabra (p. Ej.
"Sally's sociable friends Sammy and Bobby searched for fabulous seashells."
, Deben aparecerL
y noS
porque, a pesar de"ss"
tener más ocurrencias"ll"
, están separados por espacios). - Cuente solo letras del alfabeto inglés
- El caso no importa (por ejemplo,
"Ss"
es el mismo que"SS"
o"ss"
, y todos se cuentan como un par deS
).
Puede leer su opinión desde donde quiera. El código más corto gana.
'
etc.['l']
?Respuestas:
Pyth,
2625241615 bytesPruébelo en línea: demostración
Explicación:
fuente
eC
->s
guarda un byte.Bash + GNU coreutils, 133
Casos de prueba:
fuente
11ss11aa
-> SA)11ss11aa
-> AS :)sort -r
debe serlosort -rn
si tiene 10 o más letras pares.CJam,
2927 bytes¡Gracias a @Optimizer por jugar golf en 2 bytes!
Pruébelo en línea en el intérprete de CJam .
Cómo funciona
fuente
z~\)-,>
debería funcionar hasta donde puedo ver.Pyth -
23222120 bytesUtiliza la sustitución regexp para reemplazar todos los dos o más del alfabeto a un valor temporal, y utiliza el
.M
máximo para obtener todos los que tienen la mayor ocurrencia. Gracias a @Jakube por señalar la redundancia de ordenar y guardar un byte.Toma entradas de stdin y salidas como
['l', 'm']
stdout.Pruébelo en línea aquí .
fuente
C, 155
Algo diferente, sin expresiones regulares.
fuente
Python 2,
132143 bytesEjemplo de ejecución:
fuente
CJam, 37 bytes
Pruébalo en línea
Sin el apoyo de expresiones regulares, me temo que será difícil competir con Pyth. Esto es lo mejor que se me ocurrió en un primer pase.
Explicación:
fuente
Q (66)
Relativamente legible para arrancar:
fuente
R, 105 bytes
Esto lee una línea de texto de STDIN e imprime una lista delimitada por espacios de las letras emparejadas más comunes a STDOUT.
Ungolfed + explicación:
Ejemplos:
¡Puedes probarlo en línea !
fuente
toupper
si ignora el caso y usa perl en sugregexpr
. por ejemplocat(substr(names(b<-table(regmatches(s<-readline(),gregexpr("(\\w)\\1+",s,T,T))))[b==max(b)],1,1))
toupper
para asegurarse de todos modos.Rubí, 60
group_by
crea una estructura hash (diccionario) donde las claves son la salida del bloque y los valores son listas de letras que resultan en cada clave. En este caso, las claves son recuentos de 2+ corridas de una letra, sin distinción entre mayúsculas y minúsculas.max
compara cada[key,value]
tupla lexicográficamente, por lo que solo encuentra la clave máxima. Luego[1]
devuelve la parte de la lista de valores de la tupla.fuente
Python 2,
185 159153Toma la entrada como una cadena entre comillas.
fuente
C # 160 bytes
¿Dónde
s
está la entrada:fuente
rs, 146 bytes
¡Intentalo! ¡Por favor! Me llevó una eternidad hacer los botones incluso con el cuadro de salida en esa página ...
Bueno, esto fue bastante ... loco. La lógica aquí es un poco extraña; Solo publicaré una explicación si alguien pregunta. (Por supuesto, también dije que para una respuesta INTERCAL cuya explicación fue solicitada ... que nunca expliqué ...;)
fuente
JavaScript
156153fuente
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'')}
(los últimos 2 '' son realmente backticks, & # 96Bash + textutils (grep, sed), 111 caracteres
Bash + awk (en lugar de sed), 97 caracteres
para probarlo, primero asigne s
fuente
R, 98 bytes
Muy similar a la solución de Alex, pero utiliza una sustitución en lugar de una coincidencia para determinar letras consecutivas. La exploración se usa para obtener la entrada y también para dividir el resultado de la sustitución en espacios.
Un par de pruebas
fuente