ruby on rails - What is wrong with my && operator? -
ruby on rails - What is wrong with my && operator? -
i know why outputting false
when input 1982
. there wrong &&
statement? tried using !(t==r)
, didn't work; reason, keeps outputting false
.
def no_repeats?(year) out=true t=0 while t<4 r=0 while r<4 if (year[t] == year[r]) && t != r out=false end r+=1 end t+=1 end out end
you're complicating bit more needs be.
2.2.0-preview1 :001 > load 'no_repeat.rb' => true
testing string
2.2.0-preview1 :002 > no_repeats?("1981") => false 2.2.0-preview1 :003 > no_repeats?("1983") => true
testing integer
2.2.0-preview1 :004 > no_repeats?(1981) => false 2.2.0-preview1 :005 > no_repeats?(1983) => true
and no_repeat.rb
looks like
def no_repeats?(year) digits = year.to_s.split(//) digits.size == digits.uniq.size end
edit: benchmarks
using original post real 0m0.598s user 0m0.583s sys 0m0.015s using .split(//) real 0m1.322s user 0m1.321s sys 0m0.000s using .chars.to_a real 0m0.562s user 0m0.557s sys 0m0.004s
so, in efforts create more of finish answer, i've included benchmarks, each using method 400,000 times. using split(//)
, taking 2x performance hit. using chars.to_a
instead, you'll original speeds.
def no_repeats?(year) digits = year.to_s.chars.to_a digits.size == digits.uniq.size end
ruby-on-rails ruby
Comments
Post a Comment