分类
编程

智力大爆炸

OpenAI创始人兼CEO Sam Altman说,新版本的摩尔定律即将开始:宇宙中的智力总量将每18个月翻一番!

马斯克说:人工智能比原子弹厉害!

分类
编程

大炼钢铁

就跟邓亚萍领导的搜索引擎一样。

分类
动态

不是算法问题,是数据量的问题

微软的这个雪球,会越滚越大,别人很难追赶。

机器人是要靠数据训练的,就跟中学生刷题一样。

可以这样理解,微软有题海,而其他公司没有。

我一个铁一中毕业的学生目前就干这个,他的观点,跟上文基本一致,不是技术问题,核心算法都是公开的,是管理层的问题,敢不敢花钱。

文本审核也不是问题,微软也要标记有害信息。

“做题量”,喂给机器人的数据量,这是关键。

分类
编程

海滩上有一堆桃子,五只猴子来分

海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

最后剩下4堆,每堆有255个,程序中,第7行,要到4×255,才能从双循环跳出。

这个题,看似倒推法,但若让小升初学生纸笔计算,根本不可能,计算量太大。初中生,可以解方程。

程序思路:第6行,按照4的倍数枚举,这是沙滩上最后剩下的桃子数。第8行,一个数,不能被4整除,就不可能是上次拿完剩下的总数,就不考虑了,就break。就从for循环跳出,进入到while循环,实验下一个4个倍数。如果一个数,能让for循环进行到5,则5个猴子轮完。x/4相当于给j减了一个1

12行break后,到17行,然后到5行。

第5行,0<5,true,第7行,x=4,第9行,i=0,
第11行,false,第14行,i=1,第15行x=6
第5行,1<5

程序运行结果:

while i= 0
inside while x= 4
for i= 0
inside for x= 6.0
for i= 1
while i= 1
inside while x= 8

第5行再进while循环后,第9行for,i要从0重新开始

下面这个算法不对:最后沙滩上剩下4个,这是最少情况。

设最后每分1个,多1,那么是6
那么第4次是6×5+1=31
第3次是31×5+1=156
第2次156×5+1=781
第1次781×5+1=3906

最后一个猴子如果面对6个,这6个,是上次5份中的4份,上次应该是:6÷4×5+1,这不是整数,就不行。

这对应着程序的第11行,能被4整除,才能走到第15行,
往上倒推一步。

最后沙滩上剩下4的倍数,如果是4×1,就推不回去,那就再实验4×2

以下方程手书,由数学灵活就业部落成员提供:

if __name__ == '__main__':
    i = 0
    j = 1
    x = 0
    while (i < 5) :
        print("while i=",i)
        x = 4 * j
        print("j=",j)
        print("inside while x=" ,x)
        for i in range(0,5) :
            print("for i=",i)
            if(x%4 != 0) :
                break
            else :
                i += 1
            x = (x/4) * 5 +1
            print("inside for x=" ,x)
        j += 1
    print (x)
分类
编程

打印一个数的全部约数

n=1000
factors = [] 
for i in range(1,n+1): 
    if n%i == 0: 
        factors.append(i) 
print (factors)
分类
编程

找出最大年龄

必须承认,Python的数据结构,更好懂。

if __name__ == '__main__':
    person = {"li":18,"wang":50,"zhang":20,"sun":22}
    m = 'li'
    for key in person.keys():
        if person[m] < person[key]:
            m = key
 
    print ('%s先生年龄最大,是%d岁'%(m,person[m]))
分类
编程

输出列表

if __name__ == '__main__':
    s = ["man","woman","girl","boy","sister"]
    for i in range(len(s)):
        print (s[i])

感觉,Python的数组好用。

分类
编程

编程看最后剩下的人

有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

if __name__ == '__main__':
    nmax = 50
    n = int(input('请输入总人数:'))
    num = []
    for i in range(n):
        num.append(i + 1)
    print(num[2])
 
    i = 0
    k = 0
    m = 0 #删掉的个数,最后要删掉只剩下一个人
 
    while m < n - 1:
        if num[i] != 0 :
            print(num[3])
            print(k)
            k += 1
        if k == 3:
            num[i] = 0 #出圈
            print("i=",i)
            print(num)
            k = 0
            m += 1
            print("m=",m)
        i += 1
        if i == n : i = 0
 
    i = 0
    while num[i] == 0: i += 1
    print (num[i])

程序分析:

【金山文档】 程序分析 报数 逢三出圈
https://kdocs.cn/l/cljwkej3CAXP

分类
编程

打印杨辉三角形

if __name__ == '__main__':
    a = []
    for i in range(10):
        a.append([])
        for j in range(10):
            a[i].append(0)
    for i in range(10):
        a[i][0] = 1
        a[i][i] = 1
    for i in range(2,10):
        for j in range(1,i):
            a[i][j] = a[i - 1][j-1] + a[i - 1][j]
    from sys import stdout
    for i in range(10):
        for j in range(i + 1):
            stdout.write(str(a[i][j]))
            stdout.write(' ')
        print()
分类
编程

Python玩矩阵太方便了

就跟数学老师在黑板上写矩阵一样!

X = [[12,7,3],
    [4 ,5,6],
    [7 ,8,9]]
 
Y = [[5,8,1],
    [6,7,3],
    [4,5,9]]
 
result = [[0,0,0],
         [0,0,0],
         [0,0,0]]
 
# 迭代输出行
for i in range(len(X)):
   # 迭代输出列
   for j in range(len(X[0])):
       result[i][j] = X[i][j] + Y[i][j]
 
for r in result:
   print(r)

[17, 15, 4]
[10, 12, 9]
[11, 13, 18]

Fantastic!