1006 - Pal Munte: Difference between revisions

From Bitnami MediaWiki
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...
 
Paul Ungur (talk | contribs)
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 8: Line 8:


==Date de ieșire==
==Date de ieșire==
Programul va afișa pe ecran în ordine crescătoare, toate palindromurile de tip munte cu exact 9 cifre.
Dacă datele sunt introduse corect, pe ecran se va afișa: '''"Date de intrare valide."''', apoi programul va afișa pe ecran în ordine crescătoare, toate palindromurile de tip munte cu exact 9 cifre. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: '''"Date de intrare invalide".'''


==Exemplu:==
==Exemplu:==
Ieșire
Ieșire
123454321
: Date de intrare valide
123464321
: 123454321
123474321
: 123464321
: 123474321
...
...
457898754
: 457898754
467898764
: 467898764
567898765
: 567898765


==Explicație==
==Explicație==
Line 25: Line 26:
==Rezolvare==
==Rezolvare==
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
def is_mountain_palindrome(n):
def palindrom():
     digits = str(n)
     for i in range(1, 6):
    half = len(digits) // 2
        for j in range(i + 1, 7):
    for i in range(half):
            for n in range(j + 1, 8):
        if digits[i] >= digits[i+1:]:
                for m in range(n + 1, 9):
            return False
                    for k in range(m + 1, 10):
    return True
                        print(i, j, n, m, k, m, n, j, i)


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__':
if __name__ == '__main__':
     main()
     palindrom()
</syntaxhighlight>
</syntaxhighlight>
==Explicatie cod:==
Funcția palindrom generează și afișează toate palindroamele de lungime 9 compuse din cifrele de la 1 la 9. Un palindrom este un număr sau o secvență care poate fi citită în aceeași ordine și în ordine inversă.


==Explicatie==
Explicația funcției:
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ă.
Funcția palindrom nu primește niciun argument.
Folosind instrucțiunea for, se realizează bucle înlănțuite pentru fiecare cifră în intervalul de la 1 la 5 pentru variabila i, de la i + 1 la 6 pentru variabila j, de la j + 1 la 7 pentru variabila n, de la n + 1 la 8 pentru variabila m, și de la m + 1 la 9 pentru variabila k.
În interiorul buclelor înlănțuite, se afișează palindromul format din valorile variabilelor i, j, n, m, k, m, n, j, i. Ordinea acestor cifre generează un palindrom de lungime 9, deoarece palindroamele sunt citite în aceeași ordine și în ordine inversă.

Latest revision as of 19:07, 29 June 2023

Cerința[edit]

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[edit]

Nu există!

Date de ieșire[edit]

Dacă datele sunt introduse corect, pe ecran se va afișa: "Date de intrare valide.", apoi programul va afișa pe ecran în ordine crescătoare, toate palindromurile de tip munte cu exact 9 cifre. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Date de intrare invalide".

Exemplu:[edit]

Ieșire

Date de intrare valide
123454321
123464321
123474321

...

457898754
467898764
567898765

Explicație[edit]

Lista palindromurilor din exemplu nu este completă.

Rezolvare[edit]

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

   for i in range(1, 6):
       for j in range(i + 1, 7):
           for n in range(j + 1, 8):
               for m in range(n + 1, 9):
                   for k in range(m + 1, 10):
                       print(i, j, n, m, k, m, n, j, i)


if __name__ == '__main__':

   palindrom()

</syntaxhighlight>

Explicatie cod:[edit]

Funcția palindrom generează și afișează toate palindroamele de lungime 9 compuse din cifrele de la 1 la 9. Un palindrom este un număr sau o secvență care poate fi citită în aceeași ordine și în ordine inversă.

Explicația funcției:

Funcția palindrom nu primește niciun argument. Folosind instrucțiunea for, se realizează bucle înlănțuite pentru fiecare cifră în intervalul de la 1 la 5 pentru variabila i, de la i + 1 la 6 pentru variabila j, de la j + 1 la 7 pentru variabila n, de la n + 1 la 8 pentru variabila m, și de la m + 1 la 9 pentru variabila k. În interiorul buclelor înlănțuite, se afișează palindromul format din valorile variabilelor i, j, n, m, k, m, n, j, i. Ordinea acestor cifre generează un palindrom de lungime 9, deoarece palindroamele sunt citite în aceeași ordine și în ordine inversă.