R语言入门与实践笔记(第四章)

Python015

R语言入门与实践笔记(第四章),第1张

在R中有 6中索引编写方式 ,包括 正整数、负整数、零、空格、逻辑值、名称

与正整数索引相反,它的含义是 不包含 负整数索引所对应的元素。

说实话,零索引并没有多大用处。这里就不介绍了

代表选取该索引位置所代表维度的所有元素。

当索引提供一个包含TRUE和FALSE逻辑值的向量时,R会匹配索引值为TRUE的元素。 此索引方式非常重要

编写一个可以返回第一行所有元素的函数

问题:这样每次发牌都是黑桃K,所以我们要在每次发完牌后进行洗牌,然后再发,现在写一个洗牌的函数

下面写一个输入进去deck输出一个洗牌后的数据框的函数

$ 可以提取数据框或列表对象中的值。

列表提取元素

掌握R语言的索引,最基本操作为 写出对象名字,并在随后中括号里写出对应的索引即可 。若对象是一维的,如向量,只需要提供一个位置索引;若对象是二维的,如数据框,则提供两个位置索引,中间用逗号隔开。n维则用n个索引。另外数据框和列表还可用 $ 来索引。

一、多人游戏:分红

这种玩法简单易学,很有趣味性。各牌手要尽量少得红桃牌,这是游戏的主要原则。

[牌局]一副,抽掉大小王,4个人玩。既可以分组对抗(相对而坐的两家为一方),也

可以各自为战。洗牌、切牌,各牌r按逆时针顺序轮流抓牌,每次一张,直到抓完牌。

[打法]牌没有主副之分,牌点由高到低依次为A、K、Q、J、10、9、8、7、6、5、4、3、

2。先抓牌者先出,其他牌手按逆时针顺序依次随牌,每次一张。此为一轮。随牌必须出同

花牌,如无同花牌,可垫其他花的牌。每轮出牌中牌点大者获该轮出牌中的红桃牌(如有

的话),并获下一轮的出牌权。全部牌出完以后,计算各牌手的得分,并分别记到各自的名

下。每张红桃牌均为负1分,负分先达到预定数或负分多者输,负分最少者赢。

由于红桃牌都是负分,各牌手应尽量少得红桃牌。如自己手中持有红桃大牌,应该尽量

把手中一门张数较少的花打光,以便垫出红桃大牌,如果自己手中持有红桃小牌,则可以

通过出红桃牌_牌技而让其他牌手吃进,以免在出其他牌时,被人垫红桃牌而得负分。

二、多人游戏:钓鱼

[牌局]一副,抽掉大小王。二至数人皆可。洗牌、切牌,各牌手按逆时针顺序轮流

抓牌,每次~张,每人抓3张。

[打法]

(1)抓牌结束后,将余牌中翻出4张明着摊到桌上,由最先抓牌者察看自己手上的牌,

看能否用其中的一张或数张与已放在桌上的4张牌中的某一张之和凑为14。如行,则将这

些牌收到自己的面前,然后从余牌中取出一张,放到桌上,使其仍保持有4张牌,并将手上

牌补至3张,然后各下家依此法游戏;如果某位牌手的手中牌不能与桌上的任意一张凑成

14,则弃权,由下家继续进行;如所有的牌手都不能从桌上凑成14,那么就将这4张牌打

掉,再从余牌中翻出4张,继续进行直到游戏结束。

(2)当余牌全部用完,所有的牌手都不再能凑出14时,则此局结束。然后计算各牌手的

得分,记分规则为黑桃牌4分,红桃牌3分,方块牌2分,梅花牌1分。将各牌手“钓”到

的牌分别计出分来,分高者为胜。

[提示]由于各种花的牌分值不一样,所以在“钓牌”中应尽量先钓出分值高的牌,也

应尽快将手中的大牌用掉,以便拥有更多的“钓鱼”机会。

三、多人游戏:对牌

此游戏较为简单,没有太多技巧,很容易学,老少皆宜。

[牌局]一副,取掉大小王。二至数人都可玩。洗牌后,将牌发成与人数相同的份数,

每人一份,各人理好自己的牌,暗着摆成一摞。

[打法]

(1)由先抓牌者开始,各位牌手按逆时针方向轮流向桌上发牌,每次一张,后一张叠压

在前面的牌上,向下摊开,以便能够看到所有的牌点。各牌手在放牌时,只能顺序翻开自己

一摞最上端的一张,当发现自己翻出的牌与已放到桌上的某张牌相等时,则将两张相等牌与

其间各牌收起,放在自己牌下,然后再放一张牌到桌上。如果放出的这张牌与桌上的某张牌

又相等,那么又把这两张牌及其之间的牌收起。如果放出来的牌不与桌上余牌中的某一张相

等时,则由下家来放牌。吃牌原则依上所述。如果某一家手中所有的牌都被其他牌手吃去,

则为失败。

(2)这种玩法较为简单,为增加趣味性,还有一种允许牌手在一定范围内选择的方法。

每个牌手各抓5张牌,依次向桌上放牌,方法如前述。各牌手可以查看手上的几张牌,是否

与桌面上已有的牌相等。如有,则收起两张相等的牌及其之间的所有牌,放在自己面前,然

后补齐手中的5张牌,以下各家也轮流补至5张,继续玩下去,一直到一副牌全用完。然后

把各牌手赢来的牌计数,多者为胜。

四、多人游戏:顾此失彼

[牌局]一副,拿掉大小王,使用52张牌,可供多人游戏。洗牌,牌面朝下向各牌

手均匀分牌。

[打法]每人先将自己的牌看一下,如有4张相同位数的牌,就拿出来,摆在台面上向大

家公开,其余的牌,要考虑如何组成两张成对的,或3张一组的,或4张一组的,做到胸中

有数。先由发牌人向任何一个人抽一张牌,如和自己手中的牌相配的话,就可以再向别人抽

牌,一直抽到不能相配为止。然后由他左边的人抽牌,抽牌人可以向任何人抽,但是抽到相

配的牌时,要向大家公开。谁首先按照计划全部组成两张以上到4张相同数位的牌,手中没

有单牌,谁就获胜。

有时当你想将两张一对的变成3张一组的来增加得分的时候,反而会被人抽去成对的一

张,或者过早公开成对或成组的牌,会使最终得分减少。这样往往就会顾此失彼,所以在游

戏时要审时度势,以免功亏一篑。