Nauka programowania
Gdy znasz już podstawy składni, czas zweryfikować umiejętności w praktyce. Serwis pl.spoj.com pozwala rozwiązywać zadania algorytmiczne i automatycznie sprawdza poprawność Twojego kodu.
- 1.
Zarejestruj się na SPOJ
Wejdź na pl.spoj.com i utwórz darmowe konto. SPOJ to serwis z zadaniami algorytmicznymi, który automatycznie sprawdza poprawność Twojego kodu.
- 2.
Znajdź zadanie: Liczby pierwsze
Po zalogowaniu przejdź do sekcji zadań łatwych i znajdź pierwsze zadanie dotyczące liczb pierwszych.
Problem→Łatwe→Liczby pierwsze (pierwsze zadanie) - 3.
Wrzuć rozwiązanie w Submit
Poniżej znajdziesz działający kod w JavaScript. Skopiuj go i wklej w formularzu Submit. Wybierz język JavaScript (Node.js).
const readline = require('readline'); function runTests(callback) { const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); rl.question("", (T) => { T = parseInt(T); let count = 0; let results = []; const askNext = () => { if (count < T) { rl.question("", (line) => { results.push(callback(line)); count++; askNext(); }); } else { rl.close(); console.log(results.join('\n')); } }; askNext(); }); } function czyPierwsza(n){ if(n<2) return "NIE"; for(let i=2;i*i<=n;i++) if(n%i==0) return "NIE"; return "TAK"; } runTests(czyPierwsza);
Jak działa ten kod?
Nie wklejaj kodu bez zrozumienia — spróbujmy go rozłożyć na części. SPOJ działa tak: najpierw podaje liczbę T, czyli ile razy sprawdzi Twój program, a potem podaje Ci po jednej liczbie na linię — Twój program musi dla każdej z nich wypisać odpowiedź.
- ▸Funkcja
runTeststo „pomocnik”, który czyta dane wejściowe z terminala (readline), odczytuje liczbęT, a potemTrazy wczytuje kolejną linię i wywołuje dla niej funkcję, którą mu podamy jako argument (callback). Dzięki temu możesz go użyć do każdego zadania na SPOJ, które działa w ten sposób — po prostu podajesz inną funkcję. - ▸Funkcja
czyPierwszato już właściwe rozwiązanie zadania. Liczba pierwsza to liczba większa od 1, która dzieli się tylko przez 1 i przez samą siebie. Funkcja sprawdza, czynda się podzielić bez reszty przez jakąkolwiek liczbę od 2 do pierwiastka zn— jeśli tak, to nie jest pierwsza ("NIE"), jeśli nie znajdzie takiego dzielnika, to jest pierwsza ("TAK"). - ▸Na końcu wywołujemy
runTests(czyPierwsza)— czyli „pomocnikowi” podajemy naszą funkcję sprawdzającą liczby pierwsze jako callback.
Jeśli podoba Ci się to - spróbuj sił w innym zadaniu.