小编sc_*_*ray的帖子

啄食鸽子的顺序?

我正在探讨Ericksson教授从我的母校发布的关于图论的问题,并且遇到了这个相当独特的问题,关于鸽子及其形成啄食命令的先天倾向.问题如下:

每当一群鸽子聚集在一起时,他们本能地建立一个啄食顺序.对于任何一羽鸽子,一只鸽子总是啄另一只鸽子,使它远离食物或潜在的配偶.无论其他鸽子在哪里,即使经过多年的分离,同一对鸽子也会选择相同的啄食顺序.令人惊讶的是,整体啄食顺序可能包含周期 - 例如,鸽子A啄B鸽,啄鸟鸽C,啄鸟鸽A.

证明任何有限的鸽子都可以从左到右排成一排,以便每只鸽子立即将鸽子啄到左侧.

由于这是关于图论的一个问题,我想到的第一件事就是要求拓扑关系的图形(关系是啄食顺序).让这更复杂的原因是鸽子之间可能存在循环关系.如果我们有一个循环依赖如下:

A-> B-> C->甲

其中A啄B,B啄C和C后退并啄A

如果我们以问题建议的方式表示它,我们有如下内容:CBA

但上面给出的行排序并不考虑C和A之间的啄食顺序.

我有另一个想法是通过数学归纳解决它,其中基本情况是根据它们的啄食顺序排列的两只鸽子,假设啄食顺序排列对n只鸽子有效,然后证明它对于n + 1只鸽子是真的.

我不确定我是否会走错路.关于如何分析这个问题的一些见解将会有所帮助.

谢谢

sorting algorithm graph

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

无法对测试运行进行排队:无法启动代理进程(Visual Studio 2010)

在尝试在我的解决方案中运行所有单元测试时(Visual Studio 2010),我得到了"无法排队测试运行xxxx @ MACHINENAME 2010-06-23 14:01:36":无法启动代理进程错误.有谁知道导致这个特定错误的原因以及如何解决它以便我可以运行我的单元测试?

谢谢

.net ide unit-testing mstest visual-studio-2010

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

大于lg N的最小整数

我正在读某个地方:

大于lg N的最小整数是以二进制表示N所需的位数,与大于lo​​g10 N的最小整数是以十进制表示N所需的位数相同.

Java语句

for (lgN = 0; N > 0; lgN++, N /= 2) ; 
Run Code Online (Sandbox Code Playgroud)

是计算大于lg N的最小整数的简单方法

我可能在这里遗漏了一些东西但是Java语句如何计算大于lg N的最小整数?

java algorithm math bit-manipulation

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

与Scala中的"提升"功能混淆

Scala中的函数式编程一书中,有一个"Lift"的例子,其中一个类型的函数A => B被提升为Option[A] => Option[B].

这就是电梯的实施方式:

def lift[A,B](f: A => B):Option[A] => Option[B] = _ map f
Run Code Online (Sandbox Code Playgroud)

我对此有几个困惑:

第一个是,这里的'_'是什么?其次,当我从def中删除返回类型时,期望类型推断能够发挥它的魔力,我得到以下异常:

scala> def lift[A,B](f: A => B) =  _ map f
<console>:7: error: missing parameter type for expanded function ((x$1) => x$1.map(f))
       def lift[A,B](f: A => B) =  _ map f
Run Code Online (Sandbox Code Playgroud)

有人能解释一下这里发生了什么吗?

谢谢

scala type-inference higher-order-functions lifting map-function

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

什么是IDataErrorInfo以及它如何与WPF一起使用?

在WPF中处理一些自定义验证器时,我的一位同事向我指出了IDataErrorInfo.我在XAML中有一个示例视图,它有一个文本框和一个按钮.根据文本框中的值,我希望按钮可以启用或禁用.我的同事建议在我的视图的presentor中扩展IDataErrorInfo并为'Item'和'Error'属性编写自定义逻辑将解决我的问题.在我将这个结合到我的代码中之前,我想我应该理解IDataError信息是如何工作的以及它是如何实现这个提供必要的钩子以触发自定义验证逻辑的接口的呢?对这个概念的一些帮助将非常有帮助!

.net validation wpf error-handling events

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

Hashset与IQueryable

最近我正在努力实现一个缓存我的结果的小片段,我这样做的方式是使用如下字典:

 private Dictionary<ID, IQueryable<Results>> _simpleCache;
Run Code Online (Sandbox Code Playgroud)

我们的想法是搜索具有"ID"指定的id的所有结果,如果Dictionary包含key == id,我们只需搜索IQueryable中存在的值,而不是进行数据库访问.

今天早上我正在讨论这个逻辑,我正在考虑用HashSet替换IQueryable,如下所示:

private Dictionary<ID, HashSet<Results>> _simpleCache;
Run Code Online (Sandbox Code Playgroud)

这个改变是否可取?

c# linq generics iqueryable data-structures

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

MPI收集/减少操作混乱?

boost教程中,有一些收集和减少操作的例子.收集代码如下:

#include <boost/mpi.hpp>
#include <iostream>
#include <vector>
#include <cstdlib>
namespace mpi = boost::mpi;

int main(int argc, char* argv[])
{
  mpi::environment env(argc, argv);
  mpi::communicator world;

  std::srand(time(0) + world.rank());
  int my_number = std::rand();
  if (world.rank() == 0) {
    std::vector<int> all_numbers;
    gather(world, my_number, all_numbers, 0);
    for (int proc = 0; proc < world.size(); ++proc)
      std::cout << "Process #" << proc << " thought of "
                << all_numbers[proc] << std::endl;
  } else {
    gather(world, my_number, 0);
  }

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

减少的例子如下:

#include …
Run Code Online (Sandbox Code Playgroud)

c++ boost mpi boost-mpi

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

折叠左一行的类型推断?

我试图按如下方式反转整数列表:

List(1,2,3,4).foldLeft(List[Int]()){(a,b) => b::a}
Run Code Online (Sandbox Code Playgroud)

我的问题是有没有指定种子一些办法List[_],其中_是Scala的类型推断机制,自动填充,而不必指定类型的类型List[Int]

谢谢

scala type-inference fold

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

项目Euler:问题1(可能的重构和运行时优化)

我听过很多关于Project Euler的消息,所以我想我解决了C#中的一个问题.网站上所述的问题如下:

如果我们列出10以下的所有自然数是3或5的倍数,我们得到3,5,6和9.这些倍数的总和是23.

求出1000以下3或5的所有倍数的总和.

我编写了如下代码:

  class EulerProblem1
    {
        public static void Main()
        {
            var totalNum = 1000;
            var counter = 1;
            var sum = 0;

            while (counter < totalNum)
            {
                if (DivisibleByThreeOrFive(counter))
                    sum += counter;

                counter++;
            }

            Console.WriteLine("Total Sum: {0}", sum);
            Console.ReadKey();
        }

        private static bool DivisibleByThreeOrFive(int counter)
        {
            return ((counter % 3 == 0) || (counter % 5 == 0));

        }
    } 
Run Code Online (Sandbox Code Playgroud)

能够以更少的冗长/更清晰的语法和更好的优化来获得关于替代实现的一些想法将会很棒.这些想法可能从快速和肮脏到带出大炮消灭蚊子.目的是探索计算机科学的深度,同时尝试改进这个特别琐碎的代码片段.

谢谢

c# algorithm optimization refactoring

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

Python拼图代码评论(剧透)

我一直在研究Python Challenge中提出的问题.其中一个问题是要筛选出一堆乱七八糟的角色并挑出最稀有的角色.

我的方法是从文本文件中读取字符,将字符/出现作为键/值对存储在字典中.按值对字典进行排序,并将出现为键的字典反转,字符串为值.假设最稀有的字符只出现一次,我返回这个反向字典的键等于1的值.

输入(funkymess.txt)是这样的:

%% $ @ $ ^ _#)^)&!_ +]!*@&^} @@ %% + $&[(_ @%+%$*^ @ $ ^!+]!&#)*} {}}!} ] $ [%} @ [{ @#_ ^ {*......

代码如下:

from operator import itemgetter
characterDict = dict()

#put the characters in a dictionary
def putEncounteredCharactersInDictionary(lineStr):
    for character in lineStr:
        if character in characterDict:
            characterDict[character] = characterDict[character]+1
        else:
            characterDict[character] = 1

#Sort the character dictionary
def sortCharacterDictionary(characterDict):
    sortCharDict = dict()
    sortsortedDictionaryItems = sorted(characterDict.iteritems(),key = itemgetter(1))
    for key, value …
Run Code Online (Sandbox Code Playgroud)

python algorithm

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