//思路:参考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实现相关推荐

  1. 生活就是这样充满一些小插曲的2020.11.21日记

    生活日记 又是一个早期的周六,早上上课,然后去食堂吃饭.好久不去食堂吃饭了,看见有我喜欢的平菇就点了一份,高兴的坐了下来准备品尝,第一口夹一个大的,一口包进嘴里等着满足感的反馈.???什么味道,怎么这 ...

  2. 计算机组成与体系结构——串联系统与并联系统——2020.11.21

    并联是一种冗余状态 冗余机制,提高系统的可靠性 --高岸为谷,深谷为陵--

  3. Jenkins持续集成学习笔记(2020.11.22)

    Jenkins持续集成学习笔记(2020.11.22) 前言: (官网) 以前很久学习过Jenkins持续集成进行快速部署项目进行测试, 最近换工作了, 发现新公司有用到, 现在来复习一下 官网介绍: ...

  4. QIIME 2教程. 21进化树q2-phylogeny(2020.11)

    使用q2-phylogeny进行系统发育推断 Phylogenetic inference with q2-phylogeny https://docs.qiime2.org/2020.11/tuto ...

  5. QIIME 2教程. 21进化树推断q2-phylogeny(2020.11)

    文章目录 使用q2-phylogeny进行系统发育推断 序列对齐Sequence Alignment 减少对齐的歧义:屏蔽和参考对齐方式 Reducing alignment ambiguity: m ...

  6. 国产半导体设备多年沉淀终爆发!2020制程、测试、硅片设备全面开花

    看点:2016-2019年进入主流晶圆厂工艺验证的关键国产设备,将在2020年获得实质性突破. 随着每一次信息技术重大突破,半导体设备行业规模产生一次大飞跃,如 PC 时代支撑设备规模 200-300 ...

  7. QIIME 2教程. 04人体微生物组分析Moving Pictures(2020.11)

    文章目录 QIIME 2用户文档. 4人体各部位微生物组 本节视频视频教程 启动QIIME2运行环境 样本元数据 下载和导入数据 拆分样品 序列质控和生成特征表 方法1. DADA2 方法2. Deb ...

  8. QIIME 2教程. 01简介和安装 Introduction Install(2020.11开始更新)

    写在前面 QIIME是微生物组领域最广泛使用的分析流程,10年来引用20000+次,2019年Nature杂志评为近70年来人体菌群研究的25个里程碑事件--里程碑16:生物信息学工具助力菌群测序数据 ...

  9. QIIME 2教程. 26为QIIME 2开发新插件DevelopingPlugin(2020.11)

    文章目录 为QIIME 2开发新插件 概述Overview 插件组件Plugin components 定义功能Define functionality 创建一个函数并注册为方法 Create a f ...

最新文章

  1. V​M​W​a​r​e​里​安​装​6​4​位​L​i​n​u​x​ ​的​方​法
  2. jboss7 加载module过程
  3. Golang之实现一个负载均衡算法(随机,轮询)
  4. 【OpenGL从入门到精通(三)】第一个点的理论
  5. 个人的中小型项目前端架构浅谈(转)
  6. dede首页调用会员积分和头像代码
  7. CSS(网页样式语言)基础,网页CSS设计样式基础知识点 小白教程
  8. (大数据工程师学习路径)第三步 Git Community Book----高级技能
  9. 结构体C语言王者归来
  10. 海思Hi3519/Hi3559-使用cmake编译sdk代码
  11. 说唱天王 Eminem 自传《The Way I am》3
  12. 服务器win2003修复,win2003服务器svchost.exe异常
  13. 判断某年某月某日是这一年的第几天
  14. mysql分组取最新一条数据
  15. DNA: 人类的终极U盘
  16. 解决工行登录失败:[96111945]验证码输入错误或已经超时失效,请重新输入
  17. MySQL详解 --- 聚合与分组
  18. 杰奇采集分页 php,修改杰奇1.7模板 给章节内容添加分页
  19. php 简单图片验证码,PHP 实现简单图片验证码
  20. 基于HTML5 Canvas的工控SCADA模拟飞机飞行

热门文章

  1. Time-Evolving Graph Convolutional Recurrent Network for Traffic Prediction论文笔记
  2. 特征值和奇异值的关系
  3. 谷歌要收购这家脑电波控制器公司
  4. oracle10g rman备份有效性,Oracle 10g RMAN的备份 恢复
  5. python安装报错error: pybind11 2.10+ requires MSVC 2017 or newer
  6. 微信配置JS接口安全域名问题-Nginx配置
  7. Linux磁盘的格式化
  8. 古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
  9. 信托公司的“大数据”战略思维
  10. verilog分频电路