[Música tocando] ZAMYLA CHAN: Vamos implementar Vigenere, um pouco mais garantir a cifra de César. O texto simples é cifrada usando uma string em vez de um número inteiro. Cada caractere alfabético em texto simples for desviado por um letra na palavra-chave. Neste exemplo, a palavra-chave ohai, ó corresponde a um desvio de 14; H para uma mudar de 7; A, mudança de 0, e I um deslocamento de 8. Se você já implementou com sucesso o seu Cifra de César, que vai ser um bom quadro a partir do qual você pode implementar Vigenere. Como você pode ver, a execução de um Vigenere cipher com um único personagem como um palavra-chave é a mesma coisa como uma cifra de César. As mesmas etapas se aplicam a Vigenère como fizeram em César. A palavra-chave é a segunda linha de comando argumento, para que você acessá-lo com argv1. Então você precisa verificar se a chave palavra é realmente tudo alfabética. Aqui é onde está alpha pode vir a calhar. Se você tiver uma chave válida, você começa a força do usuário e, em seguida, você está pronto para cifrar. A fórmula cifra de Vigenère é semelhante a fórmula César, só que agora k torna-se k índice j, indicando o j-th letra da palavra-chave. Vamos passar por este processo. Digamos que você queria mandar uma mensagem para o seu acidente, eu gosto de você, mas você não quero que todos saibam. Então você usa uma cifra de Vigenère com o palavra-chave panda, porque, bem, você também como pandas. A primeira letra, I, será deslocado por p, dando-x, 15 cartas depois que eu, porque 15 p é o 16 letra do alfabeto. A próxima letra do texto simples é um espaço, de modo que não será deslocado. E o índice da palavra-chave não vai mudar. Em seguida, a próxima letra em texto simples é l, desviado por um, o que não se desloque a letra de texto simples em tudo, porque a é 0 a letra do alfabeto. O processo continua, o avanço da caráter palavra-chave cada vez que há uma letra no texto simples. Uma vez que a última letra a palavra-chave é alcançado, a palavra-chave envolve e mudanças para a próxima planície letra texto p. X lvne noh. Como romântico. Assim, dado um personagem, como você se converter em que o correspondente cifra turno? Tente comparar o ASCII valores para a mudança. Talvez você possa encontrar uma relação entre as cartas e os seus índice alfabético usando matemática ASCII. Você pode adicionar ou subtrair um caráter de outro para obter o resultado desejado? Lembre-se que as mudanças para maiúscula e letras minúsculas são as mesmas. Então talvez você vai precisar identificar dois fórmulas semelhantes para representar o mudança, um para uma letra maiúscula caráter palavra-chave, e um para uma minúscula. Em seguida, lembre-se que a palavra-chave avanços somente se o personagem em texto simples é uma carta e que o caso da planície texto deve ser preservada. Então, se olharmos para a fórmula para o Deslocamento Vigenere, existem duas índice variáveis, i e j. Um mantém o controle da situação na planície texto, e a outra a posição a palavra-chave. Mas o seu texto simples pode ser muito maior que sua palavra-chave, caso em que o seu Índice de palavras-chave precisa envolver em torno de volta para o início de uma palavra-chave. Como você faz isso? Vamos olhar para trás, o operador módulo. Modulo é definido é o resto da divisão de dois números. Mas o que é uma prática real utilização de módulo? Bem, digamos que você tem um grande grupo de pessoas, e você precisa se dividir em três grupos. Uma maneira de dividir as pessoas em grupos é tê-los contar off. É o número do grupo de grupos número 1, 2, e 3. A primeira pessoa vai dizer um, na próxima 2, o próximo 3. A pessoa que vai dizer após 1, porque não é um grupo 4, e o contagem começa a partir daí. Você pode usar o modulo de fazer a mesma coisa. Desta vez, os grupos serão ser o grupo 0, 1 e 2. A primeira pessoa, número 1 módulo 3, é 1. Pessoa 2 módulo 3 é 2. Pessoa 3 módulo 3 é 0. Pessoa 4 modulo 3 dá 1, e assim os grupos pode envolver em torno. Então, se você tomar um índice e modulo que por um índice de tamanho máximo, o resultado nunca será maior do que ou igual ao tamanho, o que significa que podem aumentar o índice de tanto quanto você gostaria. E enquanto você Modulo o índice algum número, você não vai obter um número maior do que isso. Portanto, temos 10 pessoas em vez de 5, e eles todos são atribuídos a grupos número 0, 1 ou 2. Tente aplicar isso para envolver todo o palavra-chave, exceto em vez de triagem pessoas em números de grupo você deseja que o índice da palavra-chave para que você possa se o personagem certo para o deslocar sem exceder o comprimento da corda. Com isso, você tem o seu Vigenere cifra. Meu nome é Zamyla, e este é o CS50.