diff --git a/src/bucket.py b/src/bucket.py new file mode 100644 index 0000000..eaac888 --- /dev/null +++ b/src/bucket.py @@ -0,0 +1,29 @@ +import random +import time + +class Bucket: + def __init__(self): + self.name = Bucket.ms_to_bucket(Bucket.now_ms()) + self.content = [] + + def push(self, v): + if v: + self.content.append(v) + + def pick_n(self, n): + if not self.content: + return [] + result = [] + for i in range(0, n): + result.append(self.content[random.randint(0, len(self.content)-1)]) + return list(set(result)) + + def now_ms(): + return int(1000 * time.time()) + + def ms_to_bucket(ms): + return int(int(ms // Bucket.interval()) * Bucket.interval()) + + def interval(): + return 100 + diff --git a/src/main.py b/src/main.py index a1b790f..c4881e8 100644 --- a/src/main.py +++ b/src/main.py @@ -1,46 +1,18 @@ import reader import writer - -import random -import time +import bucket def main(): r = reader.Reader(reader.StdinReader()) w = writer.Writer() - bucket = Bucket() + bkt = bucket.Bucket() for line in r.read(): - latest_bucket = Bucket() - if latest_bucket.name != bucket.name: - picked = bucket.pick_n(2) + latest_bkt = bucket.Bucket() + if latest_bkt.name != bkt.name: + picked = bkt.pick_n(2) w.write(picked) - bucket = latest_bucket - bucket.push(line) - -class Bucket: - def __init__(self): - self.name = Bucket.ms_to_bucket(Bucket.now_ms()) - self.content = [] - - def push(self, v): - if v: - self.content.append(v) - - def pick_n(self, n): - if not self.content: - return [] - result = [] - for i in range(0, n): - result.append(self.content[random.randint(0, len(self.content)-1)]) - return list(set(result)) - - def now_ms(): - return int(1000 * time.time()) - - def ms_to_bucket(ms): - return int(int(ms // Bucket.interval()) * Bucket.interval()) - - def interval(): - return 1000 + bkt = latest_bkt + bkt.push(line) if __name__ == "__main__": main()