小编Sea*_*ner的帖子

将字符串日期格式从"2011年11月17日"转换为"11/17/11"

我有这个代码,将日期字符串数组从2011年11月17日格式转换为11/17/11:

def date_convert dates
  months = { 'Jan' => 1, 'Feb' => 2, 'Mar' => 3, 'Apr' => 4, 
             'May' => 5, 'Jun' => 6, 'Jul' => 7, 'Aug' => 8, 
             'Sep' => 9, 'Oct' => 10, 'Nov' => 11, 'Dec' => 12 }
  new_dates = []
  dates.each do |date|
    date_split = date.split('-')
    month = months[date_split[1]] 
    day = date_split[0]
    year = date_split[2][-2, 2]
    new_dates.push ("#{month}/#{day}/#{year}")
  end
  new_dates
end
Run Code Online (Sandbox Code Playgroud)

是否有更好的,可能内置的方式来使用Ruby进行这种转换?我正在学习Ruby,所以任何其他方法都会非常感激.

ruby formatting date

13
推荐指数
3
解决办法
1万
查看次数

如何更快地解决项目euler#21?

原始问题

设d(n)定义为n的适当除数之和(小于n的数均匀分成n).如果d(a)= b并且d(b)= a,其中ab,则a和b是友好对,并且a和b中的每一个被称为友好数字.

例如,220的适当除数是1,2,4,5,10,11,20,22,44,55和110; 因此d(220)= 284. 284的适当除数是1,2,4,71和142; 所以d(284)= 220.

评估10000以下所有友好数字的总和.

我通过生成1到10000之间的所有数字的哈希值和它们对应的除数和(即hash [220] = 284)来解决了这个问题.然后我将散列中的项目与散列的副本进行比较......无论如何,它都有效,但需要很长时间.我怎样才能让它更快?

def proper_divs_sum num
  divs = [1]
  for i in 2..((num/2) + 1)
    if num % i == 0
      divs.push i
    end
  end

  divs_sum = 0
  divs.each do |div|
    divs_sum += div
  end
  return divs_sum
end

def n_d_hash_gen num
  nd_hash = {}
  for i in 1..num
    nd_hash[i] = proper_divs_sum(i)
  end
  return nd_hash
end

def amicables num
  amicable_list = []
  hash1 = n_d_hash_gen(num)
  hash2 = n_d_hash_gen(num)

  hash1.each …
Run Code Online (Sandbox Code Playgroud)

ruby

5
推荐指数
2
解决办法
1547
查看次数

为什么这个Ruby case语句在与||一起使用时返回"无法将nil转换为String(TypeError)"?

我最初将此代码编写为一系列if语句,但在了解了更多关于Ruby的决定之后,决定一个case语句可能更合适.然而,现在它似乎被打破了,我不知道为什么.

location = gets.chomp.downcase

case location
when 'v' || 'vaca'
  file1, file2 = 'vMasterLocation.csv', 'vMasterSR.csv'
when 'c' || 'comm'
  file1, file2 = 'cMasterLocation.csv', 'cMasterSR.csv'
else
  puts "Not a valid location."
  exit
end
Run Code Online (Sandbox Code Playgroud)

声明运行正常时location的输入或者是V,v,C,或c,但每当我试着输入vacacomm红宝石返回以下内容:csv.rb:1335:in 'initialize': can't convert nil into String (TypeError)

我使用||不正确或者我误解了案例陈述吗?任何反馈都非常感谢.谢谢!

这里它的形式if仅作为参考:

location = gets.chomp.downcase
if location == 'v' || location == 'vaca'
  file1, file2 = 'vMasterLocation.csv', …
Run Code Online (Sandbox Code Playgroud)

ruby syntax case-statement

1
推荐指数
1
解决办法
935
查看次数

标签 统计

ruby ×3

case-statement ×1

date ×1

formatting ×1

syntax ×1