From: globalrev Date: 2008-05-09T06:35:44+09:00 Subject: Re: scramble sentence, how to better program? On 8 Maj, 22:12, "David A. Black" wrote: > Hi -- > > > > On Fri, 9 May 2008, globalrev wrote: > > i have written a program that takes a sentence as input and outputs > > the sentence with the words rearranged. > > it is probably inefficient and can probably be done with less code. > > it is also nondeterministic( while (inList(temp,scr)) could go on > > for a long time if the user is unlucky) and im not sure how to get > > around that or if it is even possible. > > also, if there is 2 identical words in the sentence, lets say "the" is > > in there twice, it will loop forever. i could do > > .uniq in the beginning but lets say i want both "the" to be in there. > > i have to write some if duplicate then ok up to nbrofduplicates. is > > there an easy way to do this? > > > #scrambler > > puts "Enter a sentence: " > > sentence = gets > > list = sentence.split() > > scr = [] > > > def inList(aword,alist) > > inl=false > > for i in (0..alist.length()-1) > > if alist[i] == aword > > inl=true > > end > > end > > return inl > > end > > Much easier: > > def in_list?(aword, alist) > alist.include?(word) > end > > which means you don't really need your own method; you can just call > include? on your list. > > > for x in (0..list.length()-1) > > temp = list[rand(list.length())] > > while (inList(temp,scr)) > > temp = list[rand(list.length())] > > end > > scr = scr + temp.split() > > end > > Please lose the ()'s. They don't do anything or add any information; > they're just visual clutter. Meanwhile, see below.... > > > puts "Scrambled: " > > puts scr > > In general, you're working much too hard :-) Let Ruby do it for you: > > print "Enter a sentence: " > puts gets.split.sort_by { rand }.join(" ") > > David > > -- > Rails training from David A. Black and Ruby Power and Light: > INTRO TO RAILS June 9-12 Berlin > ADVANCING WITH RAILS June 16-19 Berlin > INTRO TO RAILS June 24-27 London (Skills Matter) > Seehttp://www.rubypal.comfor details and updates! rofl aamazing, ty very much :) had a feeling i was complicating things. does it work as well for building bigger applications(not just webapps), like building an editor like emacs. is the language as suitable for that? i know executionspeed is the issue with ruby and python but thats not really an issue and will be even less of one in the future i guess. must be some tradeoff no? anyway ty for the help, the rubycommunity seems very nice and helpful!