小编nam*_*los的帖子

实现像Wordle一样的文字云的算法

上下文

  • 看看Wordle:http://www.wordle.net/
  • 它比我见过的任何其他文字云生成器都要好看
  • 注意:源代码不可用 - 请阅读常见问题解答:http://www.wordle.net/faq#code

我的问题

  • 是否有可用于Wordle的算法?
  • 如果不是,有哪些替代产生类似的输出?

我为什么这么问

  • 只是好奇
  • 想学习

layout fonts typography tag-cloud wordle-game

198
推荐指数
9
解决办法
9万
查看次数

什么是找到重叠矩形区域的有效算法

我的情况

  • 输入:一组矩形
  • 每个rect由4个双打组成:(x0,y0,x1,y1)
  • 它们不是以任何角度"旋转",它们都是相对于屏幕"上/下"和"左/右"的"正常"矩形
  • 它们随机放置 - 它们可能在边缘接触,重叠或没有任何接触
  • 我将有几百个矩形
  • 这是在C#中实现的

我需要找到

  • 由它们重叠形成的区域 - 画布中多个矩形"覆盖"的所有区域(例如,具有两个矩形,它将是交叉点)
  • 我不需要重叠的几何形状 - 只需要区域(例如:4平方英寸)
  • 重叠不应该被计算多次 - 例如,想象3个具有相同大小和位置的rects - 它们是相互重叠的 - 这个区域应该被计算一次(不是三次)

  • 下图包含三角形矩形:A,B,C
  • A和B重叠(如虚线所示)
  • B和C重叠(如虚线所示)
  • 我正在寻找的是显示破折号的区域

-

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA--------------BBB
AAAAAAAAAAAAAAAA--------------BBB
AAAAAAAAAAAAAAAA--------------BBB
AAAAAAAAAAAAAAAA--------------BBB
                BBBBBBBBBBBBBBBBB
                BBBBBBBBBBBBBBBBB
                BBBBBBBBBBBBBBBBB
                BBBBBB-----------CCCCCCCC
                BBBBBB-----------CCCCCCCC
                BBBBBB-----------CCCCCCCC
                      CCCCCCCCCCCCCCCCCCC
                      CCCCCCCCCCCCCCCCCCC
                      CCCCCCCCCCCCCCCCCCC
                      CCCCCCCCCCCCCCCCCCC
Run Code Online (Sandbox Code Playgroud)

algorithm optimization performance geometry

46
推荐指数
5
解决办法
6万
查看次数

C# - 捕获鼠标光标图像

背景

我的问题

  • 当鼠标光标是普通指针或手形图标时,代码工作正常 - 鼠标在屏幕截图上正确呈现
  • 但是,当鼠标光标变为插入点("I-beam"光标)时 - 例如键入NOTEPAD - 然后代码不起作用 - 结果是我得到了一个模糊的光标图像 - 就像一个非常半透明(灰色)的版本,而不是空白和白色的预期.

我的问题

  • 当图像是这些"I-beam"类型图像之一时,如何捕获鼠标光标图像
  • 注意:如果您点击原始文章,有人提出建议 - 它不起作用

资源

这是来自原始文章.

    static Bitmap CaptureCursor(ref int x, ref int y)
    {
        Bitmap bmp;
        IntPtr hicon;
        Win32Stuff.CURSORINFO ci = new Win32Stuff.CURSORINFO();
        Win32Stuff.ICONINFO icInfo;
        ci.cbSize = Marshal.SizeOf(ci);
        if (Win32Stuff.GetCursorInfo(out ci))
        {
            if (ci.flags == Win32Stuff.CURSOR_SHOWING)
            {
                hicon = Win32Stuff.CopyIcon(ci.hCursor);
                if (Win32Stuff.GetIconInfo(hicon, out icInfo))
                {
                    x = ci.ptScreenPos.x - ((int)icInfo.xHotspot);
                    y = ci.ptScreenPos.y - ((int)icInfo.yHotspot);

                    Icon …
Run Code Online (Sandbox Code Playgroud)

c# mouse icons screenshot cursor

30
推荐指数
2
解决办法
2万
查看次数

从剪贴板(从Excel粘贴)获取包含重音字符的CSV数据

情景

  • 我的用户将从Excel复制单元格(从而将其放入剪贴板)
  • 我的应用程序将从剪贴板中检索这些单元格

问题

  • 我的代码从剪贴板中检索CSV格式
  • 但是,如果原始Excel内容包含ä(a with umlaut)等字符,则检索到的CSV字符串不具有正确的字符(ä最终显示为"方形"对我而言)
  • 相比之下,如果我的代码从剪贴板中检索Unicode文本格式,一切正常:ä保留在从剪贴板检索的字符串中

源代码 - 原始 - 与问题

[STAThread]
static void Main(string[] args)
{
    var fmt_csv = System.Windows.Forms.DataFormats.CommaSeparatedValue;

    // read the CSV
    var dataobject = System.Windows.Forms.Clipboard.GetDataObject();
    var stream = (System.IO.Stream)dataobject.GetData(fmt_csv);
    var enc = new System.Text.UTF8Encoding();
    var reader = new System.IO.StreamReader(stream,enc);
    string data_csv = reader.ReadToEnd();

    // read the unicode string
    string data_string = System.Windows.Forms.Clipboard.GetText();



}
Run Code Online (Sandbox Code Playgroud)

运行示例代码时的结果

  • Repro步骤:在Excel中输入一些文本(我使用"doppelgänger"加上一些数字),只需按Ctrl-C将其复制到剪贴板,然后运行上面的代码.
  • data_csv设置为"doppelg nger,1\r \n \n3,3\r \n\0"
  • data_string设置为"doppelgänger\ t1\r \n2\t3\r \n"

  • 我该怎么做才能得到正确的字符?

评论

  • 是的,我知道我可以通过使用Unicode文本解决此问题.但我实际上想了解CSV的情况
  • 在检索流时使用或不使用UTF-8编码对结果没有影响

答案

在查看评论并密切关注Excel在剪贴板上放置CSV之后,Excel可能会使用"遗留"编码而不是UTF-8来放置内容.所以我尝试使用Windows 1252代码页作为编码,它工作.请参阅下面的代码

来源代码 …

c# csv excel clipboard diacritics

30
推荐指数
2
解决办法
1万
查看次数

如何使用C#将CSV数据粘贴到Windows剪贴板

我正在努力实现的目标

  • 我的应用程序生成一些表格数据
  • 我希望用户能够启动Excel并单击"粘贴"以将数据作为单元格放在Excel中
  • Windows接受一种名为"CommaSeparatedValue"的格式,该格式与其API一起使用,因此这似乎是可行的
  • 将原始文本放在剪贴板上可以正常工作,但尝试使用此格式则不行
  • 注意:我可以从剪贴板中正确检索CSV数据,我的问题是将CSV数据粘贴到剪贴板.

我试过的是没有用的

Clipboard.SetText()

System.Windows.Forms.Clipboard.SetText(  
  "1,2,3,4\n5,6,7,8", 
  System.Windows.Forms.TextDataFormat.CommaSeparatedValue
  );
Run Code Online (Sandbox Code Playgroud)

Clipboard.SetData()

System.Windows.Forms.Clipboard.SetData(
  System.Windows.Forms.DataFormats.CommaSeparatedValue,
  "1,2,3,4\n5,6,7,8", 
  );
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,都会在剪贴板上放置一些内容,但是当粘贴到Excel中时,它会显示为一个加载文本的单元格:" - §žý; pC |yVk²û"

更新1:使用SetText()的变通方法

正如BFree的答案所示,SetTextTextDataFormat一起作为一种解决方法

System.Windows.Forms.Clipboard.SetText(  
  "1\t2\t3\t4\n5\t6\t7\t8", 
  System.Windows.Forms.TextDataFormat.Text
  );
Run Code Online (Sandbox Code Playgroud)

我已经尝试了这一点,并确认现在粘贴到Excel和Word正常工作.在每种情况下,它都会粘贴为带有单元格而不是纯文本的表格.

仍然好奇,为什么CommaSeparatedValue是工作的.

c# windows csv clipboard paste

28
推荐指数
2
解决办法
2万
查看次数

互斥的powershell参数

情景

  • 我正在使用Visual Studio 2008和.NET 3.5为Powershell 2.0编写cmdlet
  • cmdlet需要3个参数.

我想要的cmdlet语法是这样的:

cmdletname [foo|bar] p1, p2
Run Code Online (Sandbox Code Playgroud)
  • 这是因为用户必须为"-foo"或"-bar"赋予值,但不能将两者放在一起.

有效输入的例子

cmdletname -foo xxx -p1 hello  -p2 world
cmdletname -bar yyy -p1 hello  -p2 world
Run Code Online (Sandbox Code Playgroud)

无效输入的示例

cmdletname -foo xxx -bar yyy -p1 hello  -p2 world
Run Code Online (Sandbox Code Playgroud)

我的问题

  • 我的问题是如何在powershell中执行此操作,以便它为我完成所有检查 - 或者如果可能的话.
  • 我知道我可以使用foo和bar只有两个可选参数,只需手动进行错误检查.这就是我目前实施的方式.
  • 或者,我对不同方法的建议感兴趣.

parameters powershell optional-parameters

24
推荐指数
3
解决办法
1万
查看次数

在WinForms应用程序中嵌入IronPython并中断执行

背景

我的问题

  • 用户需要中断其代码的执行
  • 换句话说,当从cmdline运行Python或IronPython时,他们需要点击CTRL-C以暂停执行的能力
  • 我想在winform中添加一个按钮,当按下时会暂停执行,但我不知道该怎么做.

我的问题

  • 如何按下"停止"按钮实际上会停止使用输入的IronPython代码的执行?

笔记

  • 注意:我不想简单地丢弃"会话" - 我仍然希望用户能够与会话进行交互并访问在暂停之前可用的任何结果.
  • 我假设我需要在一个单独的线程中执行此操作,正确执行此操作的任何指导或示例代码将不胜感激.

ironpython python-embedding

10
推荐指数
1
解决办法
1590
查看次数

如何从C#以编程方式调用CmdLet时捕获Powershell CmdLet的详细输出

背景

  • 我在Windows 7上使用Powershell 2.0.
  • 我在Powershell模块中编写了一个cmdlet("模块"是Powershell 2.0的新增功能).
  • 为了测试cmdlet,我在Visual Studio 2008中编写单元测试,以编程方式调用cmdlet.

参考

来源代码

  • 这是我实际代码的简化版本 - 我尽可能小,以便您可以清楚地看到问题:

    using System;
    using System.Management.Automation;   
    
    namespace DemoCmdLet1
    {
        class Program
        {
            static void Main(string[] args)
            {
                var cmd = new GetColorsCommand();
    
                    foreach ( var i in cmd.Invoke<string>())
                    {
                       Console.WriteLine("- " + i );   
                    } 
               } 
           } 
    
        [Cmdlet("Get", "Colors")]
        public class GetColorsCommand : Cmdlet
        {
            protected override void ProcessRecord()
            {
                this.WriteObject("Hello");
                this.WriteVerbose("World");
            }
    
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

评论

  • 我了解如何从Powershell命令行启用和捕获详细输出; 那不是问题.
  • 在这种情况下,我以编程方式从C#调用cmdlet.
  • 我找到的任何内容都没有解决我的具体情况.一些文章建议我应该实现我自己的PSHost,但似乎很昂贵,而且似乎必须将cmdlet称为文本,我想避免,因为它不是那么强类型.

更新于2009-07-20

以下是基于以下答案的源代码.

有些事情对我来说仍然不清楚:*如何调用"Get-Colors"cmdlet(理想情况下无需将其作为字符串传递给ps对象)*如何获取详细输出,因为它生成而不是获取最后收集它们.

    using …
Run Code Online (Sandbox Code Playgroud)

c# powershell cmdlet powershell-2.0

9
推荐指数
1
解决办法
1万
查看次数

Linq:如何按最大项目数进行分组

CONTEXT

  • 我有一个项目列表(或任意长度).我想把它们分成一定大小的'块'
  • 示例:我有12个客户[0,1,2,3,4,5,6,7,8,9,10,11],并希望将5个组块分组,这将给出[0,1,2,3] ,4] [5,6,7,8,9] [10,11]
  • 注意:实际上我不与客户合作或单调增加整数.我选择它只是为了简化提问

我的问题

如何制定执行此分组的简单LINQ查询(使用查询语法)?

背景

  • 我已经熟悉如何使用LINQ语法按值进行分组(按客户ID分组销售),但是我不知道如何使用LINQ干净利落地优雅地表达"分块".我不确定它是否可能以直截了当的方式进行.
  • 我可以并且已经在普通的C#中实现了一个解决方案而不使用LINQ语法.因此,我的问题不是在这个问题上被阻止,而是我正在寻找方法在LINQ中表达它(再次干净和优雅)

c# linq grouping

8
推荐指数
1
解决办法
2857
查看次数

对于是和否值的枚举来说,什么是好名字

背景

在我正在编写的C#命令行应用程序中,有几个参数的"是"和"否"是可能的值.

我使用下面显示的Enum类型存储他们的输入.

enum YesNo
{
     Yes,
     No
}
Run Code Online (Sandbox Code Playgroud)

哪个好 - 代码有效.没问题.

注意:是的,我可以将它们存储为bool(这是它以前的工作方式).我的设计选择是明确用户做出的是/否选择,因为他们会在其他情况下看到这个选项,我希望它更明显的选择是什么.

我的问题

  • 有一个名为"YesNo"的枚举似乎很奇怪 - 对于"是"和"否"值的枚举更好的名称有什么建议.

最后

我在StackOverflow的生命中相对较早地问过这个问题.这不是假问题 - 我确实遇到过这种情况.我只是觉得用它看看社区会做什么会很好.因为它,我承认一个有点奇怪的问题.

首先,感谢所有花时间回复的人.我试图用一个深思熟虑的结论来回报这个问题.

评论答案

切换到布尔.我理解你的动机,但我觉得我需要指出一个二元选择(并且我的意思是任意两个值之间的选择 - 活着/死亡,已婚/未婚等)与布尔选择之间的选择不同真假.我们发现程序员在yes/no和true/false之间切换容易 - 足够公平.如果我在这种情况下的选择是例如"民主党人"或"复制""(我知道的人为例子)那么你可以看到混淆或至少尴尬的可能性.我认为bool选项在这种情况下是有效的,但是更少所以在其他二元选择中.

本地化 - 伟大的观点.在我的具体情况下,它并不重要 - 这不是也不会被本地化,但对于其他情况,这是需要考虑的事情.

三个以上的选项 - 事实上,后来我不得不添加第三个值来表示用户的有效(在我的应用程序中)条件,特别是没有做出选择.

有很多好评,谢谢大家!

c# naming coding-style naming-conventions

7
推荐指数
6
解决办法
6788
查看次数