0909 - PermCircCif: Diferență între versiuni

De la Universitas MediaWiki
 
(Nu s-au afișat 3 versiuni intermediare efectuate de același utilizator)
Linia 17: Linia 17:
===Exemplul 1===
===Exemplul 1===


; Dacă '''n = 1372''', după apelul funcției '''perm''', valoarea lui n va fi '''3721'''.
;Intrare
:1372
;Ieșire
:Datele de intrare corespund restrictiilor impus.
:3721


==Important==
==Important==
Linia 32: Linia 36:
     else:
     else:
         return False
         return False


def perm(n):
def perm(n):
Linia 41: Linia 46:


     return int(''.join(map(str, cifre)))
     return int(''.join(map(str, cifre)))


if __name__ == '__main__':
if __name__ == '__main__':
     n = int(input())
     n = int(input())
     if validare(n):
     if validare(n):
         print("Datele sunt corecte.")
         print("Datele de intrare corespund restrictiilor impus.")
        print("Numarul initial: ", n)
         n = perm(n)
         n = perm(n)
         print("Numarul rotit: ", n)
         print("Numarul rotit:", n)
     else:
     else:
         print("Datele nu corespund restricțiilor impuse.")
         print("Datele de intrare nu corespund restrictiilor impus.")
 


</syntaxhighlight>
</syntaxhighlight>
==Explicatie==


Funcția validare(n) verifică dacă numărul de intrare se află între 1 și 999.999.999. Funcția perm(n) rotește numărul cu o poziție și îl returnează. În blocul if/else din if __name__ == '__main__':, se verifică dacă numărul de intrare este valid și se execută funcția perm(n) dacă este valid.
==Explicație==
 
Acest cod conține două funcții: validare și perm.
 
Funcția validare primește un număr n și verifică dacă acesta se află în intervalul [1, 1 000 000 000). Dacă numărul este valid, funcția returnează valoarea booleană True. În caz contrar, returnează valoarea booleană False.
 
Funcția perm primește un număr n și realizează o permutare circulară a cifrelor acestuia. Mai exact, funcția converteste numărul într-un șir de cifre, apoi mută prima cifră la finalul șirului și reasamblează șirul de cifre într-un număr întreg. Funcția returnează numărul obținut după permutare.
 
În blocul if-else de la sfârșitul fișierului, se citeste un număr întreg n de la tastatură. Apoi se verifică dacă acesta este valid, apelând funcția validare. Dacă numărul este valid, se afișează mesajul "Datele de intrare corespund restrictiilor impus." și se realizează permutarea circulară a cifrelor, apelând funcția perm și afișând rezultatul. În caz contrar, se afișează mesajul "Datele de intrare nu corespund restrictiilor impus." fără a realiza permutarea circulară a cifrelor.

Versiunea curentă din 6 mai 2023 16:14

Cerință

Să se scrie o funcție Python care să realizează permutarea circulară spre stânga a cifrelor unui număr natural. Numărul este transmis prin intermediul unui parametru care se întoarce din funcție modificat.

Restricții de precizări

  • numele funcției va fi perm
  • funcția va avea un singur parametru, n
  • parametrul n va fi un număr natural nenul mai mic decât 1.000.000.000

Date de intrare

Se citește de la tastatură un număr n.

Date de ieșire

Dacă datele sunt corecte, apare textul "Datele de intrare corespund restricțiilor impuse." și se returnează valoarea corectă. Dacă datele sunt incorecte, apare mesajul "Datele de intrare nu corespund restricțiilor impuse.".

Exemplu

Exemplul 1

Intrare
1372
Ieșire
Datele de intrare corespund restrictiilor impus.
3721

Important

Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.


Rezolvare

Rezolvare ver. 1

def validare(n):
    if 1 <= n < 1000000000:
        return True
    else:
        return False


def perm(n):
    if n < 10:
        return n

    cifre = [int(digit) for digit in str(n)]
    cifre.append(cifre.pop(0))

    return int(''.join(map(str, cifre)))


if __name__ == '__main__':
    n = int(input())
    if validare(n):
        print("Datele de intrare corespund restrictiilor impus.")
        n = perm(n)
        print("Numarul rotit:", n)
    else:
        print("Datele de intrare nu corespund restrictiilor impus.")

Explicație

Acest cod conține două funcții: validare și perm.

Funcția validare primește un număr n și verifică dacă acesta se află în intervalul [1, 1 000 000 000). Dacă numărul este valid, funcția returnează valoarea booleană True. În caz contrar, returnează valoarea booleană False.

Funcția perm primește un număr n și realizează o permutare circulară a cifrelor acestuia. Mai exact, funcția converteste numărul într-un șir de cifre, apoi mută prima cifră la finalul șirului și reasamblează șirul de cifre într-un număr întreg. Funcția returnează numărul obținut după permutare.

În blocul if-else de la sfârșitul fișierului, se citeste un număr întreg n de la tastatură. Apoi se verifică dacă acesta este valid, apelând funcția validare. Dacă numărul este valid, se afișează mesajul "Datele de intrare corespund restrictiilor impus." și se realizează permutarea circulară a cifrelor, apelând funcția perm și afișând rezultatul. În caz contrar, se afișează mesajul "Datele de intrare nu corespund restrictiilor impus." fără a realiza permutarea circulară a cifrelor.