Zamyla Chan: Imos intensificar a nosa xogo coa cifra de Vigenère. A cifra é Vigenère moi semellante ao César, excepto no Caesar pasamos en un único enteiro como a nosa clave. En Vigenère imos para pasar nunha palabra chave. Entón, se eu quería cambiar o cifrado este é CS 50 por ohai, entón iso significa que cada letra ohai servirá como a clave, e eu estou indo a ciclo longo a palabra clave para o meu turno facendo que o texto cifrado moito máis difícil de descifrar. Que significa para desprazar pola contrasinal? Ben, a palabra chave é unha cadea onde cada letra corresponde algunha desprazamento enteiro. Así, o S corresponde a unha chave de 14, h para unha chave de 7, un ten unha chave de 0, de xeito que non cambiaría nada, e entón eu ten unha chave de 8. Digamos que eu execute Vigenère A co texto que é CS50 ben, que sería simplemente darlle me unha cadea inalterada. Teña en conta que isto equivale a executando Caesar cunha chave de cero. De feito, Vigenère execución cun único carácter sería equivalente a executar César co mesmo número enteiro. Todo ben, entón, xa que son tan semellantes que tiña Realmente recomendo que se quere pode simplemente copiar o Caesar código no seu código Vigenère. As cousas van cambiar, pero polo menos ten algúns backbone que pode traballar con. Porque os todos son os mesmos que queremos para obter a clave, obter o texto, encipher que texto, e, a continuación, imprimir-la. Así como Caesar a clave vai ser pasado como a segunda liña de comandos argumento contido no índice argv 1, pero é diferente esta vez porque debe ser alfabética. Entón, necesitamos iterado sobre todo carácter único en que a clave que o usuario pasado e garantir que cada personaxe é alfabético a fin de continuar. Xa que fixemos iso, entón nós Pode obter a secuencia do usuario, así como fixemos antes. E agora, chegamos ao corazón do problema para Vigenère, que é como César, como descubrir o estándar de Nomes e ecuación, e cifrar todo o texto simple. Entón, vai notar que o ecuación para o cambio Vigenère é moi semellante ao César. A única diferenza é que en vez de unha única variable k antes, agora k ten un subscrito, indicando letra j da clave. Imos examinar un exemplo. Digamos que quería pasar un segredo mensaxe sobre a súa paixón, eu gosto de ti. Ben, para a súa chave se escoller algo que o seu sabe esmagamento sabe que lle gusta, pandas. Todo ben, entón como é que imos cambiar isto? Ben, nós temos o noso índice de texto simple. Esta é a primeira letra e así é o índice para a nosa clave que está na p, o primeiro carta na nosa palabra panda. Entón, cambiando I p connosco x dá, entón avanzar o índice de texto simple. Isto nos leva a un espazo. Agora, o carácter de espazo non é alfabético, o que significa que, para que, transferencias á dereita para o texto cifrado, poñemos un espazo alí, e non avanzar o índice para a nosa clave. Entón, aínda estamos en p neste momento. Nós ir á seguinte Índice na nosa texto simple. E agora, porque iso é carta, a minúscula l, cambiamos que ata o seguinte contido na nosa clave. Cal é un, o cal é un cero cambio de modo que só se fai un l no noso texto cifrado. Entón, nós avanzamos tanto o texto, e o índice de clave porque alfabética. Polo tanto, despois, seguir esa ata chegar ao e en como. Todo ben, entón vai notar neste apuntan que, en termos de índices de clave, chegamos ao final de a palabra panda, entón o que acontece cando chegar ao seguinte letra alfabética no texto orixinal? Ben, todo o que pasa é que nós participa en torno do inicio, o primeiro índice da nosa clave. Así, entón cambiamos que y por p a darnos n. E entón, seguimos rematar a codificación noso texto para x lvne Noh. A partir deste exemplo, I amosa que só avanzar á seguinte letra na palabra clave o personaxe en texto simple é unha carta de xeito que o isalpha función virá a cadra aquí. E, como con Caesar, queremos preservar o caso, isupper e islower. Entón, engade pouco no seu pseudocódigo. Entón, como imos descubrir os cambios clave? Ben, se recorda a nosa discusión en índices alfabéticos o Caesar problema, é moi semellante. Onde A corresponde a un ASCII valor de 65, pero un cambio de 0, e, a continuación, a última letra no alfabeto, Z, corresponde a un desvío de 25. Vai notar que o cambio é o mesmo ou non letra é maiúscula ou minúscula. OK, entón agora que sabe como descubrir o desprazamento numérico que corresponde a un único carácter imos voltar a nosa ecuación. Porque temos dous diferentes subscritos aquí, I e J, iso é un indicio de que queremos manter o control tanto a nosa posición no texto orixinal así como a nosa posición na clave, entón estas son dúas variables distintas que queremos manter un soto. Agora, a posición na nosa texto aumentará a cada vez, de xeito que vai ser un pouco máis para adiante ao contrario da posición a palabra clave, que sabemos que ten que involucrar en torno a, e ás veces incrementar, ás veces, estar na mesma. Entón, como é que imos aplicar a función para implicar a índice para a contrasinal? Vou usar o exemplo conta de fóra. Contando off é un xeito popular para dividir a xente en grupos. Digamos que eu tiña 5 persoas e eu quería dividídelos en tres grupos, ben, entón eu ía comezar contando off. A primeira persoa faría dicir que eu son o número equipo dun, a seguinte persoa sería número do equipo dous, o número do equipo terceira persoa tres. Agora, eu só quero tres grupos, de xeito a cuarta persoa sería realmente comezar a principios e dicir: ben, eu son o número un do equipo, así como, ea próxima persoa sería equipo o número dous. E, a partir de aí, poden, a continuación, separar nos seus grupos. Entón, como eu podería usar modulo para me axudar a aplicar Esta conta off involucrar en torno a función? Ben, a primeira persoa número 1, modificación 3 dános 1. 2 mod 3 dános 2, e 3 mod 3 dános 0. A cuarta persoa, número 4, 3 mod dános 1, e logo 5 mod 3 dános 2. Entón, vai notar que, a pesar de o número de persoas que eu teño aumenta, e está por riba 3, dende que eu estou modding por 3 Sempre obter números 0, 1 e 2. Nunca ir máis que 3. Polo tanto, aínda que tivese 10 a xente, entón todas aquelas persoas aínda estaría dentro dos grupos 1, 2, ou 0. Entón, agora sabemos que se temos un grupo de 5 e mod todo de 3, entón non vai superar grupos 0, 1, ou 2. Entón, nós nunca imos conseguir un grupo número que é igual a 3 ou superior. Así, mesmo se eu engadir cinco persoas, entón todos eles aínda serían asignados a grupos 0, 1, ou 2, porque eu estou modding por 3. Eu nunca vou excede este límite. OK, entón imos ver se podemos aplicar este concepto de utilización de módulo para implicar a números de grupo e aplicar Lo para Vigenère onde queremos usar modulo para involucrar o índice para as palabras clave. Aínda que nós estamos incrementando o índice sempre Quere estar seguro de que sempre participa en torno ao inicio nunca superando a lonxitude da corda. OK, entón eu sei que podería ser un pouco esmagadora. Hai moito máis que facer nesta p set. Entón, asegúrese de que escribe unha boa pseudocódigo para si mesmo que comprende e que comeza o traballo feito. Proba e abordar todas as liña única forma independente descubrir todos os pequenos pequenas pezas do puzzle antes de poñelas xuntos. Asegúrese de que pode obter a clave da liña de comandos e garantir que é alfabético, obter o texto do usuario, e despois na enciphering, comproba se saber como cifrar unha única letra, e logo, avanzar na secuencia enteira con toda a liña de contorno funcións. Por último, pode imprimir o texto cifrado. O meu nome é un Zamyla, e esta foi Vigenère.