Scheme中的邮政编码验证(Dr. Racket)

Posted

技术标签:

【中文标题】Scheme中的邮政编码验证(Dr. Racket)【英文标题】:Postal Code verification in Scheme (Dr. Racket) 【发布时间】:2013-02-05 18:40:14 【问题描述】:

我正在用 Scheme (Dr. Racket) 编写一个程序来验证加拿大的邮政编码。用户输入邮政编码并得到有效与否的响应。我把布尔逻辑记下来了,但我不知道如何真正告诉它正确的格式是什么。

例如。 (有效的邮政编码?N2L 3G1)=> 真

我该怎么做?

谢谢

【问题讨论】:

您是在问一个特定领域的问题(例如,有效的加拿大邮政编码的结构是什么),还是在问如何编程?很难说这个问题是关于什么的。***讨论了加拿大邮政编码的结构:en.wikipedia.org/wiki/… 【参考方案1】:

如果您想知道一个字符串是否具有有效邮政编码的格式,您可以使用正则表达式。加拿大邮政编码由六个字符组成,交替的字母和以字母开头的数字,第三个和第四个字符之间嵌入一个空格。一个合适的正则表达式是^[A-Z][0-9][A-Z] [0-9][A-Z][0-9]$

如果您想知道具有有效格式的字符串是否在邮政编码列表中,最简单的解决方案是布隆过滤器。我在 my blog 提供了一个用 Scheme 编写的布隆过滤器。

【讨论】:

【参考方案2】:

我不知道加拿大邮政编码是如何工作的,但我认为您要问的是您可能只有一长串有效代码,并且需要告诉程序它们没问题,而没有其他代码。

使用可变哈希映射非常适合您的目的:http://docs.racket-lang.org/guide/hash-tables.html

【讨论】:

以上是关于Scheme中的邮政编码验证(Dr. Racket)的主要内容,如果未能解决你的问题,请参考以下文章

安装Emacs并设置racket环境

Scheme / Racket中的静态变量?

Racket 与 Scheme 宏

在 Scheme / Racket 中 let 的 lambda 定义是啥? [复制]

Scheme/Racket中letrec的含义

如何清除 Dr. Racket IDE 中的解释器屏幕?