42岁职场老将被裁员,收获40万补偿无奈送别散伙饭

发布时间:2026-02-26 18:25  浏览量:2

群里一位老大哥,42岁,在公司干了20年,突然被“请出群聊”。更离谱的是,同事还起哄:老哥走之前请个散伙饭,热闹一下,毕竟一起熬过无数次上线、通宵、改Bug。

老大哥呢?一个字:不理。人家把赔偿、公积金、失业金一算,拢共四十来万,直接开始规划下一段人生。评论区也吵翻了:有人说“拿这么多,吃顿饭不亏”,有人说“请了就成惯例,以后谁被优化都得买单”,还有人更狠:“饭局一开,大家举杯祝福,转头继续写需求,尴尬值拉满。”

我觉得老大哥做得挺程序员:需求不合理,拒绝上线。饭请了是情分,不请是本分。真要共事多年,别拿别人离场当团建经费。老大哥省下这顿,起码能多交几个月房贷,香。

今日算法题: 直线镜像

昨晚群里有人发了个题叫“直线镜像”,我一开始还以为是手机贴膜那种镜面效果…结果一看,哦,是把点按一条直线“翻过去”,跟你对着镜子梳头,发现左撇子突然变右撇子那个感觉一样。

这题核心就一句话:点 (P(x,y)) 关于直线反射后的点 (P'(x',y'))。直线要么直接给你一般式 (ax+by+c=0),要么更常见给你两点 ((x1,y1),(x2,y2)) 让你自己拼出来。 我这人懒,直接用“两点式→一般式”,因为后面公式一把梭,写起来跟打游戏放大招一样爽。

两点 ((x1,y1),(x2,y2)) 对应的直线一般式可以这么搞(别背,现场算就行):

(a = y1 - y2)

(b = x2 - x1)

(c = x1 y2 - x2 y1)

然后重点来了:把点 (P) 到直线的“有符号距离比例”算出来

反射点就是:

你看,跟“先垂直投影到直线,再沿法向量走同样距离”一个意思。就像你在地铁玻璃上贴脸,贴过去那一下就是投影,弹回来就是镜像…(别学,社死)

下面直接上 Node.js(JS)版本,支持输入: 第一行x1 y1 x2 y2第二行接着 n 行每行一个点x y输出每个点的镜像坐标,保留 10 位小数(够用了,OJ一般也吃这一套)// 直线镜像 - Node.js

// 输入:x1 y1 x2 y2

// n

// n 行:x y

// 输出:n 行:x' y'(保留10位小数)

const fs = require("fs");

const data = fs.readFileSync(0, "utf8").trim.split(/\s+/).map(Number);

let idx = 0;

const x1 = data[idx++], y1 = data[idx++], x2 = data[idx++], y2 = data[idx++];

const n = data[idx++];

// 由两点构造一般式 ax + by + c = 0

const a = y1 - y2;

const b = x2 - x1;

const c = x1 * y2 - x2 * y1;

const denom = a * a + b * b;

if (denom === 0) {

// 两点重合,直线不存在,这种输入一般不会给,但我还是防一手

// 这里选择原样输出

let out = ;

for (let i = 0; i

const x = data[idx++], y = data[idx++];

out.push(`${x.toFixed(10)}${y.toFixed(10)}`);

}

process.stdout.write(out.join("\n"));

process.exit(0);

}

functionfmt(v) {

// 避免 -0.0000000000 这种阴间输出

if (Math.abs(v)

return v.toFixed(10);

}

let out = ;

const d = (a * x + b * y + c) / denom;

const xr = x - 2 * a * d;

const yr = y - 2 * b * d;

out.push(`${fmt(xr)}${fmt(yr)}`);

}

process.stdout.write(out.join("\n"));

反正这个题你写完会发现:几何题最烦的不是数学,是你一边算一边怀疑人生,“我这符号到底该加还是该减”…所以我建议你拿一个最简单的例子自测一下: 比如直线是 x 轴(y=0),点 (3,5) 镜像必然是 (3,-5),你跑一下,结果对了就别瞎改了,越改越像我当年改线上配置那种“改一次挂一次”的节奏…嗯就这样,我去喝口水,嗓子都干了。