Subacme

A weblog by Jetcheng Chu.

试玩: 汉字 Alphametic

有 2 条评论

Alphametic, 也叫做 verbal arithmetic (文字算数), 中文名称之一是 “覆面算”1

这种游戏是指 (如果我沒有理解错的话) 用一个字母表的子集构造加法 “算式”, 其中每个字母代表一个数字, 使得 “算式” 中的字母被替换为相应的数字後依然成立。

注意, 这个游戏不是在构造群同态, ——它只要单个表达式被满足。

今天看到这篇谈到汉字 Alphametic 的文章, 决定自己尝试一下。

首先想到的方法是: 1) 确定一个词汇表, 2) 生成相应的字母表, 3) 用一个正整数编码置换规则, 4) 构造词汇表的所有 n 元组的集合, 5) 对每个 n 元组置换、求和, 6) 在置换後的词汇表中搜索相同的值。这样做的好处是, 由於词汇表中的词 “意思” 相关, “有意义” 的 “算式” 更容易被找到。

确实, 利用这一方法, 我找到了一些有趣的 “算式”。下面是几个有趣的输出。请注意, 这个算法沒有考虑到加法的交换性, 因此有重復的输出。

Words: {翻墙, 墙, 水泥, 水泥工}
Alphabet: 墙工水泥翻
Rule Code: 54631
Tuple Size: 3
墙 + 墙 + 墙 = 翻墙 (5 + 5 + 5 = 15)
Words: {肉牛, 草, 牛肉, 奶酪}
Alphabet: 奶牛肉草酪
Rule Code: 76493
Tuple Size: 3
肉牛 + 草 + 草 = 牛肉 (46 + 9 + 9 = 64)
草 + 肉牛 + 草 = 牛肉 (9 + 46 + 9 = 64)
草 + 草 + 肉牛 = 牛肉 (9 + 9 + 46 = 64)

当然, 更好的方法之一是将输入词汇表分成两部分, 其中一部分只允许出现在等号右边。不过由於精力有限, 我沒有继续修改代码。

代码可在此处下载。

  1. 参考 Wikipedia 条目 Verbal arithmetic

本文的作者为 Jetcheng Chu

发表於 2010 年 2 月 23 日 18:52

分类: 未分类

标签: ,

赞助商链接

您的支持让您喜欢的网站更好地发展。
页面右侧尚有更多赞助商链接。如果您感兴趣, 请别犹豫单击它们。

文章《试玩: 汉字 Alphametic》有 2 个回应

您可以用 RSSTrackBack 订阅《试玩: 汉字 Alphametic》的评论。

  1. 前面一下来一个那么多抽象符号的公式,看第一次的时候我就跑了。后来看到在GR里那个类似的介绍文章,然后再倒回来看就OK……

    这样的话,貌似中文的组合比较简单点吧,虽然说也可以凑复杂的……好像是这样

    neolandscaper

    评论发表於 2010 年 2 月 23 日 19:06

  2. 囧, 我想错了, 刚改掉。

    现在沒公式了。

    Jetcheng Chu

    评论发表於 2010 年 2 月 23 日 19:09

发表回复