aboutsummaryrefslogtreecommitdiff
path: root/challenge-097/ulrich-rieke/cpp/ch-1.cpp
diff options
context:
space:
mode:
authorPaulo Custodio <pauloscustodio@gmail.com>2021-01-26 21:40:08 +0000
committerPaulo Custodio <pauloscustodio@gmail.com>2021-01-26 21:40:08 +0000
commit536dafb989fad8da4c2df0df1bfc22eb2fac3706 (patch)
treec2b39c685cca7cc2ed3b4ab4e91e75f5b9a71fdd /challenge-097/ulrich-rieke/cpp/ch-1.cpp
parente36daeee6e93355383ad3a1c3fc43271f9a357d7 (diff)
parentc34bb5d7bd7fce08e8311a0f527ce7fbd69e4dae (diff)
downloadperlweeklychallenge-club-536dafb989fad8da4c2df0df1bfc22eb2fac3706.tar.gz
perlweeklychallenge-club-536dafb989fad8da4c2df0df1bfc22eb2fac3706.tar.bz2
perlweeklychallenge-club-536dafb989fad8da4c2df0df1bfc22eb2fac3706.zip
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'challenge-097/ulrich-rieke/cpp/ch-1.cpp')
-rw-r--r--challenge-097/ulrich-rieke/cpp/ch-1.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/challenge-097/ulrich-rieke/cpp/ch-1.cpp b/challenge-097/ulrich-rieke/cpp/ch-1.cpp
new file mode 100644
index 0000000000..d69135b4cc
--- /dev/null
+++ b/challenge-097/ulrich-rieke/cpp/ch-1.cpp
@@ -0,0 +1,35 @@
+#include <iostream>
+#include <cstdlib>
+#include <string>
+#include <algorithm>
+#include <iterator>
+
+char findCipher( char c, int shift ) {
+ static const std::string alphabet {"ABCDEFGHIJKLMNOPQRSTUVWXYZ"} ;
+ std::string mapped { alphabet.substr(26 - shift) } ;
+ std::reverse ( mapped.begin( ) , mapped.end( ) ) ;
+ mapped.append( alphabet.substr(0 , 26 - shift ) ) ;
+ if ( c == ' ' )
+ return ' ' ;
+ else {
+ auto found = std::find( alphabet.begin( ) , alphabet.end( ) , c );
+ return mapped[ static_cast<int>(std::distance(alphabet.begin( ), found))] ;
+ }
+}
+
+int main( int i , char* argv[ ] ) {
+ if ( i != 3 ) {
+ std::cerr << "usage: challenge097 <capital letter string> <leftshift>!\n" ;
+ return 1 ;
+ }
+ int leftshift = std::atoi( argv[ 2 ] ) ;
+ int realshift = leftshift % 26 ;
+ std::string plaintext( argv[ 1 ] ) ;
+ int len = plaintext.length( ) ;
+ std::string ciphertext ;
+ for ( char letter : plaintext ) {
+ ciphertext.push_back( findCipher ( letter , realshift ) ) ;
+ }
+ std::cout << ciphertext << std::endl ;
+ return 0 ;
+}