我需要一些关于任务的一些帮助.
我的任务是创建一个内存区域
void *memory = malloc(320);
Run Code Online (Sandbox Code Playgroud)
然后使用指针将文本存储到这个存储位置:我们想将这个区域划分为32个字节的数据块,母猪我们可以存储:320/32 = 10个数据块,32个字节.在一个数据块中,我可以存储(1个ASCSII char = 1个字节)32个字符.
我有一个10位的位图,其中每个位指示是否使用数据块(1)或不使用(0).
但是,如果我想存储长度为60个字符的文本呢?然后我需要2个数据块(2 x 32字节).位图显示数据块2和6是空闲的,1和6不是并排的.我怎样才能做到这一点?
struct data {
char * text;
};
typedef struct data d;
d->text = ???
Run Code Online (Sandbox Code Playgroud) 下面的代码不起作用,我假设因为理解中的locals()变量将引用嵌套块,其中评估了理解:
def f():
a = 1
b = 2
list_ = ['a', 'b']
dict_ = {x : locals()[x] for x in list_}
Run Code Online (Sandbox Code Playgroud)
我可以使用globals(),它似乎工作,但这可能会带来一些额外的问题(例如,如果有一个来自周围范围的变量恰好具有相同的名称).
有没有什么能使字典在函数范围内精确地使用变量f?
注意:我这样做是因为我有许多变量,我希望稍后将其放入字典中,但不希望通过编写dict_['a']而不是a在此期间使代码复杂化.
来自Cesarini的"Erlang编程"练习3-2
当我通过"Erlang编程"时,我得到了奇怪的列表创建问题.从练习3-2开始,我写了两个类似的功能.
create( 0 ) -> [];
create( N ) when N > 0 -> [ N | create( N-1 ) ].
reverse_create( 0 ) -> [];
reverse_create( N ) when N > 0 -> [ reverse_create( N-1 ) | N ].
Run Code Online (Sandbox Code Playgroud)
所以create(3)就像我期望的那样生成.
exercise3:创建(3).
[3,2,1]
但是reverse_create不会生成我期望的列表.
exercise3:reverse_create(3).
[[[[] | 1] | 2] | 3]
我需要更改什么才能使reverse_create(3)返回[1,2,3]?谢谢你的解释.
我在uni中使用c(或多或少是第一次)工作,我需要从字符数组生成MD5。该分配指定这必须通过创建管道并md5在系统上执行命令来完成。
我已经走到这一步了:
FILE *in;
extern FILE * popen();
char buff[512];
/* popen creates a pipe so we can read the output
* of the program we are invoking */
char command[260] = "md5 ";
strcat(command, (char*) file->name);
if (!(in = popen(command, "r"))) {
printf("ERROR: failed to open pipe\n");
end(EXIT_FAILURE);
}
Run Code Online (Sandbox Code Playgroud)
现在这工作得很好(对于作业的另一部分,需要获取文件的 MD5),但我无法弄清楚如何将字符串通过管道传输到其中。
如果我理解正确的话,我需要做类似的事情:
FILE * file = popen("/bin/cat", "w");
fwrite("hello", 5, file);
pclose(file);
Run Code Online (Sandbox Code Playgroud)
我认为,它将执行 cat,并通过 StdIn 将“hello”传递给它。这是正确的吗?
给定一个按随机顺序排列的整数列表,将其拆分为两个新的链表,这样每个列表元素总和的差异最大,列表长度相差不超过1(在原始情况下) list有奇数个元素). 我不能假设列表中的数字是唯一的.
我想到的算法是在原始链表(O(n·log n)时间,O(n)空间)上进行合并排序,然后使用递归函数走到列表末尾以确定其长度,在递归函数展开时进行拆分.递归函数是O(n)时间和O(n)空间.
这是最佳解决方案吗?如果有人认为它是相关的,我可以发布我的代码.
在scons中,我试图建立一个UnitTest系统(见下面的代码),基于这里的一个很好的例子:http://spacepants.org/blog/scons-unit-test
然而,由于最近的scons 2.0.1及更新版本中存在问题,这会产生依赖性循环,如下所述:http://old.nabble.com/AddPostAction-executes-on-first-build-but-not-subsequent- td18360675.html(和其他地方).
有谁知道这个问题的良好解决方案或替代解决方案?
码:
def UnitTest(env, target, source, **kwargs):
curTest = env.Program(target, source, **kwargs)
env.AddPostAction(curTest, curTest[0].abspath)
env.Alias('unit_tests', curTest)
env.AlwaysBuild(curTest)
return curTest
SConsEnvironment.UnitTest = UnitTest
mandolineTest = env.UnitTest(target='./codeTest',
source = mix(['test.cc', 'base.cc'),
LIBS = default_libs + ['bgl',],
LIBPATH = default_libs_path,
CPPPATH = default_includes )
Run Code Online (Sandbox Code Playgroud) 我使用git将代码分发到嵌入式系统。有时文件损坏而未更改mtime,我想重新检查所有内容。Git通常不会检查统计信息未更改的文件的sha。如何检查?
我尝试过
git -c core.ignorestat=yes reset --hard
Run Code Online (Sandbox Code Playgroud)
但这不起作用。
我正在尝试解决涉及国际象棋的算法问题.
假设我在A8中有一个国王,并希望将其移至H1(仅允许移动).我怎样才能找出完成任何给定k移动的可能性(路径)的数量?(例如,如果我想用15次动作将国王从A8移动到H1,会有多少路径/可能性?)
一个简单的解决方案是将其视为图形问题,并使用任何标准路径查找算法将每个移动计算为成本1.因此,假设我想要将我的王从A8移动到H1以10个移动.我只想搜索总计10的所有路径.
我的问题是,如果还有其他更聪明有效的方法吗?我也想知道,如果有更多的"数学"和直接找到这个数字而不是那么"算法"和"蛮力似的"?
只是想知道z3py,我如何检查给定的常量表达式是变量还是值?例如
x = Int('x')
x_ = IntVal(7)
ColorVal, (White,Black) = EnumSort("ColorVal",["While","Black"])
mycolor = Const("mycolor",ColorVal)
Run Code Online (Sandbox Code Playgroud)
所以x,mycolor都是变量而x_,True,False,White,Black都是值而不是变量.
z3py有is_var谓词,但出于不同的目的.如果我想将公式中的所有变量重命名为其他变量,这将非常有用.
架构:
Student(studentid,name,age)
Course(coursename,dept)
enroll(studentid,coursename,grade)
Run Code Online (Sandbox Code Playgroud)
我需要编写sql来查找每个年龄组的学生姓名,其中最高分为历史和政治科学系.
到目前为止我的尝试一直是
SELECT
name
FROM
student
GROUP BY age
HAVING sid IN
(
SELECT
max(grade)
FROM
enroll e,enroll e1
WHERE
e.studentid = e1.studentid
AND e.coursename = (
SELECT coursename FROM course
WHERE
dname like '%History%'
)
AND e1.coursename = (
SELECT coursename FROM course
WHERE
dname like '%PoliticalScience%'
)
)
Run Code Online (Sandbox Code Playgroud)