Learn JavaScript

lesson ā§Š / ⧝ ¡ if, switch āφāϰ loop

Module ā§Ē ¡ if, switch āφāϰ loop

āĻĒ⧁āϰ⧋ program: FizzBuzz āĻĨ⧇āϕ⧇ prime sieve

FreeāĻĒāĻĄāĻŧāĻž

āĻāχ lesson-āĻ āϝāĻž āĻļāĻŋāĻ–āĻŦ⧇

  • Fixed starter-āĻāϰ āωāĻĒāϰ āϏāĻžāϤāϟāĻž āĻĒ⧁āϰ⧋ program āϞāĻŋāĻ–āϤ⧇ āĻĒāĻžāϰāĻŦ⧇, FizzBuzz-āĻāϰ āĻāĻ•āϟāĻž āϰ⧂āĻĒ āĻĨ⧇āϕ⧇ prime sieve āĻĒāĻ°ā§āϝāĻ¨ā§āϤ, āĻĒā§āϰāϤāĻŋāϟāĻž āϤāĻžāϰ āφāϏāϞ output-āϏāĻšāĨ¤
  • āĻŦ⧁āĻāĻŋāϝāĻŧ⧇ āĻŦāϞāϤ⧇ āĻĒāĻžāϰāĻŦ⧇ āĻāĻ•āϟāĻž if chain-āĻ āĻœā§‹āĻĄāĻŧāĻž test-āϟāĻž āϕ⧇āύ āϏāĻŦāĻžāϰ āφāϗ⧇ āĻŦāϏ⧇, āφāϰ prime check āϕ⧇āύ āĻŦāĻ°ā§āĻ—āĻŽā§‚āϞ⧇ āĻ—āĻŋāϝāĻŧ⧇ āĻĨāĻžāĻŽāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤
  • Input-āĻāϰ āωāĻĒāϰ āĻāĻ• pass-āĻāχ āĻāĻ•āϟāĻž āϚāϞāϤāĻŋ āωāĻ¤ā§āϤāϰ āϰāĻžāĻ–āϤ⧇ āĻĒāĻžāϰāĻŦ⧇, āĻĒā§āϰāϤāĻŋāϟāĻž value āĻāĻŽāύ āϜāĻžāϝāĻŧāĻ—āĻž āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧇ āϝāĻžāϤ⧇ āĻĒā§āϰāĻĨāĻŽ item-āϟāĻž āϧ⧋āρāĻ•āĻž āĻĻāĻŋāϤ⧇ āύāĻž āĻĒāĻžāϰ⧇āĨ¤

āĻ…āύ⧇āĻ• junior developer interview āφāϜāĻ“ āĻļ⧁āϰ⧁ āĻšāϝāĻŧ āĻāĻ•āχ āϛ⧋āĻŸā§āϟ āĻ•āĻžāϜ āĻĻāĻŋāϝāĻŧ⧇āĨ¤ 1 āĻĨ⧇āϕ⧇ āϗ⧁āύāϤ⧇ āĻĨāĻžāϕ⧋; 3-āĻāϰ āϗ⧁āĻŖāĻŋāϤāĻ• āĻšāϞ⧇ āĻŦāϞ⧋ "Fizz", 5-āĻāϰ āϗ⧁āĻŖāĻŋāϤāĻ• āĻšāϞ⧇ "Buzz", āĻĻ⧁āĻŸā§‹āϰāχ āĻšāϞ⧇ "FizzBuzz"āĨ¤ āĻāϰ āύāĻžāĻŽ FizzBuzz, āφāϰ āĻāϟāĻž āĻ…āĻ™ā§āϕ⧇āϰ āĻĒāϰ⧀āĻ•ā§āώāĻž āύāĻžāĨ¤ āĻāϟāĻž āĻĻ⧇āϖ⧇ āϤ⧁āĻŽāĻŋ āĻāĻ•āϟāĻž loop-āĻāϰ āĻ­āĻŋāϤāϰ⧇ āĻāĻ•āϟāĻž if āĻŦāϏāĻŋāϝāĻŧ⧇ āĻ•ā§āϰāĻŽāϟāĻž āĻ āĻŋāĻ• āϰāĻžāĻ–āϤ⧇ āĻĒāĻžāϰ⧋ āĻ•āĻŋāύāĻžāĨ¤ āĻāχ lesson āĻ•āĻžāϜāϟāĻž āĻ¸ā§ŽāĻ­āĻžāĻŦ⧇ āĻ•āϰ⧇, āϤāĻžāϰāĻĒāϰ āφāϰāĻ“ āĻ›āϝāĻŧāϟāĻž program āĻŦāĻžāύāĻžāϝāĻŧ, āĻāĻ•āĻĻāĻŽ āϏ⧇āχ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āϝ⧇āϗ⧁āϞ⧋ āĻāĻ•āϜāύ āĻ•āĻžāĻœā§‡āϰ programmer āϞ⧇āϖ⧇āĨ¤

āϏāĻžāϤāϟāĻž program-āĻāϰ āĻāĻ•āχ āĻ—āĻĄāĻŧāύ

āĻāĻ–āĻžāύ⧇āϰ āĻĒā§āϰāϤāĻŋāϟāĻž program-āĻ āϚāĻžāϰāϟāĻž āϧāĻžāĻĒāĨ¤ Starter-āĻāϰ next() āφāϰ nextInt() āĻĻāĻŋāϝāĻŧ⧇ āĻĒāĻĄāĻŧ⧇, input-āĻāϰ āωāĻĒāϰ loop āϚāĻžāϞāĻžāϝāĻŧ, āĻĒā§āϰāϤāĻŋāϟāĻž value āύāĻŋāϝāĻŧ⧇ āĻ•āĻŋāϛ⧁ āĻāĻ•āϟāĻž āϏāĻŋāĻĻā§āϧāĻžāĻ¨ā§āϤ āύ⧇āϝāĻŧ, āφāϰ out-āĻ āĻāĻ•āϟāĻž āϞāĻžāχāύ push āĻ•āϰ⧇āĨ¤ Starter-āĻāϰ āĻļ⧇āώ āϞāĻžāχāύ āϏāĻŦāĻ•āĻŋāϛ⧁ āĻāĻ•āϏāĻžāĻĨ⧇ print āĻ•āϰ⧇āĨ¤ Module 1-āĻ āĻĻ⧁āχāϟāĻž loop-āĻāϰ āĻ—āĻĄāĻŧāύ āĻĻ⧇āϖ⧇āĻ›āĻŋāϞ⧇, "āϝ⧇āĻŽāύ āφāϛ⧇ āϤ⧇āĻŽāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧋" āĻŦāϞ⧇; lesson 01 āφāϰ 02 āϏ⧇āϗ⧁āϞ⧋ āĻŦ⧁āĻāĻŋāϝāĻŧ⧇ āĻĻāĻŋāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāχ program-āϗ⧁āϞ⧋ āĻĻ⧁āĻŸā§‹āχ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤

Input āĻĒāĻĄāĻŧāĻžāϰ āĻĻ⧁āχ āωāĻĒāĻžāϝāĻŧ

const n = nextInt();
for (let i = 0; i < n; i++) { ...read one value... }

let token = next();
while (token !== undefined) {
  ...use token...
  token = next();
}
  • for loop āĻ–āĻžāĻŸā§‡ āϤāĻ–āύ, āϝāĻ–āύ input āĻŦāϞ⧇ āĻĻ⧇āϝāĻŧ āĻ•āϝāĻŧāϟāĻž value āφāϏāĻŦ⧇: "the first line holds n"āĨ¤
  • while loop āĻ–āĻžāĻŸā§‡ āϤāĻ–āύ, āϝāĻ–āύ input āĻļ⧇āώ āύāĻž āĻšāĻ“āϝāĻŧāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āϚāϞ⧇āĨ¤ Token āĻĢ⧁āϰāĻŋāϝāĻŧ⧇ āϗ⧇āϞ⧇ next() āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧ undefinedāĨ¤
  • break āϝ⧇āϕ⧋āύ⧋ loop āĻĨ⧇āϕ⧇ āϏāĻžāĻĨ⧇ āϏāĻžāĻĨ⧇ āĻŦ⧇āϰ āĻ•āϰ⧇ āĻĻ⧇āϝāĻŧ, āφāϰ continue āϏ⧋āϜāĻž āĻĒāϰ⧇āϰ pass-āĻ āϚāϞ⧇ āϝāĻžāϝāĻŧāĨ¤ āĻĻ⧁āĻŸā§‹āχ āĻĻ⧇āĻ–āĻŋāϝāĻŧ⧇āϛ⧇ lesson 02āĨ¤

FizzBuzz, āĻ¸ā§ŽāĻ­āĻžāĻŦ⧇

Zara āϖ⧇āϞāĻžāϟāĻžāϰ āĻāĻ•āϟāĻž party āϰ⧂āĻĒ āϖ⧇āϞ⧇āĨ¤ 3-āĻāϰ āϗ⧁āĻŖāĻŋāϤāĻ• āĻšāϞ⧇ "Fizz", 7-āĻāϰ āϗ⧁āĻŖāĻŋāϤāĻ• āĻšāϞ⧇ "Bazz", āφāϰ āĻĻ⧁āĻŸā§‹āϰāχ āϗ⧁āĻŖāĻŋāϤāĻ• āĻšāϞ⧇ "FizzBazz"āĨ¤ āύāĻŋāĻšā§‡ 12 āĻĨ⧇āϕ⧇ 21 āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āϏāĻ‚āĻ–ā§āϝāĻžāϰ āϜāĻ¨ā§āϝ if chain-āϟāĻžāĨ¤ Test-āϗ⧁āϞ⧋āϰ āĻ•ā§āϰāĻŽāϟāĻž āϖ⧇āϝāĻŧāĻžāϞ āĻ•āϰ⧇ āĻĒāĻĄāĻŧā§‹āĨ¤

const out = [];
for (let i = 12; i <= 21; i++) {
  if (i % 3 === 0 && i % 7 === 0) {
    out.push("FizzBazz");
  } else if (i % 3 === 0) {
    out.push("Fizz");
  } else if (i % 7 === 0) {
    out.push("Bazz");
  } else {
    out.push(i);
  }
}
console.log(out.join("\n"));
Fizz
13
Bazz
Fizz
16
17
Fizz
19
20
FizzBazz

āĻāĻ•āϟāĻž if chain āĻĒā§āϰāĻĨāĻŽ āϝ⧇ branch-āĻāϰ test true āĻšāϝāĻŧ, āϏ⧇āϟāĻž āϚāĻžāϞāĻžāϝāĻŧ, āĻŦāĻžāĻ•āĻŋāϗ⧁āϞ⧋ āĻŦāĻžāĻĻ āĻĻ⧇āϝāĻŧāĨ¤ 21 āĻĒāĻžāϏ āĻ•āϰ⧇ i % 3 === 0 test, āϤāĻžāχ āϝ⧇ chain āφāϗ⧇ 3-āĻāϰ āĻ•āĻĨāĻž āϜāĻŋāĻœā§āĻžā§‡āϏ āĻ•āϰ⧇, āϏ⧇ "Fizz" print āĻ•āϰ⧇ āĻĢ⧇āϞ⧇, āĻœā§‹āĻĄāĻŧāĻž test-āĻāϰ āĻ•āĻžāϛ⧇ āφāϰ āĻĒ⧌āρāĻ›āĻžāϝāĻŧāχ āύāĻžāĨ¤ āϤāĻžāχ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ test-āϟāĻž āĻŦāϏ⧇ āϏāĻŦāĻžāϰ āφāϗ⧇āĨ¤ āωāĻ˛ā§āĻŸā§‹ āĻ•ā§āϰāĻŽāϟāĻž āφāϰ āϤāĻžāϰ āφāϏāϞ output āĻĻ⧇āĻ–āĻžāĻŦ⧇ common mistake 1āĨ¤

Chain-āĻāϰ āĻāĻ•āϟāĻž āĻĻ⧁āĻ°ā§āĻŦāϞāϤāĻž āφāϛ⧇āĨ¤ āĻĻ⧁āχāϟāĻž āĻļāĻŦā§āĻĻ⧇ āϞāĻžāϗ⧇ āϚāĻžāϰāϟāĻž branch; āϤāĻŋāύāϟāĻž āĻļāĻŦā§āĻĻ⧇ āϞāĻžāϗ⧇ āφāϟāϟāĻž, āĻĒā§āϰāϤāĻŋāϟāĻž āĻŽāĻŋāĻļā§āϰāϪ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻžāĨ¤ āĻ¸ā§Ž āϏāĻŽāĻžāϧāĻžāύāϟāĻž āĻļāĻŦā§āĻĻ āĻŦ⧇āϛ⧇ āύ⧇āϝāĻŧ āύāĻž, āĻļāĻŦā§āĻĻāϟāĻž āĻ—āĻĄāĻŧ⧇ āϤ⧋āϞ⧇āĨ¤

Example 1: āĻļāĻŦā§āĻĻāϟāĻž āĻ—āĻĄāĻŧ⧇ āϤ⧋āϞ⧋

āύāϤ⧁āύ āϝāĻž: āϤāĻŋāύāϟāĻž āφāϞāĻžāĻĻāĻž if statement, āĻĒā§āϰāϤāĻŋāϟāĻž āĻāĻ•āϟāĻž āĻ•āϰ⧇ āϟ⧁āĻ•āϰ⧋ āĻœā§‹āĻĄāĻŧ⧇, āϕ⧋āύ⧋ else āĻ›āĻžāĻĄāĻŧāĻž; āφāϰ āϏāĻ‚āĻ–ā§āϝāĻžāϟāĻžāϝāĻŧ āĻĢāĻŋāϰ⧇ āϝ⧇āϤ⧇ word || iāĨ¤ Zara 11-āĻāϰ āϗ⧁āĻŖāĻŋāϤāϕ⧇āϰ āϜāĻ¨ā§āϝ āϝ⧋āĻ— āĻ•āϰ⧇ "Boom"āĨ¤

const input = require("fs").readFileSync(0, "utf8");
const tokens = input.split(/\s+/).filter(Boolean);
let at = 0;
const next = () => tokens[at++];
const nextInt = () => Number(next());
const out = [];

const n = nextInt();
for (let k = 0; k < n; k++) {
  const i = nextInt();
  let word = "";
  if (i % 3 === 0) {
    word += "Fizz";
  }
  if (i % 7 === 0) {
    word += "Bazz";
  }
  if (i % 11 === 0) {
    word += "Boom";
  }
  out.push(word || i);
}

console.log(out.join("\n"));
10
FizzBazz
Boom
FizzBoom
BazzBoom
FizzBazzBoom
Bazz
Fizz

āĻāχ output-āϟāĻž input 8, āϤāĻžāϰāĻĒāϰ 10 21 22 33 77 231 7 9-āĻāϰ āϜāĻ¨ā§āϝāĨ¤ 231 āĻšāϞ⧋ 3 āϗ⧁āĻŖ 7 āϗ⧁āĻŖ 11, āϤāĻžāχ āϤāĻŋāύāϟāĻž test-āχ āύāĻŋāĻœā§‡āϰ āϟ⧁āĻ•āϰ⧋ āĻœā§‹āĻĄāĻŧ⧇āĨ¤ āϕ⧋āύ⧋ test āĻĒāĻžāϏ āύāĻž āĻ•āϰāϞ⧇ word āĻĨ⧇āϕ⧇ āϝāĻžāϝāĻŧ "", āϝ⧇āϟāĻž falsy, āϤāĻžāχ || āϏāĻ‚āĻ–ā§āϝāĻžāϟāĻž āĻĻ⧇āϝāĻŧ (Module 2)āĨ¤ āĻ•ā§āϰāĻŽ āύāĻŋāϝāĻŧ⧇ āφāϰ āĻŽāĻžāĻĨāĻžāĻŦā§āϝāĻĨāĻž āύ⧇āχ, āφāϰ āϚāϤ⧁āĻ°ā§āĻĨ āĻāĻ•āϟāĻž āĻļāĻŦā§āĻĻ āĻŽāĻžāύ⧇ āĻļ⧁āϧ⧁ āφāϰ⧇āĻ•āϟāĻž āϞāĻžāχāύāĨ¤

Run in Compiler

āϝ⧇ loop āĻĻ⧁āχ āĻ•āĻžāϰāϪ⧇ āĻĨāĻžāĻŽā§‡

āĻ•āĻŋāϛ⧁ loop āĻĨāĻžāĻŽā§‡ āĻ—ā§‹āύāĻž āĻļ⧇āώ āĻšāϞ⧇, āĻ•āĻŋāϛ⧁ āĻĨāĻžāĻŽā§‡ āϕ⧋āύ⧋ āϘāϟāύāĻž āϘāϟāϞ⧇āĨ¤ āĻ…āύ⧁āĻŽāĻžāύ⧇āϰ āϖ⧇āϞāĻžāϝāĻŧ āĻĻ⧁āĻŸā§‹āχ āφāϛ⧇: āĻšā§‡āĻˇā§āϟāĻž āĻĢ⧁āϰāĻŋāϝāĻŧ⧇ āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇, āφāĻŦāĻžāϰ āĻ āĻŋāĻ• āωāĻ¤ā§āϤāϰāĻ“ āϞ⧇āϗ⧇ āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻāĻ•āϟāĻž āĻ•āĻžāϰāĻŖ āϏāĻžāĻŽāϞāĻžāϝāĻŧ loop-āĻāϰ āύāĻŋāĻœā§‡āϰ test, āĻ…āĻ¨ā§āϝāϟāĻž āϏāĻžāĻŽāϞāĻžāϝāĻŧ breakāĨ¤

Example 2: āϏ⧀āĻŽāĻž-āĻŦāĻžāρāϧāĻž āĻāĻ•āϟāĻž āĻ…āύ⧁āĻŽāĻžāύ⧇āϰ āϖ⧇āϞāĻž

āύāϤ⧁āύ āϝāĻž: āĻāĻ•āϟāĻž while loop āϝāĻžāϰ test āĻšāϞ⧋ āϏ⧀āĻŽāĻžāϟāĻž, āφāϰ āĻ āĻŋāĻ• āĻ…āύ⧁āĻŽāĻžāύ⧇āϰ āϜāĻ¨ā§āϝ āφāϰ āφāϗ⧇āĻ­āĻžāϗ⧇ āĻĢ⧁āϰāĻŋāϝāĻŧ⧇ āϝāĻžāĻ“āϝāĻŧāĻž input-āĻāϰ āϜāĻ¨ā§āϝ breakāĨ¤ Alice āĻāĻ•āϟāĻž āĻ—ā§‹āĻĒāύ āϏāĻ‚āĻ–ā§āϝāĻž āĻ āĻŋāĻ• āĻ•āϰ⧇, āφāϰ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϝāĻŧ⧇āĻ•āĻŦāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧāĨ¤

const input = require("fs").readFileSync(0, "utf8");
const tokens = input.split(/\s+/).filter(Boolean);
let at = 0;
const next = () => tokens[at++];
const nextInt = () => Number(next());
const out = [];

const secret = nextInt();
const limit = nextInt();
let tries = 0;
let found = false;

while (tries < limit) {
  const token = next();
  if (token === undefined) {
    break;
  }
  tries++;
  const guess = Number(token);
  if (guess === secret) {
    found = true;
    break;
  }
  out.push(guess + " is too " + (guess < secret ? "low" : "high"));
}

if (found) {
  out.push("got it in " + tries);
} else {
  out.push("no luck after " + tries + ", it was " + secret);
}

console.log(out.join("\n"));
50 is too high
25 is too low
37 is too low
43 is too high
got it in 5

āĻāχ output-āϟāĻž input 42 5, āϤāĻžāϰāĻĒāϰ 50 25 37 43 42 10-āĻāϰ āϜāĻ¨ā§āϝāĨ¤ āĻĒāĻžā§āϚāĻŽ āĻ…āύ⧁āĻŽāĻžāύāϟāĻž āĻ āĻŋāĻ•, āϏ⧀āĻŽāĻžāϰ āĻ āĻŋāĻ• āĻ­āĻŋāϤāϰ⧇, āϤāĻžāχ 10 āφāϰ āĻĒāĻĄāĻŧāĻžāχ āĻšāϝāĻŧ āύāĻžāĨ¤ found flag-āϟāĻž āĻŽāύ⧇ āϰāĻžāϖ⧇ loop āϕ⧇āύ āĻĨāĻžāĻŽāϞ, āĻ•āĻžāϰāĻŖ loop-āĻāϰ āĻĒāϰ⧇ āĻĻ⧁āχ āĻ•āĻžāϰāĻŖāϕ⧇ āĻĻ⧇āĻ–āϤ⧇ āĻāĻ•āχ āϰāĻ•āĻŽ āϞāĻžāϗ⧇āĨ¤ āϏ⧀āĻŽāĻž 4 āĻ•āϰ⧇ āĻĻāĻžāĻ“, āĻļ⧇āώ āϞāĻžāχāύ āĻšāϝāĻŧ⧇ āϝāĻžāĻŦ⧇ no luck after 4, it was 42āĨ¤

Run in Compiler

āĻĻ⧁āχāϟāĻž loop āĻĻāĻŋāϝāĻŧ⧇ āĻāĻ•āϟāĻž grid

āĻāĻ•āϟāĻž loop-āĻāϰ āĻ­āĻŋāϤāϰ⧇ āφāϰ⧇āĻ•āϟāĻž loop āĻĨāĻžāĻ•āϞ⧇ āϤāĻžāϕ⧇ āĻŦāϞ⧇ nested loopāĨ¤ āĻŦāĻžāχāϰ⧇āϰ loop-āĻāϰ āĻĒā§āϰāϤāĻŋāϟāĻž pass-āĻ āĻ­āĻŋāϤāϰ⧇āϰ loop āϤāĻžāϰ āϏāĻŦ pass āĻĒ⧁āϰ⧋ āϘ⧁āϰ⧇ āφāϏ⧇āĨ¤ āϤāĻžāχ 6 āϏāĻžāϰāĻŋ āφāϰ 6 āĻ•āϞāĻžāĻŽā§‡āϰ grid-āĻ āĻ­āĻŋāϤāϰ⧇āϰ body āϚāϞ⧇ 36 āĻŦāĻžāϰāĨ¤

Example 3: āϗ⧁āϪ⧇āϰ āĻāĻ•āϟāĻž grid

āύāϤ⧁āύ āϝāĻž: nested for loop, āφāϰ āĻ•āϞāĻžāĻŽāϗ⧁āϞ⧋ āϏ⧋āϜāĻž āϞāĻžāχāύ⧇ āϰāĻžāĻ–āϤ⧇ padStartāĨ¤ String(x).padStart(w) text-āĻāϰ āĻŦāĻžāρ āĻĻāĻŋāϕ⧇ space āĻŦāϏāĻžāϝāĻŧ, āϝāϤāĻ•ā§āώāĻŖ āύāĻž āϏ⧇āϟāĻž w character āϞāĻŽā§āĻŦāĻž āĻšāϝāĻŧ; āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ Module 3-āĻāĨ¤

const input = require("fs").readFileSync(0, "utf8");
const tokens = input.split(/\s+/).filter(Boolean);
let at = 0;
const next = () => tokens[at++];
const nextInt = () => Number(next());
const out = [];

const n = nextInt();
const width = String(n * n).length + 1;

for (let row = 1; row <= n; row++) {
  let line = "";
  for (let col = 1; col <= n; col++) {
    line += String(row * col).padStart(width);
  }
  out.push(line);
}

console.log(out.join("\n"));
  1  2  3  4  5  6
  2  4  6  8 10 12
  3  6  9 12 15 18
  4  8 12 16 20 24
  5 10 15 20 25 30
  6 12 18 24 30 36

āĻāχ output-āϟāĻž input 6-āĻāϰ āϜāĻ¨ā§āϝāĨ¤ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āϚāĻ“āĻĄāĻŧāĻž āϏāĻ‚āĻ–ā§āϝāĻž n * n, āĻŽāĻžāύ⧇ 36, āϝāĻžāϰ character 2āϟāĻž, āϤāĻžāχ āĻĒā§āϰāϤāĻŋāϟāĻž āϘāϰ 3 āϚāĻ“āĻĄāĻŧāĻž, āĻāĻ• space āĻŦāĻžāĻĄāĻŧāϤāĻŋāĨ¤ line āĻŦāĻžāχāϰ⧇āϰ loop-āĻāϰ āĻ­āĻŋāϤāϰ⧇ āύāϤ⧁āύ āĻ•āϰ⧇ āϤ⧈āϰāĻŋ āĻšāϝāĻŧ, āϤāĻžāχ āĻĒā§āϰāϤāĻŋāϟāĻž āϏāĻžāϰāĻŋ āĻ–āĻžāϞāĻŋ āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻšāϝāĻŧāĨ¤ āĻĻ⧁āχ counter-āĻāϰ āύāĻžāĻŽ āφāϞāĻžāĻĻāĻž, row āφāϰ col; āĻĻ⧁āĻŸā§‹āϰ āĻāĻ•āχ āύāĻžāĻŽ āĻĻāĻŋāϞ⧇ āϕ⧀ āĻšāϝāĻŧ, āĻĻ⧇āĻ–āĻžāĻŦ⧇ common mistake 3āĨ¤

Run in Compiler

āĻāϟāĻž āĻ•āĻŋ prime? āĻŦāĻ°ā§āĻ—āĻŽā§‚āϞ⧇ āĻ—āĻŋāϝāĻŧ⧇ āĻĨāĻžāĻŽā§‹

Prime āĻšāϞ⧋ 1-āĻāϰ āĻšā§‡āϝāĻŧ⧇ āĻŦāĻĄāĻŧ āĻāĻŽāύ āĻĒā§‚āĻ°ā§āĻŖāϏāĻ‚āĻ–ā§āϝāĻž, āϝāĻžāϕ⧇ āĻļ⧁āϧ⧁ 1 āφāϰ āϏ⧇ āύāĻŋāĻœā§‡ āĻ­āĻžāĻ— āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ n āϝāĻžāϚāĻžāχ āĻ•āϰāϤ⧇ 2 āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧇ āĻĒā§āϰāϤāĻŋāϟāĻž āĻ­āĻžāϜāĻ• d āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰ⧋āĨ¤ āĻ­āĻžāϜāĻ• āφāϏ⧇ āĻœā§‹āĻĄāĻŧāĻžāϝāĻŧ: d āϝāĻĻāĻŋ n-āϕ⧇ āĻ­āĻžāĻ— āĻ•āϰ⧇, āϤāĻžāĻšāϞ⧇ n / d-āĻ“ āĻ•āϰ⧇, āφāϰ āĻĻ⧁āĻŸā§‹āϰ āĻāĻ•āϟāĻž n-āĻāϰ āĻŦāĻ°ā§āĻ—āĻŽā§‚āϞ⧇āϰ āĻšā§‡āϝāĻŧ⧇ āĻŦāĻĄāĻŧ āύāĻžāĨ¤ āϤāĻžāχ d * d n-āϕ⧇ āĻ›āĻžāĻĄāĻŧāĻŋāϝāĻŧ⧇ āϗ⧇āϞ⧇āχ loop āĻĨāĻžāĻŽāϤ⧇ āĻĒāĻžāϰ⧇, āφāϰ āϕ⧋āύ⧋ āĻ­āĻžāϜāĻ• āĻĒ⧇āϝāĻŧ⧇ āϗ⧇āϞ⧇ āϤ⧋ āϏāĻžāĻĨ⧇ āϏāĻžāĻĨ⧇āχāĨ¤

Example 4: āφāϗ⧇āĻ­āĻžāϗ⧇ āĻŦ⧇āϰ āĻšāϝāĻŧ⧇ āϝāĻžāĻ“āϝāĻŧāĻž prime check

āύāϤ⧁āύ āϝāĻž: trial division, āϝ⧇āĻ–āĻžāύ⧇ loop-āĻāϰ test d * d <= n, āφāϰ āĻĒā§āϰāĻĨāĻŽ āĻ­āĻžāϜāĻ• āĻĒ⧇āϞ⧇āχ breakāĨ¤ Program-āϟāĻž āϝ⧇ āĻœā§‹āĻĄāĻŧāĻžāϟāĻž āĻĒ⧇āϞ, āϏ⧇āϟāĻžāĻ“ print āĻ•āϰ⧇āĨ¤

const input = require("fs").readFileSync(0, "utf8");
const tokens = input.split(/\s+/).filter(Boolean);
let at = 0;
const next = () => tokens[at++];
const nextInt = () => Number(next());
const out = [];

const count = nextInt();
for (let k = 0; k < count; k++) {
  const n = nextInt();
  let divisor = 0;
  for (let d = 2; d * d <= n; d++) {
    if (n % d === 0) {
      divisor = d;
      break;
    }
  }
  if (n < 2) {
    out.push(n + ": neither prime nor composite");
  } else if (divisor === 0) {
    out.push(n + ": prime");
  } else {
    out.push(n + ": not prime, " + divisor + " x " + n / divisor);
  }
}

console.log(out.join("\n"));
1: neither prime nor composite
2: prime
91: not prime, 7 x 13
97: prime
7919: prime
1000001: not prime, 101 x 9901

āĻāχ output-āϟāĻž input 6, āϤāĻžāϰāĻĒāϰ 1 2 91 97 7919 1000001-āĻāϰ āϜāĻ¨ā§āϝāĨ¤ 2-āĻāϰ āĻŦ⧇āϞāĻžāϝāĻŧ āĻ­āĻŋāϤāϰ⧇āϰ loop āĻāĻ•āĻŦāĻžāϰāĻ“ āϚāϞ⧇ āύāĻž, āĻ•āĻžāϰāĻŖ 2 āϗ⧁āĻŖ 2 āφāϗ⧇āχ 2-āϕ⧇ āĻ›āĻžāĻĄāĻŧāĻŋāϝāĻŧ⧇ āϗ⧇āϛ⧇āĨ¤ 7919-āĻāϰ āĻŦ⧇āϞāĻžāϝāĻŧ āϏ⧇ d āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰ⧇ 2 āĻĨ⧇āϕ⧇ 88 āĻĒāĻ°ā§āϝāĻ¨ā§āϤ, āĻ•āĻžāϰāĻŖ 89 āϗ⧁āĻŖ 89 āĻšāϞ⧋ 7921āĨ¤ āĻŦāĻ°ā§āĻ—āĻŽā§‚āϞ⧇ āύāĻž āĻĨāĻžāĻŽāϞ⧇ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāϤ⧇ āĻšāϤ⧋ āĻĒā§āϰāĻžāϝāĻŧ 7,900āϟāĻž āĻ­āĻžāϜāĻ•āĨ¤

Run in Compiler

Sieve: āĻ­āĻžāĻ— āύāĻž āĻ•āϰ⧇ āϕ⧇āĻŸā§‡ āĻĻāĻžāĻ“ Intermediate

n āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āϏāĻŦ prime āϖ⧁āρāϜāϤ⧇ āĻĒā§āϰāϤāĻŋāϟāĻž āϏāĻ‚āĻ–ā§āϝāĻž āφāϞāĻžāĻĻāĻž āĻ•āϰ⧇ āϝāĻžāϚāĻžāχ āĻ•āϰāϞ⧇ āĻāĻ•āχ āĻ•āĻžāϜ āĻŦāĻžāϰāĻŦāĻžāϰ āĻšāϝāĻŧāĨ¤ Sieve of Eratosthenes, āϝāĻžāϰ āύāĻžāĻŽ āφāĻ¨ā§āĻĻāĻžāϜ 240 āĻ–ā§āϰāĻŋāĻ¸ā§āϟāĻĒā§‚āĻ°ā§āĻŦāĻžāĻŦā§āĻĻ⧇āϰ āĻāĻ• āĻ—ā§āϰāĻŋāĻ• āĻĒāĻŖā§āĻĄāĻŋāϤ⧇āϰ āύāĻžāĻŽā§‡, āĻ•āĻžāϜāϟāĻž āωāĻ˛ā§āĻŸā§‡ āĻĻ⧇āϝāĻŧāĨ¤ āϏāĻŦ āϏāĻ‚āĻ–ā§āϝāĻž āϞāĻŋāϖ⧇ āĻĢ⧇āϞ⧋, āϤāĻžāϰāĻĒāϰ āϝ⧇ prime-āχ āĻĒāĻžāĻ“, āϤāĻžāϰ āϗ⧁āĻŖāĻŋāϤāĻ•āϗ⧁āϞ⧋ āϕ⧇āĻŸā§‡ āĻĻāĻžāĻ“āĨ¤ āϝ⧇āϗ⧁āϞ⧋ āĻ•āĻ–āύ⧋ āĻ•āĻžāϟāĻž āĻĒāĻĄāĻŧ⧇āύāĻŋ, āϏ⧇āϗ⧁āϞ⧋āχ primeāĨ¤

30 āĻĒāĻ°ā§āϝāĻ¨ā§āϤ Eratosthenes-āĻāϰ sieve āφāϗ⧇ 2-āĻāϰ āϗ⧁āĻŖāĻŋāϤāĻ• āĻ•āĻžāĻŸā§‹, āϤāĻžāϰāĻĒāϰ 3-āĻāϰ, āϤāĻžāϰāĻĒāϰ 5-āĻāϰāĨ¤ āϝāĻž āĻĨāĻžāϕ⧇, āϏ⧇āϗ⧁āϞ⧋āχ primeāĨ¤ 1 āĻŦāĻžāĻĻ 2 prime 3 prime 4 Ãˇ2 5 prime 6 Ãˇ2 7 prime 8 Ãˇ2 9 Ãˇ3 10 Ãˇ2 11 prime 12 Ãˇ2 13 prime 14 Ãˇ2 15 Ãˇ3 16 Ãˇ2 17 prime 18 Ãˇ2 19 prime 20 Ãˇ2 21 Ãˇ3 22 Ãˇ2 23 prime 24 Ãˇ2 25 Ãˇ5 26 Ãˇ2 27 Ãˇ3 28 Ãˇ2 29 prime 30 Ãˇ2 āĻ•āĻžāϟāĻž āϏāĻ‚āĻ–ā§āϝāĻžāϰ āĻ—āĻžāϝāĻŧ⧇ āϞ⧇āĻ–āĻž prime-āϟāĻžāχ āĻ“āϕ⧇ āĻĒā§āϰāĻĨāĻŽ āϕ⧇āĻŸā§‡āϛ⧇āĨ¤ 3 āĻļ⧁āϰ⧁ 9 āĻĨ⧇āϕ⧇, 5 āĻļ⧁āϰ⧁ 25 āĻĨ⧇āϕ⧇āĨ¤ 7 āĻļ⧁āϰ⧁ āĻšāϤ⧋ 49 āĻĨ⧇āϕ⧇, 30-āĻāϰ āĻŦāĻžāχāϰ⧇, āϤāĻžāχ 5-āĻāϰ āĻĒāϰ⧇āχ āĻĨāĻžāĻŽā§‹āĨ¤ āĻŦāĻžāĻ•āĻŋ āĻĨāĻžāϕ⧇ āĻĻāĻļāϟāĻž primeāĨ¤

Program-āϟāĻž āĻĒā§āϰāϤāĻŋāϟāĻž āϏāĻ‚āĻ–ā§āϝāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻž āĻ•āϰ⧇ true āĻŦāĻž false flag āϰāĻžāϖ⧇, āĻāĻ•āϟāĻž array-āϤ⧇āĨ¤ new Array(n + 1).fill(true) āĻŦāĻžāύāĻžāϝāĻŧ n + 1āϟāĻž āϘāϰ, 0 āĻĨ⧇āϕ⧇ n āύāĻŽā§āĻŦāϰ, āϏāĻŦāϗ⧁āϞ⧋āϤ⧇ trueāĨ¤ isPrime[m] m āύāĻŽā§āĻŦāϰ āϘāϰāϟāĻž āĻĒāĻĄāĻŧ⧇, āφāϰ isPrime[m] = false āĻ“āϟāĻžāϕ⧇ āϕ⧇āĻŸā§‡ āĻĻ⧇āϝāĻŧāĨ¤ Array āĻ āĻŋāĻ•āĻŽāϤ⧋ āĻļ⧇āĻ–āĻžāĻŦ⧇ Module 7; āĻāĻ–āĻžāύ⧇ array āĻŽāĻžāύ⧇ āĻļ⧁āϧ⧁ āĻāĻ• āϏāĻžāϰāĻŋ flagāĨ¤

Example 5: 30 āĻĒāĻ°ā§āϝāĻ¨ā§āϤ sieve

āύāϤ⧁āύ āϝāĻž: flag-āĻāϰ āĻāĻ•āϟāĻž array, āĻāĻ•āϟāĻž āĻ­āĻŋāϤāϰ⧇āϰ loop āϝ⧇āϟāĻž m += p āĻĻāĻŋāϝāĻŧ⧇ p āĻ•āϰ⧇ āϞāĻžāĻĢāĻžāϝāĻŧ, āφāϰ āφāϗ⧇āχ āĻ•āĻžāϟāĻž āϏāĻ‚āĻ–ā§āϝāĻž āĻŦāĻžāĻĻ āĻĻāĻŋāϤ⧇ continueāĨ¤

const input = require("fs").readFileSync(0, "utf8");
const tokens = input.split(/\s+/).filter(Boolean);
let at = 0;
const next = () => tokens[at++];
const nextInt = () => Number(next());
const out = [];

const n = nextInt();
const isPrime = new Array(n + 1).fill(true);
isPrime[0] = false;
isPrime[1] = false;

for (let p = 2; p * p <= n; p++) {
  if (!isPrime[p]) {
    continue;
  }
  let crossed = "";
  for (let m = p * p; m <= n; m += p) {
    if (isPrime[m]) {
      isPrime[m] = false;
      crossed += " " + m;
    }
  }
  out.push("crossed by " + p + ":" + crossed);
}

let primes = "";
for (let i = 2; i <= n; i++) {
  if (isPrime[i]) {
    primes += " " + i;
  }
}
out.push("primes:" + primes);

console.log(out.join("\n"));
crossed by 2: 4 6 8 10 12 14 16 18 20 22 24 26 28 30
crossed by 3: 9 15 21 27
crossed by 5: 25
primes: 2 3 5 7 11 13 17 19 23 29

āĻāχ output-āϟāĻž input 30-āĻāϰ āϜāĻ¨ā§āϝ, āφāϰ āĻ›āĻŦāĻŋāϰ āϏāĻžāĻĨ⧇ āϞāĻžāχāύ⧇ āϞāĻžāχāύ⧇ āĻŽā§‡āϞ⧇āĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž prime p āĻ•āĻžāϟāĻž āĻļ⧁āϰ⧁ āĻ•āϰ⧇ p * p āĻĨ⧇āϕ⧇, āĻ•āĻžāϰāĻŖ āĻāϰ āϛ⧋āϟ āĻĒā§āϰāϤāĻŋāϟāĻž āϗ⧁āĻŖāĻŋāϤāϕ⧇āϰ āĻāĻ•āϟāĻž āϛ⧋āϟ āĻ­āĻžāϜāĻ• āφāϛ⧇, āϝ⧇ āφāϗ⧇āχ āĻ“āϟāĻžāϕ⧇ āϕ⧇āĻŸā§‡ āϰ⧇āϖ⧇āϛ⧇āĨ¤ 4-āϕ⧇ continue āĻŦāĻžāĻĻ āĻĻ⧇āϝāĻŧ, āĻ•āĻžāϰāĻŖ 2 āĻ“āϟāĻžāϕ⧇ āϕ⧇āĻŸā§‡āϛ⧇āĨ¤ Sieve āϕ⧋āύ⧋ āĻ­āĻžāĻ—āχ āĻ•āϰ⧇ āύāĻž, āϤāĻžāχ n āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āϏāĻŦ prime āĻĻāϰāĻ•āĻžāϰ āĻšāϞ⧇ āĻāϟāĻžāχ āĻœā§‡āϤ⧇āĨ¤

Run in Compiler

switch āĻĻāĻŋāϝāĻŧ⧇ āĻāĻ•āϟāĻž menu

āĻāĻ•āϟāĻž switch āĻāĻ•āϟāĻž value-āϕ⧇ case value-āϗ⧁āϞ⧋āϰ āĻāĻ•āϟāĻž āϤāĻžāϞāĻŋāĻ•āĻžāϰ āϏāĻžāĻĨ⧇ āĻŽā§‡āϞāĻžāϝāĻŧ, === āĻĻāĻŋāϝāĻŧ⧇, āφāϰ āĻĒā§āϰāĻĨāĻŽ āĻŽāĻŋāϞ⧇ āϝāĻžāĻ“āϝāĻŧāĻž āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ āϞāĻžāĻĢ āĻĻ⧇āϝāĻŧāĨ¤ āĻāϰ āĻāĻ•āĻŽāĻžāĻ¤ā§āϰ āĻĢāĻžāρāĻĻāϟāĻž lesson 02 āĻĻ⧇āĻ–āĻŋāϝāĻŧ⧇āϛ⧇: break āύāĻž āĻĨāĻžāĻ•āϞ⧇ run āĻ—āĻĄāĻŧāĻŋāϝāĻŧ⧇ āĻĒāϰ⧇āϰ case-āĻ āĻĸ⧁āϕ⧇ āĻĒāĻĄāĻŧ⧇āĨ¤ āĻ“āχ āĻ—āĻĄāĻŧāĻŋāϝāĻŧ⧇ āĻĒāĻĄāĻŧāĻžāϰ (fall-through) āĻāĻ•āĻŽāĻžāĻ¤ā§āϰ āĻ¸ā§Ž āĻŦā§āϝāĻŦāĻšāĻžāϰāϟāĻžāĻ“ āĻĻ⧇āĻ–āĻŋāϝāĻŧ⧇āϛ⧇: āĻ•āϝāĻŧ⧇āĻ•āϟāĻž case āϝāĻ–āύ āĻāĻ•āχ āĻ•āĻžāϜ āĻ­āĻžāĻ— āĻ•āϰ⧇ āύ⧇āϝāĻŧāĨ¤

Example 6: Kenji-āϰ coffee kiosk

āύāϤ⧁āύ āϝāĻž: āĻāĻ•āϟāĻž while loop-āĻāϰ āĻ­āĻŋāϤāϰ⧇ āĻāĻ•āϟāĻž switch, āϝ⧇āĻ–āĻžāύ⧇ āĻĻ⧁āχāϟāĻž case āĻāĻ•āχ āĻ•āĻžāĻœā§‡ āĻœā§‹āϟ āĻŦ⧇āρāϧ⧇āϛ⧇āĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž āĻļāĻŦā§āĻĻ āĻāĻ•āϟāĻž item, āφāϰ pay bill print āĻ•āϰ⧇ āύāϤ⧁āύ bill āĻļ⧁āϰ⧁ āĻ•āϰ⧇āĨ¤

const input = require("fs").readFileSync(0, "utf8");
const tokens = input.split(/\s+/).filter(Boolean);
let at = 0;
const next = () => tokens[at++];
const nextInt = () => Number(next());
const out = [];

let total = 0;
let token = next();

while (token !== undefined) {
  switch (token) {
    case "tea":
      total += 20;
      break;
    case "coffee":
      total += 50;
      break;
    case "cake":
    case "muffin":
      total += 40;
      break;
    case "pay":
      out.push("paid " + total);
      total = 0;
      break;
    default:
      out.push("no item " + token);
  }
  token = next();
}

if (total > 0) {
  out.push("unpaid " + total);
}

console.log(out.join("\n"));
paid 110
no item juice
paid 60
unpaid 50

āĻāχ output-āϟāĻž input tea cake coffee pay muffin juice tea pay coffee-āĻāϰ āϜāĻ¨ā§āϝāĨ¤ cake āφāϰ muffin-āĻāϰ āĻĻāĻžāĻŽ āĻāĻ•āχ, āϤāĻžāχ āĻ–āĻžāϞāĻŋ case "cake": āχāĻšā§āϛ⧇ āĻ•āϰ⧇āχ āĻ—āĻĄāĻŧāĻŋāϝāĻŧ⧇ āĻĒāĻĄāĻŧ⧇āĨ¤ āϝ⧇ āĻļāĻŦā§āĻĻ⧇āϰ āϕ⧋āύ⧋ case āύ⧇āχ, āϤāĻžāϕ⧇ āϧāϰ⧇ defaultāĨ¤ āϖ⧇āϝāĻŧāĻžāϞ āϰ⧇āĻ–ā§‹, switch-āĻāϰ āĻ­āĻŋāϤāϰ⧇āϰ break āĻŦ⧇āϰ āĻ•āϰ⧇ switch āĻĨ⧇āϕ⧇, āϚāĻžāϰāĻĒāĻžāĻļ⧇āϰ loop āĻĨ⧇āϕ⧇ āύāĻžāĨ¤

Run in Compiler

āĻāĻ• pass-āĻāχ āĻšāĻŋāϏāĻžāĻŦ

āϚāϞāϤāĻŋ (running) value āĻŽāĻžāύ⧇ āϝ⧇āϟāĻž āĻĒā§āϰāϤāĻŋāϟāĻž item āφāϏāĻžāϰ āϏāĻžāĻĨ⧇ āϏāĻžāĻĨ⧇ update āĻšāϝāĻŧ, āϝ⧇āĻŽāύ āĻāĻ•āϟāĻž totalāĨ¤ āϚāϞāϤāĻŋ value āĻĨāĻžāĻ•āϞ⧇ program āĻĒā§āϰāϤāĻŋāϟāĻž item āĻāĻ•āĻŦāĻžāϰāχ āĻĒāĻĄāĻŧ⧇, āφāϰ āĻ•āĻŋāϛ⧁ āϜāĻŽāĻŋāϝāĻŧ⧇ āϰāĻžāϖ⧇ āύāĻžāĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž āϚāϞāϤāĻŋ value-āϰ āĻĻāϰāĻ•āĻžāϰ āĻāĻ•āϟāĻž āύāĻŋāϰāĻžāĻĒāĻĻ āĻļ⧁āϰ⧁āĨ¤ Count āĻļ⧁āϰ⧁ āĻšāϝāĻŧ 0 āĻĨ⧇āϕ⧇āĨ¤ āĻāĻ–āύ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦāĻĄāĻŧāϟāĻž (largest-so-far) āĻļ⧁āϰ⧁ āĻšāϝāĻŧ -Infinity āĻĨ⧇āϕ⧇, āϝ⧇āϟāĻžāϕ⧇ āϝ⧇āϕ⧋āύ⧋ āφāϏāϞ āϏāĻ‚āĻ–ā§āϝāĻž āĻšāĻžāϰāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧ, āύāϝāĻŧāϤ⧋ āĻĒā§āϰāĻĨāĻŽ item āĻĨ⧇āϕ⧇āχāĨ¤

Example 7: āĻāĻ• āϏāĻĒā§āϤāĻžāĻšā§‡āϰ āϤāĻžāĻĒāĻŽāĻžāĻ¤ā§āϰāĻž

āύāϤ⧁āύ āϝāĻž: āĻāĻ• loop-āĻ āĻ•āϝāĻŧ⧇āĻ•āϟāĻž āϚāϞāϤāĻŋ value, āφāϰ āφāϗ⧇āϰ item āĻŽāύ⧇ āϰāĻžāĻ–āϤ⧇ previousāĨ¤ David-āĻāϰ āφāĻŦāĻšāĻžāĻ“āϝāĻŧāĻžāϰ āĻ–āĻžāϤāĻžāϝāĻŧ āĻĻāĻŋāύ⧇ āĻāĻ•āϟāĻž āĻ•āϰ⧇ āϤāĻžāĻĒāĻŽāĻžāĻ¤ā§āϰāĻž, input āĻļ⧇āώ āύāĻž āĻšāĻ“āϝāĻŧāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤāĨ¤

const input = require("fs").readFileSync(0, "utf8");
const tokens = input.split(/\s+/).filter(Boolean);
let at = 0;
const next = () => tokens[at++];
const nextInt = () => Number(next());
const out = [];

let count = 0;
let highest = -Infinity;
let highestDay = 0;
let biggestRise = 0;
let frostDays = 0;
let previous = 0;

let token = next();
while (token !== undefined) {
  const t = Number(token);
  count++;
  if (t > highest) {
    highest = t;
    highestDay = count;
  }
  if (count > 1 && t - previous > biggestRise) {
    biggestRise = t - previous;
  }
  if (t < 0) {
    frostDays++;
  }
  previous = t;
  token = next();
}

out.push("days " + count);
out.push("highest " + highest + " on day " + highestDay);
out.push("biggest rise " + biggestRise);
out.push("frost days " + frostDays);

console.log(out.join("\n"));
days 7
highest 12 on day 7
biggest rise 13
frost days 2

āĻāχ output-āϟāĻž input 3 -2 4 9 7 -1 12-āĻāϰ āϜāĻ¨ā§āϝāĨ¤ āĻļ⧇āώ āĻĻāĻŋāύ⧇ -1 āĻĨ⧇āϕ⧇ 12-āϤ⧇ āĻ“āĻ āĻžāϟāĻž 13āĨ¤ count > 1 āĻĒā§āϰāĻĨāĻŽ āĻĻāĻŋāύāϟāĻžāϕ⧇ āφāĻ—āϞ⧇ āϰāĻžāϖ⧇, āĻ•āĻžāϰāĻŖ āĻ“āϰ āφāϗ⧇ āϕ⧋āύ⧋ āĻĻāĻŋāύ āύ⧇āχāĨ¤ >= āύāĻž āϞāĻŋāϖ⧇ > āϞ⧇āĻ–āĻžāϝāĻŧ āϏāĻ°ā§āĻŦā§‹āĻšā§āϚāϟāĻž āĻĒā§āϰāĻĨāĻŽ āϝ⧇āĻĻāĻŋāύ āϛ⧋āρāϝāĻŧāĻž āĻšāϝāĻŧ⧇āϛ⧇, āϏ⧇āχ āĻĻāĻŋāύāϟāĻžāχ āĻĨāĻžāϕ⧇āĨ¤ āϝ⧇ āϏāĻĒā§āϤāĻžāĻšā§‡ āĻļ⧁āϧ⧁ āĻ āĻžāĻ¨ā§āĻĄāĻžāχ āĻŦāĻžāĻĄāĻŧ⧇, āϏ⧇āĻ–āĻžāύ⧇ biggest rise āφāϏ⧇ 0, āφāϰ āĻāϟāĻž āĻāχ program-āĻāϰ āύāĻŋāĻœā§‡āϰ āĻŦ⧇āϛ⧇ āύ⧇āĻ“āϝāĻŧāĻž āύāĻŋāϝāĻŧāĻŽāĨ¤

Run in Compiler

āĻāϟāĻž āϕ⧋āĻĨāĻžāϝāĻŧ āĻ•āĻžāĻœā§‡ āϞāĻžāϗ⧇

  • āϚāĻžāĻ•āϰāĻŋāϰ screeningāĨ¤ Imran Ghory 2007 āϏāĻžāϞ⧇āϰ āĻāĻ• blog post-āĻ āϚāĻžāĻ•āϰāĻŋāĻĒā§āϰāĻžāĻ°ā§āĻĨā§€ āĻ›āĻžāρāĻ•āϤ⧇ FizzBuzz-āĻāϰ āĻĒā§āϰāĻ¸ā§āϤāĻžāĻŦ āĻĻ⧇āύāĨ¤ āĻāĻ•āχ āĻŦāĻ›āϰ Jeff Atwood-āĻāϰ "Why Can't Programmers.. Program?" āĻāϟāĻžāϕ⧇ āĻŦāĻŋāĻ–ā§āϝāĻžāϤ āĻ•āϰ⧇ āĻĻ⧇āϝāĻŧāĨ¤
  • OpenSSLāĨ¤ āϏāĻŽā§āĻ­āĻžāĻŦā§āϝāϤāĻž-āύāĻŋāĻ°ā§āĻ­āϰ Miller-Rabin test-āĻāϰ āφāϗ⧇ OpenSSL āĻāĻ•āϟāĻž āϏāĻŽā§āĻ­āĻžāĻŦā§āϝ prime-āϕ⧇ āϛ⧋āϟ āϛ⧋āϟ prime-āĻāϰ āĻāĻ•āϟāĻž table āĻĻāĻŋāϝāĻŧ⧇ āĻ­āĻžāĻ— āĻ•āϰ⧇ āĻĻ⧇āϖ⧇āĨ¤ āϏāĻ¸ā§āϤāĻž āĻāχ early exit āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āĻĒā§āϰāĻžāĻ°ā§āĻĨā§€āϕ⧇ āĻļ⧁āϰ⧁āϤ⧇āχ āĻŦāĻžāĻĻ āĻĻāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧāĨ¤
  • Unix-āĻāϰ wc toolāĨ¤ āĻāĻ•āϟāĻž file-āĻāϰ āϞāĻžāχāύ, āĻļāĻŦā§āĻĻ āφāϰ byte āĻ—ā§‹āύ⧇ āĻāĻ• pass-āĻāχ, Example 7-āĻāϰ āĻŽāϤ⧋ āϚāϞāϤāĻŋ count āĻĻāĻŋāϝāĻŧ⧇āĨ¤
  • ReduxāĨ¤ āĻ“āĻĻ⧇āϰ documentation āĻāĻ•āϟāĻž reducer āϞ⧇āϖ⧇ action.type-āĻāϰ āωāĻĒāϰ āĻāĻ•āϟāĻž switch āĻšāĻŋāϏ⧇āĻŦ⧇, āĻĒā§āϰāϤāĻŋāϟāĻž action-āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻž case āφāϰ āĻāĻ•āϟāĻž default āϏāĻš, āĻ āĻŋāĻ• Kenji-āϰ kiosk-āĻāϰ āĻ—āĻĄāĻŧāύ⧇āĨ¤

āϝ⧇ āϭ⧁āϞāϗ⧁āϞ⧋ āϏāĻŦāĻžāχ āĻ•āϰ⧇

ā§§. āĻœā§‹āĻĄāĻŧāĻž test āϏāĻŦāĻžāϰ āĻļ⧇āώ⧇āĨ¤

const out = [];
for (let i = 19; i <= 21; i++) {
  if (i % 3 === 0) {
    out.push("Fizz");
  } else if (i % 7 === 0) {
    out.push("Bazz");
  } else if (i % 3 === 0 && i % 7 === 0) {
    out.push("FizzBazz");
  } else {
    out.push(i);
  }
}
console.log(out.join("\n"));
19
20
Fizz

āϕ⧋āύ⧋ error āύ⧇āχ, āφāϰ 21 āĻŦāϞāϛ⧇ "Fizz"āĨ¤ āĻĒā§āϰāĻĨāĻŽ test-āχ 21-āĻāϰ āϏāĻžāĻĨ⧇ āĻŽāĻŋāϞ⧇ āϗ⧇āϛ⧇, āϤāĻžāχ āĻœā§‹āĻĄāĻŧāĻž branch-āϟāĻž āĻ•āĻ–āύ⧋ āϚāϞāϤ⧇āχ āĻĒāĻžāϰ⧇ āύāĻžāĨ¤ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ test āϏāĻŦāĻžāϰ āφāϗ⧇ āĻŦāϏāĻžāĻ“, āύāϝāĻŧāϤ⧋ Example 1-āĻāϰ āĻŽāϤ⧋ āĻļāĻŦā§āĻĻāϟāĻž āĻ—āĻĄāĻŧ⧇ āϤ⧋āϞ⧋āĨ¤ āϭ⧁āϞāϟāĻž āϤ⧁āĻŽāĻŋ āĻ•āϰāĻŦ⧇, āĻ•āĻžāϰāĻŖ āϖ⧇āϞāĻžāϰ āύāĻŋāϝāĻŧāĻŽ āϝ⧇ āĻ•ā§āϰāĻŽā§‡ āĻŦāϞāĻž āĻšāϝāĻŧ, āϤ⧁āĻŽāĻŋ āϏ⧇āχ āĻ•ā§āϰāĻŽā§‡āχ āϞ⧇āĻ–ā§‹āĨ¤

⧍. āϝ⧇ prime check 1-āϕ⧇ prime āĻŦāϞ⧇āĨ¤

const n = 1;
let prime = true;
for (let d = 2; d * d <= n; d++) {
  if (n % d === 0) {
    prime = false;
    break;
  }
}
console.log(n + (prime ? " is prime" : " is not prime"));
1 is prime

1-āĻāϰ āϜāĻ¨ā§āϝ loop āĻāĻ•āĻŦāĻžāϰāĻ“ āϚāϞ⧇ āύāĻž, āϤāĻžāχ flag-āϕ⧇ false āĻ•āϰāĻžāϰ āϕ⧇āω āύ⧇āχāĨ¤ āĻļ⧁āϰ⧁ āĻ•āϰ⧋ let prime = n >= 2; āĻĻāĻŋāϝāĻŧ⧇, āϤāĻžāĻšāϞ⧇ 0, 1 āφāϰ negative āϏāĻ‚āĻ–ā§āϝāĻž loop-āĻāϰ āφāϗ⧇āχ āĻŦāĻžāĻĻ āĻĒāĻĄāĻŧ⧇āĨ¤ āϭ⧁āϞāϟāĻž āĻšā§‹āĻ– āĻāĻĄāĻŧāĻžāĻŦ⧇, āĻ•āĻžāϰāĻŖ āϤ⧁āĻŽāĻŋ test āĻ•āϰ⧋ 7 āφāϰ 9 āĻĻāĻŋāϝāĻŧ⧇, 1 āĻĻāĻŋāϝāĻŧ⧇ āĻ•āĻ–āύ⧋ āύāĻžāĨ¤

ā§Š. āĻĻ⧁āχ loop-āĻāϰ counter-āĻāϰ āĻāĻ•āχ āύāĻžāĻŽāĨ¤

const out = [];
for (let i = 1; i <= 3; i++) {
  let line = "";
  for (let i = 1; i <= 3; i++) {
    line += String(i * i).padStart(3);
  }
  out.push(line);
}
console.log(out.join("\n"));
  1  4  9
  1  4  9
  1  4  9

āϕ⧋āύ⧋ error āύ⧇āχāĨ¤ āĻ­āĻŋāϤāϰ⧇āϰ let i āĻāĻ•āϟāĻž āύāϤ⧁āύ variable, āϝ⧇āϟāĻž āĻŦāĻžāχāϰ⧇āϰāϟāĻžāϕ⧇ āφāĻĄāĻŧāĻžāϞ āĻ•āϰ⧇ āĻĢ⧇āϞ⧇, āϤāĻžāχ i * i āĻĻ⧁āχāĻŦāĻžāϰāχ āĻ•āϞāĻžāĻŽāϟāĻž āύ⧇āϝāĻŧāĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž āϏāĻžāϰāĻŋ āĻāĻ•āχ āϰāĻ•āĻŽ āφāϏ⧇āĨ¤ Counter-āĻāϰ āύāĻžāĻŽ āĻĻāĻžāĻ“ āϏ⧇ āϝāĻž āĻ—ā§‹āύ⧇ āϏ⧇āχ āĻ…āύ⧁āϝāĻžāϝāĻŧā§€, row āφāϰ colāĨ¤ āϭ⧁āϞāϟāĻž āĻ•āϰāĻŦ⧇, āĻ•āĻžāϰāĻŖ āϝ⧇āϕ⧋āύ⧋ loop-āĻ āϤ⧋āĻŽāĻžāϰ āφāϙ⧁āϞ āφāĻĒāύāĻž āĻĨ⧇āϕ⧇āχ i āϟāĻžāχāĻĒ āĻ•āϰ⧇āĨ¤

ā§Ē. āϝ⧇ āϚāϞāϤāĻŋ minimum 0 āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻšāϝāĻŧāĨ¤

const temps = [5, 8, 3, 9];
let lowest = 0;
for (const t of temps) {
  if (t < lowest) {
    lowest = t;
  }
}
console.log("lowest " + lowest);
lowest 0

āϕ⧋āύ⧋ error āύ⧇āχ, āĻ…āĻĨāϚ 0 āϤāĻžāϞāĻŋāĻ•āĻžāϤ⧇āχ āύ⧇āχāĨ¤ āϕ⧋āύ⧋ āϤāĻžāĻĒāĻŽāĻžāĻ¤ā§āϰāĻžāχ āĻļ⧁āϰ⧁āϰ 0-āĻāϰ āύāĻŋāĻšā§‡ āύāĻž, āϤāĻžāχ āĻ“āϟāĻž āύāĻĄāĻŧ⧇āχ āύāĻžāĨ¤ āĻļ⧁āϰ⧁ āĻ•āϰ⧋ Infinity āĻĨ⧇āϕ⧇, āύāϝāĻŧāϤ⧋ āĻĒā§āϰāĻĨāĻŽ item āĻĨ⧇āϕ⧇āĨ¤ āϤ⧁āĻŽāĻŋ 0 āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻ•āϰāĻŦ⧇, āĻ•āĻžāϰāĻŖ total āĻļ⧁āϰ⧁ āĻšāϝāĻŧ āϏ⧇āĻ–āĻžāύ āĻĨ⧇āϕ⧇, āφāϰ minimum-āϕ⧇āĻ“ āĻāĻ•āχ āϜāĻžāϤ⧇āϰ āϜāĻŋāύāĻŋāϏ āĻŽāύ⧇ āĻšāϝāĻŧāĨ¤

āĻŽāĻžāĻĨāĻž āĻ–āĻžāϟāĻžāĻ“

const n = 97;
let tests = 0;
for (let d = 2; d * d <= n; d++) {
  tests++;
  if (n % d === 0) {
    break;
  }
}
console.log(tests);

n = 97-āĻāϰ āϜāĻ¨ā§āϝ āĻāχ trial division āĻ•āϝāĻŧāϟāĻž āϏāĻ‚āĻ–ā§āϝāĻž āϝāĻžāϚāĻžāχ āĻ•āϰ⧇? āφāϰ āĻĒā§āϰāĻĨāĻŽ āϞāĻžāχāύāϟāĻž āĻŦāĻĻāϞ⧇ const n = 100; āĻ•āϰāϞ⧇ āĻ•āϝāĻŧāϟāĻž? Run āĻ•āϰāĻžāϰ āφāϗ⧇ āĻĻ⧁āĻŸā§‹āχ āĻ•āĻžāĻ—āĻœā§‡ āĻŦ⧇āϰ āĻ•āϰ⧋āĨ¤

97-āĻāϰ āϜāĻ¨ā§āϝ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦāĻĄāĻŧ āϕ⧋āύ d-āϤ⧇ d * d <= 97 āĻ–āĻžāĻŸā§‡, āϖ⧁āρāĻœā§‡ āĻŦ⧇āϰ āĻ•āϰ⧋, āφāϰ āĻŽāύ⧇ āϰ⧇āĻ–ā§‹ āĻāĻ•āϟāĻž prime āĻ•āĻ–āύ⧋ break āϘāϟāĻžāϝāĻŧ āύāĻžāĨ¤ 100-āĻāϰ āϜāĻ¨ā§āϝ āĻ­āĻžāĻŦā§‹, āϕ⧋āύ d āĻ“āϕ⧇ āϏāĻŦāĻžāϰ āφāϗ⧇ āĻ­āĻžāĻ— āĻ•āϰ⧇āĨ¤

āĻ…āύ⧁āĻļā§€āϞāύ ā§§āϏāĻšāϜ

āĻ•āĻžāϞ Bob-āĻāϰ interview, āφāϰ āĻ“ āφāϏāϞ āϖ⧇āϞāĻžāϟāĻž āύāĻŋāĻ°ā§āϭ⧁āϞ āϚāĻžāϝāĻŧ, āĻĒā§āϰāϤāĻŋāϟāĻž āϞāĻžāχāύāĨ¤

Input. āĻāĻ•āϟāĻž āĻĒā§‚āĻ°ā§āĻŖāϏāĻ‚āĻ–ā§āϝāĻž nāĨ¤

Output. n-āϟāĻž āϞāĻžāχāύ, 1 āĻĨ⧇āϕ⧇ n āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻĒā§āϰāϤāĻŋāϟāĻž i-āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻžāĨ¤ i āϝāĻĻāĻŋ 3 āφāϰ 5 āĻĻ⧁āĻŸā§‹āϰāχ āϗ⧁āĻŖāĻŋāϤāĻ• āĻšāϝāĻŧ, print āĻ•āϰ⧋ FizzBuzz; āĻļ⧁āϧ⧁ 3-āĻāϰ āĻšāϞ⧇ Fizz, āĻļ⧁āϧ⧁ 5-āĻāϰ āĻšāϞ⧇ Buzz, āύāχāϞ⧇ i āύāĻŋāĻœā§‡āχāĨ¤

Constraints. 1 <= n <= 100000āĨ¤

Sample. Input 15 āĻĻāĻŋāϞ⧇ 15 āϞāĻžāχāύ⧇ 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14 āφāϰ FizzBuzzāĨ¤

const input = require("fs").readFileSync(0, "utf8");
const tokens = input.split(/\s+/).filter(Boolean);
let at = 0;
const next = () => tokens[at++];
const nextInt = () => Number(next());
const out = [];

// your code: read with next() and nextInt(), push every line of output to out

console.log(out.join("\n"));

fizzbuzz āύāĻžāĻŽā§‡ grade āĻšāϝāĻŧāĨ¤ Hidden test-āϗ⧁āϞ⧋ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰ⧇ n = 1, 15-āĻāϰ āϕ⧋āύ⧋ āϗ⧁āĻŖāĻŋāϤāϕ⧇āϰ āĻĻ⧁āχ āĻĒāĻžāĻļ⧇āϰ n, āφāϰ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦāĻĄāĻŧ nāĨ¤

Run in Compiler
āĻ…āύ⧁āĻļā§€āϞāύ ⧍āĻŽāĻžāĻāĻžāϰāĻŋ

Maria-āϰ āĻ•āĻžāϛ⧇ āĻĒā§‚āĻ°ā§āĻŖāϏāĻ‚āĻ–ā§āϝāĻžāϰ āĻāĻ•āϟāĻž āϤāĻžāϞāĻŋāĻ•āĻž āφāϛ⧇, āφāϰ āĻ“ āĻāĻ• pass-āĻāχ āϏāĻžāϰāĻžāĻ‚āĻļāϟāĻž āϚāĻžāϝāĻŧ, wc āϝ⧇āĻ­āĻžāĻŦ⧇ āĻāĻ•āϟāĻž file āĻ—ā§‹āύ⧇āĨ¤

Input. n, āϤāĻžāϰāĻĒāϰ n-āϟāĻž āĻĒā§‚āĻ°ā§āĻŖāϏāĻ‚āĻ–ā§āϝāĻžāĨ¤

Output. āϚāĻžāϰāϟāĻž āϞāĻžāχāύ: count āφāϰ n; min āφāϰ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āϛ⧋āϟāϟāĻž; max āφāϰ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦāĻĄāĻŧāϟāĻž; average āφāϰ āϝ⧋āĻ—āĻĢāϞāϕ⧇ n āĻĻāĻŋāϝāĻŧ⧇ āĻ­āĻžāĻ—, JavaScript āϏāĻ‚āĻ–ā§āϝāĻžāϟāĻž āϝ⧇āĻ­āĻžāĻŦ⧇ print āĻ•āϰ⧇ (String() āϝāĻž āĻĻ⧇āϝāĻŧ)āĨ¤

Constraints. 1 <= n <= 100000; -1000000000 <= āĻĒā§āϰāϤāĻŋāϟāĻž āϏāĻ‚āĻ–ā§āϝāĻž <= 1000000000, āϤāĻžāχ āϝ⧋āĻ—āĻĢāϞ āĻāĻ•āϟāĻž āύāĻŋāϖ⧁āρāϤ āĻĒā§‚āĻ°ā§āĻŖāϏāĻ‚āĻ–ā§āϝāĻžāĨ¤

Sample. Input 5, āϤāĻžāϰāĻĒāϰ 4 -3 12 7 1 āĻĻāĻŋāϞ⧇ āϚāĻžāϰ āϞāĻžāχāύ⧇ count 5, min -3, max 12 āφāϰ average 4.2āĨ¤

const input = require("fs").readFileSync(0, "utf8");
const tokens = input.split(/\s+/).filter(Boolean);
let at = 0;
const next = () => tokens[at++];
const nextInt = () => Number(next());
const out = [];

// your code: read with next() and nextInt(), push every line of output to out

console.log(out.join("\n"));

min-max-average āύāĻžāĻŽā§‡ grade āĻšāϝāĻŧāĨ¤ Hidden test-āĻ āφāϛ⧇ āĻāĻ•āϟāĻž āĻŽāĻžāĻ¤ā§āϰ āϏāĻ‚āĻ–ā§āϝāĻžāϰ āϤāĻžāϞāĻŋāĻ•āĻž, āĻāĻŽāύ āϤāĻžāϞāĻŋāĻ•āĻž āϝāĻžāϰ āĻĒā§āϰāϤāĻŋāϟāĻž āϏāĻ‚āĻ–ā§āϝāĻžāχ negative, āφāϰ āĻ…āύ⧁āĻŽāϤāĻŋāϰ āĻŽāĻ§ā§āϝ⧇ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦāĻĄāĻŧ value-āϗ⧁āϞ⧋āĨ¤

Run in Compiler
āĻ…āύ⧁āĻļā§€āϞāύ ā§ŠāĻŽāĻžāĻāĻžāϰāĻŋ

Alice-āĻāϰ āϖ⧇āϞāĻž Example 2-āĻāϰ āϏ⧀āĻŽāĻžāϟāĻž āϤ⧁āϞ⧇ āĻĻ⧇āϝāĻŧāĨ¤ āĻ—ā§‹āĻĒāύ āϏāĻ‚āĻ–ā§āϝāĻž āĻĒāĻžāĻ“āϝāĻŧāĻž āύāĻž āϝāĻžāĻ“āϝāĻŧāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ, āĻŦāĻž āĻ…āύ⧁āĻŽāĻžāύ āĻĢ⧁āϰāĻŋāϝāĻŧ⧇ āύāĻž āϝāĻžāĻ“āϝāĻŧāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ, āϖ⧇āϞ⧋āϝāĻŧāĻžāĻĄāĻŧ āĻ…āύ⧁āĻŽāĻžāύ āĻ•āϰ⧇āχ āϝāĻžāϝāĻŧāĨ¤

Input. āĻ—ā§‹āĻĒāύ āϏāĻ‚āĻ–ā§āϝāĻž s, āϤāĻžāϰāĻĒāϰ āĻ…āύ⧁āĻŽāĻžāύāϗ⧁āϞ⧋, input āĻļ⧇āώ āύāĻž āĻšāĻ“āϝāĻŧāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤāĨ¤ āĻāĻ•āϟāĻžāĻ“ āĻ…āύ⧁āĻŽāĻžāύ āύāĻž āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

Output. āĻ•ā§āϰāĻŽ āĻ…āύ⧁āϝāĻžāϝāĻŧā§€ āĻĒā§āϰāϤāĻŋāϟāĻž āĻ…āύ⧁āĻŽāĻžāύ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ• āϞāĻžāχāύāĨ¤ āĻ…āύ⧁āĻŽāĻžāύāϟāĻžāχ āĻ—ā§‹āĻĒāύ āϏāĻ‚āĻ–ā§āϝāĻž āĻšāϞ⧇ print āĻ•āϰ⧋ correct in k, āϝ⧇āĻ–āĻžāύ⧇ k āĻšāϞ⧋ āĻāχ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻĒāĻĄāĻŧāĻž āĻ…āύ⧁āĻŽāĻžāύ⧇āϰ āϏāĻ‚āĻ–ā§āϝāĻž, āĻāϟāĻžāϏāĻšāĨ¤ āϤāĻžāϰāĻĒāϰ āĻĨāĻžāĻŽā§‹, āĻĒāϰ⧇āϰ āĻ…āύ⧁āĻŽāĻžāύāϗ⧁āϞ⧋ āωāĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰ⧋āĨ¤ āĻ—ā§‹āĻĒāύ āϏāĻ‚āĻ–ā§āϝāĻž āĻŦāĻĄāĻŧ āĻšāϞ⧇ print āĻ•āϰ⧋ higher; āϛ⧋āϟ āĻšāϞ⧇ lowerāĨ¤ āĻ āĻŋāĻ• āĻ…āύ⧁āĻŽāĻžāύ āĻ›āĻžāĻĄāĻŧāĻžāχ input āĻļ⧇āώ āĻšāϞ⧇ print āĻ•āϰ⧋ not found after k, āϝ⧇āĻ–āĻžāύ⧇ k āĻšāϞ⧋ āĻĒāĻĄāĻŧāĻž āĻ…āύ⧁āĻŽāĻžāύ⧇āϰ āϏāĻ‚āĻ–ā§āϝāĻž, 0-āĻ“ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

Constraints. 1 <= s <= 1000000000; āĻŦāĻĄāĻŧāĻœā§‹āϰ 100000āϟāĻž āĻ…āύ⧁āĻŽāĻžāύ, āĻĒā§āϰāϤāĻŋāϟāĻž 1 āĻĨ⧇āϕ⧇ 1000000000āĨ¤

Sample. Input 50, āϤāĻžāϰāĻĒāϰ 25 75 50 10 āĻĻāĻŋāϞ⧇ āϤāĻŋāύ āϞāĻžāχāύ⧇ higher, lower āφāϰ correct in 3āĨ¤

const input = require("fs").readFileSync(0, "utf8");
const tokens = input.split(/\s+/).filter(Boolean);
let at = 0;
const next = () => tokens[at++];
const nextInt = () => Number(next());
const out = [];

// your code: read with next() and nextInt(), push every line of output to out

console.log(out.join("\n"));

guessing-game āύāĻžāĻŽā§‡ grade āĻšāϝāĻŧāĨ¤ Hidden test-āĻ āφāϛ⧇ āϕ⧋āύ⧋ āĻ…āύ⧁āĻŽāĻžāύ āĻ›āĻžāĻĄāĻŧāĻž input, āĻĒā§āϰāĻĨāĻŽ āĻ…āύ⧁āĻŽāĻžāύ⧇āχ āĻ āĻŋāĻ•, āφāϰ āĻ āĻŋāĻ• āĻ…āύ⧁āĻŽāĻžāύ⧇āϰ āĻĒāϰ⧇āĻ“ āφāϰāĻ“ āĻ…āύ⧁āĻŽāĻžāύāĨ¤

Run in Compiler
āĻ…āύ⧁āĻļā§€āϞāύ ā§ĒāĻ•āĻ āĻŋāύ

Kenji āϜāĻžāύāϤ⧇ āϚāĻžāϝāĻŧ, āĻāĻ•āϟāĻž āĻŦāĻĄāĻŧ n āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻ•āϝāĻŧāϟāĻž prime āφāϛ⧇, āφāϰ āϤāĻžāϰ āφāϗ⧇āϰ āĻļ⧇āώ prime-āϟāĻž āϕ⧋āύāϟāĻžāĨ¤

Input. āĻāĻ•āϟāĻž āĻĒā§‚āĻ°ā§āĻŖāϏāĻ‚āĻ–ā§āϝāĻž nāĨ¤

Output. āĻĻ⧁āχāϟāĻž āϞāĻžāχāύ: n-āĻāϰ āϏāĻŽāĻžāύ āĻŦāĻž āϛ⧋āϟ prime āĻ•āϝāĻŧāϟāĻž, āφāϰ āϤāĻžāĻĻ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦāĻĄāĻŧāϟāĻž, āϕ⧋āύ⧋āϟāĻž āύāĻž āĻĨāĻžāĻ•āϞ⧇ (n < 2) noneāĨ¤

Constraints. 1 <= n <= 15000000āĨ¤

Sample. Input 30 āĻĻāĻŋāϞ⧇ āĻĻ⧁āχ āϞāĻžāχāύ⧇ 10 āφāϰ 29āĨ¤

const input = require("fs").readFileSync(0, "utf8");
const tokens = input.split(/\s+/).filter(Boolean);
let at = 0;
const next = () => tokens[at++];
const nextInt = () => Number(next());
const out = [];

// your code: read with next() and nextInt(), push every line of output to out

console.log(out.join("\n"));

count-primes āύāĻžāĻŽā§‡ grade āĻšāϝāĻŧāĨ¤ Hidden test-āϗ⧁āϞ⧋ n = 1 āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧇ āĻ…āύ⧁āĻŽāϤāĻŋāϰ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦāĻĄāĻŧ n āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āϝāĻžāϝāĻŧāĨ¤

Run in Compiler

āϏāϚāϰāĻžāϚāϰ āϝ⧇ āĻĒā§āϰāĻļā§āύāϗ⧁āϞ⧋ āφāϏ⧇

  • d <= Math.sqrt(n) āύāĻž āϞāĻŋāϖ⧇ d * d <= n āϕ⧇āύ?

    āĻāχ lesson-āĻāϰ āϏāĻ‚āĻ–ā§āϝāĻžāϗ⧁āϞ⧋āϰ āϜāĻ¨ā§āϝ āĻĻ⧁āĻŸā§‹āχ āĻāĻ•āχ āϜāĻžāϝāĻŧāĻ—āĻžāϝāĻŧ āĻĨāĻžāĻŽā§‡āĨ¤ d * d āĻĒ⧁āϰ⧋āϟāĻž āĻĒā§‚āĻ°ā§āĻŖāϏāĻ‚āĻ–ā§āϝāĻžāϝāĻŧ āĻĨāĻžāϕ⧇, āϤāĻžāχ āĻŦāĻ°ā§āĻ—āĻŽā§‚āϞ⧇āϰ āϕ⧋āύ⧋ āĻ—ā§‹āϞ āĻ•āϰāĻž āϤ⧋āĻŽāĻžāϕ⧇ āϚāĻŽāϕ⧇ āĻĻāĻŋāϤ⧇ āĻĒāĻžāϰ⧇ āύāĻžāĨ¤ Kenji-āϰ āĻĒāĻ›āĻ¨ā§āĻĻ āϝ⧇ āĻāϤ⧇ āĻāĻ•āϟāĻž function call āĻŦāĻžāρāĻšā§‡, āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāϏāϞ āĻ•āĻžāϰāĻŖ āύāĻŋāϖ⧁āρāϤ āĻĨāĻžāĻ•āĻžāĨ¤

  • āĻĒā§āϰāϤāĻŋāϟāĻž āϞāĻžāχāύ out-āĻ push āĻ•āϰ⧇ āĻāĻ•āĻŦāĻžāϰ⧇ print āĻ•āϰāĻŋ āϕ⧇āύ?

    āĻĒā§āϰāϤāĻŋ āϞāĻžāχāύ⧇ āĻāĻ•āϟāĻž āĻ•āϰ⧇ console.log āĻ•āϝāĻŧ⧇āĻ• āĻšāĻžāϜāĻžāϰ āϞāĻžāχāύ⧇āϰ āĻĒāϰ āϧ⧀āϰ āĻšāϝāĻŧ⧇ āϝāĻžāϝāĻŧ, āφāϰ judge-āĻāϰ test-āĻ āĻāĻ• āϞāĻžāĻ– āϞāĻžāχāύāĻ“ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āϞāĻžāχāύāϗ⧁āϞ⧋ āϜāĻŽāĻŋāϝāĻŧ⧇ join āĻĻāĻŋāϝāĻŧ⧇ āĻāĻ•āĻŦāĻžāϰ⧇ print āĻ•āϰāϞ⧇ āϏ⧇āχ āĻāĻžāĻŽā§‡āϞāĻž āύ⧇āχāĨ¤ āϤāĻžāĻ›āĻžāĻĄāĻŧāĻž āĻāϤ⧇ āĻĒā§āϰāϤāĻŋāϟāĻž program-āĻāϰ āĻ—āĻĄāĻŧāύ āĻāĻ•āχ āĻĨāĻžāϕ⧇āĨ¤

  • Sieve āĻ•āĻŋ āϏāĻŦāϏāĻŽāϝāĻŧ trial division-āĻāϰ āĻšā§‡āϝāĻŧ⧇ āĻ­āĻžāϞ⧋?

    āύāĻžāĨ¤ āĻāĻ•āϟāĻž āĻŽāĻžāĻ¤ā§āϰ āϏāĻ‚āĻ–ā§āϝāĻž āϝāĻžāϚāĻžāχ āĻ•āϰāϤ⧇ trial division-āχ āϝāĻĨ⧇āĻˇā§āϟ, āφāϰ āϤāĻžāϤ⧇ āĻŦāĻžāĻĄāĻŧāϤāĻŋ memory āϞāĻžāϗ⧇ āύāĻžāĨ¤ n āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āϏāĻŦ prime āϞāĻžāĻ—āϞ⧇ sieve āĻœā§‡āϤ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āϏ⧇ āĻĒā§āϰāϤāĻŋāϟāĻž āϏāĻ‚āĻ–ā§āϝāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻž flag āϰāĻžāϖ⧇, āϤāĻžāχ n = 15,000,000 āĻŽāĻžāύ⧇ āĻĻ⧇āĻĄāĻŧ āϕ⧋āϟāĻŋ flagāĨ¤

  • āĻāĻ•āϟāĻž switch āĻ•āĻŋ string āĻŽā§‡āϞāĻžāϤ⧇ āĻĒāĻžāϰ⧇?

    āĻĒāĻžāϰ⧇āĨ¤ āϏ⧇ āĻŽā§‡āϞāĻžāϝāĻŧ === āĻĻāĻŋāϝāĻŧ⧇, āϤāĻžāχ "tea" āĻŽā§‡āϞ⧇ āĻļ⧁āϧ⧁ āĻšā§āĻŦāĻšā§ "tea" text-āĻāϰ āϏāĻžāĻĨ⧇āĨ¤ āĻŦāĻĄāĻŧ āĻšāĻžāϤ⧇āϰ āĻ…āĻ•ā§āώāϰāĻ“āϝāĻŧāĻžāϞāĻž "Tea" token āϚāϞ⧇ āϝāĻžāϝāĻŧ default-āĻāĨ¤

āĻŽā§‚āϞ āĻ•āĻĨāĻž

  • āĻāĻ•āϟāĻž if chain-āĻ āĻĒā§āϰāĻĨāĻŽ true test-āϟāĻžāχ āĻœā§‡āϤ⧇, āϤāĻžāχ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ test āĻŦāϏ⧇ āϏāĻŦāĻžāϰ āφāϗ⧇; āĻļāĻŦā§āĻĻāϟāĻž āĻ—āĻĄāĻŧ⧇ āϤ⧁āϞāϞ⧇ āĻ•ā§āϰāĻŽā§‡āϰ āĻāĻžāĻŽā§‡āϞāĻžāχ āĻĨāĻžāϕ⧇ āύāĻžāĨ¤
  • āĻāĻ•āϟāĻž loop āĻĻ⧁āχ āĻ•āĻžāϰāϪ⧇ āĻĨāĻžāĻŽāϤ⧇ āĻĒāĻžāϰ⧇: āϤāĻžāϰ āύāĻŋāĻœā§‡āϰ test, āφāϰ āĻāĻ•āϟāĻž breakāĨ¤ āϕ⧋āύāϟāĻž āϘāϟāϞ, āϏ⧇āϟāĻž āĻŽāύ⧇ āϰāĻžāϖ⧇ āĻāĻ•āϟāĻž flagāĨ¤
  • Nested loop āϗ⧁āĻŖ āĻšāϝāĻŧ: n āϏāĻžāϰāĻŋ āφāϰ n āĻ•āϞāĻžāĻŽ āĻŽāĻžāύ⧇ āĻ­āĻŋāϤāϰ⧇āϰ body āϚāϞ⧇ n āϗ⧁āĻŖ n āĻŦāĻžāϰāĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻž counter-āϕ⧇ āϤāĻžāϰ āύāĻŋāĻœā§‡āϰ āύāĻžāĻŽ āĻĻāĻžāĻ“āĨ¤
  • Prime check āĻĨāĻžāĻŽā§‡ d * d <= n-āĻ āφāϰ āĻĒā§āϰāĻĨāĻŽ āĻ­āĻžāϜāϕ⧇; n āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āϏāĻŦ prime āϖ⧁āρāϜāϤ⧇ sieve āϗ⧁āĻŖāĻŋāϤāĻ•āϗ⧁āϞ⧋ āϕ⧇āĻŸā§‡ āĻĻ⧇āϝāĻŧāĨ¤
  • āϚāϞāϤāĻŋ value input āĻāĻ•āĻŦāĻžāϰāχ āĻĒāĻĄāĻŧ⧇; minimum āĻŦāĻž maximum āĻāĻŽāύ āϜāĻžāϝāĻŧāĻ—āĻž āĻĨ⧇āϕ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧋, āϝāĻžāϤ⧇ āĻĒā§āϰāĻĨāĻŽ item āϧ⧋āρāĻ•āĻž āĻĻāĻŋāϤ⧇ āύāĻž āĻĒāĻžāϰ⧇āĨ¤
  • āφāϰāĻ“ āĻ—āĻ­ā§€āϰ⧇: Under the Hood, jump āĻĻāĻŋāϝāĻŧ⧇ loop, iterator protocol āφāϰ āĻāĻ•āϟāĻž loop lab (Pro)āĨ¤

āĻāϰāĻĒāϰ Kenji-āϰ review āĻŦāϞ⧇ "use forEach everywhere", āĻāĻŽāύ āĻāĻ•āϟāĻž loop-āĻ āϝ⧇āϟāĻžāϕ⧇ āφāϗ⧇āĻ­āĻžāϗ⧇ āĻĨāĻžāĻŽāϤ⧇ āĻšāĻŦ⧇, āφāϰ lesson 04 āϤāĻŋāύāϟāĻž āĻĒā§āϰāĻļā§āύ āĻĻāĻŋāϝāĻŧ⧇ āĻ āĻŋāĻ• loop-āϟāĻž āĻŦ⧇āϛ⧇ āύ⧇āϝāĻŧāĨ¤

lesson ā§Š āĻļ⧇āώ

āĻļ⧇āώ āĻšāϞ⧇ āϚāĻŋāĻšā§āύ āĻĻāĻŋāύ, āĻ…āĻ—ā§āϰāĻ—āϤāĻŋ āφāĻĒāύāĻžāϰ āϏāĻžāĻĨ⧇ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤

āĻĒāϰ⧇āϰāϟāĻž: āϕ⧋āύ loop, āφāϰ āĻ•āĻ–āύ if-āĻāϰ āĻšā§‡āϝāĻŧ⧇ switch āĻ­āĻžāϞ⧋

āĻĒ⧁āϰ⧋ program: FizzBuzz āĻĨ⧇āϕ⧇ prime sieve | Learn JavaScript | Progsity