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),你跑一下,结果对了就别瞎改了,越改越像我当年改线上配置那种“改一次挂一次”的节奏…嗯就这样,我去喝口水,嗓子都干了。