@Sargon_Ankro: odpowiadałem na komentarz przed usunięciem ret;
Ad 2) jeśli używasz int (signed) do iteracji po czymś co jest prawdopodobnie unsigned (list::sizetype) będziesz miał problem przy listach o rozmiarze większym niż INTMAX. Dlatego lepiej użyć albo iteratora, albo for (list::size_type i = 0; ...)
Tak czy inaczej - OK. Pytanie wzięło się z rozmowy kolegi z kandydatem, który niby znał wszystkie języki, a wymiękł przy tak skomplikowanym zadaniu
Ad 2) jeśli używasz int (signed) do iteracji po czymś co jest prawdopodobnie unsigned (list::sizetype) będziesz miał problem przy listach o rozmiarze większym niż INTMAX. Dlatego lepiej użyć albo iteratora, albo for (list::size_type i = 0; ...)
@co_to_sie_stanelo: no to chyba może od kompilatora zależeć. Ale dobrze wiedzieć, thx.
@Sargon_Ankro: @co_to_sie_stanelo: l.size() działa w czasie liniowym od rozmiaru listy, więc cała pętla działa w czasie kwadratowym (przy każdej iteracji liczy długość) polecam: int n=l.size(); for(int i = 0; i < n; i++) itd...
#naukaprogramowania #python
napisałeś że dowolny język więc c++:
bool abcd(std::list &l)
{
bool ret = true;
for (int i=0; i
{
for (int i=0; i
co do drugiego pytania - nie rozumiem. lista moze miec w #!$%@? elementów stałego typu, jedynym ograniczeniem jest tutaj pamięć.
Ad 2) jeśli używasz int (signed) do iteracji po czymś co jest prawdopodobnie unsigned (list::sizetype) będziesz miał problem przy listach o rozmiarze większym niż INTMAX. Dlatego lepiej użyć albo iteratora, albo for (list::size_type i = 0; ...)
Tak czy inaczej - OK. Pytanie wzięło się z rozmowy kolegi z kandydatem, który niby znał wszystkie języki, a wymiękł przy tak skomplikowanym zadaniu
def foo(lista):
return not bool(filter(lamda x: x%2 is 1, lista))
b=[]
def foo(*args):
for i in args:
if i % 2 != 0:
_b.append(1)
return [True, False] [1 in b]
1 is 1
daje True - to zależy od implementacji Pythona.@co_to_sie_stanelo: no to chyba może od kompilatora zależeć. Ale dobrze wiedzieć, thx.
def foo(*args):
for i in args:
if i % 2 != 0:
_return False
return True
l.size() działa w czasie liniowym od rozmiaru listy, więc cała pętla działa w czasie kwadratowym (przy każdej iteracji liczy długość)
polecam:
int n=l.size();
for(int i = 0; i < n; i++) itd...
def f(l):
_____if all(x % 2 == 0 for x in l):
________return True