小编ram*_*ion的帖子

高效的算法随机选择频率项目

给定一组n字频对:

[ (w0, f0), (w1, f1), ..., (wn-1, fn-1) ]

在哪里是一个单词,是整数频率,以及频率的总和,wifi∑fi = m

我想使用伪随机数生成器(pRNG)来选择p单词,以便选择任何单词的概率与其频率成正比:wj0, wj1, ..., wjp-1

P(wi = wjk) = P(i = jk) = fi / m

(注意,这是替换选择,因此每次可以选择相同的单词).

到目前为止,我已经提出了三种算法:

  1. 创建一个大小数组m,并填充它以便第一个条目,下一个条目,等等,所以最后的条目是.f0w0f1w …

random algorithm big-o

10
推荐指数
2
解决办法
1914
查看次数

从JRuby实例化非静态Java内部类

所以给出以下java类:

class Outer
{
  private int x;
  public Outer(int x) { this.x = x; }
  public class Inner
  {
    private int y;
    public Inner(int y) { this.y = y; }
    public int sum() { return x + y; }
  }
}
Run Code Online (Sandbox Code Playgroud)

我可以通过以下方式从Java创建内部类的实例:

Outer o = new Outer(1);
Outer.Inner i = o.new Inner(2);
Run Code Online (Sandbox Code Playgroud)

但是,我似乎无法从JRuby那样做

#!/usr/bin/env jruby
require 'java'
java_import 'Outer'

o = Outer.new(1);
i = o.Inner.new(2); #=> NoMethodError: undefined method `Inner' for #<Outer...>
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?

ruby java jruby inner-classes

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

如何在类型类中指定两个操作通勤?

我开始阅读关于CRDT的这篇论文,这是一种通过确保修改数据的操作是可交换的,同时共享可修改数据的方法.在我看来,这将是Haskell中抽象的一个很好的候选者 - 为CRDT提供一个类型类,指定数据类型和在该类型上通信的操作,然后使库实际上在并发进程之间共享更新.

我无法想象的是如何表达操作必须在类型类规范中通勤的合同.

举个简单的例子:

class Direction a where
  turnLeft :: a -> a
  turnRight :: a -> a
Run Code Online (Sandbox Code Playgroud)

不能保证和它turnLeft . turnRight一样turnRight . turnLeft.我认为后备是指定monad定律的等价物 - 使用注释来指定类型系统不强制执行的约束.

haskell typeclass commutativity

10
推荐指数
2
解决办法
671
查看次数

从CSV文件加载数据,其中doublequote用作转义字符

我有一堆CSV数据需要加载到MySQL数据库中.好吧,也许是CSV-ish.(编辑:实际上,它看起来像RFC 4180中描述的东西)

每行都是以逗号分隔的双引号字符串列表.要转义出现在列值中的任何双引号,请使用双引号.允许反斜杠代表自己.

例如,行:

"", "\wave\", ""hello,"" said the vicar", "what are ""scare-quotes"" good for?", "I'm reading ""Bossypants"""
Run Code Online (Sandbox Code Playgroud)

如果解析成JSON应该是:

[ "", "\\wave\\", "\"hello,\" said the vicar", "what are \"scare-quotes\" good for?", "I'm reading \"Bossypants\"" ]
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用它LOAD DATA来读取CSV,但我遇到了一些奇怪的行为.


举个例子,考虑一下我是否有一个简单的两列表

shell% mysql exampledb -e "describe person"
+-------+-----------+------+-----+---------+-------+
| Field | Type      | Null | Key | Default | Extra |
+-------+-----------+------+-----+---------+-------+
| ID    | int(11)   | YES  |     | NULL    |       |
| UID   | char(255) …
Run Code Online (Sandbox Code Playgroud)

mysql sql csv load-data-infile rfc4180

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

快乐和亚历克斯如何引导自己成为存在?

源树happy中包含AttrGrammarParser.lyParser.ly和源树alex包含Scan.x.然而,据我所知,为了编译happy,我们需要使用... 将.ly文件转换为.lhs文件happy,并且为了编译,alex我们需要使用... 将.x文件转换为.hs文件alex.

因此,为了编译任一工具,似乎必须进行一些自举.

Setup.lhs每个项目的文件都包含一些模板扩展,但据我所知,不要做任何特别的事情来进行自举.

引导如何以及在哪里完成?

bootstrapping haskell alex happy

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

Javascript和`<> ... </>`标签

所以我最近发现我可以<>...</>在Firefox中使用javascript中的标签,这在定义HTML或CSS块时很方便.

GM_addStyle(<><![CDATA[
  .page { display: block }
  /* ... */
  td { vertical-align: top }
]]></>);
//...
div.innerHTML = <><![CDATA[
  <table class="section">
    <!-- ... -->
  </table>
]]></>;
Run Code Online (Sandbox Code Playgroud)

但我不确定发生了什么,我喜欢理解我正在使用的语法.到底是什么<>...</>回报?我注意到当我将内容包含在内时逃逸效果更好<![CDATA[...]]>,那么那里发生了什么?这只是Firefox还是跨浏览器?

我尝试在线查看,但遇到了正常的谷歌/符号问题.此外,谷歌CDATA JavaScript的大多数结果似乎并不相关.

javascript cdata

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

查找准备从FILE*或文件描述符中读取的字节数

给定一个FILE*或一个文件描述符,是否有一种标准的方法来告诉你有多少字节可以读取?

我不能使用,s=ftell(f),fseek(f,0,SEEK_END),e=ftell(f),fseek(f,s,SEEK_SET),e-s因为FILE*它只包装了我得到的文件描述符pipe(2),ESPIPE当我尝试时,我得到了.

我正在考虑使用select(2)零超时来告诉我至少有一个字节准备好被读取,然后一次读取一个字节,直到select(2)告诉我停止.这看起来有点笨拙而且很慢.

有一个更好的方法吗?

c pipe file-descriptor

9
推荐指数
2
解决办法
8040
查看次数

Haskell:常见的Corecursive谬误

所以今晚我正在考虑一个图形距离算法,并在我开车时想到了这个:

module GraphDistance where
import Data.Map

distance :: (Ord a) => a -> Map a [a] -> Map a Int
distance a m = m' 
  where m' = mapWithKey d m
        d a' as = if a == a' then 0 else 1 + minimum (Prelude.map (m'!) as)
Run Code Online (Sandbox Code Playgroud)

起初,我为自己感到骄傲,因为它看起来很优雅.但后来我意识到它不起作用 - 核心运行可能会陷入循环中.

我不得不编码来说服自己:

ghci> distance 1 $ fromList [(0,[1]),(1,[0,2]),(2,[1,3]),(3,[2])]
fromList [(0,1),(1,0),(2,^CInterrupted.
Run Code Online (Sandbox Code Playgroud)

但现在我觉得我已经考虑过了.

在处理我可以阅读的核心数据时是否有常见错误和反模式的列表,所以我可以训练我的大脑进行核心思考?经验训练我很好地思考非核心数据,但如果可以的话,我想从别人的错误中吸取教训.

haskell graph graph-algorithm

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

Haskell:(!!)有安全/完整版本吗?

我试着查看Int -> [a] -> Maybe ahoogle,但没有运气.

我觉得这应该在某个标准库中,但我不知道在哪里.

haskell

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

使用DataMapper时找不到_mysql_init

我有一个简单的MySQL表:

% mysql -u rampion dev -e 'describe person'
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | UNI | NULL    | auto_increment |
| uid   | varchar(256) | NO   | PRI | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
Run Code Online (Sandbox Code Playgroud)

我想运行一个简单的DataMapper脚本:

# temp.rb
require 'rubygems'
require 'datamapper'

DataMapper::Logger.new($stdout, :debug)
DataMapper.setup(:default, "mysql://rampion@localhost/dev")

class Person
  include DataMapper::Resource
  property :id,     Serial
  property :uid,    String
end

DataMapper.finalize

p Person.first_or_create(:uid => 'Steve')
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,我得到动态链接器错误:

% ruby …
Run Code Online (Sandbox Code Playgroud)

ruby mysql datamapper

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