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

玩转数字与运算:用C语言实现24点游戏的扑克牌魅力

在这里插入图片描述

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。
🍎个人主页:Java Fans的博客
🍊个人信条:不迁怒,不贰过。小知识,大智慧。
💞当前专栏:C、C++学习分享专栏
✨特色专栏:国学周更-心性养成之路
🥭本文内容:玩转数字与运算:用C语言实现24点游戏的扑克牌魅力

文章目录

    • 引言
    • 1. 随机生成数字
      • 1.1 使用 `rand()` 函数
      • 1.2 生成1到10的随机数
      • 1.3 初始化随机数种子
      • 1.4 完整的随机数字生成函数
      • 1.5 代码解释
    • 2. 定义扑克牌花色
      • 2.1 扑克牌花色的种类
      • 2.2 使用字符串数组定义花色
      • 2.3 随机选择花色
      • 2.4 完整的花色定义与生成示例
      • 2.5 代码解释
    • 3. 显示扑克牌
      • 3.1 显示扑克牌的基本思路
      • 3.2 使用格式化输出
      • 3.3 实现显示扑克牌的函数
      • 3.4 完整的示例代码
      • 3.5 代码解释
      • 3.6 美化输出
    • 4. 扩展功能
      • 4.1 检查是否能组成24点
      • 4.2 用户输入
      • 4.3 图形界面
      • 4.4 计时和得分系统
      • 4.5 多人模式
    • 结论

引言

  在数字的世界里,24点游戏以其简单却富有挑战性的规则吸引了无数玩家。这个游戏不仅是对数学运算能力的考验,更是对逻辑思维和创造力的挑战。玩家需要灵活运用加、减、乘、除等基本运算,将四个随机生成的数字组合成24,过程中的每一步都充满了思考与探索的乐趣。

  随着编程技术的不断发展,许多经典游戏也逐渐被移植到计算机上。本文将带你走进C语言的世界,展示如何实现一个简单而有趣的24点游戏。我们将通过随机生成四个1到10的数字,并以扑克牌的形式展示它们,增加游戏的趣味性和视觉吸引力。无论你是编程新手还是经验丰富的开发者,这个项目都将为你提供一个锻炼思维和编程技能的绝佳机会。让我们一起开始这段数字与运算的奇妙旅程吧!

1. 随机生成数字

  在24点游戏中,随机生成四个数字是游戏的第一步,也是至关重要的一步。我们希望生成的数字在1到10之间,以确保游戏的可玩性和挑战性。

1.1 使用 rand() 函数

  C语言提供了一个标准库函数 rand(),用于生成伪随机数。这个函数每次调用时都会返回一个在0到RAND_MAX之间的整数。为了生成我们所需范围内的数字(1到10),我们需要对 rand() 的结果进行一些数学运算。

1.2 生成1到10的随机数

  为了将 rand() 生成的随机数映射到1到10的范围,我们可以使用以下公式:

random_number = ( rand() % 10 ) + 1 \text{random\_number} = (\text{rand()} \% 10) + 1 random_number=(rand()%10)+1

  这里的 % 是取模运算符,它返回 rand() 结果除以10的余数。这样,我们可以得到一个范围在0到9之间的数字。通过加1,我们将范围调整为1到10。

1.3 初始化随机数种子

  为了确保每次运行程序时生成的随机数都是不同的,我们需要初始化随机数种子。可以使用 srand() 函数来设置种子,通常我们会使用当前时间作为种子,这样可以确保每次运行程序时生成的随机数序列都是独特的。以下是初始化随机数种子的代码示例:

#include <stdlib.h>
#include <time.h>srand(time(NULL)); // 使用当前时间作为随机数种子

1.4 完整的随机数字生成函数

  结合上述步骤,我们可以编写一个函数来生成四个随机数字。以下是一个示例代码,展示了如何实现这一功能:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>#define NUM_CARDS 4
#define MAX_NUMBER 10void generateRandomNumbers(int numbers[NUM_CARDS]) {for (int i = 0; i < NUM_CARDS; i++) {numbers[i] = (rand() % MAX_NUMBER) + 1; // 生成1到10的随机数字}
}int main() {srand(time(NULL)); // 初始化随机数种子int numbers[NUM_CARDS];generateRandomNumbers(numbers);// 打印生成的随机数字printf("生成的随机数字是:");for (int i = 0; i < NUM_CARDS; i++) {printf("%d ", numbers[i]);}printf("\n");return 0;
}

1.5 代码解释

  1. 头文件:引入了 stdio.hstdlib.htime.h,分别用于输入输出、随机数生成和时间获取。
  2. 常量定义:定义了常量 NUM_CARDS 表示生成的数字数量,MAX_NUMBER 表示数字的最大值。
  3. 生成随机数字generateRandomNumbers 函数使用循环生成四个1到10之间的随机数字,并存储在数组中。
  4. 主函数:在 main 函数中,首先初始化随机数种子,然后调用生成函数并打印生成的随机数字。

2. 定义扑克牌花色

  在扑克牌中,花色是构成扑克牌的重要元素之一。每种花色不仅代表了不同的符号,还在游戏中起到了区分和识别的作用。在24点游戏中,我们可以通过随机选择花色来增加游戏的趣味性和视觉效果。接下来,我们将详细阐述如何在C语言中定义和使用扑克牌的花色。

2.1 扑克牌花色的种类

扑克牌通常有四种基本花色:

  1. 红心(♥)
  2. 黑桃(♠)
  3. 方块(♦)
  4. 梅花(♣)

  这四种花色各具特色,能够为游戏增添多样性。在我们的24点游戏中,我们将使用这些花色来与随机生成的数字相结合,形成完整的扑克牌。

2.2 使用字符串数组定义花色

  在C语言中,我们可以使用字符串数组来存储这些花色。每种花色可以用一个字符串表示,方便后续的随机选择和显示。以下是定义扑克牌花色的示例代码:

const char *suits[] = {"♥", "♠", "♦", "♣"};

  在这个数组中,suits[0] 表示红心,suits[1] 表示黑桃,suits[2] 表示方块,suits[3] 表示梅花。通过这种方式,我们可以轻松地访问和使用这些花色。

2.3 随机选择花色

  为了在生成扑克牌时随机选择花色,我们可以使用 rand() 函数生成一个0到3之间的随机索引,然后用这个索引来访问 suits 数组中的元素。以下是随机选择花色的示例代码:

int suitsIndex[NUM_CARDS];
for (int i = 0; i < NUM_CARDS; i++) {suitsIndex[i] = rand() % 4; // 随机选择花色索引
}

  在这个代码片段中,我们使用 % 4 来确保生成的索引在0到3之间,从而随机选择四种花色中的一种。

2.4 完整的花色定义与生成示例

  结合之前的随机数字生成部分,我们可以将扑克牌花色的定义和随机选择整合到一个完整的示例中。以下是实现的代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>#define NUM_CARDS 4
#define MAX_NUMBER 10// 定义扑克牌花色
const char *suits[] = {"♥", "♠", "♦", "♣"};void generateRandomCards(int numbers[NUM_CARDS], int suitsIndex[NUM_CARDS]) {for (int i = 0; i < NUM_CARDS; i++) {numbers[i] = (rand() % MAX_NUMBER) + 1; // 生成1到10的随机数字suitsIndex[i] = rand() % 4; // 随机选择花色索引}
}void displayCards(int numbers[NUM_CARDS], int suitsIndex[NUM_CARDS]) {for (int i = 0; i < NUM_CARDS; i++) {printf("%d%s ", numbers[i], suits[suitsIndex[i]]);}printf("\n");
}int main() {srand(time(NULL)); // 初始化随机数种子int numbers[NUM_CARDS];int suitsIndex[NUM_CARDS];generateRandomCards(numbers, suitsIndex);printf("随机生成的扑克牌是:\n");displayCards(numbers, suitsIndex);return 0;
}

2.5 代码解释

  1. 花色定义:使用字符串数组 suits 存储四种扑克牌花色。
  2. 生成扑克牌:在 generateRandomCards 函数中,生成随机数字和随机花色索引。
  3. 显示扑克牌:在 displayCards 函数中,将数字和对应的花色组合并打印到控制台。
  4. 主函数:在 main 函数中,初始化随机数种子,调用生成和显示函数。

3. 显示扑克牌

  在24点游戏中,显示扑克牌是一个重要的环节,它不仅让玩家直观地看到生成的数字和花色,还增强了游戏的趣味性和互动性。接下来,我们将详细阐述如何在C语言中实现扑克牌的显示,包括格式化输出和实现细节。

3.1 显示扑克牌的基本思路

  显示扑克牌的基本思路是将随机生成的数字与对应的花色组合在一起,并以易于阅读的格式输出。我们可以使用循环遍历生成的数字和花色数组,将它们逐一打印到控制台。

3.2 使用格式化输出

  在C语言中,我们可以使用 printf 函数进行格式化输出。通过在字符串中使用格式控制符,我们可以灵活地控制输出的格式。例如,我们可以使用 %d 来输出整数,使用 %s 来输出字符串。

3.3 实现显示扑克牌的函数

  我们可以定义一个名为 displayCards 的函数,专门用于显示扑克牌。该函数接受两个参数:一个整数数组(存储扑克牌的数字)和一个整数数组(存储扑克牌的花色索引)。以下是实现的代码示例:

void displayCards(int numbers[NUM_CARDS], int suitsIndex[NUM_CARDS]) {for (int i = 0; i < NUM_CARDS; i++) {printf("%d%s ", numbers[i], suits[suitsIndex[i]]);}printf("\n");
}

  在这个函数中,我们使用一个 for 循环遍历每一张扑克牌。对于每一张牌,我们通过 printf 输出数字和对应的花色。最后,我们在输出完成后打印一个换行符,以便于格式的整齐。

3.4 完整的示例代码

  结合之前的随机数字生成和花色定义部分,我们可以将扑克牌的显示功能整合到一个完整的示例中。以下是实现的代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>#define NUM_CARDS 4
#define MAX_NUMBER 10// 定义扑克牌花色
const char *suits[] = {"♥", "♠", "♦", "♣"};void generateRandomCards(int numbers[NUM_CARDS], int suitsIndex[NUM_CARDS]) {for (int i = 0; i < NUM_CARDS; i++) {numbers[i] = (rand() % MAX_NUMBER) + 1; // 生成1到10的随机数字suitsIndex[i] = rand() % 4; // 随机选择花色索引}
}void displayCards(int numbers[NUM_CARDS], int suitsIndex[NUM_CARDS]) {printf("随机生成的扑克牌是:\n");for (int i = 0; i < NUM_CARDS; i++) {printf("%d%s ", numbers[i], suits[suitsIndex[i]]);}printf("\n");
}int main() {srand(time(NULL)); // 初始化随机数种子int numbers[NUM_CARDS];int suitsIndex[NUM_CARDS];generateRandomCards(numbers, suitsIndex);displayCards(numbers, suitsIndex); // 显示扑克牌return 0;
}

3.5 代码解释

  1. 花色定义:使用字符串数组 suits 存储四种扑克牌花色。
  2. 生成扑克牌:在 generateRandomCards 函数中,生成随机数字和随机花色索引。
  3. 显示扑克牌:在 displayCards 函数中,将数字和对应的花色组合并打印到控制台。
  4. 主函数:在 main 函数中,初始化随机数种子,调用生成和显示函数。

3.6 美化输出

为了使输出更加美观,我们可以在显示扑克牌时添加一些格式化元素,例如:

  • 在每张牌之间添加空格或制表符,以便于阅读。
  • 在输出前添加标题或说明,明确显示内容。

例如,我们可以在 displayCards 函数中添加标题:

void displayCards(int numbers[NUM_CARDS], int suitsIndex[NUM_CARDS]) {printf("随机生成的扑克牌是:\n");for (int i = 0; i < NUM_CARDS; i++) {printf("%d%s ", numbers[i], suits[suitsIndex[i]]);}printf("\n");
}

4. 扩展功能

  在实现了基本的24点游戏框架后,我们可以通过添加一些扩展功能来提升游戏的趣味性和挑战性。

4.1 检查是否能组成24点

  24点游戏的核心在于利用给定的四个数字,通过加、减、乘、除等运算组合出24。我们可以编写一个算法,尝试所有可能的运算组合和数字排列。我们可以使用递归生成四个数字的所有排列。以下是实现的代码:

#include <stdbool.h>void swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;
}void permute(int numbers[], int l, int r, bool *found) {if (l == r) {// 在这里调用计算函数if (canMake24(numbers)) {*found = true;}} else {for (int i = l; i <= r; i++) {swap(&numbers[l], &numbers[i]);permute(numbers, l + 1, r, found);swap(&numbers[l], &numbers[i]); // backtrack}}
}

  我们需要实现 canMake24 函数来检查是否能通过运算得到24。以下是一个简单的实现:

bool calculate(float a, float b, char op) {switch (op) {case '+': return a + b;case '-': return a - b;case '*': return a * b;case '/': return b != 0 ? a / b : 0; // 避免除以零default: return 0;}
}bool canMake24(int numbers[4]) {char ops[] = {'+', '-', '*', '/'};float results[4];// 生成所有运算符组合并计算结果for (int i = 0; i < 4; i++) {for (int j = 0; j < 4; j++) {// 这里需要实现运算逻辑// 计算结果并检查是否等于24}}return false; // 默认返回false
}

4.2 用户输入

  为了增加游戏的互动性,我们可以允许用户输入自己的四个数字。以下是获取用户输入的代码:

void getUserInput(int numbers[NUM_CARDS]) {printf("请输入四个数字(1到10之间):\n");for (int i = 0; i < NUM_CARDS; i++) {scanf("%d", &numbers[i]);while (numbers[i] < 1 || numbers[i] > 10) {printf("输入无效,请输入1到10之间的数字:");scanf("%d", &numbers[i]);}}
}

4.3 图形界面

  为了提升用户体验,我们可以考虑使用图形库(如SDL、GTK或Qt)来创建图形用户界面(GUI)。可以使用按钮和文本框来显示扑克牌和输入数字。以下是一个伪代码示例,展示如何使用SDL库创建一个简单的窗口:

#include <SDL2/SDL.h>void createWindow() {SDL_Init(SDL_INIT_VIDEO);SDL_Window *window = SDL_CreateWindow("24点游戏", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_SHOWN);SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);// 在这里绘制扑克牌和按钮SDL_DestroyRenderer(renderer);SDL_DestroyWindow(window);SDL_Quit();
}

4.4 计时和得分系统

  为了增加游戏的挑战性,我们可以引入计时和得分系统。可以使用系统时间来实现计时器,记录玩家从开始到找到结果所用的时间。

#include <time.h>void startTimer() {time_t start = time(NULL);// 游戏逻辑time_t end = time(NULL);printf("用时: %ld秒\n", end - start);
}

  根据玩家的表现(如用时、找到的组合数量等)计算得分:

int calculateScore(int timeTaken) {return 100 - timeTaken; // 示例得分计算
}

4.5 多人模式

  为了增加游戏的趣味性,我们可以实现多人模式,让多个玩家轮流进行游戏。在多人模式下,玩家可以轮流进行游戏:

void multiplayerMode() {int playerCount;printf("请输入玩家人数:");scanf("%d", &playerCount);for (int i = 0; i < playerCount; i++) {printf("玩家 %d 的回合:\n", i + 1);// 生成扑克牌并检查}
}

结论

  通过本文的详细阐述,我们成功构建了一个基本的24点游戏框架,并探讨了多种扩展功能,以提升游戏的趣味性和挑战性。从随机生成扑克牌的数字和花色,到实现运算组合的检查,再到用户输入、图形界面、计时和得分系统,以及多人模式的设计,这些功能不仅丰富了游戏的玩法,还增强了玩家的互动体验。

  实现这些功能的过程,不仅让我们深入理解了C语言的基本语法和编程逻辑,还锻炼了我们的算法思维和问题解决能力。希望通过这些扩展,玩家能够在享受游戏的同时,提升自己的数学能力和逻辑思维。

  未来,我们可以继续探索更多的功能和优化,例如引入更复杂的算法、改进用户界面设计,甚至将游戏移植到移动平台上。无论如何,24点游戏将始终是一个充满乐趣和挑战的经典游戏,期待你在实现和扩展的过程中,收获更多的乐趣与成就感!


  码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识点击关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。

在这里插入图片描述

相关文章:

玩转数字与运算:用C语言实现24点游戏的扑克牌魅力

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...

动态反馈控制器(DFC)和 服务率控制器(SRC);服务率和到达率简单理解

目录 服务率和到达率简单理解 服务率 到达率 排队论中的应用 论文解析:队列等待成本动态感知控制模型 动态反馈和队列等待成本意识: 服务速率调整算法: 动态反馈控制器(DFC)和 服务率控制器(SRC) SRC公式4的原理 算力资源分配系统中的调整消耗 举例说明 服务…...

Flutter-Web首次加载时添加动画

前言 现在web上线后首次加载会很慢&#xff0c;要5秒以上&#xff0c;并且在加载的过程中界面是白屏。因此想在白屏的时候放一个加载动画 实现步骤 1.找到web/index.html文件 2.添加以下<style>标签内容到<head>标签中 <style>.loading {display: flex;…...

stl 实现非容器类型元素和容器元素比较

在 C 标准模板库&#xff08;STL&#xff09;中&#xff0c;有许多算法可以接受自定义的比较函数&#xff08;Compare&#xff09;。这些算法通常涉及排序、查找、合并、集合操作等场景&#xff0c;允许用户通过 Compare 函数指定如何比较两个元素。 自定义compare的算法 排序…...

ChatGPT 桌面版发布了,如何安装?

本章教程教大家如何进行安装。 一、下载安装包 官网地址地址&#xff1a;https://openai.com/chatgpt/desktop/ 支持Windows和MacOS操作系统 二、安装步骤 Windows用户下载之后&#xff0c;会有一个exe安装包&#xff0c;点击运行安装即可。 注意事项&#xff0c;如果Windows操…...

【动手学电机驱动】STM32-FOC(8)MCSDK Profiler 电机参数辨识

STM32-FOC&#xff08;1&#xff09;STM32 电机控制的软件开发环境 STM32-FOC&#xff08;2&#xff09;STM32 导入和创建项目 STM32-FOC&#xff08;3&#xff09;STM32 三路互补 PWM 输出 STM32-FOC&#xff08;4&#xff09;IHM03 电机控制套件介绍 STM32-FOC&#xff08;5&…...

JavaWeb后端开发知识储备2

目录 1.HttpClient 2.微信小程序开发 3.Spring Cache 4.Spring Task 4.1cron表达式 4.2入门案例 1.HttpClient 简单来说&#xff0c;HttpClient可以通过编码的方式在Java中发送Http请求 2.微信小程序开发 微信小程序的开发本质上是前端开发&#xff0c;对于后端程序员来…...

Java Stream API - 高效数据处理的核心工具_01

文章目录 概述&#xff1a;高效数据处理的核心工具1. 流的创建1.1 从集合创建流1.2 从数组创建流1.3 直接创建流 2. 中间操作&#xff1a;流的转换和处理2.1 map()&#xff1a;映射操作2.2 filter()&#xff1a;过滤操作2.3 flatMap()&#xff1a;扁平化映射操作2.4 sorted()&a…...

【计算机网络】网段划分

一、为什么有网段划分 IP地址 网络号(目标网络) 主机号(目标主机) 网络号: 保证相互连接的两个网段具有不同的标识 主机号: 同一网段内&#xff0c;主机之间具有相同的网络号&#xff0c;但是必须有不同的主机号 互联网中的每一台主机&#xff0c;都要隶属于某一个子网 -&…...

HTML和CSS 表单、表格练习

HTML和CSS 表格练习 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>HTML表格练习</title>…...

ByteBuffer模拟拆包输出消息字符串

以下代码模拟网络编程中的粘包现象&#xff0c;用\n进行分割消息块 源码 public static void main(String[] args) {ByteBuffer byteBuffer1 ByteBuffer.allocate(60) ;byteBuffer1.put("Hello World\nWhat is you name?\nI am Licky!\nHo".getBytes());splice(byt…...

Java FastJson 踩坑记录

newtonsoft.json 第一次用。java 转的json给newtonsoft.json解析&#xff0c;一直解析不出来。 直到写这个文章的时候&#xff0c;我都还觉得是newtonsoft.json和fastjson都有问题。 先看java JSONField(name"Rank​Value") public long Rank1​1000; JSONField(na…...

深入理解 Java 阻塞队列:使用场景、原理与性能优化

在并发编程中&#xff0c;线程安全的队列是解决线程间任务传递和调度的关键工具之一。阻塞队列&#xff08;BlockingQueue&#xff09;作为一种线程安全的队列&#xff0c;实现了在并发环境下对共享数据的安全访问&#xff0c;广泛应用于生产者-消费者模型、任务调度和多线程计…...

Python常用高阶函数:map()、filter()、reduce()

Python常用高阶函数&#xff1a;map()、filter()、reduce() 高阶函数是一类以函数作为参数或者返回值的函数&#xff0c;能够显著提高代码的简洁性和灵活性。在Python中&#xff0c;map()、filter()和reduce()是三种非常常用的高阶函数&#xff0c;它们常被用来对列表或其他可…...

多目标优化算法:多目标极光优化算法(MOPLO)求解ZDT1、ZDT2、ZDT3、ZDT4、ZDT6,提供完整MATLAB代码

一、极光优化算法 极光优化算法&#xff08;Polar Lights Optimization, PLO&#xff09;是2024年提出的一种新型的元启发式优化算法&#xff0c;它从极光这一自然现象中汲取灵感。极光是由太阳风中的带电粒子在地球磁场的作用下&#xff0c;与地球大气层中的气体分子碰撞而产…...

【大数据学习 | Spark-Core】关于distinct算子

只有shuffle类的算子能够修改分区数量&#xff0c;这些算子不仅仅存在自己的功能&#xff0c;比如分组算子groupBy&#xff0c;它的功能是分组但是却可以修改分区。 而这里我们要讲的distinct算子也是一个shuffle类的算子。即可以修改分区。 scala> val arr Array(1,1,2,…...

ShuffleNet:一种为移动设备设计的极致高效的卷积神经网络

摘要 https://arxiv.org/pdf/1707.01083 我们介绍了一种名为ShuffleNet的计算效率极高的卷积神经网络&#xff08;CNN&#xff09;架构&#xff0c;该架构专为计算能力非常有限的移动设备&#xff08;例如10-150 MFLOPs&#xff09;而设计。新架构利用两种新操作&#xff1a;逐…...

AIGC-------AIGC在社交媒体内容生成中的应用

AIGC在社交媒体内容生成中的应用 引言 随着人工智能生成内容&#xff08;AIGC&#xff09;的快速发展&#xff0c;社交媒体平台上的内容创作方式发生了巨大变化。AIGC使得内容创作的门槛大大降低&#xff0c;从而让更多的人能够参与到社交媒体内容的创作中&#xff0c;同时也使…...

提取图像中的高频信息

三种方法 1. 傅里叶变换提取高频和低频【有损】2. 傅里叶变换提取振幅和相位【无损】3. 小波变换【不涉及恢复代码】代码1.代码2代码3 1. 傅里叶变换提取高频和低频【有损】 环境&#xff1a;集群210.30.98.11效果: 2. 傅里叶变换提取振幅和相位【无损】 环境&#xff1a;集…...

js函数声明

在 JavaScript 中&#xff0c;函数是一等公民&#xff08;first-class citizen&#xff09;&#xff0c;这意味着函数可以作为变量、参数和返回值使用。JavaScript 提供了多种定义函数的方式&#xff0c;以下是几种常见的方法&#xff1a; 1. 函数声明&#xff08;Function De…...

语言模型中的多模态链式推理

神经网络的公式推导 简介摘要引言多模态思维链推理的挑战多模态CoT框架多模态CoT模型架构细节编码模块融合模块解码模块 实验结果运行代码补充细节安装包下载Flan-T5数据集准备rougenltkall-MiniLM-L6-v2运行 简介 本文主要对2023一篇论文《Multimodal Chain-of-Thought Reason…...

【Java 解释器模式】实现高扩展性的医学专家诊断规则引擎

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…...

CTF之密码学(Polybius密码)

棋盘密码&#xff0c;也称为Polybius密码或方格密码&#xff0c;是一种基于替换的加密方法。以下是对棋盘密码的详细解析&#xff1a; 一、加密原理 棋盘密码使用一个5x5的方格棋盘&#xff0c;其中填充了26个英文字母&#xff08;通常i和j被视为同一个字母并放在同一个格子中…...

java excel 导入各种踩坑

在 Java 中处理 Excel 导入时&#xff0c;常见的问题&#xff08;即“踩坑”&#xff09;很多&#xff0c;下面列举了处理 Excel 导入时可能遇到的一些问题&#xff0c;并给出了解决方案和优化技巧。 1. POI 库与版本问题 Apache POI 是处理 Excel 的常用库&#xff0c;但是不…...

优化表单交互:在 el-select 组件中嵌入表格显示选项

介绍了一种通过 el-select 插槽实现表格样式数据展示的方案&#xff0c;可更直观地辅助用户选择。支持列配置、行数据绑定及自定义搜索&#xff0c;简洁高效&#xff0c;适用于复杂选择场景。完整代码见GitHub 仓库。 背景 在进行业务开发选择订单时&#xff0c;如果单纯的根…...

js版本之ES5特性简述【String、Function、JSON、其他】(二)

目录 String相关方法 string.charAt() string.charCodeAt() string.concat() string.match() string.search() string.replace() string.split() string.trim() string.slice() string.substr() string.substring() Function相关方法 arguments.length function…...

【redis】哈希类型详解

哈希类型详解 一、哈希类型的介绍二、哈希类型的常用命令2.1 HSET2.2 HGET2.3 HEXISTS2.4 HDEL2.5 HKEYS2.6 HAVLS2.7 HGETALL2.8 HMGET2.9 HLEN2.10 HSETNX2.11 HINCRBY2.12 HINCRBYFLOAT 三、哈希类型命令小结四、哈希类型内部编码五、哈希类型应用场景 一、哈希类型的介绍 …...

每日练题之动态规划(子序列问题讲解 1.最长递增子序列 2.摆动序列)

前言&#xff1a; 需要对「子序列」和「子数组」这两个概念进行区分&#xff1b; 子序列&#xff08;subsequence&#xff09;&#xff1a;子序列并不要求连续&#xff0c;但是我们调出来的顺序必须和原数组的顺序相同。例如&#xff1a;序列 [4, 6, 5] 是 [1, 2, 4, 3, 7, 6,…...

JSON 性能测试 - WastJson 性能也很快

WAST 是一个高性能 Java 工具集库包&#xff0c;包括 JSON、YAML、CSV、HttpClient、JDBC 和 EL 引擎. WastJson 无论是小中大文本各种数据类型等性能都没有明显的短板&#xff0c;除了推广外可以说是六边形战士&#xff0c;更多测试参考 wast-jmh-test: wast性能测试 (并非所…...

Windows 软件之 FFmpeg

文章目录 前言1 FFmpeg 视频处理1.1 编解码1.2 其它视频编辑命令1.3 视频抽帧 2 FFmpeg 音频处理3 FFmpeg 图片处理3.1 编解码3.2 拼接图片3.3 图片合成视频 附录1&#xff1a;mediainfo.ps1 前言 FFmpeg 是一套可以用来记录、转换数字音频、视频&#xff0c;并能将其转化为流的…...

接口的扩展

1. 接口中新增的方法 JDK7之前接口中只能定义抽象方法。 JDK8的新特性&#xff1a;接口中可以定义有方法体的方法。&#xff08;默认、静态&#xff09; JDK9的新特性&#xff1a;接口中可以定义有私有方法体的方法。 有方法体的方法&#xff1a;接口升级时&#xff0c;为了兼容…...

Vue ECharts 基本数据图表绘制详解:让数据飞起来

1. 引言 1.1 什么是数据可视化 大家好&#xff0c;欢迎来到数据可视化的世界&#xff01;如果你以为数据就是冷冰冰的数字&#xff0c;那你就大错特错了。数据&#xff0c;可是有灵魂的&#xff01;只要给它一副好看的外衣&#xff0c;比如我们今天要聊的图表&#xff0c;它们…...

目录遍历漏洞-CVE-2021-41773

目录 简介 原理 例子 Apache路径穿越漏洞 环境搭建 漏洞原理 漏洞利用 简介 目录遍历漏洞&#xff08;也称为路径遍历漏洞&#xff09;是一种由于Web服务器或Web应用程序对用户输入的文件名称的安全性验证不足而导致的安全漏洞。 原理 目录遍历漏洞允许攻击者在未授权…...

ajax (一)

什么是 AJAX [ˈeɪdʒks] &#xff1f; 概念&#xff1a;AJAX是浏览器与服务器进行 数据通信 的技术&#xff0c;动态数据交互 怎么用AJAX? 1. 先使用 axios [k‘sio ʊ s] 库&#xff0c; 与服务器进行 数据通信 ⚫ 基于 XMLHttpRequest 封装、代码简单、月下载量在 1…...

cocos creator 3.8 物理碰撞器Collider+刚体RigidBody 8

遇到一个朋友&#xff0c;你来就行的朋友&#xff0c;我过去了&#xff0c;管吃管住&#xff0c;这样的朋友真的很难求。 最近离职了&#xff0c;很难想象&#xff0c;一份策划书一天能给你改n次&#xff0c;一周能郁闷&#xff0c;上一个功能没搞完&#xff0c;让你搞下一个功…...

[Python3学习笔记-基础语法] Python3 基础语法

本篇文章详细介绍Python3的基础语法&#xff0c;主要包括编码、标识符、Python保留字、注释、行缩进、多行语句、Number类型、字符串、空行、print打印等。 这些是Python最基础的东西&#xff0c;掌握好了才能更好的学习后续的内容。 有兴趣共同结伴学习Python的朋友&#xff0…...

自制游戏:监狱逃亡

第一个游戏&#xff0c;不喜勿喷&#xff1a; ​ #include<bits/stdc.h> #include<windows.h> using namespace std; int xz; int ruond_1(int n){if(xz1){printf("撬开了&#xff0c;但站在你面前的是俄罗斯内务部特种部队的奥摩大帝&#xff0c;你被九把加…...

Linux的开发工具(三)

条件编译 预处理本质&#xff1a;对代码进行裁剪 像网易云音乐有vip和普通用户&#xff0c;可以通过条件编译来&#xff0c;这样只用写一份代码&#xff0c;也只用维护一份代码&#xff0c;是vip就走vip代码&#xff0c;不是就普通用户代码&#xff0c;条件编译来动态裁剪。 …...

飞书会话消息左右排列

飞书会话消息左右排列 1. 飞书登录后&#xff0c;点击头像&#xff0c;弹出菜单有个按钮设置 2. 3....

【数据结构-表达式解析】力扣227. 基本计算器 II

给你一个字符串表达式 s &#xff0c;请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 你可以假设给定的表达式总是有效的。所有中间结果将在 [-231, 231 - 1] 的范围内。 注意&#xff1a;不允许使用任何将字符串作为数学表达式计算的内置函数&#…...

vue2面试题10|[2024-11-24]

问题1&#xff1a;vue设置代理 如果你的前端应用和后端API服务器没有运行在同一个主机上&#xff0c;你需要在开发环境下将API请求代理到API服务器。这个问题可以通过vue.config.js中的devServer.proxy选项来配置。 1.devServer.proxy可以是一个指向开发环境API服务器的字符串&…...

列表和字典索引的区别

对于 列表&#xff1a; 索引是自动生成的&#xff0c;由 Python 内部管理。你不能直接为列表中的某个元素设置“自定义索引”。 对于 字典&#xff1a; 键是完全由用户定义的。你可以通过 字典【键】 值 的方式主动创建或更新键值对。 lst [a, b, c] lst[0] x # 修改已…...

【源码】Sharding-JDBC源码分析之SQL中分片键路由ShardingSQLRouter的原理

Sharding-JDBC系列 1、Sharding-JDBC分库分表的基本使用 2、Sharding-JDBC分库分表之SpringBoot分片策略 3、Sharding-JDBC分库分表之SpringBoot主从配置 4、SpringBoot集成Sharding-JDBC-5.3.0分库分表 5、SpringBoot集成Sharding-JDBC-5.3.0实现按月动态建表分表 6、【…...

JavaFX 实现 Loading 效果的组件与案例详解

JavaFX 中的 Loading 组件概述 JavaFX 提供了两个用于显示任务进度的核心组件&#xff1a; ProgressIndicator&#xff1a;以圆形动画的形式展示任务进度&#xff0c;适用于未定义进度的任务。ProgressBar&#xff1a;以水平条的形式展示任务进度&#xff0c;适用于可以量化进…...

Elasticsearch:如何部署文本嵌入模型并将其用于语义搜索

你可以按照这些说明在 Elasticsearch 中部署文本嵌入模型&#xff0c;测试模型并将其添加到推理提取管道。它使你能够生成文本的向量表示并对生成的向量执行向量相似性搜索。示例中使用的模型在 HuggingFace上公开可用。 该示例使用来自 MS MARCO Passage Ranking Task 的公共…...

李继刚:提示词(Prompt)的本质是表达的艺术

看了李继刚在 AI 创新者大会的演讲《提示词的道与术》&#xff0c;收获很大&#xff0c;我分享一下学习笔记。  李继刚&#xff1a;提示词&#xff08;Prompt&#xff09;的本质是表达的艺术 一、提示词的本质是表达 本意、文意和解意的概念&#xff1a; 本意&#xff1a;指…...

10 —— Webpack打包模式

开发模式&#xff1a;development &#xff1b;场景&#xff1a;本地开发 生产模式&#xff1a;production &#xff1b; 场景&#xff1a;打包上线 这两种模式如何设置给webpack&#xff1a; 方式1.webpack.config.js 配置文件设置mode选项 module.exports { mode:produc…...

OpenSSH 安装

OpenSSH windows安装 启用可选功能安装 OpenSSH&#xff08;推荐方法&#xff09; 步骤一&#xff1a;打开 “设置” 应用 点击 “开始” 菜单&#xff0c;选择 “设置” 图标&#xff08;看起来像一个齿轮&#xff09;。 步骤二&#xff1a;进入 “应用” 部分 在设置窗口中&…...

国标GB28181设备管理软件EasyGBS国标GB28181视频平台:RTMP和GB28181两种视频上云协议的区别

在当今信息化高速发展的社会中&#xff0c;视频监控技术已经成为各行各业不可或缺的一部分。无论是城市安全、交通管理&#xff0c;还是企业安全、智能家居&#xff0c;视频监控都发挥着至关重要的作用。然而&#xff0c;随着监控点数量的急剧增加&#xff0c;海量视频数据的存…...

Image fusion meets deep learning: A survey and perspective译文

摘要 图像融合是指从不同的源图像中提取和组合最有意义的信息&#xff0c;旨在生成一个更有信息量和有利于后续应用的单图像。深度学习的发展极大地推动了图像融合的发展&#xff0c;而神经网络强大的特征提取和重建能力使融合结果充满希望。最近&#xff0c;几种最新的深度学…...