R Language -laohuji

Item three -tiger machine

Description: Each ji old time playing the game takes a dollar. Diamond symbol (DD) can be wild, and the final amount can be doubled.

 

Task decomposition:

Task decomposition steps:
The complex tasks into simple subtasks;
Example;
Description simple language solution, and then converted into R code.
Kind of task decomposition: orderly steps and similar circumstances
Tiger preliminary decomposition JI procedures mandates

Generating a symbol combination:

# Generated symbol combination 
get_symbols <- function () {
  wheel<-c("DD","7","BBB","BB",
           "B","C","0")
  sample(wheel,size = 3,replace = T,
         prob = c(0.03,0.03,0.06,0.1,
                  0.25,0.01,0.52))
}
get_symbols()

Display symbol combination

# Displayed combination of symbols 
Print ( " the Hello \ nworld " )
cat("hello \nworld")
print(get_symbols())

# Branch statement

> 
> # IF, IfElse, Switch 
> # IF: single main processing logic condition 
> # If a value is less than 0, the absolute value taking his 
> QZ <- function (X) {
 +    IF (X < 0) {
 +      ABS ( X)
 + - X
 +    }
 + }
 > QZ (-9 )
[1] 9
> # If a value greater than 0, returns 1, is less than 0, 
> # -1, 0 if it is equal, returns 0 
> JC <- function (X) {
 +    IF (X> 0) {
 +      return (1 )
 + } the else  IF (X < 0) {
 +      return (-1 )
 +} the else {
 +      return (0)
 +    }
 + }
 > JC (. 9 )
[1] 1
> jc(-9)
[1] -1
> jc(0)
[1] 0
> jc1<-function(x){
+   if(x>0) 1 else if(x<0)-1 else 0
+ }
> jc1(9)
[1] 1
> jc1(-9)
[1] -1
> jc1(0)
[1] 0
> dj<-function(x){
+   if(x>=90){
+     "A"
+   }else if(x>=80){
+     "B"
+   }else if(x>=70){
+     "C"
+   }else if(x>=60){
+     "D"
+   }else "F"
+ }
> dj(60)
[1] "D"
> dj(50)
[1] "F"

ifelse: a vector may be processed

> # IfElse: a vector may be processed 
> JC2 <- function (X) {
 + IfElse (X> 0,1, -1 )
 + }
 > JC2 (C (. 3, -7 ))
[1]  1 -1
> # Exercise: if x> 0, x return itself, 
> # if x <0, taken its absolute value 
> JC3 <- function (x) {
 + IfElse (x> 0, x, ABS (x))
 + }
 > JC3 (C (. 3, -3 ))
[1] 3 3
> abs(-3:3)
[1] 3 2 1 0 1 2 3
> # If a value greater than 5, return to 5, 
> # if between -5 to 5, itself remains unchanged 
> # If less than -5, returns -5 
> JC4 <- function (X) {
 + IfElse (X> 5, 5, IfElse (X> = -. 5, X, -5 ))
 + }
 > JC4 (-2 )
[1] -2

#pmax、pmin

pmax(c(3,8,9),c(1,9,7))
[1] 3 9 9
> pmin(c(3,8,9),c(1,9,7))
[1] 1 8 7
> jc5<-function(x){
+   pmax(-5,pmin(5,x))
+ }
> jc5<-function(x){
+   pmin(5,pmax(-5,x))
+ }
> jc5(c(-3,6))
[1] -3  5

switch

#switch:针对一个数字或者一个字符串来选择性的
#执行某些语句
switch(1,"x","y")
switch(2,"x","y")
switch(3,"x","y")
switch("a",a=1,b=2)
switch("c",a=1,b=2)
switch("c",a=1,b=2,3)
switch("d",a=1,b=2,3)
switchf<-function(x){
  switch(x,
         a=1:3,
         b=list(x=0,y=1),
         c={
           cat("你选择了c\n")
           list(name="c",value="haha")
          })
}
switchf("a")
switchf("b")
switchf("c")

#循环:for、while、repeat

#for循环
#语法结构:
for (variable in vector) {
  expr
}
for (i in 1:3) {
  cat("当前的i值为",i,"\n")
}
i
for (i in c("","hao")) {
  cat("当前的i值为",i,"\n")
}

 

#打印每个元素的长度和类
nk<-list(a=c(1,2,1),b=letters[1:4])
for (i in nk) {
  cat("i的长度:",length(i),"\nclass:",class(i),"\n")
}
#求1到100的和
sum(1:100)
s<-0
for (i in 1:100) {
  s<-s+i
}
s

#管理for循环:break、next

#管理for循环:break、next
#break:终止循环
#1到5,遇到3时终止,打印1和2
for (i in 1:5) {
  if(i==3) break
  cat("message:",i,"\n")
}

 

#1000到1100,满足的条件是i的平方除以11的余数
#与i的3次方除以17的余数相同,取出i的值
#取余数:%%
9%%4
for (i in 1100:1000) {
  if((i^2)%%11==(i^3)%%17){
    cat(i,"\n")
    break
  }
}

#next:跳过本次循环
#1到5,跳过3,打印1,2,4,5
for (i in 1:5) {
  if(i==3) next
  cat("message:",i,"\n")
}

#while循环

#语法结构
while(cond){
  expr
}
#当x<=5时,打印x的值
x<-0
while (x<=5) {
  cat(x,"\n")
  x<-x+1
}

 

#x从0开始,自增加1,当x=2时,执行下一次
#循环,当x=4时,终止循环
x<-0
repeat{
  x<-x+1
  if(x==2) next
  else if(x==4) break
  else cat(x,"\n")
}

计算中奖金额

#第一种情况:三个符号都相同
#7 7 7 
symbol<-rep("7",3)
#第一种方法
symbol[1]==symbol[2]&symbol[2]==symbol[3]
#第二种方法
unique(symbol)
length(unique(symbol))==1
#第三种方法
all(symbol==symbol[1])

#3个相同情况下: 第一种方式
if (all(symbol==symbol[1])) {
  if(symbol[1]=="DD") prize<-100
  else if(symbol[1]=="7") prize<-80
  else if(symbol[1]=="BBB") prize<-40
  else if(symbol[1]=="BB") prize<-25
  else if(symbol[1]=="B") prize<-10
  else if(symbol[1]=="C") prize<-10
  else prize<-0
}
prize

#第二种方式:
switch(symbol[1],"DD"=100,"7"=80,"BBB"=40,
       "BB"=25,"B"=10,"C"=10,"0"=0)

#第三种方式 查找表的方式
if (all(symbol==symbol[1])) {
  payout<-c("DD"=100,"7"=80,"BBB"=40,
            "BB"=25,"B"=10,"C"=10,"0"=0)
  prize<-unname(payout[symbol[1]])
}
prize
# 去掉名称unname
unname(payout[symbol[1]])
payout[[symbol[1]]]

 

第二种情况:全是杠

#第二种情况:全是杠
#B BB B
symbol<-c("B","BB","BBB")
all(c("7","BB","BBB") %in% c("B","BB","BBB"))
if (all(symbol==symbol[1])) {
  payout<-c("DD"=100,"7"=80,"BBB"=40,
            "BB"=25,"B"=10,"C"=10,"0"=0)
  prize<-unname(payout[symbol[1]])
}else if(all(symbol %in% c("B","BB","BBB"))){
  prize<-5
}

 第三种情况:计算樱桃的数量

symbol<-c("C","BB","BBB")
sum(symbol=="C")
if (all(symbol==symbol[1])) {
  payout<-c("DD"=100,"7"=80,"BBB"=40,
            "BB"=25,"B"=10,"C"=10,"0"=0)
  prize<-unname(payout[symbol[1]])
}else if(all(symbol %in% c("B","BB","BBB"))){
  prize<-5
}else {
  yt<-sum(symbol=="C")
  prize<-c(0,2,5)[yt+1]
}

if(yt==0){
  prize<-0
}else if(yt==1){
  prize<-2
}else if(yt==2){
  prize<-5
}
prize

Guess you like

Origin www.cnblogs.com/foremostxl/p/12051183.html