Tag: 算法

生成现有数组的所有组合的数组

如果我在Ruby中有一个数组,就像这样: [“foo”, “bar”, “bat”] 如何使用每个值组合生成新数组? 我需要输出看起来像这样: [“foo”, “bar”, “bat”, “foo-bar”, “foo-bat”, “bar-bat”, “foo-bar-bat”] 订单并不重要。 另外,我不需要”foo-bar”和”bar-foo” 。 原始arrays最多可包含5-6个成员。

Mysql结果按列表排序,每个用户都是唯一的

我有一个包含数千种产品和50个左右经过身份validation的用户的表。 这些用户都在自己的网站上展示产品,他们都需要能够以不同的方式订购产品。 我猜我需要一些包含product_id,user_id和order列的订单的单独表格? 我如何在mysql中最有效地执行此操作以便非常快速,并且如果我在数据库中获得数百万个产品,则不会减慢速度。 在mysql中执行它是否明智,或者我应该使用某种其他索引,如solr / lucene? 我的产品表称为“产品”我的用户表称为“用户” 我需要的function的一个很好的例子是谷歌搜索,如果您已登录,您可以在其中订购/抑制结果。 编辑:产品结果将被分页,用户有权编辑产品,因此它不仅仅是准备好的

找到> 500因子的第一个三角形数字的算法运行缓慢

这是我的算法,它找到带有> x因子的第一个三角形数字。 我可以把它运行到大约x = 150,然后它需要永远。 我可以做些什么改变来加快速度? 谢谢! def triangle_numbers_max_divisors(x) triangle_numbers = [] divisors = 0 a = 1; b = 2 until divisors > x divisors = 0 triangle_numbers.push(a) a = a + b; b += 1 for i in 1..triangle_numbers.last if triangle_numbers.last % i == 0 divisors += 1 end end end triangle_numbers.last end

用ruby写的链表

我正在准备技术面试,并将被要求为ruby中的链表编写算法。 我完全理解链接列表,但一直在努力编写代码。 有人能告诉我这是怎么做到的吗? 我在下面开始.. class Node def initialize(item) @item = item @next = nil end end

Ruby:字符串重建算法,只能部分工作

我正在研究Ruby中的字符串重建算法(动态编程示例中的经典,将空间少的文本转换为正常的间隔文本)。 下面的代码是纯ruby,你可以立即复制粘贴并开始测试 ,它在80%的时间内工作并且往往会破坏,字典变得越大。 我用超过80k字的词典测试了它,它的效果不太好,大约70%的时间。 如果有一种方法可以使它在字典中出现100%的效果,请告诉我。 这是代码:(它间距很大,应该非常易读) # Partially working string reconstruction algo in pure Ruby # the dictionary def dict(someWord) myArray = [” “, “best”, “domain”, “my”, “successes”, “image”, “resizer”, “high”, “tech”, “crime”, “unit”, “name”, “edge”, “times”, “find”, “a”, “bargain”, “free”, “spirited”, “style”, “i”, “command”, “go”, “direct”, “to”, “harness”, “the”, “force”] return !!(myArray.index(someWord)) end # […]

如何从数组中获得优化选择

我有几个哈希数组(假设我有三个)如下: a = [{ cost: 10, value: 20}, { cost: 9, value: 20}, { cost: 10, value: 22}, { cost: 2, value: 10} ] b = [{ cost: 4, value: 20}, { cost: 9, value: 20}, { cost: 15, value: 22}, { cost: 12, value: 10} ] c = [{ cost: 10, value: 21}, { […]

在边界内的表面上分布点

我对在四边形表面(如正方形)上分布预定义数量的点的方法(算法)感兴趣。 主要问题是每个点必须具有彼此的最小和最大接近度(在两个预定义值之间随机)。 基本上任何两点的距离都不应该比说2更接近,而不是3。 我的代码将在ruby中实现(点是位置,表面是地图),但任何想法或片段都是受欢迎的,因为我的所有想法都包括相当多的蛮力。

散列数组中特定键的不同出现次数

我有一个这样的数组: array = [{“id”=>”id1”, “email”=>”name@organization.com”, “sess”=>”sess1”}, {“id”=>”id2”, “email”=>”name@organization.com”, “sess”=>”sess2”}, {“id”=>”id3”, “email”=>”name@organization.com”, “sess”=>”sess2”}, {“id”=>”id4”, “email”=>”name@organization.com”, “sess”=>”sess3”}, {“id”=>”id5”, “email”=>”name@organization.com”, “sess”=>”sess2”}, {“id”=>”id6”, “email”=>”name@organization.com”, “sess”=>”sess3”}, {“id”=>”id7”, “email”=>”name@organization.com”, “sess”=>”sess2”}, {“id”=>”id8”, “email”=>”name@organization.com”, “sess”=>”sess5”}, {“id”=>”id9”, “email”=>”name@organization.com”, “sess”=>”sess2”}, {“id”=>”id10”, “email”=>”name@organization.com”, “sess”=>”sess2”},] 我怎么能以简洁的方式做一些能够不经重复地返回所有不同出现的“sess”的东西?: [“sess1”, “sess2”, “sess3”, “sess5”] 我已经开始编写一个循环来迭代所有元素,并在每次“sess”值已经存在的情况下构建一个新的哈希检查,但我确信在Ruby中必须有更好的方法。

跨越检查板算法改进

由于David Kahn的书“ The Codebreakers” ,我正在尝试使用Ruby类来处理旧密码,例如Nihilist密码和ADFGVX,古代密码学是我的爱好之一。 对于这些,一个有用的项目是跨越检查板 。 我在Ruby中有以下实现,并欢迎任何改进。 class Key是基类(如果需要,可以是虚拟类)。 Key#condensed是一种从给定单词中删除重复字母的方法。 class SKey < Key attr_reader :full_key attr_reader :alpha, :ralpha def initialize(key) super(key) @alpha = Hash.new @ralpha = Hash.new @full_key = checkboard() gen_rings() end # === checkboard # # Shuffle the alphabet a bit to avoid sequential allocation of the # code numbers # # […]

如何在Ruby中对世界杯组表进行排序

我正在编写一个算法来根据匹配数据创建和排序世界杯组表。 因此,给出以下匹配数据: [ { id: 1, home_team: “Honduras”, away_team: “Chile”, home_score: 0, away_score: 1 }, { id: 2, home_team: “Spain”, away_team: “Switzerland”, home_score: 0, away_score: 1 }, { id: 3, home_team: “Chile”, away_team: “Switzerland”, home_score: 1, away_score: 0 }, { id: 4, home_team: “Spain”, away_team: “Honduras”, home_score: 2, away_score: 0 }, { id: 5, home_team: […]