En utilisant marcog la solution que j'ai trouvé un modèle qui commence à n=16
. Pour illustrer cela, voici les séquences de touches pour n=24
jusqu'à n=29
, j'ai remplacé ^) avec S (sélectionner), ^C, avec C (copier), et ^V avec P (coller) pour plus de lisibilité:
24: A,A,A,A,S,C,P,P,P,S,C,P,P,P,S,C,P,P,P,S,C,P,P,P
4 * 4 * 4 * 4 * 4 = 1024
25: A,A,A,A,S,C,P,P,P,S,C,P,P,S,C,P,P,S,C,P,P,S,C,P,P
4 * 4 * 3 * 3 * 3 * 3 = 1296
26: A,A,A,A,S,C,P,P,P,S,C,P,P,P,S,C,P,P,S,C,P,P,S,C,P,P
4 * 4 * 4 * 3 * 3 * 3 = 1728
27: A,A,A,A,S,C,P,P,P,S,C,P,P,P,S,C,P,P,P,S,C,P,P,S,C,P,P
4 * 4 * 4 * 4 * 3 * 3 = 2304
28: A,A,A,A,S,C,P,P,P,S,C,P,P,P,S,C,P,P,P,S,C,P,P,P,S,C,P,P
4 * 4 * 4 * 4 * 4 * 3 = 3072
29: A,A,A,A,S,C,P,P,P,S,C,P,P,P,S,C,P,P,P,S,C,P,P,P,S,C,P,P,P
4 * 4 * 4 * 4 * 4 * 4 = 4096
Après une période initiale de 4, le modèle idéal est de sélectionner, copier, coller, coller, coller et répétez. Cela permettra de multiplier le nombre de Que par 4 tous les 5 touches. Si cette 5 de frappe modèle ne peut pas consommer le reste des frappes sur son propre certains nombre de 4 modèles de frappe (SCPP) consomment de la finale de frappes, en remplacement de SCPPP (ou enlever un de la colle si nécessaire. Les 4 touches modèles de multiplier le total par 3 toutes les 4 touches.
L'utilisation de ce modèle, voici de code Python qui obtient les mêmes résultats que marcog de la solution, mais est O(1) edit: C'est en fait en O(log n) en raison de l'exponentiation, grâce à IVlad pour le pointage.
def max_chars(n):
if n <= 15:
return (0, 1, 2, 3, 4, 5, 6, 9, 12, 16, 20, 27, 36, 48, 64, 81)[n]
e3 = (4 - n) % 5
e4 = n // 5 - e3
return 4 * (4 ** e4) * (3 ** e3)
Le calcul de l'e3:
Il y a toujours entre 0 et 4, la SCPP modèles à la fin de la liste touche, pour n % 5 == 4
il y a 4, n % 5 == 1
y sont de 3, n % 5 == 2
il y a 2, n % 5 == 3
il y a 1, et n % 5 == 4
il y a 0. Cela peut être simplifié à l' (4 - n) % 5
.
Le calcul e4:
Le nombre total de modèles augmente de 1 à chaque fois qu' n % 5 == 0
, il s'avère que ce nombre augmente à exactement n / 5
. À l'aide de chaussée de la division, nous pouvons obtenir le nombre total de motifs, le nombre total de e4
le nombre total de modèles de moins e3
. Pour ceux qui ne connaissent Python, //
est l'avenir de la notation pour le plancher de la division.