2020-11-21 芯片测试golang实现
//思路:参考Mood 清华大学《算法与分析》汪小林 第三周:分支策略(2) 3.4芯片测试
//时间复杂度O(n)
https://www.icourse163.org/learn/PKU-1002525003?tid=1450408483#/learn/content?type=detail&id=1214976926&cid=1219230271
func main() {//true:好芯片,false:坏芯片//chips := []bool{true,false,true}chips := []chip{{good: false,num: 0,},{good: false,num: 1,},{good: false,num: 2,},{good: false,num: 3,},{good: true,num: 4,},{good: true,num: 5,},{good: true,num: 6,},{good: true,num: 7,},{good: true,num: 8,}}fmt.Println(getGoodChip(chips))
}type chip struct {good boolnum int
}//return good chip index
func getGoodChip(chips []chip) int{if len(chips) == 3 {if judge(chips[0].good,chips[1].good){return chips[0].num}else {return chips[2].num}}if len(chips) <=2 {return chips[0].num}if len(chips) %2 == 0{return getGoodChip(evenChips(chips))}return getGoodChip(oddChips(chips))}func evenChips(theChips []chip) []chip {newChips := []chip{}for i:=0; i<len(theChips) ;i+=2 {if judge(theChips[i].good, theChips[i+1].good){newChips = append(newChips, theChips[i])}}return newChips
}func oddChips(theChips []chip) []chip {candChip := theChips[0]n := len(theChips)goodNum := 0for i:=1;i<n ; i++ {if judge(candChip.good,theChips[i].good){goodNum++}}if goodNum >= (n-1)/2 {//find good chip ,return it.End.return []chip{candChip}}//else candChip is a bad chip ,abandon itreturn theChips[1:]
}
//1:芯片x判断芯片y为好芯片,否则为0
func judge(a,b bool)bool{if a && b {return true}if !a && !b {aRand := rand.Intn(2)bRand := rand.Intn(2)if aRand ==1 && bRand ==1{return true}else{return false}}return false
}
2020-11-21 芯片测试golang实现相关推荐
- 生活就是这样充满一些小插曲的2020.11.21日记
生活日记 又是一个早期的周六,早上上课,然后去食堂吃饭.好久不去食堂吃饭了,看见有我喜欢的平菇就点了一份,高兴的坐了下来准备品尝,第一口夹一个大的,一口包进嘴里等着满足感的反馈.???什么味道,怎么这 ...
- 计算机组成与体系结构——串联系统与并联系统——2020.11.21
并联是一种冗余状态 冗余机制,提高系统的可靠性 --高岸为谷,深谷为陵--
- Jenkins持续集成学习笔记(2020.11.22)
Jenkins持续集成学习笔记(2020.11.22) 前言: (官网) 以前很久学习过Jenkins持续集成进行快速部署项目进行测试, 最近换工作了, 发现新公司有用到, 现在来复习一下 官网介绍: ...
- QIIME 2教程. 21进化树q2-phylogeny(2020.11)
使用q2-phylogeny进行系统发育推断 Phylogenetic inference with q2-phylogeny https://docs.qiime2.org/2020.11/tuto ...
- QIIME 2教程. 21进化树推断q2-phylogeny(2020.11)
文章目录 使用q2-phylogeny进行系统发育推断 序列对齐Sequence Alignment 减少对齐的歧义:屏蔽和参考对齐方式 Reducing alignment ambiguity: m ...
- 国产半导体设备多年沉淀终爆发!2020制程、测试、硅片设备全面开花
看点:2016-2019年进入主流晶圆厂工艺验证的关键国产设备,将在2020年获得实质性突破. 随着每一次信息技术重大突破,半导体设备行业规模产生一次大飞跃,如 PC 时代支撑设备规模 200-300 ...
- QIIME 2教程. 04人体微生物组分析Moving Pictures(2020.11)
文章目录 QIIME 2用户文档. 4人体各部位微生物组 本节视频视频教程 启动QIIME2运行环境 样本元数据 下载和导入数据 拆分样品 序列质控和生成特征表 方法1. DADA2 方法2. Deb ...
- QIIME 2教程. 01简介和安装 Introduction Install(2020.11开始更新)
写在前面 QIIME是微生物组领域最广泛使用的分析流程,10年来引用20000+次,2019年Nature杂志评为近70年来人体菌群研究的25个里程碑事件--里程碑16:生物信息学工具助力菌群测序数据 ...
- QIIME 2教程. 26为QIIME 2开发新插件DevelopingPlugin(2020.11)
文章目录 为QIIME 2开发新插件 概述Overview 插件组件Plugin components 定义功能Define functionality 创建一个函数并注册为方法 Create a f ...
最新文章
- V​M​W​a​r​e​里​安​装​6​4​位​L​i​n​u​x​ ​的​方​法
- jboss7 加载module过程
- Golang之实现一个负载均衡算法(随机,轮询)
- 【OpenGL从入门到精通(三)】第一个点的理论
- 个人的中小型项目前端架构浅谈(转)
- dede首页调用会员积分和头像代码
- CSS(网页样式语言)基础,网页CSS设计样式基础知识点 小白教程
- (大数据工程师学习路径)第三步 Git Community Book----高级技能
- 结构体C语言王者归来
- 海思Hi3519/Hi3559-使用cmake编译sdk代码
- 说唱天王 Eminem 自传《The Way I am》3
- 服务器win2003修复,win2003服务器svchost.exe异常
- 判断某年某月某日是这一年的第几天
- mysql分组取最新一条数据
- DNA: 人类的终极U盘
- 解决工行登录失败:[96111945]验证码输入错误或已经超时失效,请重新输入
- MySQL详解 --- 聚合与分组
- 杰奇采集分页 php,修改杰奇1.7模板 给章节内容添加分页
- php 简单图片验证码,PHP 实现简单图片验证码
- 基于HTML5 Canvas的工控SCADA模拟飞机飞行
热门文章
- Time-Evolving Graph Convolutional Recurrent Network for Traffic Prediction论文笔记
- 特征值和奇异值的关系
- 谷歌要收购这家脑电波控制器公司
- oracle10g rman备份有效性,Oracle 10g RMAN的备份 恢复
- python安装报错error: pybind11 2.10+ requires MSVC 2017 or newer
- 微信配置JS接口安全域名问题-Nginx配置
- Linux磁盘的格式化
- 古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
- 信托公司的“大数据”战略思维
- verilog分频电路