AI编程助手体验

一、背景

最近在接触各种AI插件,用copilot的话要10美元每月,太贵,就下载了清华的CodeGeeX

刚好,有个需求,需要将枚举的所有值,随机组合求和,并返回所有组合之和。

”假设你有一个名为 enum_values 的枚举,包含值为 1、2、3 和 4,用java代码来计算两个、三个或者四个选项的随机组合的和。“

二、CodeGeeX

首先用CodeGeeX提问,

我:枚举value有1,2,3,4多种选项,求出各种选项的排列组合之合

CodeGeeX: 假设你有一个名为 enum_values 的枚举,包含值为 1、2、3 和 4,你可以使用 Python 中的 itertools 模块来计算所有可能的排列和组合。

以下是计算所有可能的排列的示例代码:

from itertools import permutationsenum_values = [1, 2, 3, 4]# 计算全排列  
permutations(enum_values)  

你可以使用 list() 函数将生成器转换为列表,以查看所有可能的组合:

list(combinations(enum_values, 2))  
list(combinations(enum_values, 3))  
list(combinations(enum_values, 4))  
输出结果:
[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]  
[(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]  
[(1, 2, 3, 4)]  

结果和我需要的一致,但是不是java代码,所以我继续问她

我:枚举value有1,2,3,4多种选项,求出两个到四个选项随机组合的和有哪些,用java代码实现

CodeGeeX: 以下是 Java 代码实现,用于枚举 value 有 1,2,3,4 多种选项,求出两个到四个选项随机组合的和有哪些:

import java.util.ArrayList;  
import java.util.List;  
import java.util.Random;public class Main {  public static void main(String[] args) {  int numOptions = 4;  int minCombinations = 2;  int maxCombinations = 4;  // Create a list of all possible combinations  List<List<Integer>> combinations = new ArrayList<>();  for (int i = minCombinations; i <= maxCombinations; i++) {  combinations.add(new ArrayList<>());  for (int j = 0; j < numOptions; j++) {  combinations.get(i).add(j + 1);  }  }  // Print the sum of each combination  for (List<Integer> combination : combinations) {  int sum = 0;  for (Integer value : combination) {  sum += value;  }  System.out.println("Combination " + combination + " has sum " + sum);  }  // Shuffle the combinations and print them again  Random rand = new Random();  List<List<Integer>> shuffledCombinations = new ArrayList<>();  for (List<Integer> combination : combinations) {  shuffledCombinations.add(new ArrayList<>());  for (Integer value : combination) {  int index = rand.nextInt(combination.size());  shuffledCombinations.get(combination.size() - index).add(value);  }  }  for (List<Integer> combination : shuffledCombinations) {  int sum = 0;  for (Integer value : combination) {  sum += value;  }  System.out.println("Shuffled Combination " + combination + " has sum " + sum);  }  }  
}

跟我预料的不太一样,还报错,所以放弃了

二、Copilot

package com.fuchuang.mcenter.controller.web;import java.util.Arrays;
import java.util.Random;public class RandomCombinationSum {public static void main(String[] args) {int[] enum_values = {1, 2, 3, 4};for (int i = 2; i < enum_values.length; i++) {int[] combination = getRandomCombination(enum_values, i);int sum = calculateSum(combination);System.out.println(i+"random values: " + Arrays.toString(combination));System.out.println("Sum: " + sum);}}public static int[] getRandomCombination(int[] values, int count) {Random random = new Random();int[] combination = new int[count];for (int i = 0; i < count; i++) {combination[i] = values[random.nextInt(values.length)];}return combination;}public static int calculateSum(int[] values) {int sum = 0;for (int value : values) {sum += value;}return sum;}
}

试了下,返回的结果也跟我期望的不太一致,他真的是在随机找一个数字想加

三、chatGpt

由于第一次推荐的Python的方法是key实现的,所以想将Python方法翻译成java代码.

用chatGpt提问:itertools的combinations方法,转成java代码

先将python代码发给chatgpt
mport itertoolsenum_values = [1, 2, 3, 4]
print(list(itertools.combinations(enum_values, 3)))

再问:将上面代码转成java代码

import java.util.ArrayList;
import java.util.List;public class Main {public static void main(String[] args) {List<Integer> enumValues = new ArrayList<>();enumValues.add(1);enumValues.add(2);enumValues.add(3);enumValues.add(4);List<List<Integer>> combinations = new ArrayList<>();int n = enumValues.size();int k = 3;if (k <= n) {generateCombinations(enumValues, combinations, new ArrayList<>(), k, 0);}for (List<Integer> combination : combinations) {System.out.println(combination);}}private static void generateCombinations(List<Integer> enumValues, List<List<Integer>> combinations,List<Integer> currentCombination, int k, int startIndex) {if (currentCombination.size() == k) {combinations.add(new ArrayList<>(currentCombination));return;}for (int i = startIndex; i < enumValues.size(); i++) {currentCombination.add(enumValues.get(i));generateCombinations(enumValues, combinations, currentCombination, k, i + 1);currentCombination.remove(currentCombination.size() - 1);}}
}

自己再优化一下:

package com.fuchuang.mcenter.controller.web.vo;import io.swagger.models.auth.In;import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;public class Test {public static void main(String[] args) {List<Integer> enumValues = new ArrayList<>();enumValues.add(1);enumValues.add(2);enumValues.add(3);enumValues.add(4);List<List<Integer>> combinations = new ArrayList<>();for (int i = 2; i <= enumValues.size(); i++) {generateCombinations(enumValues, combinations, new ArrayList<>(), i, 0);}for (List<Integer> combination : combinations) {System.out.println(combination + ",和:" + combination.stream().mapToInt(i -> i.intValue()).sum());}}private static void generateCombinations(List<Integer> enumValues, List<List<Integer>> combinations,List<Integer> currentCombination, int k, int startIndex) {if (currentCombination.size() == k) {combinations.add(new ArrayList<>(currentCombination));return;}for (int i = startIndex; i < enumValues.size(); i++) {currentCombination.add(enumValues.get(i));generateCombinations(enumValues, combinations, currentCombination, k, i + 1);currentCombination.remove(currentCombination.size() - 1);}}}

执行结果:

[1, 2],和:3
[1, 3],和:4
[1, 4],和:5
[2, 3],和:5
[2, 4],和:6
[3, 4],和:7
[1, 2, 3],和:6
[1, 2, 4],和:7
[1, 3, 4],和:8
[2, 3, 4],和:9
[1, 2, 3, 4],和:10

perfect,虽然是个简单的小需求,但是要自己写的这么简洁,还是很考验算法能力的,AI让你能快速解决复杂的东西。期待后面的应用

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

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

相关文章

实际上手体验maven面对冲突Jar包的加载规则 | 京东云技术团队

一、问题背景 相信大家在日常的开发过程中都遇到过Jar包冲突的问题&#xff0c;emm&#xff0c;在最近处理业务需求时我也遇到了不同版本jar包冲突导致项目加载出错的问题。主要是一个完整的项目会不可避免的使用第三方的Jar包来实现功能开发&#xff0c;各种第三方包之间可能…

大数据篇Kafka消息队列指定Topic打印Key、Value、Offset和Partition

1、概念简介 说到Apache Kafka消息传递系统时&#xff0c;以下是一些关键概念的解释&#xff1a; Key&#xff08;键&#xff09;&#xff1a;Kafka消息由Key和Value组成。Key是一个可选的字段&#xff0c;它通常用于消息的路由和分区策略。Key的目的是确保具有相同Key的消息…

Python 3 拷贝、浅拷贝、直接引用

诸神缄默不语-个人CSDN博文目录 复杂的以后再补。 总的来说&#xff0c;像常数、字符串这种比较简单的变量无所谓&#xff0c;但是对于一些复杂对象&#xff08;比如list等&#xff09;&#xff0c;如果直接使ba&#xff0c;相当于直接把a的路径给了b&#xff0c;b这个对象的…

day35-Postman/ajax

0目录 1.postman 2.ajax 1.Postman 1.1 定义&#xff1a;postman用于测试http协议接口&#xff0c;无论是开发还是测试人员 1.2 Servlet中的doGet&#xff08;&#xff09;/doPost…

建造者模式-复杂对象的组装与创建

生产一辆车&#xff0c;主要有以下步骤&#xff1a;安装骨架、安装发动机及安装轮胎。这些步骤有指定的执行顺序&#xff0c;步骤缺一不可。 图 传统方案 传统方案存在的问题&#xff1a; 传参不便&#xff0c;虽可在构造函数那传参&#xff0c;但是传参时需要注意参数顺序等…

出租屋智能电表系统

随着科技的不断发展&#xff0c;智能化逐渐成为人们生活中不可或缺的一部分。在房屋租赁市场中&#xff0c;智能电表系统成为越来越多出租屋的标配&#xff0c;为房东和租户带来了便捷和安全。本文将从以下几个方面介绍出租屋智能电表系统的特点和优势。 一、出租屋智能电表系统…

LCD-STM32液晶显示中英文-(7.字模及显示原理)

目录 字模介绍 什么是字模 字模的构成 字模显示原理 字模制作 如何制作字模 字模寻址公式 存储字模文件 字模介绍 什么是字模 有了编码&#xff0c;我们就能在计算机中处理、存储字符了&#xff0c;但是如果计算机处理完字符后直接以编码的形式输出&#xff0c;人类将难…

Flutter:网络图像缓存插件——cached_network_image

前言 为什么要使用这个插件&#xff0c;有什么用呢&#xff1f;毕竟官方提供了Image.network来进行网络图片加载 Image.network和CachedNetworkImage都可以用于在Flutter中加载网络图片&#xff0c;但它们之间有一些区别。 Image.network是Flutter核心库提供的一个构造函数&…

体外诊断相关介绍-博迈伦IVD原料供应商

摘要&#xff1a;体外诊断是在人体之外进行检测而获取临床诊断信息的一种诊断方法&#xff0c;它是现代医学广泛使用的诊断方法。体外诊断的范畴很广&#xff0c;按照检测原理或检测方法&#xff0c;体外诊断可以分为生化诊断、免疫诊断、分子诊断、微生物诊断、血液体液诊断五…

Java性能优化-测试try-catch放在循环内和外的性能对比与业务区别

场景 Java中使用JMH(Java Microbenchmark Harness 微基准测试框架)进行性能测试和优化&#xff1a; Java中使用JMH(Java Microbenchmark Harness 微基准测试框架)进行性能测试和优化_霸道流氓气质的博客-CSDN博客 使用如上方式测试Java中try-catch放在循环内和循环外是否有性…

Unity游戏源码分享-Unity手游射击横版游戏

Unity游戏源码分享-Unity手游射击横版游戏 战斗场景 项目地址&#xff1a; https://download.csdn.net/download/Highning0007/88050256

实训笔记7.18

实训笔记7.18 7.18一、座右铭二、Hadoop大数据技术 大数据软件一般都要求7*24小时不宕机三、Hadoop的组成3.1 HDFS3.2 MapReduce3.3 YARN3.4 Hadoop Common 四、Hadoop生态圈五、Hadoop的安装问题5.1 Hadoop的本地安装模式-基本不用5.2 Hadoop的伪分布安装模式5.3 Hadoop的完全…

MySQL(十):MySQL语法-进阶

MySQL语法-进阶 数据类型Text 类型Number 类型Date 类型 ASALTER TABLEconcat、group_concatSQL注入阻止SQL注入方案一方案二方案三 HAVING 子句临时表正则表达式获取服务器元数据事务导出数据导出数据导出表作为原始数导出SQL格式的数据 导入数据解决无法导入问题使用 LOAD DA…

解密:GPT-4框架与训练过程,数据集组成,并行性的策略,专家权衡,推理权衡等细节内容

大家好&#xff0c;我是微学AI&#xff0c;今天给大家解密一下GPT-4框架与训练过程&#xff0c;数据集组成&#xff0c;并行性的策略&#xff0c;专家权衡&#xff0c;推理权衡等细节内容。2023年3月14日&#xff0c;OpenAI发布GPT-4&#xff0c;然而GPT-4的框架没有公开&#…

深入了解Unity的Screen类:一份详细的技术指南(四)

前言 在游戏开发中&#xff0c;处理屏幕分辨率、设备方向和全屏状态等相关问题是至关重要的。这些因素会直接影响到游戏的玩家体验&#xff0c;包括游戏的视觉效果和交互感受。例如&#xff0c;我们可能需要在不同的屏幕分辨率下优化游戏的用户界面&#xff0c;或者我们可能想…

GAMES101笔记 Lecture11 Geometry 2(Curces and Surfaces)

目录 Explicit Representations in Computer Graphics(计算机图形学中的显式几何表示)Point Cloud(点云)Polygon Mesh(多边形网格)The Wavefront Object File(.obj) Format(OBJ格式文件) Curves(曲线)Bezier Curves(贝塞尔曲线)Defining Cubic Bezier Curve With Tangents(定义…

【java】对ArrayList中的元素进行排序的几种方式

对ArrayList中的元素进行排序的几种方式 一、使用Collections工具类 1、对基本类型排序 通过Collections.sort()对基本类型排序默认是以升序排序 // 1.Collections.sort()默认按照升序排序 List<Integer> integerList new ArrayList<>(); Collections.addAll(…

访问学者面试申请如何应对?

作为一个学者面试申请者&#xff0c;面对这一重要机会&#xff0c;我们需要认真准备并采取适当的应对策略。下面知识人网小编将提供一些建议&#xff0c;帮助你在面试中取得良好的表现。 首先&#xff0c;在准备阶段&#xff0c;你应该研究并了解申请机构的背景和研究方向。了解…

CentOS7中安装docker并配置阿里云加速器

文章目录 一、docker的安装二、docker的卸载三、配置加速器四、docker-compose安装五、docker-compose卸载六、docker-compose相关命令七、常用shell组合 一、docker的安装 参考&#xff1a;https://docs.docker.com/engine/install/centos 本文内容是基于&#xff1a;CentOS L…

去掉待机界面搜索框和主界面搜索框!!去掉主菜单白色图标

第一个搜索框修改&#xff1a; vendor/mediatek/proprietary/packages/apps/Launcher3/src/com/android/launcher3/config$ FeatureFlags.java 找到这行&#xff1a; public static final boolean QSB_ON_FIRST_SCREEN BuildConfig.QSB_ON_FIRST_SCREEN; 可以修改为&#…