美文网首页
用Java探索丁真宇宙有多大?(认真思考^^)

用Java探索丁真宇宙有多大?(认真思考^^)

作者: 湖与月 | 来源:发表于2023-03-28 16:53 被阅读0次

背景

百度贴吧是以兴趣主题聚合志同道合者的互动平台,同好网友聚集在这里交流话题、展示自我、结交朋友。在这里,人才辈出,金句频出,新梗无限。
其中,丁真宇宙是贴吧老哥创造的集大成者,可文可武,他的文字格式一般为一眼丁真(yy丁真,前2字的拼音首字母为y),鉴定为:假。为了探索丁真宇宙还有多少发挥空间,我想穷举一下这个yy组合数量有多少种。

Java实现

首先我们要拿到中文汉字的集合,这里用的是pinyin4j库的数据集:


部分数据集

数据集分两列,左列为汉字的unicode编码,右侧为该汉字对应的拼音,有些汉字是多拼音。我要做的便是将他重新映射为y拼音首字母开头对应的汉字数组。
实现如下:

import com.alibaba.fastjson.JSON;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public static void main(String[] args) throws IOException {
        long count = 0;
        Map<String, List<Character>> map = new HashMap<>();
        final String resourceName = "/pinyindb/unicode_to_hanyu_pinyin.txt";
        try (BufferedReader bReader = new BufferedReader(new InputStreamReader(PinyinHelper.class.getResourceAsStream(resourceName)))) {
            String line;
            while ((line = bReader.readLine()) != null) {
                String[] lineArr = line.split(" ");
                String pinyin = lineArr[1].substring(1, lineArr[1].length() - 1);
                String[] pinyinArr = pinyin.split(",");
                for (String py : pinyinArr) {
                    if (py.charAt(0) == 'y') {
                        count++;
                        String hex = lineArr[0];
                        int decimal = Integer.parseInt(hex,16);
                        char chinese = (char)decimal;
                        if (map.containsKey(py)) {
                            List<Character> list = map.get(py);
                            list.add(chinese);
                            map.put(py,list);
                        } else {
                            List<Character> list = new ArrayList<>();
                            list.add(chinese);
                            map.put(py,list);
                        }
                    }
                }
            }
            System.out.println("数量:"+count+"集合:"+JSON.toJSONString(map));
        }
    }

结果

运行后,得到y拼音首字母开头的汉字有2084个,其中包含简体字和繁体字,哪怕算是一半繁体字,也还有1000简体字,如果再排除叠字丁真(目前我还没见过云云丁真这样的组合,一般没啥含义,忽略不计),还有部分语气词类的汉字,比如“哟”,“唷”等,然后计算结果:950x949=901550,90万!
我的评价是未来可期!(赢^^赢)

相关文章

  • 你骄傲的自尊,只是你不愿意承认罢了

    浩瀚的宇宙总是勾起天文爱好者、科学家们探索的欲望,这个宇宙有多大,地球又多大,相比之下,你渺小到微不足道,你的存在...

  • 宇宙有多大

    一直答应粥哥为公众号写三篇有关宇宙和人类探索太空的文章,可是却一直也没动笔。主要是因为内容太宽泛,不知道从何入手,...

  • 宇宙有多大

    逃离地球飞向太空宇宙不可测似人心

  • 宇宙,有多大?

    首先,我们看看蚂蚁觉得一个球,有多大。 蚂蚁因为高度低,所以,几乎蚂蚁的世界,就是二维的世界。没有高度,他怎么确定...

  • 宇宙有多大?

    宇宙到底有多大呢?科学家们根据已有的数据测算出宇宙的直径可达到920亿光年,而这个直径的数字每分每秒都在增加而且速...

  • 宇宙有多大?

    https://m.iqiyi.com/w_19s33f83j1.html?key=5d2157eabcea7a5...

  • 宇宙有多大

    宇宙究竟有多大?宇宙最后的归宿是什么?其实和人类也是一样!随着科技的进步,地球上的地方基本都被探索遍了,人...

  • 【作业3】宇宙是怎么来的:在苏菲的世界里找到的答案

    文/高灯 宇宙是怎么来的?宝贝,你问这个问题,说明你想多了解一点宇宙,那我们就从宇宙有多大这个问题开始探索吧! 宇...

  • 来自宇宙深邃的绝密信息

    来自宇宙深邃的绝密信息 人类探索宇宙,不知宇宙S究竟有多大 从公元1世纪一直...

  • 开学特别节目•宇宙

    大有多大?小有多小?,让我们从微观世界开始,探索宇宙的神奇!

网友评论

      本文标题:用Java探索丁真宇宙有多大?(认真思考^^)

      本文链接:https://www.haomeiwen.com/subject/soqxddtx.html