问题列表 - 第33161页

重量偏向的左派堆:自上而下的合并版本的优势?

我正在自学俄冈崎的纯功能数据结构,现在正在练习3.4,它要求推理并实施一个重量偏向的左派堆.这是我的基本实现:

(* 3.4 (b) *)
functor WeightBiasedLeftistHeap (Element : Ordered) : Heap =
struct
  structure Elem = Element

  datatype Heap = E | T of int * Elem.T * Heap * Heap

  fun size E = 0
    | size (T (s, _, _, _)) = s
  fun makeT (x, a, b) =
    let
      val sizet = size a + size b + 1
    in
      if size a >= size b then T (sizet, x, a, b)
      else T …
Run Code Online (Sandbox Code Playgroud)

functional-programming sml data-structures

6
推荐指数
1
解决办法
612
查看次数

何时调用onSizeChanged()?

onSizeChanged()一旦用户触摸屏幕的某些部分就被调用?

我对它的顺序感到困惑onDraw(),onMeasure()并被onSizeChanged()称为.

android

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

在Scala中,为什么`println(1,2)`有效?

在Scala(2.7.7final)中,该Predef.println方法被定义为具有以下签名:

def println (x : Any) : Unit
Run Code Online (Sandbox Code Playgroud)

怎么来,那么以下工作:

scala> println(1,2)  
(1,2)
Run Code Online (Sandbox Code Playgroud)

编译器是否自动将以逗号分隔的参数列表转换为元组?通过什么魔术?这里是否存在隐式转换,如果是,那么哪一个?

scala tuples implicit-conversion

9
推荐指数
1
解决办法
428
查看次数

更好的C#扑克框架设计?

我正在用C#编写一个扑克框架,我不喜欢我现在的设计.我的目标是拥有一个游戏引擎,可以非常快速地以批处理模式相互播放多个AI代理,并且可以与多个人(可能通过Silverlight客户端)玩多个AI代理.我希望保持高效率但保持灵活性 - 例如,它应该能够玩有限德州扑克,无限注德州扑克,限制7张牌梭哈等游戏.

我目前的设计相当笨拙且不灵活:

  • HandHistory:包含有关当前手牌的所有信息(参与者,投注等)
  • IPlayer:每个玩家定义一个GetAction(HandHistory历史)方法.
  • GameEngine:定义一个返回HandHistory对象的Play(HandInfo信息)方法.
  • PotManager:管理底池并确定每个玩家必须打多少以及他们能赢多少(例如,如果他们有不相等的筹码并全押).
  • BetManager:管理投注并确定投注结束的时间.

HandInfo类包含有关如何设置手的所有信息.Play方法看起来像这样:

HandHistory Play(HandInfo info)
{
    PotManager pots = new PotManager(info);
    BetManager bets = new BetManager(info);
    HandHistory history = CreateHistory(info);

    bets.CollectBlinds();
    if(!bets.GameOver)
    {
        DealHoleCards();
        if(bets.PlayersThatCanStillBet > 1)
            bets.CollectBets();
        if(!bets.GameOver)
        {
            DealFlop();
            ... and on and on
        }
    }

    return history;
}
Run Code Online (Sandbox Code Playgroud)

问题的出现是因为有很多小事要考虑收集百叶窗等等.Bot和Bet经理课程变成了一场噩梦,并且总是充满了虫子.此外,我的引擎设计仅支持一种游戏类型(德州扑克)而不是其他类型.

我的主要排名是效率第一,因为引擎主要用作数十亿手的AI模拟器.但是,我想有一种更优雅的方式可以做到这一点.

c# oop poker

6
推荐指数
1
解决办法
2517
查看次数

异常处理尝试捕获内部catch

我最近遇到了一个程序员编写的代码,他在catch中有一个try-catch语句!

请原谅我无法粘贴实际代码,但他所做的与此类似:

try
{
 //ABC Operation
}
catch (ArgumentException ae)
{
   try
   {
      //XYZ Operation
   }
   catch (IndexOutOfRangeException ioe)
   {
      //Something
   }
}
Run Code Online (Sandbox Code Playgroud)

我个人觉得这是我见过的最差的代码!在1到10的范围内,你认为我应该多久去给他一点心思,还是我过度反应?

编辑:他在捕获中实际做了什么,他正在执行一些操作,这些操作可以/应该在初始尝试失败时完成.我的问题是拥有干净的代码和可维护性.将第一个catch中的异常委托给另一个函数或调用函数就可以,但是添加更多代码可能会或者可能不会将异常抛入第一个catch中,这是我觉得不好的.我试图避免多个堆叠的"if-loop"语句,我发现这同样糟糕.

java exception-handling exception try-catch

37
推荐指数
3
解决办法
7万
查看次数

Grails - 在域类问题上测试自定义验证器

我正在学习Grails的Grails - 由Jason Rudolph的书开始.我的域类看起来像这样:

class Race {

  String name;
  Date startDateTime
  String city
  String state
  Float distance
  Float cost
  Integer maxRunners = 10000

  static hasMany = [registrations: Registration]

  static constraints = {
    name(maxSize: 50, blank: false)
    startDateTime(validator: {
      return it > new Date()
    })
    city(maxSize: 30, blank: false)
    state(inList: ['GA', 'NC', 'SC', 'VA'], blank: false)
    distance(min: 3.1f, max: 100f)
    cost(min: 0f, max: 999.99f)
  }

  String toString() { "${this.name} : ${this.city}, ${this.state}" }
}
Run Code Online (Sandbox Code Playgroud)

我想测试startDateTime字段的自定义验证.测试看起来像这样:

class RaceTests extends GrailsUnitTestCase {
  protected …
Run Code Online (Sandbox Code Playgroud)

grails grails-validation

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

RhinoMock:模拟Vs StrictMocks和DynamicMocks

我理解Mock和Stub之间的区别.

但是RhinoMock框架中不同类型的模拟混淆了我.

有人可以用RhinoMock框架来解释Mocks Vs StrictMocks和DynamicMocks的概念.

非常感谢您的回答.

tdd rhino-mocks mocking

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

Pythonic方式比较两个列表并打印不匹配的项目?

我有两个字典的Python列表,entries9和entries10.我想比较项目并将联合项目写入一个名为的新列表joint_items.我也想不匹配的项目保存到两个新的名单,unmatched_items_9和unmatched_items_10.

这是我的代码.获取joint_items和unmatched_items_9(在外部列表中)非常简单:但我如何获得unmatched_items_10(在内部列表中)?

for counter, entry1 in enumerate(entries9):
    match_found = False
    for counter2,entry2 in enumerate(entries10):
        if match_found:
            continue
        if entry1[a]==entry2[a] and entry1[b]==entry2[b]: # the dictionaries only have some keys in common, but we care about a and b
            match_found = True
            joint_item = entry1
            joint_items.append(joint_item)
            #entries10.remove(entry2) # Tried this originally, but realised it messes with the original list object!
    if match_found:
        continue
    else: 
        unmatched_items_9.append(entry1)
Run Code Online (Sandbox Code Playgroud)

性能不是真正的问题,因为它是一个一次性的脚本.

python list

2
推荐指数
1
解决办法
3148
查看次数

VBA脚本关闭除自身以外的所有Excel实例

我的错误处理函数中有一个子例程,该例程试图关闭在每个Excel实例中打开的每个工作簿。否则,它可能会保留在内存中并破坏我的下一个vbscript。它还应关闭每个工作簿而不保存任何更改。

Sub CloseAllExcel()
On Error Resume Next
    Dim ObjXL As Excel.Application
    Set ObjXL = GetObject(, "Excel.Application")
    If Not (ObjXL Is Nothing) Then
        Debug.Print "Closing XL"
        ObjXL.Application.DisplayAlerts = False
        ObjXL.Workbooks.Close
        ObjXL.Quit
        Set ObjXL = Nothing
    Else
        Debug.Print "XL not open"
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

但是,此代码并非最佳。例如,它可以在一个Excel实例中关闭2个工作簿,但是如果您打开2个excel实例,则只能关闭1个。

如何重写此代码以关闭所有 Excel,而不保存任何更改?

额外信用:

如何在不关闭承载此脚本的Access文件的情况下对Access进行此操作?

ms-access vba

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

jQuery验证器插件:验证可选字段

问题 我想使用我创建的自定义验证器验证字段,如果字段有值,则基本上是电话号码的正则表达式,否则不需要验证,因为它是可选的.

自定义验证器:

   $.validator.addMethod('phone', function (value) {
       return /^[01]?[- .]?\(?[2-9]\d{2}\)?[- .]?\d{3}[- .]?\d{4}$/.test(value);
   }, 'Please enter a valid US phone number.');
Run Code Online (Sandbox Code Playgroud)

规则:

 phone: {
  required: true,
  phone: true
 },
 fax: {
  phone: true
 }
Run Code Online (Sandbox Code Playgroud)

我甚至尝试过:

 phone: {
  required: true,
  phone: true
 },
 fax: {
  required: function(element){
   if (!$("#cf-fax").val()) { return true; } else { return false; }
  }
  phone: true
 }
Run Code Online (Sandbox Code Playgroud)

作为参考,这是我试图引用的字段:

<input type="text" name="fax" class="optional" size="15" maxlength="14" id="cf-fax" />
Run Code Online (Sandbox Code Playgroud)

任何帮助都表示赞赏,因为我很遗憾.= \

validation jquery jquery-plugins jquery-validate

8
推荐指数
1
解决办法
9462
查看次数