mirror of
https://gitcode.com/Zengtudor/alg2025.git
synced 2025-12-18 21:21:43 +00:00
feat: 添加马尔可夫链成语生成器实现
实现基于马尔可夫链的成语生成器,包含核心算法和成语数据文件。程序能够读取成语库并生成新的四字成语组合,同时标记已存在的成语。 新增markov_chain.cpp实现核心逻辑,包含字符串处理、概率模型和随机生成功能。添加markov_chain.txt作为成语数据源,包含200个常用成语及其编号。
This commit is contained in:
parent
62cdfbed7b
commit
beb67e3eaa
67
src/11/23/markov_chain.cpp
Normal file
67
src/11/23/markov_chain.cpp
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
#include <cstdint>
|
||||||
|
#include <iostream>
|
||||||
|
#include <istream>
|
||||||
|
#include <map>
|
||||||
|
#include <random>
|
||||||
|
#include <set>
|
||||||
|
#include <string>
|
||||||
|
#include <unordered_set>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
using ll = int64_t;
|
||||||
|
#define sl static inline
|
||||||
|
|
||||||
|
const int cnsize=3;
|
||||||
|
ll ltmp;
|
||||||
|
std::map<std::string, std::vector<std::string>> m;
|
||||||
|
std::vector<std::string> startw;
|
||||||
|
std::random_device rd;
|
||||||
|
std::mt19937 mt(rd());
|
||||||
|
std::unordered_set<std::string> old;
|
||||||
|
|
||||||
|
sl std::vector<std::string> stovs(const std::string &s){
|
||||||
|
std::vector<std::string> ret;
|
||||||
|
for(int i=0;i<s.size();i+=3){
|
||||||
|
std::string ns;
|
||||||
|
for(int j=0;j<cnsize&&i+j<s.size();j++){
|
||||||
|
ns=ns+s[i+j];
|
||||||
|
}
|
||||||
|
ret.emplace_back(ns);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(){
|
||||||
|
while(std::cin>>ltmp){
|
||||||
|
std::string b;
|
||||||
|
std::cin>>b;
|
||||||
|
std::vector<std::string> strs=stovs(b);
|
||||||
|
// for(auto &i:strs){
|
||||||
|
// std::cout<<i<<"\n";
|
||||||
|
// }
|
||||||
|
old.emplace(b);
|
||||||
|
startw.push_back(strs[0]);
|
||||||
|
for(int i=1;i<strs.size();i++){
|
||||||
|
m[strs[i-1]].push_back(strs[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::uniform_int_distribution<int> uv(0,startw.size()-1);
|
||||||
|
for(int i=1;i<=20;i++){
|
||||||
|
// std::cout<<"i="<<i<<"\n";
|
||||||
|
std::string now=startw[uv(mt)];
|
||||||
|
std::string all;
|
||||||
|
for(int j=1;j<=4;j++){
|
||||||
|
all+=now;
|
||||||
|
// std::cout<<now;
|
||||||
|
if(m[now].size()==0)break;
|
||||||
|
std::uniform_int_distribution<int> uvm(0,m[now].size()-1);
|
||||||
|
now=m[now][uvm(mt)];
|
||||||
|
}
|
||||||
|
std::cout<<all;
|
||||||
|
if(old.count(all)){
|
||||||
|
std::cout<<" "<<"[is old]";
|
||||||
|
}
|
||||||
|
std::cout<<"\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
219
src/11/23/markov_chain.txt
Normal file
219
src/11/23/markov_chain.txt
Normal file
@ -0,0 +1,219 @@
|
|||||||
|
1 一帆風順
|
||||||
|
2 一見如故
|
||||||
|
3 一清二楚
|
||||||
|
4 一塵不染
|
||||||
|
5 一落千丈
|
||||||
|
6 一成不變
|
||||||
|
7 一箭雙雕
|
||||||
|
8 一言難盡
|
||||||
|
9 一暴十寒
|
||||||
|
10 一絲不苟
|
||||||
|
|
||||||
|
11 九牛一毛
|
||||||
|
12 人山人海
|
||||||
|
13 人聲鼎沸
|
||||||
|
14 人跡罕至
|
||||||
|
15 人心難測
|
||||||
|
16 人才輩出
|
||||||
|
17 人定勝天
|
||||||
|
18 人浮於事
|
||||||
|
19 人情世故
|
||||||
|
20 人傑地靈
|
||||||
|
|
||||||
|
21 大公無私
|
||||||
|
22 大驚小怪
|
||||||
|
23 大材小用
|
||||||
|
24 大器晚成
|
||||||
|
25 大同小異
|
||||||
|
26 大張旗鼓
|
||||||
|
27 大言不慚
|
||||||
|
28 大快朵頤
|
||||||
|
29 大有可為
|
||||||
|
30 大惑不解
|
||||||
|
|
||||||
|
31 天南地北
|
||||||
|
32 天經地義
|
||||||
|
33 天馬行空
|
||||||
|
34 天衣無縫
|
||||||
|
35 天翻地覆
|
||||||
|
36 天長地久
|
||||||
|
37 天涯比鄰
|
||||||
|
38 天道酬勤
|
||||||
|
39 天人交戰
|
||||||
|
40 天花亂墜
|
||||||
|
|
||||||
|
41 心猿意馬
|
||||||
|
42 心神不寧
|
||||||
|
43 心滿意足
|
||||||
|
44 心急如焚
|
||||||
|
45 心安理得
|
||||||
|
46 心領神會
|
||||||
|
47 心血來潮
|
||||||
|
48 心花怒放
|
||||||
|
49 心甘情願
|
||||||
|
50 心驚膽戰
|
||||||
|
|
||||||
|
51 水落石出
|
||||||
|
52 水深火熱
|
||||||
|
53 水乳交融
|
||||||
|
54 水泄不通
|
||||||
|
55 水到渠成
|
||||||
|
56 水天一色
|
||||||
|
57 水中撈月
|
||||||
|
58 水火不容
|
||||||
|
59 水泛銀光
|
||||||
|
60 水光瀲灩
|
||||||
|
|
||||||
|
61 火冒三丈
|
||||||
|
62 火樹銀花
|
||||||
|
63 火上加油
|
||||||
|
64 火眼金睛
|
||||||
|
65 火急火燎
|
||||||
|
66 火燒眉毛
|
||||||
|
67 火中取栗
|
||||||
|
68 火光沖天
|
||||||
|
69 火傘高張
|
||||||
|
70 火爆脾氣
|
||||||
|
|
||||||
|
71 虎頭蛇尾
|
||||||
|
72 虎視眈眈
|
||||||
|
73 虎背熊腰
|
||||||
|
74 虎口拔牙
|
||||||
|
75 虎虎生風
|
||||||
|
76 虎落平陽
|
||||||
|
77 虎踞龍盤
|
||||||
|
78 虎將雄兵
|
||||||
|
79 虎穴龍潭
|
||||||
|
80 虎嘯風生
|
||||||
|
|
||||||
|
81 雪上加霜
|
||||||
|
82 雪中送炭
|
||||||
|
83 雪恥報仇
|
||||||
|
84 雪落無痕
|
||||||
|
85 雪泥鴻爪
|
||||||
|
86 雪擁藍關
|
||||||
|
87 雪山飛狐
|
||||||
|
88 雪過天晴
|
||||||
|
89 雪兆豐年
|
||||||
|
90 雪白晶瑩
|
||||||
|
|
||||||
|
91 風平浪靜
|
||||||
|
92 風雨如晦
|
||||||
|
93 風吹草動
|
||||||
|
94 風調雨順
|
||||||
|
95 風捲殘雲
|
||||||
|
96 風花雪月
|
||||||
|
97 風華絶代
|
||||||
|
98 風光旖旎
|
||||||
|
99 風馳電掣
|
||||||
|
100 風起雲湧
|
||||||
|
|
||||||
|
101 雲淡風輕
|
||||||
|
102 雲霧繚繞
|
||||||
|
103 雲消雲散
|
||||||
|
104 雲蒸霞蔚
|
||||||
|
105 雲集四方
|
||||||
|
106 雲開日出
|
||||||
|
107 雲程發軔
|
||||||
|
108 雲躍龍驤
|
||||||
|
109 雲深不知
|
||||||
|
110 雲飛雨散
|
||||||
|
|
||||||
|
111 明察秋毫
|
||||||
|
112 明爭暗鬥
|
||||||
|
113 明目張膽
|
||||||
|
114 明察暗訪
|
||||||
|
115 明心見性
|
||||||
|
116 明亮耀眼
|
||||||
|
117 明哲保身
|
||||||
|
118 明火執仗
|
||||||
|
119 明辨是非
|
||||||
|
120 明鏡高懸
|
||||||
|
|
||||||
|
121 虛懷若谷
|
||||||
|
122 虛與委蛇
|
||||||
|
123 虛張聲勢
|
||||||
|
124 虛實相生
|
||||||
|
125 虛名虛利
|
||||||
|
126 虛心學習
|
||||||
|
127 虛席以待
|
||||||
|
128 虛誇浮誇
|
||||||
|
129 虛堂懸鏡
|
||||||
|
130 虛言詐語
|
||||||
|
|
||||||
|
131 高瞻遠矚
|
||||||
|
132 高山流水
|
||||||
|
133 高談闊論
|
||||||
|
134 高風亮節
|
||||||
|
135 高朋滿座
|
||||||
|
136 高不可攀
|
||||||
|
137 高官厚祿
|
||||||
|
138 高屋建瓴
|
||||||
|
139 高視闊步
|
||||||
|
140 高枕無憂
|
||||||
|
|
||||||
|
141 安然無恙
|
||||||
|
142 安居樂業
|
||||||
|
143 安步當車
|
||||||
|
144 安然度日
|
||||||
|
145 安貧樂道
|
||||||
|
146 安身立命
|
||||||
|
147 安之若素
|
||||||
|
148 安土重遷
|
||||||
|
149 安然自得
|
||||||
|
150 安分守己
|
||||||
|
|
||||||
|
151 白日做夢
|
||||||
|
152 白璧無瑕
|
||||||
|
153 白駒過隙
|
||||||
|
154 白紙黑字
|
||||||
|
155 白雪皚皚
|
||||||
|
156 白頭偕老
|
||||||
|
157 白雲蒼狗
|
||||||
|
158 白衣天使
|
||||||
|
159 白手起家
|
||||||
|
160 白話連篇
|
||||||
|
|
||||||
|
161 金玉滿堂
|
||||||
|
162 金枝玉葉
|
||||||
|
163 金石為開
|
||||||
|
164 金榜題名
|
||||||
|
165 金聲玉振
|
||||||
|
166 金戈鐵馬
|
||||||
|
167 金光閃閃
|
||||||
|
168 金玉其外
|
||||||
|
169 金鼓齊鳴
|
||||||
|
170 金碧輝煌
|
||||||
|
|
||||||
|
171 石破天驚
|
||||||
|
172 石沉大海
|
||||||
|
173 石火電光
|
||||||
|
174 石破驚天
|
||||||
|
175 石壓草枯
|
||||||
|
176 石室金匱
|
||||||
|
177 石心鐵腸
|
||||||
|
178 石泉清冽
|
||||||
|
179 石橋流水
|
||||||
|
180 石室藏書
|
||||||
|
|
||||||
|
181 夜深人靜
|
||||||
|
182 夜闌人靜
|
||||||
|
183 夜以繼日
|
||||||
|
184 夜色迷離
|
||||||
|
185 夜幕降臨
|
||||||
|
186 夜雨對床
|
||||||
|
187 夜光如晝
|
||||||
|
188 夜半鐘聲
|
||||||
|
189 夜色朦朧
|
||||||
|
190 夜寂無聲
|
||||||
|
|
||||||
|
191 龍飛鳳舞
|
||||||
|
192 龍爭虎鬥
|
||||||
|
193 龍盤虎踞
|
||||||
|
194 龍馬精神
|
||||||
|
195 龍鳳呈祥
|
||||||
|
196 龍吟虎嘯
|
||||||
|
197 龍躍鳳鳴
|
||||||
|
198 龍行虎步
|
||||||
|
199 龍驤虎步
|
||||||
|
200 龍章鳳彩
|
||||||
Loading…
Reference in New Issue
Block a user