当前位置: 首页 > news >正文

哈希算法--猜数字游戏

1.题目要求

输入两个位数相同的数,判断对应位置的数字是否相等,返回两个数。第一个数是数字和位置完全猜对的数字个数,第二个数是数字大小猜对但位置不对的数字个数

2.逐步编程

2.1 定义函数

def g(secret,guess):sec_dic={}gue_dic={}# 定义两个字典,记录每个数组中数字出现的个数count1=0# 记录完全才对的数的个数count2=0# 记录大小猜对但位置不对的个数

2.2 遍历判断

    for i in range(len(secret)):if secret[i]==guess[i]:count1+=1# 如果位置和大小对应相等,count1数量加1else:if secret[i] in sec_dic:sec_dic[secret[i]]+=1# 若该数字包含在字典中,计数加1else:sec_dic[secret[i]]=1# 否则在字典中新建此数,初始数量为1if guess[i] in gue_dic:gue_dic[guess[i]]+=1else:gue_dic[guess[i]]=1

2.3 对count2取值

对于秘密数字1123,猜测数字9111 ,count2的数字为1。为什么呢?在秘密数字中,第2个已经算作全对的数量,而第1个数字1只能和猜测数字中的两个1中的某个对应,也就是说,最终只是数字对的数量是由该数在秘密数字中和在猜测数字中更小的那一个决定。为此,只需要记录秘密数字和猜测数字中未匹配的数字和它的个数,之后看相同数字的最小数即可。

    for j in sec_dic:if j in gue_dic:# 此数在两个字典中都存在count2+=min(sec_dic[j],gue_dic[j])return str(count1)+','+str(count2)

3.完整代码

def g(secret,guess):sec_dic={}gue_dic={}count1=0count2=0for i in range(len(secret)):if secret[i]==guess[i]:count1+=1else:if secret[i] in sec_dic:sec_dic[secret[i]]+=1else:sec_dic[secret[i]]=1if guess[i] in gue_dic:gue_dic[guess[i]]+=1else:gue_dic[guess[i]]=1for j in sec_dic:if j in gue_dic:count2+=min(sec_dic[j],gue_dic[j])return str(count1)+','+str(count2)
print(g([1,2,2,2,1,1],[8,2,1,1,0,0]))

4.过程解析

def g(secret,guess):sec_dic={}gue_dic={}count1=0count2=0for i in range(len(secret)):if secret[i]==guess[i]:count1+=1else:if secret[i] in sec_dic:sec_dic[secret[i]]+=1print(sec_dic,'sec_dic')else:sec_dic[secret[i]]=1print(sec_dic,'sec_dic')if guess[i] in gue_dic:gue_dic[guess[i]]+=1print(gue_dic,'gue_dic')else:gue_dic[guess[i]]=1print(gue_dic,'gue_dic')for j in sec_dic:if j in gue_dic:count2+=min(sec_dic[j],gue_dic[j])return str(count1)+','+str(count2)
print(g([1,2,2,2,1,1],[8,2,1,1,0,0]))# {1: 1} sec_dic
# {8: 1} gue_dic
# {1: 1, 2: 1} sec_dic
# {8: 1, 1: 1} gue_dic
# {1: 1, 2: 2} sec_dic
# {8: 1, 1: 2} gue_dic
# {1: 2, 2: 2} sec_dic
# {8: 1, 1: 2, 0: 1} gue_dic
# {1: 3, 2: 2} sec_dic        # 1的数量为3个
# {8: 1, 1: 2, 0: 2} gue_dic  # 1的数量为2个,返回最小值
# 1,2

相关文章:

哈希算法--猜数字游戏

1.题目要求 输入两个位数相同的数,判断对应位置的数字是否相等,返回两个数。第一个数是数字和位置完全猜对的数字个数,第二个数是数字大小猜对但位置不对的数字个数 2.逐步编程 2.1 定义函数 def g(secret,guess):sec_dic{}gue_dic{}# 定义…...

idea生成自定义Maven原型(archetype)项目工程模板

一、什么是Maven原型(Maven archetype) 引自官网的介绍如下: Maven原型插件官网地址 这里采用DeepSeek助手翻译如下: Maven 原型 什么是原型? 简而言之,原型是一个 Maven 项目模板工具包。原型被定义为一…...

Redis面试常见问题——使用场景问题

目录 Redis面试常见问题 如果发生了缓存穿透、击穿、雪崩,该如何解决? 缓存穿透 什么是布隆过滤器? 缓存击穿 缓存雪崩 双写一致性(redis做为缓存,mysql的数据如何与redis进行同步呢?) …...

样式和ui(待更新)

element-plus 先在项目下执行安装语句执行按需导入的命令按照官方文档修改vitest.json sass样式定制 npm -i sass -D在项目下准备定制的样式文件 styles/element/index.scss(!注意这里是.scss文件在vitest.json 修改配置文件 Components({resolvers: [ElementPlusResolver(…...

大摩闭门会:250228 学习总结报告

如果图片分辨率不足,可右键图片在新标签打开图片或者下载末尾源文件进行查看 本文只是针对视频做相应学术记录,进行学习讨论使用...

线程(Thread)

一、概念 线程:线程是一个轻量级的进程 二、线程的创建 1、线程的空间 (1)进程的空间包括:系统数据段、数据段、文本段 (2) 线程位于进程空间内部 (3) 栈区独享、与进程共享文本段、…...

AI军备竞赛2025:GPT-4.5的“情商革命”、文心4.5的开源突围与Trae的代码革命

AI军备竞赛2025:GPT-4.5的“情商革命”、文心4.5的开源突围与Trae的代码革命 ——一场重塑人类认知边界的技术战争 一、OpenAI的“感性觉醒”:GPT-4.5的颠覆与争议 1.1 从“冷面学霸”到“温柔导师”:AI的情商跃迁 当用户输入“朋友放鸽子&…...

DeepSeek + 自由职业 发现新大陆,从 0 到 1 全流程跑通商业 IP

DeepSeek 自由职业 发现新大陆,从 0 到 1 全流程跑通商业 IP 商业定位1. 商业定位分析提示词2. 私域引流策略提示词3. 变现模型计算器提示词4. 对标账号分析提示词5. 商业IP人设打造提示词6. 内容选题策略提示词7. 用户人群链分析提示词8. 内容布局与转化路径设计提…...

Java进阶——常用工具类

日常开发中,Arrays、Collections 和 Objects 是非常实用的工具类,提供了丰富的功能,从而可以更高效地处理数组、集合和对象。本文将详细介绍这三个工具类的重要知识细节。 本文目录 一、 Arrays数组转集合并行排序优化Stream 支持 二、 Colle…...

【考试大纲】高级系统架构设计师考试大纲

目录 引言一、 考试说明1.考试目标2.考试要求3.考试科目设置二、 考试范围考试科目1:系统架构设计综合知识考试科目2:系统架构设计案例分析考试科目3:系统架构设计论文引言 最新的系统架构设计师考试大纲出版于 2022 年 11 月,本考试大纲基于此版本整理。 一、 考试说明…...

上位机知识篇---四种CPU架构交叉编译

文章目录 前言一、四种 CPU 架构1. x86/x86_64指令集位宽:应用场景编译工具 2. ARM指令集位宽:应用场景编译工具 3. MIPS指令集位宽应用场景编译工具 4. RISC-V指令集位宽应用场景编译工具 二、交叉编译1. 什么是交叉编译?定义应用场景 2. 交…...

隐式转换为什么导致索引失效

SELECT * FROM users WHERE id 123;这条语句失效的原因就是id是int类型的主键,比较的时候把id从int转化为字符串来比较了,而字符串的比较规则和int的比较规则明显不同,字符串是字典序比较的,还涉及到数据的长度,那为什…...

【含文档+PPT+源码】基于过滤协同算法的旅游推荐管理系统设计与实现

项目介绍 本课程演示的是一款基于过滤协同算法的旅游推荐管理系统设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套…...

SpringBoot @Value 注解使用

Value 注解用于将配置文件中的属性值注入到Spring管理的Bean中。 1. 基本用法 Value 可以直接注入配置文件中的属性值。 配置文件 (application.properties 或 application.yml) 配置文件定义需要注入的数据。 consumer:username: lisiage: 23hobby: sing,read,sleepsubje…...

Spring Boot 3.x 系列【3】Spring Initializr快速创建Spring Boot项目

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot版本3.0.3 源码地址:https://gitee.com/pearl-organization/study-spring-boot3 文章目录 前言安装JDK 17创建Spring Boot 项目 方式1:网页在线生成方式2&#…...

高频 SQL 50 题(基础版)_1667. 修复表中的名字

高频 SQL 50 题(基础版)_1667. 修复表中的名字 select user_id ,concat(upper(substring(name,1,1)),lower(substring(name,2))) as name from Users order by user_id...

Windwos10 系统没有微软商店(Microsoft Store)怎么办?

操作方法 管理员身份打开power shell , 输入 Get-AppxPackage -AllUsers Microsoft.WindowsStore* | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register “ ( ( (_.InstallLocation)\AppXManifest.xml”} 按下enter按键,就OK了...

c++同步机制

总结 多线程访问共享数据时需要加锁 多线程数据竞争 假如有一个变量shared_variable被10个线程共享&#xff0c;每个线程在循环中对shared_variable进行 1000 次累加操作&#xff0c;我们期望最终值为10000。 #include <iostream> #include <thread> #include …...

RuoYi框架介绍,以及如何基于Python使用RuoYi框架

若依框架&#xff08;RuoYi&#xff09;是一款基于Spring Boot和Vue.js的开源快速开发平台&#xff0c;广泛应用于企业级应用开发。它提供了丰富的功能模块和代码生成工具&#xff0c;帮助开发者快速搭建后台管理系统。 主要特点 前后端分离&#xff1a;前端采用Vue.js&#x…...

Go 语言环境安装

1.go官网下载安装包 All releases - The Go Programming Language 双击安装,一路下一步 2.安装完后查看版本 打开cmd 输入 以下 ,查看语言版本 go version 查看环境变量是否自动设置成功...

OpenClaw+gemma-3-12b-it自动化数据清洗:从杂乱Excel到规整数据库

OpenClawgemma-3-12b-it自动化数据清洗&#xff1a;从杂乱Excel到规整数据库 1. 为什么需要自动化数据清洗 上周我接手了一个市场调研项目&#xff0c;客户发来的原始数据让我头皮发麻——12个Excel文件&#xff0c;总计超过3万条记录&#xff0c;充斥着格式混乱的日期、缺失…...

如何在不同的机器上运行多个OpenClaw实例?

想让不同机器上的 OpenClaw 一起协作&#xff0c;其实就是搭建一个跨机器的 “小龙虾通信网络”。实现方式分两种&#xff1a;简单直连&#xff08;适合测试 / 小集群&#xff09;和远程网关&#xff08;适合生产 / 稳定协作&#xff09;。下面给你一套直接能跑的完整方案。一、…...

Keil MDK-ARM高效开发:快捷键与代码完形实战配置

1. Keil配置详解&#xff1a;快捷键与代码完形功能实战指南作为一名嵌入式开发老手&#xff0c;我深知Keil MDK-ARM开发环境的高效配置对工作效率的影响。今天我将分享Configuration配置中Shortcut Keys&#xff08;快捷键&#xff09;和Text Completion&#xff08;代码完形&a…...

OpenClaw性能调优实战:Qwen3-32B在RTX4090D上的量化推理加速

OpenClaw性能调优实战&#xff1a;Qwen3-32B在RTX4090D上的量化推理加速 1. 为什么需要性能调优&#xff1f; 去年冬天&#xff0c;当我第一次在RTX4090D上部署Qwen3-32B模型时&#xff0c;本以为24GB显存足以轻松应对各种任务。但现实很快给我上了一课——一个简单的网页内容…...

SoftSerial软件串口原理与STM32工程实践

1. SoftSerial 库深度解析&#xff1a;面向资源受限 MCU 的软件 UART 实现原理与工程实践1.1 背景与工程必要性在嵌入式系统开发中&#xff0c;UART&#xff08;通用异步收发传输器&#xff09;是最基础、最广泛使用的串行通信接口。然而&#xff0c;MCU 的硬件 UART 资源往往极…...

基于单片机金沙河粮仓环境监测系统设计与实现

一、摘要 本文围绕基于单片机的金沙河粮仓环境监测系统展开设计与实现研究。系统以单片机为核心&#xff0c;集成 DHT11 、MQ - 135 等传感器&#xff0c;可实时精准监测粮仓温湿度、气体成分等关键环境参数。借助 LoRa、ESP8266 实现数据的可靠传输与远程通信 &#xff0c;OLE…...

NodeList 对象

NodeList 对象 概述 NodeList 对象是 DOM(文档对象模型)中的一种数据结构,它代表了包含在一个父节点内的所有元素节点的一个集合。NodeList 对象常用于处理文档中的多个元素,是 JavaScript 在操作 DOM 时的一个重要工具。 特点 1. 长度属性 NodeList 对象具有一个 len…...

DAY4--SQL限制返回行数查询

SQL基础入门&#xff1a;电商用户数据限制返回行数查询实操 这一章能解决什么电商工作问题&#xff1f; 这一章要学的LIMIT&#xff0c;是我认为电商数据分析新人最应该刻进肌肉记忆的语法。因为它直接关系到两件事&#xff1a;你的工作效率&#xff0c;以及你的职场安全。 我先…...

告别复制粘贴:用影刀RPA+飞书多维表格,我把每周的销售数据汇总从2小时缩到5分钟

告别复制粘贴&#xff1a;用影刀RPA飞书多维表格实现销售数据自动化革命 每周五下午&#xff0c;市场部的张经理总要面对同样的噩梦&#xff1a;从七个不同渠道导出销售数据&#xff0c;手动核对格式差异&#xff0c;复制粘贴到汇总表&#xff0c;再计算各类指标。这个重复劳动…...

基于深度学习的隧道缺陷检测系统(YOLO12/11/v8/v5模型+django)(源码+lw+部署文档+讲解等)

摘要随着城市化进程的加快&#xff0c;隧道的建设和维护日益重要。隧道缺陷的及时检测与修复不仅关系到交通安全&#xff0c;也涉及到基础设施的耐久性和经济效益。传统的隧道缺陷检测方法依赖人工巡检&#xff0c;效率低且容易遗漏细微缺陷。本文提出了一种基于深度学习的隧道…...