Skip to content

Instantly share code, notes, and snippets.

@sukhchander
Created April 2, 2014 03:00
Show Gist options
  • Save sukhchander/9927272 to your computer and use it in GitHub Desktop.
Save sukhchander/9927272 to your computer and use it in GitHub Desktop.
can cross river?
river = “************~~~”
river1 = “****~~~~”
river2 = “****************~~*~~~*”
# NOTES:
#
# acc. by 1
# stay the same speed
# dec. by 1
#
# first time speed 1
# can move 1, 2
# next time move 2
# can move 1, 2, 3
river = river.split('')
def can_cross?(river, pos=0, speed=0)
eventually_cross_river?(river, 0)
end
def eventually_cross_river?(arr, speed)
return speed if !arr || arr.length == 0
return false if !arr[0]
determine_next_speed(0..speed).each do |next_speed|
possible_speeds = eventually_cross_river?(arr[next_speed...arr.length], next_speed)
return [speed] + possible_speeds
end
return false
end
def determine_next_speed(speed)
possible_speeds = []
dec_speed = speed - 1
possible_speeds << dec_speed if dec_speed > 0
possible_speeds << speed
possible_speeds << speed + 1
return possible_speeds
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment