Étant donné une chaîne contenant uniquement des lettres, affichez la longueur de la plus longue série de lettres alphabétiques consécutives que le mot contient, où l'ordre n'a pas d'importance. Un exemple d'algorithme peut trier le mot, supprimer les doublons, puis afficher la longueur de la plus longue exécution.
Cas de test
watch -> 1
stars -> 3
antidisestablishmentarianism -> 3
backdoor -> 4
a -> 1
tutorials -> 4
Par exemple, antidisestablishmentarianism
contient les lettres abdehilmnstr
. Les parcours les plus longs sont lmn
etrst
, tous deux de longueur 3.
Remarques
Vous pouvez prendre toutes les lettres minuscules, toutes les majuscules ou les majuscules en entrée, mais la casse ne peut pas coder les informations sur le mot (c'est-à-dire que vous ne pouvez pas mettre les premiers n
caractères en majuscule oùn
est la longueur de la plus longue exécution).
C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
rst
- unifier, trier et obtenir la plus longue exécution consécutive. Pouvons-nous prendre l'entrée comme un tableau de caractères?Réponses:
Gelée ,
10 9 8 76 octetsEssayez-le en ligne!
9 utilisait la méthode de Sok :
ṢQẆẇƇØaṪL
Comment?
la source
R ,
4443 octetsFonctionne sur un tableau de caractères minuscules. Modifier: il est passé du test des valeurs vraies à la multiplication par le T / F pour un octet.
Essayez-le en ligne!
Est-ce qu'un codage de longueur d'exécution sur les lettres qui sont dans les caractères fournis retourne ensuite la valeur maximale pour les vrais.
la source
APL (Dyalog Classic) ,
109 octets-1 octet grâce à H.PWiz
Essayez-le en ligne!
⍞
saisit une chaîne⎕a
est l'alphabet anglais majuscule⎕a∊⍞
un vecteur booléen de longueur 26 - quelles lettres apparaissent dans la chaîne?⊆⍨
former des vecteurs de 1 consécutifs≢⍉↑
mélanger dans une matrice, transposer et retourner sa hauteur - trouver efficacement la longueur du vecteur le plus long de 1sla source
⌈/≢¨
->≢⍉↑
Perl 6 , 41 octets
Essaye-le
Étendu:
Étant donné
'stars'
,.ords.sort.squish Z-0..*
reviendrait(97,113,113,113)
la source
Haskell , 35 octets
Essayez-le en ligne!
Haskell , 50 octets
Essayez-le en ligne!
la source
JavaScript (Node.js) , 51 octets
La casse de la chaîne d'entrée n'a pas d'importance.
Essayez-le en ligne!
Comment?
Nous convertissons d'abord la chaîne d'entrée en un masque de bits de lettres rencontrées avec:
Le décalage au niveau du bit est traité avec un modulo implicite 32.
Exemple:
Nous `` réduisons '' ensuite les exécutions de 1 consécutifs dans le masque binaire en le répétant ET `` avec une copie décalée à gauche de lui-même jusqu'à ce que tous les bits soient effacés:
Le nombre de lettres consécutives dans l'ordre alphabétique est le nombre d'itérations du processus ci-dessus. D'où la fonction récursive:
la source
Pyth , 9 octets
L'entrée est supposée être une chaîne en minuscules. Essayez-le en ligne ici ou vérifiez tous les cas de test en même temps ici .
la source
y
à la place de.:
.MATL , 10 octets
L'entrée est en minuscules.
Essayez-le en ligne! Ou vérifiez tous les cas de test .
Cela utilise un mélange des approches de @ Sundar (ancienne) et @ ngn .
Explication
Considérez la saisie
'tutorial'
comme exemple.la source
Python 3 , 55 octets
Essayez-le en ligne!
Python 2 , 58 octets
Essayez-le en ligne!
Python 2 , 63 octets
Essayez-le en ligne!
la source
f=lambda s:s and-~f({*s}&{c+1for c in s})or 0
?05AB1E , 6 octets
1 octet sauvé grâce à Adnan : prise des sous-chaînes contiguës, puis tri par longueur (→ en utilisant le jeu de puissance intégré à la place (
Œ...é
)æ
).Essayez-le en ligne!
Aussi 6 octets
Sauvegardé 2 octets, encore une fois grâce à Adnan : utiliser à la
ASå
placeêÇ¥Θ
, supprimant ainsi la nécessité d'incrémenter le maximum à la fin. Consultez l'historique des révisions pour comparer les comportements des deux méthodes.Essayez-le en ligne!
Comment ça marche
J'aime les défis comme celui-ci qui mènent à une variété d'approches différentes.
la source
êæAÃ`g
et le deuxième programme peut être joué au golfASåγOZ
.ASå
truc.TSQL (Microsoft SQL Server), 206 octets
Pour la saisie, utilisez l'
DECLARE
instruction suivante avant le code:On s'attend à ce que l'entrée soit dans le même cas (le haut ou le bas n'a pas d'importance, mais le casse mixte ne fonctionnerait pas).
Non golfé:
Explication:
Divise la chaîne en une ligne pour chaque caractère (adapté de /programming//a/27623321/1474939 ) dans le
CTE
cte.Puis, recherche des séries de lettres consécutives en les convertissant en code ASCII dans le
Runs
cte.Enfin, il sélectionne la plus grande exécution et rend compte dans l'instruction select.
la source
C (gcc) ,
5856 octetsSauvegardé 2 octets grâce à @gastropner
Utilise la même approche que ma réponse Node.js . La casse de la chaîne d'entrée n'a pas d'importance.
Essayez-le en ligne!
Commenté
la source
1<<*s
encapsule ou est-ce un comportement standard?1<<32
résultats dans0
et émet un avertissement de taille du type de données.C (gcc) , 100 octets
Essayez-le en ligne!
Explication
Essayez-le en ligne!
la source
MATL ,
1210 octetsEssayez-le en ligne!
Explication:
91:
- Créez la liste des nombres de 1 à 91. 91 est le caractère «[», qui vient après «Z». Ainsi, cela crée effectivement la liste de tous les caractères de '\ x1' à '['. (Nous voulons principalement ceux de la gamme ['A'-1:' Z '+ 1], mais avoir le reste ne fait pas de mal et nécessite moins de bytecount.)w
- Entrée implicite, placez l'entrée en haut de la pile (supposez 'TUTORIELS')X-
- Réglez la différence. Cela ne laisse que les caractères qui n'ont pas été trouvés dans la chaîne d'entrée, dans leur ordre d'origine («stable»). Empiler:' !"#$%&'()*+,-./0123456789:;<=>?@BCDEFGHJKMNPQVWXYZ['
d
- Différence entre les éléments successifs de cette liste. Empiler:[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>
- Obtenez le maximum de ces différences, c'est-à-dire le nombre maximum d'alphabets consécutifs manquants dans la différence définie.q
- Décrémenter pour obtenir le nombre réel de caractèresPlus âgée:
12 octets
Essayez-le en ligne!
la source
K (ngn / k) ,
1715 octetsEssayez-le en ligne!
-
est là uniquement pour convertir les caractères en nombres (peu importe s'ils sont négatifs){
}\
applique une fonction jusqu'à la convergence, préservant les résultats intermédiairesx+1
ajouter 1 à chaque numérox
^
"sans" - la liste de gauche sans éléments apparaissant dans la liste de droitex^x^x+1
signifiex
intersecté avecx+1
1_
déposer le premier élément#
compterla source
#1_{x^x^x+1}\-
?Retina 0.8.2 , 54 octets
Essayez-le en ligne! Le lien inclut des cas de test. Explication:
Triez les lettres dans l'ordre.
Dédupliquez les lettres.
Dupliquez chaque lettre sur des lignes distinctes.
Diminuez le premier de chaque paire.
Si cela correspond maintenant au personnage précédent, réunissez-les à nouveau.
Comptez les longueurs de toutes les courses.
Triez-les dans l'ordre numérique inverse.
Prenez le premier (le plus grand).
la source
J, 16 octets
-7 octets grâce à FrownyFrog
Essayez-le en ligne!
explication
la source
]
place de~.@/:~
L'alphabet est déjà trié, vous n'avez donc pas besoin de trier l'entrée et de ne conserver que les éléments uniques. TIO - 18 octetsC (gcc) ,
9892 octetsMerci à Jonathan Frech pour les suggestions.
Uniquement en majuscules.
Essayez-le en ligne!
la source
k;
à la fin. Le retour implicite de gcc est un effet secondaire de l'affectation de variable qui est apparemment exécuté comme dernière étape de votre boucle for.Japt
-h
, 9 octetsInsensible à la casse, prend l'entrée sous la forme d'une chaîne ou d'un tableau de caractères.
Essayez-le ou exécutez plusieurs tests (la deuxième ligne sert de remplacement pour l'
-h
indicateur afin que l'indicateur puisse être utilisé pour traiter plusieurs entrées à la place)Explication
la source
-1
, s'il vous plaît?Perl 5, 68 octets
Essayez-le en ligne .
Non golfé:
la source
C (gcc) ,
666563 octetsSuppose que l'entrée ne contient que des lettres minuscules. Tout d'abord, il boucle sur la chaîne et définit les bits dans un entier en fonction des lettres visibles. Ensuite, il compte la séquence la plus longue de 1 bit dans l'entier.
Edit:
a
est global, il sera donc initialisé à 0 lors du premier appel. La deuxième boucle s'assure qu'elle est remise à 0 avant de revenir. Par conséquent, nous pouvons éviter de le réinitialiser manuellement.Essayez-le en ligne!
la source
Perl 5, 62 + 2 (
-nF
indicateur) = 64 octetsEssayez-le en ligne .
Perl 5, 68 octets
Essayez-le en ligne .
la source
-pF
et-MList::Util+(max)
pour arriver à 56: Essayez-le en ligne!-MList::Util=max
ajoute 16 octets au score du résultat.-MList::Util+(max)
-pF
, ou similaire. codegolf.meta.stackexchange.com/a/14339/9365SQLite 265
Non golfé:
la source
Brachylog ,
141312 octetsEssayez-le en ligne!
Assez lent pour qu'il ne se termine pas pour l'entrée "antidisestablishmentarianism" sur TIO. Relativement beaucoup plus rapide pour +1 octet:
13 octets
Essayez-le en ligne!
Utiliser à la
dos
place de⊇p
: S est une sous-d
chaîneo
éditées
répliquée de l'entrée, au lieu d'une simple permutation d'un sous-ensemble.la source
Haskell , 87 octets
Essayez-le en ligne!
Attend des caractères minuscules
Explication:
la source
Python 2 , 95 octets
Essayez-le en ligne!
la source
Pyth - 11 octets
L'entrée doit être entourée de guillemets. Si non autorisé:
Pyth - 12 octets
Explication:
la source
Kotlin , 97 octets
Essayez-le en ligne!
la source
Java 8, 77 octets
Port de Arnauld de C réponse . Essayez-le en ligne ici .
Non golfé:
la source
> <> , 63 octets
Lit les caractères en minuscules de stdin, envoie un nombre à stdout.
Essayez-le en ligne!
la source