day3 爆火的Chat GPT
*\ 导读****OpenAI近期发布聊天机器人模型ChatGPT,迅速出圈全网。它以对话方式进行交互。以更贴近人的对话方式与使用者互动,可以回答问题、承认错误、挑战不正确的前提、拒绝不适当的请求。高质量的回答、上瘾式的交互体验,圈内外都纷纷惊呼。
为什么有如此高的评价?理论支撑是什么?背后的技术原理是什么?待解决的问题和方案有哪些?资本怎么看待这件事?本文的目标是将这些问题详细的给大家讲清楚。
\1 ChatGPT是什么?**ChatGPT本质是一个应用在对话场景的语言模型,基于GPT3.5通过人类反馈的强化学习微调而来,能够回答后续问题、承认错误、质疑不正确的前提以及拒绝不适当的请求。首先让我们今天的主角ChatGPT来亲自介绍自己。
\1.1 让ChatGPT介绍自己**ChatGPT是什么?既然ChatGPT是语言模型,语言模型是什么?通过强化学习训练,强化学习又是什么?
\1.2 全球范围的兴起和爆发**OpenAI 11月30号发布,首先在北美、欧洲等已经引发了热烈的讨论。随后在国内开始火起来。全球用户争相晒出自己极具创意的与ChatGPT交流的成果。ChatGPT在 ...
day2 编程语言如何实现?
编程语言如何实现?今天的主题是 AST (抽象语法树),AST 听起来好像是个很新的东西,实际上我们平常用的 SQL执行器、语言编译器、解释器都在大量使用,是词法语法解析的基础,掌握了对于理解编程语言非常有帮助。
我们简单将这个词拆分抽象、语法、树,如果我们能够顺利将这个词拆分,那么我们也就掌握了其核心所在
抽象:抽象的反义词是具象,也就说明抽象的事物关注点不在于细节,而在于整体
语法:语法一组词法的表达式,具备某种指定的规则,具有某种特定的意义,比如 1+1
树:树是一种一对多的结构,通过根节点往下递生,可以存在多个子树,当然这不是我们这篇讨论的主题,但却是重点
我们接下来通过几个例子更加清楚了解一下什么是树
一、什么是树?1)算数表达式5 * 4 / 2 + 3 * 6 这是一个简单的算法运算,但是如果我们要通过树形的方式表达它的话,结果可能是以下这样:
我们通过分析这张树形图,我们可以发现有哪几个结构 ?
一部分是数字:5,4,2,3,6
一部分是操作符:*, /, +, *
我们从中抽取出了 + 符号,并将其作为该树的根节点,这个时候又可以分为左右两个子树,我们从中提 ...
day1 开发者偏爱Linux的9大理由
开发者偏爱Linux的9大理由我们日常使用的大多数设备运行的都是 Linux 或定制版本的 Linux。包括 Android 手机、平板电脑、相机、录像机、可穿戴设备、Chromebook 和其他设备。
有趣的事实:您使用的大多数互联网服务和社交媒体网站都在 Linux 上运行,因为这是最值得信赖的操作系统。
01强大的命令行
命令行有很多功能,它使您能够快速开发并自动执行日常任务。很多开发者喜欢它,正是因为它不需要鼠标或触控板。
除此以外还能使日常任务可以自动化。这可以帮助开发者专注于手头更重要的任务,并节省大量时间。Linux虽然不完美,但保持了终端的纯度。
02Linux 非常安全
因为 Linux 是开源的,由大型开发人员社区开发和维护的,所以捕获和修复安全漏洞的几率更高。此外,Windows 仍然是最受欢迎的操作系统,约占台式机和笔记本电脑市场的76.7%。因此,大多数攻击针对的都是Windows 而不是 Linux。
03对开发人员非常友好
与 Windows 用户相比,Linux 比以往任何时候都更加对用户友好。但正因为Linux 专门为开发人员提供的工具 ...
【2022暑期训练-5】7-3 找零钱
收银员现有 n 张面值分别为 v1,v2,…,vn 的纸币。若找零金额为 m,则一共有多少种找零方法?
注:0<n≤1000,0<v1,v2,…,vn≤10000,0<m≤10000
输入格式123nv1,v2,...,vnm
输出格式12若有解,则输出全部找零方案,每输出一种若无解,则输出“None”
输入样例112363 1 4 3 2 79
输出样例112343 1 3 23 4 24 3 22 7
输入样例212355 3 4 6 72
输出样例21None
解题思路通过分析题目可知,我们可以将手中n个钞票面值的子集做相加,让和等于m。因此改题的解空间树是子集树。
定义 v[ ] 数组存放面值
book [ ] 数组记录,每一个元素的值是0或1,在子集树中代表该节点的两个分支。0 代表该层节点不放入子集中,1代表该节点放入子集中。
子集树的层数为 n+1 层,因为最后一层也需要判断是否进入子集,就会多一层分支。
扩展节点的约束条件是 n_num < m,只要当前选择的面值和小于找零总数 m ,就要深入子集树,寻找下一个节点。
扩展节点的限界条 ...
【2022暑期训练-5】7-4 工作分配问题
设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。
输入格式输入数据的第一行有1 个正整数n (1≤n≤20)。接下来的n行,每行n个数,表示工作费用。
输出格式将计算出的最小总费用输出到屏幕。
输入样例在这里给出一组输入。例如:
1234310 2 32 3 43 4 5
输出样例在这里给出相应的输出。例如:
19
解题思路通过分析问题可知,要使用回溯算法解决该问题,可以看出此问题的解空间树这是一个典型的排列树。
采用递归回溯的方法,同样用book[ ] 进行记录,数组中的下标 i 表示第几个人,book[i]=0表示没有被分配工作;book[i]=1表示已经被分配工作。
t 表示第几份工作,排序树的层数(也就是递归的层数)代表这是第几个工作
其实本题就是确定这三个人的排序,谁做第一个,第二个,第三个工作,核心是全排列算法,确定排序,求时间总和,进而得到最小时间。
代码1234567891011121314151617181920212223242526272829303 ...
【2022暑期训练-5】7-2 半数集
给定一个自然数n,由n 开始可以依次产生半数集set(n)中的数如下(注意半数集是多重集)。
n∈set(n);
在n 的左边加上一个自然数,但该自然数不能超过最近添加的数的一半;
按此规则进行处理,直到不能再添加自然数为止。
例如,set(6)={6,16,26,126,36,136}。半数集set(6)中有6 个元素。
输入格式一个自然数n(0<n<1000)
输出格式半数集set(n)中的元素个数
输入样例16
输出样例16
解题思路采用递归的方法,统计每次递归是符合条件的个数即可
代码1234567891011121314151617#include <stdio.h>#include <stdlib.h>//int s[500];int set(n){ int i,sum = 1; for(i=1;i<=n/2;i++) sum += set(i); return sum;}int main(){ int n; scanf("%d",&n); ...
【2022暑期训练-5】7-1 子集和问题
给定n个不同的正整数集合w=(w1,w2,…,wn)和一个正数W,要求找出w的子集s,使该子集中所有元素的和为W。
输入格式第一行输入n和W,第二行依次输入n个数。
输出格式每行输出一个符合要求的子集。
输入样例124 3111 13 24 7
输出样例1211 13 7 24 7
解题思路定义的a[ ]数组,是用来存放输入的数据
定义的x[ ]数组,每一个元素的值是0或1,用来判断当前节点是在子集树中是向左走还是向右走。
通过题目分析可知,本题中应当使用 子集树 作为解空间,使用tw记录当前整数和,使用rw记录余下的整数的和。
扩展节点的约束条件:tw+a[i] <= c i 表示子集树的层数
如果把当前节点加入到当前的整数和中小于等于目标c,那么表示当前节点需要加进来,用x[i]=1表示加进来了,也表示向左走。加进来之后tw=tw+a[i],rw=rw-a[i]
扩展节点的限界函数:tw+rw-a[i]>=c||tw+a[i]>=c
如果a[i]加不进来,那么x[i]=0,代表向右走。
tw+rw-a[i]>=c 表示不加a[i]当前的tw和那些没有被 ...
【2022暑期训练-5】7-5 3824经典游戏
24点游戏,也叫3824游戏,是一款经典的心算数字游戏。给出区间[1,13]内的四个整数,验证能否用加、减、乘、除四则运算,将这四个整数组合成24。比如:(3,8,2,4) 可以算出 8∗(4−3+2)=24或者(8−4)∗(2∗3)=24,而(1,1,2,2)无法算出24。注意整除必须除尽,即9/2+10+10=24这种计算无效。
输入格式第一行给出正整数N(1≤N≤1000)。接下来N行数据,每行给出四个正整数ai bi ci di, 用空格分开。(∀i∈{1,…,N}:1≤ai,bi,ci,di≤13)
输出格式输出N行数据,第i行对应输入数据(ai,bi,ci,di),如果能算出24,则输出24,如果不能则输出0。
输入样例1234541 1 1 11 2 3 43 9 11 213 3 5 7
输出样例1234024024
(1,1,1,1)和(3,9,11,2)都无法算出24,(1,2,3,4)和(13,3,5,7)可以算出:1∗2∗3∗4=24和(13∗5+7)/3=24。
解题思路此题大意是计算4个数通过各种组合能否计算出结果24,我们通过回溯还是可以遍历每一种加减 ...
区块链
区块链区块链是一种以密码学方式保证的不可篡改和不可伪造的分布式账本。
区块链的几个特性
去中心化。没有第三方中介,一切都由程序来完成。
安全性。主要体现在分布式、51%攻击,即使一个节点被攻击或宕机也不会影响网络的运行。
最核心的就是:去信任。一切社会行为都要建立在”信任“的基础上,这也是区块链解决的最根本的问题。
型的攻击,这些攻击很容易将您的所有数据泄露给黑客。
区块链的发展历程
萌发阶段(2007 年—2009 年): 比特币现出区块链进入视野
“奇客”小众阶段( 2010 年—2012 年):比特币交易所出现,互联网热狂热人参与比特币
市场酝酿阶段( 2013 年—2015 年):德国确认了比特的地位、百度开通比特币支付通道
区块链主流期( 2016 年—2018 年):避险功能的比特币开始复苏市场需求量变大、比特币的致富效 应、芝加哥商品交易所上线比特币期货交易;
产业落地阶段( 2019 年—2021 年):虚拟币和区块链回归理性、加快区块链与市场融合应用。
区块链的核心技术
1.分布式账本:交易记账由多个节点共同完成,而且每一个节点都记录的是完整的账目 ...
day23 Carbon语言
取代 C++,Google 强势开源 Carbon语言每一种编程语言都曾想一统江湖,将其他语言取而代之。但事实上,能够在众多竞争者中脱颖而出并雄霸一方天地并非易事。今天,谷歌重磅公开了其内部建立的最新编程语言——Carbon,剑指 C++,欲成为其实验性继任者。
历朝历代的“继承者们”多年来,谷歌创建了许多编程语言,其中一些已经广为流行并深受大家的喜爱。例如,Golang(简称 Go)是为了改善服务器和分布式系统的开发而创建的,后来被公众采用。同时,Dart 编程语言,最初是作为 JavaScript 的替代品,直到 Flutter 的发布后终于成为主流语言。
日前在多伦多举行的 Cpp North 大会(专门讨论 C++ 的会议)上,谷歌首席软件工程师和开源软件开发者 Chandler Carruth 分享了一种名为 Carbon 的新编程语言的愿景。Carruth 展示了当今许多最流行的编程语言是如何拥有继承者的,这些继承者们利用了现代语言设计的优势,使开发者能够迅速提高生产力。
正如我们熟知的,C++ 是 C 语言的继承者,Kotlin 是 Java 的继承者,Swift 是 O ...