我目前正在做一个函数式编程课程,我很高兴高阶函数和函数作为一等公民的概念。 然而,我还不能想到许多实际上有用的,概念上的惊人的,或者只是简单有趣的高阶函数。 (除了典型和相当沉闷的map , filter等function)。 你知道这样有趣的function的例子吗? 也许返回函数的函数,返回函数列表(?)等的函数 我会很感激Haskell的例子,这是我目前正在学习的语言:)
我在嘉年华会,在每个地点他们用特别的打孔器来标记你的节目。 打孔器是一个3×3的格子。 在每个空间里,都有一个钉住你的纸或没有。 这让我想知道你可以使用这个工具有多less种不同的模式。 我的第一个想法是:2 ^ 9 = 512,但是所有9个空格都不是真正的一拳,所以真的:511。 那么复杂性打击了我。 特别是因为工作人员在打纸时不是很小心,所以这些都是理所当然的: x.. .x. … etc. .xx. .x. … … ..x 问题: 如何编写testing来解释轮换和移位? 目前的努力和想法: 二进制感觉是这个等式的一个显而易见的部分 当find一个唯一的模式,将其存储在内存中,以便将来的模式可以被testing 有4种旋转的可能性。 编辑:我的意思是“旋转”,你可以采取任何形状,把它转过90度。 考虑左上angular的点阵模式。 你可以转动/旋转90度,并得到在右上angular的点。 再次这样做,它在右下angular。 再次,它在左下angular。 使用纯粹的2 ^ 9计算,这些是4种不同的组合。 但是,对于这个问题,这些正是我试图去除的重复。 对于每次旋转,有25种方法可以使3×3网格重叠: 重叠: / = the spaces in the new one to test \ = the spaces in a verified unique […]
我正在寻找类似于Path.Combine方法,它可以帮助我正确地组合绝对path和相对path。 例如,我想要 Path.Combine(@"c:\alpha\beta", @"..\gamma"); 以Path.Combine c:\alpha\gamma而不是c:\alpha\..\gamma 。 有没有简单的方法来完成这个? 不用说,我也想要一段时间. path或多个path(例如..\..\ )正常工作。
我之前在Clojure编写了一个小的Swing应用程序,现在我想创build一个Ajax风格的Web应用程序。 Compojure现在看起来是最好的select,所以这就是我将要尝试的。 我想要一个真正的微小的编辑/尝试反馈循环,所以我不希望在每次小改动后重新启动Web服务器。 什么是完成这个最好的方法? 默认情况下,我的Compojure设置(标准的东西与antdetes / Ant与Jetty)似乎并没有重新加载我所做的任何更改。 我将不得不重新启动运行服务器来查看更改。 由于Java的遗产和系统启动的方式等。这可能是非常正常的,当我从命令行启动系统应该是这样。 不过,在服务器运行时,必须有一种方式来dynamic地重新加载东西。 我应该使用REPL的Compojure来实现我的目标吗? 如果我应该,我该如何重装我的东西呢?
这个问题乍一看听起来很简单,但是看起来比现在复杂得多。 这让我难以忍受。 有52c5 = 2,598,960种方式从52张牌组中select5张牌。 然而,由于套装在扑克中是可以互换的,其中许多是等价的 – 手牌2H 2C 3H 3S 4D相当于2D 2S 3D 3C 4H – 简单地交换套装。 根据维基百科 ,一旦你考虑可能的西装颜色,有134459个不同的5张牌。 问题是,我们如何有效地产生所有这些可能的手? 我不希望产生所有的手,然后消除重复,因为我想将问题应用到更大数量的牌上,并且手的数量要评估快速螺旋失控。 我目前的尝试主要集中在深度优先生成和跟踪当前生成的卡片上,以确定下一张卡片或宽度优先的卡片和行列是否有效,生成所有可能的下一张卡片,然后通过转换每个卡片来删除重复通过重新着色来达到“规范”版本。 以下是我在Python中的广度优先解决scheme的尝试: # A card is represented by an integer. The low 2 bits represent the suit, while # the remainder represent the rank. suits = 'CDHS' ranks = '23456789TJQKA' def make_canonical(hand): suit_map […]
我试图捕捉在这个代码与JavaScript的Ctrl + Z组合键: <html> <head> <title>Untitled Document</title> </head> <body> <script type='text/javascript'> function KeyPress(e) { var evtobj = window.event? event : e //test1 if (evtobj.ctrlKey) alert("Ctrl"); //test2 if (evtobj.keyCode == 122) alert("z"); //test 1 & 2 if (evtobj.keyCode == 122 && evtobj.ctrlKey) alert("Ctrl+z"); } document.onkeypress = KeyPress; </script> </body> </html> 如果我按住ctrl键并按任何其他键,则注释行“test1”会生成警报。 如果按z键,则注释行“test2”会生成警报。 在“testing1&2”之后按照线路放在一起,按住ctrl键,然后按z键不会按预期产生警报。 代码有什么问题?
我正在审查我在面向对象编程方面的知识。 在类课题的关系下,我遇到了一些对我有点模糊的关系。 我知道依赖“使用一个”和inheritance“是一个”,但我有点不熟悉聚合,组成,协会和直接关联; 而且,他们中哪一个是“有一个”的关系。 有些使用聚合与公会交替。 什么是直接关联? 另外,什么是组成? 在UML图中,表示它们的箭头是不同的。 如果你能为我清除这些东西,我会非常感激。
给你N个高度为1 … N的块。 您可以在多less种方式中排列这些块,使得从左侧看时只能看到L个块(其余块被较高的块遮挡),从右侧看只能看到R个块? 给定N=3, L=2, R=1例子N=3, L=2, R=1只有一种排列{2, 1, 3}而对于N=3, L=2, R=2 ,有两种方式{1, 3, 2}和{2, 3, 1} 。 我们应该如何通过编程来解决这个问题? 任何有效的方法?
我知道itertools,但它似乎只能生成排列而不重复。 例如,我想生成所有可能的骰子掷2个骰子。 所以我需要[1,2,3,4,5,6]的大小2的所有排列,包括重复:(1,1),(1,2),(2,1)…等 如果可能的话,我不想从头开始实施
我在C#中有一个combobox,我想使用自动完成的build议,但是我想能够改变自动完成条目作为用户键入,因为可能有效的条目太多,无法在启动时填充AutoCompleteStringCollection 。 作为一个例子,假设我让用户键入一个名字。 我有一个可能的名字(“乔”,“约翰”)和一个姓氏列表(“Bloggs”,“史密斯”)的名单,但如果我有一千个,那么这将是一百万个可能的string – 自动完成条目太多了。 所以最初我想只有第一个名字作为build议(“Joe”,“John”),然后一旦用户键入了名字(“Joe”),我想删除现有的自动完成条目并replace他们用一组新名字组成,后面跟着可能的姓氏(“Joe Bloggs”,“Joe Smith”)。 为了做到这一点,我尝试了下面的代码: void InitializeComboBox() { ComboName.AutoCompleteMode = AutoCompleteMode.SuggestAppend; ComboName.AutoCompleteSource = AutoCompleteSource.CustomSource; ComboName.AutoCompleteCustomSource = new AutoCompleteStringCollection(); ComboName.TextChanged += new EventHandler( ComboName_TextChanged ); } void ComboName_TextChanged( object sender, EventArgs e ) { string text = this.ComboName.Text; string[] suggestions = GetNameSuggestions( text ); this.ComboQuery.AutoCompleteCustomSource.Clear(); this.ComboQuery.AutoCompleteCustomSource.AddRange( suggestions ); } 但是,这不能正常工作。 看起来,调用Clear()会导致自动完成机制“closures”,直到下一个字符出现在combobox中,但当然当下一个字符出现时,上面的代码再次调用Clear(),所以用户从不实际上看到了自动完成function。 […]