“本文正在参加 人工智能创作者扶持计划 ”
前言: 为什么说专业写代码工具? 首先看官网的标题:
Build Software.Fast // 构建软件快
Write, edit, and chat about your code with a powerful AI
// 使用强大的 AI 编写、编辑和聊天您的代码
下面我们来尝试一下应用
一、写算法应用
输入:请用ts写一个鸡兔同笼的解法
输出:
哦豁 还有注释解释。是不是很方便? 下面我们继续来测一下其他的几个
输入:请用ts写一个广度优先遍历的解法
输出:
// 广度优先遍历函数
function bfs(root: Node) {
const queue = [root]; // 初始化队列,将根节点入队
while (queue.length) { // 只要队列不为空,就继续循环
const node = queue.shift()!; // 取出队头节点
console.log(node.value); // 输出节点值
queue.push(...node.children); // 将子节点入队
}
}
// 测试
const root = new Node(1);
const node2 = new Node(2);
const node3 = new Node(3);
const node4 = new Node(4);
const node5 = new Node(5);
const node6 = new Node(6);
root.children = [node2, node3];
node2.children = [node4, node5];
node3.children = [node6];
bfs(root); // 输出 1 2 3 4 5 6
输入:请用ts写一个八皇后问题的解法
输出:
// 定义八皇后问题的解法函数
function solveNQueens(n: number): string[][] {
const res: string[][] = []; // 用于存储所有解法
const board: string[][] = Array.from({ length: n }, () => Array.from({ length: n }, () => '.')); // 初始化棋盘
const cols: boolean[] = new Array(n).fill(false); // 列是否被占用
const diag1: boolean[] = new Array(2 * n - 1).fill(false); // 正对角线是否被占用
const diag2: boolean[] = new Array(2 * n - 1).fill(false); // 反对角线是否被占用
// 回溯函数
function backtrack(row: number) {
if (row === n) { // 找到一个解法
res.push(board.map(row => row.join('')));
return;
}
for (let col = 0; col < n; col++) { // 枚举列
const id1 = col - row + n - 1; // 计算正对角线编号
const id2 = col + row; // 计算反对角线编号
if (!cols[col] && !diag1[id1] && !diag2[id2]) { // 如果该位置可以放置皇后
board[row][col] = 'Q'; // 放置皇后
cols[col] = true; // 标记列为占用
diag1[id1] = true; // 标记正对角线为占用
diag2[id2] = true; // 标记反对角线为占用
backtrack(row + 1); // 继续搜索下一行
board[row][col] = '.'; // 恢复现场
cols[col] = false; // 标记列为未占用
diag1[id1] = false; // 标记正对角线为未占用
diag2[id2] = false; // 标记反对角线为未占用
}
讲真 这种回溯算法、就是百度查都得查好久、下面我们测一下写代码
二、生成业务代码
输入:请用react hooks antd写一个表单模版
输出:
简直绝了
输入: 请用react写一个判断版本号函数的hooks
// Helper function to compare two version numbers
function compareVersions(version1, version2) {
const v1 = version1.split('.');
const v2 = version2.split('.');
for (let i = 0; i < v1.length || i < v2.length; i++) {
const num1 = parseInt(v1[i] || 0);
const num2 = parseInt(v2[i] || 0);
if (num1 > num2) {
return 1;
} else if (num1 < num2) {
return -1;
}
}
return 0;
}
我记得第一次写方法被人教育 就是这个判断版本号的方法
总结:我感觉ai未来好长一段时间暂时还是离不开开发人员的、但是能成为开发更高效的工具
see you