Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Felicitari Republica Moldova pent...

Decizie dificila intre doua model...

Orange nu onoreaza premiile din P...

Ungere mecanism usa metalica de a...
 Probleme baterie monde 3

Tipuri de acces Gura Portitei, di...

Crearea unei formule Excel cu div...

Filme ce urmeaza in 2024 - horror
 Tarot (2024)

Prescriere datorii parinti decedati

Utilizare credit cartela Vodafone

La multi ani @Cousteau !
 Inlocuire hdd cu ssd la NVR

Multe fisiere apar ca protejate c...

Serie noua - Profetii biblice cu....

Probleme functionare motocoasa Ma...
 

Problema la informatica [clasa a IX-a]

- - - - -
  • Please log in to reply
4 replies to this topic

#1
Luk1152

Luk1152

    New Member

  • Grup: Junior Members
  • Posts: 5
  • Înscris: 28.10.2016
Salutare. Am mai gasit inca o problema in cartea de informatica pe care nu am reusit sa o rezolv...
Enuntul problemei : Sa se afiseze toate numerele mai mici decat n care au proprietatea ca patratul si cubul fiecaruia au cel putin o cifra comuna.
Pentru fiecare numar gasit sa se afiseze cate cifre sunt comune si care sunt acestea.


Codul (Python 2.7.2) - l-am pus pe site-ul asta pentru ca aici, pe forum, nu era afisat corect codul...

Sper ca e destul de inteligibil codul... Sunt incepator. Deci ce am facut eu a fost sa retin cifrele comune intr-o variabila pe care sa o afisez la sfarsit, dar am vazut ca apar unele probleme (pe care le-am scris ingrosat mai jos) si chiar nu imi dau seama cum sa le rezolv...

Sa zicem ca n = 11. Asta e ce primesc eu in consola:

~~~ Cifrele lui 1 si 1 :
i = 1
Cifrele comune : 1
Numar de cifre comune: 1
~~~ Cifrele lui 16 si 64 :
i = 4
Cifrele comune : 6
Numar de cifre comune: 1
~~~ Cifrele lui 25 si 125 :
i = 5
Cifrele comune : 2
Numar de cifre comune: 2
~~~ Cifrele lui 36 si 216 :
i = 6
Cifrele comune : 6
Numar de cifre comune: 1
~~~ Cifrele lui 49 si 343 :
i = 7
Cifrele comune : 4

Numar de cifre comune: 1
~~~ Cifrele lui 100 si 1000 :
i = 10
Cifrele comune : 10
Numar de cifre comune: 8


Daca ati putea ca rezolvarea sa fie in pseudocod / python ar fi perfect Posted Image. E bine si in C++, dar mie imi e putin mai greu sa ii inteleg sintaxa. Si eu inca nu am invatat vectorii / matricele  si as cam vrea rezolvarea fara ele, asta in caz ca se poate rezolva cu astea, nu stiu. Va multumesc!

Edited by Luk1152, 31 October 2016 - 18:06.


#2
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Mai pythonic e asa:

	 1 n = 10
	 2 mapping={x: (list(map(int,str(x**2))), list(map(int,str(x**3)))) for x in range(n)}
	 3 print(mapping)
	 4 intersection_mapping={x: len(set(y[0]).intersection(y[1])) for x, y in mapping.items()}
	 5 print(intersection_mapping)

iti las tie filtrarea histogramei ca tema.

PS: python3.

Frumusetea la python e ca poti scrie rapid prototipuri destul de expresive, fara a intra in detalii. Codul tau arata mai mult ca cod scris in liceele romanesti, decat ca python idiomatic.

#3
Luk1152

Luk1152

    New Member

  • Grup: Junior Members
  • Posts: 5
  • Înscris: 28.10.2016
Iti multumesc pentru rezolvare :D. Acum am sa incerc sa aflu ce face fiecare linie de cod, dar nu ma grabesc (am invatat python singur si nu sunt chiar foarte avansat).

#4
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Ia-o gradual dupa nivelul complexitatii. Cele doua linii se numesc dictionary comprehension. Incearca in ordine:

{x: x for x in range(n)}
{x: x**2 for x in range(n)}
{x: (x**2, x**3) for x in range(n)}


e chiar banal, si expresiv: e o mapare, un dictionar, intre niste valori in stanga lui :, si alte valori in dreapta lui :. In calcularea fiecarei valori poti folosi euristici, de exemplu o euristica este

map(int,str(x))

care, dat fiind un x, iti livreaza cifrele lui x. Dar python nu calculeaza imediat valorile din lista, din motive de optimizare, deci poti forta acel map sa devina list inconjurand totul cu list():

list(map(int,str(x)))

Expresiv, compact, usor de inteles.

Dupa ce ti-ai exprimat ideea clar dpv algoritmic, poti trece la optimizarea ei. Codul pe care ti l-am aratat nu e cel mai performant, insa e expresiv. Iar la un prototip asta te intereseaza cel mai mult: expresivitatea si usurinta de a modifica. Cu cat ai mai putin cod, cu atat e mai usor de modificat.

#5
Luk1152

Luk1152

    New Member

  • Grup: Junior Members
  • Posts: 5
  • Înscris: 28.10.2016
Iti multumesc ca mi-ai explicat. :D

Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate