Rezultati

Up. imeNalogaJezikRezultatČas oddaje
programskrivnosti-2017 Prijateljske besede Python 3 100/100OK 20. apr '17 @ 18:45

Test Točke Porabljen spomin Porabljen čas Status
#1 12/12 9,051 MiB 0,000 s OK
#2 12/12 9,051 MiB 0,000 s OK
#3 12/12 9,906 MiB 2,390 s OK
#4 12/12 9,918 MiB 4,314 s OK
#5 13/13 9,910 MiB 0,000 s OK
#6 13/13 9,934 MiB 2,055 s OK
#7 13/13 9,926 MiB 0,000 s OK
#8 13/13 9,781 MiB 3,370 s OK

Ocenjevani program (prijateljske_besede.py):
from collections import deque

def druzabniki(beseda, seznam):
    druzabnik = []
    l = len(beseda)
    for w in seznam:
        lw = len(w)
        # if lw < 3:
        #     continue
        # elif l < 3:
        #     break
        if beseda[0:3] == w[0:3] or beseda[l-3:l] == w[lw-3:lw]:
            if w != beseda:
                druzabnik.append(w)
    return druzabnik

# print(druzabniki('računalnik', ['račun', 'likalnik', 'hodnik', 'dvorana', 'rape', 'stik', 'abba']))

N = int(input().strip())
prva = input().strip()
stevilo_prve = 1
besede = set()
visited = dict()
stevilo_besed = dict()
for i in range(N-1):
    line = input().strip()
    if line == prva:
        stevilo_prve += 1
    else:
        besede.add(line)
        visited[line] = False
        stevilo_besed[line] = stevilo_besed.get(line,0) + 1
stevilo_besed[prva] = stevilo_prve

d = deque()
d.append(prva)
prij = 0
while True:
    # print(d)
    try:
        next = d.pop()
    except IndexError:
        break
    visited[next] = True
    prij += stevilo_besed[next]
    seznam_druz = druzabniki(next, besede)
    # print(next)
    # print(seznam_druz)
    for i in seznam_druz:
        if not visited[i] and not i in d:
            d.append(i)
            besede.remove(i)
print(prij)