Spațiu de programare cu AI
Limitele vizualizării cu rânduri fixe
Calculați un interval semideschis de rânduri vizibile din înălțimea fixă, deplasare și înălțimea ferestrei.
● ● ●WindowSpan●
Fluxuri de lucru · Limitele vizualizării cu rânduri fixe ×
from math import isfinite, ceil
def row_window(count, row_height, offset, viewport, overscan=1):
if type(count) is not int or count < 0 or type(overscan) is not int or overscan < 0:
raise ValueError("rows.count")
if not all(type(x) in (int, float) and isfinite(x) for x in (row_height, offset, viewport)) or row_height <= 0 or viewport < 0:
raise ValueError("rows.geometry")
start_units = max(0, offset) / row_height
first = count if start_units >= count else int(start_units)
if first == count or viewport == 0:
return first, first
span = viewport / row_height
end = count if span >= count - start_units else min(count, ceil(start_units + span) + overscan)
return max(0, first - overscan), end✳Limitele vizualizării cu rânduri fixe
✓ ModificăriVerifică înainte de aplicare ↗
Ilustrarea spațiului de lucru
- Modele
- Configurează un endpoint compatibil OpenAI sau Anthropic cu URL-ul de bază și cheia API, dacă este necesară. Testează conexiunea. Serverul local trebuie să ruleze; instrumentele externe pot transmite date separat.
- Proiect
- Testați deplasare negativă, depășirea finalului și fereastră cu înălțime zero, limitând indicii și respingând înălțimea invalidă a rândului.
- Verifică înainte de aplicare
- Compară comportamentul real cu rezultatul așteptat. Dacă o verificare eșuează, cercetează cauza înainte de alte modificări.
Fluxuri de lucru
from math import isfinite, ceil
def row_window(count, row_height, offset, viewport, overscan=1):
if type(count) is not int or count < 0 or type(overscan) is not int or overscan < 0:
raise ValueError("rows.count")
if not all(type(x) in (int, float) and isfinite(x) for x in (row_height, offset, viewport)) or row_height <= 0 or viewport < 0:
raise ValueError("rows.geometry")
start_units = max(0, offset) / row_height
first = count if start_units >= count else int(start_units)
if first == count or viewport == 0:
return first, first
span = viewport / row_height
end = count if span >= count - start_units else min(count, ceil(start_units + span) + overscan)
return max(0, first - overscan), end