Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How can I let the output return True or False based on the input of the list?

So I have a list hand whose data is something like this ['AS', 'AD', 'AC', 'CH', 'CS']. Now I have to find the first character of each element in the list and see if there are 3 identical letters and 2 identical letters or not.

Note: they must all be in order though.. like always x,x,x,y,y or y,y,x,x,x. Any other combination, like x,y,y,x,x or x,y,x,y,x, will return False

So for example

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

['AS', 'AD', 'AC', 'CH', 'CS'] returns True because there are 3 A and 2 C.

['AS', 'SD', 'SC', 'CH', 'CS'] returns False because the order is not right

['CS', 'CD', 'AC', 'AH', 'AS'] returns True because there are 3 A and 2 C

['AS', 'CD', 'DC', 'AH', 'CS'] returns False because none of the characters appear 3 times and 2 times.

Here is my code so far, which doesn’t work…

hand = ['AS', 'AD', 'AC', 'CH', 'CS']
updated_hands = list([x[1] for x in hand])
if ((updated_hands[0] == updated_hands[1] == updated_hands[2]) or (updated_hands[2] == updated_hands[3] == updated_hands[4])) and ((updated_hands[3] == updated_hands[4]) or (updated_hands[0] == updated_hands[1])):
    print('True')
else:
    print('False')

What changes should I make to this?

>Solution :

Here is something that should work for arbitrary lengths and orders:

hands = [['AS', 'AD', 'AC', 'CH', 'CS']]
hands.append(['AS', 'SD', 'SC', 'CH', 'CS'])
hands.append(['CS', 'CD', 'AC', 'AH', 'AS'])
hands.append(['AS', 'CD', 'DC', 'AH', 'CS'])

for hand in hands:

    condition = True

    last_count = 1
    last_item = hand.pop(0)[0]

    while hand:
        item = hand.pop(0)

        if (item[0] == last_item):
            last_count += 1 

        if (last_item != item[0]):
            if (last_count == 2) or (last_count == 3):
                condition = True
            else:
                condition = False
                break

        last_item = item[0]

    print(condition)

Outputs:

True
False
True
False
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading