diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2014-11-23 12:18:04 +0100 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2014-11-23 12:18:04 +0100 |
| commit | 5d3189d7345dd3b26a5753a16020ed4f7df0c4b1 (patch) | |
| tree | 8b260aa3116d6a2cdf58950e332726a3678754d3 /mobile.py | |
| parent | c8aa48924b284512075432b042ca15c31394ed14 (diff) | |
| download | bwinf-33-5d3189d7345dd3b26a5753a16020ed4f7df0c4b1.tar.gz bwinf-33-5d3189d7345dd3b26a5753a16020ed4f7df0c4b1.zip | |
Verschieben aller Dateien in Unterordner
Diffstat (limited to 'mobile.py')
| -rwxr-xr-x | mobile.py | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/mobile.py b/mobile.py deleted file mode 100755 index 481325c..0000000 --- a/mobile.py +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# getestet mit Python 2.7.8 und 3.4.2 -'''Verteilt und gleicht ein Mobile aus''' - -from math import floor - -# 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] - -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: - temp = [[] for j in range(4)] - for k, item in enumerate(_fig): - temp[k % 4].append(item) - - _fig = list(filter(None, temp)) - - temp = [] - for afig in _fig: - summe = 0 - for (_, k) in afig: - summe += k - - myweight = summe - # Gewicht Inhalt - temp.append((myweight, split(afig))) - - _fig = temp - return _fig - -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 - middle = int(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 - side = -1 if j < len(fig) / 2 else 1 - opposite = len(fig) - j - 1 - - figure = list(fig[j]) - if type(figure[1]) is list: - figure[1] = weight(figure[1]) - - # Position Inhalt - element = (fig[opposite][0] * side, figure[1]) - res.append(element) - - return res - -def mobile(liste): - '''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)) |
