public class Test{ private static long i=1; public static void main(String[] args){ switch (i){ case 1: System.out.println("1"); break; } } } ...
Online Judge是一个根据程序的输入输出测试程序正确性的Web程序,一般用于ACM/ICPC的训练。这是我做的测试部分的源代码,主要是限定程序的运行时间和占用的空间,以及程序的输入输出重定向。限时做得很粗糙,仅仅使用了WaitForSingleObject,不能得到真正的CPU时间。 用法:test <progname> <input> <output> <time> <memory> <progname> 要测试的程序名 <input> 输入数据 <output> 程序输出 <time> 时间限制(单位:ms) <memo ...
GCC编译器似乎不能理解继承自模板类里的数据成员。我还以为是代码的问题,郁闷了半天后,居然在Borland C++ 5.5下编译通过了。节省篇幅,我抽出主要部分。 template<class T> class A{ protected: T id; }; template<class T> class B: public A<T>{ public: void setid(T i){ id=i; } void test1(){ cout<<"B::test1() ID: "<<id<&l ...
2008-02-18

Scheme的Lambda与Ruby的Block

关键字: scheme ruby
SICP中有一个简单而经典的例子:构造一个通用的求和函数 这里的m, n和函数f都不是预先定好的。在Scheme语言中,利用 可以定义出一个这样的sum函数: (define (sum m n func) (if (> m n) 0 (+ (func m)(sum (+ m 1) n func)))) 要计算1+2+...+100,先定义一个函数(define (f x)(x)),然后代入到sum中:(sum 1 100 f)。当然如果每换一个通项公式都要定义一个函数的话,程序中就会充斥着大量一次性的小函数。采用Scheme的“匿名函数”(在Sch ...
刚才没什么事,决定试试用新学的Ruby把那个O(1)栈的问题做了一下。写着是挺快,一口气就下来了,只是代码里带着明显的C++气味。唉,习惯不是一两天就能改的。代码和C++的差不多长。主要还是不习惯Ruby的思维,再加上那个C++代码中用了很多STL的东西,已经相当精简了。class Stack class Pair def initialize(first, second) @first=first @second=second end attr_reader :first, :second end def initialize @stack ...
我经常在网上用IM软件和别人讨论问题,有时非常需要用图形来交流。我不知道有没有一种类似于白板的软件,我在这边画图,他那边就能看到,而且我们能一起修改这个图形,就像是两个人在用一块白板一样。至少我是没找到合适的。 要是找不到的话只好自己做了。能做出能和GTalk互通的软件最好。查资料得知GTalk是采用的XMPP协议,Java有个程序库叫Smackr的实现了对XMPP的封装,估计有用。关键是图形数据的传输,大家觉得最好用什么方法?我感觉用SVG格式可能会比较简单,这样就都是使用XML了,而且Java里也有现成的SVG类库,batik。 在Java图形编程这一块本人知之甚少,主要应该考虑哪些问题? ...
引用题目:对现在的Stack(栈)数据结构进行改进,加一个min()功能,使之能在常数,即O(1),时间内给出栈中的最小值。可对push()和pop()函数进行修改,但要求其时间复杂度都只能是O(1)。 题目是在http://akalius.javaeye.com/blog/162156看到的,提供了两种方法。不幸的是第一种方法是错误的,第二种方法也不完全正确。都没有考虑到连续压入、弹出和有相同元素的情况。我用的方法是基于第一种的,即在push操作前先将要压入的数值和当前栈中的最小值“打包”成一个结点再压入,如果栈为空,则和自身一起打包。这样在弹出一个元素后,栈中的最小元素可直接由弹出的结点 ...
三门问题又叫蒙提霍尔问题。说的是在一个电视游戏中,参赛者面对三扇一模一样的关闭着的门,其中一扇门后面是汽车,另外两扇后面是山羊。参赛者选择了一扇门,但并没有打开;这时主持人开启了另外一扇门,后面是山羊。主持人问参赛者要不要换另外一扇关着的门。问题是:换另一扇门是否会增加参赛者赢得汽车的概率?注解(引自Wikipedia):Mueser和Granberg透过在主持人的行为身上加上明确的限制条件,提出了对这个问题的一种不含糊的陈述:参赛者在三扇门中挑选一扇。他并不知道内里有甚么。主持人知道每扇门后面有什么。主持人必须开启剩下的其中一扇门,并且必须提供换门的机会。主持人永远都会挑一扇有山羊的门。 如 ...
2008-02-16

几个免费的Scheme(Lisp)解释器

关键字: lisp scheme
Lisp是一个古老的函数式编程语言,Scheme则起源于MIT的一种Lisp方言。当前编程语言的一些特性,如尾递归、匿名函数、动态改变代码的功能等等,不少是受到了Lisp的启发。这里介绍几个能在Windows下使用的免费Scheme语言或Lisp语言的环境。DrScheme。这个是我一直在用的Scheme解释器,界面设计得既漂亮又方便。调试、括号匹配功能我也相当喜欢。而且带有大量的文档资料,如果英文够好,基本上就可以学会Scheme了。MIT-Scheme。这个是MIT为SICP(计算机程序的构造与解释)课程开发的Scheme环境。SICP是一本相当有名的教材,对计算原理讲得非常深入。书中采用 ...
看了一些关于建网站的论坛,里面常常见到“采集”这个词,今天终于明白了。郁闷…… 所谓的“采集”原来就是在自己的服务器上运行一个类似于搜索引挚爬虫的程序,设置好关键字,放出去让它在网上爬,把找到的内容统统下载到自己的服务器上,再发布到自己的网站。说白了这不和抄袭一样吗?说抄袭还轻了,手工复制粘贴虽然也常常侵权,但起码还算有所劳动。采集是自动化作业,几个小时就能抄下几十万的文章。 刚才在写一段C++程序时,忘了有关于Deque容器的一点东西,于是在Google里用“C++ deque”在中文网页里找。大家有兴趣可以试试,看看有多少个“深入研究C++中的STL Deque 容器”,或者干脆就用“深入 ...