Skip to content

Instantly share code, notes, and snippets.

@gronnbeck
Created September 17, 2012 11:54
Show Gist options
  • Save gronnbeck/3736905 to your computer and use it in GitHub Desktop.
Save gronnbeck/3736905 to your computer and use it in GitHub Desktop.
from sys import stdin, stderr
import traceback
class Node:
def __init__(self):
self.barn = {}
self.posi = []
def bygg(ordliste):
hashmap = {}
for word in ordliste:
deep(hashmap, list(word[0]), word[1])
print hashmap
return hashmap
def deep(hashmap, letterList, position):
while len(letterList) > 0:
a = letterList.pop(0)
if not hashmap.has_key(a):
hashmap[a] = {}
deep(hashmap[a], letterList, position)
return hashmap
def posisjoner(ord, indeks, node):
return []
try:
ord = stdin.readline().split()
ordliste = []
pos = 0
for o in ord:
ordliste.append( (o,pos) )
pos += len(o) + 1
toppnode = bygg(ordliste)
for sokeord in stdin:
sokeord = sokeord.strip()
print sokeord + ":",
posi = posisjoner(sokeord, 0, toppnode)
posi.sort()
for p in posi:
print p,
print
except:
traceback.print_exc(file=stderr)
@gronnbeck
Copy link
Author

Hva er intended use for?

for o in ord:
    ordliste.append( (o,pos) )
    pos += len(o) + 1

@Groennbeck
Copy link

det lager en tuppel som jeg bruker for å bygge treet. Mangler bare den delen der jeg plasserer posisjonen som en del i treet for hver gang et ord slutter

@Groennbeck
Copy link

endret deep nå:

def deep(hashmap, letterList, position):
while len(letterList) > 0:
a = letterList.pop(0)
if not hashmap.has_key(a):
hashmap[a] = {}
deep(hashmap[a], letterList, position)
if (len(letterList) == 0 i == 0):
try:
hashmap['pos'].append(position)
except:
hashmap['pos'] = [position]
return hashmap

@gronnbeck
Copy link
Author

dårlig indent der bror...
Som jeg sa på facebook så ser det ut som alle ordene som blir sendt inn i hovedmetoden deler sammen position.
Så kopier elementene fra position til new_position og send den med videre. Slik,

new_position = [] 
for p in position:
    new_position.append(p)

def deep(hashmap, letterList, position):
while len(letterList) > 0:
a = letterList.pop(0)
if not hashmap.has_key(a):
hashmap[a] = {}

            new_position = [] 
            for p in position:
                new_position.append(p)
    deep(hashmap[a], letterList, new_position)
return hashmap

@gronnbeck
Copy link
Author

faen dårlig indent på meg også. Men du skjønner tegninga.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment