Some Brain-Teaser in WinDev, Can you Solve them?

从Frankred的博客上看到他post的几个出现在WinDev上的Brain-teaser,感觉很有意思,似乎有做文字游戏的味道。在WinDev上回答正确这四题中的两题,可是有机会获得ViewSonic V37 Pocket PCs大奖。事实上,奖品最后落到了两个幸运儿身上。那么请你来看看,想一想假如当时你也在WinDev现场,是否有机会获得这件奖品?

brain-teaser #1:

以一行代码替换TBD(待定)注释,使程序显示"Win-Dev"字符串结果。要求:不能修改或增删已有代码;只能是一行代码替换TBD注释行;不能使用Console类。

class App {
            static void Main() {
                // TBD
            }
        }

        sealed class Internal {
            sealed class Private {
                static void PrintMessage( string s1, string s2 ) {
                    System.Console.WriteLine(s1 + "-" + s2);
                }
            }
        }

后三题都是写出运行结果。可以自己去运行一下,不过最好在运行之前,先分析一下是否能得出正确结果。

brain-teaser #2:

class C
        { 
        const string s = @" 
        class C 
        {{
        const string s = @{1}{0}{1};
        static void Main()
        {{
        System.Console.WriteLine(s,s,'\u0022');
        }}
        }}";
        static void Main()
        {
        System.Console.WriteLine(s,s,'\u0022');
        }
        }

:怎么样,有文字游戏的味道吧:-)

brain-teaser #3:

运行在Everett(?不知道是什么,也许是VS的一个版本?)下,结果是什么?
运行在WhidBey下,结果又是什么?

using System;
        using System.Runtime.InteropServices;
        public class Program
        {
            static void Main()
            {
                SomeType s;
                unsafe
                {
                    Console.WriteLine("{0} {1} {2} {3} {4}",
                        (byte*)&s.Field1 - (byte*)&s,
                        (byte*)&s.Field2 - (byte*)&s,
                        (byte*)&s.Field3 - (byte*)&s,
                        sizeof(SomeType),
                        Marshal.SizeOf(typeof(SomeType)));
                }
            }
        }

        struct SomeType
        {
            public char Field1;
            public int Field2;
            public char Field3;
        }

brain-teaser #4:

using System;
        using System.Threading;
        class Class1
        {
            static void Main()
            {
                Console.WriteLine("A");
                new Class2();
                GC.Collect();
                new Class1();
                GC.Collect();
                Console.WriteLine("B");
            }

            ~Class1()
            {
                Console.WriteLine("C");
                Class2.Are.Set();
                Console.WriteLine("D");
            }
        }

        class Class2
        {
            public static ManualResetEvent Are = new ManualResetEvent(false);
            ~Class2()
            {
                Console.WriteLine("E");
                Class2.Are.WaitOne();
                Console.WriteLine("F");
            }
        }

我想,brain-teaser #1的答案明天公布更好些吧。当然Frankred自然是公布了答案的,否则我是解不出正确答案的:-)

posted on 2004-10-31 20:45 张逸 阅读(989) 评论(5)  编辑 收藏 所属分类: .NET FrameWork

评论

#1楼  2004-11-01 03:47 寒枫天伤 [未注册用户]

#1:
是反射调用,并不难。
typeof(Internal).GetNestedType("Private",BindingFlags.NonPublic).GetMethod("PrintMessage",
BindingFlags.NonPublic | BindingFlags.Static).Invoke(null, new object[]{"Win","Dev!"});

#2:
眼睛看花了,结果的确有点出人意料。

#3:
(byte*)&s.Field1 - (byte*)&s,
看见这些东西,就已经晕倒了。

#4:
我分析出来的与运行后的结果严重不符........
做不出这玩意来......................................   回复  引用    

#2楼 [楼主] 2004-11-01 12:23 wayfarer      

只要想到反射,结果就应该没问题了。不过要记住这些方法和枚举,恐怕还是需要IDE才能写出啊:-)

第三题我也没看。第二题纯粹是文字游戏。第四题,呵呵,有点烦哦。
  回复  引用  查看    

#3楼  2004-11-01 14:04 Ninputer [未注册用户]

第三题还是比较见功夫的,不过.NET 1.1和2.0在这方面有什么不一样还真不知道。   回复  引用    

#4楼  2004-11-01 14:13 Ninputer [未注册用户]

第二题我觉得就是
class C
{
const string s = @"
class C
{{
const string s = @{1}{0}{1};
static void Main()
{{
System.Console.WriteLine(s,s,'\u0022');
}}
}}";
static void Main()
{
System.Console.WriteLine(s,s,'\u0022');
}
}

  回复  引用    

#5楼 [楼主] 2004-11-01 14:56 wayfarer      

@Ninputer:
确实,第二题输出结果就是其代码本身。很奇妙啊。看了n久,也不知道具体是怎么回事。

第三题我没有试过。

第四题也很有趣的,因为main函数本身就在Class1中,所以执行会影响GC对析构函数的执行。而Class2又有WaitOne()堵塞线程,所以结果也比较出乎意料之外的。   回复  引用  查看    


标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接:
 



导航

公告

logo.gif
我的著作与译作

《软件设计精要与模式》

《WCF服务编程》

MVP_Horizontal_BlueOnly.png

From 03-03-2006
Counter: site stats

与我联系

搜索

 

常用链接

我参加的小组

我参与的团队

随笔分类(243)

随笔档案(235)

最新随笔

积分与排名

最新评论

阅读排行榜

评论排行榜