iOS锄大地发牌算法

某公司给的面试题,自己小试牛刀

/**

 *  设置数据
 */
- (void)loadPokerData
{
    NSArray *colorList = @[@"♦️", @"♣️", @"❤️", @"♠️"];//@[@"方块", @"梅花", @"红桃", @"黑桃"];
    self.cardList = [NSMutableArray arrayWithCapacity:52];
    
    for (int i = 0; i < 4; i++)
    {
        for (int k = 1; k <= 13; k++)
        {
            NSString *str = @"";
            switch (k) {
                case 1:
                    str = @"A";
                    break;
                case 11:
                    str = @"J";
                    break;
                case 12:
                    str = @"Q";
                    break;
                case 13:
                    str = @"K";
                    break;
                    
                default:
                    str = [NSString stringWithFormat:@"%@", @(k)];
                    break;
            }
            
            NSString *card = [NSString stringWithFormat:@"%@%@", colorList[i], str];
            
            [self.cardList addObject:card];
        }
    }
    
    [self printPoker:@"洗牌前"];
}

/**
 *  洗牌
 */
- (void)washPoker
{
    //打乱牌
    for (int i = 0; i < self.cardList.count; i++)
    {
        //随机从牌中得到一张牌[0,52)
        NSInteger index = arc4random() % self.cardList.count;
        
        //交换这两个位置的牌
        [self.cardList exchangeObjectAtIndex:i withObjectAtIndex:index];
    }
    
    [self printPoker:@"打乱牌"];

    //切牌,前半副牌插入后半副牌
    for (int i = 0; i < self.cardList.count/2; i++)
    {
        //得到第一张牌
        NSString *card = [self.cardList firstObject];
        
        //插入相应位置
        [self.cardList insertObject:card atIndex:self.cardList.count/2 + i];
        
        //去掉第一张牌
        [self.cardList removeObjectAtIndex:0];
    }
    
    [self printPoker:@"切牌后"];
}

/**
 *  发牌
 */
- (void)dealPoker
{
    NSString *print = @"";

    for (int i = 0; i < 4; i++)
    {
        NSString *str = @"";
        NSInteger index = i;
        for (int k = 0; k < 13; k++)
        {
            str = [NSString stringWithFormat:@"%@%@", str, self.cardList[index]];
            index += 4;
        }
        str = [NSString stringWithFormat:@"第%@个人:%@", @(i+1), str];

        print = [NSString stringWithFormat:@"%@\n%@\n", print, str];
    }
    
    self.textView.text = [NSString stringWithFormat:@"%@\n\n%@", self.textView.text, print];
}

/**
 *  打印输出
 */
- (void)printPoker:(NSString*)key
{
    NSString *print = @"";
    for (NSString *card in self.cardList)
    {
        print = [NSString stringWithFormat:@"%@ %@", print, card];
    }
    
    self.textView.text = [NSString stringWithFormat:@"%@\n\n%@:\n%@", self.textView.text, key, print];
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值