Fişierul intrare/ieşire:telefon.in, telefon.outSursăGrigore Moisil 2010, clasele 5-6
AutorClara IonescuAdăugată desavimSerban Andrei Stan savim
Timp execuţie pe test0.2 secLimită de memorie6144 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Telefon

Testele pentru aceasta problema nu sunt destul de bine construite pentru a departaja corect solutii ineficiente sau gresite.
Intra aici daca vrei sa ne ajuti sa imbunatatim calitatea testelor pentru aceasta problema!

Avem un telefon pe care butoanele cu cifre sunt aranjate ca în figura alăturată. Acest telefon este acţionat de către un robot care, iniţial, are capul de acţionare deasupra butonului *. Robotul se comandă cu următoarele comenzi:

  • S x – capul de acţionare se mişcă x unităţi în sus
  • J x – capul de acţionare se mişcă x unităţi în jos
  • DR x – capul de acţionare se mişcă x unităţi în dreapta
  • ST x – capul de acţionare se mişcă x unităţi în stânga
  • A – apasă capul de acţionare pe butonul deasupra căruia se află.

La terminarea formării numărului, capul trebuie să fie poziţionat deasupra butonului #.

Cerinţă

Scrieţi un program care citeşte un număr de telefon, având cel mult 10 cifre, apoi realizează apelarea acelui număr prin intermediul robotului, parcurgând un drum de lungime minimă deasupra tastaturii.

Date de intrare

În fişierul de intrare telefon.in este scris un număr întreg, reprezentând numărul de telefon care trebuie apelat.

Date de ieşire

În fişierul de ieşire telefon.out se vor scrie comenzile pe care trebuie să le execute robotul pentru a apela numărul de telefon dat. Comenzile se vor scrie pe o singură linie, în ordinea în care va trebui să le efectueze robotul. Două comenzi se vor despărţi printr-un singur spaţiu.

Exemplu

telefon.intelefon.out
123804
S 3 A DR 1 A DR 1 A J 2 ST 1 A J 1 A S 2 ST 1 A J 2 DR 2

Explicaţie

Mai întâi trebuie să mutăm capul de acţionare de deasupra butonului * deasupra butonului 1. În acest scop ne mutăm în sus 3 poziţii (S 3) şi apăsăm butonul (A). Urmează butonul 2, deci mutăm capul o poziţie la dreapta (DR 1) şi apăsăm (A). Pentru a ajunge la butonul 3, din nou facem o mutare la dreapta cu o poziţie (DR 1) şi apăsăm (A). Pentru a ajunge deasupra butonului 8, mai întâi mutăm capul în jos 2 poziţii (J 2), apoi la stânga o poziţie (ST 1) şi apăsăm (A). 0 se află sub 8, deci avem o mutare (J 1) şi apăsăm (A). Acum trebuie să ajungem la 4, deci urcăm 2 poziţii (S 2), apoi mutăm capul o poziţie la stânga (ST 1) şi apăsăm (A). În final mutăm capul deasupra butonului # cu comenzile J 2 şi DR 2. Aici nu trebuie să apăsăm butonul.

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?

remote content