Permutations of a series of coloured balls, without 2 of the same colour next to each other?

ways to arrange balls such that adjacent balls are of different types
combination calculator
how many combinations with 3 items no repeats
permutation calculator
how many combinations with 3 colors
permutation formula
combination formula
permutation and combination

Input is a string (a, b, c, d,...). In this string, a means a balls of the same color, b means b balls of another color, etc. So (2, 1, 3) would mean 2 red balls, 1 blue ball and 3 yellow balls.

Output 1 is the number of possible permutations, without having 2 balls of the same color next to each other.

Output 2 is a list of all these permutations.

For example:

Input: (2, 1, 3)

Output 1: 10 permutations

Output 2: 131323, 132313, 231313, 312313, 313123, etc.

So my main question is: how do I filter the permutations in which 2 or more balls of the same color are next to each other in a Python program?

Definitely not the most tidy way of doing things, but using the answer from this question:

https://stackoverflow.com/a/36343769/9742036

On how to check for equal neighbours in a list, this should do the trick.

We first generate a list representing your combination of balls, look at all permutations of them, and then filter out those that aren't valid.

from itertools import permutations
from operator import eq

input = (2, 1, 3)

# Produce a list to represent the objects to order. (2,1,3) -> [0, 0, 1, 2, 2, 2]
list_of_items = []
current_item = 1
for value in input:
    for number in range(value):
        list_of_items.append(current_item)

    current_item += 1



count_of_valid_permutations = 0
set_of_valid_permutations = set()

# Generate all permutations of our list
for permutation in permutations(list_of_items):
    # Permutations treat each ball as unique, even if the same colour, so check we're not over counting.
    if permutation not in set_of_valid_permutations:

        # Use the eq operator and map it to the permutation to see if any neighbours are equal.
        hasEqualNeigbours = any(map(eq, permutation, permutation[1:]))
        # If not, then this is a valid permutation.
        if not hasEqualNeigbours:
            # Record the permutation as seen.
            set_of_valid_permutations.add(permutation)
            count_of_valid_permutations += 1


print(count_of_valid_permutations)
print(set_of_valid_permutations)

Ways to arrange 4 different colour balls with no two of the same , Permutations of objects in a row, of which some are identical. Till now, we had identical objects of only one type. That is, only Or 2 red, 3 green and 4 other different colored balls. Next, in the remaining 2 boxes, we'll place the remaining 2 balls. The number of arrangements remains the same: 5C2 or \frac {5!}{2!3!} itertools.islice() creates an iterator that slices a sequence without creating a new sequence. map() then checks each time using operator.eq() if the item in the sequence and the item afterwards are equal. any() then iterates over the map and returns if any is True. For Python 2.x however, I would suggest this:

The below code will solve your problem:

import numpy as np
num = 221333 ## Any random permutation
lst = list(map(int, str(num)))
req_array = np.diff(lst)
if 0 in req_array:
    print ("Yes")

The above code works in below logic:

  1. Iterate your permutation list one by one. Above code is for 1 such element in that list
  2. Convert number to array
  3. Substract consecutive elements
  4. If there is zero is the array then there is one combination where 2 balls are of same color

Permutations of Identical Objects (Part 2), 1-2-3-4 is different from 3-1-4-2, although the same numbers are used. On the other hand Duration: 3:45 Posted: Dec 23, 2012 Regard the `2` people who sit together as one "unit" and the other `3` people as `3` "units". Arrange `4` "units" in a circle: `(4 − 1)! = 3! = 6` ways. Number of permutations of `2` people who sit together: `2! = 2` So `6 × 2 = 12` ways

It is kinda convoluted, and there's probably a more efficient version, but this should do the trick:

output2=['12234','22341','1234','12344']

permut=[]
for num in b: #For every element in the list output2
    for n,i in enumerate(num): #For every index and number inside every element of the list
        if n>0: #This is only for the next line to work on the first iteration
            if num[n]==num[n-1]: #If a number is the same than the previous number
                permut.append(num) #append into a new list the whole permutation number
                break #Go to the next loop
            else:
                continue
        else:
            continue

Ways to arrange colors (video), ways can they be arranged so that no two balls of same color are adjacent ? are next to each other (in which case they would join in to a single sequence),� where n P r is the number of permutations of n things taken r at a time. In other words, it is the number of ways r things can be selected from a group of n things. In this case, It is important to note that order counts in permutations. That is, choosing red and then yellow is counted separately from choosing yellow and then red.

Assuming that output2 is an array of your permutation strings, you could filter the array by discarding permutations having (at least) two consecutive color codes:

import re
output2 = filter(lambda perm: not re.search(r"(\d)\1", perm), output2)

The regular expression explained: The \d matches any number. The surrounding parentheses mark a "matching group". The \1 resolves to the first matching group. So, in combination, (\d)\1 matches any two consecutive identical numbers.

If output2 is not an array but a comma-separated list as a string, you could split it up like so, in order to get an array:

output2 = output2.split(', ')

Permutation Problem! Need some experts., For both combinations and permutations, you can consider the case Suppose you have n types of items, and you wish to select a collection of r of them. or the case in which you choose each type only once, which is called 'no repetition'. Now suppose every room is going to be a different color. 2, S 3, where each couple is considered to be a single unit as shown in the following figure: 1st 2nd 3rd Then the number of ways in which spouces can be seated next to each other is 3! = 6 ways. Again each couple can be seated in 2! ways. Thus the total number of seating arrangement so that spouces sit next to each other = 3! × 2! × 2! × 2

How to Calculate Combinations & Permutations, Input : p = 1, q = 1, r = 0 Output : 2 There are only two arrangements PQ and QP Input : p = 1, q = 1, types of balls such that no two balls of same color. // are adjacent to each other the sum of number of ways to form sequence with 'p-1' P . There are ‘p’ balls of type P, ‘q’ balls of type Q and ‘r’ balls of type R. Using the balls we want to create a straight line such that no two balls of same type are adjacent.

Ways to arrange Balls such that adjacent balls are of different types , The sample space is all the ways that 2 balls can be selected from the 6 balls. What is the probability that the balls next to it are of different color? balls from the bag without seeing as to be sure that 3 balls of them are of the same color? Next, forget about which room is which color. Just pick three independent colors for the color scheme. The order doesn’t matter here, so (red, green, blue) is the same as (red, blue, green). For any pick of three colors there are 3! ways you can order them. So you reduce the number of permutations by 3! to get 5!/(2!×3!) = 10.

What is the probability of picking 2 balls of the same color, and , How many ways can 6 balls be selected to meet each conditon? a) all balls are red b) 3 are blue, 2 are white, and 1 is red c) 2 are blue and 4 are red Wilko Subject: Re: combinations and permutations, with different color balls Hi An alternate way to do this question without choose notation is as follows. There are $6$ red balls and $5$ blue balls in a jar. You pick any $4$ balls without looking in the jar. What is the probability that you would be having $4$ red balls in hand? Note that you're picking up all the $4$ balls in one single attempt and not one-by-one. Also balls of same colour are to be considered as identical.

Comments
  • Hey Rosa, are you working with big numbers of permutations? I guess you could do it looping through the list of numbers in your permutations, but if you're working with 1million+ permutations it will be too slow
  • @JuanC The number of permutations won't be an issue, I'm not working with enourmous amounts. I;m mostly struggling with how I can determine which permutations have balls of the same colour next to each other, so I can filter them.
  • I'm asuming Output 2 is in list format, right?
  • @JuanC yes, it is
  • @Rosa: Does my answer solved your problem ?