1329 – Șir Zigzag
Sursa: [1]
Cerința
Un şir se numeşte şir zigzag, dacă monotonia elementelor pe poziții succesive alternează între strict crescător și strict descrescător, adică a[1]>a[2]<a[3]>a[4] ... sau a[1]<a[2]>a[3]<a[4].... Se citeşe un şir cu n elemente. Să se verifice dacă este şir zigzag.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, reprezentând elementele șirului.
Date de ieșire
Programul va afișa pe ecran unul dintre mesajele DA sau NU după cum șirul dat este şir zigzag sau nu.
Restricții și precizări
- 3 ≤ n ≤ 1000
- 0 ≤ elementele şirului ≤ 1 000 000 000
Exemplu 1
- Intrare
- 5
- 1 5 3 7 5
- Ieșire
- DA
Explicație
Avem relațiile 1 < 5 > 3 < 7 > 5, deci e vorba de un șir zigzag.
Exemplu 2
- Intrare
- 5
- 4 3 5 1 2
- Ieșire
- DA
Explicație
Avem relațiile 4 > 3 < 5 > 1 < 2, deci e vorba de un șir zigzag.
Exemplu 3
- Intrare
- 5
- 4 3 2 1 2
- Ieșire
- NU
Explicație
Primele trei elemente ale șirului nu își schimbă monotonia, deci nu e șir zigzag.
Rezolvare
<syntaxhighlight lang="python" line>
- citim numarul de elemente din sir
numar_elemente = int(input("Introduceti numarul de elemente din sir: "))
- validam daca numarul de elemente se afla in intervalul permis
if numar_elemente < 3 or numar_elemente > 1000:
print("Numarul de elemente trebuie sa fie intre 3 si 1000") exit()
- citim sirul de numere si validam ca fiecare element se afla in intervalul permis
sir = list(map(int, input("Introduceti sirul de numere: ").split())) for numar in sir:
if numar < 0 or numar > 1000000000: print("Numerele trebuie sa fie intre 0 si 1 000 000 000") exit()
- initializam o variabila care va retine daca sirul este zigzag sau nu
este_zigzag = True
- parcurgem sirul si verificam monotonia triplurilor de elemente consecutive
for i in range(1, numar_elemente - 1):
if not ((sir[i-1] < sir[i] and sir[i] > sir[i+1]) or (sir[i-1] > sir[i] and sir[i] < sir[i+1])): este_zigzag = False break
print("Datele sunt introduse corect.")
- afisam rezultatul
if este_zigzag:
print("DA")
else:
print("NU")
print("Datele sunt introduse corect.")
</syntaxhighlight>