博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
打麻将 - 基于R语言
阅读量:4975 次
发布时间:2019-06-12

本文共 2500 字,大约阅读时间需要 8 分钟。

新年第一更

 

for (k in 1:1000){ #万字,筒子,条子  pai=c(1:9,11:19,21:29)  mj=c(pai,pai,pai,pai)    jiepai=sample(mj,13*4,replace=FALSE)    a=sort(jiepai[1:13])  b=sort(jiepai[14:(13*2)])  c=sort(jiepai[27:(13*3)])  d=sort(jiepai[40:(13*4)])    leftpai=function(mj,x){    for (i in 1:length(x))    {    mj=mj[-match(x[i],mj)]    }    return(mj)  }    mjleft=leftpai(mj,jiepai)    #打掉跟其他字差异最大的字  droppai=function(x){    sumdif=c()    for (i in 1:length(x)){      sumdif[i]=sum((x[i]-x[-i])**2)+i/100    }    tablepai=data.frame(x,sumdif)    tablepai[sumdif==max(sumdif),]=NA    x=as.numeric(na.omit(tablepai$x))    return(x)  }    #一个对子,四个句子或者刻子即胡牌  hupai=function(x){    tmp=c()    hupai=0        for (i in seq(1,13,3)){      if (((i!=13) & (x[i]==x[i+1]) & (x[i+1] !=x[i+2])) || ((i==13) & (x[i]==x[i+1]))) {        tmp=x[c(-i,-(i+1))]        hupai=hupai++1        if (hupai>0) {
break} } } if (hupai==1) { for (i in seq(2,11,3)){ if ( ((tmp[i]-tmp[i-1]==1) & (tmp[i+1]-tmp[i]==1)) || ((tmp[i]-tmp[i-1]==0) & (tmp[i+1]-tmp[i]==0)) ) {hupai=hupai++1} } } return(hupai) } #开始打牌 for (i in 0:ceiling(length(mjleft)/4-1)){ a=sort(c(a,mjleft[1+4*i])) b=sort(c(b,mjleft[2+4*i])) c=sort(c(c,mjleft[3+4*i])) d=sort(c(d,mjleft[4+4*i])) sumA=sum(a) sumB=sum(b) sumC=sum(c) sumD=sum(d) if ((hupai(a)==5) & (sumA%%3==2)) {print("player a win");print(sort(a));print(i);break} else if ((hupai(b)==5) & (sumB%%3==2)) {print("player b win");print(sort(b));print(i);break} else if ((hupai(c)==5) & (sumC%%3==2)) {print("player c win");print(sort(c));print(i);break} else if ((hupai(d)==5) & (sumD%%3==2)) {print("player d win");print(sort(d));print(i);break} a=droppai(a) b=droppai(b) c=droppai(c) d=droppai(d) if (i==ceiling(length(mjleft)/4-1)) {print("No one wins")} }}

 

不能吃,不能碰,只能自摸,打了1000盘只有不到20盘胡牌。。。看来打牌还是需要多吃多碰(另外代码肯定需要改进……)

 

[1] "No one wins"[1] "No one wins"[1] "player b win" [1] 12 12 12 16 17 18 19 19 21 22 23 26 27 28[1] 5[1] "No one wins"[1] "player a win" [1] 13 13 16 17 18 21 22 23 24 25 26 27 27 27[1] 7[1] "No one wins"[1] "No one wins"[1] "No one wins"[1] "No one wins"[1] "player b win" [1] 16 17 18 21 22 23 24 24 24 25 25 26 27 28[1] 11[1] "No one wins"[1] "No one wins"[1] "No one wins"[1] "player a win" [1] 15 15 15 16 17 18 19 19 22 22 22 23 24 25[1] 12[1] "No one wins"...

 

祝大家新年行大运

 

by yant07

转载于:https://www.cnblogs.com/yant07/p/6361163.html

你可能感兴趣的文章
jquery,fn,extend和jquery.extend
查看>>
js奇葩错误
查看>>
poj 3974 Palindrome
查看>>
等比例缩放图片
查看>>
实现笛卡尔心形线的重复循环绘制
查看>>
实验报告四
查看>>
JS学习笔记——标准对象
查看>>
南柯一梦
查看>>
生产者与消费者——厨师和消费者之间的问题
查看>>
旋转菜单
查看>>
Masonry介绍与使用实践(快速上手Autolayout)(转)
查看>>
hihoCoder #1770 : 单调数(数位dp)
查看>>
友情链接
查看>>
laravel入门-CSRF解决
查看>>
数据库 chapter 17 数据仓库与联机分析处理技术
查看>>
Hdu4547CD操作离线lca
查看>>
jquery的基本事件大全
查看>>
git打tag
查看>>
Docker容器中安装vim
查看>>
前言:学习自动化之前需要知道的
查看>>