我想参加像代码高尔夫比赛这样的比赛,但获胜者将拥有最快的算法,而不是最小的代码.
例如,代码
public class simple {
public static int main(String argc[]) {
int i;
i = 3;
while (i > 0) {
i--;
}
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
生成JVM代码
0: iconst_3
1: istore_1
2: iload_1
3: ifle 12
6: iinc 1, -1
9: goto 2
12: iconst_0
13: ireturn
Run Code Online (Sandbox Code Playgroud)
它需要(如果我已经正确计算)18个JVM指令来运行.
我希望人们能够在家里办理他们的参赛作品,看看评委会看到什么.显然,如果我将输入提供给程序,最快的解决方案是吐出记忆的预先计算的答案.有没有办法客观地让人们在家里运行程序而不是看到回忆的答案?
还有哪些其他问题阻碍了非正式的"最快的代码竞争"的发生?
谢谢!
当我运行我的调试器时,我决定检查内存中的特定位置,并注意到有一些奇怪的字符¾㵎䐑톢హ 洓.有谁知道这是什么?
我正在测试用于检测子进程何时进行segfaulted的代码.想象一下,当这段代码并不总是段错误时,我感到很惊讶:
#include <stdio.h>
int main() {
char *p = (char *)(unsigned long)0;
putchar(*p);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在Debian Linux 2.6.26内核下运行; 我的shell是ksh93来自Debian ksh软件包的AT&T ,版本M 93s + 2008-01-31.有时这个程序会出现段错误,但除此之外它只是以非零退出状态静默终止但没有消息.我的信号检测程序报告如下:
segfault terminated by signal 11: Segmentation fault
segfault terminated by signal 53: Real-time signal 19
segfault terminated by signal 11: Segmentation fault
segfault terminated by signal 53: Real-time signal 19
segfault terminated by signal 53: Real-time signal 19
segfault terminated by signal 53: Real-time signal 19
segfault terminated by signal 53: Real-time …Run Code Online (Sandbox Code Playgroud) 从命令行我得到文件名,我必须使用gcc编译.让我们这样说吧.
./a.out fileToBeCompiled.c
Run Code Online (Sandbox Code Playgroud)
那我怎么可以在我的程序中使用gcc编译这个文件?让我们说main.c正在制作a.out.
我创建了一个演示:http://pastebin.me/584b9a86d715c9ba85b7bebf0375e237
当滚动条位于底部并拖动项目以对其进行排序时,会导致滚动条向上跳跃.它似乎在FF,Safari,Chrome和IE(至少IE8)中这样做.
在我的Mac上的Firefox中,当滚动条位于底部时它会跳起来,但也会在整个列表中添加一个漂亮的闪存.它只是在向上滚动整个列表时闪烁.我相信,如果我弄清楚是什么导致向上滚动(如果我可以阻止它),闪烁也将停止.
我不喜欢它跳起来像那样的b/c我发现它很刺耳和混乱.我知道这是一个角落的案例,但如果可以,我想解决它.
那么,有没有办法防止它向上滚动?或者,是什么导致它向上滚动?
谢谢
是否有一个RSA或DSA的小型库,没有任何依赖,如GMP或OpenSSL?(用C或Asm编写)
我在XP中的dos命令行使用ghci 6.10.4,在使用haskell-mode-2.4的emacs中也使用ghci 6.10.4
当运行在stdin上运行的程序时,有没有办法可以将文件重定向为stdin?例如,如果我有一个名为main的函数从stdin读取,我不能这样做:
*Main> main < words.txt
Run Code Online (Sandbox Code Playgroud)
还有另外一种方法吗?
另外我希望能够在ghci窗口中键入stdin,这似乎有效,但是EOF键是什么?我认为这是Ctrl-D但是不起作用.
有人可以帮我解决这个错误吗?当我尝试打开与mdb的连接时,我得到"'Microsoft.Jet.OLEDB.4.0'提供程序未在本地计算机上注册"错误.我怎么能纠正这个?
我的代码非常简单:
class ImportTDB {
private string filename;
private string connectionString;
private int collisions = 0;
public ImportTDB(String filename) {
this.filename = filename;
this.connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename;
}
public void loadCustomerList() {
DataTable dt = new DataTable();
using (OleDbConnection conn = new OleDbConnection(connectionString)) {
OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM Names", conn);
conn.Open();
adapter.Fill(dt);
conn.Close();
}
Console.WriteLine(dt.ToString());
}
}
Run Code Online (Sandbox Code Playgroud) 我对以下代码示例有疑问(摘自:http://www.albahari.com/threading/part4.aspx#_NonBlockingSynch)
class Foo
{
int _answer;
bool _complete;
void A()
{
_answer = 123;
Thread.MemoryBarrier(); // Barrier 1
_complete = true;
Thread.MemoryBarrier(); // Barrier 2
}
void B()
{
Thread.MemoryBarrier(); // Barrier 3
if (_complete)
{
Thread.MemoryBarrier(); // Barrier 4
Console.WriteLine (_answer);
}
}
}
Run Code Online (Sandbox Code Playgroud)
接下来是以下解释:
"障碍1和障碍4阻止这个例子编写"0".障碍2和3提供了新鲜度保证:他们确保如果B在A之后运行,则读取_complete将评估为真."
我理解如何使用记忆障碍影响指令的记录,但这提到的"新鲜保证"是什么?
在本文后面,还使用了以下示例:
static void Main()
{
bool complete = false;
var t = new Thread (() =>
{
bool toggle = false;
while (!complete)
{ …Run Code Online (Sandbox Code Playgroud) 有没有办法在Python中创建类级别的只读属性?例如,如果我有课Foo,我想说:
x = Foo.CLASS_PROPERTY
Run Code Online (Sandbox Code Playgroud)
但是阻止任何人说:
Foo.CLASS_PROPERTY = y
Run Code Online (Sandbox Code Playgroud)
编辑: 我喜欢Alex Martelli解决方案的简单性,但不喜欢它需要的语法.他和~ututbu的答案都启发了以下解决方案,这更接近我所寻找的精神:
class const_value (object):
def __init__(self, value):
self.__value = value
def make_property(self):
return property(lambda cls: self.__value)
class ROType(type):
def __new__(mcl,classname,bases,classdict):
class UniqeROType (mcl):
pass
for attr, value in classdict.items():
if isinstance(value, const_value):
setattr(UniqeROType, attr, value.make_property())
classdict[attr] = value.make_property()
return type.__new__(UniqeROType,classname,bases,classdict)
class Foo(object):
__metaclass__=ROType
BAR = const_value(1)
BAZ = 2
class Bit(object):
__metaclass__=ROType
BOO = const_value(3)
BAN = 4
Run Code Online (Sandbox Code Playgroud)
现在,我得到:
Foo.BAR …Run Code Online (Sandbox Code Playgroud)