当前位置: 首页 > news >正文

最近网友问晚上失眠的问题

最近网友问晚上失眠的问题,俺记起了一个回答:在晚上睡觉时常常失眠——这是文化人典型的毛病。

如果你对上面的结果感兴趣,俺可以告诉你 这是在一台2000元左右的i3的pc机上运行的。

代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace TextUtils
{public class TextFinder{public List<FinderItem> Items = new List<FinderItem>();public void InitFinder(string txt){Items.Clear();string[] ss = txt.Split(new string[] { " ", " ", ",", ",", ".", "。", ";", ";", ";", @"\", "、", "|", "\r", "\n" }, StringSplitOptions.RemoveEmptyEntries);int c = ss.Length;for (int i = 0; i < c; i++){string s = ss[i];FinderItem item = new FinderItem();item.txt = s.ToArray();item.weight = item.txt.Length * item.txt.Length + (c - i);Items.Add(item);}}public FinderResult FindInBook(BookFile book){FinderResult r = new FinderResult();r.finder = this;int min_w = 1;int w = 0;foreach (FinderItem item in Items)w = w + item.weight;if (w > 2){min_w = (int)Math.Sqrt(w);}bool b = true; int weight = 0;for (int idx = 0; idx < book.Contents.Count; idx++){weight = 0;foreach (FinderItem item in Items){if (item.txt.Length == 1){if (BinFind(book.Contents[idx].SortedChar, item.txt[0]) >= 0)weight = weight + item.weight;}else{b = true;foreach (char ch in item.txt){if (BinFind(book.Contents[idx].SortedChar, ch) < 0){b = false;break;}}if (b){if (ArrayFind(book.Contents[idx].Content, item.txt)>=0)weight = weight + item.weight;}}}if (weight >= min_w){ResultItem ri = new ResultItem();ri.book_id = book.id;ri.content_idx = idx;ri.weight = weight;r.items.Add(ri);}}return r;}public  int IsKey(char[] source, int idx){int result = 0;bool b = true;foreach (FinderItem item in Items){if (item.txt.Length == 1){if (source[idx] == item.txt[0])if (result < 1)result = 1;}else{if (idx + item.txt.Length <= source.Length){char ch0 = item.txt[0];if (source[idx] == ch0){b = true;for (int k = 1; k < item.txt.Length; k++){if (source[idx + k] != item.txt[k]){b = false;break;}}if (b){if (item.txt.Length > result)result = item.txt.Length; }}}}}return result;}public static int ArrayFind(char[] source, char[] target){bool b = true;int target_len = target.Length;char ch0 = target[0];for (int i = 0; i < source.Length - target.Length; i++){if (source[i] == ch0){b = true;for (int k = 1; k < target_len; k++){if (source[i + k] != target[k]){b = false;break;}}if (b)return i;}}return -1;}public static int BinFind(char[] source, char target){if (source.Length < 5){for (int i=0;i< source.Length;i++){if (source[i] == target)return i; }return -1;}//数组左边界索引值int left = 0;//数组的右边界索引值int right = source.Length - 1;//数组的中位值的索引值int mid = 0;//在循环中,根据中位值与目标值对比,更新左(右)边界的值,从而缩小检索范围,直到找到目标值。while (left <= right){   //每循环一次,中位值索引也要随着左(右)边界的改变而改变mid = (left + right) / 2;if (source[mid].Equals(target)){return mid;}      //中位值在目标值左边时更新左边界索引else if (source[mid] < target){left = mid + 1;}    //中位值在目标值右边时更新右边界索引else if (source[mid] > target){right = mid - 1;}}return -1;}}public class FinderItem{public char[] txt;public int weight;}public class FinderResult{public TextFinder finder;public List<ResultItem> items = new List<ResultItem>();public void SortItems(){items.Sort(new SortResultItem());}}public class ResultItem{public int weight;public int book_id;public int content_idx;}public class SortResultItem : Comparer<ResultItem>{public override int Compare(ResultItem x, ResultItem y){return y.weight.CompareTo(x.weight);}}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【vue3|第22期】Vite + Vue3:vite配置文件
  • 重磅!2023中国高校计算机大赛-人工智能创意赛结果出炉
  • 声明式事务及编程式事务
  • 数据在内存中的存储(了解大小端字节序浮点数在内存中存储)详细~
  • zabbix实战-磁盘空间告警
  • 华为鸿蒙Core Vision Kit 骨骼检测技术
  • 构建第一个Spring项目
  • 黑神话悟空什么配置可以玩?什么样的游戏本配置可以畅玩《黑神话:悟空》?黑神话悟空电脑配置推荐
  • WEB之文件上传
  • 华为M60首次降价,消费回暖能延续?
  • 【FreeRTOS】队列实验-多设备玩游戏(旋转编码器)
  • SQL 时间盲注 (injection 第十五关)
  • java.sql.SQLException: txn too large, size: 104857606.
  • SQLALchemy 分组过滤、子查询
  • QT网络编程: 实现UDP通讯设置
  • 【Linux系统编程】快速查找errno错误码信息
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • 77. Combinations
  • extract-text-webpack-plugin用法
  • Git 使用集
  • gitlab-ci配置详解(一)
  • Javascript编码规范
  • JavaScript的使用你知道几种?(上)
  • js继承的实现方法
  • Spring-boot 启动时碰到的错误
  • SQLServer插入数据
  • SwizzleMethod 黑魔法
  • ViewService——一种保证客户端与服务端同步的方法
  • 计算机常识 - 收藏集 - 掘金
  • 今年的LC3大会没了?
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 前端之React实战:创建跨平台的项目架构
  • 前言-如何学习区块链
  • 什么是Javascript函数节流?
  • 使用agvtool更改app version/build
  • 突破自己的技术思维
  • 用mpvue开发微信小程序
  • 与 ConTeXt MkIV 官方文档的接驳
  • 容器镜像
  • ​520就是要宠粉,你的心头书我买单
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #Lua:Lua调用C++生成的DLL库
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • $refs 、$nextTic、动态组件、name的使用
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (152)时序收敛--->(02)时序收敛二
  • (2)Java 简介
  • (4)STL算法之比较
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (javascript)再说document.body.scrollTop的使用问题
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (windows2012共享文件夹和防火墙设置