我遇到以下问题的字符串数值时遇到问题。 我已经从这里包含的文件http://projecteuler.net/project/words.txt读取并且我成功阅读了它,但我不知道我的switch-case是否工作不正常,或者我是否遇到数组问题,我主要用c ++编程我试图学习ruby,所以我对ruby语法的理解仍然是最基本的
#!/usr/bin/ruby -w
words = []
words = File::read("words.txt")
parts = words.split(',')
puts parts
c=0
while parts != "YOUTH"
a=0
case parts
when 'A'
a+=1
when 'B'
a+=2
when 'C'
a+=3
when 'D'
a+=4
when 'E'
a+=5
when 'F'
a+=6
when 'G'
a+=7
when 'H'
a+=8
when 'I'
a+=9
when 'J'
a+=10
when 'K'
a+=11
when 'L'
a+=12
when 'M'
a+=13
when 'N'
a+=14
when 'O'
a+=15
when 'P'
a+=16
when 'Q'
a+=17
when 'R'
a+=18
when 'S'
a+=19
when 'T'
a+=20
when 'U'
a+=21
when 'V'
a+=22
when 'W'
a+=23
when 'X'
a+=24
when 'Y'
a+=25
when 'Z'
a+=26
end
b = false
i = 1
k= 0
while b = false
k += i
i += 1
if a == k || i >15
b == true
end
end
end
答案 0 :(得分:0)
好!所以这里有一些提示你的问题:
"string".split(//)
#=> ["s", "t", "r", "i", "n", "g"]
"string".split(//).first
#=> "s"
"string".split(//).first(1)
#=> ["s"]
"string".split(//).first(3)
#=> ["s", "t", "r"]
要解决问题的更多方法:
"string".split(//)[0]
#=> "s"
"string".split(//)[1]
#=> "t"
"string".split(//)[0,4]
#=> ["s", "t", "r", "i"]
答案 1 :(得分:0)
您需要将部件转换为char数组,方法如下:
parts.split(//)
或
parts.chars.to_a
然后迭代char数组。
答案 2 :(得分:0)
我不确定这个代码是用什么来计算的,但我已经从逻辑的角度编辑了你的代码:
#!/usr/bin/ruby -w
words = File::read("words.txt") ;
parts = words.delete('\"').split(',');
puts parts
c=0
while(c<parts.length)
a=0
each_word = parts[c].split('');
for i in 0...each_word.length
case each_word[i]
when 'A'
a+=1
when 'B'
a+=2
when 'C'
a+=3
when 'D'
a+=4
when 'E'
a+=5
when 'F'
a+=6
when 'G'
a+=7
when 'H'
a+=8
when 'I'
a+=9
when 'J'
a+=10
when 'K'
a+=11
when 'L'
a+=12
when 'M'
a+=13
when 'N'
a+=14
when 'O'
a+=15
when 'P'
a+=16
when 'Q'
a+=17
when 'R'
a+=18
when 'S'
a+=19
when 'T'
a+=20
when 'U'
a+=21
when 'V'
a+=22
when 'W'
a+=23
when 'X'
a+=24
when 'Y'
a+=25
when 'Z'
a+=26
end
end
b = false
i = 1
k = 0
while(b == false)
k += i
i += 1
if((a == k) || (i > 15))
b = true
end
end
c +=1;
end