我已经确定我要完成的是生成一个 powerset,似乎 itertools 可以帮助我完成它,但我需要应用一些规则来约束结果。
我想组合货币,但它们以货币对形式出现,这意味着并非所有可能的组合或序列都是可能的。
货币样本集:BTC、ETH、USD、EOS、XRP、IOT
相关货币对:ETH-BTC、ETH-USD、EOS-ETH、IOT-ETH、BTC-USD、EOS-BTC、XRP-BTC、IOT-BTC、EOS-USD、XRP-USD、IOT-USD
规则:序列中相邻的货币必须是有效对,序列中的第一个和最后一个货币也必须是有效对。货币对的顺序无关紧要(BTC-USD ≡ USD-BTC)。有效和无效序列示例: - 有效:{BTC, USD, EOS, ETH} 是有效序列,因为 BTC-USD、EOS-USD、EOS-ETH 和 ETH-BTC 是有效对 - 无效:{BTC, USD , IOT, XRP} 不是有效序列,因为 IOT-XRP 不是有效对 - 无效:{EOS, BTC, USD, IOT} 不是有效序列,因为第一个和最后一个货币 (EOS-IOT) 不形成一个有效的对。
此外,虽然 powerset 在技术上是任意长度的组合,但最小序列长度必须是三个,例如 {ETH, BTC, USD},没有最大长度。
提前致谢!我一直在把我的大脑变成糊状。