infoarena

Comunitate - feedback, proiecte si distractie => Blog => Subiect creat de: Cosmin Negruseri din Noiembrie 08, 2008, 10:28:18



Titlul: De ce Python?
Scris de: Cosmin Negruseri din Noiembrie 08, 2008, 10:28:18
Comentarii la postul http://infoarena.ro/blog/De-ce-Python


Titlul: Răspuns: De ce Python?
Scris de: Cosmin Negruseri din Noiembrie 08, 2008, 13:13:39
Ai dreptate, am corectat.


Titlul: Răspuns: De ce Python?
Scris de: Valentin Stanciu din Noiembrie 08, 2008, 13:56:29
Eu tot nu prea vad avantajele lui python fata de php.
Da, sunt foarte diferite ca gandire, insa toate lucurile pe care le-ai enumerat aici le are si php :)
Si ce are php in plus si nu are python este o documentatie buna!

Nu sunt fan php, insa mi se pare ca lumea lauda prea mult python


Titlul: Răspuns: De ce Python?
Scris de: Cosmin Negruseri din Noiembrie 09, 2008, 04:33:52
@Ovy Despre map, filter si lambda, Guido zice in articolul asta http://www.artima.com/weblogs/viewpost.jsp?thread=98196 ca pana la urma le va pastra desi vroia initial sa scape de toate (map, filter, reduce, lambda) si acum va sterge numai reduce. Exemplul meu la reduce e putin prost, practic sum e un reduce. Putea fi cu produsul elementelor si nu era asa simplu de rejectat.

Daca vrei sa mai zici de generators mai mult, ar fi interesant. Nici de programare obiectuala nu am zis.

Sa traiesti :), daca ai chef poate vrei sa scrii un blog post care sustine limbajul mai bine :).

E tare cand apar pe blog si alte puncte de vedere, si altfel apare un articol despre python scris de cineva cu experienta in limbaj fata de unul scris de un incepator.


Titlul: Răspuns: De ce Python?
Scris de: Tandrau Alexandru din Noiembrie 09, 2008, 14:00:36
Am un curs la universitate despre aplicatii web si baze de date. Ca parte a acestui curs, trebuie facut un proiect in python. Chiar daca la inceput imi placea python, in scurt timp mi-am dat seama de cateva probleme pe care le are acest limbaj, in programarea web.

Faptul ca indentarea face parte din cod nu e un lucru bun in PSP, deoarece trebuie avuta multa grija cu blocurile de cod HTML. Instructiunile gen if/else/for continua si cu codul HTML, iar pentru a iesi din blocul curent am fost nevoit sa adaug comentarii aiurea. Mi se pare mult mai ok folosirea {} pentru blocurile de cod.

Erorile sunt slab documentate pentru web. De exemplu, python returneaza un None-type pentru un entry care nu exista in baza de date, insa nu-ti spune exact unde a aparut aceasta eroare. Se pierde o gramada de timp in felul acesta.

Python pentru web e slab documentat. Sunt putine articole/tutoriale referitoare la acest subiect, iar siteul python.org nu ofera foarte mult ajutor prin structura. Searchul - implementat cu google search - nu mi se pare deloc cea mai buna solutie pentru acest site. Majoritatea cautarilor facute de mine au dat rezultate irelevante.

Python e pe drumul cel bun, dar va mai dura pana va ajunge un limbaj folositor pentru web. Momentan, eu raman la PHP.


Titlul: Răspuns: De ce Python?
Scris de: Tandrau Alexandru din Noiembrie 09, 2008, 23:34:19
Am folosit python server pages ca modul de apache.
Nu putem folosi nici un framework pentru python la proiect pentru a "intelege profunzimea limbajului", insa o sa ma uit peste Django si poate-mi schimba parerea despre Python.


Titlul: Răspuns: De ce Python?
Scris de: Adrian Diaconu din Noiembrie 09, 2008, 23:59:30
Amuzant site-ul asta de care ziceai: ProjectEuler (http://projecteuler.net/index.php). Pare numai bun pentru a incepe sa inveti un limbaj nou. Cel putin pe mine m-a tinut vreo doua zile in priza sa tot fac probleme :)


Titlul: Răspuns: De ce Python?
Scris de: Mircea Pasoi din Noiembrie 10, 2008, 00:03:27
@svalentin Ai folosit Python, ai scris cod in el? Python nu reprezinta doar sintaxa limbajului ci si filozofia din spatele lui care incurajeaza productivitatea si calitatea codului ("there should be one—and preferably only one—obvious way to do it"). In PHP trebuie sa te chinui sa impui niste reguli de coding si de structura care in Python vin de la sine, intr-un mod natural.
Si eu am fost sceptic in privinta limbajului, dar odata ce am invatat sa-l folosesc cum trebuie, mi s-a parut superb! Cred ca comic-ul asta exprima foarte bine cat de misto e Python:
(http://imgs.xkcd.com/comics/python.png)
Din punctul meu de vedere, Python e ca iPhone-ul sau ca Obama (cool, simple, slick) si recomand oricui sa-l incerce :yahoo:

@alexthero Cred ca problemele pe care tu le-ai intalnit nu au legatura cu limbajul in sine ci cu librariile/tool-urile pe care le folosesti. Cum a zis si Ovy, nu e o idee buna sa amesteci codul cu HTML-ul. Daca vrei sa faci programare web pe bune cu Python cel mai usor este sa folosesti un framework cum e Django, care e pythonic (http://faassen.n--tree.net/blog/view/weblog/2005/08/06/0).


Titlul: Răspuns: De ce Python?
Scris de: Cosmin Negruseri din Noiembrie 10, 2008, 00:25:32
@ Adrian, alt site de care am auzit e http://www.pythonchallenge.com/ in care treci de la un nivel la alt nivel folosindu-te de Python. Conceptul e similar cu hacker puzzle, from a to craZy sau brain tower  de care ziceam aici http://infoarena.ro/blog/jocuri-web doar ca trebuie sa scrii programe.


Titlul: Răspuns: De ce Python?
Scris de: Bogdan-Cristian Tataroiu din Noiembrie 10, 2008, 09:41:31
Din punctul meu de vedere, Python e ca iPhone-ul sau ca Obama (cool, simple, slick) si recomand oricui sa-l incerce :yahoo:

De altfel tot timpul e bine sa-ti alegi presedintele pentru ca e cool si slick :P


Titlul: Răspuns: De ce Python?
Scris de: Mircea Pasoi din Noiembrie 11, 2008, 00:39:53
Din punctul meu de vedere, Python e ca iPhone-ul sau ca Obama (cool, simple, slick) si recomand oricui sa-l incerce :yahoo:

De altfel tot timpul e bine sa-ti alegi presedintele pentru ca e cool si slick :P

N-am insinuat asta :D Nu iti place Obama sau Python?  :peacefingers:


Titlul: Răspuns: De ce Python?
Scris de: Andrei Grigorean din Noiembrie 11, 2008, 15:54:39
Din punctul meu de vedere, Python e ca iPhone-ul sau ca Obama (cool, simple, slick) si recomand oricui sa-l incerce :yahoo:

De altfel tot timpul e bine sa-ti alegi presedintele pentru ca e cool si slick :P

N-am insinuat asta :D Nu iti place Obama sau Python?  :peacefingers:

Python rules ;)


Titlul: Răspuns: De ce Python?
Scris de: Valentin Stanciu din Noiembrie 11, 2008, 20:28:19
@svalentin Ai folosit Python, ai scris cod in el? Python nu reprezinta doar sintaxa limbajului ci si filozofia din spatele lui care incurajeaza productivitatea si calitatea codului ("there should be one—and preferably only one—obvious way to do it"). In PHP trebuie sa te chinui sa impui niste reguli de coding si de structura care in Python vin de la sine, intr-un mod natural.

Da, am folosit Python, folosesc in continuare Python si ii exploatez din ce in ce mai mult posibilitatiile.
Stiu ca python iti impune practic o anumita filozofie, te forteaza sa scrii cod intr-un anumit fel, etc. Dar faptul ca iti impune un lucru nu inseamna ca celalalt limbaj este mai slab. La fel de "ordonat" scriam cod si inainte sa incerc python.

Da, sunt de acord, are exceptiile tratate foarte frumos, are unele librarii construite peste care sunt foarte misto (BeautifulSoup de exemplu), dar se creeaza un efect de halou in jurul lui. In afara de lucrul cu liste, tot ce a scris Cosmin despre python se regaseste si in php. (again, am folosit php doar ca exemplu argumentativ, nu sunt neaparat fan)

Si ca sa continui pe analogia ta: iPhone e super, are tot ce poti sa iti doresti, dar nu l-as cumpara nicidata pentru ca il tine mult prea putin bateria. :) (deseori nici macar o zi)

Uite un exemplu de lucru care m-a enervat in python: vreau sa printez ceva pe ecran fara separator dupa. Stiu ca se poate, dar nu in aceiasi formula simpla cu print.. (si deci se duce avantajul simplitatii pe cazul acesta particular)


Titlul: Răspuns: De ce Python?
Scris de: Mircea Pasoi din Noiembrie 11, 2008, 23:58:08
List comprehension (http://en.wikipedia.org/wiki/List_comprehension), sau lucrul cu listele cum ziceai tu, e un concept foarte puternic dupa parerea mea. Ca dovada, C# 3.0 are LINQ, care iti ofera aceasta functionalitate (exemple (http://artyprog.blogspot.com/2008/07/list-comprehension-in-c-with-linq.html)).

Bateria la iPhone 3G nu este un punct forte, dar nici nu se consuma foarte repede. Eu aveam inainte un Nokia E70, a carui baterie tinea tot cam atat, deci nu mi se pare iesit din comun.

N-am inteles exemplul cu separatorul, poti sa dai mai multe detalii?


Titlul: Răspuns: De ce Python?
Scris de: Valentin Stanciu din Noiembrie 12, 2008, 13:24:15
>>> print 'test'
afiseaza 'test' si "\n"

>>> print 'test',
afiseaza 'test' si spatiu dupa

>>> import sys
>>> sys.stdout.write('test')
afiseaza doar 'test'


Titlul: Răspuns: Răspuns: De ce Python?
Scris de: Cristian Strat din Noiembrie 12, 2008, 18:01:04
In afara de lucrul cu liste, tot ce a scris Cosmin despre python se regaseste si in php. (again, am folosit php doar ca exemplu argumentativ, nu sunt neaparat fan)

Un lucru care mie imi place mult si pe care Cosmin nu l-a mentionat este ca Python are closures (http://en.wikipedia.org/wiki/Closure_(computer_science)). Cred ca asta e o diferenta semnificativa fata de PHP.

In Python este foarte usor sa impachetezi niste cod intr-o functie (folosind def sau lambda) si sa-l pasezi mai departe. PHP are create_function insa nu suporta closures.

Exemplu:

Cod:
def logger(storage, tag="ERROR"):
    def log(msg):
        storage.append("%8s: %s" % (tag, msg))
    return log
...
loglines = []
elog = logger(loglines)
wlog = logger(loglines, "WARNING")
...
elog("Am ramas fara spatiu.")
wlog("Treaba merge greu.")
...
print loglines

afiseaza

Cod:
['   ERROR: Am ramas fara spatiu.', ' WARNING: Treaba merge greu.']


Titlul: Răspuns: De ce Python?
Scris de: Valentin Stanciu din Noiembrie 12, 2008, 18:06:48
Now this is cool! Pentru asta trebuie laudat python!


Titlul: Răspuns: De ce Python?
Scris de: Kerekes Felix din Noiembrie 14, 2008, 13:14:30
Foarte interesant http://www.pythonchallenge.com/.

Isi mai bate si altcineva capu? Momentan sunt la nivelul 15 si pana acum mi s-a parut foarte educativ, nu numai fun. Chiar te invata lucruri despre limbaj de care dai mai greu prin alte modalitati de invatare. Plus ca you learn by actually doing it!


Titlul: Răspuns: De ce Python?
Scris de: Radu Grigore din Noiembrie 18, 2008, 13:33:48
Cum ar trebui inițializată cu 0 o matrice mxn în Python? Eu scriu

Cod:
[[0 for _ in range(n)] for _ in range(m)]

dar parca trebuie sa fie si o metoda mai buna.


Titlul: Răspuns: De ce Python?
Scris de: Mircea Pasoi din Noiembrie 18, 2008, 14:48:40
Cod:
[[0] * M] * N


Titlul: Răspuns: De ce Python?
Scris de: Cosmin Negruseri din Noiembrie 19, 2008, 05:36:21
Despre cum sa scrii cod ce respecta paradigmele limbajului Python: http://python.net/%7Egoodger/projects/pycon/2007/idiomatic/handout.html


Titlul: Răspuns: De ce Python?
Scris de: Sima Cotizo din Noiembrie 22, 2008, 21:36:48
Am si eu o nelamurire. Am doua fisiere (nu stiu daca le pot zice module ):

ColorWrite.py:
Cod:
class ColorWrite:
        FWHT="\033[37m " # foreground white
        def __init__(self):
                print "Using ColorWrite\n"+self.FWHT,

FolderScanner.py:
Cod:
import os
import ColorWrite as cw

class IFolderScanner:
        w = cw.ColorWrite()
        def scan(self, path):
                pass

class fs1( IFolderScanner ):
        def __init__(self):
                w.write("Using basic file scanner (1)", "info")
        def scan(self, path):
                r = os.listdir(path)
                print r

Daca din interpreter dau import FolderScanner, imi va instantia una dintre cele doua clase din acel fisier, pt ca imi afiseaza mesajul din ColorWrite. Am importat initial si ColorWrite sa vad daca de acolo i se trage:

Cod:
Python 2.5.2 (r252:60911, Apr 21 2008, 11:12:42)
[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ColorWrite
>>> import FolderScanner
Using ColorWrite


Aveti idee de ce face asa? :?


Titlul: Răspuns: De ce Python?
Scris de: Bogdan-Cristian Tataroiu din Noiembrie 22, 2008, 22:07:24
Cod:
class IFolderScanner:
        w = cw.ColorWrite()

Astea ar trebui sa fie in __init__ daca vrei sa fie creat obiectul w doar cand se creaza o instanta a clasei IFolderScanner. Cauta pe google diferenta intre class attributes si instance attributes.

"Class atributes" sunt parsate cand e declarata clasa si o sa apara in toate instantele create dup-aia.


Titlul: Răspuns: De ce Python?
Scris de: Sima Cotizo din Noiembrie 22, 2008, 23:13:28
Multumesc, am cautat si pe net si am inteles. Interesant ca e o singura variabila pentru toate instantele (sper ca nu gresesc)


Titlul: Răspuns: De ce Python?
Scris de: Radu Grigore din Ianuarie 27, 2009, 13:06:21
@domino: Dacă faci [[0]*3]*4 lista de 3 zerouri e shared, asa ca asta nu initalizeaza o matrice de 4x3.


Titlul: Răspuns: De ce Python?
Scris de: Mircea Pasoi din Ianuarie 27, 2009, 22:41:14
@domino: Dacă faci [[0]*3]*4 lista de 3 zerouri e shared, asa ca asta nu initalizeaza o matrice de 4x3.

Da, good catch. Are cineva o solutie curata pentru chestie asta?


Titlul: Răspuns: De ce Python?
Scris de: Cosmin Negruseri din Ianuarie 28, 2009, 02:35:21
Eu asa fac:
Cod:
[[0] * m for i in range(n)]


Titlul: Răspuns: De ce Python?
Scris de: Andrei Misarca din Mai 27, 2010, 22:17:44
M-am hotărât să mă apuc să învăț python, dar nu am prea găsit niciun IDE calumea. Îmi puteți recomanda unul puternic pentru Linux/Windows? :)


Titlul: Răspuns: De ce Python?
Scris de: Pripoae Teodor Anton din Mai 27, 2010, 22:37:55
In linux cel mai bine ar fi sa bagi in vim. Ar mai fi Eric, Geany si PIDA sau Eclipse. Eu cand bag in python lucrez in vim.


Titlul: Răspuns: De ce Python?
Scris de: Andrei Misarca din Mai 27, 2010, 22:42:39
Și ce setări specifice ți-ai băgat?


Titlul: Răspuns: De ce Python?
Scris de: Pripoae Teodor Anton din Mai 27, 2010, 22:54:30
Cod:

map <F10> <ESC>:w<CR>:!chmod +x %<CR>:!time python %<CR>


Titlul: Răspuns: De ce Python?
Scris de: Valentin Stanciu din Mai 27, 2010, 23:26:17
In linux cel mai bine ar fi sa bagi in vim. Ar mai fi Eric, Geany si PIDA sau Eclipse. Eu cand bag in python lucrez in vim.
Si pe acelasi principiu: pe windows bagi notepad++.

In alta ordine de idei, NetBeans e destul de bun. Vezi: http://wiki.netbeans.org/Python
(Runs on Windows, Linux, Mac OS X and Solaris.)


Titlul: Răspuns: De ce Python?
Scris de: Andrei Misarca din Mai 28, 2010, 08:39:12
Am o întrebare, legată de array-uri. De ce dacă dau așa
Cod:
def solve(lim=1000000):
    visited = []
    for x in range(lim):
        visited.append(0)
merge, iar dacă dau
Cod:
def solve(lim=1000000):
    visited = [0]*lim
crapă pentru valori mari ale lui lim


Titlul: Răspuns: De ce Python?
Scris de: Sima Cotizo din Mai 28, 2010, 09:33:26
Valori cat de mari? Mie la 50000000 varianta cu prealocare nu mi-a crapat si a fost mult mai rapida (mult mult) decat cea cu append...


Titlul: Răspuns: De ce Python?
Scris de: Valentin Stanciu din Mai 28, 2010, 09:37:37
Nu uitati sa specificati si versiunea de python pentru care aveti probleme sau pentru care va merge.
In python se schimba multe lucruri de la o versiune la alta, mai ales in materie de fixind speed problems.


Titlul: Răspuns: De ce Python?
Scris de: Andrei Misarca din Mai 28, 2010, 10:14:12
Acuma merge. Pusesem la Python platform Jython, nu Python și aparent de la asta era.


Titlul: Răspuns: De ce Python?
Scris de: Pripoae Teodor Anton din Mai 28, 2010, 11:33:03
Pai e diferenta foarte mare intre python si jython. Primul e scris in c si e interpretor, al doilea stiu ca transforma in java bytecode si interpreteaza, sau ceva in genul asta. Iar diferenta intre cele 2 tipuri de alocari este diferenta intre a declara static in c si a declara cu vector stl.


Titlul: Răspuns: De ce Python?
Scris de: Andrei Misarca din Mai 28, 2010, 22:36:53
Mai am două întrebări :)
1. Cum pot face într-un for să parcurg descrescător un interval?
2. Cum pot face într-un for ca elementul cu care iterez să meargă din 2 în 2 sau din 3 în 3?

L.E.: Gata, am găsit că range poate avea 3 parametrii, ultimul fiind chiar cu cât să crească iteratorul.


Titlul: Răspuns: De ce Python?
Scris de: Stefan-Alexandru Filip din Mai 29, 2010, 09:15:13
Mai am două întrebări :)
1. Cum pot face într-un for să parcurg descrescător un interval?
2. Cum pot face într-un for ca elementul cu care iterez să meargă din 2 în 2 sau din 3 în 3?

L.E.: Gata, am găsit că range poate avea 3 parametrii, ultimul fiind chiar cu cât să crească iteratorul.

Pentru indexi este in general sa folosesti xrange in loc de range. Din cate stiu eu range(dim) iti va aloca un vector de dimensiune dim iar for-ul va parcurge toate elementele lui, in timp ce daca folosesti xrange(dim) vei avea un index care va lua pe rand toate cele dim valori si for-ul doar incrementeaza valoarea.


Titlul: Răspuns: De ce Python?
Scris de: Stefan Istrate din Mai 29, 2010, 11:19:14
Dar lucrurile se vor schimba în Python 3.0 unde xrange nu va mai exista.


Titlul: Răspuns: De ce Python?
Scris de: Bogdan-Cristian Tataroiu din Mai 29, 2010, 22:57:00
@Mishu1: O alta solutie cool ar fi sa faci slice pe array: x[inceput:sfarsit:step]. "inceput" si "sfarsit" se pot omite si poti face x[::-1] sau x[::2]. :)

@stef2n: In Python 3, range face acelasi lucru ca xrange in Python 2 (generator in loc de lista).


Titlul: Răspuns: De ce Python?
Scris de: Andrei Homorodean din Mai 30, 2010, 19:00:15
M-a rugat un prieten sa-i fac un script care ia o lista de usernames si creeaza ca si output cate un fisier pentru fiecare user cu o lista cu problemele rezolvate de respectivul user. Alegerea clara a fost python. Poate primesc ceva feedback. Uite ce a iesit:

Cod:
# this script takes a list of infoarena.ro usernames and outputs one txt file
# for each user containing the problems solved by that user

# importing html processing libraries
import urllib
from BeautifulSoup import BeautifulSoup
import re

# this function strips html and newlines
def remove_html_tags(data):
    p = re.compile(r'<.*?>')
    return p.sub('', data).strip()

# open file, we have one username on each line
file = open('userList.txt', 'r')

# iterate users
for user in file:

    # if we reached the end of the file
    if user == '\n':
        break

    # remove newline from the end of the line
    user = user.strip()

    # create a txt file for the current user
    userFile = open('problemsSolvedBy' + user + '.txt', 'w')

    # solved problems for the current user are found at
    # http://infoarena.ro/utilizator/*username*?action=stats
    # in the first span that has the 'task_enum' css class
    htmlFile = urllib.urlopen('http://infoarena.ro/utilizator/' + user + '?action=stats')

    # parse html elements
    soup = BeautifulSoup(htmlFile.read())

    # get the first span element that has task_enum class(the paragraph with the solved problems)
    problemsListSoup = soup.find('span', { 'class' : 'task_enum'})
   
    # split those problem tags
    problems = problemsListSoup.findAll('a')

    for problem in problems:
        userFile.write(remove_html_tags(problem.prettify()) + '\n')
   
    userFile.close()

    print user + ' done.'

file.close()
   

(Pentru a rula scriptul trebuie sa downloadati libraria Beautiful Soup - http://www.crummy.com/software/BeautifulSoup/download/3.x/BeautifulSoup-3.0.0.py redenumiti la BeautifulSoap - si sa o plasati in folderul Lib din directorul unde aveti instalat python)

L.E.: Am participat astazi la http://geekmeet.ro/cluj/2010/06/09/python-geekmeet-1-cluj si a fost foarte tare. Am uitat sa zic mai devreme..  :?


Titlul: Răspuns: De ce Python?
Scris de: Andrei Misarca din Iulie 07, 2010, 10:29:55
Îmi puteți recomanda, vărog, un tutorial python, unde să se prezinte cum poate fi folosit pentru dezvoltarea de pagini web. :)


Titlul: Răspuns: De ce Python?
Scris de: Savin Tiberiu din Iulie 07, 2010, 12:33:28
Vezi django (http://www.djangoproject.com/). E un framework de python pentru web si are un tutorial destul de bun.


Titlul: Răspuns: De ce Python?
Scris de: Pripoae Teodor Anton din Iulie 07, 2010, 17:46:49
Cu django pot sa te ajut eu cat de cat daca vrei. Am lucrat la cateva proiecte cu el.


Titlul: Răspuns: De ce Python?
Scris de: Cosmin Negruseri din Iulie 07, 2010, 22:15:07
Poti incerca si web.py sau tornado. Sunt similare cu django dar mai simple, si dupa parerea mea mai misto :).


Titlul: Răspuns: De ce Python?
Scris de: Andrei Homorodean din Iulie 08, 2010, 01:59:42
Poti incerca si web.py sau tornado. Sunt similare cu django dar mai simple, si dupa parerea mea mai misto :).
In aceeasi maniera mai e si Pylons. Dar Django are cea mai mare comunitate dintre cele enumerate si cred asta e criteriul dupa care ar trebui sa alegi.
Oricum, lucrul important in acest punct este sa inveti arhitectura MVC, arhitectura pe care se bazeaza framework-urile de mai sus.

Btw: Un grup cu o comunitate relativ ok ar fi: http://groups.google.ro/group/python-romania . Avantajul unui astfel de grup este ca mai apar oportunitati de job-uri.


Titlul: Răspuns: De ce Python?
Scris de: Pripoae Teodor Anton din Iulie 08, 2010, 14:39:58
Mai era si Nagare un framework interesant, am auzit chestii interesante despre el de la Dan Sanduleac, dar nu prea l-am studiat, m-am axat pe Django.


Titlul: Răspuns: De ce Python?
Scris de: Adina Mateescu din August 20, 2015, 18:14:54
Acest lucru mai trebuie citit de lume!!! Și eu am început să mai lucrez în el și îmi place mult. Sunt de acord cu toate punctele de vedere expuse de tine și le-am încercat și eu.
Aș vrea să știu dacă aici, pe Infoarena, se pot scrie surse în Python ??? . Vreau să îmi testez corectitudinea unui algoritm pe testele de la respectiva problemă. Mulțumesc anticipat  :D.