十三水中各种牌型判断LUA版

news2024/10/6 6:04:29

近期回归程序行业,由于业务需求需要做十三水游戏,什么是十三水就不在多讲,下面是判断十三水牌型的方法(带大小王)

GetSSSPaiType = {};
local this = GetSSSPaiType;
local huaseTable = {};
local numTable = {};
function GetSSSPaiType.Gtetype(cardList)
	--首先清空数组
	huaseTable = {};
	numTable = {};
	--格式化牌
	for i,card in ipairs(cardList) do
		local num,huase = GetPokerHasJoker(card)
		table.insert(huaseTable,huase);
		table.insert(numTable,num);
	end
	--获取是第几墩牌需要判断
	if(#cardList==3)then --是头道 只判断是三条顺子或者散牌 头道只需要判断是三条还是对子
		return SSSPaiData[this.GtetSanZhangype(numTable)].imageName;
	elseif (#cardList==5)then
		return SSSPaiData[this.GtetWuZhangType(huaseTable,numTable)].imageName;
	else
		return SSSPaiData[SSSPaiType.Error].imageName; --数组越界 return
	end
end
function GetSSSPaiType.GtetSanZhangype(cards) --判断头道是否三条
	if cards[1] == cards[2] and cards[1]==cards[3]then --是三条
		return SSSPaiType.SanTiao;
	else
		if cards[1] == cards[2] or cards[1] == cards[3] or cards[3] == cards[2] then --是对子
			return SSSPaiType.DuiZi;
		else 			--是散牌
			return SSSPaiType.SanPai;
		end
	end
end
--牌大小优先级 五同>同花顺>炸弹>葫芦>同花>顺子>三条>两对>对子>散牌
function GetSSSPaiType.GtetWuZhangType(huaNums,dianNums) --五张牌需要两个参数 花色和点数
	if(table.ContainsValue(dianNums,0))then --带王 特殊判断
		table.RemoveValue(dianNums, 0) --首先吧王移除 
		table.RemoveValue(huaNums, 5) --花色也需要移除
		if (table.ContainsValue(dianNums,0))then --再次判断是否有王 防止有两个王 --有两个王
			table.RemoveValue(dianNums, 0) 	--有两个王再次移除掉王
			table.RemoveValue(huaNums, 5) --花色也需要移除
			if(this.isWuTongHasTwoJoker(dianNums))then --两个王 是五同
				return SSSPaiType.WuTong;
			elseif(this.isTongHuaHasTwoJoker(huaNums) and this.isShunZi(dianNums) and table.getrepeat(dianNums)==3)then --同花顺
				return SSSPaiType.TongHuaShun;
			elseif(this.isTeShuShunZiHasTwoJoker(dianNums) and this.isTongHuaHasTwoJoker(dianNums)) then --特殊同花顺
				return SSSPaiType.ShunZi;
			elseif(this.isZhaDanHasTwoJoker(dianNums))then --是炸弹
				return SSSPaiType.ZhaDan;
			elseif(this.isTongHuaHasTwoJoker(dianNums))then --同花
				return SSSPaiType.TongHua;
			elseif(this.isShunZi(dianNums))then --顺子
				return SSSPaiType.ShunZi;
			elseif(this.isTeShuShunZiHasTwoJoker(dianNums))then --特殊顺子
				return SSSPaiType.ShunZi;
			else
				return SSSPaiType.SanTiao;  --有两个王 最次也是个三条 不能是葫芦
			end
		else 	--只有一个王
			if(this.isWuTongHasOneJoker(dianNums))then --一个王 是五同
				return SSSPaiType.WuTong;
			elseif (this.isTongHuaHasOneJoker(huaNums) and this.isShunZi(dianNums) and table.getrepeat(dianNums)==4)then --是同花顺
				return SSSPaiType.TongHuaShun;
			elseif(this.isTeShuShunZiHasOneJoker(dianNums)and this.isTongHuaHasOneJoker(huaNums))then --特殊同花顺
				return SSSPaiType.TongHuaShun;
			elseif(this.isZhaDanHasOneJoker(dianNums))then --是炸弹
				return SSSPaiType.ZhaDan; 
			elseif(this.isHuLuHasOneJoker(dianNums))then --是葫芦
				return SSSPaiType.HuLu; 
			elseif(this.isTongHuaHasOneJoker(huaNums) and not this.isShunZi(dianNums))then --是同花 但不是顺子
				return SSSPaiType.TongHua;
			elseif(this.isShunZi(dianNums) and not this.isTongHuaHasOneJoker(huaNums) and table.getrepeat(dianNums)==4)then --是顺子 但不同花
				return SSSPaiType.ShunZi;
			elseif(this.isTeShuShunZiHasOneJoker(dianNums)and not this.isTongHuaHasOneJoker(huaNums))then --特殊顺子 但不是同花
				return SSSPaiType.ShunZi;
			elseif(this.isSnaTiaoHasOneJoker(dianNums))then --是三条
				return SSSPaiType.SanTiao; 
			elseif(this.isLiangDuiHasOneJoker(dianNums))then --是两对
				return SSSPaiType.LiangDui; 
			else
				return SSSPaiType.DuiZi; --有一个王 最低也是个对子
			end
		end
	else 									--不带王 直接判断
		if(this.isWuTong(dianNums))then 		--是五同
			return SSSPaiType.WuTong;
		elseif(this.isShunZi(dianNums) and this.isTongHua(huaNums))then --是同花顺
			return SSSPaiType.TongHuaShun;
		elseif(this.isTeShuShunZi(dianNums) and this.isTongHua(huaNums))then --特殊同花顺
			return SSSPaiType.ShunZi;
		elseif(this.isZhaDan(dianNums))then --炸弹
			return SSSPaiType.ZhaDan;
		elseif(this.isHuLu(dianNums)) then --是葫芦
			return SSSPaiType.HuLu;
		elseif(this.isTongHua(huaNums))then 	--是同花
			return SSSPaiType.TongHua;
		elseif(this.isShunZi(dianNums) and table.getrepeat(dianNums)==5)then 	--只有连续的数才是顺子 不能有重复的 
			return SSSPaiType.ShunZi;
		elseif(this.isTeShuShunZi(dianNums))then --12345也是顺子
			return SSSPaiType.ShunZi;
		elseif(this.isSanTiao(dianNums))then --是三条
			return SSSPaiType.SanTiao;
		elseif(this.isLiangDui(dianNums))then 	--是两对
			return SSSPaiType.LiangDui;
		elseif(this.isDuiZi(dianNums))then --不对子
			return SSSPaiType.DuiZi;
		else
			return SSSPaiType.SanPai;
		end
	end
	
end
--判断是否顺子 带王
function GetSSSPaiType.isShunZi(paiNums)
	local n = #paiNums
    --计算0的数量
    local joker = 0
    for i=1,n do
        if paiNums[i] == 0 then
            joker = joker + 1
        end
    end
    --排序
    local sortt = function(a, b)
        return a < b
    end
    table.sort(paiNums,sortt)
    local pre = paiNums[1]
    --计算总的补充数量
    local x = 0
    for i=2,n do
        local tx = paiNums[i] - pre
        x = x + tx - 1
        pre = paiNums[i]
    end
    --如果x比0的数量少,那么可以将数列补充成连续的
    if x <= joker then --是顺子
    	return true;
    else
    	--不是顺子
        return false;
    end
end
--12345也是顺子 特殊判断
function GetSSSPaiType.isTeShuShunZi(paiNums)
	local teshu = {2,3,4,5,14};
	table.sort(paiNums)
	if(table.isEquation(teshu,paiNums))then
		return true;
	else
		return false;
	end
end
--是否同花
function GetSSSPaiType.isTongHua(huaNums)
	if(huaNums[1]==huaNums[2] and huaNums[1]==huaNums[3] and huaNums[1]==huaNums[3] and huaNums[1]==huaNums[4] and huaNums[1]==huaNums[5]) then
		return true;
	else
		return false;
	end
end
--是否五同
function GetSSSPaiType.isWuTong(paiNums)
	if(paiNums[1]==paiNums[2] and paiNums[1]==paiNums[3] and paiNums[1]==paiNums[3] and paiNums[1]==paiNums[4] and paiNums[1]==paiNums[5]) then
		return true;
	else
		return false;
	end
	return false;
end
--判断是否葫芦
function GetSSSPaiType.isHuLu(paiNums)
    if paiNums[1] == paiNums[2] and paiNums[1] == paiNums[3] then
        if paiNums[4] == paiNums[5] then
            return true
        end
    end
    if paiNums[3] == paiNums[4] and paiNums[3] == paiNums[5] then
        if paiNums[1] == paiNums[2] then
            return true
        end
    end
    return false
end
--判断是否三条
function GetSSSPaiType.isSanTiao(paiNums)
	table.sort(paiNums)
	if(paiNums[1]==paiNums[2]and paiNums[2]==paiNums[3])then 
		return true;
	elseif(paiNums[2]==paiNums[3]and paiNums[3]==paiNums[4])then 
		return true;
	elseif(paiNums[3]==paiNums[4]and paiNums[4]==paiNums[5])then 
		return true;
	else
    	return false
	end
end
--判断是否炸弹
function GetSSSPaiType.isZhaDan(paiNums)
	table.sort(paiNums) --避免浪费性能 排序后单牌只会在1或者5
    if paiNums[1] == paiNums[2] and paiNums[1] == paiNums[3] and paiNums[1] == paiNums[4] then
        return true
    elseif paiNums[2] == paiNums[3] and paiNums[2] == paiNums[4] and paiNums[2] == paiNums[5] then
    	return true
    else
    	return false
    end
end
--判断是否两对
function GetSSSPaiType.isLiangDui(paiNums)
	table.sort(paiNums) --避免浪费性能 排序后单牌只会在1 3 5
	if paiNums[1] == paiNums[2] and paiNums[4] == paiNums[5] then
		return true
	elseif paiNums[2] == paiNums[3] and paiNums[4] == paiNums[5] then
		return true
	elseif paiNums[1] == paiNums[2] and paiNums[2] == paiNums[3] then
		return true
	else
		return false
	end
end
--判断是否是对子 没有王
function GetSSSPaiType.isDuiZi(paiNums)
	table.sort(paiNums)
	if(paiNums[1]==paiNums[2] or paiNums[2]==paiNums[3] or paiNums[3]==paiNums[4] or paiNums[4]==paiNums[5])then 
		return true
	else
		return false
	end
end
-------------------------有一个王判断-------------------------
--判断是否五同 有一个王
function GetSSSPaiType.isWuTongHasOneJoker(paiNums)
	if (paiNums[1]==paiNums[2] and paiNums[1]==paiNums[3] and paiNums[1]==paiNums[4])then
		return true
	else
		return false
	end
end
--判断是否同花 有一个王
function GetSSSPaiType.isTongHuaHasOneJoker(huaNums)
	if(huaNums[1]==huaNums[2] and huaNums[1]==huaNums[3] and huaNums[1]==huaNums[4])then
		return true
	else
		return false
	end
end
--判断是否特殊顺子 有一个王 就是和王能组成A2345的顺子
function GetSSSPaiType.isTeShuShunZiHasOneJoker(paiNums)
	table.sort(paiNums) --首先吧自己的手牌格式化
	local teshu1 = {2,3,4,5};
	local teshu2 = {3,4,5,14};
	local teshu3 = {2,4,5,14};
	local teshu4 = {2,3,5,14};
	local teshu5 = {2,3,4,14};
	if(table.isEquation(teshu1,paiNums) or table.isEquation(teshu2,paiNums) or table.isEquation(teshu3,paiNums) or table.isEquation(teshu4,paiNums) or table.isEquation(teshu5,paiNums))then
		return true;
	else
		return false;
	end
end
--判断是否是炸弹 有一个王
function GetSSSPaiType.isZhaDanHasOneJoker(paiNums)
	table.sort(paiNums) --格式化牌 让散牌在1或者4
	if(paiNums[1]==paiNums[2] and paiNums[1]==paiNums[3])then 
		return true;
	elseif(paiNums[2]==paiNums[3] and paiNums[2]==paiNums[4])then 
		return true;
	else
		return false;
	end
end
--判断是否是葫芦 有一个王
function GetSSSPaiType.isHuLuHasOneJoker(paiNums)
	table.sort(paiNums)
	if(paiNums[1]==paiNums[2] and paiNums[3] == paiNums[4])then 
		return true;
	else
		return false;
	end
end
--判断是否三条 有一个王
function GetSSSPaiType.isSnaTiaoHasOneJoker(paiNums)
	table.sort(paiNums)
	if paiNums[1] == paiNums[2] or paiNums[2] == paiNums[3] or paiNums[3]==paiNums[4] then
        return true
    else
    	return false
	end
end
--判断是否两对 有一个王
function GetSSSPaiType.isLiangDuiHasOneJoker(paiNums)
	table.sort(paiNums)
	if(paiNums[1]==paiNums[2] or paiNums[2]==paiNums[3] or paiNums[3]==paiNums[4])then 
		return true
	else
		return false
	end
end
-------------------------有两个王判断-------------------------
--判断是否五同
function GetSSSPaiType.isWuTongHasTwoJoker(paiNums)
	if(paiNums[1] == paiNums[2] and paiNums[1] == paiNums[3])then 
		return true;
	else
		return false;
	end
end
--判断是否同花
function GetSSSPaiType.isTongHuaHasTwoJoker(huaNums)
	if(huaNums[1] == huaNums[2] and huaNums[1] == huaNums[3])then 
		return true;
	else
		return false;
	end
end
--判断是否炸弹
function GetSSSPaiType.isZhaDanHasTwoJoker(paiNums)
	table.sort(paiNums)
	if(paiNums[1] == paiNums[2] or paiNums[2] == paiNums[3])then 
		return true;
	else
		return false;
	end
end
--特殊顺子 就是和王能组成A2345的顺子
function GetSSSPaiType.isTeShuShunZiHasTwoJoker(paiNums)
	table.sort(paiNums)
	local teshu1 = {2,3,14};
	local teshu2 = {2,4,14};
	local teshu3 = {2,5,14};
	local teshu4 = {3,4,14};
	local teshu5 = {3,5,14};
	local teshu6 = {2,3,4};
	local teshu7 = {2,3,5};
	local teshu8 = {2,4,5};
	local teshu9 = {3,4,5};
	if(table.isEquation(teshu1,paiNums) or table.isEquation(teshu2,paiNums) or table.isEquation(teshu3,paiNums) or table.isEquation(teshu4,paiNums) or table.isEquation(teshu5,paiNums) or table.isEquation(teshu6,paiNums) or table.isEquation(teshu7,paiNums) or table.isEquation(teshu8,paiNums) or table.isEquation(teshu9,paiNums))then
		return true;
	else
		return false;
	end
end

使用时仅需调用GetSSSPaiType.Gtetype()即可,牌类型如下:

用到的牌型枚举:

SSSPaiData = {};
SSSPaiData[SSSPaiType.SanPai] = {typeName = "散牌",imageName = "sanpai"};
SSSPaiData[SSSPaiType.DuiZi] = {typeName = "对子",imageName = "duizi"};
SSSPaiData[SSSPaiType.LiangDui] = {typeName = "两对",imageName = "liangdui"};
SSSPaiData[SSSPaiType.SanTiao] = {typeName = "三条",imageName = "santiao"};
SSSPaiData[SSSPaiType.ShunZi] = {typeName = "顺子",imageName = "shunzi"};
SSSPaiData[SSSPaiType.TongHua] = {typeName = "同花",imageName = "tonghua"};
SSSPaiData[SSSPaiType.HuLu] = {typeName = "葫芦",imageName = "hulu"};
SSSPaiData[SSSPaiType.ZhaDan] = {typeName = "炸弹",imageName = "zhadan"};
SSSPaiData[SSSPaiType.TongHuaShun] = {typeName = "同花顺",imageName = "tonghuashun"};
SSSPaiData[SSSPaiType.WuTong] = {typeName = "五同",imageName = "tiezhi"};
SSSPaiData[SSSPaiType.Error] = {typeName = "错误",imageName = "error"};

用到的公共方法:可以放本类,也可以放全局,个人认为放全局会方便一点,这样其他地方也可以使用全局进行调用

--切割牌 带王
function GetPokerHasJoker(pkId)
	local sets = string.split(pkId, "_");
	
	local color = tonumber(sets[1]);
	local num = tonumber(sets[2]);
	
	if(num == 1) then
		num = 14;
	end
	
	if(color == 5)then --如果是王 就吧点数当成0
		num = 0;
	end
	return num, color;
end

--判断value是否存在
--字典/数组
function table.ContainsValue(tb, val)
	if(type(tb) == "table") then
		for k, v in pairs(tb) do
			if equals(v, val) then
				return true;
			end
		end
	else
		return equals(tb, val);
	end
	return false;
end

--删除字典中值
function table.RemoveValue(tb, val)
	for k, v in pairs(tb) do
		if(v == val) then
			table.remove(tb, k);
			return;
		end
	end
end

--判断两个数组是否相等
function table.isEquation(tb1,tb2)
	if(#tb1~=#tb2)then
		return false;
	end
	for i,v in pairs(tb1) do
		if tb1[i] ~= tb2[i]then
			return false;
		end
	end
	return true;
end

--检查表内相同元素个数
function table.getrepeat(t)
	local check = {} 
    local n = {}
    for key, value in pairs(t) do
        if not check[value] then
            n[key] = value
            check[value] = value
        end
    end
    return #n;
end

写在后面:方法是临时拼凑,可能会有bug,我会持续修复,直至修复完美!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1118581.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机组成原理 new06 第二章 BCD码

文章目录 BCD码8421码余3码2421码三种码的总结 BCD码 概念&#xff1a;在计算机中&#xff0c;除了能够用二进制表示十进制之外&#xff0c;在二进制的基础上还衍生出了很多种的表示方式这些种表示方式的统称就是BCD码。 8421码 概念&#xff1a;8421码用4位二进制来表示一个十…

Python学习第1天-安装Python

文章目录 前言一、下载Python二、执行安装程序三、命令行验证总结 前言 以下榜单来自于TIOBE编程语言流行指数 不多说了&#xff0c;Python天下第一 一、下载Python 从官网下载Python安装程序 二、执行安装程序 找到python-3.12.0-amd64.exe执行&#xff0c;选择Install …

如何使用postman调用若依系统接口(报错401,认证失败,无法访问系统资源)

有时候我们想使用postman调用若依接口&#xff0c;会报下面的401错误&#xff0c;认证失败&#xff0c;无法访问系统资源。 原因是请求中没有token&#xff0c;没法通过若依的权限认证&#xff0c;下面来说一下如何解决。 {"msg": "请求访问&#xff1a;/syste…

提高工作效率的有效途径:五分钟快速学会搭建悟空CRM内网穿透

文章目录 前言1. 无需公网IP&#xff0c;使用cpolar实现悟空CRM远程访问2. 通过公网来访问公司内网悟空CRM3. 设置固定连接公网地址 前言 悟空CRM是一款开源的客户关系管理系统&#xff0c;以"客户关系一对一理论"为基础&#xff0c;通过对企业业务流程的重组来整合…

【数据分享】2023年我国高新技术企业数据(免费获取\excel格式\shp格式)

企业是经济活动的参与主体。一个城市的企业数量决定了这个城市的经济发展水平&#xff01;比如一个城市的金融企业较多&#xff0c;那这个城市的金融产业肯定比较发达&#xff1b;一个城市的制造业企业较多&#xff0c;那这个城市的制造业肯定比较发达。目前&#xff0c;在城市…

大数据Flink(一百):SQL自定义函数(UDF)和标量函数(Scalar Function)

文章目录 SQL自定义函数(UDF)和标量函数(Scalar Function)

计算机组成原理 new14 双端口RAM和多模块存储器

文章目录 双端口RAM 多模块存储器多体并行存储器高位交叉编址低位交叉编址单体多字存储器存储周期和访存 双端口RAM 在双端口RAM中&#xff0c;两个端口使用了不同的译码器&#xff0c;数据线&#xff0c;控制线&#xff0c;和读写电路。所以两个端口可以做到同时访问相同的存储…

Ettus USRP X410 配件讲解,如何选择对应的配件

Ettus USRP X410 产品图片 产品编号: 787272-01 附件 所需的附件 USRP电源线 可选附件 连接套件 SMA连接线 线缆 安装套件 通信电缆 风扇盒 汇总列表 名称编号价格Ettus USRP X410787272-01215,550.00USRP RIO电源线&#xff0c;中国785023-10165.00双百兆以太网PCIe接口…

C语言实现输入一行字符统计其中有多少个单词,单词之间用空格分隔开

完整代码&#xff1a; // 输入一行字符统计其中有多少个单词&#xff0c;单词之间用空格分隔开 #include<stdio.h>int main() {char ch;//num为单词的个数int num0;printf("请输入一行字符&#xff0c;单词之间用一个空格分隔开\n");while ((chgetchar())!\n)…

Linux:程序地址空间/虚拟地址等相关概念理解

文章目录 程序地址空间虚拟地址和物理地址地址的转换地址空间是什么&#xff1f; 程序地址空间 在C和C程序中&#xff0c;一直有一个观点是&#xff0c;程序中的各个变量等都会有一定的地址空间&#xff0c;因此才会有诸如取地址&#xff0c;通过地址访问等操作&#xff0c;那…

【软件设计师-中级——刷题记录7(纯干货)】

目录 每日一言&#xff1a;持续更新中...你的编程水平是&#xff1f; A 入门&#xff1a;我对编程没有一点儿经验 B. 初级&#xff1a;了解一点基础知识&#xff0c;但没有写过代码 C. 中级&#xff1a;会写点简单代码&#xff0c;能看懂代码 D. 高级&#xff1a;写过多段代码&…

基于springboot实现学生综合成绩测评系统项目【项目源码】计算机毕业设计

基于springboot实现学生综合成绩测评系统演示 开发技术与环境配置 以Java语言为开发工具&#xff0c;利用了当前先进的springboot框架&#xff0c;以MyEclipse10为系统开发工具&#xff0c;MySQL为后台数据库&#xff0c;开发的一个学生综合测评系统。 2.1 SpringBoot框架 S…

jsp内的${}循环一次及循环几次相加出总和

目录 表内读数据循环一次的相加显示&#xff1a; 表内读数据循环几次的相加&#xff0c;计算出总和并显示&#xff1a; 表内读数据循环一次的相加显示&#xff1a; <c:forEach items"${sessionScope.PropertyFeelist}" var"pf"><h5> ${pf.w…

Linux进程终止

进程终止 一.返回码&#xff08;错误码&#xff09;1.strerror2.errno 二.exit三._exit1.简单使用2.exit和_exit的区别 一.返回码&#xff08;错误码&#xff09; 其实进程终止不外乎就以下三种情况&#xff1a; 1.strerror 我们一般关心程序为什么会失败而不关心为什么会成功…

[管理与领导-122]:IT人看清职场中的隐性规则 - 18- 一半佛一半魔,一半君子一半小人,阴阳互转,生生不息,儒、释、道、法,一个不能少

目录 一、太极阴阳图&#xff1a;阴阳互转&#xff0c;生生不息 1.1 阴阳互转&#xff0c;生生不息 1.3 职场中儒、释、道、法 二、职场中的阴阳&#xff1a;君子与小人&#xff0c;善与恶 2.1 职场中的阴阳&#xff1a;君子与小人 2.2 职场中的阴阳&#xff1a;谁不是一…

LRC2024:Lightroom Classic 2024 (WinMac)

Lightroom Classic是一款由Adobe公司开发的数字图像处理和管理工具。它以强大的照片调整、处理、管理和分享功能而著称&#xff0c;被认为是专业摄影师的必备利器。 主要特性如下&#xff1a; 增强的校正工具&#xff1a;Lightroom Classic提供了丰富的照片校正工具&#xff0…

交换机端口灯常亮 端口up状态 服务器设置ip交换机获取不到服务器网卡mac地址 不能通信

环境: 深信服防火墙 8.0.75 AF-2000-FH2130B-SC S6520X-24ST-SI交换机 version 7.1.070, Release 6530P02 问题描述: 交换机一个vlan下有3台服务器,连接端口2、3、4,2和3连接的服务器正常,交换机3端口灯常亮 端口up状态 服务器自动获取不了地址,改为手动设置ip后,交…

冷笑话-1

代码检视时&#xff0c;程序员A看着下面的代码&#xff0c;疑惑地问程序员B&#xff1a;“为什么不用重载&#xff1f;” class MyClass {public MyClass queryById(long id) { //......}public MyClass queryByName(String Name) { //......}public MyClass queryByIdAndNam…

2023CANN训练营第二季——Ascend C算子开发(入门)——基础概念

第一章 Ascend C 算子开发入门 一、基础概念 1.Ascend C 概念&#xff1a;Ascend C是CANN针对算子开发场景推出的编程语言&#xff0c;原生支持C和C标准规范&#xff0c;最大化匹配用户开发习惯;通过多层接口抽象、自动并行计算、孪生调试等关键技术&#xff0c;极大提高算子…

Java并发编程常见面试题总结

梳理Java并发编程相关的面试题&#xff0c;主要参考《JAVA并发编程实战》(Brian Goetz, Joshua Bloch, David Holmes, Tim Peierls, Joseph Bowbeer, Doug Lea 著, 韩锴, 方妙 译)一书&#xff0c;其余部分整合网络相关内容。注意&#xff0c;关于Java基础相关的面试题可以参考…