Ένα δύσκολο πρόβλημα κωδικοποίησης JavaScript

Σε αυτό το σεμινάριο, θα δημιουργήσουμε ένα απλό πρόγραμμα κρυπτογράφησης χρησιμοποιώντας JavaScript ES6. Αυτό το πρόγραμμα θα μετατοπίσει κάθε γράμμα σε μια συμβολοσειρά τρεις θέσεις προς τα δεξιά σύμφωνα με τον πίνακα ASCII, θα αντιστρέψει τη συμβολοσειρά και στη συνέχεια θα μετατοπίσει το δεύτερο μισό της συμβολοσειράς μία θέση προς τα αριστερά στο ASCII.

Ας αρχίσουμε!

Μετατόπιση γραμμάτων σε ASCII

Αρχικά, πρέπει να μετατοπίσουμε κάθε γράμμα τρεις θέσεις προς τα δεξιά στο ASCII. Μπορούμε να το κάνουμε αυτό μετατρέποντας κάθε γράμμα στην τιμή ASCII του χρησιμοποιώντας τη μέθοδο charCodeAt, προσθέτοντας 3 και στη συνέχεια μετατρέποντάς το ξανά σε χαρακτήρα χρησιμοποιώντας τη μέθοδο String.fromCharCode.

function shiftRight(str) {
    let shiftedStr = '';
    for (let char of str) {
        let ascii = char.charCodeAt(0);
        shiftedStr += String.fromCharCode(ascii + 3);
    }
    return shiftedStr;
}

Σε αυτή τη συνάρτηση, επαναλαμβάνουμε κάθε χαρακτήρα στη συμβολοσειρά, τον μετατρέπουμε στην τιμή ASCII, προσθέτουμε 3 και μετά τον μετατρέπουμε ξανά σε χαρακτήρα.

Αντιστροφή της χορδής

Στη συνέχεια, πρέπει να αντιστρέψουμε τη συμβολοσειρά. Μπορούμε να το κάνουμε αυτό χρησιμοποιώντας τις μεθόδους split, reverse και join.

function reverseStr(str) {
    return str.split('').reverse().join('');
}

Σε αυτή τη συνάρτηση, χωρίζουμε τη συμβολοσειρά σε έναν πίνακα χαρακτήρων, αντιστρέφουμε τον πίνακα και μετά τον ενώνουμε ξανά σε μια συμβολοσειρά.

Μετατόπιση του δεύτερου μισού της χορδής

Τέλος, πρέπει να μετατοπίσουμε το δεύτερο μισό της συμβολοσειράς μία θέση προς τα αριστερά στο ASCII. Μπορούμε να το κάνουμε αυτό χωρίζοντας τη χορδή στη μέση και εφαρμόζοντας τη μετατόπιση στο δεύτερο μισό.

function shiftLeftHalf(str) {
    let midpoint = Math.floor(str.length / 2);
    let firstHalf = str.slice(0, midpoint);
    let secondHalf = str.slice(midpoint).split('').map(char => String.fromCharCode(char.charCodeAt(0) - 1)).join('');
    return firstHalf + secondHalf;
}

Σε αυτή τη συνάρτηση, βρίσκουμε το μέσο της συμβολοσειράς, χωρίζουμε τη συμβολοσειρά σε δύο μισά, μετατοπίζουμε το δεύτερο μισό μία θέση προς τα αριστερά στο ASCII και μετά ενώνουμε τα δύο μισά ξανά μαζί.