interface Context { itemsCount: number } interface Position { x: number y: number } function memoryGap(): number { return memorySide() + memorySpace() } function memoryGroups(c: Context): Record { var items: Record = {}; // @ts-ignore let ids = utsIndexArray(c.itemsCount); ids.forEach(i => { // @ts-ignore items[Number(i)] = utsFloor(Number(i) / 2) }) return items; } function memorySide(): number { return 50 } function memorySpace(): number { return 20 } function memoryItemPositions(c: Context): Position[] { var pos: Position[] = [] // @ts-ignore let ids = utsIndexArray(c.itemsCount); ids.forEach(i => { // @ts-ignore let row = utsFloor(Number(i) / 4) let x = memoryGap() + (Number(i) - row * 4) * memoryGap() let y = memoryGap() + row * memoryGap() // @ts-ignore pos.push(memoryCreatePosition(x, y)) }) return pos }