`

hash最小值过滤算法

阅读更多
[["数量","包装","价格"],["数量","包装","价格"],["数量","包装","价格"]]

要求取出相同包装数量的最低价格结果集

例子:[[10,"kg",200],[10,"kg",300],[20,"kg",100],[20,"kg",200],[30,"kg",200]]

results = [[10,"kg",200],[10,"kg",300],[20,"kg",100],[20,"kg",200],[30,"kg",200]]
result_hash = {}
results.each do |result|
     result_hash[result[0]] = result unless result_hash[package_unit].present? && result_hash[result[0]][0] > result[0]
end
results = result_hash.values




StockChemicalPrice 模型下有一个字断记录报价方案:
{levels: "5,10,100", prices: "100,200,300", fees: "0,0,10"}
解析报价方案,取同包装最低报价方案

def get_stock_hash(source_entity_type)
    return_result = []
    purity_stock  = StockChemicalPrice.standard_package.where(active: 1, stock_chemical_id: self.id, source_entity_type: source_entity_type).group_by(&:purity)
    purity_stock.each do |purity,stocks|
      stocks.group_by(&:package_unit).each do |package_unit,stock|
        results = []
        stock.each do |data|
          purity = purity
          package_unit = package_unit
          package_unit_int = data.package_unit_before_type_cast
          stock_id = data.id
          levels = data.hash_rules[:levels].split(',')
          prices = data.hash_rules[:prices].split(',')
          levels.each_with_index do |l,i|
            results << [stock_id,"#{l}#{package_unit}",purity,package_unit,prices[i],l,package_unit_int]
          end
          if levels.uniq != levels
            result_hash = {}
            results.each do |result|
              result_hash[result[4]] = result unless result_hash[package_unit].present? && result_hash[result[4]][4] > result[4]
            end
            results = result_hash.values
          end
        end
        return_result += results
      end
    end
    return return_result
  end
0
0
分享到:
评论

相关推荐

    高运算性能,低碰撞率的hash算法MurmurHash算法.zip

    MurmurHash算法由Austin Appleby创建于2008年,现已应用到Hadoop、libstdc 、nginx、libmemcached,Redis,Memcached,Cassandra,HBase,Lucene等开源系统。2011年Appleby被Google雇佣,随后Google推出其变种的...

    常用的hash算法(java实现)

    在计算机科学中,哈希(Hash)算法是一种用于将任意长度的数据映射为固定长度输出的函数。这种输出通常称为哈希值或消息摘要。在Java编程语言中,实现哈希算法可以方便地用于数据验证、查找表以及密码存储等多种用途...

    C语言实现hash算法

    在IT领域,哈希算法(Hash Algorithm)是一种用于将任意长度的数据转化为固定长度输出的算法。这个过程通常称为哈希或散列。哈希算法在信息安全、数据完整性验证、密码学等多个方面都有着广泛的应用。本项目是用...

    20多个常用的Hash算法C++ 实现

    Hash函数集合,包含主流的hash函数: nginx_hash算法,OpenSSL_hash算法,RSHash,JSHash,PJWHash,ELFHash,BKDRHash,DJBHash,DEKHash,APHash等等!

    图像的相似度Hash算法(aHash的delphi实现).rar

    在IT领域,Hash算法是一种广泛应用于数据验证、存储和比较的技术。它将任意长度的数据转换成固定长度的输出,通常称为Hash值或指纹。在这个压缩包中,我们重点关注的是图像的相似度Hash算法,特别是平均哈希算法(a...

    转载 : 基于Bloom-Filter算法的URL过滤器的实现.txt

    ### 基于Bloom-Filter算法的URL过滤器实现详解 #### 一、Bloom-Filter算法简介 Bloom Filter是一种空间效率极高的概率型数据结构,它由Burton Howard Bloom在1970年提出。Bloom Filter主要用于判断一个元素是否在...

    Java实现GeoHash算法

    Java实现GeoHash算法是一种在IT领域中用于地理位置数据存储和检索的技术。GeoHash将经纬度坐标转换为字符串,使得地理位置可以被高效地索引和查询。这种算法利用了空间分割和编码策略,使得相邻的位置在编码后具有...

    多次Hash快速分词算法

    ### 多次Hash快速分词算法 #### 一、引言 中文文本处理与英文文本处理存在显著差异,其中最重要的一点在于中文词汇之间没有明显的分隔符(如空格)。这一特点使得中文分词成为了中文信息处理领域的基础任务之一。...

    hash join算法原理

    Hash Join 算法是一种高效的数据库连接操作,尤其在处理大数据量的相等连接时表现优越。它在Oracle 7.3版本引入,只适用于相等连接,并且必须在Cost-Based Optimizer (CBO)模式下运行。不同于Nested Loop Join,Hash...

    hash算法工具类

    一个hash算法的工具类,里面包含了一些常用的hash算法

    hash算法相关介绍

    ### Hash算法相关介绍 在计算机科学领域,哈希(Hash)是一种将任意长度的数据映射为固定长度数据的技术。哈希算法广泛应用于多种场景中,包括但不限于数据完整性验证、密码存储、快速查找等。本文主要介绍了几种...

    几种经典的Hash算法的实现(源代码)

    ### 经典Hash算法概述与实现 #### 一、引言 哈希算法在计算机科学领域扮演着极其重要的角色,特别是在数据检索、信息安全以及数据完整性校验等方面。它能够将任意长度的数据转换成一个固定长度的哈希值,这一过程在...

    geohash算法实现Java代码

    GeoHash算法是一种基于地理坐标的分布式空间索引技术,它通过将地球表面的经纬度坐标转化为可比较的字符串,使得我们可以高效地进行地理位置的搜索、范围查询以及邻居查找等操作。这种算法尤其适用于大数据和分布式...

    Hash算法MD5实验报告材料.doc

    "Hash算法MD5实验报告材料" 本实验报告主要介绍了Hash算法MD5的实验报告,旨在通过实际编程来了解MD5算法的加密和解密过程,并加深对Hash算法的认识。 一、Hash算法的定义 Hash算法是一种将输入数据转换为固定...

    Go-fasthashgo写的一个hash算法比标准hash算法的速度更快占用内存更低

    在编程领域,哈希算法(Hash Algorithm)是用于将任意长度的数据映射为固定长度的输出,通常这个输出称为哈希值。哈希算法在很多场景下被广泛应用,如数据完整性校验、缓存查找、数据库索引等。Go语言标准库中提供了...

Global site tag (gtag.js) - Google Analytics