История изменений
Исправление qulinxao3, (текущая версия) :
упс лишняя была обёртка:
def mkspli(ita,fu,tbl):
bufs=__import__('collections').defaultdict(list)
def itForK(k):
while 1:
while not bufs[k]:
try: bufs[fu(v:=next(ita))].append(v)
except Exception as e : print(e);return
yield bufs[k].pop(0)
return {k:itForK(k) for k in tbl}
#тостик1:
def tblN(N):
for q in mkspli(iter(range(N*N+1)),lambda x:x%N,range(N)).values():print(*q,end='')
for i in range(11):tblN(i)
#тесто2:
def z(N):
for i in range(N):print(f'z:{i}');yield i
def viewZ(N):
return mkspli(z(N*N+1),lambda x:bool(x%N),range(2)).values()
kra,non=viewZ(4)
for i in range(7):print(f'non:{next(non)}')
for _ in range(4):print(f'kra:{next(kra)}')
Исправление qulinxao3, :
упс лишняя была обёртка:
def mkspli(ita,fu,tbl):
tbl=list(tbl)
bufs={k:[]for k in tbl}
def itForK(k):
while 1:
while not bufs[k]:
try: bufs[fu(v:=next(ita))].append(v)
except Exception as e : print(e);return
yield bufs[k].pop(0)
return {k:itForK(k) for k in tbl}
#тостик1:
def tblN(N):
for q in mkspli(iter(range(N*N+1)),lambda x:x%N,range(N)).values():print(*q,end='')
for i in range(11):tblN(i)
#тесто2:
def z(N):
for i in range(N):print(f'z:{i}');yield i
def viewZ(N):
return mkspli(z(N*N+1),lambda x:bool(x%N),range(2)).values()
kra,non=viewZ(4)
for i in range(7):print(f'non:{next(non)}')
for _ in range(4):print(f'kra:{next(kra)}')
Исправление qulinxao3, :
упс лишняя была обёртка:
def mkspli(ita,fu,tbl):
tbl=list(tbl)
bufs={k:[]for k in tbl}
def itForK(k):
while 1:
while not bufs[k]:
try: bufs[fu(v:=next(ita))].append(v)
except Exception as e : print(e);return
res,*bufs[k]=bufs[k]
yield res
return {k:itForK(k) for k in tbl}
#тостик1:
def tblN(N):
for q in mkspli(iter(range(N*N+1)),lambda x:x%N,range(N)).values():print(*q,end='')
for i in range(11):tblN(i)
#тесто2:
def z(N):
for i in range(N):print(f'z:{i}');yield i
def viewZ(N):
return mkspli(z(N*N+1),lambda x:bool(x%N),range(2)).values()
kra,non=viewZ(4)
for i in range(7):print(f'non:{next(non)}')
for _ in range(4):print(f'kra:{next(kra)}')
Исправление qulinxao3, :
упс лишняя была обёртка:
from itertools import count
def mkspli(ita,fu,tbl):
tbl=list(tbl)
bufs={k:[]for k in tbl}
def itForK(k):
while 1:
while not bufs[k]:
try: bufs[fu(v:=next(ita))].append(v)
except Exception as e : print(e);return
res,*bufs[k]=bufs[k]
yield res
return {k:itForK(k) for k in tbl}
#тостик1:
def tblN(N):
for q in mkspli(iter(range(N*N+1)),lambda x:x%N,range(N)).values():print(*q,end='')
for i in range(11):tblN(i)
#тесто2:
def z(N):
for i in range(N):print(f'z:{i}');yield i
def viewZ(N):
return mkspli(z(N*N+1),lambda x:bool(x%N),range(2)).values()
kra,non=viewZ(4)
for i in range(7):print(f'non:{next(non)}')
for _ in range(4):print(f'kra:{next(kra)}')
Исходная версия qulinxao3, :
упс лишняя была обёртка:
from itertools import count
def mkspli(ita,fu,tbl):
tbl=list(tbl)
bufs={k:[]for k in tbl)
def itForK(k):
while 1:
while not bufs[k]:
try:
bufs[fu(v:=next(ita))].append(v)
except Exception as e :
print(e)
return
res,*bufs[k]=bufs[k]
yield res
its={k:itForK(k) for k in tbl}
return its
#тостик1:
def tblN(N):
for q in mkspli(iter(range(N*N+1)),lambda x:x%N,range(N)).values():print(*q,end='')
for i in range(11):tblN(i)
#тесто2:
def z(N):
for i in range(N):
print(f'z:{i}')
yield i
def viewZ(N):
return mkspli(z(N*N+1),lambda x:bool(x%N),range(2)).values()
kra,non=viewZ(4)
for i in range(7):print(f'non:{next(non)}')
for _ in range(4):print(f'kra:{next(kra)}')