I was able to figure out this level easily but I am wondering how the rest of the code works.
What are [0] doing in the first 3 lines of the code? doctor = hero.findByType("paladin")[0]
are they to just set 0s to the doctor array? why doesn’t the soldier array have [0]?
The method hero.findByType() returns an array, but you can switch it to return an object by adding [0] at the end and it will assign the first object in that array to the variable.
input = [ 0, 1, 2, 3, 4, 5]
def findOdds(arrInput):
arr = [];
for i in arrInput:
if i%2:
arr.append(i)
return arr;
output = findOdds(input)
for i in range(len(output)):
print(i, output[i])
magePatients = ['mPatient1', 'mPatient2']
doctorPatients = ['dPatient1', 'dPatient2','dPatient3', 'dPatient4']
helperPatients = ['hPatient1', 'hPatient2', 'hPatient3']
# <This is wrong
mage = {}
doctor = {}
helper = {}
# This is wrong />
mage["patients"] = magePatients
doctor["patients"] = doctorPatients
helper["patients"] = helperPatients
The function findOdds() is similar to findByType() and you are getting the first element of its output as brooksy has said. See the visualization for all the code from the link at the top.
Edit: NO, this is not the right explanation in the second part! I didn’t consult the original code, so it’s my fault.
mage, doctor, helper are not empty objects , they are more like
mage = {'id': "Name", 'pos' : {'x' : 5, 'y' : 15 }}#and all other keys and values
I’ m a python noob and started learning it with CodeCombat and then quit and started javascript I gave a little bit different explanation at What is "mage["patients"] = magePatients" in triage level? more than a year ago and I suppose both can be wrong. @brooksy125 - please help
Since you only have one of the mage, doctor and helper; you will only need to refer to the specific one through this code so we make it an object variable. You want an array or list of the soldiers so you can use a loop to go through all of them and assign them to the different arrays (magePatients, doctorPatients, helperPatients).
The last section isn’t really covered, but I believe you are assigning the lists you created with the soldiers to the different people, using a keyword reference “patients” and making it a dictionary, I think and adding it to the current values of that character.
like @xython stated: mage, doctor, helper are not empty objects , they are more like
mage = {'id': "Name", 'pos' : {'x' : 5, 'y' : 15 }}#and all other keys and values
this last part adds {‘patients’ : [Bond, Louis, Ann-Maria, Mary, Andrea]} to mage
Like when you check for friend.id you get the name, you can check mage.patient and it gives you the list you now added. I traded out mage["patients"] for mage.patients and it works.
how come It doesn’t need [0] behind findNearest? I thought to access the wizard object i need to use [0]? but the code runs fine. Both findNearest and findByType say it returns an array.
Hi hyperian.
hero.findNearest(array) doesn’t find an array, it finds an object from an array.
e.g. hero.findNearest(hero.findFriends())
the array is hero.findFriends() and the hero.findNearest() find the one nearest one.
I hope this solves your problem, and it’s fine to post something about arrays/something similar, on a topic about an array level.