如何在纯 C# 和 .Net 框架中编写字谜生成器 [关闭]

2023-11-22

我想生成给定字符串的字谜输出,而不需要任何外部库(例如 Google 字谜算法助手)的帮助。

Example:

输入字符串=“GOD”

输出列表应如下所示:

上帝GO GD OD OG DG 做上帝GDO ODG OGD DGO 狗


这在很多层面上都变得非常棒。 我向您展示一个纯 LINQ(但不是很有效)的解决方案。

    static class Program
    {
        static void Main(string[] args)
        {
            var res = "cat".Anagrams();

            foreach (var anagram in res)
                Console.WriteLine(anagram.MergeToStr());
        }

        static IEnumerable<IEnumerable<T>> Anagrams<T>(this IEnumerable<T> collection) where T: IComparable<T>
        {
            var total = collection.Count();

            // provided str "cat" get all subsets c, a, ca, at, etc (really nonefficient)
            var subsets = collection.Permutations()
                .SelectMany(c => Enumerable.Range(1, total).Select(i => c.Take(i)))
                .Distinct(new CollectionComparer<T>());

            return subsets;
        }

        public static IEnumerable<IEnumerable<T>> Permutations<T>(this IEnumerable<T> collection)
        {
            return collection.Count() > 1 
                ?
                    from ch in collection
                    let set = new[] { ch }
                    from permutation in collection.Except(set).Permutations()
                    select set.Union(permutation)
                :
                    new[] { collection };
        }

        public static string MergeToStr(this IEnumerable<char> chars)
        {
            return new string(chars.ToArray());
        }

    }// class

    // cause Distinct implementation is shit
    public class CollectionComparer<T> : IEqualityComparer<IEnumerable<T>> where T: IComparable<T>
    {
        Dictionary<IEnumerable<T>, int> dict = new Dictionary<IEnumerable<T>, int>();

        public bool Equals(IEnumerable<T> x, IEnumerable<T> y)
        {
            if (x.Count() != y.Count())
                return false;
            return x.Zip(y, (xi, yi) => xi.Equals(yi)).All(compareResult => compareResult);
        }

        public int GetHashCode(IEnumerable<T> obj)
        {
            var inDict = dict.Keys.FirstOrDefault(k => Equals(k, obj));
            if (inDict != null)
                return dict[inDict];
            else
            {
                int n = dict.Count;
                dict[obj] = n;
                return n;
            }
        }
    }// class
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在纯 C# 和 .Net 框架中编写字谜生成器 [关闭] 的相关文章

  • 我如何理解这个 C 类型声明?

    double bar int double double double double 在查看讲座幻灯片时 我发现了留给学生的练习 用简单的英语来说 什么是类型bar在这个 C 声明中 Please帮助我解决这个问题 我什至不知道从哪里开始
  • 何时使用 =default 使析构函数默认?

    尽管对构造函数使用 default 对我来说很清楚 即强制编译器在其他构造函数存在时创建默认构造函数 但我仍然无法理解这两种类型的析构函数之间的区别 那些使用 default 的 那些没有显式定义并由编译器自动生成的 我唯一想到的是 gro
  • FileStream 构造函数和默认缓冲区大小

    我们有一个使用 NET 4 用 C 编写的日志记录类 我想添加一个构造函数参数 该参数可以选择设置文件选项 WriteThrough http msdn microsoft com en us library system io fileo
  • 使用 Enumerable.OfType() 或 LINQ 查找特定类型的所有子控件

    Existed MyControl1 Controls OfType
  • 我如何在 C# .NET(win7 手机)中使用“DataContractJsonSerializer”读入“嵌套”Json 文件?

    我有一个问题 如果我的 json 文件看起来像这样 Numbers 45387 Words 空间桶 我可以很好地阅读它 但是如果它看起来像这样 Main Numbers 45387 Words 空间桶 某事 数字 12345 单词 克兰斯基
  • 类特定的新删除运算符是否必须声明为静态

    标准中是否要求类特定的 new new delete 和 delete 是静态的 我可以让它们成为非静态成员运算符吗 为什么需要它们是静态的 它们被隐式声明为静态 即使您没有键入 static
  • GCC 和 ld 找不到导出的符号...但它们在那里

    我有一个 C 库和一个 C 应用程序 尝试使用从该库导出的函数和类 该库构建良好 应用程序可以编译 但无法链接 我得到的错误遵循以下形式 app source file cpp text 0x2fdb 对 lib namespace Get
  • 找不到 assimp-vc140-mt.dll ASSIMP

    我已经从以下位置下载了 Assimp 项目http assimp sourceforge net main downloads html http assimp sourceforge net main downloads html Ass
  • 单例模式和 std::unique_ptr

    std unique ptr唯一地控制它指向的对象 因此不使用引用计数 单例确保利用引用计数只能创建一个对象 那么会std unique ptr与单例执行相同 单例确保只有一个实例属于一种类型 A unique ptr确保只有一个智能指针到
  • 从 WebBrowser 控件 C# 获取滚动值

    我试图在 WebBrowser 控件中获取网页的 Y 滚动索引 但无法访问内置滚动条的值 有任何想法吗 对于标准模式下的 IE 使用文档类型 正如你所说 scrollTop是的财产元素 而不是 HtmlDocument htmlDoc th
  • C++ php 和静态库

    我创建了一个library a 其中包含 cpp 和 h 文件 其中包含很多类 嵌套类和方法 我想在 php 示例中包含这个静态库并尝试使用它 我想提一下 我是 php 新手 我已经在 test cpp 文件中测试了我的 libray a
  • 给出 5 个参数,但在终端中只得到 3 个参数

    我想将一个文件传递给一个c 程序 如果我在 IDE 中执行此操作 test string string lt test txt return argc 5 但在终端上我刚刚得到argc 3 看来 这是因为 什么是 lt 意思是 我正在使用
  • 无法在内存位置找到异常源:cudaError_enum

    我正在尝试确定 Microsoft C 异常的来源 test fft exe 中 0x770ab9bc 处的第一次机会异常 Microsoft C 异常 内存位置 0x016cf234 处的 cudaError enum 我的构建环境是 I
  • 如何通过 JsonConvert.DeserializeObject 在动态 JSON 中使用 null 条件运算符

    我正在使用 Newtonsoft 反序列化已知的 JSON 对象并从中检索一些值 如果存在 关键在于对象结构可能会不断变化 因此我使用动态来遍历结构并检索值 由于对象结构不断变化 我使用 null 条件运算符来遍历 JSON 代码看起来像这
  • 如何分析组合的 python 和 c 代码

    我有一个由多个 python 脚本组成的应用程序 其中一些脚本正在调用 C 代码 该应用程序现在的运行速度比以前慢得多 因此我想对其进行分析以查看问题所在 是否有工具 软件包或只是一种分析此类应用程序的方法 有一个工具可以将 python
  • C# 中的 strstr() 等效项

    我有两个byte 我想找到第二个的第一次出现byte 在第一个byte 或其中的一个范围 我不想使用字符串来提高效率 翻译第一个byte to a string会效率低下 基本上我相信就是这样strstr 在 C 中做 最好的方法是什么 这
  • 我可以让 ungetc 取消阻止阻塞的 fgetc 调用吗?

    我想在收到 SIGUSR1 后使用 ungetc 将 A 字符重新填充到标准输入中 想象一下我有充分的理由这样做 调用 foo 时 stdin 中的阻塞读取不会被收到信号时的 ungetc 调用中断 虽然我没想到它会按原样工作 但我想知道是
  • IEnumerable.Except 不起作用,那么我该怎么办?

    我有一个 linq to sql 数据库 非常简单 我们有 3 个表 项目和用户 有一个名为 User Projects 的连接表将它们连接在一起 我已经有了一个获得的工作方法IEnumberable
  • 了解使用 Windows 本机 WPF 客户端进行 ADFS 登录

    我已经阅读了大量有关 ADFS 与 NodeJS Angular 或其他前端 Web 框架集成以及一般流程如何工作的文献 并通过 Auth0 Angular 起始代码构建了概念证明 但我不明白如何这可以与本机 WPF Windows 应用程
  • 从 JavaScript 中的 OnClientClick 事件中阻止 C# 中的 asp:Button OnClick 事件?

    我有一个asp Button在我的网页上 它调用 JavaScript 函数和代码隐藏方法 后者进行调用以导航到另一个页面 在 JavaScript 函数中 我正在检查条件 如果不满足这个条件 我想中止导航 以便OnClick方法未被调用

随机推荐

  • 如何将多个中间件功能封装成一个?

    我有许多类似于以下的中间件功能 function validate req res next req validationError new Error invalid function checkValid req res next if
  • 配置 Tomcat 以利用浏览器缓存?

    我运行谷歌的页面速度在我们的网络应用程序上分析和优化您的网站 下面的众多项目之一网络性能最佳实践如页面速度中列出的那样 为了在所有浏览器中充分利用缓存的一致优势 我们建议您将 Web 服务器配置为显式设置缓存标头并将其应用于所有可缓存静态资
  • PHP JSON 响应包含 HTML 标头

    我遇到了一个奇怪的问题 我正在尝试编写一个 PHP 页面 该页面将一些 JSON 返回到 Jquery AJAX 调用 问题是 尽管将内容类型设置为 application json 但响应似乎始终包含 HTML 标头 这是 PHP 代码
  • X f() 是什么意思?

    我看到这段代码 但不明白它的意思 我知道我们如何使用默认构造函数 但这不是默认构造函数 这是什么 class X int main X f 它声明了一个函数f它不带任何参数并返回一个类型X 这也称为最令人烦恼的解析在C 中 它是 C 标准定
  • Android - Activity 与 FragmentActivity? [复制]

    这个问题在这里已经有答案了 我是安卓新手 我想构建一个具有选项卡格式的应用程序 我找到了很多文档Activity已经用过 也在很多情况下使用过FragmentActivity 我不确定哪个会更好开始 请建议我应该使用Activity or
  • 如何修复“必须为自定义运行时设置 --custom_entrypoint 标志”?

    当我运行时 我在 appengine 上收到此错误gcloud preview app run app yaml The custom entrypoint flag must be set for custom runtimes My a
  • Jupyter 命令仅适用于破折号(例如 jupyter-kernelspec 而不是 jupyter kernelspec)

    我将 Jupyter 与 Anaconda3 一起使用 My Anaconda3 and Anaconda3 Scripts 文件夹已添加到 PATH 多变的 尽管jupyter exe在里面Scripts上面的文件夹中 Jupyter 相
  • 是否可以将结构变量作为函数参数传递而不预先定义它?

    我有两个这样定义的结构 在color h typedef struct rgb uint8 t r g b rgb typedef struct hsv float h s v hsv hsv rgb2hsv rgb color rgb h
  • jQuery 屏蔽输入插件。当文本框获得焦点时选择所有内容

    这是这个问题的后续问题 当文本框获得焦点时选择文本框的所有内容 Javascript 或 jQuery 基本上我将文本框与jQuery 屏蔽输入插件 编辑 链接可能不再指向相关版本 当屏蔽的输入文本框接收焦点时 我想选择该文本框的所有内容
  • 如何以编程方式禁用 Windows 10 平板电脑屏幕的边缘滑动手势?

    尝试以编程方式和手动方式在immersiveShell的EdgeUI下将DisableCharmsHint和DisableTLcorner的注册表修改为1 以禁用触摸屏滑动边缘 重新启动后没有任何反应 只是想禁用从边缘滑动以防止用户访问其他
  • 检测 Windows 关闭或应用程序是否尝试从系统菜单关闭 (WM_CLOSE)

    我正在使用托盘应用程序 Onj FormCloseQuery 我检查程序是否应该转到托盘 而不是关闭它 而是将其放入托盘中 CanClose False 但是 如果 Windows 由于 Windows 关闭而尝试关闭我的应用程序 我不想将
  • HTML - 选择文件名后显示图像[重复]

    这个问题在这里已经有答案了 我有一个表格可以让我
  • 神秘的借用范围扩展

    为什么编译器拒绝这段代码 struct S lt a gt i i32 r a i32 fn main let mut s S i 0 r 0 let m1 mut s m1 r m1 i let m2 mut s 错误是 无法借用s一次多
  • 序列化期间没有有效的构造函数

    在将扩展加载到程序中时 我遇到了一个主要问题 我收到一个异常 因为没有有效的构造函数 问题出在这一行 ekstensja ArrayList
  • 如何读取文件并将其写入我的缓存?

    我想为我的应用程序保存一些缓存数据 我曾经通过将数据保存在外部存储中来做到这一点 效果很好 但我希望我的设备在应用程序设置中显示我的缓存大小 但它没有 我想这是因为我将数据保存在外部存储中 我想要的是关闭应用程序甚至关闭设备后我的数据仍然存
  • 为什么`nil`的类型不是`id`而是`void *`

    在这段代码中 id block void void return nil 我有这个错误 使用 void void 类型的表达式初始化 id strong void 时不兼容的块指针类型 所以我必须明确地投射nil to id type id
  • 数组中 K 个元素的总和等于 N

    给定一个数组 假设 nums 1 2 5 3 6 1 2 10 11 12 使用最大元素数 假设 maxNums 3 找到总和 假设总和 10 K 的元素 所以如果要使用的 maxNums 3 查找总和 10 答案是 1 3 6 1 1 1
  • 如何在顶层使用 async/await?

    我已经过去了async await在阅读了几篇文章后 我决定自己测试一下 然而 我似乎无法理解为什么这不起作用 async function main var value await Promise resolve Hey there co
  • Rails 3 根据操作验证规则

    这似乎是一个简单的问题 但除了编写自定义验证器之外 我似乎找不到答案 我有这个验证器 validates password presence gt true confirmation gt true length gt minimum gt
  • 如何在纯 C# 和 .Net 框架中编写字谜生成器 [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我想生成给定字符串的字谜输出 而不需要任何外部库 例如 Google 字谜算法助手 的帮