目录

什么是八股文

关于春联的常见说法

编程设计

1. 定义两个数组

2. 转换两个 map

3. 两种写春联方式

结论


什么是八股文

八股文(英译:Stereotyped Writing;Eight-Legged Essay),也称制义、制艺、时文、八比文,是明清科举考试的一种文体。八股文章就“四书五经”取题,内容必须用古人的语气,绝对不允许自由发挥,而句子的长短、字的繁简、声调的高低等也都要相对成文,字数也有限制。 八股文就是指文章的八个部分,文体有固定格式:由破题、承题、起讲、入题、起股、中股、后股、束股八部分组成,题目一律出自四书五经中的原文。后四个部分每部分有两股排比对偶的文字,合起来共八股。旧时科举,八股文要用孔子、孟子的口气说话,四副对子平仄对仗,不能用风花雪月的典故亵渎圣人,每篇文章包括从起股到束股四个部分。——《百度百科》

后来,八股文被引申为“禁锢思想”、“死板僵化”的意思。如果用八股文写春联是什么样子呢?

关于春联的常见说法

  1. 平仄平仄平平仄,仄平仄平仄仄平。

  2. 天对地、雨对风、大陆对长空,雷隐隐对雾蒙蒙,开业大吉对万事亨通。

  3. 上对下,大对小,山花对海树,赤日对苍穹。

除此之外,当然还有很多别的规则,这里这是简单举例。本文以最小的闭环展开讨论。

先来看两幅比较不错的春联。

编程设计

如果简单按照常见的规则去写春联,很多时候是不合适的,本文把这种写春联的方式称为“八股文”。 那么,如何通过编程实现简单的八股文写春联呢?下面就来看一下。

1. 定义两个数组

首先,定义两个互相对照的数组,用来保存上述规则的字和词语,下面以 Go 语言为例进行举例:

// 上联
upArray := [...]string{"天", "雨", "大陆", "上", "大", "山花", "赤日"}
// 下联
blowArray := [...]string{"地", "风", "长空", "下", "小", "海树", "苍穹"}

注意,其实这两个数组可以很长很长,这里我们“点到为止”。

2. 转换两个 map

根据第一步中定义的两个数组,分别转换出对应的两个 map,两个 map 以数组的元素为 key,索引值 index 为 value 进行定义。相关代码如下:

// 上联
upMap := map[string]int{"天": 0,"雨": 1,"大陆": 2,"上": 3,"大": 4,"山花": 5,"赤日": 6,"秋": 7,}// 下联
blowMap := map[string]int{"地": 0,"风": 1,"长空": 2,"下": 3,"小": 4,"海树": 5,"苍穹": 6,"春": 7,}   

3. 两种写春联方式

第一种方式、自动生成春联

自动生成春联的方式就是自动生成上下联,编码实现的话,需要依赖上面提到的两个数组。实现思路是随机生成一段数字,然后把数字每位的数字作为数组索引下标,分别通过两个数组生成上下联。举例试一下,看看如何自动生成春联。

package mainimport ("fmt""math/rand""time"
)func main() {myRand := rand.New(rand.NewSource(time.Now().UnixNano()))// 随机生成数n :=myRand.Intn(1000)fmt.Println(n)
}

输出结果:235

生成对联代码如下:

package mainimport ("fmt"
)func main() {// 上联数组upArray := [...]string{"天", "雨", "大陆", "上", "大", "山花", "赤日"}// 下联数组blowArray := [...]string{"地", "风", "长空", "下", "小", "海树", "苍穹"}up := upArray[2]+upArray[3]+upArray[5]blow := blowArray[2]+blowArray[3]+blowArray[5]fmt.Println(up) // 大陆上山花fmt.Println(blow) // 长空下海树
}

那么,

上联就是:大陆上山花,

下联就是:长空下海树。

评价:语句对仗还算工整,含义嘛,差点意思。

第二种方式、根据上联对下联

这种方式就是根据已有的上联,自动对出下联。编码实现的话,需要依赖上面提到的两个数组和两个map。根据上联的字和词,分别遍历两个map得出对应的数组和索引值 index,再根据相对的数组和索引值 index 得出对应的下联。

下面通过一个例子来看一下,如果上联是“春风吹海树”,那么下联应该是“秋雨天山花”。貌似还差一个字儿没对上,但是如果原始字段足够多的话,其实也是可以对出下联的,可能就是含义上差点意思。代码实现如下:

package mainimport ("fmt"
)func main() {// 上联数组upArray := [...]string{"天", "雨", "大陆", "上", "大", "山花", "赤日", "秋"}// 下联mapblowMap := map[string]int{"地": 0,"风": 1,"长空": 2,"下": 3,"小": 4,"海树": 5,"苍穹": 6,"春":7 ,}one := []int{}one = append(one, blowMap["春"])one = append(one, blowMap["风"])one = append(one, blowMap["吹"])one = append(one, blowMap["海树"])res := ""for i:=0; i<len(one); i++ {res += upArray[one[i]]}fmt.Println(res)
}

结论

哈哈,目前看来纯八股文写春联多少还是不太靠谱,有太多的情况和意境很难融进去。当然我们也可以通过优化算法和改进实现方式来让程序写出更加优美,更加符合人类习惯的春联,比如利用大数据收集足够的素材,利用人工智能模拟人类习惯和风格“推算”出尽可能优美的春联。好了,关于八股文写春联的讨论就讲这么多。如果你有什么好点子,欢迎评论留言!最后,祝大家新年快乐,牛年大吉!


作者简介:

八股文写春联会是什么样子?相关推荐

  1. 写一副对子_挥毫泼墨写春联 西安街头年味分外浓

    书法爱好者为市民写春联视频,跟着记者逛市场 春节将至,西安街头巷尾不少市民在购置年货的同时,也不忘为自家采购一副象征对新年美好生活期盼的春联 .在书院门和都城隍庙市场,红火的春联已经开写.开卖,记者带 ...

  2. 【新春特辑】发压岁钱、看贺岁片、AI写春联……华为云社区给大家拜年了

    摘要:充电团聚云上见,顺便攒攒压岁钱. 春!节!倒!计!时!啦! 农历新年即将到来,热闹的过年氛围逐渐弥漫,华为云社区先给大家拜个早年,祝所有小伙伴们新春快乐,牛年大吉! 回望2020年,社区涌现了许 ...

  3. 哗哗地照样子写词语_哗哗照样子写词语,

    照样子写词语哗哗地 照样子写词语如下: 哗哗地. 沙沙地 怦怦地 :咚终地 潺潺地. 汩汩地 哗哗的照样子写词语 如哗哗样子写词语 哗哗地. 沙沙地 怦怦地 ;咚终地 潺潺地. 汩汩地 哗哗地照样子写 ...

  4. 你自己写春联吗?你会贴春联吗?还是毛笔墨水早就不见了?

    http://www.iteye.com/topic/161501 现在过春节,基本上不会自己去写春联了,记得最后一次写对联是我二叔乔迁的时候,帮他写对联,那个场面,呵呵,都不知道毛笔怎么握了:( 现 ...

  5. Compose 实现手写春联效果

    前言 又是一年新春,在这里先给大家拜个早年了.每逢春节,写春联贴春联都是一项必不可少的活动.本次主要使用Compose,实现手写春联的效果.如果对你有所帮助,欢迎点个赞或者评论鼓励一下~ 爆竹声中一岁 ...

  6. 用Compose实现手写春联效果

    /   今日科技快讯   / 近日,尽管"元宇宙"这个词已经存在了近30年,但直到Facebook在2021年10月下旬更名为Meta,似乎才重新点燃了投资者对它的兴趣.其中,虚拟 ...

  7. 2020,我用Python写春联

    前言 春联是中国传统文化中最具内涵的元素之一,它以对仗工整.简洁精巧的文字描绘美好形象,抒发美好愿望,是中国特有的文学形式,是华人们过年的重要习俗.每逢春节期间,无论城市还是农村,家家户户都要精选一副 ...

  8. 我做了一个手写春联小网页,祝大家虎年暴富

    目录 前言 产品构思 设计 开发 手写春联:https://cl.xugaoyi.com/ 前言 虎年春节快到了,首先祝大家新年快乐,轻松暴富. 最近在网上经常看到生成春联的文章,不过这些小demo要 ...

  9. 开发一套在线纸笔系统,随时随地在线写春联

    前言 快过年了,辞旧迎新,无论是城市还是农村,家家户户都要贴春联.手写村联更是别有趣味,传统的纸笔必不能随身携带想写就写,鉴于此开发一套在线纸笔系统,可以随时随地掏出手机就能写春联,写的好的可以下载存 ...

  10. 用Python写春联:抒写最真诚的祝福和最美好的祈愿

    文章目录 1. 前言 2. 代码中需要导入的模块 3. 下载字模 4. 下载龙凤呈祥背景底图 5. 生成春联 6. 测试样例 6.1 普天同庆 欢度春节 6.2 年尽岁除岁月如歌 冬去春来春光似画 6 ...

最新文章

  1. QT安装由问题的,安装后发现有些控件标签名显示不了
  2. 1、一、Introduction(入门): 0、Introduction to Android(引进到Android)
  3. “生骨肉”概念加速奔跑,宠物行业真要起飞了?
  4. 服务器工具个人免费版下载使用,xshell个人免费版,xftp个人免费版
  5. CVPR2020 Oral|场景去遮挡新方法:港中文首次提出自监督新框架,已开源
  6. .9-浅析express源码之请求处理流程(2)
  7. Microsoft Visual Studio 2008从试用版转为正式版
  8. stm32 薄膜键盘原理_铅锤哥:市面上的笔记本键盘优缺点解析,看完秒懂
  9. HDU3123:GCC(同余模简单题)
  10. python爬取商品信息
  11. 新建文本html,创建邮件模板时html内容和文本内容哪种好
  12. pyodbc 操作SQL Server数据库
  13. C#多线程和线程池 【转】
  14. Rs.recordcount=-1的解决办法
  15. unity3d显示c4d材质_C4D入门到精通,没那么难
  16. 给硬件工程师的入门课-系统框图的设计
  17. vmware VM虚拟机去虚拟化教程 硬件虚拟机 过鲁大师检测
  18. 基于Java的坦克大战游戏的设计与实现(论文+PPT+源码)
  19. 数智经济转型下如何抢占文创发展新机遇?中国移动咪咕聚焦新一代年轻人需求
  20. 压力传感器压力变送器如何选型

热门文章

  1. 服务器虚拟化的主要特点,网络虚拟化的七大特征
  2. 二进制数的反码和补码
  3. 网课笔记 ☀ 经济学原理课后习题及答案
  4. BitTorrent下载原理和演示
  5. 计算机网络 之 BitTorrent技术对网络的潜在危害
  6. java实时监控系统_JavaMonitor
  7. 获取 Panabit Linux 版 root 密码
  8. Nefu 锐格实验9
  9. 猜拳java,猜拳小游戏(Java代码实现)
  10. ip icmp flood 等 常见的攻击