Home > katas > Counting sheep... (8kyu) [Python]
Counting sheep... (8kyu) [Python]
Chek kata on Codewars
Description:
Consider an array/list of sheep where some sheep may be missing from their place. We need a function that counts the number of sheep present in the array (true means present).
For example,
[true, true, true, false,
true, true, true, true ,
true, false, true, false,
true, false, false, true ,
true, true, true, true ,
false, false, true, true]
The correct answer would be 17.
Hint: Don't forget to check for bad values like null/undefined
Solution 1
Let's start with loop
solutions.
def count_sheeps(arrayOfSheeps):
amount = 0
for sheep in arrayOfSheeps:
if (sheep == True):
amount += 1
return amount
Solution 2
Let's solve it with count()
.
def count_sheeps(arrayOfSheeps):
return arrayOfSheeps.count(True)
count()
is an inbuilt function in Python that returns count of how many times a given object occurs in list.
Solution 3
Let's solve it with List Comprehension
.
def count_sheeps(arrayOfSheeps):
return len([sheep for sheep in arrayOfSheeps if sheep])
Solution 4
Let's solve it with Sum & Filter
.
def count_sheeps(arrayOfSheeps):
return sum(filter(lambda sheep: sheep == True, arrayOfSheeps))
Solution 5
Let's solve it with reduce()
.
def count_sheeps(arrayOfSheeps): return reduce(
lambda acc, cur: acc + 1 if cur == True else acc, arrayOfSheeps)