- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
任务:
对于二维数组中的给定位置,生成位于半径范围内的周围位置列表。
例如:
input: (1, 1)
radius: 1
output: ( (0, 0), (1, 0), (2, 0),
(0, 1), (2, 1),
(0, 2), (1, 2), (2, 2) ).
def getPositions(x:Int, y:Int, r:Int) = {
for(radius <- 1 to r) yield {
List(
for (dx <- -radius to radius) yield Pair(x + dx, y - radius),
for (dx <- -radius to radius) yield Pair(x + dx, y + radius),
for (dy <- -radius to radius) yield Pair(x + radius, y + dy),
for (dy <- -radius to radius) yield Pair(x - radius, y + dy)
)
}
}
最佳答案
您需要展平列表(两次),因此可以这样做:
def getPositions(x:Int, y:Int, r:Int) = {
for(radius <- 1 to r) yield {
List(
for (dx <- -radius to radius) yield Pair(x + dx, y - radius),
for (dx <- -radius to radius) yield Pair(x + dx, y + radius),
for (dy <- -radius to radius) yield Pair(x + radius, y + dy),
for (dy <- -radius to radius) yield Pair(x - radius, y + dy)
).flatten
}
}.flatten
def P(i:Int, j:Int) = { print("eval"); Pair(i,j) }
def lazyPositions(x:Int, y:Int, r:Int) = {
(1 to r).toStream.flatMap{ radius =>
(-radius to radius).toStream.map(dx => P(x + dx, y - radius)) #:::
(-radius to radius).toStream.map(dx => P(x + dx, y + radius)) #:::
(-radius to radius).toStream.map(dy => P(x + radius, y + dy)) #:::
(-radius to radius).toStream.map(dy => P(x - radius, y + dy))
}
}
print(lazyPositions(1,1,1).take(3).toList) # prints exactly three times ‘eval’.
def P
方法来表现真正的懒惰。每次,您都会创建一个
Pair
,它被调用。在懒惰的解决方案中,您只需要按需。
关于scala - 在 Scala 中生成惰性 "spiral",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3619620/
我想问一下是否有一些算法可以让我这样做:我有一个矩阵 m (col) x n (row),其中有 m x n 个元素。我想给这个元素从中心开始并作为螺旋旋转的位置,例如,对于一个 3x3 矩阵,我有
我有一个看起来像这样的图像: 我已将其转换为二维列表。以“螺旋”方式迭代此列表的最佳方法是什么,从左上角开始到中心结束。目标是读取所有非黑色像素。 最佳答案 这是我的代码,它从左上角开始按顺时针方向螺
有人可以帮助我使用 d3.js 实现类似于下面的螺旋图吗? 到目前为止,我刚刚获得了基本的螺旋图(一个简单的图),但无法根据图像中显示的时间线将条形图附加到图中。我正在尝试一些事情(如果您看到注释代码
任务: 对于二维数组中的给定位置,生成位于半径范围内的周围位置列表。 例如: input: (1, 1) radius: 1 output: ( (0, 0), (1, 0), (2, 0),
锁定。这个问题及其答案是locked因为这个问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 挑战 按字符数输出的最短代码Ulam's spiral具有由用户输入给出的螺旋尺寸。 乌拉姆螺旋
如何使用“clockwise/spiral rule”读取一个const类成员函数?喜欢: class Box { // ... double volume() const; //
已锁定。这个问题及其答案是locked因为这个问题是题外话,但却具有历史意义。目前不接受新的答案或互动。 还有什么比螺旋更适合 Easter Code Golf 类(class)的呢? 好吧,我几乎猜
我们最近将许多应用程序从在 RedHat linux JDK1.6.0_03 下运行的迁移到 Solaris 10u8 JDK1.6.0_16(更高规范的机器),我们注意到一个似乎相当紧迫的问题:在某
我是一名优秀的程序员,十分优秀!