我正在研究一个python 2.6脚本,用一小部分媒体成绩单来创作诗歌。
Atm我很困惑地选择有效音节计数的随机组合来组成已知 - (音节)长度字符串池中的半随机行。当前函数受这里提出的powerset()函数的启发:http://docs.python.org/release/3.1.3/library/itertools.html
def valid(self, iterable, target):
s = list(iterable)
range_floor = target / max(s)
range_ceil = target / min(s)
unfiltered = chain.from_iterable(self.combinations_with_replacement(s, r) for r in range(range_floor, range_ceil))
return random.choice(list(ifilter(lambda x: sum(x) is target, unfiltered)))
快速举例说明:如果我有两组数据分为5个和10个音节单元组成一个20音节线,有效组合将包括:(5,5,5,5),(10, 10),(5,10,5)和(10,5,5)。
随着大量可能的组合(更长的线,超过两个组成单位长度)处理时间变得非常重要 - 这是我现在主要关注的问题。我最终可能会限制我的范围,并对某些变量提供硬性上限,以避免更激烈的选择。
当我写这篇文章时,我发现它可能是这样一种情况,只要坚持使用现有的算法和缓存/ pickle过去的结果来保存自己不止一次地完成工作 - 但是我没有CS或数学方面的背景,所以我怀疑我可能会忽略那些明显的东西。