#card #deck #standard #representation #access #represents #storage

standard_card

一个用于高效表示卡片的轻量级库

5个稳定版本

1.4.0 2024年6月18日
1.3.0 2024年4月12日
1.2.0 2024年4月11日
1.1.0 2024年4月11日
1.0.0 2024年4月10日

#1#represents

每月下载量33

MIT 许可证

27KB
457

一个用于高效表示卡片的轻量级库

StandardCard 库提供了一个程序员友好的方式来表示一副52张的标准牌。

它既重视快速访问卡片信息,又注重最小的存储占用,使其非常适合各种游戏开发或卡片操作任务。

卡片定义

一张卡片是一个由四个字节组成的整数。高字节用于存储等级的位模式,而低字节则存储卡片的类型/等级/素数值。

xxxAKQJT 98765432 cdhsrrrr sspppppp
xxxbbbbb bbbbbbbb cdhsrrrr sspppppp

其中

定义
p 等级的素数
s 卡片的类型(黑桃=00,红心=01,方块=10,梅花=11)
r 卡片的等级
cdhs 根据卡片的类型打开的位(黑桃=0001,...,黑桃=1000)
b 根据卡片的等级打开的位

例如,红心5(5h)表示为

xxxAKQJT 98765432 cdhsrrrr sspppppp
00000000 00001000 00100011 01000111 = 0x00082347 = 533319

以下表格中提供了有关卡片的更多信息

2 3 4 5 6 7 8 9 10 J Q K A
等级 0 1 2 3 4 5 6 7 8 9 10 11 12
素数 2 3 5 7 11 13 17 19 23 29 31 37 41

52张牌的牌组

基于之前的卡片定义,让我们看看标准52张牌组的值表

2 3 4 5 6 7 8 9 10 J Q K A
黑桃 98306 164099 295429 557831 1082379 2131213 4228625 8423187 16812055 33589533 67144223 134253349 268471337
红心 81986 147779 279109 541511 1066059 2114893 4212305 8406867 16795735 33573213 67127903 134237029 268455017
方块 73858 139651 270981 533383 1057931 2106765 4204177 8398739 16787607 33565085 67119775 134228901 268446889
梅花 69826 135619 266949 529351 1053899 2102733 4200145 8394707 16783575 33561053 67115743 134224869 268442857

优点

  • 最小内存使用:数据结构可以用单个标识符表示所有卡片信息。

  • 更快查找:由于使用了位运算符,检索卡片信息成为常数时间操作。

无运行时依赖项