Putin ajutor cu Javascript: fizzbuz, tenis și bowling

Salut. Trebuie sa rezolv pana saptamana viitoare 4 probleme in limajul Javascript, un limbaj pe care nu il cunosc si momentan nu am timp sa il invat. Problemele nu sunt foarte grele, as sti sa le rezolv in c++ dar trebuie sa le fac in Javascript. Daca cineva se descurca bine in acest limbaj si ar putea sa ma ajute cu rezolvarea la cat stie din probleme ar fi super.

1)Scrieți un program care întreabă utilizatorul pentru un număr și afiseaza o serie de factori primari. De exemplu, dacă alege 1, ar trebui să obținem un vector gol. Dacă trecem 2, ar trebui să obținem un vector cu un singur element, care este 2 deoarece 2 poate fi descompus în 2 * 1. Dacă trecem 4, ar trebui să obtinem un vector de 2 și 2. Dacă trecem 6, noi ar trebui să obținmi un vector de 2 și 3, dar dacă vom trece 100, atunci programul ar trebui să returneze un vector de 2, 2, 5 și 5.

2)Scrieți un program care solicită utilizatorului un numar si returnați un șir cu seria de cifre de la 1 la numarul introdus, dar în loc de cifre divizibile cu 3, utilizați șirul “fizz”, cu 5, utilizați “buzz” , Și de ambele, utilizați “fizzbuzz”. De exemplu, dacă vom introduce 15, ar trebui să obținem o matrice de 1, 2, fizz, 4, buzz, fizz, 7, 8, fizz, buzz, 11, fizz, 13, 14, “fizzbuzz”.

3)Scrieți un program care simulează un joc de Tenis. Având la dispoziție 2 jucători, atribuiți aleatoriu puncte la unul dintre jucători, apoi apelati scorul (Thirty-Love, Deuce, Advantage Player 1 etc.) de fiecare dată. De exemplu, atunci când începe jocul, scorul este Love-All. Dacă jucătorul 1 castiga punctul după prima rundă, al doilea scor afișat este Fifteen-Love. Dacă jucătorul 2 castiga punctul după a doua rundă, al treilea scor arătat este Fifteen-All. Dacă jocul continuă în acest fel și ambii jucători obțin 4 puncte , scorul este Deuce. Cu alte cuvinte, rezultatul jocului aleator ar putea fi o serie de Love-All, Fifteen-Love, Thirty-Love, Thirty-Fifteen, Thirty-All, Advantage Player 1, Deuce, Advantage Player 2, Win for Player 2.

4)Scrieți un program care simulează un joc de bowling. Având în vedere doi jucători, se atribuie aleatoriu încercări de lovire, apoi se apelează scorul pentru fiecare rundă, împreună cu scorul total. Fiecare lovire poate dobora 0-10 popice, deci asigurați-vă că popicele și loviturile sunt calculate corespunzător.

Uite, facem așa: tu le rezolvi în C++ (și comentezi fiecare linie), noi te ajutăm să le rezolvi în JS. Ce zici, te bagi?

5 Likes

Good point, la ultimul punct dacă nu joci bowling stai 30 de minute să faci research cum se joacă bowling, ce scoruri sunt, când programul are 10-15 linii și e trivial.

La tenis iarăși, stai o oră să vezi ce înseamnă alea și ce scoruri se dau, că nu e deloc simplu calculul scorului la tenis.
Am încercat ca fapt divers tenisul fiindcă mi se pare interesantă logica. Îți dau o soluție în stilul meu la cea mai grea parte, dar s-ar putea să dai niște explicații la interviu :slight_smile: .

//jshint esnext:true

const scoring = {
    0 : 'Love',
    1: 'Fifteen',
    2 : 'Thirty',
    3 : 'Forty',
    4 : 'Set',
    'tie' : 'All',
    'tie3up' : 'Deuce',
    'ad' : 'Advantage',
    'game' : 'Game'
}

let scoruri = [[0,1],[1,1],[3,3],[3,4],[3,7],[1,0],[3,2],[11,9],[10,10]];

function interpret(scoruri){
  let scor = '';
  scoruri.map(x => {
    const e_egal = x[0] == x[1];
    const diferenta = x[0] - x[1];
    const e_maimicde3 = x[0] < 3 && x[1] < 3;
    const e_maimarede3 = !e_maimicde3;
    
    const tie = e_maimicde3 && e_egal;
    const tie3up = e_maimarede3 && e_egal;
    const adv = e_maimarede3;
    const adv1 = adv && diferenta > 0;
    const adv2 = adv && diferenta < 0;
    const game = Math.abs((diferenta)) >= 2;
    
    const winner = x[0]>x[1] ? `player 1` : `player 2`
    
    if (!tie && !tie3up && !adv && !game) {
      scor = `${scoring[x[0]]}-${scoring[x[1]]}`
    } else {
    if (tie) scor = `${scoring[x[0]]}-${scoring.tie}`;
    if (tie3up) scor = `${scoring.tie3up}`;
    if (adv1) scor = `${scoring.ad} 1`;
    if (adv2) scor = `${scoring.ad} 2`;
    if (game) scor = `${scoring.game}, winner is ${winner}`;
}
    
console.log(scor);
      
  });
}

interpret(scoruri);

Restul e trivial.

http://jsbin.com/bunilameli/edit?js,console

3 Likes