From 6ba6c33e22bc92f23a9d3b5fc60a981b1e2ebeff Mon Sep 17 00:00:00 2001 From: Arun35 Date: Sun, 24 May 2026 03:23:07 +0530 Subject: [PATCH 1/9] Add files via upload --- utilities/Caesar-cipher/caesar_ciphar.py | 63 ++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 utilities/Caesar-cipher/caesar_ciphar.py diff --git a/utilities/Caesar-cipher/caesar_ciphar.py b/utilities/Caesar-cipher/caesar_ciphar.py new file mode 100644 index 0000000..d09ab6c --- /dev/null +++ b/utilities/Caesar-cipher/caesar_ciphar.py @@ -0,0 +1,63 @@ +print("šŸ” Caesar Cipher Encoder & Decoder šŸ”") +print("Encrypt and decrypt messages using Caesar Cipher\n") + + +def encrypt(text, shift): + + result = "" + + for char in text: + + if char.isupper(): + result += chr((ord(char) - 65 + shift) % 26 + 65) + + elif char.islower(): + result += chr((ord(char) - 97 + shift) % 26 + 97) + + else: + result += char + + return result + + +def decrypt(text, shift): + + return encrypt(text, -shift) + + +while True: + + print("=" * 50) + print("šŸŽÆ Choose an option:") + print("1ļøāƒ£ Encrypt Text") + print("2ļøāƒ£ Decrypt Text") + print("3ļøāƒ£ Exit") + print("=" * 50) + + choice = input("\nāž”ļø Enter your choice (1-3): ") + + if choice == '1': + + text = input("\nšŸ“ Enter text to encrypt: ") + shift = int(input("šŸ”‘ Enter shift value: ")) + + encrypted = encrypt(text, shift) + + print(f"\nšŸ” Encrypted Text: {encrypted}\n") + + elif choice == '2': + + text = input("\nšŸ“Ø Enter text to decrypt: ") + shift = int(input("šŸ”‘ Enter shift value: ")) + + decrypted = decrypt(text, shift) + + print(f"\nšŸ“ Decrypted Text: {decrypted}\n") + + elif choice == '3': + + print("\nšŸ‘‹ Thanks for using Caesar Cipher! Goodbye!\n") + break + + else: + print("\nāŒ Invalid choice! Please select 1-3.\n") \ No newline at end of file From 19ed9daebe22b44f2ae6d2fccbec2dd00a1330a4 Mon Sep 17 00:00:00 2001 From: Arun35 Date: Sun, 24 May 2026 03:24:22 +0530 Subject: [PATCH 2/9] Add files via upload --- web-app/js/projects/ceasar-ciphar.js | 412 +++++++++++++++++++++++++++ 1 file changed, 412 insertions(+) create mode 100644 web-app/js/projects/ceasar-ciphar.js diff --git a/web-app/js/projects/ceasar-ciphar.js b/web-app/js/projects/ceasar-ciphar.js new file mode 100644 index 0000000..21e449a --- /dev/null +++ b/web-app/js/projects/ceasar-ciphar.js @@ -0,0 +1,412 @@ +function getCaesarCipherHTML() { + return ` +
+

šŸ” Caesar Cipher Encoder & Decoder

+

Encrypt and decrypt messages using Caesar Cipher

+ +
+
+ + + + +
+ +
+ + +
+ +
+ +
+ + +
+
+ +
+ + +
+ +
+

Output:

+
+

Your result will appear here...

+
+ +
+ +
+

šŸ”” How the shift works:

+
+
+
+
+ + + `; +} + + +function initCaesarCipher() { + const textBox = document.getElementById('cipherInput'); + const goBtn = document.getElementById('cipherBtn'); + const clearBtn = document.getElementById('clearBtn'); + const copyBtn = document.getElementById('copyBtn'); + const outputBox = document.getElementById('cipherOutput'); + const shiftNumber = document.getElementById('shiftInput'); + const shiftSlide = document.getElementById('shiftSlider'); + const encryptRadio = document.getElementById('modeEncrypt'); + const decryptRadio = document.getElementById('modeDecrypt'); + const theLabel = document.getElementById('inputLabel'); + const previewDiv = document.getElementById('shiftPreview'); + + const ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; + + function encryptText(text, shift) { + let result = ''; + + for (const ch of text) { + if (ch >= 'A' && ch <= 'Z') { + result += String.fromCharCode(((ch.charCodeAt(0) - 65 + shift) % 26 + 26) % 26 + 65); + } else if (ch >= 'a' && ch <= 'z') { + result += String.fromCharCode(((ch.charCodeAt(0) - 97 + shift) % 26 + 26) % 26 + 97); + } else { + result += ch; + } + } + + return result; + } + + function decryptText(text, shift) { + return encryptText(text, -shift); + } + + function buildAlphabetRow(label, getChar, className) { + const row = document.createElement('div'); + row.className = 'alphabet-row'; + + const labelEl = document.createElement('span'); + labelEl.className = 'row-label'; + labelEl.textContent = label; + row.appendChild(labelEl); + + for (let i = 0; i < 26; i++) { + const box = document.createElement('span'); + box.className = `letter-box ${className}`; + box.textContent = getChar(i); + row.appendChild(box); + } + + return row; + } + + function showPreview(shift) { + previewDiv.innerHTML = ''; + previewDiv.appendChild(buildAlphabetRow('Original:', i => ALPHABET[i], 'plain')); + previewDiv.appendChild(buildAlphabetRow(`Shift +${shift}:`, i => ALPHABET[(i + shift) % 26], 'cipher')); + } + + function setMode(isEncrypt) { + theLabel.textContent = isEncrypt ? 'šŸ“ Enter Text to Encrypt:' : 'šŸ“Ø Enter Text to Decrypt:'; + textBox.placeholder = isEncrypt ? 'Type your message here...' : 'Paste the encrypted text here...'; + textBox.value = ''; + outputBox.innerHTML = '

Your result will appear here...

'; + copyBtn.style.display = 'none'; + goBtn.textContent = isEncrypt ? 'šŸ” Encrypt Message' : 'šŸ“ Decrypt Message'; + } + + function syncSlider(val) { + const clamped = Math.min(25, Math.max(1, val)); + shiftNumber.value = clamped; + shiftSlide.value = clamped; + showPreview(clamped); + } + + function showError(msg) { + outputBox.innerHTML = `

āŒ ${msg}

`; + copyBtn.style.display = 'none'; + } + + function showResult(text) { + outputBox.innerHTML = ''; + const p = document.createElement('p'); + p.className = 'result-text'; + p.textContent = text; + outputBox.appendChild(p); + copyBtn.style.display = 'inline-block'; + copyBtn.dataset.result = text; + } + + encryptRadio.addEventListener('change', () => setMode(true)); + decryptRadio.addEventListener('change', () => setMode(false)); + + shiftSlide.addEventListener('input', () => syncSlider(parseInt(shiftSlide.value))); + shiftNumber.addEventListener('input', () => syncSlider(parseInt(shiftNumber.value))); + + goBtn.addEventListener('click', () => { + const text = textBox.value; + const shift = parseInt(shiftNumber.value); + + if (!text.trim()) return showError('Please enter some text first!'); + if (isNaN(shift) || shift < 1 || shift > 25) return showError('Please enter a shift value between 1 and 25!'); + + const result = encryptRadio.checked ? encryptText(text, shift) : decryptText(text, shift); + showResult(result); + }); + + clearBtn.addEventListener('click', () => { + textBox.value = ''; + outputBox.innerHTML = '

Your result will appear here...

'; + copyBtn.style.display = 'none'; + }); + + copyBtn.addEventListener('click', () => { + navigator.clipboard.writeText(copyBtn.dataset.result).then(() => { + const original = copyBtn.textContent; + copyBtn.textContent = 'āœ… Copied!'; + setTimeout(() => copyBtn.textContent = original, 1500); + }); + }); + + showPreview(3); +} \ No newline at end of file From 787faf97f05685cc2dbc675bac27f24697723217 Mon Sep 17 00:00:00 2001 From: Arun35 Date: Sun, 24 May 2026 03:27:21 +0530 Subject: [PATCH 3/9] Add caesar-cipher to project functions and initializers --- web-app/js/projects.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/web-app/js/projects.js b/web-app/js/projects.js index 04ba8fd..6150066 100644 --- a/web-app/js/projects.js +++ b/web-app/js/projects.js @@ -39,6 +39,7 @@ function getProjectHTML(projectName) { '2048-game': () => get2048GameHTML(), 'productive-pet': () => getProductivePetHTML(), 'color-palette': () => getColorPaletteHTML(), + 'caesar-cipher': () => getCaesarCipherHTML(), }; try { @@ -3276,7 +3277,8 @@ function initializeProject(projectName) { 'simon-says': 'initSimonSays', '2048-game': 'init2048Game', 'color-palette': 'initColorPalette', - 'math-quiz': 'initMathQuiz' + 'math-quiz': 'initMathQuiz', + 'caesar-cipher': 'initCaesarCipher' }; const initializerName = initializers[projectName]; From a3d0f7b90a832bc57ee6c2514b5cf50c4aa94b07 Mon Sep 17 00:00:00 2001 From: Arun35 Date: Sun, 24 May 2026 03:54:33 +0530 Subject: [PATCH 4/9] Add Caesar Cipher project card to index.html --- web-app/index.html | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/web-app/index.html b/web-app/index.html index 5c12c92..0b2e0bf 100644 --- a/web-app/index.html +++ b/web-app/index.html @@ -1203,6 +1203,12 @@

BlackJack21

Calculator

Your mathematical companion!

+
+ Caesar Cipher +
+

Caesar Cipher

+

Encrypt & decrypt with a shift!

+
Coin Flip
From 30247d8764cfb87084a37313186cca87f1c64313 Mon Sep 17 00:00:00 2001 From: Arun35 Date: Sun, 24 May 2026 03:56:37 +0530 Subject: [PATCH 5/9] Add files via upload --- web-app/assets/banners/caesar-cipher.jpg | Bin 0 -> 14428 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 web-app/assets/banners/caesar-cipher.jpg diff --git a/web-app/assets/banners/caesar-cipher.jpg b/web-app/assets/banners/caesar-cipher.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e1d9124f9f95fd39242f8deebd85ac3a44f4e99d GIT binary patch literal 14428 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

P^^O`%CRrE*k=EY40h8MdRptRxg_YwkG< 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 Date: Sun, 24 May 2026 15:10:01 +0530 Subject: [PATCH 6/9] Add script for Caesar cipher project --- web-app/index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/web-app/index.html b/web-app/index.html index 0b2e0bf..06c7733 100644 --- a/web-app/index.html +++ b/web-app/index.html @@ -1627,6 +1627,7 @@

Stay Updated

+ -
- -
- Game -

BlackJack 21

-

Beat the dealer with strategy!

-
šŸƒ 52 cardsšŸŽÆ 21
-
-
- -
- Game -

Rock Paper Scissors

-

Battle against the computer!

-
āš”ļø Best of 5
-
-
- -
- Game -

Dice Rolling

-

Roll the dice with 3D animation!

-
šŸŽ² 2 dice
-
-
- -
- Game -

Coin Flip

-

Heads or tails with spinning animation!

-
šŸŖ™ 50/50
-
-
- -
- Game -

Number Guessing

-

Guess the secret number!

-
šŸŽÆ 1–100
-
-
- -
- Game -

Hangman

-

Classic word-guessing game!

-
šŸ“ 6 lives
-
-
- -
- Game -

Word Scramble

-

Unscramble words before time runs out!

-
šŸ”¤ 3 rounds
-
-
- -
- Game -

FLAMES Game

-

Discover your relationship status!

-
šŸ’– 6 outcomes
-
-
- -
- Game -

Dots & Boxes AI

-

Challenge friends or AI in strategy!

-
🧠 AI mode
-
-
- -
- Game -

Password Forge

-

Survive evolving firewall password rules!

-
šŸ” 10 levels
-
-
- -
- Game -

Math Quiz

-

MCQ quiz with lives and difficulty levels!

-
🧮 4 levels
-
-
- -
- Game -

Snake Game

-

Classic snake — eat, grow, survive!

-
šŸ ClassicšŸ† High score
-
-
- -
- Game -

Emoji Memory Game

-

Test your memory with matching emojis!

-
🧩 16 tiles
-
-
- -
- Game -

Whack-a-Mole

-

Hit the moles before they disappear!

-
šŸ”Ø 30s
-
-
- -
- Game -

Flappy Game

-

Dodge the incoming balls and survive!

-
🐤 Endless
-
-
- -
- Game -

2048 Game

-

Combine tiles and reach 2048!

-
šŸ”¢ 4Ɨ4
-
-
- -
- Game -

Tic Tac Toe

-

Classic 3-in-a-row with AI!

-
āŒ 3Ɨ3
-
- - -
- -
- Math -

Fibonacci Series

-

Generate Fibonacci sequences!

-
šŸ”¢ Spiral viz
-
-
- -
- Math -

AP/GP/AGP/HP Recognizer

-

Identify progression types from any sequence.

-
šŸ“Š 4 types
-
-
- -
- Math -

Pascal's Triangle

-

Beautiful hexagon visualization!

-
šŸ”ŗ 12 rows
-
-
- -
- Math -

Armstrong Numbers

-

Check special number properties!

-
šŸ”¢ 3 digits
-
-
- -
- Math -

Calculator

-

Your mathematical companion!

-
🧮 Full-featured
-
-
- -
- Math -

Collatz Conjecture

-

Explore the 3n+1 problem!

-
šŸ”¢ Graph viz
-
-
- -
- Math -

Prime Analyzer

-

All-in-one prime number toolkit!

-
šŸ”¢ Factorizer
-
-
- -
- Math -

Projectile Motion

-

Calculate TOF, Hmax, Range!

-
šŸš€ Physics
-
-
- -
- Math -

Coordinate to Polar

-

Transform Cartesian (x, y) into polar (r, Īø).

-
šŸ“ Geometry
-
-
- -
- Math -

Derivative Calculator

-

Compute 1st/nth polynomial derivatives.

-
šŸ“ˆ Calculus
-
- - -
- -
- Utility -

Morse Code

-

Translate with lights & sound!

-
šŸ“” Audio
-
-
- -
- Utility -

Tower of Hanoi

-

Solve the classic puzzle!

-
šŸ—¼ 3 pegs
-
-
- -
- Utility -

Number Converter

-

Convert Dec, Bin, Oct, and Hex!

-
šŸ”¢ 4 bases
-
-
- -
- Utility -

Typing Speed Tester

-

Test your WPM and accuracy!

-
āŒØļø WPM
-
-
- -
- Utility -

Color Palette Suggestor

-

Generate palettes + CSS snippets for any mood!

-
šŸŽØ CSS ready
-
-
- -
- Utility -

Productivity Pet

-

A virtual pet that grows as you work!

-
🐾 Pomodoro
-
-
- -