甚至阅读标准文档后,我仍然无法理解如何Ruby的Array#pack和String#unpack准确的工作.这是导致我最麻烦的例子:
irb(main):001:0> chars = ["61","62","63"]
=> ["61", "62", "63"]
irb(main):002:0> chars.pack("H*")
=> "a"
irb(main):003:0> chars.pack("HHH")
=> "```"
Run Code Online (Sandbox Code Playgroud)
我希望这两个操作都返回相同的输出:"abc".他们每个人都以不同的方式"失败"(因为我可能期待错误的事情,所以不是真的失败).所以有两个问题:
假设我想在一个大的(300,000个字母)中找到"狗"这个词,两个字母之间的距离恰好在 40,000个字母之间.所以我这样做:
$mystring =~ m/d.{40000}o.{40000}g.{40000}s/;
Run Code Online (Sandbox Code Playgroud)
这在其他(较慢的)语言中可以很好地工作,但是在Perl中,它会使我"在{,}中的量词大于正则表达式中的32766".
所以:
Ruby的gsub字符串方法应该接受哈希.正如这里所写:
http://www.ruby-doc.org/core/classes/String.html#M001185
"如果第二个参数是Hash,匹配的文本是其中一个键,则相应的值是替换字符串."
他们举了一个例子:
'hello'.gsub(/[eo]/, 'e' => 3, 'o' => '*') #=> "h3ll*"
Run Code Online (Sandbox Code Playgroud)
问题是,它对我不起作用(ruby 1.8.7):
in `gsub': can't convert Hash into String (TypeError)
Run Code Online (Sandbox Code Playgroud)
这种情况发生在同一条线上.为什么?
Matlab有一个很好的属性,标量函数(例如sin)可以在数组上工作,对数组的任何元素进行操作并返回数组作为结果.
我有一个标量函数f(x,p),其中x是一个标量,并且p是一个参数(实际上是一个参数数组).给定一个固定的参数p,我希望f(x,p)在一个数组上运行A.在像Ruby这样的语言中,它看起来像这样:
A.collect{|x| f(x,p)}
Run Code Online (Sandbox Code Playgroud)
但我不知道如何在Matlab中为接受参数的函数而不仅仅是我想要操作的数组中的标量.
SymPy配备了很好的sympify()函数,它可以将任意字符串解析为SymPy表达式.但它有两个主要缺点:
所以我的问题是:
首先,有没有办法"只解析"字符串,而无需任何额外的计算?我想实现这样的效果:
latex(parse('binomial(5,3)')) #returns '{\\binom{5}{3}}'
Run Code Online (Sandbox Code Playgroud)
第二,是否有一种可接受的方式来同意(即解析和计算)任意用户生成的字符串,同时保持安全?这是由SymPy Gamma完成的,所以在实践中这是可能的,但问题是需要多少脏工作.
我在我的页面中有这个代码:
<a href onClick="return false;">Press me!</a>
Run Code Online (Sandbox Code Playgroud)
该链接位于具有有用的onClick事件的范围内.
现在,在Chrome和Firefox中,这非常有效.点击链接,执行有用的事件,每个人都很开心.在使用默认Safari浏览器的iOS(iPhone和iPad)中,这会失败 - 在单击链接后,将重新加载整个页面,并且永远不会执行有用的事件.
我也试过了
<a href="#" onClick="return false;">Press me!</a>
Run Code Online (Sandbox Code Playgroud)
我明白这是错误的做法.在Chrome和Firefox中,它运行良好,但在iOS的Safari中,它跳回到页面的开头(但是DID执行有用的事件,所以从某种意义上说它更好).
我错过了什么?
对自然数的"强"(或"完全")归纳意味着当在n上证明归纳步骤时,您可以假设该属性适用于任何k
Theorem strong_induction:
forall P : nat -> Prop,
(forall n : nat, (forall k : nat, (k < n -> P k)) -> P n) ->
forall n : nat, P n.
Run Code Online (Sandbox Code Playgroud)
我设法证明这个定理没有太多困难.现在我想在一个新的策略strong_induction中使用它,它应该类似于自然数字上的标准"感应n"技术.回想当使用"感应n"时,当n是自然数并且目标是P(n)时,我们得到两个目标:形式P(0)之一和形式P(S(n))中的第二个,对于第二个目标,我们得到P(n)作为假设.
因此,当目前的目标是P(n)时,我希望得到一个新目标,也就是P(n),但新假设"forall k:nat,(k <n - > P(k)))".
问题是我不知道如何在技术上做到这一点.我的主要问题是:假设P是一个复杂的陈述,即
exists q r : nat, a = b * q + r
Run Code Online (Sandbox Code Playgroud)
ab:nat在上下文中; 我如何告诉Coq在a上进行强诱导而不是b?只需执行"应用strong_induction"即可
n : nat
H0 : forall k : nat, k < n -> exists q r : nat, a = b * q + r …Run Code Online (Sandbox Code Playgroud) 我想在我的博客中添加一个页面,其中包含指向博客中所有帖子的链接.不仅是页面中的10个或者其他东西,而是所有这些(如果这是一个坏主意我会有兴趣知道为什么).
除了链接,每个帖子的名称和日期也会很好.
这应该是非常简单但我没有谷歌它:如何(如果有的话)我可以重载Python中的parantheses运算符?这样代码才有意义:
my_new_object = my_new_class()
x = my_new_object(5)
Run Code Online (Sandbox Code Playgroud)