Percursos
/
Julia
Julia
/
Exercícios
/
Cifra rotativa
Cifra rotativa

Cifra rotativa

Fácil

Instruções

Cria uma implementação da cifra rotacional, também conhecida por cifra de César.

A cifra de César é uma cifra de deslocamento simples que se baseia em transpor todas as letras do alfabeto através de uma chave inteira entre 0 e 26. Usar uma chave 0 ou 26 produz sempre o mesmo resultado, devido à aritmética modular. A letra é deslocada tantas posições quantas o valor da chave.

A notação geral das cifras rotacionais é ROT + <key>. A cifra rotacional mais usada é a ROT13.

Uma ROT13 no alfabeto latino seria assim:

Plain:  abcdefghijklmnopqrstuvwxyz
Cipher: nopqrstuvwxyzabcdefghijklm

É mais forte do que a cifra Atbash porque tem 27 chaves possíveis, das quais 25 são utilizáveis.

O texto cifrado é escrito com a mesma formatação da entrada, incluindo espaços e pontuação.

Exemplos

  • ROT5 omg dá trl
  • ROT0 c dá c
  • ROT26 Cool dá Cool
  • ROT13 The quick brown fox jumps over the lazy dog. dá Gur dhvpx oebja sbk whzcf bire gur ynml qbt.
  • ROT13 Gur dhvpx oebja sbk whzcf bire gur ynml qbt. dá The quick brown fox jumps over the lazy dog.

Este é um bom exercício para experimentar literais de string não padrão e metaprogramação.

Podes encontrar uma breve introdução aos literais de string não padrão neste artigo de blog. Encontras um guia detalhado de metaprogramação no manual.

Podes expandir a tua solução ao adicionares a funcionalidade descrita abaixo.

O Bónus A exige apenas os conhecimentos básicos descritos no artigo de blog. O Bónus B exige um conhecimento consideravelmente mais aprofundado de metaprogramação em Julia.

Bónus A

Implementa um literal de string que funciona como ROT13 sobre a string:

R13"abcdefghijklmnopqrstuvwxyz" == "nopqrstuvwxyzabcdefghijklm"

Bónus B

Implementa literais de string R<i>, i = 0, ..., 26, que deslocam a string para cada valor de i:

R0"Hello, World!" == "Hello, World!"
R4"Testing 1 2 3 testing" == "Xiwxmrk 1 2 3 xiwxmrk"
R13"abcdefghijklmnopqrstuvwxyz" == "nopqrstuvwxyzabcdefghijklm"

Fonte

WikipediaO link abre numa nova janela ou separador
Editar via GitHub A ligação abre numa nova janela ou separador
Julia Exercism

Estás pronto para começar Cifra rotativa?

Inscreve-te no Exercism para aprenderes e dominares Julia com 35 conceitos128 exercícios, e mentoria humana real, tudo grátis.