diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2014-11-22 10:03:20 +0100 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2014-11-22 10:03:20 +0100 |
| commit | c519769f5b4941c1f0d818f06ceeb644ea8c9bc0 (patch) | |
| tree | a454e838d38fa7f159ca9a586e67995ff9eac990 | |
| parent | 14d6f3b2658a972e63286a3adc63c9a782945a75 (diff) | |
| download | bwinf-33-c519769f5b4941c1f0d818f06ceeb644ea8c9bc0.tar.gz bwinf-33-c519769f5b4941c1f0d818f06ceeb644ea8c9bc0.zip | |
pylint mobile.py
| -rwxr-xr-x | mobile.py | 55 |
1 files changed, 32 insertions, 23 deletions
@@ -1,48 +1,56 @@ #!/usr/bin/env python3 +# -*- coding: utf-8 -*- +'''Verteilt und gleicht ein Mobile aus''' + from math import floor -import random -# python list mit Elementen in der Form (Position, [Gewicht oder Liste]), wobei Position auf der linken Seite negativ ist -Mobile = [(-4, [(-2, [(0, 1)]), (1, [(0, 2)])]), (-1, [(0, 2)]), (2, [(0, 3)]), (4, [(0, 2)])] +# python list mit Elementen in der Form +# (Position, [Gewicht oder Liste]), +# wobei Position auf der linken Seite negativ ist +MOBILE = [(-4, [(-2, [(0, 1)]), (1, [(0, 2)])]), \ + (-1, [(0, 2)]), (2, [(0, 3)]), (4, [(0, 2)])] -Figuren = [2, 3, 1, 2, 3] +FIGUREN = [2, 3, 1, 2, 3] -# gibt eine Liste zurück, in der die Elemente aus `fig` auf 4er-Balken aufgeteilt sind def split(fig): + '''gibt eine Liste zurück, in der die Elemente +aus `fig` auf 4er-Balken aufgeteilt sind''' _fig = fig[:] if len(_fig) > 4: - b = [[] for j in range(4)] + temp = [[] for j in range(4)] for k, item in enumerate(_fig): - b[k % 4].append(item) + temp[k % 4].append(item) - _fig = list(filter(None, b)) + _fig = list(filter(None, temp)) - b = [] - for f in _fig: + temp = [] + for afig in _fig: summe = 0 - for (j, k) in f: + for (_, k) in afig: summe += k - weight = summe + myweight = summe # Gewicht Inhalt - b.append((weight, split(f))) + temp.append((myweight, split(afig))) - _fig = b + _fig = temp return _fig -# gibt ein ausgeglichenes Mobile zurück def weight(fig): + '''gibt ein ausgeglichenes Mobile zurück''' res = [] if len(fig) % 2 == 1: - # ist die Anzahl an Elementen ungerade, muss eines - hier das mittlerste - auf die Position 0 + # ist die Anzahl an Elementen ungerade, + # muss eines - hier das mittlerste - auf die Position 0 middle = floor(len(fig) / 2) res.append((0, fig[middle][1])) del fig[middle] for j in range(len(fig)): - # Die Position des Elements wird auf das Gewicht des gegenüberliegenden Elements gesetzt, - # sodass sich jeweils das Element mit dem Gegenüber ausgleicht + # Die Position des Elements wird auf das Gewicht des + # gegenüberliegenden Elements gesetzt, sodass sich + # jeweils das Element mit dem Gegenüber ausgleicht side = -1 if j < len(fig) / 2 else 1 opposite = len(fig) - j - 1 @@ -57,10 +65,11 @@ def weight(fig): return res def mobile(liste): - r = list([(j, j) for j in liste]) # der Input wird aufbereitet - f = split(r) - w = weight(f) - return w + '''erstellt ein Mobile aus einer Liste von Figuren''' + inp = list([(j, j) for j in liste]) # der Input wird aufbereitet + splitted = split(inp) + weighted = weight(splitted) + return weighted if __name__ == "__main__": - print(mobile(Figuren)) + print(mobile(FIGUREN)) |
