mizantrol
#python #naukaprogramowania #programowanie

https://www.codewars.com/kata/55eea63119278d571d00006a/train/python

gdyby brakowało 1 cyfry w kolejności to dałbym radę, ale:

[0,0,1,1,2,2]
[0,0,0,0,0,0]

na tym się wywalam.
0
  • Najlepsze
  • Wszystkie komentarze
mizantrol
no tak. proste jak się zobaczy:

def next_id(arr):
t = 0
while t in arr:
t +=1
return t
1
a.....e
a.....e
@mizantrol: ~ Pidgeon hole principle.
0
a.....e
a.....e
@mizantrol: Jeśli nie wykminisz na podstawie tego hasła, to daj znać i wyjaśnię.
0
mizantrol
@aloucie: https://edube.org/sandbox/802015d4-9ef2-11ec-9fc1-0242157e55ca

sam zrobiłem, bez czytania o gołębiach...
ale domyślam się, że przekombinowałem i to będzie jakieś return arr // 3 czy coś takiego
0
a.....e
a.....e
@mizantrol: Fajne n^2 ;)
0
mizantrol
n^2


@aloucie:
0
a.....e
a.....e
@mizantrol: O(n^2)

W rozwiązaniu które wkleiłeś dla bardzo dużej listy będziesz w pesymistycznych scenariuszach bardzo młócił. Wyobraź sobie że masz listę [*range(99999998)] i masz zwrócić 99999999. A potem spójrz na implementację operatora 'in" dla listy.
0
mizantrol
@aloucie: to co proponujesz
0
a.....e
a.....e
@mizantrol: https://pastebin.com/Df0WnmXb - do wyboru

Każda z tych implementacji kończy u mnie < 10s. Różnią się zużyciem pamięci. Lista będzie pewnie najszybsza, ale zżera mnóstwo zasobów. gmpy2 jest efektywne (i dostępne na codewars).
0
a.....e
a.....e
@mizantrol: A wersję naiwną ubiłem po dwóch minutach bez wyniku.
0
Calka_internowana
Calka_internowana
@aloucie: A czemu po prostu tego nie posortować? xd https://pastebin.com/WQE1UVp2
0
mizantrol
@Calka_internowana: całkiem szybko zliczyło. to while musiałem wyłączyć bo mieliło faktycznie.
0
mizantrol
@aloucie: testowałem i rozwiązanie @Calka_internowana jest najszybsze.
0
a.....e
a.....e
@mizantrol: W prostych przypadkach najpewniej tak. Zależy od pesymistycznego scenariusza sortowania. W każdym razie sortowanie to nadal O(n log n), a nie O(n) ¯\_(ツ)_/¯
0
mizantrol
@aloucie: a czemu while tak muli, a for nie? przecież też oba lecą po kolei?
0
a.....e
a.....e
@mizantrol: Bo masz for'a w swoim while'u.
"t in arr" to~:

def in(arr, t):
for item in array:
if item
0