-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
- Loading branch information
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
from hashmapClass import HashMap | ||
import json | ||
|
||
# Read data from JSON file | ||
with open('learnsets.json') as f: | ||
data = json.load(f) | ||
|
||
|
||
# maps pokemon to moves they learn | ||
pokemonList = HashMap() | ||
for pokemon, learnset in data.items(): | ||
if 'learnset' not in learnset: | ||
continue | ||
pokemonList[f'{pokemon}'] = learnset | ||
|
||
# maps moves to pokemon that can learn it | ||
moveList = HashMap() | ||
for pokemon, learnset, in data.items(): | ||
if 'learnset' not in learnset: | ||
continue | ||
for move, levels in learnset['learnset'].items(): | ||
if move in moveList: | ||
moveList[move] += f', {pokemon}' | ||
else: | ||
moveList[move] = pokemon | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
|
||
class HashMap: | ||
def __init__(self, capacity=8): | ||
self.capacity = capacity | ||
self.size = 0 | ||
self.table = [None] * self.capacity | ||
|
||
def __len__(self): | ||
return self.size | ||
|
||
def __contains__(self, key): | ||
index = self._get_index(key) | ||
if self.table[index] is not None: | ||
return True | ||
return False | ||
|
||
def __getitem__(self, key): | ||
index = self._get_index(key) | ||
if self.table[index] is None: | ||
raise KeyError(key) | ||
return self.table[index][1] | ||
|
||
def __setitem__(self, key, value): | ||
if self.size >= self.capacity * 0.8: | ||
self._resize() | ||
index = self._get_index(key) | ||
self.table[index] = (key, value) | ||
self.size += 1 | ||
|
||
def _resize(self): | ||
old_table = self.table | ||
self.capacity *= 2 | ||
self.size = 0 | ||
self.table = [None] * self.capacity | ||
for pair in old_table: | ||
if pair is not None: | ||
self[pair[0]] = pair[1] | ||
|
||
def _hash(self, key): | ||
return hash(key) % self.capacity | ||
|
||
def _get_index(self, key): | ||
index = self._hash(key) | ||
i = 1 | ||
while self.table[index] is not None and self.table[index][0] != key: | ||
index = (index + i * i) % self.capacity | ||
i += 1 | ||
return index |
Large diffs are not rendered by default.