Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > Help on algorithm to calculate combinations

Reply
Thread Tools

Help on algorithm to calculate combinations

 
 
Alexander Antonakakis
Guest
Posts: n/a
 
      02-25-2010
Hello all
I would like to find an algorithm to caclulate all options on the
following problem.
Lets suppose we have a room of max capacity of 4 persons.
Which are the combinations of man - child in this room?
some of them will be:
empty room (none inside)
1 man
1 child
2 men
2 children
2 men 1 children
2 men 2 children
 
Reply With Quote
 
 
 
 
Thomas Preymesser
Guest
Posts: n/a
 
      02-25-2010
[Note: parts of this message were removed to make it a legal post.]

On 25 February 2010 09:40, Alexander Antonakakis <(E-Mail Removed)> wrote:

> Hello all
> I would like to find an algorithm to caclulate all options on the
> following problem.
> Lets suppose we have a room of max capacity of 4 persons.
> Which are the combinations of man - child in this room?
>


0 children / 0 men
0 children / 1 men
0 children / 2 men
0 children / 3 men
0 children / 4 men
1 children / 0 men
1 children / 1 men
1 children / 2 men
1 children / 3 men
2 children / 0 men
2 children / 1 men
2 children / 2 men
3 children / 0 men
3 children / 1 men
4 children / 0 men

--
Thomas Preymesser
http://www.velocityreviews.com/forums/(E-Mail Removed)
http://thopre.googlepages.com/
http://thopre.wordpress.com/

 
Reply With Quote
 
 
 
 
Alexander Antonakakis
Guest
Posts: n/a
 
      02-25-2010
Thomas Preymesser wrote:
> On 25 February 2010 09:40, Alexander Antonakakis <(E-Mail Removed)>
> wrote:
>
>> Hello all
>> I would like to find an algorithm to caclulate all options on the
>> following problem.
>> Lets suppose we have a room of max capacity of 4 persons.
>> Which are the combinations of man - child in this room?
>>

>
> 0 children / 0 men
> 0 children / 1 men
> 0 children / 2 men
> 0 children / 3 men
> 0 children / 4 men
> 1 children / 0 men
> 1 children / 1 men
> 1 children / 2 men
> 1 children / 3 men
> 2 children / 0 men
> 2 children / 1 men
> 2 children / 2 men
> 3 children / 0 men
> 3 children / 1 men


max = 4
@result = []
(0..max).each do |x|
(0..(max - x)).each do |y|
@combination = []
x.times { @combination << "children" }
y.times { @combination << "men" }
@result << @combination
end
end

Thank you very much
> 4 children / 0 men


--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
Giampiero Zanchi
Guest
Posts: n/a
 
      02-25-2010

> max = 4
> @result = []
> (0..max).each do |x|
> (0..(max - x)).each do |y|
> @combination = []
> x.times { @combination << "children" }
> y.times { @combination << "men" }
> @result << @combination
> end
> end
>
> Thank you very much
>> 4 children / 0 men


it doesn't produce 1 children (for instance)

results = []
0.upto(4) do |n|
0.upto(2**n - 1) do |i|
s = i.to_s(2).rjust(n,'0').split('').sort.join
results << s unless results.include?(s)
end
end

p results.map! {|e| e.tr('01','cm')}

--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
Alexander Antonakakis
Guest
Posts: n/a
 
      02-25-2010
Giampiero Zanchi wrote:
> it doesn't produce 1 children (for instance)
>
> results = []
> 0.upto(4) do |n|
> 0.upto(2**n - 1) do |i|
> s = i.to_s(2).rjust(n,'0').split('').sort.join
> results << s unless results.include?(s)
> end
> end
>
> p results.map! {|e| e.tr('01','cm')}


It produces the 1 children option plus the empty room one. We have the
same results 14 for you that don't iclure the empty room combination and
15 for me with the empty room.
--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
Josh Cheek
Guest
Posts: n/a
 
      02-25-2010
[Note: parts of this message were removed to make it a legal post.]

Sorry, computer lagged and I hit 'send' rather than clicking in the window
to edit.

Here is a solution I meant to post, which has the correct inflections
http://pastie.org/842110

def people_in_room(occupants)
for men in 0..occupants
for children in 0..occupants - men
yield men , children
end
end
end

puts "in a room with 4 people, you could occupy it in the following ways:"
people_in_room 4 do |men,children|
to_print = Array.new
to_print << "#{men} #{ men == 1 ? 'man' : 'men' }" unless
men.zero?
to_print << "#{children} #{ children == 1 ? 'child' : 'children' }" unless
children.zero?
puts to_print.join(' ')
end

 
Reply With Quote
 
Josh Cheek
Guest
Posts: n/a
 
      02-25-2010
[Note: parts of this message were removed to make it a legal post.]

On Thu, Feb 25, 2010 at 2:40 AM, Alexander Antonakakis <(E-Mail Removed)>wrote:

> Hello all
> I would like to find an algorithm to caclulate all options on the
> following problem.
> Lets suppose we have a room of max capacity of 4 persons.
> Which are the combinations of man - child in this room?
> some of them will be:
> empty room (none inside)
> 1 man
> 1 child
> 2 men
> 2 children
> 2 men 1 children
> 2 men 2 children
> .
> .
> 4 men
> 4 children
>
> I appreciate your help
> --
> Posted via http://www.ruby-forum.com/.
>
>

def people_in_room(occupants)
for men in 0..occupants
for children in 0..occupants - men
yield men , children
end
end
end

puts "in a room with 4 people, you could occupy it in the following ways:"
people_in_room 4 do |men,children|
puts "men: #{men} , children: #{children}"
end

 
Reply With Quote
 
Alexander Antonakakis
Guest
Posts: n/a
 
      02-25-2010
Josh Cheek wrote:
> Sorry, computer lagged and I hit 'send' rather than clicking in the
> window
> to edit.


Thanks Josh
--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
Josh Cheek
Guest
Posts: n/a
 
      02-25-2010
[Note: parts of this message were removed to make it a legal post.]

On Thu, Feb 25, 2010 at 6:43 AM, Alexander Antonakakis <(E-Mail Removed)>wrote:

> Josh Cheek wrote:
> > Sorry, computer lagged and I hit 'send' rather than clicking in the
> > window
> > to edit.

>
> Thanks Josh
> --
> Posted via http://www.ruby-forum.com/.
>
>

lol, you're welcome. But I just saw that it prints an empty line for the
empty room. That's what I get for not testing. Try adding this line to the
beginning of the block:
next( puts "empty room" ) if men.zero? && children.zero?

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
C++ algorithm for combinations of vector elements cayblood C++ 8 11-02-2005 04:24 AM
Algorithm for combinations... deancoo C++ 2 02-25-2005 12:53 AM
Re: Recursive combinations algorithm alexey.pyatovskiy@gmail.com C++ 0 02-15-2005 06:03 AM
Algorithm to generate different combinations based on N numbers Peter R C++ 2 05-11-2004 03:26 PM
Combinations/permutations algorithm in C++ jose luis fernandez diaz C++ 6 04-13-2004 06:08 PM



Advertisments