mirror of
https://gitcode.com/Zengtudor/alg2025.git
synced 2025-12-16 20:23:00 +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