首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >宽大分型试验

宽大分型试验
EN

Code Golf用户
提问于 2012-07-04 06:42:46
回答 1查看 618关注 0票数 4

输入速度测试加载了一个单词字典,并给出了一个要输入的词:pinball。你,用你快速但不准确的手指,输入pinbnal。该死的!

编写一个程序,从字典中打印出一个随机单词,然后要求用户输入这个单词,最后返回这个单词是否正确。问题是:程序必须接受小排版。

如果一个错误只有以下之一,则接受它:

  • 一个字母在输入中重复1或2次。只有当信与它旁边的字母直接相邻时,才接受它。
  • 单词中的一个字母被重复一次。
  • 输入中的2-4个字母被置乱。

pinball一词的一些可接受的排版如下:

pingball pinbala pinbanll

一些不可接受的排版:

pibnannl maxwell pinbalgl

最短代码获胜。祝好运。

EN

回答 1

Code Golf用户

发布于 2012-12-17 02:44:16

Mathematica 179

编辑:正如Primo正确地指出的那样,以下内容并不遵守只允许那些来自QWERTY邻居的入侵的约束。当然,DL距离与键盘上的距离无关。哦,好吧。我会留下我的回应,如果有人有更多的耐心,很容易会更好。

代码

代码语言:javascript
复制
d = DictionaryLookup[]; i = d[[RandomInteger@{1, Length@d}]];o = InputString["Type: " <> i];
Print["in: ", i, "\nout: ", o, "\n", Switch[i~DamerauLevenshteinDistance~o, 0, "perfect",
1, "ok", _, "wrong"]]

解释

  1. d = DictionaryLookup[]d中存储了一个包含92000个英语单词的内置词典。
  2. i = d[[RandomInteger@{1, Length@d}]]选择一个随机单词并将其存储在i中。
  3. o = InputString["Type: " <> i];用提示符“Type我”打开一个对话框窗口(见图)。
  4. i~DamerauLevenshteinDistance~o计算请求的单词和用户键入的单词之间的Damerau-Levenshtein距离。如果DL距离= 0,则为“完美”;如果DL距离= 1,则为"ok";否则为“错误”。

测试结果

在前7个测试中,输入字符串i被手动设置为"pinball“。除"pinbalgl“外,结果是理想的,这被认为是可以接受的,因为它返回DL距离值1。

in: pinball out: pingball out: pingball ok in: out: pinbala ok in: pinball out: pinbanll ok in: pinball out: pinbannl错位: pinball out: maxwell错误in: pinbalgl ok in: tureen out: turen ok in: feedr out:错位

票数 4
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/6540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档