程序员如何给娃起名字?让我们一起看看取名网的逻辑!

简介: 程序员如何给娃起名字?让我们一起看看取名网的逻辑!

给孩子取名是一件很讲究的事情,有的直接花钱让人算,有的用族谱排字,有的用特别喜欢的诗歌或历史事件。暂时不管封建迷信是不是,这是父母美好愿望最直接的体现。毕竟人活着还是需要精神上的满足。本文的理论基础主要是五格剖象法与八字四柱五行相结合,试图用JS脚本实现半自动命名。

背景

我有个朋友对中国传统文化更感兴趣,周易、八字、中医、冥想等都研究过一点,五行八卦等原则也几乎了解了七七八八。最近需要给孩子起名,没有族谱,没有特别喜欢的诗,只能自己研究命名。他朋友问,为什么不自己花钱?码农,不花钱的地方肯定不花钱。怎么会错过这么好的研究数学的机会,最好用自己的轮子。

据说五格剖象法是由日本熊崎健翁于1918年初创造的。因此,严格地说,它只是基于中国传统文化理论创造的一种实践方式,可以简单地理解为用名字笔画幸运数字。这里就不赘述具体的规则和原则了,想了解细节的同学请自行查阅。

因为五格剖象法只是用数字看吉凶,维度太单一。汉字分为五行,普通人都知道一个道理:八字缺什么就补什么(其实比较复杂,有藏干之类的),比如苗、鑫、林、森这个词在名字里很常见。因此,笔者结合八字【四柱五行】补充了五格的实践。不幸的是,四柱五行的规律过于复杂,不适合零造轮,因此直接使用现成软件。

这几乎是市场上收钱命名的套路,最后,综合考虑寓意和平仄,那么名字肯定不会差,废话不多说我们来看演示结果!

效果展示

假设孩子姓【赵】,缺【金】【土】,女孩。

启动脚本并使用:

image.png

我们看看运行脚本后的结果:

image.png

随便挑一个测一下,比如【宸巍】:

image.png

感兴趣的学生可以自己试试。除了外观(不重要),这个名字是吉祥的。此外,作者还添加了拼音,因为成千上万的结果,所以一旦你确定了你最喜欢的发音,你可以根据拼音搜索。

正文

使用说明

毕竟是半自动的,所以还是要有一些人工操作。另外需要注意的是,在使用这个脚本之前,你必须至少使用github和nodejs的一些基本操作。当然,如果你只想看热闹,也很受欢迎。

基础数据

首先,准备基本数据:文字库、五格吉凶数字库,如下:直接上代码!

文字库

数据格式用 ts 表示如下:

// 五行
enum Ele {
  wood,
  fire,
  earth,
  metal,
  water,
}
// key 就是 字
Record<string, {
  char: string; // 字
  ele: Ele; // 五行
  strokes: number; // 笔画
  sound: string; // 拼音
}>

看到JSON结果,eg:

{
  "一":{"char":"一","ele":2,"strokes":1,"sound":"yi"},
  "乙":{"char":"乙","ele":2,"strokes":1,"sound":"yi"},
  "刁":{"char":"刁","ele":1,"strokes":2,"sound":"diao"},
  // ...
}

五各吉凶数字库

数据格式用 ts 表示如下:

enum Sex {
  female,
  male,
}
Array<{
  desc: string;
  score: -2 | -1 | 0 | 1 | 2; // 吉正数;凶负数,处理的时候要剔除
  sex?: Sex; // 部分吉凶只针对男性或女性,使用时会根据性别进行过滤
  nums: number[];
}>

eg:

[  
  {
    "desc": "女德运暗示数(具有妇德,品性温良,助夫爱子)",
    "score": 1,
    "sex": 0,
    "nums": [5, 6, 11, 13, 15, 16, 24, 32, 35]
  },
  {
    "desc": "女性孤寡运暗示数(难觅夫君,家庭不和,夫妻两虎相斗,离婚,严重者夫妻一方早亡)",
    "score": -2,
    "sex": 0,
    "nums": [21, 23, 26, 28, 29, 33, 39]
  },
]

核心逻辑

1.根据性别和五格吉凶数字库生成所有吉的数字,并去重;

2.暴力三层遍历

  • 先选取一个吉数,即【总格】。减去【姓】的笔画,得到剩余笔画数,即【地格】,并保证【地格】是吉数;
  • 暴力遍历所有笔画相加等于剩余笔画数的两个字,当然前提是经过了五行的筛选,另外还要保证【姓】+【第二个字】的笔画数,即【人格】是吉数;
  • 跳回第一层,选取另一个吉数,执行下一个循环。

这样做的效果是:【总格】、【人格】、【地格】肯定是吉数;【天格】不受控(取决于姓);【外格】不保证效果,但由于外格没那么重要所以就随缘了;

3.将结果数据进行友好性处理,生成文件。

最后贴一点核心代码片段,大家“懂意思”就行了,避免交智商税!

numData.nums.forEach((totalScore) => {
    const earthScore = totalScore - surStks;
    if (allGoodNums.includes(earthScore)) {
      chars.forEach((secd) => {
        const manScore = surStks + secd.strokes;
        const lastRest = earthScore - secd.strokes;
        if (
          lastRest > 0 &&
          secd.ele === eles[0] &&
          allGoodNums.includes(manScore)
        ) {
          chars.forEach((last) => {
            if (
              lastRest === last.strokes &&
              last.ele === eles[1]
            ) {
              const { cosmos, man, earth, outside, total } = getNameScore({
                surnameData,
                secondNameData: secd,
                lastnameData: last,
              });
              const fiveRes = `总${total}人${man}地${earth}天${cosmos}外${outside}`;
              result.push(
                `${secd.char}${last.char}(${secd.sound},${last.sound}):${fiveRes}`
              );
            }
          });
        }
      });
    }
  });

结语

可以看到,逻辑其实非常简单,实现成本也不大,一两天就能搞出来。

目录
相关文章
|
5月前
|
Web App开发 前端开发 定位技术
前端命名规范以及常用命名整理
这是一份关于HTML和CSS编码规范的摘要: - 文件编码统一使用UTF-8。 - 命名遵循语义化,CSS属性书写规范,推荐使用中线命名法(如`hello-world`),避免下划线和驼峰命名。 - 样式应复用,模块化,便于移植。 - 避免使用CSS Hack,优先考虑浏览器兼容性。 - 针对Firefox设计,用IE条件注释做修正。 - 使用英文命名,避免拼音,少用缩写,不以数字开头。 - 常见命名包括页面结构(如`container`、`header`)、导航(`nav`、`subnav`)、功能区域(`logo`、`search`)等,提供了一套常见的ID和Class命名约定。
|
前端开发 程序员 PHP
程序员还在为变量取名苦恼,那是因为你不知道,这个变量命名神器
程序员还在为变量取名苦恼,那是因为你不知道,这个变量命名神器
195 0
|
存储 设计模式 缓存
新来了个同事,代码命名规范是真优雅呀!代码如诗!!
新来了个同事,代码命名规范是真优雅呀!代码如诗!!
|
小程序 搜索推荐 开发者
如何给你的小游戏起个好名字
嗨!大家好,我是小蚂蚁。今天的这篇文章来自于我的一位学员 @Sing 的分享。很多的小游戏开发者给自己的游戏起名字完全是随性或者凭借感觉,其实给小游戏起名字是有一定的方法的,一个好的名字是能给你的小游戏带来一定的搜索自然流量的。 如果你之前起游戏名字靠的是感觉,不妨好好看一下这篇分享,按照文中的方法分析一下,自己起的游戏名字到底好不好。
138 0
如何给你的小游戏起个好名字
|
JavaScript 前端开发 Java
程序员如何给变量起名字
程序员如何给变量起名字
c++第十篇结构体例子
c++第十篇结构体例子
|
存储 缓存 监控
新来了个同事,代码命名规范是真优雅呀!代码如诗!! 上
新来了个同事,代码命名规范是真优雅呀!代码如诗!! 上
|
设计模式 XML 缓存
新来了个同事,代码命名规范是真优雅呀!代码如诗!! 下
新来了个同事,代码命名规范是真优雅呀!代码如诗!! 下
|
IDE 程序员 开发工具
世界上第一个程序员命名的编程语言是什么?
Ada曾是美国国防部指定的唯一一款可用于军用系统开发的语言,旨在整合美军事系统中运行着450多种不同的程序设计语言,她是迄今为止最复杂、最完备的软件工具。开发始于1975年,最早是针对嵌入式和实时系统设计的,1983年发布。其命名是为了纪念世界上第一位程序员阿达·洛芙莱斯。Ada具有许多现代软件的开发原理,而且将这些原理进行实现他可以改善软件系统的清晰性、可靠性、有效性、可维护性。
421 0
|
前端开发 JavaScript 算法
你真的会代码命名吗 ? 优雅学会《如来神掌》 再也不怕不知道如何命名啦!
你真的会代码命名吗 ? 优雅学会《如来神掌》 再也不怕不知道如何命名啦!
240 0
你真的会代码命名吗 ? 优雅学会《如来神掌》 再也不怕不知道如何命名啦!