LINUX.ORG.RU

История изменений

Исправление 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)}')