标签: puzzle

C#潜在面试问题......太难了?

如果不运行此代码,请确定Foo将调用哪个方法:

class A
{
   public void Foo( int n )
   {
      Console.WriteLine( "A::Foo" );
   }
}

class B : A
{
   /* note that A::Foo and B::Foo are not related at all */
   public void Foo( double n )
   {
      Console.WriteLine( "B::Foo" );
   }
}

static void Main( string[] args )
{
   B b = new B();
   /* which Foo is chosen? */
   b.Foo( 5 );
}
Run Code Online (Sandbox Code Playgroud)

哪种方法?为什么?运行代码不会作弊.

我在网上发现了这个难题; 我喜欢它,我想我会把它用作面试问题......意见?

编辑:我不会判断候选人是否错了,我会用它作为一种方式来开展关于C#和CLR本身的更全面的讨论,这样我就可以很好地理解候选人的能力.

资料来源: http ://netpl.blogspot.com/2008/06/c-puzzle-no8-beginner.html

.net c# puzzle

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

什么是解决8拼图问题的有效方法?

8拼图是一个有9个位置的方板,由8个编号的瓷砖和一个间隙填充.在任何时候,与间隙相邻的瓦片可以移动到间隙中,从而产生新的间隙位置.换句话说,间隙可以与相邻(水平和垂直)瓦片交换.游戏中的目标是从任意配置的瓷砖开始,然后移动它们以便按升序排列编号的瓷砖,或者在电路板的周边运行,或者从左到右排序,左上角为1 - 手的位置.

8个谜题

我想知道什么方法可以有效地解决这个问题?

puzzle algorithm logic a-star sliding-tile-puzzle

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

C拼图:printf的输出应始终为"5"

我在C aptitude论文中发现了这个难题.

void change()
{
    //write something in this function so that output of printf in main function
    //should always give 5.you can't change the main function
}

int main()
{
    int i = 5;
    change();
    i = 10;
    printf("%d", i);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

任何解决方案.?

c puzzle

18
推荐指数
9
解决办法
3087
查看次数

SQL:如何跨所有行获取列中的所有不同字符

在SQL Server中是否有一种优雅的方法可以在所有行中查找单个varchar(50)列中的所有不同字符?

如果可以在没有游标的情况下完成奖励积分:)

例如,假设我的数据包含3行:

productname
-----------
product1
widget2
nicknack3
Run Code Online (Sandbox Code Playgroud)

不同的字符库存将是"productwigenka123"

sql sql-server string puzzle

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

在Python中解决难题

我有一个谜题,我想用Python解决它.

难题:

一个商人的重量为40公斤,他在他的店里使用.有一次,它从他的手上掉下来,分成4块.但令人惊讶的是,现在他可以通过这4件的组合称重1公斤到40公斤之间的任何重量.

所以问题是,这4件的重量是多少?

现在我想用Python解决这个问题.

我从拼图中得到的唯一约束是4个总和是40.我可以过滤掉总和为40的所有4个值的集合.

import itertools as it

weight = 40
full = range(1,41)
comb = [x for x in it.combinations(full,4) if sum(x)==40]
Run Code Online (Sandbox Code Playgroud)

length of comb = 297

现在我需要检查每组值comb并尝试所有操作组合.

例如,如果(a,b,c,d)是第一组值comb,我需要检查a,b,c,d,a+b,a-b, .................a+b+c-d,a-b+c+d........,依此类推.

我尝试了很多,但我陷入了这个阶段,即如何检查所有这些计算组合到每组4个值.

题 :

1)我想我需要列出所有可能的组合[a,b,c,d] and [+,-].

2)有没有人有更好的想法,告诉我如何从这里前进?

另外,我想完全没有任何外部库的帮助,只需要使用python的标准库.

编辑:对不起,迟到的信息.答案是(1,3,9,27),这是我几年前发现的.我检查并验证了答案.

编辑:目前,fraxel答案是完美的time = 0.16 ms.总是欢迎更好,更快的方法.

问候

方舟

python puzzle combinations permutation python-itertools

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

为什么我的简单比较器坏了?

我有一个课程,我简化了这个:

final class Thing {
    private final int value;
    public Thing(int value) {
        this.value = value;
    }
    public int getValue() {
        return value;
    }
    @Override public String toString() {
        return Integer.toString(value);
    }
}
Run Code Online (Sandbox Code Playgroud)

我想对这个东西的数组进行排序.所以我创建了一个简单的copmarator:

private static final Comparator<Thing> reverse = new Comparator<Thing>() {
    public int compare(Thing a, Thing b) {
        return a.getValue() - b.getValue();
    }
};
Run Code Online (Sandbox Code Playgroud)

然后我使用两个参数形式Arrays.sort.

这适用于我的测试用例,但有时它会以一个奇怪但可重复的顺序结束.怎么会这样?

java sorting puzzle

17
推荐指数
4
解决办法
1967
查看次数

"图案填充瓷砖"拼图

在为基于图块的游戏编程随机级别生成器时,我遇到了一个有趣的问题.我为它实现了一个强力求解器,但它指数速度慢,绝对不适合我的用例.我不一定在寻找一个完美的解决方案,我会对一个表现良好的"足够好"的解决方案感到满意.

问题陈述:

假设您有以下可用的全部或部分可用(这是映射到右,上,左和下方向的所有可能的4位模式的组合):

alt text http://img189.imageshack.us/img189/3713/basetileset.png

您将获得一个网格,其中一些单元格被标记(true)而另一些单元格未被标记(false).例如,这可以通过perlin噪声算法生成.目标是用瓷砖填充这个空间,以便有尽可能多的复杂瓷砖.理想情况下,应连接所有瓷砖.某些输入值可能没有解决方案(可用的tile + pattern).如果左上角,未连接的图块可用(即,所有图案单元格可以用该图块填充),则始终存在至少一个解决方案.

例:

图像从左到右:图块可用性(可以使用绿色图块,红色图案不可用),图案填充和解决方案

alt text http://img806.imageshack.us/img806/2391/sampletileset.png + alt text http://img841.imageshack.us/img841/7/samplepattern.png = alt text http://img690.imageshack.我们/ img690/2585/samplesolution.png

我尝试了什么:

我的蛮力实施尝试了所有可能的区域,并跟踪找到的解决方案.最后,它选择最大化从每个图块传出的连接总数的解决方案.对于图案中的图块数量,所花费的时间是指数的.12个图块的图案需要几秒钟才能解决.

笔记:

正如我所说,表现比完美更重要.但是,必须正确连接最终解决方案(没有指向不指向原始图块的图块的图块).为了了解范围,我想在大约2秒内处理100个图块的模式.

puzzle algorithm complexity-theory

17
推荐指数
2
解决办法
2201
查看次数

修改给定的数字以找到所需的总和?

我的一个朋友给我发了这个问题.我还没有真正想出任何算法来解决这个问题.

你有一个号码.说123456789和两个运营商* and +.现在没有改变提供的序列号.并根据需要多次使用这些运算符,评估给定值:

例如:给定值2097
解决方案:1+2+345*6+7+8+9

关于如何解决这些问题的任何想法?

c puzzle algorithm math sum

17
推荐指数
2
解决办法
895
查看次数

当任何一个变量可以是通配符时,检查3个变量是否相等的优雅方法是什么?

假设我有3个char变量a,bc.
每一个都可以'0',这是一个特例,意味着它匹配每个字符.

所以,如果是'0',我只需要检查是否b == c.
我想检查是否a == b == c,但发现C#中的实现变得混乱和冗长.

您可以提供任何创意或漂亮的解决方案吗?

更新

对于绩效驱动,采取Erik A. Brandstadmoen的方法.为简单起见,使用M4N的apprach,我也做了一些修改:!(query.Any() && query.Distinct().Skip(1).Any())

c# puzzle equality

17
推荐指数
3
解决办法
6773
查看次数

与宏同名的函数

#include<stdio.h>
void f(int a)
{
printf("%d", a);
}
#define f(a) {}

int main()
{
 /* call f : function */
}
Run Code Online (Sandbox Code Playgroud)

怎么叫f(功能)?写作f(3)不起作用,因为它被替换为{}

c c++ puzzle

16
推荐指数
2
解决办法
2125
查看次数