Algorytmika: Zamiana Wielkości Liter

Javascript
Priorytet: Normalny Szkic

Zadanie 3.8: Zamiana Wielkości Liter (Swap Case)

Wstęp

Wyobraź sobie, że piszesz system, który musi naprawić tekst wpisany przez użytkownika z wciśniętym klawiszem CapsLock, albo chcesz stworzyć efekt "Spongebob meme" (tAkIe PiSaNiE). Aby to zrobić, musisz umieć kontrolować wielkość liter każdego znaku z osobna.

Cel zadania

Napisanie funkcji w JavaScript, która przyjmie tekst i zwróci go z odwróconą wielkością liter (małe -> duże, duże -> małe).

Wymagania techniczne

  1. Funkcja: Stwórz funkcję o nazwie swapCase(text).
  2. Logika: Iteracja po każdym znaku stringa.
  3. Sprawdzanie: Wykrywanie czy znak jest duży czy mały.
  4. Wynik: Zwrócenie nowego stringa (pamiętaj, że stringi w JS są niemutowalne!).

Kroki do wykonania

1. Przygotowanie pliku

Stwórz plik script.js i przygotuj szkielet funkcji.

function swapCase(text) {
    let result = "";
    
    // Tutaj wpiszemy logikę
    
    return result;
}

// Testy
console.log(swapCase("Hello World")); // Oczekiwane: hELLO wORLD
console.log(swapCase("JavaScript"));  // Oczekiwane: jAVAsCRIPT

2. Iteracja po tekście

W JavaScript string to tablica znaków (prawie). Możesz użyć pętli for lub metody split(). Użyjmy klasycznej pętli for...of dla czytelności.

for (const char of text) {
    // console.log(char); // Sprawdź czy działa
}

3. Logika zamiany

Dla każdego znaku musisz sprawdzić: "Czy jesteś dużą literą?". Jeśli tak, zamień na małą. W przeciwnym razie zamień na dużą.

[!TIP] Jak sprawdzić czy litera jest duża? Porównaj ją z jej wersją .toUpperCase(). if (char === char.toUpperCase()) { ... } Uwaga: Znaki specjalne (np. " ", "1", "!") też są "równe" swojej dużej wersji, więc ten warunek "zamieni" je na małe (co dla znaków specjalnych nic nie zmieni, czyli jest OK).

/* Wewnątrz pętli */
if (char === char.toUpperCase()) {
    // Jest duża (lub to znak specjalny), więc zamień na małą
    result += char.toLowerCase();
} else {
    // Jest mała, zamień na dużą
    result += char.toUpperCase();
}

4. Wersja "Pro" (Dla chętnych)

Spróbuj zapisać tę funkcję w jednej linijce używając .split(), .map() i operatora trójelementowego (? :).

const swapCasePro = (text) => {
    return text
        .split('')
        .map(c => c === c.toUpperCase() ? c.toLowerCase() : c.toUpperCase())
        .join('');
}

console.log(swapCasePro("Tarnobrzeg"));

[!IMPORTANT] Commit: Rozwiązanie zadania swapCase.

Testowanie

Uruchom kod w konsoli przeglądarki lub używając Node.js: node script.js Upewnij się, że działa poprawnie dla zdań z polskimi znakami, np. "Żółta Łódź".