【程序媛晒83行代码】人生如码,用代码构造极其简单人生模型的清宵小姐姐...

2024-02-08 14:30

本文主要是介绍【程序媛晒83行代码】人生如码,用代码构造极其简单人生模型的清宵小姐姐...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在中国程序媛中,他们的代码有什么样的魅力,Aone联合云栖社区、饿了么、钉钉、阿里云、天猫、口碑发起首届程序媛比码活动——不秀大长腿,秀高智商;不秀美图照,秀代码图,参与晒码互动游戏赢“83行代码”T恤!

我们来说说这群女工程师的第83行代码及代码背后的故事:

清宵:人生如码

我是阿里云函数计算团队技术专家清宵,用动图撩一下大家吧~~大家好!
7ddfd0c7b3f0cbf20d556d0bb11d830be77a55aa
我的第83行代码来自这个简单的Life模型,非项目非社区贡献,纯业余时间自娱自乐。
看了《药神》之后,对人生的感悟加深。回来没有写什么观后感,却是随便写了一段代码,构造一个极其简单的人生模型,算作总结思考了。
人生如码,以梦为马。珍惜所爱,精彩过好每一天!

package mainimport ("fmt""math/rand""sync""time"
)var (r = rand.New(rand.NewSource(time.Now().Unix()))disasterSignal = make(chan string)accidentSignal = make(chan string)diseaseSignal  = make(chan string)
)// Element : abstract factor which life consisted by
type Element interface {Improve()Depress()Stable()Enable() boolBeAbleHandle(event string) bool
}type Activity interface {IsSuitable(life *Life) boolDo(life *Life)Interrupted()
}type Life struct {Sex stringAge time.DurationHealth       ElementKnowledge    ElementAbility      ElementRelationShip ElementWealth       ElementOtherElement ElementWork        ActivityStudy       ActivityExercise    ActivityEntertain   ActivityRest        ActivityOtherActive ActivityisDoings []ActivityvitalitySignal chan struct{}NaturalDeath   chan struct{}
}func (f *Life) Join(oppositeSex *Life, love, family Element) (*Life, error) {if !love.Enable() || !family.Enable() || f.Sex == oppositeSex.Sex {return nil, fmt.Errorf("Sorry, no boby should be borned!")}boby := &Life{Sex:            []string{"male", "female"}[r.Intn(2)],Age:            0,isDoings:       []Activity{},NaturalDeath:   make(chan struct{}),vitalitySignal: make(chan struct{}),}return boby, nil
}func (f *Life) Run() {go ExternalEndanger(f)// time elapses day by dayfor {startTime := time.Now().UTC()wg := &sync.WaitGroup{}for _, active := range []Activity{f.Study, f.Work, f.Entertain, f.Exercise, f.Rest, f.OtherActive} {if f.SuitableFor(active) {wg.Add(1)go func(activity Activity) {defer wg.Wait()activity.Do(f)}(active)}}select {case <-f.NaturalDeath:f.Close()fmt.Println("Life is short, make it colourful and cherish the love around all!")returncase <-f.vitalitySignal:fmt.Println("记得买保险!")returncase <-time.After(24*time.Hour - time.Now().UTC().Sub(startTime)):fmt.Println("One day went by...")}//wg.Wait()f.Age += 24 * time.Hour}fmt.Println("Goodbye, life!")
}func (f *Life) Somehow() {// happened something to effect one to reach some life stage
}func (f *Life) SuitableFor(active Activity) bool {return active.IsSuitable(f)
}func (f *Life) Survive(event string) bool {for _, e := range []Element{f.Health, f.Knowledge, f.Ability, f.RelationShip, f.Wealth, f.OtherElement} {if !e.BeAbleHandle(event) {return false}}return true
}func (f *Life) Close() {for _, doing := range f.isDoings {doing.Interrupted()}close(f.vitalitySignal)
}var female = LifeFromSomeWhere("female")
var male = LifeFromSomeWhere("male")func ExternalEndanger(f *Life) {for {event := ""select {case event = <-diseaseSignal:case event = <-disasterSignal:case event = <-accidentSignal:}if !f.Survive(event) {f.Close()return}}
}func LifeFromSomeWhere(sex string) *Life {life := &Life{Sex: sex}life.Somehow()return life
}func main() {// I don't know the question of "鸡生蛋 or 蛋生鸡"...newLife, err := female.Join(male, ElementImp{Type: "love"}, ElementImp{Type: "family"})if err != nil {newLife.Run()}
}

与清宵小姐姐互动,为她打call——>点击进入清宵晒码

这篇关于【程序媛晒83行代码】人生如码,用代码构造极其简单人生模型的清宵小姐姐...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/691308

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu2289(简单二分)

虽说是简单二分,但是我还是wa死了  题意:已知圆台的体积,求高度 首先要知道圆台体积怎么求:设上下底的半径分别为r1,r2,高为h,V = PI*(r1*r1+r1*r2+r2*r2)*h/3 然后以h进行二分 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#includ

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

usaco 1.3 Prime Cryptarithm(简单哈希表暴搜剪枝)

思路: 1. 用一个 hash[ ] 数组存放输入的数字,令 hash[ tmp ]=1 。 2. 一个自定义函数 check( ) ,检查各位是否为输入的数字。 3. 暴搜。第一行数从 100到999,第二行数从 10到99。 4. 剪枝。 代码: /*ID: who jayLANG: C++TASK: crypt1*/#include<stdio.h>bool h

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

uva 10387 Billiard(简单几何)

题意是一个球从矩形的中点出发,告诉你小球与矩形两条边的碰撞次数与小球回到原点的时间,求小球出发时的角度和小球的速度。 简单的几何问题,小球每与竖边碰撞一次,向右扩展一个相同的矩形;每与横边碰撞一次,向上扩展一个相同的矩形。 可以发现,扩展矩形的路径和在当前矩形中的每一段路径相同,当小球回到出发点时,一条直线的路径刚好经过最后一个扩展矩形的中心点。 最后扩展的路径和横边竖边恰好组成一个直