直接看代码和注释
注意一个条件,不符合条件的放到队列尾部
# coding=utf-8
class PrinterJobs(object):
"""
打印机任务排序
打印任务分为九个优先级,1-9值越大,优先级越高
打印机每次从队列头部取出第一个任务,如果优先级是最大则执行该任务,输出任务的索引,否则将任务放到队列尾部
"""
def __init__(self, jobs_list):
"""
预处理入参
:param jobs_list: 任务优先级构成的数组
"""
# 用于记录是否有错误
message = None
if isinstance(jobs_list, list):
for check in jobs_list:
if 1 <= check <= 9:
pass
else:
message = "Error in `{}` with `{}`, check please!".format(jobs_list, check)
else:
message = "Error in `{}` , check please!".format(jobs_list)
if message:
print message
jobs_list = []
# 用于记录索引的原数组
self.old_list = jobs_list
# 降序排列后的新数组
self.new_list = self.order_list()
def order_list(self):
"""
排序
:return: 降序排列的新数组
"""
tmp = []
for i in self.old_list:
tmp.append(i)
tmp.sort(reverse=True)
return tmp
def get_work_order(self):
"""
获取任务工作顺序
"""
lenth = len(self.old_list) - 1
# 新数组索引
new_index = 0
# 原数组索引
old_index = 0
# 统计算法次数
count = 0
# 遍历完成一次有序数组即可
while new_index <= lenth:
if self.new_list[new_index] == self.old_list[old_index] and self.new_list[new_index] != 0:
print "value is {}, index is {}".format(self.old_list[old_index], old_index)
# 循环遍历原数组,找到当前第一个最大值,输出之和索引后置为0,不参与后续的比较
self.old_list[old_index] = 0
# 有序数组前进一位
new_index += 1
# 原数组遍历下一位
old_index += 1
# 等同于将非最大任务放入队尾,起到循环遍历的效果
if old_index > lenth:
old_index = 0
# 统计比较运算+1
count += 1
print "本次任务一共进行了 {} 次比较运算".format(count)
运行结果示例:
if __name__ == '__main__':
a = [1, 9, 2, 1]
Job = PrinterJobs(jobs_list=a)
Job.get_work_order()
value is 9, index is 1
value is 2, index is 2
value is 1, index is 3
value is 1, index is 0
本次任务一共进行了 5 次比较运算
先输出9后面的1,再输出9前面的1,符合条件预期
我试图在一个项目中使用rake,如果我把所有东西都放到Rakefile中,它会很大并且很难读取/找到东西,所以我试着将每个命名空间放在lib/rake中它自己的文件中,我添加了这个到我的rake文件的顶部:Dir['#{File.dirname(__FILE__)}/lib/rake/*.rake'].map{|f|requiref}它加载文件没问题,但没有任务。我现在只有一个.rake文件作为测试,名为“servers.rake”,它看起来像这样:namespace:serverdotask:testdoputs"test"endend所以当我运行rakeserver:testid时
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby
在rails源中:https://github.com/rails/rails/blob/master/activesupport/lib/active_support/lazy_load_hooks.rb可以看到以下内容@load_hooks=Hash.new{|h,k|h[k]=[]}在IRB中,它只是初始化一个空哈希。和做有什么区别@load_hooks=Hash.new 最佳答案 查看rubydocumentationforHashnew→new_hashclicktotogglesourcenew(obj)→new_has
如何使用RSpec::Core::RakeTask初始化RSpecRake任务?require'rspec/core/rake_task'RSpec::Core::RakeTask.newdo|t|#whatdoIputinhere?endInitialize函数记录在http://rubydoc.info/github/rspec/rspec-core/RSpec/Core/RakeTask#initialize-instance_method没有很好的记录;它只是说:-(RakeTask)initialize(*args,&task_block)AnewinstanceofRake
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden
我的主要目标是能够完全理解我正在使用的库/gem。我尝试在Github上从头到尾阅读源代码,但这真的很难。我认为更有趣、更温和的踏脚石就是在使用时阅读每个库/gem方法的源代码。例如,我想知道RubyonRails中的redirect_to方法是如何工作的:如何查找redirect_to方法的源代码?我知道在pry中我可以执行类似show-methodmethod的操作,但我如何才能对Rails框架中的方法执行此操作?您对我如何更好地理解Gem及其API有什么建议吗?仅仅阅读源代码似乎真的很难,尤其是对于框架。谢谢! 最佳答案 Ru
我的假设是moduleAmoduleBendend和moduleA::Bend是一样的。我能够从thisblog找到解决方案,thisSOthread和andthisSOthread.为什么以及什么时候应该更喜欢紧凑语法A::B而不是另一个,因为它显然有一个缺点?我有一种直觉,它可能与性能有关,因为在更多命名空间中查找常量需要更多计算。但是我无法通过对普通类进行基准测试来验证这一点。 最佳答案 这两种写作方法经常被混淆。首先要说的是,据我所知,没有可衡量的性能差异。(在下面的书面示例中不断查找)最明显的区别,可能也是最著名的,是你的
几个月前,我读了一篇关于rubygem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题: