There are N towers, each made of three single-colored blocks placed one on top of another. The colors of the towers' blocks are described in an array T made of N three-letter strings. String T[K] (for K within the range 0..N−1) describes the colors of the blocks from the bottom to the top of the K-th tower. Colors are represented by lowercase letters.
For each of the towers, we may − at most once − choose two adjacent blocks and swap them. For example, given T[K] = "abc", we may obtain "bac" by swapping the bottom two blocks or "acb" by swapping the top two blocks, or stick with "abc" by not making a swap at all. Our goal is to achieve the same order of colors (from the bottom to the top) in as many towers as possible.
What is the maximum number of towers with the same color order that we can obtain?
Write a function:
def solution(T)
that, given an array T consisting of N strings representing the towers' colors, returns the maximum number of towers that we can obtain with the same order of block colors.
Examples:
1. Given T = ["aab", "cab", "baa", "baa"], the function should return 3. We may create towers ["aba", "cab", "aba", "aba"] by swapping the top two blocks in tower number 0, the bottom two blocks in towers with numbers 2 and 3. This way, towers numbers 0, 2 and 3 will have the same order of colors.
2. Given T = ["zzz", "zbz", "zbz", "dgf"], the function should return 2. It is not necessary to perform any swaps to obtain the result.
3. Given T = ["abc", "cba", "cab", "bac", "bca"], the function should return 3.
Write an efficient algorithm for the following assumptions:
- N is an integer within the range [1..50,000];
- each string in array T consists only of lowercase letters (a−z);
- each string in array T is of length 3.
Traceback (most recent call last): File "exec.py", line 129, in <module> main() File "exec.py", line 70, in main sol = __import__('solution') File "/tmp/solution.py", line 6 for each n in T: ^ SyntaxError: invalid syntax
Traceback (most recent call last): File "exec.py", line 129, in <module> main() File "exec.py", line 70, in main sol = __import__('solution') File "/tmp/solution.py", line 6 for each n in T: ^ SyntaxError: invalid syntax
Traceback (most recent call last): File "exec.py", line 129, in <module> main() File "exec.py", line 70, in main sol = __import__('solution') File "/tmp/solution.py", line 6 for each n in T: ^ SyntaxError: invalid syntax
Invalid result type, int expected, <class 'NoneType'> found.stdout:
aab cab baa baa
Invalid result type, int expected, <class 'NoneType'> found.stdout:
zzz zbz zbz dgf
Invalid result type, int expected, <class 'NoneType'> found.stdout:
abc cba cab bac bca
Traceback (most recent call last): File "exec.py", line 129, in <module> main() File "exec.py", line 91, in main result = solution( T ) File "/tmp/solution.py", line 9, in solution a[0] = n.count(x[0]) NameError: name 'a' is not definedstdout:
aab
Traceback (most recent call last): File "exec.py", line 129, in <module> main() File "exec.py", line 91, in main result = solution( T ) File "/tmp/solution.py", line 9, in solution a[0] = n.count(x[0]) NameError: name 'a' is not definedstdout:
zzz
Traceback (most recent call last): File "exec.py", line 129, in <module> main() File "exec.py", line 91, in main result = solution( T ) File "/tmp/solution.py", line 9, in solution a[0] = n.count(x[0]) NameError: name 'a' is not definedstdout:
abc
Traceback (most recent call last): File "exec.py", line 129, in <module> main() File "exec.py", line 91, in main result = solution( T ) File "/tmp/solution.py", line 10, in solution a[0] = n.count(x[0]) TypeError: 'str' object does not support item assignmentstdout:
aab
Traceback (most recent call last): File "exec.py", line 129, in <module> main() File "exec.py", line 91, in main result = solution( T ) File "/tmp/solution.py", line 10, in solution a[0] = n.count(x[0]) TypeError: 'str' object does not support item assignmentstdout:
zzz
Traceback (most recent call last): File "exec.py", line 129, in <module> main() File "exec.py", line 91, in main result = solution( T ) File "/tmp/solution.py", line 10, in solution a[0] = n.count(x[0]) TypeError: 'str' object does not support item assignmentstdout:
abc
Traceback (most recent call last): File "exec.py", line 129, in <module> main() File "exec.py", line 91, in main result = solution( T ) File "/tmp/solution.py", line 10, in solution a[0] = n.count(x[0]) IndexError: list assignment index out of rangestdout:
aab
Traceback (most recent call last): File "exec.py", line 129, in <module> main() File "exec.py", line 91, in main result = solution( T ) File "/tmp/solution.py", line 10, in solution a[0] = n.count(x[0]) IndexError: list assignment index out of rangestdout:
zzz
Traceback (most recent call last): File "exec.py", line 129, in <module> main() File "exec.py", line 91, in main result = solution( T ) File "/tmp/solution.py", line 10, in solution a[0] = n.count(x[0]) IndexError: list assignment index out of rangestdout:
abc
Traceback (most recent call last): File "exec.py", line 129, in <module> main() File "exec.py", line 91, in main result = solution( T ) File "/tmp/solution.py", line 10, in solution a[1] = n.count(x[0]) IndexError: list assignment index out of rangestdout:
aab
Traceback (most recent call last): File "exec.py", line 129, in <module> main() File "exec.py", line 91, in main result = solution( T ) File "/tmp/solution.py", line 10, in solution a[1] = n.count(x[0]) IndexError: list assignment index out of rangestdout:
zzz
Traceback (most recent call last): File "exec.py", line 129, in <module> main() File "exec.py", line 91, in main result = solution( T ) File "/tmp/solution.py", line 10, in solution a[1] = n.count(x[0]) IndexError: list assignment index out of rangestdout:
abc
Traceback (most recent call last): File "exec.py", line 129, in <module> main() File "exec.py", line 91, in main result = solution( T ) File "/tmp/solution.py", line 10, in solution a[1] = n.count(x[1]) IndexError: string index out of rangestdout:
aab
Traceback (most recent call last): File "exec.py", line 129, in <module> main() File "exec.py", line 91, in main result = solution( T ) File "/tmp/solution.py", line 10, in solution a[1] = n.count(x[1]) IndexError: string index out of rangestdout:
zzz
Traceback (most recent call last): File "exec.py", line 129, in <module> main() File "exec.py", line 91, in main result = solution( T ) File "/tmp/solution.py", line 10, in solution a[1] = n.count(x[1]) IndexError: string index out of rangestdout:
abc
Traceback (most recent call last): File "exec.py", line 129, in <module> main() File "exec.py", line 91, in main result = solution( T ) File "/tmp/solution.py", line 9, in solution a[0] = n.count(n[0]) IndexError: list assignment index out of rangestdout:
aab
Traceback (most recent call last): File "exec.py", line 129, in <module> main() File "exec.py", line 91, in main result = solution( T ) File "/tmp/solution.py", line 9, in solution a[0] = n.count(n[0]) IndexError: list assignment index out of rangestdout:
zzz
Traceback (most recent call last): File "exec.py", line 129, in <module> main() File "exec.py", line 91, in main result = solution( T ) File "/tmp/solution.py", line 9, in solution a[0] = n.count(n[0]) IndexError: list assignment index out of rangestdout:
abc
Invalid result type, int expected, <class 'NoneType'> found.stdout:
aab [2, 2, 1] cab [1, 1, 1] baa [1, 2, 2] baa [1, 2, 2]
Invalid result type, int expected, <class 'NoneType'> found.stdout:
zzz [3, 3, 3] zbz [2, 1, 2] zbz [2, 1, 2] dgf [1, 1, 1]
Invalid result type, int expected, <class 'NoneType'> found.stdout:
abc [1, 1, 1] cba [1, 1, 1] cab [1, 1, 1] bac [1, 1, 1] bca [1, 1, 1]
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(T):
# write your code in Python 3.6
a = [0,0,0]
for n in T:
print(n)
a[0] = n.count(n[0])
a[1] = n.count(n[1])
a[2] = n.count(n[2])
print(a)
pass
def swaps(t):
return { t, t[1]+t[0]+t[2], t[0]+t[2]+t[1] }
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(T):
# write your code in Python 3.6
a = [0,0,0]
for n in T:
print(n)
a[0] = n.count(n[0])
a[1] = n.count(n[1])
a[2] = n.count(n[2])
print(a)
pass
def swaps(t):
return { t, t[1]+t[0]+t[2], t[0]+t[2]+t[1] }
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(T):
# write your code in Python 3.6
a = [0,0,0]
for n in T:
print(n)
a[0] = n.count(n[0])
a[1] = n.count(n[1])
a[2] = n.count(n[2])
print(a)
pass
def swaps(t):
return { t, t[1]+t[0]+t[2], t[0]+t[2]+t[1] }
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(T):
# write your code in Python 3.6
a = [0,0,0]
for n in T:
for
print(n)
a[0] = n.count(n[0])
a[1] = n.count(n[1])
a[2] = n.count(n[2])
print(a)
pass
def swaps(t):
return { t, t[1]+t[0]+t[2], t[0]+t[2]+t[1] }
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(T):
# write your code in Python 3.6
a = [0,0,0]
for n in T:
for x in swaps(n):
print(n)
a[0] = n.count(n[0])
a[1] = n.count(n[1])
a[2] = n.count(n[2])
print(a)
pass
def swaps(t):
return { t, t[1]+t[0]+t[2], t[0]+t[2]+t[1] }
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(T):
# write your code in Python 3.6
a = [0,0,0]
for n in T:
for x in swaps(n):
print(n)
a[0] = n.count(n[0])
a[1] = n.count(n[1])
a[2] = n.count(n[2])
print(a)
pass
def swaps(t):
return { t, t[1]+t[0]+t[2], t[0]+t[2]+t[1] }
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(T):
# write your code in Python 3.6
a = [0,0,0]
for n in T:
for x in swaps(n):
cou
print(n)
a[0] = n.count(n[0])
a[1] = n.count(n[1])
a[2] = n.count(n[2])
print(a)
pass
def swaps(t):
return { t, t[1]+t[0]+t[2], t[0]+t[2]+t[1] }
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(T):
# write your code in Python 3.6
a = [0,0,0]
for n in T:
for x in swaps(n):
ct = sum
print(n)
a[0] = n.count(n[0])
a[1] = n.count(n[1])
a[2] = n.count(n[2])
print(a)
pass
def swaps(t):
return { t, t[1]+t[0]+t[2], t[0]+t[2]+t[1] }
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(T):
# write your code in Python 3.6
a = [0,0,0]
for n in T:
for x in swaps(n):
ct = sum(1 for )
print(n)
a[0] = n.count(n[0])
a[1] = n.count(n[1])
a[2] = n.count(n[2])
print(a)
pass
def swaps(t):
return { t, t[1]+t[0]+t[2], t[0]+t[2]+t[1] }
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(T):
# write your code in Python 3.6
a = [0,0,0]
for n in T:
for x in swaps(n):
ct = sum(1 for s in T if )
print(n)
a[0] = n.count(n[0])
a[1] = n.count(n[1])
a[2] = n.count(n[2])
print(a)
pass
def swaps(t):
return { t, t[1]+t[0]+t[2], t[0]+t[2]+t[1] }
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(T):
# write your code in Python 3.6
a = [0,0,0]
for n in T:
for x in swaps(n):
ct = sum(1 for s in T if x in swaps(s))
print(n)
a[0] = n.count(n[0])
a[1] = n.count(n[1])
a[2] = n.count(n[2])
print(a)
pass
def swaps(t):
return { t, t[1]+t[0]+t[2], t[0]+t[2]+t[1] }
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(T):
# write your code in Python 3.6
a = [0,0,0]
for n in T:
for x in swaps(n):
ct = sum(1 for s in T if x in swaps(s))
ans =
print(n)
a[0] = n.count(n[0])
a[1] = n.count(n[1])
a[2] = n.count(n[2])
print(a)
pass
def swaps(t):
return { t, t[1]+t[0]+t[2], t[0]+t[2]+t[1] }
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(T):
# write your code in Python 3.6
a = [0,0,0]
for n in T:
for x in swaps(n):
ct = sum(1 for s in T if x in swaps(s))
ans = max(ans,ct)
print(n)
a[0] = n.count(n[0])
a[1] = n.count(n[1])
a[2] = n.count(n[2])
print(a)
pass
def swaps(t):
return { t, t[1]+t[0]+t[2], t[0]+t[2]+t[1] }
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(T):
# write your code in Python 3.6
a = [0,0,0]
for n in T:
for x in swaps(n):
ct = sum(1 for s in T if x in swaps(s))
ans = max(ans,ct)
return ans
def swaps(t):
return { t, t[1]+t[0]+t[2], t[0]+t[2]+t[1] }
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(T):
# write your code in Python 3.6
a = [0,0,0]
for n in T:
for x in swaps(n):
ct = sum(1 for s in T if x in swaps(s))
ans = max(ans,ct)
return ans
def swaps(t):
return { t, t[1]+t[0]+t[2], t[0]+t[2]+t[1] }
Traceback (most recent call last): File "exec.py", line 129, in <module> main() File "exec.py", line 91, in main result = solution( T ) File "/tmp/solution.py", line 10, in solution ans = max(ans,ct) UnboundLocalError: local variable 'ans' referenced before assignment
Traceback (most recent call last): File "exec.py", line 129, in <module> main() File "exec.py", line 91, in main result = solution( T ) File "/tmp/solution.py", line 10, in solution ans = max(ans,ct) UnboundLocalError: local variable 'ans' referenced before assignment
Traceback (most recent call last): File "exec.py", line 129, in <module> main() File "exec.py", line 91, in main result = solution( T ) File "/tmp/solution.py", line 10, in solution ans = max(ans,ct) UnboundLocalError: local variable 'ans' referenced before assignment
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(T):
# write your code in Python 3.6
ans
for n in T:
for x in swaps(n):
ct = sum(1 for s in T if x in swaps(s))
ans = max(ans,ct)
return ans
def swaps(t):
return { t, t[1]+t[0]+t[2], t[0]+t[2]+t[1] }
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(T):
# write your code in Python 3.6
ans = 0
for n in T:
for x in swaps(n):
ct = sum(1 for s in T if x in swaps(s))
ans = max(ans,ct)
return ans
def swaps(t):
return { t, t[1]+t[0]+t[2], t[0]+t[2]+t[1] }
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(T):
# write your code in Python 3.6
ans = 0
for n in T:
for x in swaps(n):
ct = sum(1 for s in T if x in swaps(s))
ans = max(ans,ct)
return ans
def swaps(t):
return { t, t[1]+t[0]+t[2], t[0]+t[2]+t[1] }
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(T):
# write your code in Python 3.6
ans = 0
for n in T:
for x in swaps(n):
ct = sum(1 for s in T if x in swaps(s))
ans = max(ans,ct)
print(ans)
return ans
def swaps(t):
return { t, t[1]+t[0]+t[2], t[0]+t[2]+t[1] }
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(T):
# write your code in Python 3.6
ans = 0
for n in T:
for x in swaps(n):
ct = sum(1 for s in T if x in swaps(s))
ans = max(ans,ct)
# print(ans)
return ans
def swaps(t):
return { t, t[1]+t[0]+t[2], t[0]+t[2]+t[1] }
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(T):
# write your code in Python 3.6
ans = 0
for n in T:
for x in swaps(n):
ct = sum(1 for s in T if x in swaps(s))
ans = max(ans,ct)
# print(ans)
return ans
def swaps(t):
return { t, t[1]+t[0]+t[2], t[0]+t[2]+t[1] }
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(T):
# write your code in Python 3.6
ans = 0
for n in T:
for x in swaps(n):
ct = sum(1 for s in T if x in swaps(s))
ans = max(ans,ct)
# print(ans)
return ans
def swaps(t):
return { t, t[1]+t[0]+t[2], t[0]+t[2]+t[1] }
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")
def solution(T):
# write your code in Python 3.6
ans = 0
for n in T:
for x in swaps(n):
ct = sum(1 for s in T if x in swaps(s))
ans = max(ans,ct)
# print(ans)
return ans
def swaps(t):
return { t, t[1]+t[0]+t[2], t[0]+t[2]+t[1] }
The following issues have been detected: timeout errors.
A - size of the alphabet
The towers are made of at most two different colors.
Killed. Hard limit reached: 6.000 sec.
All towers consist of the same color set.
Killed. Hard limit reached: 7.000 sec.