发布于: iPhone转发:65回复:149喜欢:3
近日,清华姚班毕业生、麻省理工博士胡渊鸣开发新特效编程语言,99 行代码实现《冰雪奇缘》的事火了。不少网友对此纷纷表示,人和人之间的差距有时真的很大。那么,在生活中大家是否也有类似的经历呢? @蛋卷基金 @雪球问问 $上证指数(SH000001)$ $创业板指(SZ399006)$

精彩讨论

纹枰默卒2020-01-10 11:52

中国人就喜欢瞎吹嘘,我来普及一下常识
1、计算机语言从低级语言到高级语言,为什么会有这种区分?因为一句高级语言可以嵌套无数句低级语言,你可以理解成无数句低级语言,为了实现一个功能,我把他集合一下弄成一个函数,我们就把这个函数称作高级语言,这就是高级语言的由来
2、艾莎公主的冰雪魔法,想要在计算机里模拟这种效果,具体怎么写取决于用什么语言,越是高级的语言,他本身嵌套的函数就越多,这样写出来的代码就越短
3、要我说,胡博士99行代码也太多了,其实这种程序,2行足够了
sub冰雪魔法(参数)
call冰雪魔法(参数)

松筠之节2020-01-10 10:13

牛人太多,各行各业、各个领域许多神仙操作,真让我觉得我就是来人间凑个数。平平庸庸、碌碌无为,没有特长为更没有过人之处。

玉韫山辉2020-01-10 12:36

这才是大师,一出手就是绝唱

东风风神大过客2020-01-14 20:16

我高中毕业,我弟弟复旦大学博士

全部讨论

2020-01-10 13:44

村里当年和我一级的小伙伴,普遍孩子都已经开始上幼儿园了,我还没有女朋友

2020-01-10 12:52

俺也是

2020-01-10 12:38

我有两个表姐,亲姐妹,大表姐九几年考入北京的一所大学,现在是大学老师;二表姐没考上随后嫁人,在家务农。前两年大表姐的女儿考入耶鲁,全奖学金,二表姐的女儿早恋没考上好大学,早早结婚,依然务农。
这就是差距

2020-01-10 12:37

普通人和天才的智商差距大概40-50,基本相当于人和黑猩猩的差别。

2020-01-10 11:55

工作十二年累死累活工作收入赚了100多万,发现自己一个铁杆粉丝,一年工资就赚那么多

2020-01-10 11:55

import taichi as ti
quality = 1 # Use a larger value for higher-res simulations
n_particles, n_grid = 9000 * quality ** 2, 128 * quality
dx, inv_dx = 1 / n_grid, float(n_grid)
dt = 1e-4 / quality
p_vol, p_rho = (dx * 0.5)**2, 1
p_mass = p_vol * p_rho
E, nu = 0.1e4, 0.2 # Young's modulus and Poisson's ratio
mu_0, lambda_0 = E / (2 * (1 + nu)), E * nu / ((1+nu) * (1 - 2 * nu)) # Lame parameters
x = ti.Vector(2, dt=ti.f32, shape=n_particles) # position
v = ti.Vector(2, dt=ti.f32, shape=n_particles) # velocity
C = ti.Matrix(2, 2, dt=ti.f32, shape=n_particles) # affine velocity field
F = ti.Matrix(2, 2, dt=ti.f32, shape=n_particles) # deformation gradient
material = ti.var(dt=ti.i32, shape=n_particles) # material id
Jp = ti.var(dt=ti.f32, shape=n_particles) # plastic deformation
grid_v = ti.Vector(2, dt=ti.f32, shape=(n_grid, n_grid)) # grid node momemtum/velocity
grid_m = ti.var(dt=ti.f32, shape=(n_grid, n_grid)) # grid node mass
ti.cfg.arch = ti.cuda # Try to run on GPU
@ti.kernel
def substep():
for i, j in ti.ndrange(n_grid, n_grid):
grid_v[i, j] = [0, 0]
grid_m[i, j] = 0
for p in range(n_particles): # Particle state update and scatter to grid (P2G)
base = (x[p] * inv_dx - 0.5).cast(int)
fx = x[p] * inv_dx - base.cast(float)
# Quadratic kernels [网页链接 Eqn. 123, with x=fx, fx-1,fx-2]
w = [0.5 * ti.sqr(1.5 - fx), 0.75 - ti.sqr(fx - 1), 0.5 * ti.sqr(fx - 0.5)]
F[p] = (ti.Matrix.identity(ti.f32, 2) + dt * C[p]) @ F[p] # deformation gradient update
h = ti.exp(10 * (1.0 - Jp[p])) # Hardening coefficient: snow gets harder when compressed
if material[p] == 1: # jelly, make it softer
h = 0.3
mu, la = mu_0 * h, lambda_0 * h
if material[p] == 0: # liquid
mu = 0.0
U, sig, V = ti.svd(F[p])
J = 1.0
for d in ti.static(range(2)):
new_sig = sig[d, d]
if material[p] == 2: # Snow
new_sig = min(max(sig[d, d], 1 - 2.5e-2), 1 + 4.5e-3) # Plasticity
Jp[p] *= sig[d, d] / new_sig
sig[d, d] = new_sig
J *= new_sig
if material[p] == 0: # Reset deformation gradient to avoid numerical instability
F[p] = ti.Matrix.identity(ti.f32, 2) * ti.sqrt(J)
elif material[p] == 2:
F[p] = U @ sig @ V.T() # Reconstruct elastic deformation gradient after plasticity
stress = 2 * mu * (F[p] - U @ V.T()) @ F[p].T() + ti.Matrix.identity(ti.f32, 2) * la * J * (J - 1)
stress = (-dt * p_vol * 4 * inv_dx * inv_dx) * stress
affine = stress + p_mass * C[p]
for i, j in ti.static(ti.ndrange(3, 3)): # Loop over 3x3 grid node neighborhood
offset = ti.Vector([i, j])
dpos = (offset.cast(float) - fx) * dx
weight = w[i][0] * w[j][1]
grid_v[base + offset] += weight * (p_mass * v[p] + affine @ dpos)
grid_m[base + offset] += weight * p_mass
for i, j in ti.ndrange(n_grid, n_grid):
if grid_m[i, j] > 0: # No need for epsilon here
grid_v[i, j] = (1 / grid_m[i, j]) * grid_v[i, j] # Momentum to velocity
grid_v[i, j][1] -= dt * 50 # gravity
if i < 3 and grid_v[i, j][0] < 0: grid_v[i, j][0] = 0 # Boundary conditions
if i > n_grid - 3 and grid_v[i, j][0] > 0: grid_v[i, j][0] = 0
if j < 3 and grid_v[i, j][1] < 0: grid_v[i, j][1] = 0
if j > n_grid - 3 and grid_v[i, j][1] > 0: grid_v[i, j][1] = 0
for p in range(n_particles): # grid to particle (G2P)
base = (x[p] * inv_dx - 0.5).cast(int)
fx = x[p] * inv_dx - base.cast(float)
w = [0.5 * ti.sqr(1.5 - fx), 0.75 - ti.sqr(fx - 1.0), 0.5 * ti.sqr(fx - 0.5)]
new_v = ti.Vector.zero(ti.f32, 2)
new_C = ti.Matrix.zero(ti.f32, 2, 2)
for i, j in ti.static(ti.ndrange(3, 3)): # loop over 3x3 grid node neighborhood
dpos = ti.Vector([i, j]).cast(float) - fx
g_v = grid_v[base + ti.Vector([i, j])]
weight = w[i][0] * w[j][1]
new_v += weight * g_v
new_C += 4 * inv_dx * weight * ti.outer_product(g_v, dpos)
v[p], C[p] = new_v, new_C
x[p] += dt * v[p] # advection
import random
group_size = n_particles // 3
for i in range(n_particles):
x[i] = [random.random() * 0.2 + 0.3 + 0.10 * (i // group_size), random.random() * 0.2 + 0.05 + 0.32 * (i // group_size)]
material[i] = i // group_size # 0: fluid 1: jelly 2: snow
v[i] = [0, 0]
F[i] = [[1, 0], [0, 1]]
Jp[i] = 1
import numpy as np
gui = ti.GUI("Taichi MLS-MPM-99", res=512, background_color=0x112F41)
for frame in range(20000):
for s in range(int(2e-3 // dt)):
substep()
colors = np.array([0x068587, 0xED553B, 0xEEEEF0], dtype=np.uint32)
gui.circles(x.to_numpy(), radius=1.5, color=colors[material.to_numpy()])
gui.show() # Change to gui.show(f'{frame:06d}.png') to write images to disk

2020-01-10 11:48

之前有次去矿山做个系统,人家自己的一个小领导自己就编了好几个小工具在用

2020-01-10 11:33

永远忘不了被别人家孩子支配的恐惧

2020-01-10 11:28

有些差距能补救,有些只能等下辈子了比如身高

2020-01-10 11:21

做好自己的平凡就好