Przejdź do treści głównej
🔒 Tryb podglądu. Pierwszych piętnaście lekcji Foundations jest darmowych; ta jest Pro. Rozpocznij 7-dniowy trial, aby odblokować edytor, podpowiedzi AI i resztę kursu. Wymagana karta, anulujesz w dowolnym momencie w Dashboard.Rozpocznij 7-dniowy trial →
← KursySystem Design for Python JuniorsModuł 1 · Podstawy projektowania systemówSharding (podział poziomy)predict8 / 105
+100 XP
Zadanie
📝 **Zadanie:** Przewiduj 5-liniowy wynik: pierwsze 4 linie pokazują shard:count for shards 0..3 w układzie 4-shardowym, następnie jedna linia ruchów połączonych przecinkami po ponownym podzieleniu na 5 fragmentów. 📋 Zaimplementuj powyższą funkcję. Testy uruchamiają się automatycznie. 💡 **Wskazówka:** Jeśli utkniesz, przeczytaj ponownie teorię.
Przewiduj wynik

Przeczytaj kod uważnie

from collections import Counter

USERS = ["u1", "u2", "u3", "u4", "u5", "u6", "u7", "u8"]

def shard_for(uid, n):
    return sum(ord(c) for c in uid) % n

def distribution(users, n):
    return Counter(shard_for(u, n) for u in users)

# 4-shard layout — print one line per shard.
d4 = distribution(USERS, 4)
for s in range(4):
    print(f"shard{s}:{d4[s]}")

# Re-shard to 5: how many users HOP to a different bucket?
moved = [u for u in USERS if shard_for(u, 4) != shard_for(u, 5)]
print("moved:" + ",".join(moved))

# What does this print? Type your prediction.

Co wypisze program? Napisz tutaj:

💬 Dyskusja

Zadaj pierwsze pytanie lub podziel się wskazówką.
Zaloguj się aby dołączyć do dyskusji. Czytanie jest darmowe.
Ładowanie dyskusji…