Dada una cadena que contiene solo letras, genera la longitud de la ejecución más larga de letras alfabéticas consecutivas que contiene la palabra, donde el orden no importa. Un algoritmo de ejemplo puede ordenar la palabra, eliminar duplicados y luego generar la duración de la ejecución más larga.
Casos de prueba
watch -> 1
stars -> 3
antidisestablishmentarianism -> 3
backdoor -> 4
a -> 1
tutorials -> 4
Por ejemplo, antidisestablishmentarianism
contiene las letras abdehilmnstr
. Las carreras más largas son lmn
y rst
, ambas de longitud 3.
Notas
Puede tomar todas las letras minúsculas, mayúsculas o mayúsculas como entrada, pero el caso no puede codificar información sobre la palabra (es decir, no puede poner en n
mayúscula los primeros caracteres donde n
está la longitud de la ejecución más larga).
Este es el código de golf , por lo que la respuesta más corta en bytes gana.
rst
: uniquify, ordenar y obtener la ejecución consecutiva más larga. ¿Podemos tomar la entrada como una matriz de caracteres?Respuestas:
Gelatina ,
10 9 8 76 bytesPruébalo en línea!
9 estaba usando el método de Sok :
ṢQẆẇƇØaṪL
¿Cómo?
fuente
R ,
4443 bytesFunciona en una matriz de caracteres en minúsculas. Editar: cambió de probar los valores verdaderos a multiplicar por el T / F para un byte.
Pruébalo en línea!
Hace una codificación de longitud de ejecución en letras que están en los caracteres suministrados y luego devuelve el valor máximo para las verdades.
fuente
APL (Dyalog Classic) ,
109 bytes-1 byte gracias a H.PWiz
Pruébalo en línea!
⍞
ingresa una cadena⎕a
es el alfabeto en mayúscula⎕a∊⍞
un vector booleano de longitud 26: ¿qué letras aparecen en la cadena?⊆⍨
forman vectores de 1s consecutivos≢⍉↑
mezclar en una matriz, transponer y devolver su altura; efectivamente, encuentre la longitud del vector más largo de 1sfuente
⌈/≢¨
->≢⍉↑
Perl 6 , 41 bytes
Pruébalo
Expandido:
Dado
'stars'
,.ords.sort.squish Z-0..*
volvería(97,113,113,113)
fuente
Haskell , 35 bytes
Pruébalo en línea!
Haskell , 50 bytes
Pruébalo en línea!
fuente
JavaScript (Node.js) , 51 bytes
El caso de la cadena de entrada no importa.
Pruébalo en línea!
¿Cómo?
Primero convertimos la cadena de entrada en una máscara de bits de letras encontradas con:
El desplazamiento a nivel de bits se procesa con un módulo implícito 32.
Ejemplo:
Luego 'reducimos' las corridas de 1 consecutivos en la máscara de bits Y repetidamente Y 'con una copia desplazada a la izquierda de sí mismo hasta que se borren todos los bits:
El número de letras consecutivas en orden alfabético es el número de iteraciones del proceso anterior. De ahí la función recursiva:
fuente
Pyth , 9 bytes
Se supone que la entrada es una cadena en minúsculas. Pruébelo en línea aquí , o verifique todos los casos de prueba a la vez aquí .
fuente
y
en lugar de.:
.MATL , 10 bytes
La entrada está en minúsculas.
Pruébalo en línea! O verificar todos los casos de prueba .
Utiliza una combinación de los enfoques de @ Sundar (antiguo) y @ ngn .
Explicación
Considere la entrada
'tutorial'
como un ejemplo.fuente
Python 3 , 55 bytes
Pruébalo en línea!
Python 2 , 58 bytes
Pruébalo en línea!
Python 2 , 63 bytes
Pruébalo en línea!
fuente
f=lambda s:s and-~f({*s}&{c+1for c in s})or 0
:?05AB1E , 6 bytes
Œ...é
æ
Pruébalo en línea!
También 6 bytes
Ahorré 2 bytes, nuevamente gracias a Adnan : usando en su
ASå
lugarêÇ¥Θ
, eliminando así la necesidad de incrementar el máximo al final. Consulte el historial de revisiones para comparar los comportamientos de los dos métodos.Pruébalo en línea!
Cómo funcionan
Me gustan los desafíos como este que conducen a una variedad de enfoques diferentes.
fuente
êæAÃ`g
y el segundo programa se puede jugar golfASåγOZ
.ASå
trucoTSQL (Microsoft SQL Server), 206 bytes
Para la entrada, use la siguiente
DECLARE
declaración antes del código:Se espera que la entrada sea todo lo mismo (mayúsculas o minúsculas no importa, pero las mayúsculas y minúsculas no funcionarían).
Sin golf:
Explicación:
Divide la cadena en una fila para cada carácter (adaptado de /programming//a/27623321/1474939 ) en el
CTE
cte.Luego, encuentra corridas de letras consecutivas convirtiéndolas al código ASCII en
Runs
cte.Por último, selecciona la ejecución más grande e informa en la declaración de selección.
fuente
C (gcc) ,
5856 bytesGuardado 2 bytes gracias a @gastropner
Utiliza el mismo enfoque que mi respuesta Node.js . El caso de la cadena de entrada no importa.
Pruébalo en línea!
Comentado
fuente
1<<*s
ajusta o es un comportamiento estándar?1<<32
genera0
y se emite una advertencia de tamaño de tipo de datos.C (gcc) , 100 bytes
Pruébalo en línea!
Explicación
Pruébalo en línea!
fuente
MATL ,
1210 bytesPruébalo en línea!
Explicación:
91:
- Cree la lista de números del 1 al 91. 91 es el carácter '[', que viene después de 'Z'. Entonces, esto crea efectivamente la lista de todos los caracteres desde '\ x1' hasta '[' '. (Queremos principalmente aquellos en el rango ['A'-1:' Z '+ 1], pero tener el resto no hace daño y necesita menos recuento).w
- Entrada implícita, llevar la entrada a la parte superior de la pila (suponga 'TUTORIALES')X-
- Establecer diferencia. Esto deja solo los caracteres que no se encontraron en la cadena de entrada, en su orden original ('estable'). Apilar:' !"#$%&'()*+,-./0123456789:;<=>?@BCDEFGHJKMNPQVWXYZ['
d
- Diferencia entre elementos sucesivos en esa lista. Apilar:[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 2 1 2 1 5 1 1 1 1 1]
X>
- Obtenga el máximo de esas diferencias, es decir, el número máximo de alfabetos consecutivos que faltan en la diferencia establecida.q
- Disminuir para obtener el recuento de caracteres realMás viejo:
12 bytes
Pruébalo en línea!
fuente
K (ngn / k) ,
1715 bytesPruébalo en línea!
-
solo existe para convertir los caracteres en números (no importa si son negativos){
}\
aplica una función hasta la convergencia, preservando resultados intermediosx+1
agregue 1 a cada número enx
^
"sin": la lista de la izquierda sin elementos que aparecen en la lista de la derechax^x^x+1
significax
intersectado conx+1
1_
soltar el primer elemento#
contarfuente
#1_{x^x^x+1}\-
?Retina 0.8.2 , 54 bytes
Pruébalo en línea! El enlace incluye casos de prueba. Explicación:
Ordena las letras en orden.
Deduplicar las letras.
Duplica cada letra en líneas separadas.
Disminuye el primero de cada par.
Si esto ahora coincide con el personaje anterior, únelos nuevamente.
Cuente las longitudes de todas las carreras.
Ordénelos en orden numérico inverso.
Tome el primero (el más grande).
fuente
J, 16 bytes
-7 bytes gracias a FrownyFrog
Pruébalo en línea!
explicación
fuente
]
lugar de~.@/:~
El alfabeto ya está ordenado, por lo que no necesita ordenar la entrada y mantener solo los elementos únicos. TIO - 18 bytesC (gcc) ,
9892 bytesGracias a Jonathan Frech por las sugerencias.
Solo mayúsculas.
Pruébalo en línea!
fuente
k;
al final. El retorno implícito de gcc es un efecto secundario de la asignación de variables que aparentemente se ejecuta como un último paso en su ciclo for.Japt
-h
, 9 bytesNo distingue entre mayúsculas y minúsculas, toma la entrada como una cadena o una matriz de caracteres.
Pruébelo o ejecute varias pruebas (la segunda línea sirve como un reemplazo para el
-h
indicador, por lo que el indicador puede usarse para procesar múltiples entradas)Explicación
fuente
-1
, por favor?Perl 5, 68 bytes
Pruébalo en línea .
Sin golf:
fuente
C (gcc) ,
666563 bytesAsume que la entrada solo contiene letras minúsculas. Primero, recorre la cadena y establece bits en un número entero según las letras que se ven. A continuación, cuenta la racha más larga de 1 bits en el entero.
Editar:
a
es global, por lo que se inicializará a 0 en la primera llamada. El segundo bucle asegura que se restablezca a 0 antes de regresar. Por lo tanto, podemos evitar reiniciarlo manualmente.Pruébalo en línea!
fuente
Perl 5, 62 + 2 (
-nF
bandera) = 64 bytesPruébalo en línea .
Perl 5, 68 bytes
Pruébalo en línea .
fuente
-pF
y-MList::Util+(max)
para llegar a 56: ¡ Pruébelo en línea!-MList::Util=max
agrega 16 bytes a la puntuación del resultado.-MList::Util+(max)
-pF
, o similar. codegolf.meta.stackexchange.com/a/14339/9365SQLite 265
Sin golf:
fuente
Brachylog ,
141312 bytesPruébalo en línea!
Lo suficientemente lento como para que no termine la entrada "antidisestablishmentarianism" en TIO. Uno relativamente más rápido para +1 byte:
13 bytes
Pruébalo en línea!
Usar
dos
en lugar de⊇p
: S es und
eduplicated so
rteds
ubstring de la entrada, en lugar de alguna permutación de algún subconjunto.fuente
Haskell , 87 bytes
Pruébalo en línea!
Espera caracteres en minúsculas
Explicación:
fuente
Python 2 , 95 bytes
Pruébalo en línea!
fuente
Pyth - 11 bytes
La entrada debe estar entre comillas. Si no está permitido:
Pyth - 12 bytes
Explicación:
fuente
Kotlin , 97 bytes
Pruébalo en línea!
fuente
Java 8, 77 bytes
La respuesta C del puerto de Arnauld . Pruébelo en línea aquí .
Sin golf:
fuente
> <> , 63 bytes
Lee caracteres en minúsculas de stdin, genera un número en stdout.
Pruébalo en línea!
fuente