Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Bitnami MediaWiki
Search
Search
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
1281 - Regine1
Page
Discussion
English
Read
Edit
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
= Cerința = Se consideră o tablă de șah de dimensiune <code>n</code>. Să se plaseze pe tablă <code>n</code> regine astfel încât să nu existe două regine care să se atace. = Date de intrare = Programul citește de la tastatură numărul <code>n</code>. = Date de ieșire = Programul va afișa pe ecran o singură configurație validă a tablei de șah. Ea va fi alcătuită din <code>n</code> linii cu câte <code>n</code> caractere <code>-</code> sau <code>*</code>, separate prin câte un spațiu. Caracterul <code>-</code> reprezintă o poziție liberă de pe tablă, iar caracterul <code>*</code> reprezintă o poziție de pe tablă ocupată de o regină. = Restricții și precizări = * <code>4 ≤ n ≤ 10</code>; * două regine se atacă dacă se află pe aceeași linie, aceeași coloană sau aceeași diagonală; * orice configurație validă a tablei este acceptată. = Exemplul 1 = Intrare 4 Ieșire - - * - * - - - - - - * - * - - = Exemplul 2 = Intrare 1 Consola Dimensiunea tablei trebuie să fie între 4 ștre 4 și 10). == Rezolvare == <syntaxhighlight lang="python3" line="1"> def verifica_restrictie_n(n): # Verifică restricția asupra valorii lui n return 4 <= n <= 10 def verifica_restrictii(tabla, linie, coloana, n): # Verifică dacă este sigur să plasezi o regină la poziția (linie, coloana) # Verifică pe aceeași linie if '*' in tabla[linie]: return False # Verifică pe aceeași coloană if '*' in [tabla[i][coloana] for i in range(n)]: return False # Verifică pe diagonala principală if '*' in [tabla[i][i] for i in range(min(linie, coloana) + 1)]: return False # Verifică pe diagonala secundară if '*' in [tabla[i][coloana - (linie - i)] for i in range(min(linie, coloana, n - coloana - 1) + 1)]: return False return True def afiseaza_tabla(tabla, n): # Afișează configurația tablei de șah for i in range(n): print(' '.join(tabla[i])) def rezolva(tabla, linie, n): # Verifică dacă am plasat toate reginele if linie == n: afiseaza_tabla(tabla, n) exit() # Plasează regina pe fiecare coloană a liniei curente for coloana in range(n): if verifica_restrictii(tabla, linie, coloana, n): tabla[linie][coloana] = '*' rezolva(tabla, linie + 1, n) tabla[linie][coloana] = '-' # Cerem utilizatorului să introducă dimensiunea tablei de șah input_n = input("Introduceți dimensiunea tablei de șah (n între 4 și 10): ") # Verificăm restricția asupra valorii lui n try: n = int(input_n) if verifica_restrictie_n(n): # Inițializăm tabla de șah cu caractere '-' tabla = [['-' for _ in range(n)] for _ in range(n)] # Apelăm funcția pentru a rezolva problema rezolva(tabla, 0, n) else: print("Dimensiunea tablei trebuie să fie între 4 și 10.") except ValueError: print("Introduceți o valoare validă pentru n.") </syntaxhighlight>
Summary:
Please note that all contributions to Bitnami MediaWiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Bitnami MediaWiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Toggle limited content width