【发布时间】:2010-06-03 22:23:34
【问题描述】:
我存储 4 张牌的方式是对不同花色的牌进行相同处理,例如:
9h 8h 7c 6c
与
相同9d 8d 7h 6h
因为您可以将一套西装换成另一套并拥有相同的东西。使用通配符表示花色很容易将它们转换为独特的表示形式。以前的会变成:
9A 8A 7B 6B
我的问题是 - 将后者转回前者列表的最优雅方式是什么?例如,当输入为9A 8A 7B 6B时,输出应为:
9c 8c 7d 6d
9c 8c 7h 6h
9c 8c 7s 6s
9h 8h 7d 6d
9h 8h 7c 6c
9h 8h 7s 6s
9d 8d 7c 6c
9d 8d 7h 6h
9d 8d 7s 6s
9s 8s 7d 6d
9s 8s 7h 6h
9s 8s 7c 6c
我有一些丑陋的代码,根据有多少独特的套装,逐案执行此操作。它不会扩展到拥有更多卡片的手中。同样在这样的情况下:
7A 7B 8A 8B
它会有重复,因为在这种情况下 A=c 和 B=d 与 A=d 和 B=c 相同。
有什么优雅的方法可以有效地解决这个问题?我正在用 C 编写代码,但我可以将高级代码转换为 C。
【问题讨论】:
-
您的第一个示例是 9A 8A 7B 6C 而第二个示例是 9A 8A 7B 6B - 您的意思可能是 9h 8h 7c 6c 而不是 9h 8h 7c 6d。
标签: algorithm language-agnostic