这是我在各种编程语言中无数次使用过的模式:
outEdges :: MyNode -> [MyNode].例如,考虑这种(有目的效率低下)的方法来计算两个单词之间的编辑距离.我们将计算通过广度优先搜索将一个单词转换为另一个单词所需的最少插入和删除次数.
import Data.List
import Data.Maybe
alphabet :: String
alphabet = ['a'..'z']
wordNeighbors :: String -> [String]
wordNeighbors word = deletions ++ insertions where
insertions = [pre++[c]++suf | (pre,suf) <- splits, c <- alphabet]
deletions = [pre++suf | (pre,_:suf) <- take (length word) splits]
splits = zip (inits word) (tails word)
shortestDistance :: (Eq a,Hashable a)=> (a -> [a]) -> a -> a -> Maybe Int
shortestDistance …Run Code Online (Sandbox Code Playgroud) numeric-prelude做这个事情,每个数据类型都被命名T,每个类类都被命名C.为了......一致性,我想我会一起玩:
{-# LANGUAGE NoImplicitPrelude #-}
module Number.SqrtRatio (T(..), ratioPart) where
import qualified Number.Ratio as Ratio
import Number.Ratio ((:%))
import qualified Algebra.Ring as Ring
import NumericPrelude.Base
-- | A number whose square is rational, canonicalized as a rational
-- times the square root of a squarefree integer.
data T x = T {
numerator :: !x,
denominator :: !x,
rootNum :: !x
} deriving (Eq, Show)
ratioPart :: T x -> Ratio.T x
ratioPart (T n …Run Code Online (Sandbox Code Playgroud) 我发现自己在 webGl 中使用的许多符号和域约定中有点迷失。看看这个 regl 示例(它显示了狒狒测试图像)。以下是我对它的理解:
GL_TRIANGLE。(-2, 0),(0, -2),(2, 2)在世界空间。把它画在纸上,看起来这是专门选择的,因为它包含了该区域[0,1] x [0,1]。uv从世界空间获取它的值,包括这个[0,1] x [0,1]区域(它是 的域texture2d)。如果我理解正确,惯例是+u指向图像的右边缘,+v指向顶部。gl_Position设置为1 - 2*uv,以便图像占据[-1,1] x [-1,1], z=0“剪辑空间”,无论是什么。+{u,v}方向对应-{x,y}!gl_Position任何与屏幕相关的镜像。我看到讨论它是左撇子,但这只是z相对于世界坐标的否定。(例如这里的这个问题)简而言之,在我看来,这个图像也应该垂直镜像。
我错过了什么?
为了后代,代码复制如下:(MIT许可)
const …Run Code Online (Sandbox Code Playgroud) 对于这样一个基本问题,我很惊讶我找不到任何搜索...
无论如何,我用Python制作了一个curses应用程序,它有助于解决某个DSiWare游戏的难题.有了它,你可以拼图并单独检查它的组成部分.这些键qweasdzx用于绘制瓷砖(按键排列在某种调色板中).在按住Shift的同时按下其中一个按钮会突出显示该颜色的图块.我无法要求更自然的控制方案.
所以很遗憾,Shift再一次给了我一些问题(上次我遇到Shift问题时,我获得了Tumbleweed徽章).虽然这次,问题或多或少是Caps Lock,它通过反转功能完全搞砸了我的程序.
如何使用curses检测Python中Caps Lock的状态?
编辑:如果你打算建议使用一个单独的模块,我可能应该提醒你,curses - 因此我的程序 - 在UNIX领域.
简短版本:类 的默认inspect方法显示对象的地址.*如何在inspect我自己的自定义方法中执行此操作?
*(要清楚,我想要你通常会得到的8位十六进制数inspect.我不关心实际的内存地址.我只是把它称为内存地址,因为它看起来像一个.我知道Ruby是存储安全.)
长版: 我有两个课,Thing和ThingList. ThingList是一个Array专门设计用于保存物品的子类.由于事物的本质以及它们在我的程序中使用的方式,事物有一个实例变量@container,指向ThingList那个持有的东西Thing.
两件事可能具有完全相同的数据.因此,当我调试应用程序时,我可以可靠地区分两件事的唯一方法是使用inspect,它显示他们的地址.当我inspect一个Thing,不过,我得在输出的页面,因为页面inspect会递归的检查@container,造成每一件事的清单进行检查,以及!
我只需要输出的第一部分.如何编写自定义inspect方法Thing才会显示此内容?
#<Thing:0xb7727704>
Run Code Online (Sandbox Code Playgroud)
编辑: 我刚刚意识到默认就是to_s这样.我之前没有注意到这一点,因为我有一个自定义to_s提供有关该对象的人类可读细节.
假设我不能使用to_s,我必须写一个自定义inspect.