I need someone's help. I am not proficient in Python and I wish to
understand something. I was in a job pre-screening process where I was
asked to solve a simple problem.

The problem was supposed to be solved in Python and it was supposed to take
two arguments: filename and word. The program reads the file which is a
.txt file containing a bunch of words and counts how many of those words in
the file are anagrams of the argument.

First I concocted this solution:

import sys
from collections import Counter

def main(args):
    filename = args[1]
    word = args[2]
    print countAnagrams(word, filename)

def countAnagrams(word, filename):

    fileContent = readFile(filename)

    counter = Counter(word)
    num_of_anagrams = 0

    for i in range(0, len(fileContent)):
        if counter == Counter(fileContent[i]):
            num_of_anagrams += 1

    return num_of_anagrams

def readFile(filename):

    with open(filename) as f:
        content = f.readlines()

    content = [x.strip() for x in content]

    return content

if __name__ == '__main__':
    main(sys.argv)

Very quickly I received this comment:

"Can you adjust your solution a bit so you less loops (as little as
possible) and also reduce the memory usage footprint of you program?"

I tried to rework the methods into this:

def countAnagrams(word, filename):

    fileContent = readFile(filename)

    return sum(1 for _ in filter(lambda x: Counter(word) ==
Counter(x.strip()), fileContent))

def readFile(filename):

    with open(filename) as f:
        content = f.readlines()

    return content

And I was rejected. I just wish to understand what I could have done for
this to be better?

I am a Python beginner, so I'm sure there are things I don't know, but I
was a bit surprised at the abruptness of the rejection and I'm worried I'm
doing something profoundly wrong.

Thank you in advance
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to