Fișierul intrare/ieșire tanc.in, tanc.out Sursă Test IQ Academy 2023 clasa a 6-a
Autor Cristian Frâncu Adăugată de avatar francu Cristian Francu francu
Timp de execuție pe test 0.1 sec Limită de memorie 262144 KB
Scorul tău N/A Dificultate stea de rating de tip fullstea de rating de tip fullstea de rating de tip fullstea de rating de tip fullstea de rating de tip empty
open book Poți vedea testele pentru această problemă accesând atașamentele .

Tanc (clasa a 6-a)

Un tanc ciudat are șenile compuse din S segmente. Un segment de șenilă este o grilă de M×M căsuțe de trei tipuri: normal, adună și scade. Tancul se deplasează într-un teren pătrat ce formează o grilă de căsuțe egale ca dimensiune cu căsuțele segmentelor șenilei tancului, terenul având latura de N căsuțe. Terenul se află la înălțimea H, în cm. Când tancul se deplasează segmentele sale ajung câte unul pe rând pe pământ, întâi segmentul 1, apoi segmentul 2, etc. După segmentul S urmează segmentul 1. Segmentul curent suprapune grila sa de căsuțe peste o regiune din matrice. La suprapunere se întâmplă următoarele:

  • O căsuță de tip adună, codificată cu A, va adăuga 1cm de pământ la înălțimea căsuței de dedesubt.
  • O căsuță de tip scade, codificată cu S, va reduce cu 1cm înălțimea căsuței de dedesubt, cu condiția să nu scadă sub zero. Dacă înălțimea căsuței terenului este zero atunci căsuța de tip ‘S’ nu va avea nici un efect.
  • O căsuță de tip normal, codificată cu N, nu are nici un efect, căsuța de dedesubt rămâne la aceeași înălțime.

Tancul intră în teren din colțul din stânga-sus, orientat către est, călcând pe primul segment din șenilă. Apoi primește la intrare comenzi de tipul E, N, V, sau S ce reprezintă deplasări cu o căsuță în direcția corespunzătoare punctului cardinal. Pentru o deplasare oarecare tancul se va răsuci cu fața către acel punct cardinal, segmentele șenilei sale rotindu-se ca atare. Tancul se oprește atunci când se termină comenzile de executat. Se garantează că tancul nu va ieși din teren.
La o deplasare a tancului segmentul actual al șenilei se ridică, iar următorul segment calcă pe pătratul M×M din matrice aflat în direcția dată de comandă. Segmentul va călca direct în poziția corectă pentru direcția de deplasare.

Cerință

Dându-se o descriere a șenilei, mărimea și înălțimea terenului și o secvență de comenzi, să se calculeze:

  1. Coordonatele finale ale tancului.
  2. Descrierea șenilei după executarea comenzilor de la intrare. Șenila va fi afișată începând cu segmentul de pe pământ, iar orientarea segmentelor trebuie să fie corectă, depinzând de orientarea tancului.
  3. Înălțimile terenului după executarea comenzilor. Înălțimile vor fi codificate cu cifre de la 0 la 9, sau cu Z dacă înălțimea depășește 9.

Date de intrare

În fișierul de intrare tanc.in se vor afla:

  • Pe prima linie T, numărul cerinței, 1, 2 sau 3.
  • Pe a doua linie numerele S M N H, respectiv numărul de segmente ale șenilei, latura unui segment, latura terenului și înălțimea inițială a terenului.
  • Pe următoarele M linii codificarea primului segment al șenilei, folosind literele N S și A (normal, scade, adună).
  • Pe următoarele M linii codificarea celui de-al doilea segment al șenilei.
  • Pe următoarele M linii codificarea segmentului numărul S.
  • Pe ultima linie comenzile de deplasare a tancului, codificate prin literele E N V S. Linia se termină cu caracterul sfârșit de linie.

Date de ieșire

În fișierul de ieșire tanc.out veți afișa:

  • L și C, coordonatele finale ale tancului, dacă cerința este 1. Colțul din stânga-sus are coordonate (1, 1).
  • Descrierea șenilei, dacă cerința este 2. Veți afișa cele S segmente, începând cu segmentul ce se află pe pământ, cu orientarea corectă conform orientării șenilei după executarea comenzilor.
  • Înălțimile terenului după executarea comenzilor, dacă cerința este 3. Înălțimile vor fi afișate pe linii, fiecare înălțime fiind codificată cu o cifră, dacă înălțimea este maxim 9, sau cu Z dacă înălțimea depășește 9.

Restricții

  • 2 ≤ S, M ≤ 10
  • MN ≤ 200
  • N multiplu de M
  • 0 ≤ H ≤ 100
  • 0 ≤ nr. comenzi de deplasare ≤ 50 000
  • Se garantează că tancul nu va ieși din teren.
  • Se acordă 10p pentru cerința 1, 30p pentru cerința 2 și 60p pentru cerința 3.

Exemplu

tanc.in tanc.out tanc.in tanc.out tanc.in tanc.out
1
4 3 9 3
NAS
NNA
SNN
ASS
NAA
NSN
ANS
NAN
NSN
NNN
AAA
SSS
SSENV
4 1
2
4 3 9 3
NAS
NNA
SNN
ASS
NAA
NSN
ANS
NAN
NSN
NNN
AAA
SSS
SSENV
NSN
AAN
SSA
NSN
NAN
SNA
SSS
AAA
NNN
NNS
ANN
SAN
3
4 3 9 3
NAS
NNA
SNN
ASS
NAA
NSN
ANS
NAN
NSN
NNN
AAA
SSS
SSENV
342333333
334333333
233333333
324243333
352433333
233332333
334333333
243444333
332222333
\2_. Explicații \2_. Explicații \2_. Explicații
Tancul se deplasează astfel:
sud – sud – est – nord – vest.
În final tancul ocupă o grila de
3 × 3 pătrățele al cărei colț
stânga-sus este la coordonatele
(4, 1)
În poziția finală tancul va
fi poziționat pe al doilea segment
al șenilei și orientat către vest.
După cele cinci deplasări
acestea vor fi înălțimile finale
ale terenului.

Explicații grafice la exemplu

Explicație Situația inițială, înainte de mișcare Mișcare și segmentul de șenilă pe sol Situația finală, după mișcare
Tancul intră mereu în colțul stânga sus.
Mai întâi pune segmentul 1.



Prima direcție este S.
Tancul se mișcă în direcția S,
dar pune pe sol segmentul 2.



A doua direcție este S.
Tancul se mișcă în direcția S,
dar pune pe sol segmentul 3.



A treia direcție este E.
Tancul se mișcă în direcția E,
dar pune pe sol segmentul 4.



A patra direcție este N.
Tancul se mișcă în direcția N,
dar pune pe sol segmentul 1.



A cincea direcție este V.
Tancul se mișcă în direcția V,
dar pune pe sol segmentul 2.



Trebuie să te autentifici pentru a trimite soluții. Click aici

Indicii de rezolvare

Arată 3 categorii