mvp
parent
781f128de4
commit
02dce9fa67
|
|
@ -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
|
||||||
|
|
||||||
42
src/main.py
42
src/main.py
|
|
@ -1,46 +1,18 @@
|
||||||
import reader
|
import reader
|
||||||
import writer
|
import writer
|
||||||
|
import bucket
|
||||||
import random
|
|
||||||
import time
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
r = reader.Reader(reader.StdinReader())
|
r = reader.Reader(reader.StdinReader())
|
||||||
w = writer.Writer()
|
w = writer.Writer()
|
||||||
bucket = Bucket()
|
bkt = bucket.Bucket()
|
||||||
for line in r.read():
|
for line in r.read():
|
||||||
latest_bucket = Bucket()
|
latest_bkt = bucket.Bucket()
|
||||||
if latest_bucket.name != bucket.name:
|
if latest_bkt.name != bkt.name:
|
||||||
picked = bucket.pick_n(2)
|
picked = bkt.pick_n(2)
|
||||||
w.write(picked)
|
w.write(picked)
|
||||||
bucket = latest_bucket
|
bkt = latest_bkt
|
||||||
bucket.push(line)
|
bkt.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
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue