相关疑难解决方法(0)

了解切片表示法

我需要在Python的切片表示法上有一个很好的解释(引用是一个加号).

对我来说,这种符号需要一点点提升.

它看起来非常强大,但我还没有完全了解它.

python iterable list slice

3024
推荐指数
33
解决办法
159万
查看次数

在Python中旋转二维数组

在一个程序中,我写的是需要旋转一个二维数组.寻找最佳解决方案我找到了这个令人印象深刻的单线工作:

rotated = zip(*original[::-1])
Run Code Online (Sandbox Code Playgroud)

我现在正在我的程序中使用它,它可以正常运行.我的问题是,我不明白它是如何工作的.

如果有人能解释所涉及的不同功能如何达到预期效果,我将不胜感激.

python multidimensional-array

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

俄罗斯方块片段旋转算法

用于表示和旋转俄罗斯方块游戏的最佳算法(和解释)是什么?我总是发现片段旋转和表示方案令人困惑.

大多数俄罗斯方块游戏似乎在每次轮换时都使用了一个天真的"重制阵列块":

http://www.codeplex.com/Project/ProjectDirectory.aspx?ProjectSearchText=tetris

但是,有些人使用预先构建的编码数字和位移来表示每个部分:

http://www.codeplex.com/wintris

有没有一种方法可以使用数学来做到这一点(不确定哪种方法适用于基于单元的电路板)?

algorithm rotation tetris

45
推荐指数
7
解决办法
6万
查看次数

如何将N×N矩阵旋转90度?

如何将N×N矩阵旋转90度.我希望它在原地?

c++ algorithm

25
推荐指数
2
解决办法
5万
查看次数

旋转位图.在代码中

是否有更快的方法将位图旋转90或270度而不是简单地使用倒置坐标进行嵌套循环?

位图是8bpp,通常是2048*2400*8bpp

目前我只是简单地使用参数反转进行复制(伪代码:

for x = 0 to 2048-1
  for y = 0 to 2048-1
    dest[x][y]=src[y][x];
Run Code Online (Sandbox Code Playgroud)

(实际上我是用指针做的,速度要快一点,但大小差不多)

对于大图像,GDI非常慢,纹理(GF7卡)的GPU加载/存储时间与当前CPU时间的大小相同.

任何提示,指针?就地算法甚至会更好,但速度比就地更重要.

Target是Delphi,但它更像是一个算法问题.SSE(2)矢量化没问题,对我来说,在汇编程序中编码它是一个很大的问题


跟进尼尔斯的回答

  • 图2048x2700 - > 2700x2048
  • 编译器Turbo Explorer 2006优化.
  • Windows:电源方案设置为"始终开启".(重要!!!!)
  • 机器:Core2 6600(2.4 GHz)

旧例程的时间:32ms(步骤1)

步长8:12ms的时间

步长16:10ms的时间

步长32+:9ms的时间

与此同时,我还在Athlon 64 X2(5200+ iirc)上进行了测试,其速度略高于四倍(80到19毫秒).

加速非常值得,谢谢.也许在夏季我会用SSE(2)版本折磨自己.但是我已经考虑过如何解决这个问题了,我想我会用完SSE2寄存器来实现直接实现:

for n:=0 to 7 do
  begin
    load r0, <source+n*rowsize> 
    shift byte from r0 into r1
    shift byte from r0 into r2
    ..
    shift byte from r0 into r8
  end; 
store r1, <target>   
store r2, <target+1*<rowsize> …
Run Code Online (Sandbox Code Playgroud)

delphi image-manipulation image-processing rotation

18
推荐指数
1
解决办法
1万
查看次数

如何在javascript中旋转数组中的矩阵

(披露,我主要是数学文盲).

我有这种格式的数组:

var grid = [
  [0,0], [0,1], [0,2], [0,3],
  [1,0], [1,1], [1,2], [1,3],
  [2,0], [2,1], [2,2], [2,3],
  [3,0], [3,1], [3,2], [3,3]
];
Run Code Online (Sandbox Code Playgroud)

我需要以90度的增量"旋转"它,所以它是这样的:

var grid = [
  [3,0], [2,0], [1,0], [0,0], 
  [3,1], [2,1], [1,1], [0,1], 
  [3,2], [2,2], [1,2], [0,2], 
  [3,3], [2,3], [1,3], [0,3] 
];
Run Code Online (Sandbox Code Playgroud)

如何在Javascript中完成此操作?

javascript math matrix

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

将2D像素阵列旋转90度

我有一个图像的像素数据数组.我得到的图像已经旋转到270度.所以我试图再次旋转90度以获得正确的图像.我已经尝试了转置算法,通过更改data[x][y]data[y][x],但我不认为这是正确的方法.任何人都可以指导我如何旋转它?

c++ pixel image-processing rotation

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

如何使用python旋转此列表列表

我有一个列表列表,我需要旋转90度.我设法获得了第一个新行,但是我无法获得其他任何一个,所以我把for循环放入一个函数中,我每次迭代都增加了一个计数,但我刚刚给终端打印了一大堆.

grid = [['.', '.', '.', '.', '.', '.'],
        ['.', '0', '0', '.', '.', '.'],
        ['0', '0', '0', '0', '.', '.'],
        ['0', '0', '0', '0', '0', '.'],
        ['.', '0', '0', '0', '0', '0'],
        ['0', '0', '0', '0', '0', '.'],
        ['0', '0', '0', '0', '.', '.'],
        ['.', '0', '0', '.', '.', '.'],
        ['.', '.', '.', '.', '.', '.']]
Run Code Online (Sandbox Code Playgroud)

我需要如何旋转.

'''
..00.00..
.0000000.
.0000000.
..00000..
...000...
....0....

'''
Run Code Online (Sandbox Code Playgroud)

我的代码

def get_row(grid, new_grid, new_row, count):
    for row in grid:
        new_row.append(row[count])
    new_grid.append(new_row)

new_grid = …
Run Code Online (Sandbox Code Playgroud)

python

9
推荐指数
2
解决办法
4628
查看次数

这个代码片段如何旋转矩阵?

在寻找旋转矩阵的pythonic方法时,我遇到了这个答案.但是没有附加说明.我在这里复制了片段:

rotated = zip(*original[::-1])
Run Code Online (Sandbox Code Playgroud)

它是如何工作的?

python

8
推荐指数
2
解决办法
152
查看次数

简化9变量布尔表达式

我正在尝试创建一个tic-tac-toe程序作为心理练习,我将董事会状态存储为booleans,如下所示:

http://i.imgur.com/xBiuoAO.png

我想简化这个布尔表达式......

(a&b&c) | (d&e&f) | (g&h&i) | (a&d&g) | (b&e&h) | (c&f&i) | (a&e&i) | (g&e&c)
Run Code Online (Sandbox Code Playgroud)

我的第一个想法是使用卡诺图,但没有在线求解器支持9个变量.

并且还有一个问题:

首先,我如何知道布尔条件是否已经尽可能简单?

第二个:上面简化的布尔条件是什么?

logic boolean

8
推荐指数
2
解决办法
2478
查看次数