Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Really weird solution in Creative category for Node Disconnected Users by danersow
def f(l):
n = []
for i in l:
if i not in n:
n.append(i)
return n
def disconnected_users(net, users, source, crushes):
working_lines = net.copy()
for crush in crushes:
for path in net:
if crush in path:
working_lines.remove(path)
working_lines = f(working_lines)
working_towers = [source]
for tower in working_towers:
for line in working_lines:
if tower in line:
if line.index(tower) == 0:
working_towers.append(line[1])
else:
working_towers.append(line[0])
if working_towers.count(tower) > 1:
break
working_towers = f(working_towers)
final_sum = 0
for tower in users:
if tower not in working_towers:
final_sum = final_sum + users.get(tower)
if source in crushes:
final_sum = final_sum + users.get(source)
return final_sum
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
assert disconnected_users([
['A', 'B'],
['B', 'C'],
['C', 'D'],
["Z", "A"],
["B", "Z"],
["SC", "C"],
["D", "L"],
['A', 'B'],
['B', 'C']
], {
'A': 10,
'B': 20,
'C': 30,
'D': 40,
"Z": 50,
"SC": 70,
"L": 80
},
'A', ['C']) == 220, "First"
assert disconnected_users([
['A', 'B'],
['B', 'D'],
['A', 'C'],
['C', 'D']
], {
'A': 10,
'B': 0,
'C': 0,
'D': 40
},
'A', ['B']) == 0, "Second"
assert disconnected_users([
['A', 'B'],
['A', 'C'],
['A', 'D'],
['A', 'E'],
['A', 'F']
], {
'A': 10,
'B': 10,
'C': 10,
'D': 10,
'E': 10,
'F': 10
},
'C', ['A']) == 50, "Third"
print('Done. Try to check now. There are a lot of other tests')
Oct. 25, 2019
Comments: