问题列表 - 第29666页

map与mapM行为

我正在使用Real World Haskell的I/O章节.Monads在本书中未讨论另外7章.也就是说,我对I/O的理解充其量是不完整的.

现在我正在尝试理解mapM功能.据我所知,函数"执行"列表中的每个元素必须是"动作"(IO monad).

没有意义的是这个例子.为什么mapM返回的结果与映射相同的参数不同?

Prelude> map (\x -> [x]) [0, 1, 2]
[[0],[1],[2]]
Prelude> mapM (\x -> [x]) [0, 1, 2]
[[0,1,2]]

monads haskell map

31
推荐指数
2
解决办法
9454
查看次数

为什么我的计时器停止滴答?

我正在创建一个绘图应用程序,当它获得WM_SCROLL或WM_MOUSEMOVE时呈现OpenGL.事情是有很多鼠标移动,我只需要它每秒渲染最多60帧.所以我在我的引擎类中创建了一个名为CanRender的bool.所以在我的render()proc我做:if(!CanRender){return; } CanRender = false;

基本上它可以防止它渲染超过60 FPS.

我在WM_CREATE中创建了计时器.

当我得到WM_TIMER时,我将CanRender设置为true.

我发出嘟嘟声,所以我知道计时器正在运行.一旦我开始滚动或移动鼠标,哔哔声停止,我不再看到渲染.为什么要停止我的计时器?此外,当我最小化计时器再次启动然后重新启动时,它再次停止.

谢谢

消息泵:

// Main message loop:
while (GetMessage(&msg, NULL, 0, 0))
{
    if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

}

return (int) msg.wParam;
Run Code Online (Sandbox Code Playgroud)

创建:

case WM_CREATE:
    //Set Window Title
    SetWindowText(hWnd,engineGL.current.caption.c_str());

    SetTimer(hWnd,             // handle to main window 
        120,                    // timer identifier 
        17,                     // 60 fps interval 
        (TIMERPROC) NULL);     // no timer callback 
Run Code Online (Sandbox Code Playgroud)

c c++ winapi

5
推荐指数
1
解决办法
307
查看次数

确定适当除数的算法

我有兴趣找到表示其正确除数的总和等于数字的属性的数字.第一个例子是6,其中适当的除数是1 + 2 + 3 = 6.

我在R中编写了以下代码,但我觉得它非常低效并且可以显着改进.

propDivisor <- function(
    max
)
{
    n<-{}
    for(j in 2:max){
        m<-{}
        for(i in 1:(j/2+1)){
            if(j%%i==0){m<-c(m,i)}
        }   
        if(sum(m)==j){n<-c(n,j)}
    }
return(cat("The proper divisors between 1 and", max, "are", n, ".", sep=" ")    )
}
Run Code Online (Sandbox Code Playgroud)

有没有人有任何改进以下代码的建议?我觉得应该在这里使用其中一个apply函数.也许这对未来来说是一个不错的代码高尔夫练习?

而且我知道这在某种程度上经常出现,这不是一个家庭作业问题,只是同事今天早些时候作为一个有趣的编码挑战者提出的问题.

更新:

感谢大家对于寻找更多信息的地方的意见和想法.这是利用sapply的另一个解决方案:

D <- function(n) sum((1:(n-1))[n%%1:(n-1)==0])==n
(2:9000)[sapply(2:9000,D)]
Run Code Online (Sandbox Code Playgroud)

refactoring r apply

5
推荐指数
1
解决办法
4837
查看次数

有没有比这更好的方法从PrintDocument获取页数?

这是我提出的最好的:

public static int GetPageCount( PrintDocument printDocument )
{
    printDocument.PrinterSettings.PrintFileName = Path.GetTempFileName();
    printDocument.PrinterSettings.PrintToFile = true;

    int count = 0;

    printDocument.PrintController = new StandardPrintController();
    printDocument.PrintPage += (sender, e) => count++;

    printDocument.Print();

    File.Delete( printDocument.PrinterSettings.PrintFileName );

    return count;
}
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?(这实际上很慢)

c# printing printdocument

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

如何以编程方式修改本地组策略设置

我正在寻找一种方法来以编程方式更改组策略设置的值,而无需重新启动计算机或在其上安装任何其他组件

寻找Windows 2003,2008的解决方案,机器是域的一部分

该值位于管理模板\网络\ QoS数据包计划程序,限制未完成的数据包

尝试以下方法:

  • 直接更改注册表 - 这不起作用,因为该值实际存储在registry.pol文件中并从那里传播到注册表

  • 使用的WMI - 表示注册表的WMI对象是只读的,不会修改值

这似乎工作的一个选择是修改下C Registry.pol文件:\ WINDOWS\SYSTEM32\GroupPolicy中\机,不过这似乎有问题,我将不得不手工解析该文件.

group-policy

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

如何在活动之间传递socket,inputstream,outputstream对象

如何在活动之间传递socket,inputstream,outputstream对象

android

5
推荐指数
1
解决办法
5694
查看次数

没有UNION的库存SQL查询?

我正在设计一个库存系统,它有用户,产品,buy_leads,订单(授权buy_leads),输入输出.

class Product < ActiveRecord::Base
  has_many :buy_leads
end

class BuyLead < ActiveRecord::Base
  belongs_to :product
  has_one :order
end

class Order < ActiveRecord::Base
  belongs_to :buy_lead
  belongs_to :user, :foreign_key => :authorized_by
  has_many :inputs
end

class Input < ActiveRecord::Base
  belongs_to :order
  has_many :outputs
end

class Output < ActiveRecord::Base
  # Associations
  belongs_to :input
  belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)

输入和输出具有数量值.为了获得产品的库存,以及特定产品的库存我在两个原始SQL查询使用UNION,通过使输出量负,然后组,总结他们一起:

class InventoryController < ApplicationController

  def index …
Run Code Online (Sandbox Code Playgroud)

sql sqlite activerecord ruby-on-rails

6
推荐指数
1
解决办法
893
查看次数

是否可以不在类头文件中包含类变量?

我想隐藏实现文件中的实现.如果对象不是公共的,我不希望对象的标题在我的类被使用的任何地方泄漏.

假设A.h我的课程有头文件A:

#include "Foo.h"

class A{
    private:
        Foo foo;
    public:
        do_stuff();
};
Run Code Online (Sandbox Code Playgroud)

现在无论我在哪里A.h,Foo.h也包括在内.但是我没有在课外的Foo任何地方上课A.我宁愿没有这#include "Foo.h"条线.有没有办法在实现中移动'foo'变量的声明A.cpp

我怀疑一个可能的解决方案是添加一层抽象类(接口类比).这是最好的解决方案吗?

谢谢.

c++

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

将分隔的字符串推入List <int>

如果我有以下字符串:

"123; 3344; 4334; 12"

我想在一个通用的这些数字List<int>,我想我不知道这里除了在循环分裂,做一个转换,然后添加到一个很好的方式List<int>,通过每一次迭代.有没有其他方法可以解决这个问题?

更新.这就是我想出来的.我想这样做旧时尚的方式,而不是使用LINQ,因为我试图让只用字符串,数组列表和操纵和一般转换更好.

public List<int> StringToList(string stringToSplit, char splitDelimiter)
{
    List<int> list = new List<int>();

    if (string.IsNullOrEmpty(stringToSplit))
        return list;

    string[] values = stringToSplit.Split(splitDelimiter);

    if (values.Length <= 1)
        return list;

    foreach (string s in values)
    {
        int i;
        if (Int32.TryParse(s, out i))
            list.Add(i);
    }

    return list;
}
Run Code Online (Sandbox Code Playgroud)

这是我计划在每次需要将分隔的字符串列表转换为List时使用的新字符串实用程序方法

如果出现问题,我会将一个空列表返回给调用者.好坏?这样做很常见吗?

是的,有更多的"优雅"的方式与LINQ这样做,但我想这样做manually..the老办法,现在只是我自己的理解.

另外,困扰我的是:

list.AddRange(str.Split(';').Select(Int32.Parse));
Run Code Online (Sandbox Code Playgroud)

是我不知道的:

  1. 如何在那里推送TryParse.
  2. 如果str.Split(';').Select(Int32.Parse)因为某种原因失败了怎么办......那么这个AddRange所处的方法会爆炸,除非我在整个事情中添加一个try/catch,如果我没有正确处理它,我就搞砸了.

c# string parsing

6
推荐指数
2
解决办法
5424
查看次数

如何解交织比特(UnMortonizing?)

从32位int解交织比特的最有效方法是什么?对于这种特殊情况,我只关注奇数位,尽管我确信将两个集合的任何解决方案概括为简单.

例如,我想转换0b010001010b1011.什么是最快的方式?

编辑:

在这个应用程序中,我可以保证偶数位都是零.我可以利用这个事实来提高速度或减少空间吗?

bit-manipulation z-order-curve

23
推荐指数
1
解决办法
3089
查看次数