Thread "faires" Mischen: Algorithmus gesucht (4 answers)
Opened by Raubtier at 2014-04-04 01:40

hlubenow
 2014-04-09 00:40
#174673 #174673
User since
2009-02-22
875 Artikel
BenutzerIn
[default_avatar]
Ich hab' das mal nach Python übersetzt, um es besser zu verstehen.
Was ich immer noch nicht tue ...
Code (python): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/bin/python

def fairShuffle(a):
    count = {}
    for i in a:
        if count.has_key(i):
            count[i] += 1
        else:
            count[i] = 1
    result = []
    # Returns a sorted list of the dictionary's keys,
    # sorted by values, lowest first:
    for key in sorted(count, key = count.get):
        newLength = len(result) + count[key]
        for i in range(1, count[key] + 1, 1):
            result.insert((i - 1) * newLength / count[key], key)
    return result

a = ["a" * 5, "b" * 3, "c" * 10, "d", "e"]
b = []
for i in a:
    for u in i:
        b.append(u)
c = fairShuffle(b)
print " ".join(c)

Spontan dachte ich an "Normalverteilung", aber damit hat das wohl nichts zu tun.
Woher kennt Dein Algorithmus die "richtigen" Abstände?

View full thread "faires" Mischen: Algorithmus gesucht