Diferente pentru problema/monede3 intre reviziile #15 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ţă); daca da, 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. Date de intrare
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.
Fişierul de intrare $monede3.in$ ...
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
În fişierul de ieşire $monede3.out$ ...
În cazul în care aţiştigat provocarea, va începe imediat următoarea provocare. Du ce iş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.
|
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. |
h3. Explicaţie
 
...
_Observaţie:_ Există posibilitatea ca în configuraţia iniţială toate monedele să aibă aceeaşi faţă.
== include(page="template/taskfooter" task_id="monede3") ==

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.