gpt4 book ai didi

ruby - Ruby 中的位掩码 : Get numbers which generated the bitmask

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:44:14 26 4
gpt4 key购买 nike

目前我将一组项目的组合存储为单个整数(位掩码值),如下例所示:

示例:

1 - Orange 
2 - Banana
4 - Cherry
8 - Apple

然后如果用户选择Orange (1) 和Apple (8) 那么那些是9

并且始终且仅当这两项组合在一起时,此值才为 9

并且您能够恢复用于生成此数字的原始两个数字。

这是一个可以解决问题的示例网站: http://www.tfxsoft.com/playground/calc.php

我需要什么:

我需要一个算法(最好是在 Ruby 中),它将取这两个位掩码值的总和 (9) 并返回它“包含”的值(1 和 4)。

最佳答案

我认为这可能是您正在寻找的:

FRUIT = { 1 => 'Orange', 2 => 'Banana', 4 => 'Cherry', 8 => 'Apple' }

def mask_fruit(a, b) a | b end
def unmask_fruit(masked)
FRUIT.select { |k, _| (masked | k) == masked }
end

mask = mask_fruit 1, 8 # => 9
unmask_fruit mask # => {1=>"Orange", 8=>"Apple"}

关于ruby - Ruby 中的位掩码 : Get numbers which generated the bitmask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30059235/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com