好吧,我会尽量把我的问题说清楚,我希望通过Ruby得到答案,因为我目前正在学习Ruby on Rails,但是如果他们解决了问题当然欢迎其他解决方案和服务.
假设我有一个 Colors 模型,其名称为 number 属性。
该模型将收到的颜色将仅限于蓝色、绿色和粉红色,其 30 个数字:EX:10 蓝色、10 绿色和 10 粉色。
所以考虑到我的模型颜色只会注册:
[{name: "blue", number: "3"}, {name: "blue", number: "4"}, {name: "green", number: "12"}] ...
问题在于我无法弄清楚从哪里开始寻找预定义的模式并在模式正确后做出响应。例如:
假设我有一个带有模式的列表: ["blue", "blue", "blue", "blue"]
每次我的模型收到一种新颜色时,从最后一个出来的颜色开始,并且它之前的颜色形成与上面相同的图案,我都会得到一种回报。
我只是无法想象从哪里开始。我想到了一个像这样的简单方法,在每条新记录的回调中执行。但是我应该在哪里实现呢?颜色列表将在哪里保留以添加新颜色并与建议的标准相同?
pattern = ["blue", "blue", "blue", "blue"]
last_record = Color.first
def monitor_pattern(last_record, pattern)
color_list = []
color_list.push(last_record.name)
if color_list == pattern
return true
else
return false
end
end
我不知道我是否清楚,但我感谢任何帮助!
编辑
您好朋友,感谢您的回答...好吧,我们开始,这是我的应用程序https://historicosblaze.com/doubles
现在让我们看看我是否可以解释一下,如果您在应用程序中注意到,每隔几秒就会注册一种新颜色,这些颜色正在银行中注册。
如果您看,颜色可以创建图案,例如,连续 3 个红色,连续 7 个黑色,1 个红色 1 个黑色 1 个红色 1 个黑色......等等,假设我已经预先建立了图案并想继续监控新记录的到来,我无法想象我应该在哪里以及用什么来监控这些模式的创建,例如,如果在最后输出 1 个红色,然后是 7 个红色,它形成了一个连续 8 个红色的模式,这是一个预先建立的模式,8红色,这一定是在某个地方被监控和记录的。
https://drive.google.com/file/d/1ZOpl2qS2z2xuncoAqkNidlaa-POijKVP/view?usp=sharing
回答1
我不完全确定我是否正确理解了您的要求,但感觉这可能是您正在寻找的:
def monitor_pattern(pattern)
last_four_colors = Color.last(4)
pattern == last_four_colors.map(&:name)
end