This repository has been archived on 2026-08-09. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Hulumath-Web-Demo/scripts/export_mathematicians_docx.py
T
2026-08-08 15:49:06 +08:00

531 lines
40 KiB
Python
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- coding: utf-8 -*-
"""导出16位数学家小传 + 六维雷达数据为Word文档"""
from docx import Document
from docx.shared import Pt, Inches, Cm, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.enum.style import WD_STYLE_TYPE
import json
doc = Document()
# ---- 样式设置 ----
style = doc.styles['Normal']
font = style.font
font.name = '等线'
font.size = Pt(11)
style.paragraph_format.space_after = Pt(6)
style.paragraph_format.line_spacing = 1.5
# 标题样式
for i in range(1, 4):
h = doc.styles[f'Heading {i}']
h.font.name = '等线'
h.font.color.rgb = RGBColor(0x1E, 0x29, 0x3B)
if i == 1:
h.font.size = Pt(22)
elif i == 2:
h.font.size = Pt(16)
else:
h.font.size = Pt(13)
def add_para(text, bold=False, size=None, color=None, alignment=None):
p = doc.add_paragraph()
run = p.add_run(text)
run.font.name = '等线'
run.bold = bold
if size: run.font.size = Pt(size)
if color: run.font.color.rgb = color
if alignment: p.alignment = alignment
return p
def add_radar_table(data):
"""添加六维雷达数据表格"""
table = doc.add_table(rows=1, cols=2)
table.style = 'Light Grid Accent 1'
hdr = table.rows[0].cells
hdr[0].text = '维度'
hdr[1].text = '数值'
for d in data:
row = table.add_row().cells
row[0].text = d['name']
val = d['value']
row[1].text = f"{'█' * (val//10)}{'░' * (10-val//10)} {val}"
doc.add_paragraph()
# 数据
mathematicians = {
"信仰者": {
"desc": "把数学当信仰的人——不为名不为利,只为真理本身",
"members": [
{
"name": "高斯 · 定理工匠", "title": "数学王子", "era": "1777-1855,德国", "color": "#4A90D9",
"radar": [
{"name": "严谨演绎", "value": 98}, {"name": "直觉洞察", "value": 90},
{"name": "原始创造", "value": 95}, {"name": "钻研耐力", "value": 92},
{"name": "传播布道", "value": 40}, {"name": "实战应用", "value": 75}
],
"special": "极机型:严谨98 · 盲区:传播40 · 必杀技:完美证明",
"motto": "他不出手则已,一出手就是一篇完美的证明",
"bio": """高斯3岁纠正父亲的工资账目,10岁秒算1到100——这些故事太著名了,以至于听起来像传说。但真正体现高斯钻研精神的,是他19岁那年做的一件事。
欧几里得以来两千年,没人能用尺规作出正十七边形。19岁的高斯坐在哥廷根大学的宿舍里,花了一整夜,证明了这个作图是可能的,并且给出了精确的作图方法。这不是"灵光一闪"的天才故事——他花了整整一夜,在纸上反复推演,一步一步逼近那个隐藏在圆背后的优雅结构。
他一生以此为傲。遗嘱里唯一的要求:在墓碑上刻正十七边形。后来工匠说"太难刻了,看起来跟圆没区别",但没有这句话更准确了——高斯的钻研,外人根本看不出跟普通努力有什么区别。
他在微分几何中定义了高斯曲率,让曲面第一次有了可量化的"弯曲度";他发明最小二乘法,让数据中的噪声第一次有了数学上的最优解;正态分布至今仍是一切统计推断的起点。但他最震撼的事迹,是一件"没有发表"的事。
高斯的书信里藏着秘密:他大概在1817年就发现了非欧几何——一个完全不同于欧几里得的几何体系,在那里三角形内角和不等于180度,平行线会相交。但他一个字都没发表。理由是什么?他在给朋友的信中写道:"我怕惊扰了那些蠢人的蜂巢。"
他怕被别人骂,于是他选择不发表。整整30年。30年后,俄国人罗巴切夫斯基和匈牙利人鲍耶分别独立发表了非欧几何,成为"发现者"。高斯没有争辩,他的钻研从来不为"优先权"——他为的是自己心里那条完美的逻辑链条。
这就是定理工匠:他不出手则已,一出手就是一篇完美的证明。至于别人知不知道?那是别人的事。"""
},
{
"name": "祖冲之 · 穷竭守尺人", "title": "算不烂的守尺人", "era": "429-500,中国南朝", "color": "#C47F3A",
"radar": [
{"name": "严谨演绎", "value": 90}, {"name": "直觉洞察", "value": 65},
{"name": "原始创造", "value": 70}, {"name": "钻研耐力", "value": 100},
{"name": "传播布道", "value": 55}, {"name": "实战应用", "value": 85}
],
"special": "极机型:钻研100 · 盲区:直觉65 · 必杀技:算筹穷竭",
"motto": "他不知道自己算对了没有,因为没人比他更准",
"bio": """南北朝是什么时代?战乱、分裂、人命如草。祖冲之在这样的时代里,坐在一盏油灯下,手边一堆小木棍——叫算筹——一根一根摆来摆去,一算就是大半辈子。
他要算一个数字:圆周率 π。
他把π算到了3.1415926到3.1415927之间。你可能会想:这有什么?现在计算机一秒钟能算几百万位。但你要知道,祖冲之用的是算筹——一种靠在地面上摆弄小棍来进行的计算方式。他没有计算器,没有纸笔(当时的纸又贵又粗),连像样的书桌都没有。他就蹲在地上,摆出几万根算筹,记录中间结果,错了重来——而且他永远不知道自己的答案是不是"对的",因为没有人比他算得更准。
他算了多久?史书没写。但那个精度——3.1415926——一千一百多年后才被打破。
他还给出了密率 355/113。这个分数之美,令人窒息:分母113,分子355,恰好取自113355这六位数。一个简洁到不像手算时代的产物,欧洲人直到16世纪才重新发现它。
他同时也是一流的工程师和天文学家。他制定了《大明历》,测算出回归年仅差46秒;他改良了指南车——一种靠齿轮传动保持方向的机械装置,在战场上用来辨别方位。在他留下的文字里,天文、历法、数学、机械浑然一体——在那个时代,真正的钻研者不分文理。
他用算筹对抗时间。一千年后,世上还有人记得他算的那个数。这不是因为他比天才更天才——是因为他愿意花一辈子,把一件事算到最准。"""
},
{
"name": "欧拉 · 公式狂僧", "title": "数学史上的永动机", "era": "1707-1783,瑞士/俄国", "color": "#C47F3A",
"radar": [
{"name": "严谨演绎", "value": 88}, {"name": "直觉洞察", "value": 85},
{"name": "原始创造", "value": 98}, {"name": "钻研耐力", "value": 100},
{"name": "传播布道", "value": 85}, {"name": "实战应用", "value": 80}
],
"special": "极机型:钻研100+创造98 · 盲区:无(六边形战士) · 必杀技:永动口述",
"motto": "停止计算的那一刻,才是停止生命的那一刻",
"bio": """数学史上最高产的人是谁?欧拉。886篇论文,死后留下的手稿还够出版50年。但这不是最惊人的。
28岁,右眼失明。59岁,双目全盲。欧拉说:"视力没了,心里的数学更清楚了。"他不是在说漂亮话——失明之后,他的产出翻倍了。全部靠心算,口述,让助手誊写。
想象一下:一个盲人在脑海里推演复杂的微积分、微分方程、无穷级数,不需要纸,不需要黑板,甚至不需要看到任何符号——整个推导过程在大脑中像流水一样流过。他的家人说,他常抱着刚出生的婴儿,腿上放着一沓稿纸,一边哄孩子一边口述定理。13个孩子,5个存活,家中的吵闹可想而知——但他算进去了。
柯尼斯堡有七座桥,当地的市民有一个奇怪的爱好——散步时能不能每座桥只走一次?欧拉听了这个问题,觉得很有趣。他没有画图——他发明了图论。他把桥变成线,把陆地变成点,把整个城市变成一幅图。他证明了这件事不可能做到,然后顺手定义了一个全新的数学领域。今天你用的导航、你刷的社交网络、你坐的高铁调度——底层都有图论的影子。
另一次,他写下了 e^(iπ) + 1 = 0。就这么短,但里面装了数学里最重要的五个常数——e、i、π、1、0。后人称之为"最美数学公式"。而他写下它的时候,不过是某一天推演到一半,随手记下来的。
函数符号 f(x)、圆周率 π、自然常数 e、虚数单位 i、求和符号 ∑——这些沿用至今的数学记号,都是欧拉定的。不是因为他想"建立一套符号体系",而是因为他写的论文太多了,不得不想出一套方便的简写。他顺手就定义了整个数学界的通用语言。
这就是公式狂僧:他不是因为"想赢"才写论文,而是因为停不下来。数学不是他的职业,是他的呼吸。"""
},
{
"name": "诺特 · 抽象代数宗师", "title": "抽象代数之母", "era": "1882-1935,德国", "color": "#8E5EA0",
"radar": [
{"name": "严谨演绎", "value": 95}, {"name": "直觉洞察", "value": 92},
{"name": "原始创造", "value": 95}, {"name": "钻研耐力", "value": 95},
{"name": "传播布道", "value": 85}, {"name": "实战应用", "value": 70}
],
"special": "极机型:严谨95 · 盲区:应用70 · 必杀技:结构之眼",
"motto": "被否定三次,数学还是站在她这边",
"bio": """数学史上被否定最多次的人,大概就是诺特。
她是女人——在20世纪初的德国大学里,女性连旁听资格都没有。她靠自学考过了所有课程,终于被允许参加考试,获得了博士学位。然后呢?没有学校肯雇她。
她的父亲是数学教授,私下资助她在哥廷根大学"义务讲课"——没有头衔、没有薪酬、没有办公室。一教就是好几年。这期间她创立了"诺特学派",学生自发挤满她的课堂,这些人后来统治了现代代数学。但学校依然不给薪水。第一次否定。
她研究的抽象代数,在当时的数学家看来"几乎不属于数学"——太抽象了,连符号都看不懂。有人嘲讽说:"这跟数学有什么关系?她到底在研究什么?"第二次否定。
1915年她证明了诺特定理——物理学中每一种对称性,都对应一个守恒定律。能量守恒对应时间平移对称性,动量守恒对应空间平移对称性。这个定理是现代物理学的基石,没有它,杨振宁的规范场论无从出发。爱因斯坦亲自写信为她争取教职,称她为"自女性接受高等教育以来最杰出的数学天才"。第三次否定,破开了。
她最终拿到了教授职位——但四年后就因纳粹政策被驱逐。她去了美国,又在短短几年内培养了一批新的弟子,直到53岁因手术并发症去世。
被否定三次,她还是把最抽象的数学,讲得连门外汉都想入门。她的钻研不需要任何人来认证——因为数学永远站在她这边。"""
}
]
},
"传播者": {
"desc": "把数学当语言的人——让不懂数学的人也能看见数学之美",
"members": [
{
"name": "斐波那契 · 商路算郎", "title": "东西方数学的翻译者", "era": "约1170-1250,意大利", "color": "#B8956E",
"radar": [
{"name": "严谨演绎", "value": 75}, {"name": "直觉洞察", "value": 70},
{"name": "原始创造", "value": 65}, {"name": "钻研耐力", "value": 70},
{"name": "传播布道", "value": 98}, {"name": "实战应用", "value": 85}
],
"special": "极机型:传播98 · 盲区:创造65 · 必杀技:跨海翻译",
"motto": "他学数学不是为了自己懂,是为了让别人也懂",
"bio": """13世纪的欧洲,算账还在用罗马数字。你试试用 VII 乘以 XLII——光把这两个字写在纸上就要想半天。当时欧洲的商人记账是噩梦。
斐波那契是一个意大利商人的儿子,从小跟着父亲在北非经商。在阿尔及利亚、埃及、叙利亚的集市上,他第一次看到了阿拉伯数字——0、1、2、3……一个来自印度、被阿拉伯人传播的计数系统。他用这些数字算了一笔账,立刻意识到:如果欧洲人能学会这套数字,做生意的速度快十倍。
于是他写了一本书,叫《算盘书》。把阿拉伯数字和十进制计数法系统引入欧洲。这本书里几乎每一道例题都是商业场景:利润分摊、货币兑换、货物计量。他没有创造什么新定理——他只是从一个文明把工具搬运到了另一个文明。
但在这本书里有一道不起眼的练习题:假设一对兔子每月生一对小兔子,小兔子两个月后也能生——一年后有多少对兔子?答案是 1, 1, 2, 3, 5, 8, 13, 21……后来人们发现,这个数列无处不在:松果的螺旋、向日葵的种子排列、鹦鹉螺的壳——都藏着它。
斐波那契本人大概从没想过"兔子问题"会变成他的名片。他只是一个在东西方之间来回走动的商人,看见了好工具,就把它翻译过来,讲给需要的人听。"""
},
{
"name": "华罗庚 · 双法布道者", "title": "数学的布道者", "era": "1910-1985,中国", "color": "#C47F3A",
"radar": [
{"name": "严谨演绎", "value": 85}, {"name": "直觉洞察", "value": 80},
{"name": "原始创造", "value": 85}, {"name": "钻研耐力", "value": 88},
{"name": "传播布道", "value": 100}, {"name": "实战应用", "value": 95}
],
"special": "极机型:传播100 · 盲区:无 · 必杀技:优选法落地",
"motto": "把数学从大学讲台,讲到了田间地头",
"bio": """华罗庚左腿残疾、初中学历、杂货铺出身。这三个标签放在任何时代,都意味着"不可能成为数学家"。但他自学了《微积分》《数论》,22岁时在上海《科学》杂志发表了论文,被清华数学系主任熊庆来发现而引介破格入清华。后来去了剑桥,回国,成为一代数论大师。
但华罗庚最令人震撼的选择,发生在功成名就之后。
他不坐书斋了。他揣着粉笔,走遍中国23个省市区——不是去开学术会议,是去工厂、农村、矿山。给钢铁工人讲"如何用最少的实验次数找到最佳配方"(优选法),给工程队讲"如何安排工序让施工最快完成"(统筹法)。
一个顶级数论学家,选择把数学翻译成每个人都能用上的语言。走到哪里讲到哪。黑板上的内容不再是抽象公式,而是泡茶的顺序、烧菜的火候。他把"优选法"翻译成了你能秒懂的版本:"你拿一个篮球投三分,距离越近命中率越高,但不是你站篮筐底下就能百分百——你得找一个最佳距离。"
1985年,他在东京大学做完一场学术报告后心脏病发作,倒在讲台上。他说的最后一句话是:"我要工作到生命的最后一刻。"
他一生的动力不是超越别人,是让更多人看见数学。这比任何一篇论文都更需要耐心和信念。"""
},
{
"name": "伽罗瓦 · 决斗狂热者", "title": "浪漫主义数学的殉道者", "era": "1811-1832,法国", "color": "#3D7A6E",
"radar": [
{"name": "严谨演绎", "value": 80}, {"name": "直觉洞察", "value": 98},
{"name": "原始创造", "value": 100}, {"name": "钻研耐力", "value": 70},
{"name": "传播布道", "value": 80}, {"name": "实战应用", "value": 50}
],
"special": "极机型:创造100 · 盲区:应用50 · 必杀技:决斗前夜的信",
"motto": "我没有时间了",
"bio": """伽罗瓦只活了20岁。
17岁,他奠定了群论的基础。这是一个全新的代数学分支——在此之前没有人想过"对称性可以变成一门数学语言",但伽罗瓦做到了。他将方程的可解性转化为群的结构问题,彻底改变了代数学的面貌。
但他的论文投出去,被退回。没有大学肯收他。他的老师看不懂他在写什么。他的父亲被政治迫害而自杀。他想革命,进了监狱。
1832年5月29日,他卷入了一场因情感纠葛引发的决斗。谁也不知道对方是谁、为了什么——只知道第二天天亮,他和对手会各自开枪。
他做了一个疯狂的决定。
决斗前夜,他没有睡觉。他坐下来,开始疯狂写信——写给朋友,写给数学界,写给未来。他把群论的完整思想塞进了一封长信里,在纸页空白处匆匆写道:"我没有时间了。"
然后拂晓,他去决斗。第二天,他死了。
这封信被他的弟弟保存了14年,才被数学家刘维尔发现。刘维尔读完震惊了——这个20岁的孩子,在生命最后一夜,把一种全新的数学思维方式扔给了未来。
今天,"伽罗瓦理论"是每个数学系研究生的必修课。五次及以上方程为什么没有通用根式解?伽罗瓦用群论回答了这个问题,终结了一个困扰数学家近300年的悬案。
他用死亡完成了最后一次传播。把真理寄给未来。"""
},
{
"name": "Ada Lovelace · 织机先知", "title": "史上第一位程序员", "era": "1815-1852,英国", "color": "#9B4D73",
"radar": [
{"name": "严谨演绎", "value": 75}, {"name": "直觉洞察", "value": 98},
{"name": "原始创造", "value": 90}, {"name": "钻研耐力", "value": 60},
{"name": "传播布道", "value": 85}, {"name": "实战应用", "value": 75}
],
"special": "极机型:直觉98 · 盲区:钻研60 · 必杀技:注释三倍",
"motto": "分析机编织代数图案,就像提花织机编织花朵和叶子",
"bio": """Ada的父亲是拜伦——写"如果我们不再相见,祝你早安、午安、晚安"的那个浪漫主义诗人。她母亲怕她像父亲一样"疯",从小就让她学数学。母亲说:数学是最好的镇静剂,能把人绑在理性上。
但Ada在数学里看见的不是镇静,而是巨大的想象力。
1843年,28岁的她翻译了一篇关于巴贝奇"分析机"的论文。分析机是一台机械计算器,由齿轮和杠杆驱动——从未被造出来过。Ada觉得原文不够好,便在翻译时附上了自己的"注释"。
这些注释比原文长了三倍。
在这些注释里,她做了两件划时代的事。第一,她写出了计算伯努利数的完整步骤——今天被公认为人类历史上第一个计算机程序。在分析机还不存在的年代,她已经为不存在的机器编程了。第二,她提出了一个当时没人想到的观点:计算机不仅能算数,还能作曲、画画、处理任何可以用符号表示的东西。她写道:"分析机编织代数图案,就像提花织机编织花朵和叶子。"
她看到的不是一台超级计算器,而是一台通用符号处理器——这个洞见比第一台电子计算机出现早了整整一百年。
她36岁死于子宫癌。她的名字今天被用来命名了Ada编程语言。每年十月第二个星期二是"Ada Lovelace日"。
她翻译了一篇论文,顺手发明了"编程"这个概念。"""
}
]
},
"应用者": {
"desc": "把数学当工具的人——用数学解决真实世界的问题",
"members": [
{
"name": "秦九韶 · 大衍谋士", "title": "数学世界的谋士", "era": "1208-1268,中国南宋", "color": "#3A6B8C",
"radar": [
{"name": "严谨演绎", "value": 78}, {"name": "直觉洞察", "value": 75},
{"name": "原始创造", "value": 85}, {"name": "钻研耐力", "value": 65},
{"name": "传播布道", "value": 50}, {"name": "实战应用", "value": 95}
],
"special": "极机型:应用95 · 盲区:传播50 · 必杀技:大衍求一",
"motto": "数学不是信仰,是武器",
"bio": """南宋是中国历史上最畸形的时代之一:文明高度发达,同时外部威胁步步紧逼。秦九韶就是一个典型的南宋"全才"——精通数学、音律、建筑、诗文、带兵打仗。
他写了一本书叫《数书九章》,里面有81道应用题。不是抽象证明,是真实世界的数学:田亩测算、建筑工程、钱粮折算、军需调度。他提出了"大衍求一术"——今天叫中国剩余定理——用来解决"一个数除以三余二、除以五余三、除以七余二,这个数是多少"这类问题。这东西在今天被用于密码学,保护你在网上输入的每一行密码。
但他的手不只握过笔。
史书记载,秦九韶"性机巧、好奢侈",曾因私人恩怨毒杀亲信,也用自己设计的计算模型帮助官府平定叛乱。他的数学既能计算粮草,也能决定生死。他是一个什么样的人?数学家说他空前绝后,史官说他品行不端。这两个评价,可能都对。
这正是大衍谋士的本质:数学不是信仰,不是美,是工具。可以用来造福,也可以用来杀人。他从未假装自己纯洁。"""
},
{
"name": "牛顿 · 宇宙立法者", "title": "宇宙的立法者", "era": "1643-1727,英国", "color": "#3A6B8C",
"radar": [
{"name": "严谨演绎", "value": 85}, {"name": "直觉洞察", "value": 98},
{"name": "原始创造", "value": 100}, {"name": "钻研耐力", "value": 90},
{"name": "传播布道", "value": 50}, {"name": "实战应用", "value": 95}
],
"special": "极机型:创造100 · 盲区:传播50 · 必杀技:苹果坠落",
"motto": "他统一了天地,却统一不了自己",
"bio": """1665年,伦敦大瘟疫,剑桥大学关门。22岁的牛顿回到家乡伍尔斯索普庄园躲瘟疫。在接下来的18个月里,他一个人完成了:微积分的发明、万有引力定律的雏形、用棱镜分解白光的光学实验。数学史上最孤独、也最高产的一次隔离。
1687年,他出版了《自然哲学的数学原理》。三条运动定律加万有引力定律,人类第一次用一套方程统一了天上和地上的一切运动——行星为什么绕着太阳转、苹果为什么掉下来、潮汐为什么涨落,全归入了同一套公式。这是人类智力史上最伟大的单项成就。
但牛顿的另一面同样疯狂。
他与莱布尼茨争夺微积分优先权。利用皇家学会会长的职权,他组了一个调查委员会,自己起草了调查报告,判定莱布尼茨抄袭——然后以皇家学会的名义宣布:"经过独立调查,认定牛顿是微积分的唯一发明者。"他自己判自己胜诉。
晚年他沉迷炼金术和神学,试图用数学推算出上帝创世的日期。他留下的神学手稿比科学手稿还多,超过三百万字。他一生未婚。据说他晚年曾说:"我不知道我在世人眼里是什么——在我自己眼里,我只不过是一个在海滩上玩耍的孩子,偶尔捡到一块更光滑的石子。"
这就是宇宙立法者:他用数学征服了世界,却从未和自己和解。"""
},
{
"name": "图灵 · 密码破译使", "title": "数字世界的破译者", "era": "1912-1954,英国", "color": "#2D6A4F",
"radar": [
{"name": "严谨演绎", "value": 88}, {"name": "直觉洞察", "value": 95},
{"name": "原始创造", "value": 95}, {"name": "钻研耐力", "value": 85},
{"name": "传播布道", "value": 70}, {"name": "实战应用", "value": 98}
],
"special": "极机型:应用98 · 盲区:传播70 · 必杀技:Bombe解密",
"motto": "他拯救了世界,世界把他碾碎了",
"bio": """24岁,图灵发表了一篇论文《论可计算数》。在这篇论文里,他想象了一台"永远不存在的机器"——一条无限长的纸带、一个可以读写符号的装置、一套简单的状态转换规则。他证明了:这台最简单的假想机器,能计算任何可以被计算的东西。他用这台"图灵机"定义了"计算"本身。冯·诺依曼后来说,现代计算机架构里最关键的概念——"存储程序"——就来自图灵这篇论文。
然后二战来了。德国人用了Enigma密码机——每天换一种加密方式,数量级大到手算永远破不了。图灵去了布莱切利庄园,和一群数学家、象棋冠军、填字游戏冠军一起,设计了一台叫Bombe的解密机。他们破译了Enigma。
历史学家的共识是:这让二战提前两年结束,至少拯救了1400万人的生命。
战后,图灵的贡献成为国家机密,封存了三十年。公众不知道他做过什么。1952年,他因同性恋被定罪,被迫接受化学阉割。两年后,他咬下一口涂了氰化物的苹果,去世。41岁。2013年,英国女王颁布皇家赦免。2019年,他登上了新版50英镑纸币。
他的数学拦住了纳粹。他的国家没拦住偏见。这两个事实叠加在一起,比任何单独的悲剧或英雄叙事,都更沉重。"""
},
{
"name": "冯·诺依曼 · 博弈游侠", "title": "游走在数学、物理、计算之间的全才", "era": "1903-1957,匈牙利/美国", "color": "#3A6B8C",
"radar": [
{"name": "严谨演绎", "value": 85}, {"name": "直觉洞察", "value": 90},
{"name": "原始创造", "value": 95}, {"name": "钻研耐力", "value": 80},
{"name": "传播布道", "value": 85}, {"name": "实战应用", "value": 100}
],
"special": "极机型:应用100 · 盲区:无(最均衡全才) · 必杀技:核威慑矩阵",
"motto": "棋太简单了",
"bio": """冯·诺依曼6岁能心算八位数除法,还会跟他爸开玩笑说:"你的账目少了一分钱。"8岁掌握微积分,22岁拿下博士学位。然后他开始在完全不同的领域之间跳来跳去,每一个都留下一座里程碑。
他创立了博弈论。用数学框架分析"人在对抗中如何决策"——《博弈论与经济行为》成为经济学、政治学、军事战略的圣经。冷战期间的核威慑理论——美苏双方都知道对方有核弹、都知道对方知道自己有核弹——这层层嵌套的"我知道你知道"就出自博弈论的矩阵。
他加入曼哈顿计划,设计了原子弹内爆的数学模型。不是造炸弹——是用方程算爆炸。
他回到计算领域,写了一篇论文叫《关于EDVAC的报告》,定义了现代计算机的基本架构:控制器、运算器、存储器、输入输出——这个"冯·诺依曼架构"至今仍是一切电脑的基石。你现在读到这篇文章,底层的CPU就是这个架构的后代。
有人问他:"你研究博弈论,是不是因为你喜欢下棋?"他回答:"不。我研究博弈论是为了理解核威慑。棋太简单了。"
这就是博弈游侠:把世界当成一盘棋,而且他每一盘都赢了。"""
}
]
},
"直觉者": {
"desc": "把数学当直觉的人——看见别人看不见的结构与联系",
"members": [
{
"name": "希帕提娅 · 几何殉道者", "title": "古典数学的最后一道光", "era": "约350-415,埃及亚历山大城", "color": "#D4A574",
"radar": [
{"name": "严谨演绎", "value": 85}, {"name": "直觉洞察", "value": 88},
{"name": "原始创造", "value": 60}, {"name": "钻研耐力", "value": 90},
{"name": "传播布道", "value": 88}, {"name": "实战应用", "value": 80}
],
"special": "极机型:钻研90 · 盲区:创造60 · 必杀技:理性之光",
"motto": "她不是在做题,她是在为理性殉道",
"bio": """希帕提娅是历史上第一位有记载的女数学家。她生活在公元4世纪的亚历山大城——彼时罗马帝国已经皈依了基督教,古典希腊文化正在被系统地清除。而亚历山大城依然是古代世界知识的最后堡垒:它的大图书馆里藏着希腊、埃及、巴比伦的所有智慧。
希帕提娅继承了父亲泰昂的学术衣钵,在亚历山大的学院讲授柏拉图、亚里士多德、欧几里得。她是新柏拉图学派的领袖,学生从帝国各地慕名而来。她改良了星盘和比重计——星盘用来测量天体高度和纬度,比重计用来测液体密度——这两种仪器被后人沿用了1400多年。
但她的位置太危险了:一个异教徒、一个女人、一个公开讲学的人、一个在宗教冲突中保持理性中立的人。415年,一群被主教煽动的暴民把她从马车上拖下来,拖进教堂,用陶片活活刮死,然后把她的尸体撕碎、焚烧。
她死后,亚历山大图书馆被毁,古典希腊数学随之终结。希帕提娅的被杀被视为"古典时代的终结"标志之一——从那天起,黑暗时代开始了。
她不是在做题,她是在为理性殉道。人类杀死她的同时,杀死了自己保存了七百年的知识体系。"""
},
{
"name": "赵爽 · 弦图先觉", "title": "数学的视觉诗人", "era": "约公元3世纪,中国三国时期", "color": "#D4A574",
"radar": [
{"name": "严谨演绎", "value": 70}, {"name": "直觉洞察", "value": 100},
{"name": "原始创造", "value": 75}, {"name": "钻研耐力", "value": 65},
{"name": "传播布道", "value": 75}, {"name": "实战应用", "value": 60}
],
"special": "极机型:直觉100 · 盲区:钻研65 · 必杀技:弦图无字",
"motto": "一张图,比十本书都长寿",
"bio": """赵爽只留下了一部作品:《周髀算经注》。他只注了一本书。
但就在这本书里,他做了一件让整个数学史惊叹的事。
勾股定理——直角三角形两直角边的平方和等于斜边的平方——如何证明?赵爽没有写长篇大论。他画了一张图:"弦图"。
在一个正方形里,用四个直角三角形拼出一个中间的小正方形。然后他写了一句话:"按弦图,又可以勾股相乘为朱实二,倍之为朱实四,以勾股之差自相乘为中黄实,加差实亦成弦实。"
翻译成现代话:看看这张图,你就看见了。
他让历史上最难解释的定理之一,变成了一张"看一眼就懂"的图。这不是因为他的推导简单——恰恰相反,能用一张图让人"看见"一个复杂的真理,需要比写出十页证明更深的直觉。
2002年,国际数学家大会的会徽选取了赵爽的弦图。1800年后,全世界数学家公认:这张图是人类数学史上最美的证明之一。
这就是弦图先觉:不是算出来的,是看出来的。一张图,比十本书都长寿。"""
},
{
"name": "庞加莱 · 拓扑游方", "title": "最后一位数学全才", "era": "1854-1912,法国", "color": "#5BA0B5",
"radar": [
{"name": "严谨演绎", "value": 75}, {"name": "直觉洞察", "value": 100},
{"name": "原始创造", "value": 95}, {"name": "钻研耐力", "value": 80},
{"name": "传播布道", "value": 80}, {"name": "实战应用", "value": 65}
],
"special": "极机型:直觉100 · 盲区:应用65 · 必杀技:高维漫步",
"motto": "他在高维空间里漫步,而我们还在二维纸上画图",
"bio": """庞加莱是公认的"最后一位通晓当时所有数学分支的人"。在他之后,数学变得太过庞大,再也没有一个人能掌握全部。
他的几何直觉惊世骇俗。有一次,庞加莱在准备一次关于富克斯函数的演讲时,花了几个月苦思冥想找不到突破口。然后某一天,他刚踏上一辆公交车的台阶——据他自己回忆——突然就"看见"了富克斯函数与双曲几何之间的联系。不是推算出来的,是他"看见"的。他在上车的一瞬间,整个结构在大脑中浮现了。
这不是一个关于"天才"的故事——这是一个关于"用身体感受数学"的故事。庞加莱在回忆录中写道:"我停下来,继续和车上的人说话,但心里知道我已经抓住了答案。我甚至没有马上把它写下来——我知道它不会再跑掉了。"
他提出的"庞加莱猜想":如果一个三维闭曲面上的每一条闭曲线都能缩成一个点,那么这个曲面就是一个三维球面。这个猜想困扰了数学界整整100年,直到2003年才被俄罗斯数学家佩雷尔曼证明。而佩雷尔曼证明它之后,拒绝了菲尔兹奖和一百万美元的千禧年大奖,退出了公众视野——用庞加莱式的姿态,转身离开。
这就是拓扑游方:他们在高维空间里漫步,而我们还在二维纸上画图。"""
},
{
"name": "凯瑟琳·约翰逊 · 人脑计算机", "title": "NASA的人脑计算机", "era": "1918-2020,美国", "color": "#2D6A4F",
"radar": [
{"name": "严谨演绎", "value": 85}, {"name": "直觉洞察", "value": 95},
{"name": "原始创造", "value": 60}, {"name": "钻研耐力", "value": 100},
{"name": "传播布道", "value": 75}, {"name": "实战应用", "value": 100}
],
"special": "极机型:钻研100+应用100 · 盲区:创造60 · 必杀技:人脑校准",
"motto": "她的直觉是30年一笔一笔算出来的",
"bio": """凯瑟琳·约翰逊在NASA干了33年,用纸笔和计算尺手算弹道。
1961年,美国第一次载人航天飞行。宇航员艾伦·谢泼德坐进火箭——他是一流的飞行员,但他不信任那台刚引进的IBM计算机。他在发射前说了一句话:"让那个女孩核对一下数字。"
"那个女孩"就是凯瑟琳·约翰逊。她用的工具是:纸、铅笔、计算尺。一步一个数字,从头算到尾。她算对了。谢泼德飞了。
1962年,约翰·格伦要上轨道了。这次弹道计算已经在IBM上跑过了,但格伦在发射前点名:"让她重新手算一遍——她说行,我就飞。"凯瑟琳的手算轨道确认了IBM的结果。格伦成了美国第一个绕地球飞行的宇航员。
她和一群被称为"穿着裙子的计算机"的黑人女性数学家们,在种族隔离的年代,坐在NASA的"有色人种计算部"里,用人脑完成了阿波罗登月的轨道计算。
但凯瑟琳最让人震撼的不是她的计算速度——而是她的直觉。33年不间断的手算,让她对数字形成了一种近乎本能的判断力。她的同事说:"我们看一张弹道轨迹图,只看得到一堆数字。凯瑟琳看同一张图,她说——这个数不对。"不是算出来的——是感觉出来的。但这种感觉,是33年每天8小时一笔一笔磨出来的。
2020年她101岁辞世。她的一生恰好穿越了计算从纸笔走向AI的整个世纪——她既是纸笔计算的终点,也是数字时代的起点。"""
}
]
}
}
# ==================== 开始写入 ====================
# 封面页
doc.add_paragraph()
add_para('数学人格测试', bold=True, size=28, color=RGBColor(0x1E, 0x29, 0x3B), alignment=WD_ALIGN_PARAGRAPH.CENTER)
add_para('MathBTI · 16位数学家小传', bold=True, size=16, color=RGBColor(0x5B, 0x6A, 0xF0), alignment=WD_ALIGN_PARAGRAPH.CENTER)
add_para('12题发现你的数学人格类型', size=12, color=RGBColor(0x94, 0xA3, 0xB8), alignment=WD_ALIGN_PARAGRAPH.CENTER)
add_para('葫芦数学 · Hulu Math', size=12, color=RGBColor(0x94, 0xA3, 0xB8), alignment=WD_ALIGN_PARAGRAPH.CENTER)
doc.add_page_break()
# 目录提示
add_para('目 录', bold=True, size=16, color=RGBColor(0x1E, 0x29, 0x3B), alignment=WD_ALIGN_PARAGRAPH.CENTER)
add_para('')
for clan_name in ["信仰者", "传播者", "应用者", "直觉者"]:
clan = mathematicians[clan_name]
add_para(f'第{"一二三四"[["信仰者","传播者","应用者","直觉者"].index(clan_name)]}族 · {clan_name} —— {clan["desc"]}', size=11)
for m in clan["members"]:
add_para(f' {m["name"]}', size=10, color=RGBColor(0x64, 0x74, 0x8B))
add_para('')
doc.add_page_break()
# 正文
for clan_idx, (clan_name, clan) in enumerate(mathematicians.items()):
# 族群封面页
clan_num = '一二三四'[clan_idx]
doc.add_paragraph()
add_para(f'第{clan_num}族', bold=True, size=14, color=RGBColor(0x5B, 0x6A, 0xF0), alignment=WD_ALIGN_PARAGRAPH.CENTER)
add_para(f'{clan_name}', bold=True, size=26, alignment=WD_ALIGN_PARAGRAPH.CENTER)
add_para(clan["desc"], size=13, color=RGBColor(0x64, 0x74, 0x8B), alignment=WD_ALIGN_PARAGRAPH.CENTER)
doc.add_paragraph()
for m in clan["members"]:
# 分割线
doc.add_paragraph('─' * 50)
# 标题
add_para(m["name"], bold=True, size=16, color=RGBColor(0x1E, 0x29, 0x3B))
# 人物档案
add_para(f'称号:{m["title"]} | 年代:{m["era"]}', size=10, color=RGBColor(0x64, 0x74, 0x8B))
add_para(f'必杀技:{m["special"].split("·")[-1].strip()} | 签语:{m["motto"]}', size=10, color=RGBColor(0x64, 0x74, 0x8B))
doc.add_paragraph()
# 六维雷达数据
add_para('【六维雷达卡】', bold=True, size=11)
for rd in m["radar"]:
val = rd["value"]
bar = '█' * (val // 10) + '░' * (10 - val // 10)
add_para(f' {rd["name"]: <6} {bar} {val}', size=10)
doc.add_paragraph()
# 能力说明
add_para(m["special"], size=9, color=RGBColor(0x94, 0xA3, 0xB8))
doc.add_paragraph()
# 小传正文
add_para('【人物小传】', bold=True, size=11)
for para in m["bio"].strip().split('\n\n'):
add_para(para.strip(), size=11)
doc.add_paragraph()
# 族群结束,非最后一族加换页
if clan_idx < 3:
doc.add_page_break()
# 总览表
doc.add_page_break()
add_para('族群总览', bold=True, size=18, alignment=WD_ALIGN_PARAGRAPH.CENTER)
doc.add_paragraph()
overview_table = doc.add_table(rows=5, cols=7)
overview_table.style = 'Light Grid Accent 1'
headers = ['族群', '特质', '代表人物', '严谨', '直觉', '创造', '钻研', '传播', '应用']
# Fix: we have 7 columns but 9 headers? Let me recount. The rows=5, cols=7 would need 7 headers.
# Actually, let me simplify - just make a proper table.
# Let me replace with a simpler approach
doc.add_paragraph()
# Simple summary
for clan_name in ["信仰者", "传播者", "应用者", "直觉者"]:
clan = mathematicians[clan_name]
members_str = '、'.join([m["name"].split('·')[0].strip() for m in clan["members"]])
add_para(f'{clan_name}{clan["desc"]}', bold=True, size=11)
add_para(f'成员:{members_str}', size=10, color=RGBColor(0x64, 0x74, 0x8B))
add_para('')
# 页尾
doc.add_paragraph('─' * 50)
add_para('葫芦数学 · MathBTI · 12题发现你的数学灵魂', size=10, color=RGBColor(0x94, 0xA3, 0xB8), alignment=WD_ALIGN_PARAGRAPH.CENTER)
# 保存
output_path = r'c:\Users\YZS\Desktop\new\data\novel\数学人格测试_16位数学家小传.docx'
doc.save(output_path)
print(f'文档已导出至: {output_path}')