Usando a solução de Marcog, encontrei um padrão que começa em n=16
. Para ilustrar isso, aqui estão as combinações de teclas para n=24
até n=29
, substituí ^ A por S (selecionar), ^ C por C (copiar) e ^ V por P (colar) para facilitar a leitura:
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
Após 4 As iniciais, o padrão ideal é selecionar, copiar, colar, colar, colar e repetir. Isso multiplicará o número de As por 4 a cada 5 pressionamentos de tecla. Se este padrão de 5 pressionamentos de tecla não puder consumir os pressionamentos de tecla restantes por conta própria, algum número de 4 padrões de pressionamento de tecla (SCPP) consumirá os pressionamentos de tecla finais, substituindo SCPPP (ou removendo uma das pastas) conforme necessário. Os 4 padrões de pressionamento de tecla multiplicam o total por 3 a cada 4 pressionamentos de tecla.
Usando esse padrão aqui está algum código Python que obtém os mesmos resultados da solução de marcog, mas é O (1) edit : Na verdade, é O (log n) devido à exponenciação, graças a IVlad por apontar isso.
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)
Calculando e3:
Sempre há entre 0 e 4 padrões SCPP no final da lista de pressionamentos de tecla, pois n % 5 == 4
há 4, n % 5 == 1
há 3, n % 5 == 2
há 2, n % 5 == 3
há 1 e n % 5 == 4
há 0. Isso pode ser simplificado para (4 - n) % 5
.
Calculando e4:
O número total de padrões aumenta em 1 sempre n % 5 == 0
que acontece que esse número aumenta exatamente n / 5
. Usando a divisão de piso, podemos obter o número total de padrões, o número total de e4
é o número total de padrões menos e3
. Para quem não //
está familiarizado com Python, é a notação preparada para o futuro para divisão de pisos.
^A
geralmente é "selecionar tudo",^C
é "copiar",^V
é "colar". Isso te dá uma ideia?