Challenges

+3
−0

# Introduction

What is the Caesar shift cipher (ROT$n$)? It's basically a cipher sequence that changes a letter's value from the number chosen. If we use ROT1 on "games", we get "hbnft". The basic interpretation of the cipher is iterating the value of a letter by 1 $n$ times. If you still don't understand, try using the ROT13 website.

# Challenge

Make a program that takes input of a number from 1 to 25, call it $n$, and takes input of a string. It could be any. Then, use $n$ to convert the string into ROT$n$ and output the result.

# Examples of inputs and outputs:

If $n = 4$ and string is "Hello, world.", we get Lipps, asvph.
If $n = 15$ and string is "trololol", we get igdadada.
If $n = 7$ and string is "gxoxk zhggt zbox rhn ni", we get never gonna give you up.
If $n = 24$ and string is "I want breakfast!", we get G uylr zpcyidyqr!.
If $n = 13$ and string is "guvf grkg vf fhf", we get this text is sus.

Shortest program wins.

Why does this post require moderator attention?
Why should this post be closed?

+3
−0

# JavaScript (Node.js), 67 60 bytes

o=>r=>Buffer(o).map(c=>c%32<26&c>64?(c%32+r)%26+c-c%32:c)+''


Try it online!

o=>r=>                 // Define a function taking o and r, and returning...
Buffer(o).map(c=>    // a Buffer of the charcodes of o, mapped to...
c%32<26&c>64       // If the character is alphabetical - charcode%32 is less than 26, charcode is >64
?                // Then
(c%32+r)%26+c-c%32 // Rot-n the character - Mod 32, add r, mod 26, add correct number depending on whether it's uppercase of lowercase.
:c)                // Else return the original string
) + ''                // Coerce to string


-7 thanks to Shaggy.

Why does this post require moderator attention?

Avoid the alias (1 comment)
+2
−0

# Ruby, 56 bytes

->s,i{a=[*?a..?z].rotate(i)*"";s.tr "A-Za-z",a.upcase+a}


Try it online!

tr is wildly useful here. Builds the tr string manually and replaces only the alphabets.

Why does this post require moderator attention?

+2
−0

# Python 3.8 (pre-release), 98 bytes

lambda s,n:''.join((c,chr((ord(c)+n-1-(o:=(64,96)[c.islower()]))%26+o+1))[c.isalpha()] for c in s)


Try it online!

Why does this post require moderator attention?

90 bytes (1 comment)
+2
−0

# Javascript (V8), 202 97 bytes

o=>r=>o.replace(/[a-zA-Z]/g,o=>String.fromCharCode((o<="Z"?90:122)>=(o=o.charCodeAt()+r)?o:o-26))


Try it online!

Since the text of input must be manually changed from the code, here is how to change it, Go to console.log(rot("Hello World")(4)); and change text between "" (String) into anything you want lke console.log(rot("Codidact Code Golf)(4)); and if you want to change ROT$n$, change the number between brackets into anything like console.log(rot("Codidact Code Golf)(13));.

Why does this post require moderator attention?

191 bytes (1 comment)
+1
−0

# C (clang), 161 bytes

i,j,k;main(){char *s;scanf("%i%[^\n]%*c",&i,s);for(j=0;j<strlen(s);j++){if(isalpha(s[j])){for(k=0;k<i;k++){if(s[j]==90||s[j]==122){s[j]-=26;}s[j]+=1;}}}puts(s);}


Try it online!

Why does this post require moderator attention?

+1
−0

# C (gcc), 112 bytes

Function solution.

p,*a;f(char*s,int n){a=strdup(s);for(s=a;*s;s++)(p=isalpha(*s)?(*s&96)^96?65:97:0)&&(*s=(*s-p+n)%26+p);puts(a);}


Try it online!

Explanation: The code takes a hard copy of the passed parameter and increases each character with the value, but only in case it's a letter.

isalpha determines if something is a letter, then *s & 0x60 masks out lower case, since those always have bits 0x60 set (and upper always have 0x40 but not 0x60).

For upper case, p gets set to 'A', for lower case it gets set to 'a', otherwise to zero. The equation to handle wrap-around *s=(*s-p+n)%26+p only gets executed if p is not zero and basically just "modulo away" results larger than 26 - the size of the alphabet.

Why does this post require moderator attention?

+0
−0

a=ord 'a'
n!c|isLetter c=chr((rem((ord c -a)+n) 26)+a)|True=c
f n=map (n!)


Try it online!

Why does this post require moderator attention?