Mai intai trebuie sa te autentifici.
Diferente pentru problema/monede3 intre reviziile #16 si #31
Nu exista diferente intre titluri.
Diferente intre continut:
* paznicul roteşte pătratul de carton (împreună cu monedele de pe colţuri) cu un unghi ales aleator dintre 0°, 90°, 180° şi 270° * Gigel îi cere paznicului să inverseze între una şi patru monede, specificând colţurile mesei corespunzătoare monedelor pe care doreşte să le inverseze (notate cu $A$, $B$, $C$ şi $D$)
* paznicul îi spune lui Gigel dacă după inversarea monedelor, scopul a fost atins (toate monedele au aceeaşi faţă); dacada, provocarea se termină şi Gigel a câştigat; dacă nu, se trece la runda următoare
* paznicul îi spune lui Gigel dacă după inversarea monedelor, scopul a fost atins (toate monedele au aceeaşi faţă); dacă da, provocarea se termină şi Gigel a câştigat; dacă nu, se trece la runda următoare
Dacă la finalul a 9 runde Gigel încă nu a câştigat, provocarea se termină, iar Gigel pierde.
!{width:500px}problema/monede3?monede3.png!
h2. Interacţiune Aceasta este o problemă interactivă. În loc să citiţi datele dintr-un fişier de intrare şi să afişaţi rezultatul într-un fişier de ieşire, veţi interacţiona cu evaluatorul citind de la _standard input_ (de exemplu folosind $scanf$ sau $cin$ în C/C++) şi afişând în _standard output_ (de exemplu folosind $printf$ sau $cout$ în C/C++).
h2.Interacţiune
Programul vostru va începe citind numărul de provocări la care participă Gigel. Pentru a ne asigura că metoda aleasă de voi rezolvă orice provocare în cel mult 9 runde, vor avea loc un număr de cel mult 100 de provocări. Imediat ce numărul de provocări a fost citit, va începe prima rundă a primei provocări.
Aceastaesteoproblemă interactivă. Înlocsă citiţi datele dintr-unfişier de intrareşi să afişaţi rezultatulîntr-unfişier deieşire,veţiinteracţiona cuevaluatorulcitinddateledela_standardinput_(deexemplu folosind$scanf$ sau $cin$înC/C++)şiafişândrezultatulla_standardoutput_ (de exemplu folosind$printf$sau$cout$înC/C++).
La fiecare rundă, programul vostru trebuie să afişeze un o linie (terminată cu $'\n'$), corespunzând poziţiilor monedelor pe care vrea să le inverseze. Caracterele afişate trebuie să fie distincte şi pot avea doar valorile $'A'$, $'B'$, $'C'$ sau $'D'$. După ce se afişează această linie, va trebui să citiţi rezultatul acţiunii voastre, exprimat printr-un număr întreg, ce poate avea valorile următoare:
h2. Date de ieşire
* $-1$: linia dată de voi este greşită * $1$: aţi câştigat provocarea (toate monedele au aceeaşi faţă) * $0$: încă nu aţi câştigat provocarea
Înfişierulde ieşire$monede3.out$ ...
În cazul în care aţi câştigat provocarea, va începe imediat următoarea provocare. După ce aţi câştigat şi ultima provocare, programul vostru trebuie să îşi încheie execuţia. Dacă aţi primit răspunsul $0$ în toate cele 9 runde ale unei provocări sau aţi primit vreun răspuns $-1$, programul vostru trebuie să îşi încheie deasemenea execuţia.
h2.Restricţii
Pentru a vă asigura că linia afişată de voi ajunge la _standard output_ în momentul dorit, asiguraţi-vă că aţi pus $'\n'$ la finalul liniei, iar după afişare faceţi flush la _standard output_.
* $... ≤ ... ≤ ...$
* În C sau C++, dacă aţi afişat folosind $printf$, apelaţi ulterior $fflush(stdout)$. * În C++, dacă aţi afişat folosind $cout$, apelaţi ulterior $cout.flush()$. * În Pascal, după afişare apelaţi $flush(output)$. * În Java, după afişare apelaţi $System.out.flush()$. * În Python, după afişare apelaţi $sys.stdout.flush()$.
h2. Exemplu
table(example). |_. monede3.in |_. monede3.out | | This is some text written on multiple lines. | This is another text written on multiple lines. | h3. Explicaţie
table(example). |_. stdin |_. stdout |_. Explicaţie | | 2 | | Numărul de provocări este 2. | | | | Pentru prima provocare s-a generat aleator configuraţia [0 1 0 0], care în prima rundă s-a rotit aleator cu 90°, deci avem [0 0 1 0]. | | | AC | Se inversează monedele de la poziţiile A şi C, deci [0 0 1 0] -> [1 0 0 0] | | 0 | | Încă nu am câştigat, provocarea continuă. | | | | Pătratul se roteşte aleator cu 270°, [1 0 0 0] -> [0 0 0 1]. | | | ABC | Se inversează monedele de la poziţiile A, B şi C, deci [0 0 0 1] -> [1 1 1 1] | | 1 | | Am câştigat prima provocare după două runde. | | | | Începe provocarea a doua. Se generează aleator configuraţia [0 1 0 1], care se roteşte aleator cu 0°. | | | ABCD | Se inversează toate monedele, deci [0 1 0 1] -> [1 0 1 0] | | 0 | | Încă nu am câştigat, provocarea continuă. | | | | Pătratul se roteşte aleator cu 90°, [1 0 1 0] -> [0 1 0 1]. | | | C | Se inversează moneda C, deci [0 1 0 1] -> [0 1 1 1] | | 0 | | Încă nu am câştigat, provocarea continuă. | | | | Pătratul se roteşte aleator cu 90°, [0 1 1 1] -> [1 0 1 1]. | | | B | Se inversează moneda B, deci [1 0 1 1] -> [1 1 1 1] | | 1 | | Am câştigat a doua (ultima) provocare după trei runde. | | | | Programul ar trebui să îşi încheie execuţia. |
...
_Observaţie:_ Există posibilitatea ca în configuraţia iniţială toate monedele să aibă aceeaşi faţă.
== include(page="template/taskfooter" task_id="monede3") ==