小编Toa*_*ows的帖子

在Prolog中展平列表

我只与Prolog合作了几天.我理解一些事情,但这真让我感到困惑.

我想要编写一个带有列表并将其展平的函数.

?- flatten([a,[b,c],[[d],[],[e]]],Xs).  
Xs = [a,b,c,d,e].                           % expected result
Run Code Online (Sandbox Code Playgroud)

该函数取出列表的内部结构.

这是我到目前为止:

flatten2([],[]).
flatten2([Atom|ListTail],[Atom|RetList]) :-
      atom(Atom), flatten2(ListTail,RetList).
flatten2([List|ListTail],RetList) :-
      flatten2(List,RetList).
Run Code Online (Sandbox Code Playgroud)

现在,这在我打电话时起作用:

?- flatten2([a,[b,c],[[d],[],[e]]], R).
R = [a,b,c,d,e].                         % works as expected!
Run Code Online (Sandbox Code Playgroud)

但是当我打电话来查看我输入的列表是否已经展平时,将返回false而不是true:

?- flatten2([a,[b,c],[[d],[],[e]]], [a,b,c,d,e]).
false.                                   % BAD result!
Run Code Online (Sandbox Code Playgroud)

为什么一方面工作,另一方面又不工作?我觉得我错过了很简单的事情.

list prolog flatten dcg difference-lists

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

CSS Opacity在IE11中不起作用

我试图用这个CSS 制作background-color一个tr不透明的:

.faded{
    background-color: red;
    height: 100px;
    opacity: 0.4;
    filter: alpha(opacity=50);
}
Run Code Online (Sandbox Code Playgroud)

这是我的测试HTML:

<table>
    <tr class="faded">
        <td><div>testtesttesttestt</div></td>
        <td><div>testtsttesttesttt</div></td>
    </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

在IE9,10 FF24 Chrome 31+中一切正常,但在IE11中没有. 请记住,我不关心表行的内容,只关心背景不透明度. 屏幕截图和Jsfiddle如下.

IE10: IE10

IE11: IE11

http://jsfiddle.net/ZB3CN/6/

那么,这里发生了什么?

编辑:我已经向微软提交了一份错误报告: https ://connect.microsoft.com/IE/feedback/details/868842/ie-11-setting-css-opacity-on-a-table-row-doesnt-影响最背景颜色的-即行

编辑2:此错误已得到Microsoft的确认

编辑3:Microsoft已将此错误移至新位置: https ://developer.microsoft.com/en-us/microsoft-edge/platform/issues/212446/

html css internet-explorer internet-explorer-11

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

用Bresenham线算法绘制线条

我的计算机图形作业是仅使用绘制点的能力来实现OpenGL算法.

所以显然我需要开始drawLine()工作才能画出其他东西. drawLine()必须仅使用整数来完成.没有浮点.

这就是我的教导.基本上,线可以分为4个不同的类别,正陡,正浅,负陡和负浅.这是我应该画的图片:

预期结果

这是我的程序绘制的图片:

实际结果

颜色是为我们完成的.我们给出了顶点,我们需要使用Bresenham的Line算法根据起点和终点绘制线条.

这是我到目前为止:

int dx = end.x - start.x;
int dy = end.y - start.y;

//initialize varibales
int d;
int dL;
int dU;

if (dy > 0){
        if (dy > dx){
                //+steep
                d = dy - 2*dx;
                dL = -2*dx;
                dU = 2*dy - 2*dx;

                for (int x = start.x, y = start.y; y <= end.y; y++){
                        Vertex v(x,y);
                        drawPoint(v);

                        if (d >= 1){
                                d += dL;
                        }else{
                                x++;
                                d += dU;
                        } …
Run Code Online (Sandbox Code Playgroud)

c++ graphics bresenham

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