1006 - Pal Munte

From Bitnami MediaWiki
Revision as of 10:16, 22 April 2023 by Paul Ungur (talk | contribs) (Pagină nouă: ==Cerința== Să se afișeze pe ecran, în ordine crescătoare, toate palindromurile de tip munte cu exact 9 cifre. Un palindrom este de tip munte dacă cifrele sale sunt în ordine strict crescătoare până la jumătatea numărului. ==Date de intrare== Nu există! ==Date de ieșire== Programul va afișa pe ecran în ordine crescătoare, toate palindromurile de tip munte cu exact 9 cifre. ==Exemplu:== Ieșire 123454321 123464321 123474321 ... 457898754 467898764 56789876...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerința

Să se afișeze pe ecran, în ordine crescătoare, toate palindromurile de tip munte cu exact 9 cifre.

Un palindrom este de tip munte dacă cifrele sale sunt în ordine strict crescătoare până la jumătatea numărului.

Date de intrare

Nu există!

Date de ieșire

Programul va afișa pe ecran în ordine crescătoare, toate palindromurile de tip munte cu exact 9 cifre.

Exemplu:

Ieșire 123454321 123464321 123474321 ... 457898754 467898764 567898765

Explicație

Lista palindromurilor din exemplu nu este completă.

Rezolvare

<syntaxhighlight lang="python" line> def is_mountain_palindrome(n):

   digits = str(n)
   half = len(digits) // 2
   for i in range(half):
       if digits[i] >= digits[i+1:]:
           return False
   return True

def generate_palindromes():

   palindromes = []
   for i in range(1, 100000):
       if is_mountain_palindrome(i):
           palindromes.append(int(str(i) + str(i)[-2::-1]))
   return palindromes

def main():

   palindromes = generate_palindromes()
   palindromes.sort()
   for p in palindromes:
       print(p)

if __name__ == '__main__':

   main()

</syntaxhighlight>

Explicatie

Acest cod generează și afișează toate palindroamele de tip munte cu exact 9 cifre, în ordine crescătoare.

Funcția is_mountain_palindrome primește un număr și verifică dacă acesta este un palindrom de tip munte. Mai precis, transformă numărul într-un șir de caractere, împarte șirul în jumătate și verifică dacă primele cifre sunt strict în ordine crescătoare până la mijlocul șirului. Dacă da, întoarce adevărat, altfel întoarce fals.

Funcția generate_palindromes generează toate palindroamele de tip munte cu exact 9 cifre, iterând prin toate numerele de la 1 la 99999 și adăugând numerele care trec testul is_mountain_palindrome într-o listă. Pentru a construi palindromul, se concatenează numărul original cu oglinditul său, fără ultimele două cifre.

În funcția main, se apelează generate_palindromes pentru a obține lista de palindroame, se sortează lista și se afișează fiecare element pe o linie separată.