python 火烧赤壁 编程题(L1 研发工程师)

本文通过分析三国时期赤壁之战中的策略,讲述了黄盖的火攻计划和曹操的应对策略。黄盖利用曹操军队不擅长水战的特点,提议采用火攻,并在曹军船上引发连锁燃烧。通过模拟战斗过程,展示了如何通过数字序列判断战斗结果。最终,黄盖成功实施火攻,赢得了战斗的胜利。
摘要由CSDN通过智能技术生成

题目描述

公元208年,曹操发兵攻打荆州,刘备派诸葛亮到东昊,说服了孙权。孙、刘两家联合起来共同抵抗曹军。这年冬天,孙刘大军在赤璧与曹军隔江对崎。曹军将领常年在北方生活,不习惯坐船,许多人因为晕船根本没法打仗。

于是曹操就下令将战船用铁链连在起,上面铺上木板,这样在上面行走的时候,就好像走在平地上一样,不会晕船了。吴军将领黄盖观察到这个情况后,就对大都督周瑜献计道,曹军的船只连在一起。我们可以采取火攻。周瑜听后点了点头,也觉得此计可行。于是黄盖先给曹操写了一封信,假称要投降曹操。

曹军现在有九艘船,三行三列排布,到了约定的这天,黄盖带着几艘轻便的小艇船载满浇了油的柴草,外面用惟幕挡上,插上旌旗前往曹营,当时刮的是东南风,顺风而行。曹操以为这是来投降的,所以毫无防备,等到离曹营只有二里左右的时候,黄盖命令士兵点燃柴草。

黄盖下令士兵,将同行同列或同斜行的三艘船点燃借助风势就可以将所有的曹军船只点燃,然而曹操也下令士兵开始阻碍火船的前进,同理,曹操如果阻碍了同行同列或同一斜行的三艘船着火,黄盖将被生擒,如果双方都没有完成,则互相撤军,已知黄盖每次只能下令点燃艘曹军船只,曹操每次只能指挥阻碍一艘火船的前进,现在我们用九个数字代表曹军船只的位置:

123

456

789

前方的候给孙刘大军带回来一封密函交给诸葛先生,这封密函是一串数字代表黄将军和曹操对弃的顺序,现在让诸葛先生你来判断这场战斗究竟是谁赢了。

输入描述:

行,一串数字,表示黄盖点火和曹军阻碍的地点。黄盖总是先手

输出描述:

一行,如果黄盖赢,输出“huang Wins.””。如果曹操赢,输出“cao wins.”。如果平局,输出“drew.“

示例1

输入

5237649

输出

huang wins.

代码:

# coding=utf-8
#n='5237649'
n=input()
m=0
board = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
while(m<len(n)):
    k=1
    for i in range(3):
        for j in range(3):
            if k==int(n[m]):
                if (m/float(2)==int(m/float(2))):
                    board[i][j]='H'
                else:
                    board[i][j]='C'
            k+=1
    m+=1

#print(board)

def board_isfull(board):  
    for i in range(3):
        if (' ' in board[i]):
            return 0
    return 1
    pass

def Win_or_lose(board):
    isfull = board_isfull(board)
    for i in range(3): 
        if( board[0][i] == board[1][i] == board[2][i]):
            return board[0][i]
            pass
        pass

    for i in range(3):  
        if( board[i][0] == board[i][1] == board[i][2]):
            return board[i][0]
            pass
        pass

    if (board[0][0] == board[1][1] == board[2][2]): 
        return board[0][0]

    if (board[0][2] == board[1][1] == board[2][0]): 
        return board[0][2]

    if isfull:
        return 'drew.'  
    else:
        return ' '

result = Win_or_lose(board)
if (result == 'C'):
    print('cao wins.')
elif (result == 'H'):
    print('huang Wins.')
elif (result == 'D'):
    print('drew.')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值