Back Knit

Back knits are a particular intermeshing of loops to achieve purl stitches. Like front knits, a loop is pulled through a set of loops to form a back knit. However, for the purl stitch to be a visible component on the face of a fabric, the new loop must be pulled through by the needle on the bed opposite that of the previous loops, and then transferred back to the original bed. For example, if a sheet is being knitted on the front bed, back knits can be made by transferring loops to the back bed and performing knits with those needles.

Note that front knits and back knits are relative to the needle bed (meaning front knits are not performed only on the front bed or vice versa). While front knits are conventionally knitted on the front bed (as on might assume), if you chose to treat the back bed as the apparatus that produces front knits (essentially flipping the fabric horizontally in space), then back knits would be produced on the front bed.

When knitting single jersey fabrics (which are formed with just one set of needles), the stitches on the back-side of the fabric will have a different appearance from those on the front (effectively, the reverse of the front-facing knit stitches). While it is important not to get the back-side of a loop confused with a back knit (the former is instead referred to as a 'reverse' loop), it is this characteristic of visual-disparity between stitches formed with 'face' loops and 'reverse' loops that allows for the making of back knits.

The process of forming back knits might sound odd to hand-knitters, since this effect is achieved simply by knitting row after row using solely knit stitches with hand-knitting needles. But that logic doesn't translate to flat bed knitting machines, since their needles are uni-directional, and thus can't be rotated in space the same way that hand-knitting needles can. Instead, purl stitches are formed on one side of a fabric and knit stitches on the other when working on a single bed, and the two stitches can be both be incorporated on a given side by using two beds and the transfer operation.

Back knits are essential for creating garter stitch on a flat bed knitting machine, as the pattern involves purl ridges and knit troughs.

for written in
;!knitout-2
;;Machine: Kniterate
;;Carriers: 1 2 3 4 5 6

;title: Back Knit (raw knitout)
; A back-bed knit pulls a loop front-to-back through an existing loop.

x-loop-in + b2 1
x-yarn-in + b2 3
knit + b2 3
x-yarn-out + b2 3
x-loop-out b2
;!knitout-2
;;Machine: SWGN2
;;Carriers: 1 2 3 4 5 6 7 8 9 10

;title: Back Knit (raw knitout)
; A back-bed knit pulls a loop front-to-back through an existing loop.

x-loop-in + b2 1
x-yarn-in + b2 3
knit + b2 3
x-yarn-out + b2 3
x-loop-out b2
//title: Back Single Jersey Sheet (javascript with knitout module)
// Builds a sheet of single jersey (all knits) fabric on the back bed. (There isn't much of a point to doing this, but you can.)

//include knitout module:
const knitout = require('knitout'); //include knitout module
const K = new knitout.Writer({ carriers:['1', '2', '3', '4', '5', '6'] });
K.addHeader('Machine', 'Kniterate');

//Parameters:
let min = 1; //needle number of left edge
let max = 20; //needle number of right edge
let rows = 20; //number of rows to knit
let carrier = "3"; //carrier name

// ---- set up initial loops and yarn carrier ----
//Bring in carrier:
K.in(carrier);

//On Kniterate machines, carriers start on the left,
//so will start tucking onto needles left-to-right,
//and will be sure to tuck the leftmost needle in the first pass:
for (let n = min; n <= max; n += 1) {
	//tuck alternating needles, making sure to do the left edge:
	if ((n - min) % 2 === 0) {
		K.tuck("+", 'f' + n, carrier);
	}
}
//now, moving right-to-left, tuck the needles that were not tucked on the first pass:
for (let n = max; n >= min; n -= 1) {
	if ((n - min) % 2 !== 0) {
		K.tuck("-", 'f' + n, carrier);
	}
}

//knit three plain rows to allow cast-on stitches to relax:
// three isn't set in stone here -- it's just convenient
// for this example code to have the carrier end up on the right.
for (let n = min; n <= max; n += 1) {
	K.knit("+", 'f' + n, carrier);
}
for (let n = max; n >= min; n -= 1) {
	K.knit("-", 'f' + n, carrier);
}
for (let n = min; n <= max; n += 1) {
	K.knit("+", 'f' + n, carrier);
}

//move loops to the back bed:
for (let n = min; n <= max; n += 1) {
	K.xfer('f' + n, 'b' + n);
}
// ---- single jersey sheet (back bed) ----
//Create a single-jersey (all knits) sheet by alternating left- and right-going rows of back knits:
for (let r = 0; r <= rows; r += 1) {
	if (r % 2 === 0) {
		//left-going row:
		for (let n = max; n >= min; n -= 1) {
			K.knit("-", 'b' + n, carrier);
		}
	} else {
		//right-going row:
		for (let n = min; n <= max; n += 1) {
			K.knit("+", 'b' + n, carrier);
		}
	}
}

// ---- take carrier out and drop remaining loops ----
//Send carrier back to its parking location:
K.out(carrier);

//drop loops:
for (let n = min; n <= max; n += 1) {
	K.drop('b' + n);
}

K.write('back-single-jersey-sheet.kniterate.k');
;!knitout-2
;;Machine: Kniterate
;;Carriers: 1 2 3 4 5 6

;title: Back Single Jersey Sheet (raw knitout)
; Builds a sheet of single jersey (all knits) fabric on the back bed. (There isn't much of a point to doing this, but you can.)

;Parameters:
; min = 1 -- needle number of left edge
; max = 20 -- needle number of right edge
; rows = 20 -- number of rows to knit
; carrier = "3" -- carrier name

; ---- set up initial loops and yarn carrier ----
;Bring in carrier:
in 3

;On Kniterate machines, carriers start on the left,
;so will start tucking onto needles left-to-right,
;and will be sure to tuck the leftmost needle in the first pass:
tuck + f1 3
tuck + f3 3
tuck + f5 3
tuck + f7 3
tuck + f9 3
tuck + f11 3
tuck + f13 3
tuck + f15 3
tuck + f17 3
tuck + f19 3
;now, moving right-to-left, tuck the needles that were not tucked on the first pass:
tuck - f20 3
tuck - f18 3
tuck - f16 3
tuck - f14 3
tuck - f12 3
tuck - f10 3
tuck - f8 3
tuck - f6 3
tuck - f4 3
tuck - f2 3

;knit three plain rows to allow cast-on stitches to relax:
; three isn't set in stone here -- it's just convenient
; for this example code to have the carrier end up on the right.
knit + f1 3
knit + f2 3
knit + f3 3
knit + f4 3
knit + f5 3
knit + f6 3
knit + f7 3
knit + f8 3
knit + f9 3
knit + f10 3
knit + f11 3
knit + f12 3
knit + f13 3
knit + f14 3
knit + f15 3
knit + f16 3
knit + f17 3
knit + f18 3
knit + f19 3
knit + f20 3
knit - f20 3
knit - f19 3
knit - f18 3
knit - f17 3
knit - f16 3
knit - f15 3
knit - f14 3
knit - f13 3
knit - f12 3
knit - f11 3
knit - f10 3
knit - f9 3
knit - f8 3
knit - f7 3
knit - f6 3
knit - f5 3
knit - f4 3
knit - f3 3
knit - f2 3
knit - f1 3
knit + f1 3
knit + f2 3
knit + f3 3
knit + f4 3
knit + f5 3
knit + f6 3
knit + f7 3
knit + f8 3
knit + f9 3
knit + f10 3
knit + f11 3
knit + f12 3
knit + f13 3
knit + f14 3
knit + f15 3
knit + f16 3
knit + f17 3
knit + f18 3
knit + f19 3
knit + f20 3

;move loops to the back bed:
xfer f1 b1
xfer f2 b2
xfer f3 b3
xfer f4 b4
xfer f5 b5
xfer f6 b6
xfer f7 b7
xfer f8 b8
xfer f9 b9
xfer f10 b10
xfer f11 b11
xfer f12 b12
xfer f13 b13
xfer f14 b14
xfer f15 b15
xfer f16 b16
xfer f17 b17
xfer f18 b18
xfer f19 b19
xfer f20 b20
; ---- single jersey sheet (back bed) ----
;Create a single-jersey (all knits) sheet by alternating left- and right-going rows of back knits:
;left-going row:
knit - b20 3
knit - b19 3
knit - b18 3
knit - b17 3
knit - b16 3
knit - b15 3
knit - b14 3
knit - b13 3
knit - b12 3
knit - b11 3
knit - b10 3
knit - b9 3
knit - b8 3
knit - b7 3
knit - b6 3
knit - b5 3
knit - b4 3
knit - b3 3
knit - b2 3
knit - b1 3
;right-going row:
knit + b1 3
knit + b2 3
knit + b3 3
knit + b4 3
knit + b5 3
knit + b6 3
knit + b7 3
knit + b8 3
knit + b9 3
knit + b10 3
knit + b11 3
knit + b12 3
knit + b13 3
knit + b14 3
knit + b15 3
knit + b16 3
knit + b17 3
knit + b18 3
knit + b19 3
knit + b20 3
;left-going row:
knit - b20 3
knit - b19 3
knit - b18 3
knit - b17 3
knit - b16 3
knit - b15 3
knit - b14 3
knit - b13 3
knit - b12 3
knit - b11 3
knit - b10 3
knit - b9 3
knit - b8 3
knit - b7 3
knit - b6 3
knit - b5 3
knit - b4 3
knit - b3 3
knit - b2 3
knit - b1 3
;right-going row:
knit + b1 3
knit + b2 3
knit + b3 3
knit + b4 3
knit + b5 3
knit + b6 3
knit + b7 3
knit + b8 3
knit + b9 3
knit + b10 3
knit + b11 3
knit + b12 3
knit + b13 3
knit + b14 3
knit + b15 3
knit + b16 3
knit + b17 3
knit + b18 3
knit + b19 3
knit + b20 3
;left-going row:
knit - b20 3
knit - b19 3
knit - b18 3
knit - b17 3
knit - b16 3
knit - b15 3
knit - b14 3
knit - b13 3
knit - b12 3
knit - b11 3
knit - b10 3
knit - b9 3
knit - b8 3
knit - b7 3
knit - b6 3
knit - b5 3
knit - b4 3
knit - b3 3
knit - b2 3
knit - b1 3
;right-going row:
knit + b1 3
knit + b2 3
knit + b3 3
knit + b4 3
knit + b5 3
knit + b6 3
knit + b7 3
knit + b8 3
knit + b9 3
knit + b10 3
knit + b11 3
knit + b12 3
knit + b13 3
knit + b14 3
knit + b15 3
knit + b16 3
knit + b17 3
knit + b18 3
knit + b19 3
knit + b20 3
;left-going row:
knit - b20 3
knit - b19 3
knit - b18 3
knit - b17 3
knit - b16 3
knit - b15 3
knit - b14 3
knit - b13 3
knit - b12 3
knit - b11 3
knit - b10 3
knit - b9 3
knit - b8 3
knit - b7 3
knit - b6 3
knit - b5 3
knit - b4 3
knit - b3 3
knit - b2 3
knit - b1 3
;right-going row:
knit + b1 3
knit + b2 3
knit + b3 3
knit + b4 3
knit + b5 3
knit + b6 3
knit + b7 3
knit + b8 3
knit + b9 3
knit + b10 3
knit + b11 3
knit + b12 3
knit + b13 3
knit + b14 3
knit + b15 3
knit + b16 3
knit + b17 3
knit + b18 3
knit + b19 3
knit + b20 3
;left-going row:
knit - b20 3
knit - b19 3
knit - b18 3
knit - b17 3
knit - b16 3
knit - b15 3
knit - b14 3
knit - b13 3
knit - b12 3
knit - b11 3
knit - b10 3
knit - b9 3
knit - b8 3
knit - b7 3
knit - b6 3
knit - b5 3
knit - b4 3
knit - b3 3
knit - b2 3
knit - b1 3
;right-going row:
knit + b1 3
knit + b2 3
knit + b3 3
knit + b4 3
knit + b5 3
knit + b6 3
knit + b7 3
knit + b8 3
knit + b9 3
knit + b10 3
knit + b11 3
knit + b12 3
knit + b13 3
knit + b14 3
knit + b15 3
knit + b16 3
knit + b17 3
knit + b18 3
knit + b19 3
knit + b20 3
;left-going row:
knit - b20 3
knit - b19 3
knit - b18 3
knit - b17 3
knit - b16 3
knit - b15 3
knit - b14 3
knit - b13 3
knit - b12 3
knit - b11 3
knit - b10 3
knit - b9 3
knit - b8 3
knit - b7 3
knit - b6 3
knit - b5 3
knit - b4 3
knit - b3 3
knit - b2 3
knit - b1 3
;right-going row:
knit + b1 3
knit + b2 3
knit + b3 3
knit + b4 3
knit + b5 3
knit + b6 3
knit + b7 3
knit + b8 3
knit + b9 3
knit + b10 3
knit + b11 3
knit + b12 3
knit + b13 3
knit + b14 3
knit + b15 3
knit + b16 3
knit + b17 3
knit + b18 3
knit + b19 3
knit + b20 3
;left-going row:
knit - b20 3
knit - b19 3
knit - b18 3
knit - b17 3
knit - b16 3
knit - b15 3
knit - b14 3
knit - b13 3
knit - b12 3
knit - b11 3
knit - b10 3
knit - b9 3
knit - b8 3
knit - b7 3
knit - b6 3
knit - b5 3
knit - b4 3
knit - b3 3
knit - b2 3
knit - b1 3
;right-going row:
knit + b1 3
knit + b2 3
knit + b3 3
knit + b4 3
knit + b5 3
knit + b6 3
knit + b7 3
knit + b8 3
knit + b9 3
knit + b10 3
knit + b11 3
knit + b12 3
knit + b13 3
knit + b14 3
knit + b15 3
knit + b16 3
knit + b17 3
knit + b18 3
knit + b19 3
knit + b20 3
;left-going row:
knit - b20 3
knit - b19 3
knit - b18 3
knit - b17 3
knit - b16 3
knit - b15 3
knit - b14 3
knit - b13 3
knit - b12 3
knit - b11 3
knit - b10 3
knit - b9 3
knit - b8 3
knit - b7 3
knit - b6 3
knit - b5 3
knit - b4 3
knit - b3 3
knit - b2 3
knit - b1 3
;right-going row:
knit + b1 3
knit + b2 3
knit + b3 3
knit + b4 3
knit + b5 3
knit + b6 3
knit + b7 3
knit + b8 3
knit + b9 3
knit + b10 3
knit + b11 3
knit + b12 3
knit + b13 3
knit + b14 3
knit + b15 3
knit + b16 3
knit + b17 3
knit + b18 3
knit + b19 3
knit + b20 3
;left-going row:
knit - b20 3
knit - b19 3
knit - b18 3
knit - b17 3
knit - b16 3
knit - b15 3
knit - b14 3
knit - b13 3
knit - b12 3
knit - b11 3
knit - b10 3
knit - b9 3
knit - b8 3
knit - b7 3
knit - b6 3
knit - b5 3
knit - b4 3
knit - b3 3
knit - b2 3
knit - b1 3
;right-going row:
knit + b1 3
knit + b2 3
knit + b3 3
knit + b4 3
knit + b5 3
knit + b6 3
knit + b7 3
knit + b8 3
knit + b9 3
knit + b10 3
knit + b11 3
knit + b12 3
knit + b13 3
knit + b14 3
knit + b15 3
knit + b16 3
knit + b17 3
knit + b18 3
knit + b19 3
knit + b20 3
;left-going row:
knit - b20 3
knit - b19 3
knit - b18 3
knit - b17 3
knit - b16 3
knit - b15 3
knit - b14 3
knit - b13 3
knit - b12 3
knit - b11 3
knit - b10 3
knit - b9 3
knit - b8 3
knit - b7 3
knit - b6 3
knit - b5 3
knit - b4 3
knit - b3 3
knit - b2 3
knit - b1 3
;right-going row:
knit + b1 3
knit + b2 3
knit + b3 3
knit + b4 3
knit + b5 3
knit + b6 3
knit + b7 3
knit + b8 3
knit + b9 3
knit + b10 3
knit + b11 3
knit + b12 3
knit + b13 3
knit + b14 3
knit + b15 3
knit + b16 3
knit + b17 3
knit + b18 3
knit + b19 3
knit + b20 3
;left-going row:
knit - b20 3
knit - b19 3
knit - b18 3
knit - b17 3
knit - b16 3
knit - b15 3
knit - b14 3
knit - b13 3
knit - b12 3
knit - b11 3
knit - b10 3
knit - b9 3
knit - b8 3
knit - b7 3
knit - b6 3
knit - b5 3
knit - b4 3
knit - b3 3
knit - b2 3
knit - b1 3

; ---- take carrier out and drop remaining loops ----
;Send carrier back to its parking location:
out 3

;drop loops:
drop b1
drop b2
drop b3
drop b4
drop b5
drop b6
drop b7
drop b8
drop b9
drop b10
drop b11
drop b12
drop b13
drop b14
drop b15
drop b16
drop b17
drop b18
drop b19
drop b20
//title: Back Single Jersey Sheet (plain javascript)
// Builds a sheet of single jersey (all knits) fabric on the back bed. (There isn't much of a point to doing this, but you can.)

//Write header:
console.log(';!knitout-2');
console.log(';;Machine: Kniterate');
console.log(';;Carriers: 1 2 3 4 5 6');

//Parameters:
let min = 1; //needle number of left edge
let max = 20; //needle number of right edge
let rows = 20; //number of rows to knit
let carrier = "3"; //carrier name

// ---- set up initial loops and yarn carrier ----
//Bring in carrier:
console.log(`in ${carrier}`);

//On Kniterate machines, carriers start on the left,
//so will start tucking onto needles left-to-right,
//and will be sure to tuck the leftmost needle in the first pass:
for (let n = min; n <= max; n += 1) {
	//tuck alternating needles, making sure to do the left edge:
	if ((n - min) % 2 === 0) {
		console.log(`tuck + f${n} ${carrier}`);
	}
}
//now, moving right-to-left, tuck the needles that were not tucked on the first pass:
for (let n = max; n >= min; n -= 1) {
	if ((n - min) % 2 !== 0) {
		console.log(`tuck - f${n} ${carrier}`);
	}
}

//knit three plain rows to allow cast-on stitches to relax:
// three isn't set in stone here -- it's just convenient
// for this example code to have the carrier end up on the right.
for (let n = min; n <= max; n += 1) {
	console.log(`knit + f${n} ${carrier}`);
}
for (let n = max; n >= min; n -= 1) {
	console.log(`knit - f${n} ${carrier}`);
}
for (let n = min; n <= max; n += 1) {
	console.log(`knit + f${n} ${carrier}`);
}

//move loops to the back bed:
for (let n = min; n <= max; n += 1) {
	console.log(`xfer f${n} b${n}`);
}
// ---- single jersey sheet (back bed) ----
//Create a single-jersey (all knits) sheet by alternating left- and right-going rows of back knits:
for (let r = 0; r <= rows; r += 1) {
	if (r % 2 === 0) {
		//left-going row:
		for (let n = max; n >= min; n -= 1) {
			console.log(`knit - b${n} ${carrier}`);
		}
	} else {
		//right-going row:
		for (let n = min; n <= max; n += 1) {
			console.log(`knit + b${n} ${carrier}`);
		}
	}
}

// ---- take carrier out and drop remaining loops ----
//Send carrier back to its parking location:
console.log(`out ${carrier}`);

//drop loops:
for (let n = min; n <= max; n += 1) {
	console.log(`drop b${n}`);
}
#title: Back Single Jersey Sheet (plain python)
# Builds a sheet of single jersey (all knits) fabric on the back bed. (There isn't much of a point to doing this, but you can.)

#Write header:
print(';!knitout-2')
print(';;Machine: Kniterate')
print(';;Carriers: 1 2 3 4 5 6')

#Parameters:
min = 1 #needle number of left edge
max = 20 #needle number of right edge
rows = 20 #number of rows to knit
carrier = "3" #carrier name

# ---- set up initial loops and yarn carrier ----
#Bring in carrier:
print(f"in {carrier}")

#On Kniterate machines, carriers start on the left,
#so will start tucking onto needles left-to-right,
#and will be sure to tuck the leftmost needle in the first pass:
for n in range(min, max+1, 1):
	#tuck alternating needles, making sure to do the left edge:
	if (n - min) % 2 == 0:
		print(f"tuck + f{n} {carrier}")
#now, moving right-to-left, tuck the needles that were not tucked on the first pass:
for n in range(max, min-1, -1):
	if (n - min) % 2 != 0:
		print(f"tuck - f{n} {carrier}")

#knit three plain rows to allow cast-on stitches to relax:
# three isn't set in stone here -- it's just convenient
# for this example code to have the carrier end up on the right.
for n in range(min, max+1, 1):
	print(f"knit + f{n} {carrier}")
for n in range(max, min-1, -1):
	print(f"knit - f{n} {carrier}")
for n in range(min, max+1, 1):
	print(f"knit + f{n} {carrier}")

#move loops to the back bed:
for n in range(min, max+1, 1):
	print(f"xfer f{n} b{n}")
# ---- single jersey sheet (back bed) ----
#Create a single-jersey (all knits) sheet by alternating left- and right-going rows of back knits:
for r in range(0, rows+1, 1):
	if r % 2 == 0:
		#left-going row:
		for n in range(max, min-1, -1):
			print(f"knit - b{n} {carrier}")
	else:
		#right-going row:
		for n in range(min, max+1, 1):
			print(f"knit + b{n} {carrier}")

# ---- take carrier out and drop remaining loops ----
#Send carrier back to its parking location:
print(f"out {carrier}")

#drop loops:
for n in range(min, max+1, 1):
	print(f"drop b{n}")
#title: Back Single Jersey Sheet (python with knitout module)
# Builds a sheet of single jersey (all knits) fabric on the back bed. (There isn't much of a point to doing this, but you can.)

import knitout
K = knitout.Writer('1 2 3 4 5 6');
K.addHeader('Machine', 'Kniterate');

#Parameters:
min = 1 #needle number of left edge
max = 20 #needle number of right edge
rows = 20 #number of rows to knit
carrier = "3" #carrier name

# ---- set up initial loops and yarn carrier ----
#Bring in carrier:
K.ingripper(carrier)

#On Kniterate machines, carriers start on the left,
#so will start tucking onto needles left-to-right,
#and will be sure to tuck the leftmost needle in the first pass:
for n in range(min, max+1, 1):
	#tuck alternating needles, making sure to do the left edge:
	if (n - min) % 2 == 0:
		K.tuck("+", 'f' + str(n), carrier)
#now, moving right-to-left, tuck the needles that were not tucked on the first pass:
for n in range(max, min-1, -1):
	if (n - min) % 2 != 0:
		K.tuck("-", 'f' + str(n), carrier)

#knit three plain rows to allow cast-on stitches to relax:
# three isn't set in stone here -- it's just convenient
# for this example code to have the carrier end up on the right.
for n in range(min, max+1, 1):
	K.knit("+", 'f' + str(n), carrier)
for n in range(max, min-1, -1):
	K.knit("-", 'f' + str(n), carrier)
for n in range(min, max+1, 1):
	K.knit("+", 'f' + str(n), carrier)

#move loops to the back bed:
for n in range(min, max+1, 1):
	K.xfer('f' + str(n), 'b' + str(n))
# ---- single jersey sheet (back bed) ----
#Create a single-jersey (all knits) sheet by alternating left- and right-going rows of back knits:
for r in range(0, rows+1, 1):
	if r % 2 == 0:
		#left-going row:
		for n in range(max, min-1, -1):
			K.knit("-", 'b' + str(n), carrier)
	else:
		#right-going row:
		for n in range(min, max+1, 1):
			K.knit("+", 'b' + str(n), carrier)

# ---- take carrier out and drop remaining loops ----
#Send carrier back to its parking location:
K.outgripper(carrier)

#drop loops:
for n in range(min, max+1, 1):
	K.drop('b' + str(n))

K.write('back-single-jersey-sheet.kniterate.k')
//title: Back Single Jersey Sheet (javascript with knitout module)
// Builds a sheet of single jersey (all knits) fabric on the back bed. (There isn't much of a point to doing this, but you can.)

//include knitout module:
const knitout = require('knitout'); //include knitout module
const K = new knitout.Writer({ carriers:['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'] });
K.addHeader('Machine', 'SWGN2');

//Parameters:
let min = 1; //needle number of left edge
let max = 20; //needle number of right edge
let rows = 20; //number of rows to knit
let carrier = "3"; //carrier name

// ---- set up initial loops and yarn carrier ----
//Bring in carrier:
K.inhook(carrier);
//Set stitch table entry for cast-on:
K.stitchNumber(101);

//On SWGN2 machines, carriers start on the right,
//so will start tucking onto needles right-to-left,
//and will be sure to tuck the rightmost needle in the first pass:
for (let n = max; n >= min; n -= 1) {
	//tuck alternating needles, making sure to do the right edge:
	if ((max - n) % 2 === 0) {
		K.tuck("-", 'f' + n, carrier);
	}
}
//now, moving left-to-right, tuck the needles that were not tucked on the first pass:
for (let n = min; n <= max; n += 1) {
	if ((max - n) % 2 !== 0) {
		K.tuck("+", 'f' + n, carrier);
	}
}
//Set stitch table entry for knitting:
K.stitchNumber(105);
//knit two plain rows to allow cast-on stitches to relax:
// two isn't set in stone here -- it's just convenient
// for this example code to have the carrier end up on the right.
for (let n = max; n >= min; n -= 1) {
	K.knit("-", 'f' + n, carrier);
}
//send out yarn inserting hook; it is no longer needed to hold the yarn in place:
K.releasehook(carrier);
for (let n = min; n <= max; n += 1) {
	K.knit("+", 'f' + n, carrier);
}

//move loops to the back bed:
for (let n = min; n <= max; n += 1) {
	K.xfer('f' + n, 'b' + n);
}
// ---- single jersey sheet (back bed) ----
//Create a single-jersey (all knits) sheet by alternating left- and right-going rows of back knits:
for (let r = 0; r <= rows; r += 1) {
	if (r % 2 === 0) {
		//left-going row:
		for (let n = max; n >= min; n -= 1) {
			K.knit("-", 'b' + n, carrier);
		}
	} else {
		//right-going row:
		for (let n = min; n <= max; n += 1) {
			K.knit("+", 'b' + n, carrier);
		}
	}
}

// ---- take carrier out and drop remaining loops ----
//Take carrier out with yarn inserting hook:
K.outhook(carrier);

//drop loops:
for (let n = min; n <= max; n += 1) {
	K.drop('b' + n);
}

K.write('back-single-jersey-sheet.swgn2.k');
;!knitout-2
;;Machine: SWGN2
;;Carriers: 1 2 3 4 5 6 7 8 9 10

;title: Back Single Jersey Sheet (raw knitout)
; Builds a sheet of single jersey (all knits) fabric on the back bed. (There isn't much of a point to doing this, but you can.)

;Parameters:
; min = 1 -- needle number of left edge
; max = 20 -- needle number of right edge
; rows = 20 -- number of rows to knit
; carrier = "3" -- carrier name

; ---- set up initial loops and yarn carrier ----
;Bring in carrier:
inhook 3
;Set stitch table entry for cast-on:
x-stitch-number 101

;On SWGN2 machines, carriers start on the right,
;so will start tucking onto needles right-to-left,
;and will be sure to tuck the rightmost needle in the first pass:
tuck - f20 3
tuck - f18 3
tuck - f16 3
tuck - f14 3
tuck - f12 3
tuck - f10 3
tuck - f8 3
tuck - f6 3
tuck - f4 3
tuck - f2 3
;now, moving left-to-right, tuck the needles that were not tucked on the first pass:
tuck + f1 3
tuck + f3 3
tuck + f5 3
tuck + f7 3
tuck + f9 3
tuck + f11 3
tuck + f13 3
tuck + f15 3
tuck + f17 3
tuck + f19 3
;Set stitch table entry for knitting:
x-stitch-number 105
;knit two plain rows to allow cast-on stitches to relax:
; two isn't set in stone here -- it's just convenient
; for this example code to have the carrier end up on the right.
knit - f20 3
knit - f19 3
knit - f18 3
knit - f17 3
knit - f16 3
knit - f15 3
knit - f14 3
knit - f13 3
knit - f12 3
knit - f11 3
knit - f10 3
knit - f9 3
knit - f8 3
knit - f7 3
knit - f6 3
knit - f5 3
knit - f4 3
knit - f3 3
knit - f2 3
knit - f1 3
;send out yarn inserting hook; it is no longer needed to hold the yarn in place:
releasehook 3
knit + f1 3
knit + f2 3
knit + f3 3
knit + f4 3
knit + f5 3
knit + f6 3
knit + f7 3
knit + f8 3
knit + f9 3
knit + f10 3
knit + f11 3
knit + f12 3
knit + f13 3
knit + f14 3
knit + f15 3
knit + f16 3
knit + f17 3
knit + f18 3
knit + f19 3
knit + f20 3

;move loops to the back bed:
xfer f1 b1
xfer f2 b2
xfer f3 b3
xfer f4 b4
xfer f5 b5
xfer f6 b6
xfer f7 b7
xfer f8 b8
xfer f9 b9
xfer f10 b10
xfer f11 b11
xfer f12 b12
xfer f13 b13
xfer f14 b14
xfer f15 b15
xfer f16 b16
xfer f17 b17
xfer f18 b18
xfer f19 b19
xfer f20 b20
; ---- single jersey sheet (back bed) ----
;Create a single-jersey (all knits) sheet by alternating left- and right-going rows of back knits:
;left-going row:
knit - b20 3
knit - b19 3
knit - b18 3
knit - b17 3
knit - b16 3
knit - b15 3
knit - b14 3
knit - b13 3
knit - b12 3
knit - b11 3
knit - b10 3
knit - b9 3
knit - b8 3
knit - b7 3
knit - b6 3
knit - b5 3
knit - b4 3
knit - b3 3
knit - b2 3
knit - b1 3
;right-going row:
knit + b1 3
knit + b2 3
knit + b3 3
knit + b4 3
knit + b5 3
knit + b6 3
knit + b7 3
knit + b8 3
knit + b9 3
knit + b10 3
knit + b11 3
knit + b12 3
knit + b13 3
knit + b14 3
knit + b15 3
knit + b16 3
knit + b17 3
knit + b18 3
knit + b19 3
knit + b20 3
;left-going row:
knit - b20 3
knit - b19 3
knit - b18 3
knit - b17 3
knit - b16 3
knit - b15 3
knit - b14 3
knit - b13 3
knit - b12 3
knit - b11 3
knit - b10 3
knit - b9 3
knit - b8 3
knit - b7 3
knit - b6 3
knit - b5 3
knit - b4 3
knit - b3 3
knit - b2 3
knit - b1 3
;right-going row:
knit + b1 3
knit + b2 3
knit + b3 3
knit + b4 3
knit + b5 3
knit + b6 3
knit + b7 3
knit + b8 3
knit + b9 3
knit + b10 3
knit + b11 3
knit + b12 3
knit + b13 3
knit + b14 3
knit + b15 3
knit + b16 3
knit + b17 3
knit + b18 3
knit + b19 3
knit + b20 3
;left-going row:
knit - b20 3
knit - b19 3
knit - b18 3
knit - b17 3
knit - b16 3
knit - b15 3
knit - b14 3
knit - b13 3
knit - b12 3
knit - b11 3
knit - b10 3
knit - b9 3
knit - b8 3
knit - b7 3
knit - b6 3
knit - b5 3
knit - b4 3
knit - b3 3
knit - b2 3
knit - b1 3
;right-going row:
knit + b1 3
knit + b2 3
knit + b3 3
knit + b4 3
knit + b5 3
knit + b6 3
knit + b7 3
knit + b8 3
knit + b9 3
knit + b10 3
knit + b11 3
knit + b12 3
knit + b13 3
knit + b14 3
knit + b15 3
knit + b16 3
knit + b17 3
knit + b18 3
knit + b19 3
knit + b20 3
;left-going row:
knit - b20 3
knit - b19 3
knit - b18 3
knit - b17 3
knit - b16 3
knit - b15 3
knit - b14 3
knit - b13 3
knit - b12 3
knit - b11 3
knit - b10 3
knit - b9 3
knit - b8 3
knit - b7 3
knit - b6 3
knit - b5 3
knit - b4 3
knit - b3 3
knit - b2 3
knit - b1 3
;right-going row:
knit + b1 3
knit + b2 3
knit + b3 3
knit + b4 3
knit + b5 3
knit + b6 3
knit + b7 3
knit + b8 3
knit + b9 3
knit + b10 3
knit + b11 3
knit + b12 3
knit + b13 3
knit + b14 3
knit + b15 3
knit + b16 3
knit + b17 3
knit + b18 3
knit + b19 3
knit + b20 3
;left-going row:
knit - b20 3
knit - b19 3
knit - b18 3
knit - b17 3
knit - b16 3
knit - b15 3
knit - b14 3
knit - b13 3
knit - b12 3
knit - b11 3
knit - b10 3
knit - b9 3
knit - b8 3
knit - b7 3
knit - b6 3
knit - b5 3
knit - b4 3
knit - b3 3
knit - b2 3
knit - b1 3
;right-going row:
knit + b1 3
knit + b2 3
knit + b3 3
knit + b4 3
knit + b5 3
knit + b6 3
knit + b7 3
knit + b8 3
knit + b9 3
knit + b10 3
knit + b11 3
knit + b12 3
knit + b13 3
knit + b14 3
knit + b15 3
knit + b16 3
knit + b17 3
knit + b18 3
knit + b19 3
knit + b20 3
;left-going row:
knit - b20 3
knit - b19 3
knit - b18 3
knit - b17 3
knit - b16 3
knit - b15 3
knit - b14 3
knit - b13 3
knit - b12 3
knit - b11 3
knit - b10 3
knit - b9 3
knit - b8 3
knit - b7 3
knit - b6 3
knit - b5 3
knit - b4 3
knit - b3 3
knit - b2 3
knit - b1 3
;right-going row:
knit + b1 3
knit + b2 3
knit + b3 3
knit + b4 3
knit + b5 3
knit + b6 3
knit + b7 3
knit + b8 3
knit + b9 3
knit + b10 3
knit + b11 3
knit + b12 3
knit + b13 3
knit + b14 3
knit + b15 3
knit + b16 3
knit + b17 3
knit + b18 3
knit + b19 3
knit + b20 3
;left-going row:
knit - b20 3
knit - b19 3
knit - b18 3
knit - b17 3
knit - b16 3
knit - b15 3
knit - b14 3
knit - b13 3
knit - b12 3
knit - b11 3
knit - b10 3
knit - b9 3
knit - b8 3
knit - b7 3
knit - b6 3
knit - b5 3
knit - b4 3
knit - b3 3
knit - b2 3
knit - b1 3
;right-going row:
knit + b1 3
knit + b2 3
knit + b3 3
knit + b4 3
knit + b5 3
knit + b6 3
knit + b7 3
knit + b8 3
knit + b9 3
knit + b10 3
knit + b11 3
knit + b12 3
knit + b13 3
knit + b14 3
knit + b15 3
knit + b16 3
knit + b17 3
knit + b18 3
knit + b19 3
knit + b20 3
;left-going row:
knit - b20 3
knit - b19 3
knit - b18 3
knit - b17 3
knit - b16 3
knit - b15 3
knit - b14 3
knit - b13 3
knit - b12 3
knit - b11 3
knit - b10 3
knit - b9 3
knit - b8 3
knit - b7 3
knit - b6 3
knit - b5 3
knit - b4 3
knit - b3 3
knit - b2 3
knit - b1 3
;right-going row:
knit + b1 3
knit + b2 3
knit + b3 3
knit + b4 3
knit + b5 3
knit + b6 3
knit + b7 3
knit + b8 3
knit + b9 3
knit + b10 3
knit + b11 3
knit + b12 3
knit + b13 3
knit + b14 3
knit + b15 3
knit + b16 3
knit + b17 3
knit + b18 3
knit + b19 3
knit + b20 3
;left-going row:
knit - b20 3
knit - b19 3
knit - b18 3
knit - b17 3
knit - b16 3
knit - b15 3
knit - b14 3
knit - b13 3
knit - b12 3
knit - b11 3
knit - b10 3
knit - b9 3
knit - b8 3
knit - b7 3
knit - b6 3
knit - b5 3
knit - b4 3
knit - b3 3
knit - b2 3
knit - b1 3
;right-going row:
knit + b1 3
knit + b2 3
knit + b3 3
knit + b4 3
knit + b5 3
knit + b6 3
knit + b7 3
knit + b8 3
knit + b9 3
knit + b10 3
knit + b11 3
knit + b12 3
knit + b13 3
knit + b14 3
knit + b15 3
knit + b16 3
knit + b17 3
knit + b18 3
knit + b19 3
knit + b20 3
;left-going row:
knit - b20 3
knit - b19 3
knit - b18 3
knit - b17 3
knit - b16 3
knit - b15 3
knit - b14 3
knit - b13 3
knit - b12 3
knit - b11 3
knit - b10 3
knit - b9 3
knit - b8 3
knit - b7 3
knit - b6 3
knit - b5 3
knit - b4 3
knit - b3 3
knit - b2 3
knit - b1 3
;right-going row:
knit + b1 3
knit + b2 3
knit + b3 3
knit + b4 3
knit + b5 3
knit + b6 3
knit + b7 3
knit + b8 3
knit + b9 3
knit + b10 3
knit + b11 3
knit + b12 3
knit + b13 3
knit + b14 3
knit + b15 3
knit + b16 3
knit + b17 3
knit + b18 3
knit + b19 3
knit + b20 3
;left-going row:
knit - b20 3
knit - b19 3
knit - b18 3
knit - b17 3
knit - b16 3
knit - b15 3
knit - b14 3
knit - b13 3
knit - b12 3
knit - b11 3
knit - b10 3
knit - b9 3
knit - b8 3
knit - b7 3
knit - b6 3
knit - b5 3
knit - b4 3
knit - b3 3
knit - b2 3
knit - b1 3

; ---- take carrier out and drop remaining loops ----
;Take carrier out with yarn inserting hook:
outhook 3

;drop loops:
drop b1
drop b2
drop b3
drop b4
drop b5
drop b6
drop b7
drop b8
drop b9
drop b10
drop b11
drop b12
drop b13
drop b14
drop b15
drop b16
drop b17
drop b18
drop b19
drop b20
//title: Back Single Jersey Sheet (plain javascript)
// Builds a sheet of single jersey (all knits) fabric on the back bed. (There isn't much of a point to doing this, but you can.)

//Write header:
console.log(';!knitout-2');
console.log(';;Machine: SWGN2');
console.log(';;Carriers: 1 2 3 4 5 6 7 8 9 10');

//Parameters:
let min = 1; //needle number of left edge
let max = 20; //needle number of right edge
let rows = 20; //number of rows to knit
let carrier = "3"; //carrier name

// ---- set up initial loops and yarn carrier ----
//Bring in carrier:
console.log(`inhook ${carrier}`);
//Set stitch table entry for cast-on:
console.log(`x-stitch-number 101`);

//On SWGN2 machines, carriers start on the right,
//so will start tucking onto needles right-to-left,
//and will be sure to tuck the rightmost needle in the first pass:
for (let n = max; n >= min; n -= 1) {
	//tuck alternating needles, making sure to do the right edge:
	if ((max - n) % 2 === 0) {
		console.log(`tuck - f${n} ${carrier}`);
	}
}
//now, moving left-to-right, tuck the needles that were not tucked on the first pass:
for (let n = min; n <= max; n += 1) {
	if ((max - n) % 2 !== 0) {
		console.log(`tuck + f${n} ${carrier}`);
	}
}
//Set stitch table entry for knitting:
console.log(`x-stitch-number 105`);
//knit two plain rows to allow cast-on stitches to relax:
// two isn't set in stone here -- it's just convenient
// for this example code to have the carrier end up on the right.
for (let n = max; n >= min; n -= 1) {
	console.log(`knit - f${n} ${carrier}`);
}
//send out yarn inserting hook; it is no longer needed to hold the yarn in place:
console.log(`releasehook ${carrier}`);
for (let n = min; n <= max; n += 1) {
	console.log(`knit + f${n} ${carrier}`);
}

//move loops to the back bed:
for (let n = min; n <= max; n += 1) {
	console.log(`xfer f${n} b${n}`);
}
// ---- single jersey sheet (back bed) ----
//Create a single-jersey (all knits) sheet by alternating left- and right-going rows of back knits:
for (let r = 0; r <= rows; r += 1) {
	if (r % 2 === 0) {
		//left-going row:
		for (let n = max; n >= min; n -= 1) {
			console.log(`knit - b${n} ${carrier}`);
		}
	} else {
		//right-going row:
		for (let n = min; n <= max; n += 1) {
			console.log(`knit + b${n} ${carrier}`);
		}
	}
}

// ---- take carrier out and drop remaining loops ----
//Take carrier out with yarn inserting hook:
console.log(`outhook ${carrier}`);

//drop loops:
for (let n = min; n <= max; n += 1) {
	console.log(`drop b${n}`);
}
#title: Back Single Jersey Sheet (plain python)
# Builds a sheet of single jersey (all knits) fabric on the back bed. (There isn't much of a point to doing this, but you can.)

#Write header:
print(';!knitout-2')
print(';;Machine: SWGN2')
print(';;Carriers: 1 2 3 4 5 6 7 8 9 10')

#Parameters:
min = 1 #needle number of left edge
max = 20 #needle number of right edge
rows = 20 #number of rows to knit
carrier = "3" #carrier name

# ---- set up initial loops and yarn carrier ----
#Bring in carrier:
print(f"inhook {carrier}")
#Set stitch table entry for cast-on:
print(f"x-stitch-number 101")

#On SWGN2 machines, carriers start on the right,
#so will start tucking onto needles right-to-left,
#and will be sure to tuck the rightmost needle in the first pass:
for n in range(max, min-1, -1):
	#tuck alternating needles, making sure to do the right edge:
	if (max - n) % 2 == 0:
		print(f"tuck - f{n} {carrier}")
#now, moving left-to-right, tuck the needles that were not tucked on the first pass:
for n in range(min, max+1, 1):
	if (max - n) % 2 != 0:
		print(f"tuck + f{n} {carrier}")
#Set stitch table entry for knitting:
print(f"x-stitch-number 105")
#knit two plain rows to allow cast-on stitches to relax:
# two isn't set in stone here -- it's just convenient
# for this example code to have the carrier end up on the right.
for n in range(max, min-1, -1):
	print(f"knit - f{n} {carrier}")
#send out yarn inserting hook; it is no longer needed to hold the yarn in place:
print(f"releasehook {carrier}")
for n in range(min, max+1, 1):
	print(f"knit + f{n} {carrier}")

#move loops to the back bed:
for n in range(min, max+1, 1):
	print(f"xfer f{n} b{n}")
# ---- single jersey sheet (back bed) ----
#Create a single-jersey (all knits) sheet by alternating left- and right-going rows of back knits:
for r in range(0, rows+1, 1):
	if r % 2 == 0:
		#left-going row:
		for n in range(max, min-1, -1):
			print(f"knit - b{n} {carrier}")
	else:
		#right-going row:
		for n in range(min, max+1, 1):
			print(f"knit + b{n} {carrier}")

# ---- take carrier out and drop remaining loops ----
#Take carrier out with yarn inserting hook:
print(f"outhook {carrier}")

#drop loops:
for n in range(min, max+1, 1):
	print(f"drop b{n}")
#title: Back Single Jersey Sheet (python with knitout module)
# Builds a sheet of single jersey (all knits) fabric on the back bed. (There isn't much of a point to doing this, but you can.)

import knitout
K = knitout.Writer('1 2 3 4 5 6 7 8 9 10');
K.addHeader('Machine', 'SWGN2');

#Parameters:
min = 1 #needle number of left edge
max = 20 #needle number of right edge
rows = 20 #number of rows to knit
carrier = "3" #carrier name

# ---- set up initial loops and yarn carrier ----
#Bring in carrier:
K.inhook(carrier)
#Set stitch table entry for cast-on:
K.stitchNumber(101)

#On SWGN2 machines, carriers start on the right,
#so will start tucking onto needles right-to-left,
#and will be sure to tuck the rightmost needle in the first pass:
for n in range(max, min-1, -1):
	#tuck alternating needles, making sure to do the right edge:
	if (max - n) % 2 == 0:
		K.tuck("-", 'f' + str(n), carrier)
#now, moving left-to-right, tuck the needles that were not tucked on the first pass:
for n in range(min, max+1, 1):
	if (max - n) % 2 != 0:
		K.tuck("+", 'f' + str(n), carrier)
#Set stitch table entry for knitting:
K.stitchNumber(105)
#knit two plain rows to allow cast-on stitches to relax:
# two isn't set in stone here -- it's just convenient
# for this example code to have the carrier end up on the right.
for n in range(max, min-1, -1):
	K.knit("-", 'f' + str(n), carrier)
#send out yarn inserting hook; it is no longer needed to hold the yarn in place:
K.releasehook(carrier)
for n in range(min, max+1, 1):
	K.knit("+", 'f' + str(n), carrier)

#move loops to the back bed:
for n in range(min, max+1, 1):
	K.xfer('f' + str(n), 'b' + str(n))
# ---- single jersey sheet (back bed) ----
#Create a single-jersey (all knits) sheet by alternating left- and right-going rows of back knits:
for r in range(0, rows+1, 1):
	if r % 2 == 0:
		#left-going row:
		for n in range(max, min-1, -1):
			K.knit("-", 'b' + str(n), carrier)
	else:
		#right-going row:
		for n in range(min, max+1, 1):
			K.knit("+", 'b' + str(n), carrier)

# ---- take carrier out and drop remaining loops ----
#Take carrier out with yarn inserting hook:
K.outhook(carrier)

#drop loops:
for n in range(min, max+1, 1):
	K.drop('b' + str(n))

K.write('back-single-jersey-sheet.swgn2.k')
//title: Seed Stitch Sheet (javascript with knitout module)

//include knitout module:
const knitout = require('knitout'); //include knitout module
const K = new knitout.Writer({ carriers:['1', '2', '3', '4', '5', '6'] });
K.addHeader('Machine', 'Kniterate');

//Parameters:
let min = 1; //needle number of left edge
let max = 20; //needle number of right edge
let rows = 20; //number of rows to knit
let carrier = "3"; //carrier name

// ---- set up initial loops and yarn carrier ----
//Bring in carrier:
K.in(carrier);

//On Kniterate machines, carriers start on the left,
//so will start tucking onto needles left-to-right,
//and will be sure to tuck the leftmost needle in the first pass:
for (let n = min; n <= max; n += 1) {
	//tuck alternating needles, making sure to do the left edge:
	if ((n - min) % 2 === 0) {
		K.tuck("+", 'f' + n, carrier);
	}
}
//now, moving right-to-left, tuck the needles that were not tucked on the first pass:
for (let n = max; n >= min; n -= 1) {
	if ((n - min) % 2 !== 0) {
		K.tuck("-", 'f' + n, carrier);
	}
}

//knit three plain rows to allow cast-on stitches to relax:
// three isn't set in stone here -- it's just convenient
// for this example code to have the carrier end up on the right.
for (let n = min; n <= max; n += 1) {
	K.knit("+", 'f' + n, carrier);
}
for (let n = max; n >= min; n -= 1) {
	K.knit("-", 'f' + n, carrier);
}
for (let n = min; n <= max; n += 1) {
	K.knit("+", 'f' + n, carrier);
}

// ---- seed stitch sheet ----
//Create a seed stitch (checkerboard of front- and back-knits) sheet.

for (let r = 0; r <= rows; r += 1) {
	if (r % 2 === 0) {
		//knit even rows with odd loops on the back:
		for (let n = min; n <= max; n += 1) {
			if ((n-min) % 2 !== 0) {
				K.xfer('f' + n, 'b' + n);
			}
		}
		for (let n = max; n >= min; n -= 1) {
			if ((n-min) % 2 === 0) {
				K.knit("-", 'f' + n, carrier);
			} else {
				K.knit("-", 'b' + n, carrier);
			}
		}
		//return odd loops to the front:
		for (let n = min; n <= max; n += 1) {
			if ((n-min) % 2 !== 0) {
				K.xfer('b' + n, 'f' + n);
			}
		}
	} else {
		//knit odd rows with even loops on the back:
		for (let n = min; n <= max; n += 1) {
			if ((n-min) % 2 === 0) {
				K.xfer('f' + n, 'b' + n);
			}
		}
		for (let n = min; n <= max; n += 1) {
			if ((n-min) % 2 !== 0) {
				K.knit("+", 'f' + n, carrier);
			} else {
				K.knit("+", 'b' + n, carrier);
			}
		}
		//return even loops to the front:
		for (let n = min; n <= max; n += 1) {
			if ((n-min) % 2 === 0) {
				K.xfer('b' + n, 'f' + n);
			}
		}
	}
}

// ---- take carrier out and drop remaining loops ----
//Send carrier back to its parking location:
K.out(carrier);

//drop loops:
for (let n = min; n <= max; n += 1) {
	K.drop('f' + n);
}

K.write('seed-stitch-sheet.kniterate.k');
;!knitout-2
;;Machine: Kniterate
;;Carriers: 1 2 3 4 5 6

;title: Seed Stitch Sheet (raw knitout)

;Parameters:
; min = 1 -- needle number of left edge
; max = 20 -- needle number of right edge
; rows = 20 -- number of rows to knit
; carrier = "3" -- carrier name

; ---- set up initial loops and yarn carrier ----
;Bring in carrier:
in 3

;On Kniterate machines, carriers start on the left,
;so will start tucking onto needles left-to-right,
;and will be sure to tuck the leftmost needle in the first pass:
tuck + f1 3
tuck + f3 3
tuck + f5 3
tuck + f7 3
tuck + f9 3
tuck + f11 3
tuck + f13 3
tuck + f15 3
tuck + f17 3
tuck + f19 3
;now, moving right-to-left, tuck the needles that were not tucked on the first pass:
tuck - f20 3
tuck - f18 3
tuck - f16 3
tuck - f14 3
tuck - f12 3
tuck - f10 3
tuck - f8 3
tuck - f6 3
tuck - f4 3
tuck - f2 3

;knit three plain rows to allow cast-on stitches to relax:
; three isn't set in stone here -- it's just convenient
; for this example code to have the carrier end up on the right.
knit + f1 3
knit + f2 3
knit + f3 3
knit + f4 3
knit + f5 3
knit + f6 3
knit + f7 3
knit + f8 3
knit + f9 3
knit + f10 3
knit + f11 3
knit + f12 3
knit + f13 3
knit + f14 3
knit + f15 3
knit + f16 3
knit + f17 3
knit + f18 3
knit + f19 3
knit + f20 3
knit - f20 3
knit - f19 3
knit - f18 3
knit - f17 3
knit - f16 3
knit - f15 3
knit - f14 3
knit - f13 3
knit - f12 3
knit - f11 3
knit - f10 3
knit - f9 3
knit - f8 3
knit - f7 3
knit - f6 3
knit - f5 3
knit - f4 3
knit - f3 3
knit - f2 3
knit - f1 3
knit + f1 3
knit + f2 3
knit + f3 3
knit + f4 3
knit + f5 3
knit + f6 3
knit + f7 3
knit + f8 3
knit + f9 3
knit + f10 3
knit + f11 3
knit + f12 3
knit + f13 3
knit + f14 3
knit + f15 3
knit + f16 3
knit + f17 3
knit + f18 3
knit + f19 3
knit + f20 3

; ---- seed stitch sheet ----
;Create a seed stitch (checkerboard of front- and back-knits) sheet.

;knit even rows with odd loops on the back:
xfer f2 b2
xfer f4 b4
xfer f6 b6
xfer f8 b8
xfer f10 b10
xfer f12 b12
xfer f14 b14
xfer f16 b16
xfer f18 b18
xfer f20 b20
knit - b20 3
knit - f19 3
knit - b18 3
knit - f17 3
knit - b16 3
knit - f15 3
knit - b14 3
knit - f13 3
knit - b12 3
knit - f11 3
knit - b10 3
knit - f9 3
knit - b8 3
knit - f7 3
knit - b6 3
knit - f5 3
knit - b4 3
knit - f3 3
knit - b2 3
knit - f1 3
;return odd loops to the front:
xfer b2 f2
xfer b4 f4
xfer b6 f6
xfer b8 f8
xfer b10 f10
xfer b12 f12
xfer b14 f14
xfer b16 f16
xfer b18 f18
xfer b20 f20
;knit odd rows with even loops on the back:
xfer f1 b1
xfer f3 b3
xfer f5 b5
xfer f7 b7
xfer f9 b9
xfer f11 b11
xfer f13 b13
xfer f15 b15
xfer f17 b17
xfer f19 b19
knit + b1 3
knit + f2 3
knit + b3 3
knit + f4 3
knit + b5 3
knit + f6 3
knit + b7 3
knit + f8 3
knit + b9 3
knit + f10 3
knit + b11 3
knit + f12 3
knit + b13 3
knit + f14 3
knit + b15 3
knit + f16 3
knit + b17 3
knit + f18 3
knit + b19 3
knit + f20 3
;return even loops to the front:
xfer b1 f1
xfer b3 f3
xfer b5 f5
xfer b7 f7
xfer b9 f9
xfer b11 f11
xfer b13 f13
xfer b15 f15
xfer b17 f17
xfer b19 f19
;knit even rows with odd loops on the back:
xfer f2 b2
xfer f4 b4
xfer f6 b6
xfer f8 b8
xfer f10 b10
xfer f12 b12
xfer f14 b14
xfer f16 b16
xfer f18 b18
xfer f20 b20
knit - b20 3
knit - f19 3
knit - b18 3
knit - f17 3
knit - b16 3
knit - f15 3
knit - b14 3
knit - f13 3
knit - b12 3
knit - f11 3
knit - b10 3
knit - f9 3
knit - b8 3
knit - f7 3
knit - b6 3
knit - f5 3
knit - b4 3
knit - f3 3
knit - b2 3
knit - f1 3
;return odd loops to the front:
xfer b2 f2
xfer b4 f4
xfer b6 f6
xfer b8 f8
xfer b10 f10
xfer b12 f12
xfer b14 f14
xfer b16 f16
xfer b18 f18
xfer b20 f20
;knit odd rows with even loops on the back:
xfer f1 b1
xfer f3 b3
xfer f5 b5
xfer f7 b7
xfer f9 b9
xfer f11 b11
xfer f13 b13
xfer f15 b15
xfer f17 b17
xfer f19 b19
knit + b1 3
knit + f2 3
knit + b3 3
knit + f4 3
knit + b5 3
knit + f6 3
knit + b7 3
knit + f8 3
knit + b9 3
knit + f10 3
knit + b11 3
knit + f12 3
knit + b13 3
knit + f14 3
knit + b15 3
knit + f16 3
knit + b17 3
knit + f18 3
knit + b19 3
knit + f20 3
;return even loops to the front:
xfer b1 f1
xfer b3 f3
xfer b5 f5
xfer b7 f7
xfer b9 f9
xfer b11 f11
xfer b13 f13
xfer b15 f15
xfer b17 f17
xfer b19 f19
;knit even rows with odd loops on the back:
xfer f2 b2
xfer f4 b4
xfer f6 b6
xfer f8 b8
xfer f10 b10
xfer f12 b12
xfer f14 b14
xfer f16 b16
xfer f18 b18
xfer f20 b20
knit - b20 3
knit - f19 3
knit - b18 3
knit - f17 3
knit - b16 3
knit - f15 3
knit - b14 3
knit - f13 3
knit - b12 3
knit - f11 3
knit - b10 3
knit - f9 3
knit - b8 3
knit - f7 3
knit - b6 3
knit - f5 3
knit - b4 3
knit - f3 3
knit - b2 3
knit - f1 3
;return odd loops to the front:
xfer b2 f2
xfer b4 f4
xfer b6 f6
xfer b8 f8
xfer b10 f10
xfer b12 f12
xfer b14 f14
xfer b16 f16
xfer b18 f18
xfer b20 f20
;knit odd rows with even loops on the back:
xfer f1 b1
xfer f3 b3
xfer f5 b5
xfer f7 b7
xfer f9 b9
xfer f11 b11
xfer f13 b13
xfer f15 b15
xfer f17 b17
xfer f19 b19
knit + b1 3
knit + f2 3
knit + b3 3
knit + f4 3
knit + b5 3
knit + f6 3
knit + b7 3
knit + f8 3
knit + b9 3
knit + f10 3
knit + b11 3
knit + f12 3
knit + b13 3
knit + f14 3
knit + b15 3
knit + f16 3
knit + b17 3
knit + f18 3
knit + b19 3
knit + f20 3
;return even loops to the front:
xfer b1 f1
xfer b3 f3
xfer b5 f5
xfer b7 f7
xfer b9 f9
xfer b11 f11
xfer b13 f13
xfer b15 f15
xfer b17 f17
xfer b19 f19
;knit even rows with odd loops on the back:
xfer f2 b2
xfer f4 b4
xfer f6 b6
xfer f8 b8
xfer f10 b10
xfer f12 b12
xfer f14 b14
xfer f16 b16
xfer f18 b18
xfer f20 b20
knit - b20 3
knit - f19 3
knit - b18 3
knit - f17 3
knit - b16 3
knit - f15 3
knit - b14 3
knit - f13 3
knit - b12 3
knit - f11 3
knit - b10 3
knit - f9 3
knit - b8 3
knit - f7 3
knit - b6 3
knit - f5 3
knit - b4 3
knit - f3 3
knit - b2 3
knit - f1 3
;return odd loops to the front:
xfer b2 f2
xfer b4 f4
xfer b6 f6
xfer b8 f8
xfer b10 f10
xfer b12 f12
xfer b14 f14
xfer b16 f16
xfer b18 f18
xfer b20 f20
;knit odd rows with even loops on the back:
xfer f1 b1
xfer f3 b3
xfer f5 b5
xfer f7 b7
xfer f9 b9
xfer f11 b11
xfer f13 b13
xfer f15 b15
xfer f17 b17
xfer f19 b19
knit + b1 3
knit + f2 3
knit + b3 3
knit + f4 3
knit + b5 3
knit + f6 3
knit + b7 3
knit + f8 3
knit + b9 3
knit + f10 3
knit + b11 3
knit + f12 3
knit + b13 3
knit + f14 3
knit + b15 3
knit + f16 3
knit + b17 3
knit + f18 3
knit + b19 3
knit + f20 3
;return even loops to the front:
xfer b1 f1
xfer b3 f3
xfer b5 f5
xfer b7 f7
xfer b9 f9
xfer b11 f11
xfer b13 f13
xfer b15 f15
xfer b17 f17
xfer b19 f19
;knit even rows with odd loops on the back:
xfer f2 b2
xfer f4 b4
xfer f6 b6
xfer f8 b8
xfer f10 b10
xfer f12 b12
xfer f14 b14
xfer f16 b16
xfer f18 b18
xfer f20 b20
knit - b20 3
knit - f19 3
knit - b18 3
knit - f17 3
knit - b16 3
knit - f15 3
knit - b14 3
knit - f13 3
knit - b12 3
knit - f11 3
knit - b10 3
knit - f9 3
knit - b8 3
knit - f7 3
knit - b6 3
knit - f5 3
knit - b4 3
knit - f3 3
knit - b2 3
knit - f1 3
;return odd loops to the front:
xfer b2 f2
xfer b4 f4
xfer b6 f6
xfer b8 f8
xfer b10 f10
xfer b12 f12
xfer b14 f14
xfer b16 f16
xfer b18 f18
xfer b20 f20
;knit odd rows with even loops on the back:
xfer f1 b1
xfer f3 b3
xfer f5 b5
xfer f7 b7
xfer f9 b9
xfer f11 b11
xfer f13 b13
xfer f15 b15
xfer f17 b17
xfer f19 b19
knit + b1 3
knit + f2 3
knit + b3 3
knit + f4 3
knit + b5 3
knit + f6 3
knit + b7 3
knit + f8 3
knit + b9 3
knit + f10 3
knit + b11 3
knit + f12 3
knit + b13 3
knit + f14 3
knit + b15 3
knit + f16 3
knit + b17 3
knit + f18 3
knit + b19 3
knit + f20 3
;return even loops to the front:
xfer b1 f1
xfer b3 f3
xfer b5 f5
xfer b7 f7
xfer b9 f9
xfer b11 f11
xfer b13 f13
xfer b15 f15
xfer b17 f17
xfer b19 f19
;knit even rows with odd loops on the back:
xfer f2 b2
xfer f4 b4
xfer f6 b6
xfer f8 b8
xfer f10 b10
xfer f12 b12
xfer f14 b14
xfer f16 b16
xfer f18 b18
xfer f20 b20
knit - b20 3
knit - f19 3
knit - b18 3
knit - f17 3
knit - b16 3
knit - f15 3
knit - b14 3
knit - f13 3
knit - b12 3
knit - f11 3
knit - b10 3
knit - f9 3
knit - b8 3
knit - f7 3
knit - b6 3
knit - f5 3
knit - b4 3
knit - f3 3
knit - b2 3
knit - f1 3
;return odd loops to the front:
xfer b2 f2
xfer b4 f4
xfer b6 f6
xfer b8 f8
xfer b10 f10
xfer b12 f12
xfer b14 f14
xfer b16 f16
xfer b18 f18
xfer b20 f20
;knit odd rows with even loops on the back:
xfer f1 b1
xfer f3 b3
xfer f5 b5
xfer f7 b7
xfer f9 b9
xfer f11 b11
xfer f13 b13
xfer f15 b15
xfer f17 b17
xfer f19 b19
knit + b1 3
knit + f2 3
knit + b3 3
knit + f4 3
knit + b5 3
knit + f6 3
knit + b7 3
knit + f8 3
knit + b9 3
knit + f10 3
knit + b11 3
knit + f12 3
knit + b13 3
knit + f14 3
knit + b15 3
knit + f16 3
knit + b17 3
knit + f18 3
knit + b19 3
knit + f20 3
;return even loops to the front:
xfer b1 f1
xfer b3 f3
xfer b5 f5
xfer b7 f7
xfer b9 f9
xfer b11 f11
xfer b13 f13
xfer b15 f15
xfer b17 f17
xfer b19 f19
;knit even rows with odd loops on the back:
xfer f2 b2
xfer f4 b4
xfer f6 b6
xfer f8 b8
xfer f10 b10
xfer f12 b12
xfer f14 b14
xfer f16 b16
xfer f18 b18
xfer f20 b20
knit - b20 3
knit - f19 3
knit - b18 3
knit - f17 3
knit - b16 3
knit - f15 3
knit - b14 3
knit - f13 3
knit - b12 3
knit - f11 3
knit - b10 3
knit - f9 3
knit - b8 3
knit - f7 3
knit - b6 3
knit - f5 3
knit - b4 3
knit - f3 3
knit - b2 3
knit - f1 3
;return odd loops to the front:
xfer b2 f2
xfer b4 f4
xfer b6 f6
xfer b8 f8
xfer b10 f10
xfer b12 f12
xfer b14 f14
xfer b16 f16
xfer b18 f18
xfer b20 f20
;knit odd rows with even loops on the back:
xfer f1 b1
xfer f3 b3
xfer f5 b5
xfer f7 b7
xfer f9 b9
xfer f11 b11
xfer f13 b13
xfer f15 b15
xfer f17 b17
xfer f19 b19
knit + b1 3
knit + f2 3
knit + b3 3
knit + f4 3
knit + b5 3
knit + f6 3
knit + b7 3
knit + f8 3
knit + b9 3
knit + f10 3
knit + b11 3
knit + f12 3
knit + b13 3
knit + f14 3
knit + b15 3
knit + f16 3
knit + b17 3
knit + f18 3
knit + b19 3
knit + f20 3
;return even loops to the front:
xfer b1 f1
xfer b3 f3
xfer b5 f5
xfer b7 f7
xfer b9 f9
xfer b11 f11
xfer b13 f13
xfer b15 f15
xfer b17 f17
xfer b19 f19
;knit even rows with odd loops on the back:
xfer f2 b2
xfer f4 b4
xfer f6 b6
xfer f8 b8
xfer f10 b10
xfer f12 b12
xfer f14 b14
xfer f16 b16
xfer f18 b18
xfer f20 b20
knit - b20 3
knit - f19 3
knit - b18 3
knit - f17 3
knit - b16 3
knit - f15 3
knit - b14 3
knit - f13 3
knit - b12 3
knit - f11 3
knit - b10 3
knit - f9 3
knit - b8 3
knit - f7 3
knit - b6 3
knit - f5 3
knit - b4 3
knit - f3 3
knit - b2 3
knit - f1 3
;return odd loops to the front:
xfer b2 f2
xfer b4 f4
xfer b6 f6
xfer b8 f8
xfer b10 f10
xfer b12 f12
xfer b14 f14
xfer b16 f16
xfer b18 f18
xfer b20 f20
;knit odd rows with even loops on the back:
xfer f1 b1
xfer f3 b3
xfer f5 b5
xfer f7 b7
xfer f9 b9
xfer f11 b11
xfer f13 b13
xfer f15 b15
xfer f17 b17
xfer f19 b19
knit + b1 3
knit + f2 3
knit + b3 3
knit + f4 3
knit + b5 3
knit + f6 3
knit + b7 3
knit + f8 3
knit + b9 3
knit + f10 3
knit + b11 3
knit + f12 3
knit + b13 3
knit + f14 3
knit + b15 3
knit + f16 3
knit + b17 3
knit + f18 3
knit + b19 3
knit + f20 3
;return even loops to the front:
xfer b1 f1
xfer b3 f3
xfer b5 f5
xfer b7 f7
xfer b9 f9
xfer b11 f11
xfer b13 f13
xfer b15 f15
xfer b17 f17
xfer b19 f19
;knit even rows with odd loops on the back:
xfer f2 b2
xfer f4 b4
xfer f6 b6
xfer f8 b8
xfer f10 b10
xfer f12 b12
xfer f14 b14
xfer f16 b16
xfer f18 b18
xfer f20 b20
knit - b20 3
knit - f19 3
knit - b18 3
knit - f17 3
knit - b16 3
knit - f15 3
knit - b14 3
knit - f13 3
knit - b12 3
knit - f11 3
knit - b10 3
knit - f9 3
knit - b8 3
knit - f7 3
knit - b6 3
knit - f5 3
knit - b4 3
knit - f3 3
knit - b2 3
knit - f1 3
;return odd loops to the front:
xfer b2 f2
xfer b4 f4
xfer b6 f6
xfer b8 f8
xfer b10 f10
xfer b12 f12
xfer b14 f14
xfer b16 f16
xfer b18 f18
xfer b20 f20
;knit odd rows with even loops on the back:
xfer f1 b1
xfer f3 b3
xfer f5 b5
xfer f7 b7
xfer f9 b9
xfer f11 b11
xfer f13 b13
xfer f15 b15
xfer f17 b17
xfer f19 b19
knit + b1 3
knit + f2 3
knit + b3 3
knit + f4 3
knit + b5 3
knit + f6 3
knit + b7 3
knit + f8 3
knit + b9 3
knit + f10 3
knit + b11 3
knit + f12 3
knit + b13 3
knit + f14 3
knit + b15 3
knit + f16 3
knit + b17 3
knit + f18 3
knit + b19 3
knit + f20 3
;return even loops to the front:
xfer b1 f1
xfer b3 f3
xfer b5 f5
xfer b7 f7
xfer b9 f9
xfer b11 f11
xfer b13 f13
xfer b15 f15
xfer b17 f17
xfer b19 f19
;knit even rows with odd loops on the back:
xfer f2 b2
xfer f4 b4
xfer f6 b6
xfer f8 b8
xfer f10 b10
xfer f12 b12
xfer f14 b14
xfer f16 b16
xfer f18 b18
xfer f20 b20
knit - b20 3
knit - f19 3
knit - b18 3
knit - f17 3
knit - b16 3
knit - f15 3
knit - b14 3
knit - f13 3
knit - b12 3
knit - f11 3
knit - b10 3
knit - f9 3
knit - b8 3
knit - f7 3
knit - b6 3
knit - f5 3
knit - b4 3
knit - f3 3
knit - b2 3
knit - f1 3
;return odd loops to the front:
xfer b2 f2
xfer b4 f4
xfer b6 f6
xfer b8 f8
xfer b10 f10
xfer b12 f12
xfer b14 f14
xfer b16 f16
xfer b18 f18
xfer b20 f20
;knit odd rows with even loops on the back:
xfer f1 b1
xfer f3 b3
xfer f5 b5
xfer f7 b7
xfer f9 b9
xfer f11 b11
xfer f13 b13
xfer f15 b15
xfer f17 b17
xfer f19 b19
knit + b1 3
knit + f2 3
knit + b3 3
knit + f4 3
knit + b5 3
knit + f6 3
knit + b7 3
knit + f8 3
knit + b9 3
knit + f10 3
knit + b11 3
knit + f12 3
knit + b13 3
knit + f14 3
knit + b15 3
knit + f16 3
knit + b17 3
knit + f18 3
knit + b19 3
knit + f20 3
;return even loops to the front:
xfer b1 f1
xfer b3 f3
xfer b5 f5
xfer b7 f7
xfer b9 f9
xfer b11 f11
xfer b13 f13
xfer b15 f15
xfer b17 f17
xfer b19 f19
;knit even rows with odd loops on the back:
xfer f2 b2
xfer f4 b4
xfer f6 b6
xfer f8 b8
xfer f10 b10
xfer f12 b12
xfer f14 b14
xfer f16 b16
xfer f18 b18
xfer f20 b20
knit - b20 3
knit - f19 3
knit - b18 3
knit - f17 3
knit - b16 3
knit - f15 3
knit - b14 3
knit - f13 3
knit - b12 3
knit - f11 3
knit - b10 3
knit - f9 3
knit - b8 3
knit - f7 3
knit - b6 3
knit - f5 3
knit - b4 3
knit - f3 3
knit - b2 3
knit - f1 3
;return odd loops to the front:
xfer b2 f2
xfer b4 f4
xfer b6 f6
xfer b8 f8
xfer b10 f10
xfer b12 f12
xfer b14 f14
xfer b16 f16
xfer b18 f18
xfer b20 f20

; ---- take carrier out and drop remaining loops ----
;Send carrier back to its parking location:
out 3

;drop loops:
drop f1
drop f2
drop f3
drop f4
drop f5
drop f6
drop f7
drop f8
drop f9
drop f10
drop f11
drop f12
drop f13
drop f14
drop f15
drop f16
drop f17
drop f18
drop f19
drop f20
//title: Seed Stitch Sheet (plain javascript)

//Write header:
console.log(';!knitout-2');
console.log(';;Machine: Kniterate');
console.log(';;Carriers: 1 2 3 4 5 6');

//Parameters:
let min = 1; //needle number of left edge
let max = 20; //needle number of right edge
let rows = 20; //number of rows to knit
let carrier = "3"; //carrier name

// ---- set up initial loops and yarn carrier ----
//Bring in carrier:
console.log(`in ${carrier}`);

//On Kniterate machines, carriers start on the left,
//so will start tucking onto needles left-to-right,
//and will be sure to tuck the leftmost needle in the first pass:
for (let n = min; n <= max; n += 1) {
	//tuck alternating needles, making sure to do the left edge:
	if ((n - min) % 2 === 0) {
		console.log(`tuck + f${n} ${carrier}`);
	}
}
//now, moving right-to-left, tuck the needles that were not tucked on the first pass:
for (let n = max; n >= min; n -= 1) {
	if ((n - min) % 2 !== 0) {
		console.log(`tuck - f${n} ${carrier}`);
	}
}

//knit three plain rows to allow cast-on stitches to relax:
// three isn't set in stone here -- it's just convenient
// for this example code to have the carrier end up on the right.
for (let n = min; n <= max; n += 1) {
	console.log(`knit + f${n} ${carrier}`);
}
for (let n = max; n >= min; n -= 1) {
	console.log(`knit - f${n} ${carrier}`);
}
for (let n = min; n <= max; n += 1) {
	console.log(`knit + f${n} ${carrier}`);
}

// ---- seed stitch sheet ----
//Create a seed stitch (checkerboard of front- and back-knits) sheet.

for (let r = 0; r <= rows; r += 1) {
	if (r % 2 === 0) {
		//knit even rows with odd loops on the back:
		for (let n = min; n <= max; n += 1) {
			if ((n-min) % 2 !== 0) {
				console.log(`xfer f${n} b${n}`);
			}
		}
		for (let n = max; n >= min; n -= 1) {
			if ((n-min) % 2 === 0) {
				console.log(`knit - f${n} ${carrier}`);
			} else {
				console.log(`knit - b${n} ${carrier}`);
			}
		}
		//return odd loops to the front:
		for (let n = min; n <= max; n += 1) {
			if ((n-min) % 2 !== 0) {
				console.log(`xfer b${n} f${n}`);
			}
		}
	} else {
		//knit odd rows with even loops on the back:
		for (let n = min; n <= max; n += 1) {
			if ((n-min) % 2 === 0) {
				console.log(`xfer f${n} b${n}`);
			}
		}
		for (let n = min; n <= max; n += 1) {
			if ((n-min) % 2 !== 0) {
				console.log(`knit + f${n} ${carrier}`);
			} else {
				console.log(`knit + b${n} ${carrier}`);
			}
		}
		//return even loops to the front:
		for (let n = min; n <= max; n += 1) {
			if ((n-min) % 2 === 0) {
				console.log(`xfer b${n} f${n}`);
			}
		}
	}
}

// ---- take carrier out and drop remaining loops ----
//Send carrier back to its parking location:
console.log(`out ${carrier}`);

//drop loops:
for (let n = min; n <= max; n += 1) {
	console.log(`drop f${n}`);
}
#title: Seed Stitch Sheet (plain python)

#Write header:
print(';!knitout-2')
print(';;Machine: Kniterate')
print(';;Carriers: 1 2 3 4 5 6')

#Parameters:
min = 1 #needle number of left edge
max = 20 #needle number of right edge
rows = 20 #number of rows to knit
carrier = "3" #carrier name

# ---- set up initial loops and yarn carrier ----
#Bring in carrier:
print(f"in {carrier}")

#On Kniterate machines, carriers start on the left,
#so will start tucking onto needles left-to-right,
#and will be sure to tuck the leftmost needle in the first pass:
for n in range(min, max+1, 1):
	#tuck alternating needles, making sure to do the left edge:
	if (n - min) % 2 == 0:
		print(f"tuck + f{n} {carrier}")
#now, moving right-to-left, tuck the needles that were not tucked on the first pass:
for n in range(max, min-1, -1):
	if (n - min) % 2 != 0:
		print(f"tuck - f{n} {carrier}")

#knit three plain rows to allow cast-on stitches to relax:
# three isn't set in stone here -- it's just convenient
# for this example code to have the carrier end up on the right.
for n in range(min, max+1, 1):
	print(f"knit + f{n} {carrier}")
for n in range(max, min-1, -1):
	print(f"knit - f{n} {carrier}")
for n in range(min, max+1, 1):
	print(f"knit + f{n} {carrier}")

# ---- seed stitch sheet ----
#Create a seed stitch (checkerboard of front- and back-knits) sheet.

for r in range(0, rows+1, 1):
	if r % 2 == 0:
		#knit even rows with odd loops on the back:
		for n in range(min, max+1, 1):
			if (n-min) % 2 != 0:
				print(f"xfer f{n} b{n}")
		for n in range(max, min-1, -1):
			if (n-min) % 2 == 0:
				print(f"knit - f{n} {carrier}")
			else:
				print(f"knit - b{n} {carrier}")
		#return odd loops to the front:
		for n in range(min, max+1, 1):
			if (n-min) % 2 != 0:
				print(f"xfer b{n} f{n}")
	else:
		#knit odd rows with even loops on the back:
		for n in range(min, max+1, 1):
			if (n-min) % 2 == 0:
				print(f"xfer f{n} b{n}")
		for n in range(min, max+1, 1):
			if (n-min) % 2 != 0:
				print(f"knit + f{n} {carrier}")
			else:
				print(f"knit + b{n} {carrier}")
		#return even loops to the front:
		for n in range(min, max+1, 1):
			if (n-min) % 2 == 0:
				print(f"xfer b{n} f{n}")

# ---- take carrier out and drop remaining loops ----
#Send carrier back to its parking location:
print(f"out {carrier}")

#drop loops:
for n in range(min, max+1, 1):
	print(f"drop f{n}")
#title: Seed Stitch Sheet (python with knitout module)

import knitout
K = knitout.Writer('1 2 3 4 5 6');
K.addHeader('Machine', 'Kniterate');

#Parameters:
min = 1 #needle number of left edge
max = 20 #needle number of right edge
rows = 20 #number of rows to knit
carrier = "3" #carrier name

# ---- set up initial loops and yarn carrier ----
#Bring in carrier:
K.ingripper(carrier)

#On Kniterate machines, carriers start on the left,
#so will start tucking onto needles left-to-right,
#and will be sure to tuck the leftmost needle in the first pass:
for n in range(min, max+1, 1):
	#tuck alternating needles, making sure to do the left edge:
	if (n - min) % 2 == 0:
		K.tuck("+", 'f' + str(n), carrier)
#now, moving right-to-left, tuck the needles that were not tucked on the first pass:
for n in range(max, min-1, -1):
	if (n - min) % 2 != 0:
		K.tuck("-", 'f' + str(n), carrier)

#knit three plain rows to allow cast-on stitches to relax:
# three isn't set in stone here -- it's just convenient
# for this example code to have the carrier end up on the right.
for n in range(min, max+1, 1):
	K.knit("+", 'f' + str(n), carrier)
for n in range(max, min-1, -1):
	K.knit("-", 'f' + str(n), carrier)
for n in range(min, max+1, 1):
	K.knit("+", 'f' + str(n), carrier)

# ---- seed stitch sheet ----
#Create a seed stitch (checkerboard of front- and back-knits) sheet.

for r in range(0, rows+1, 1):
	if r % 2 == 0:
		#knit even rows with odd loops on the back:
		for n in range(min, max+1, 1):
			if (n-min) % 2 != 0:
				K.xfer('f' + str(n), 'b' + str(n))
		for n in range(max, min-1, -1):
			if (n-min) % 2 == 0:
				K.knit("-", 'f' + str(n), carrier)
			else:
				K.knit("-", 'b' + str(n), carrier)
		#return odd loops to the front:
		for n in range(min, max+1, 1):
			if (n-min) % 2 != 0:
				K.xfer('b' + str(n), 'f' + str(n))
	else:
		#knit odd rows with even loops on the back:
		for n in range(min, max+1, 1):
			if (n-min) % 2 == 0:
				K.xfer('f' + str(n), 'b' + str(n))
		for n in range(min, max+1, 1):
			if (n-min) % 2 != 0:
				K.knit("+", 'f' + str(n), carrier)
			else:
				K.knit("+", 'b' + str(n), carrier)
		#return even loops to the front:
		for n in range(min, max+1, 1):
			if (n-min) % 2 == 0:
				K.xfer('b' + str(n), 'f' + str(n))

# ---- take carrier out and drop remaining loops ----
#Send carrier back to its parking location:
K.outgripper(carrier)

#drop loops:
for n in range(min, max+1, 1):
	K.drop('f' + str(n))

K.write('seed-stitch-sheet.kniterate.k')
//title: Seed Stitch Sheet (javascript with knitout module)

//include knitout module:
const knitout = require('knitout'); //include knitout module
const K = new knitout.Writer({ carriers:['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'] });
K.addHeader('Machine', 'SWGN2');

//Parameters:
let min = 1; //needle number of left edge
let max = 20; //needle number of right edge
let rows = 20; //number of rows to knit
let carrier = "3"; //carrier name

// ---- set up initial loops and yarn carrier ----
//Bring in carrier:
K.inhook(carrier);
//Set stitch table entry for cast-on:
K.stitchNumber(101);

//On SWGN2 machines, carriers start on the right,
//so will start tucking onto needles right-to-left,
//and will be sure to tuck the rightmost needle in the first pass:
for (let n = max; n >= min; n -= 1) {
	//tuck alternating needles, making sure to do the right edge:
	if ((max - n) % 2 === 0) {
		K.tuck("-", 'f' + n, carrier);
	}
}
//now, moving left-to-right, tuck the needles that were not tucked on the first pass:
for (let n = min; n <= max; n += 1) {
	if ((max - n) % 2 !== 0) {
		K.tuck("+", 'f' + n, carrier);
	}
}
//Set stitch table entry for knitting:
K.stitchNumber(105);
//knit two plain rows to allow cast-on stitches to relax:
// two isn't set in stone here -- it's just convenient
// for this example code to have the carrier end up on the right.
for (let n = max; n >= min; n -= 1) {
	K.knit("-", 'f' + n, carrier);
}
//send out yarn inserting hook; it is no longer needed to hold the yarn in place:
K.releasehook(carrier);
for (let n = min; n <= max; n += 1) {
	K.knit("+", 'f' + n, carrier);
}

// ---- seed stitch sheet ----
//Create a seed stitch (checkerboard of front- and back-knits) sheet.

for (let r = 0; r <= rows; r += 1) {
	if (r % 2 === 0) {
		//knit even rows with odd loops on the back:
		for (let n = min; n <= max; n += 1) {
			if ((n-min) % 2 !== 0) {
				K.xfer('f' + n, 'b' + n);
			}
		}
		for (let n = max; n >= min; n -= 1) {
			if ((n-min) % 2 === 0) {
				K.knit("-", 'f' + n, carrier);
			} else {
				K.knit("-", 'b' + n, carrier);
			}
		}
		//return odd loops to the front:
		for (let n = min; n <= max; n += 1) {
			if ((n-min) % 2 !== 0) {
				K.xfer('b' + n, 'f' + n);
			}
		}
	} else {
		//knit odd rows with even loops on the back:
		for (let n = min; n <= max; n += 1) {
			if ((n-min) % 2 === 0) {
				K.xfer('f' + n, 'b' + n);
			}
		}
		for (let n = min; n <= max; n += 1) {
			if ((n-min) % 2 !== 0) {
				K.knit("+", 'f' + n, carrier);
			} else {
				K.knit("+", 'b' + n, carrier);
			}
		}
		//return even loops to the front:
		for (let n = min; n <= max; n += 1) {
			if ((n-min) % 2 === 0) {
				K.xfer('b' + n, 'f' + n);
			}
		}
	}
}

// ---- take carrier out and drop remaining loops ----
//Take carrier out with yarn inserting hook:
K.outhook(carrier);

//drop loops:
for (let n = min; n <= max; n += 1) {
	K.drop('f' + n);
}

K.write('seed-stitch-sheet.swgn2.k');
;!knitout-2
;;Machine: SWGN2
;;Carriers: 1 2 3 4 5 6 7 8 9 10

;title: Seed Stitch Sheet (raw knitout)

;Parameters:
; min = 1 -- needle number of left edge
; max = 20 -- needle number of right edge
; rows = 20 -- number of rows to knit
; carrier = "3" -- carrier name

; ---- set up initial loops and yarn carrier ----
;Bring in carrier:
inhook 3
;Set stitch table entry for cast-on:
x-stitch-number 101

;On SWGN2 machines, carriers start on the right,
;so will start tucking onto needles right-to-left,
;and will be sure to tuck the rightmost needle in the first pass:
tuck - f20 3
tuck - f18 3
tuck - f16 3
tuck - f14 3
tuck - f12 3
tuck - f10 3
tuck - f8 3
tuck - f6 3
tuck - f4 3
tuck - f2 3
;now, moving left-to-right, tuck the needles that were not tucked on the first pass:
tuck + f1 3
tuck + f3 3
tuck + f5 3
tuck + f7 3
tuck + f9 3
tuck + f11 3
tuck + f13 3
tuck + f15 3
tuck + f17 3
tuck + f19 3
;Set stitch table entry for knitting:
x-stitch-number 105
;knit two plain rows to allow cast-on stitches to relax:
; two isn't set in stone here -- it's just convenient
; for this example code to have the carrier end up on the right.
knit - f20 3
knit - f19 3
knit - f18 3
knit - f17 3
knit - f16 3
knit - f15 3
knit - f14 3
knit - f13 3
knit - f12 3
knit - f11 3
knit - f10 3
knit - f9 3
knit - f8 3
knit - f7 3
knit - f6 3
knit - f5 3
knit - f4 3
knit - f3 3
knit - f2 3
knit - f1 3
;send out yarn inserting hook; it is no longer needed to hold the yarn in place:
releasehook 3
knit + f1 3
knit + f2 3
knit + f3 3
knit + f4 3
knit + f5 3
knit + f6 3
knit + f7 3
knit + f8 3
knit + f9 3
knit + f10 3
knit + f11 3
knit + f12 3
knit + f13 3
knit + f14 3
knit + f15 3
knit + f16 3
knit + f17 3
knit + f18 3
knit + f19 3
knit + f20 3

; ---- seed stitch sheet ----
;Create a seed stitch (checkerboard of front- and back-knits) sheet.

;knit even rows with odd loops on the back:
xfer f2 b2
xfer f4 b4
xfer f6 b6
xfer f8 b8
xfer f10 b10
xfer f12 b12
xfer f14 b14
xfer f16 b16
xfer f18 b18
xfer f20 b20
knit - b20 3
knit - f19 3
knit - b18 3
knit - f17 3
knit - b16 3
knit - f15 3
knit - b14 3
knit - f13 3
knit - b12 3
knit - f11 3
knit - b10 3
knit - f9 3
knit - b8 3
knit - f7 3
knit - b6 3
knit - f5 3
knit - b4 3
knit - f3 3
knit - b2 3
knit - f1 3
;return odd loops to the front:
xfer b2 f2
xfer b4 f4
xfer b6 f6
xfer b8 f8
xfer b10 f10
xfer b12 f12
xfer b14 f14
xfer b16 f16
xfer b18 f18
xfer b20 f20
;knit odd rows with even loops on the back:
xfer f1 b1
xfer f3 b3
xfer f5 b5
xfer f7 b7
xfer f9 b9
xfer f11 b11
xfer f13 b13
xfer f15 b15
xfer f17 b17
xfer f19 b19
knit + b1 3
knit + f2 3
knit + b3 3
knit + f4 3
knit + b5 3
knit + f6 3
knit + b7 3
knit + f8 3
knit + b9 3
knit + f10 3
knit + b11 3
knit + f12 3
knit + b13 3
knit + f14 3
knit + b15 3
knit + f16 3
knit + b17 3
knit + f18 3
knit + b19 3
knit + f20 3
;return even loops to the front:
xfer b1 f1
xfer b3 f3
xfer b5 f5
xfer b7 f7
xfer b9 f9
xfer b11 f11
xfer b13 f13
xfer b15 f15
xfer b17 f17
xfer b19 f19
;knit even rows with odd loops on the back:
xfer f2 b2
xfer f4 b4
xfer f6 b6
xfer f8 b8
xfer f10 b10
xfer f12 b12
xfer f14 b14
xfer f16 b16
xfer f18 b18
xfer f20 b20
knit - b20 3
knit - f19 3
knit - b18 3
knit - f17 3
knit - b16 3
knit - f15 3
knit - b14 3
knit - f13 3
knit - b12 3
knit - f11 3
knit - b10 3
knit - f9 3
knit - b8 3
knit - f7 3
knit - b6 3
knit - f5 3
knit - b4 3
knit - f3 3
knit - b2 3
knit - f1 3
;return odd loops to the front:
xfer b2 f2
xfer b4 f4
xfer b6 f6
xfer b8 f8
xfer b10 f10
xfer b12 f12
xfer b14 f14
xfer b16 f16
xfer b18 f18
xfer b20 f20
;knit odd rows with even loops on the back:
xfer f1 b1
xfer f3 b3
xfer f5 b5
xfer f7 b7
xfer f9 b9
xfer f11 b11
xfer f13 b13
xfer f15 b15
xfer f17 b17
xfer f19 b19
knit + b1 3
knit + f2 3
knit + b3 3
knit + f4 3
knit + b5 3
knit + f6 3
knit + b7 3
knit + f8 3
knit + b9 3
knit + f10 3
knit + b11 3
knit + f12 3
knit + b13 3
knit + f14 3
knit + b15 3
knit + f16 3
knit + b17 3
knit + f18 3
knit + b19 3
knit + f20 3
;return even loops to the front:
xfer b1 f1
xfer b3 f3
xfer b5 f5
xfer b7 f7
xfer b9 f9
xfer b11 f11
xfer b13 f13
xfer b15 f15
xfer b17 f17
xfer b19 f19
;knit even rows with odd loops on the back:
xfer f2 b2
xfer f4 b4
xfer f6 b6
xfer f8 b8
xfer f10 b10
xfer f12 b12
xfer f14 b14
xfer f16 b16
xfer f18 b18
xfer f20 b20
knit - b20 3
knit - f19 3
knit - b18 3
knit - f17 3
knit - b16 3
knit - f15 3
knit - b14 3
knit - f13 3
knit - b12 3
knit - f11 3
knit - b10 3
knit - f9 3
knit - b8 3
knit - f7 3
knit - b6 3
knit - f5 3
knit - b4 3
knit - f3 3
knit - b2 3
knit - f1 3
;return odd loops to the front:
xfer b2 f2
xfer b4 f4
xfer b6 f6
xfer b8 f8
xfer b10 f10
xfer b12 f12
xfer b14 f14
xfer b16 f16
xfer b18 f18
xfer b20 f20
;knit odd rows with even loops on the back:
xfer f1 b1
xfer f3 b3
xfer f5 b5
xfer f7 b7
xfer f9 b9
xfer f11 b11
xfer f13 b13
xfer f15 b15
xfer f17 b17
xfer f19 b19
knit + b1 3
knit + f2 3
knit + b3 3
knit + f4 3
knit + b5 3
knit + f6 3
knit + b7 3
knit + f8 3
knit + b9 3
knit + f10 3
knit + b11 3
knit + f12 3
knit + b13 3
knit + f14 3
knit + b15 3
knit + f16 3
knit + b17 3
knit + f18 3
knit + b19 3
knit + f20 3
;return even loops to the front:
xfer b1 f1
xfer b3 f3
xfer b5 f5
xfer b7 f7
xfer b9 f9
xfer b11 f11
xfer b13 f13
xfer b15 f15
xfer b17 f17
xfer b19 f19
;knit even rows with odd loops on the back:
xfer f2 b2
xfer f4 b4
xfer f6 b6
xfer f8 b8
xfer f10 b10
xfer f12 b12
xfer f14 b14
xfer f16 b16
xfer f18 b18
xfer f20 b20
knit - b20 3
knit - f19 3
knit - b18 3
knit - f17 3
knit - b16 3
knit - f15 3
knit - b14 3
knit - f13 3
knit - b12 3
knit - f11 3
knit - b10 3
knit - f9 3
knit - b8 3
knit - f7 3
knit - b6 3
knit - f5 3
knit - b4 3
knit - f3 3
knit - b2 3
knit - f1 3
;return odd loops to the front:
xfer b2 f2
xfer b4 f4
xfer b6 f6
xfer b8 f8
xfer b10 f10
xfer b12 f12
xfer b14 f14
xfer b16 f16
xfer b18 f18
xfer b20 f20
;knit odd rows with even loops on the back:
xfer f1 b1
xfer f3 b3
xfer f5 b5
xfer f7 b7
xfer f9 b9
xfer f11 b11
xfer f13 b13
xfer f15 b15
xfer f17 b17
xfer f19 b19
knit + b1 3
knit + f2 3
knit + b3 3
knit + f4 3
knit + b5 3
knit + f6 3
knit + b7 3
knit + f8 3
knit + b9 3
knit + f10 3
knit + b11 3
knit + f12 3
knit + b13 3
knit + f14 3
knit + b15 3
knit + f16 3
knit + b17 3
knit + f18 3
knit + b19 3
knit + f20 3
;return even loops to the front:
xfer b1 f1
xfer b3 f3
xfer b5 f5
xfer b7 f7
xfer b9 f9
xfer b11 f11
xfer b13 f13
xfer b15 f15
xfer b17 f17
xfer b19 f19
;knit even rows with odd loops on the back:
xfer f2 b2
xfer f4 b4
xfer f6 b6
xfer f8 b8
xfer f10 b10
xfer f12 b12
xfer f14 b14
xfer f16 b16
xfer f18 b18
xfer f20 b20
knit - b20 3
knit - f19 3
knit - b18 3
knit - f17 3
knit - b16 3
knit - f15 3
knit - b14 3
knit - f13 3
knit - b12 3
knit - f11 3
knit - b10 3
knit - f9 3
knit - b8 3
knit - f7 3
knit - b6 3
knit - f5 3
knit - b4 3
knit - f3 3
knit - b2 3
knit - f1 3
;return odd loops to the front:
xfer b2 f2
xfer b4 f4
xfer b6 f6
xfer b8 f8
xfer b10 f10
xfer b12 f12
xfer b14 f14
xfer b16 f16
xfer b18 f18
xfer b20 f20
;knit odd rows with even loops on the back:
xfer f1 b1
xfer f3 b3
xfer f5 b5
xfer f7 b7
xfer f9 b9
xfer f11 b11
xfer f13 b13
xfer f15 b15
xfer f17 b17
xfer f19 b19
knit + b1 3
knit + f2 3
knit + b3 3
knit + f4 3
knit + b5 3
knit + f6 3
knit + b7 3
knit + f8 3
knit + b9 3
knit + f10 3
knit + b11 3
knit + f12 3
knit + b13 3
knit + f14 3
knit + b15 3
knit + f16 3
knit + b17 3
knit + f18 3
knit + b19 3
knit + f20 3
;return even loops to the front:
xfer b1 f1
xfer b3 f3
xfer b5 f5
xfer b7 f7
xfer b9 f9
xfer b11 f11
xfer b13 f13
xfer b15 f15
xfer b17 f17
xfer b19 f19
;knit even rows with odd loops on the back:
xfer f2 b2
xfer f4 b4
xfer f6 b6
xfer f8 b8
xfer f10 b10
xfer f12 b12
xfer f14 b14
xfer f16 b16
xfer f18 b18
xfer f20 b20
knit - b20 3
knit - f19 3
knit - b18 3
knit - f17 3
knit - b16 3
knit - f15 3
knit - b14 3
knit - f13 3
knit - b12 3
knit - f11 3
knit - b10 3
knit - f9 3
knit - b8 3
knit - f7 3
knit - b6 3
knit - f5 3
knit - b4 3
knit - f3 3
knit - b2 3
knit - f1 3
;return odd loops to the front:
xfer b2 f2
xfer b4 f4
xfer b6 f6
xfer b8 f8
xfer b10 f10
xfer b12 f12
xfer b14 f14
xfer b16 f16
xfer b18 f18
xfer b20 f20
;knit odd rows with even loops on the back:
xfer f1 b1
xfer f3 b3
xfer f5 b5
xfer f7 b7
xfer f9 b9
xfer f11 b11
xfer f13 b13
xfer f15 b15
xfer f17 b17
xfer f19 b19
knit + b1 3
knit + f2 3
knit + b3 3
knit + f4 3
knit + b5 3
knit + f6 3
knit + b7 3
knit + f8 3
knit + b9 3
knit + f10 3
knit + b11 3
knit + f12 3
knit + b13 3
knit + f14 3
knit + b15 3
knit + f16 3
knit + b17 3
knit + f18 3
knit + b19 3
knit + f20 3
;return even loops to the front:
xfer b1 f1
xfer b3 f3
xfer b5 f5
xfer b7 f7
xfer b9 f9
xfer b11 f11
xfer b13 f13
xfer b15 f15
xfer b17 f17
xfer b19 f19
;knit even rows with odd loops on the back:
xfer f2 b2
xfer f4 b4
xfer f6 b6
xfer f8 b8
xfer f10 b10
xfer f12 b12
xfer f14 b14
xfer f16 b16
xfer f18 b18
xfer f20 b20
knit - b20 3
knit - f19 3
knit - b18 3
knit - f17 3
knit - b16 3
knit - f15 3
knit - b14 3
knit - f13 3
knit - b12 3
knit - f11 3
knit - b10 3
knit - f9 3
knit - b8 3
knit - f7 3
knit - b6 3
knit - f5 3
knit - b4 3
knit - f3 3
knit - b2 3
knit - f1 3
;return odd loops to the front:
xfer b2 f2
xfer b4 f4
xfer b6 f6
xfer b8 f8
xfer b10 f10
xfer b12 f12
xfer b14 f14
xfer b16 f16
xfer b18 f18
xfer b20 f20
;knit odd rows with even loops on the back:
xfer f1 b1
xfer f3 b3
xfer f5 b5
xfer f7 b7
xfer f9 b9
xfer f11 b11
xfer f13 b13
xfer f15 b15
xfer f17 b17
xfer f19 b19
knit + b1 3
knit + f2 3
knit + b3 3
knit + f4 3
knit + b5 3
knit + f6 3
knit + b7 3
knit + f8 3
knit + b9 3
knit + f10 3
knit + b11 3
knit + f12 3
knit + b13 3
knit + f14 3
knit + b15 3
knit + f16 3
knit + b17 3
knit + f18 3
knit + b19 3
knit + f20 3
;return even loops to the front:
xfer b1 f1
xfer b3 f3
xfer b5 f5
xfer b7 f7
xfer b9 f9
xfer b11 f11
xfer b13 f13
xfer b15 f15
xfer b17 f17
xfer b19 f19
;knit even rows with odd loops on the back:
xfer f2 b2
xfer f4 b4
xfer f6 b6
xfer f8 b8
xfer f10 b10
xfer f12 b12
xfer f14 b14
xfer f16 b16
xfer f18 b18
xfer f20 b20
knit - b20 3
knit - f19 3
knit - b18 3
knit - f17 3
knit - b16 3
knit - f15 3
knit - b14 3
knit - f13 3
knit - b12 3
knit - f11 3
knit - b10 3
knit - f9 3
knit - b8 3
knit - f7 3
knit - b6 3
knit - f5 3
knit - b4 3
knit - f3 3
knit - b2 3
knit - f1 3
;return odd loops to the front:
xfer b2 f2
xfer b4 f4
xfer b6 f6
xfer b8 f8
xfer b10 f10
xfer b12 f12
xfer b14 f14
xfer b16 f16
xfer b18 f18
xfer b20 f20
;knit odd rows with even loops on the back:
xfer f1 b1
xfer f3 b3
xfer f5 b5
xfer f7 b7
xfer f9 b9
xfer f11 b11
xfer f13 b13
xfer f15 b15
xfer f17 b17
xfer f19 b19
knit + b1 3
knit + f2 3
knit + b3 3
knit + f4 3
knit + b5 3
knit + f6 3
knit + b7 3
knit + f8 3
knit + b9 3
knit + f10 3
knit + b11 3
knit + f12 3
knit + b13 3
knit + f14 3
knit + b15 3
knit + f16 3
knit + b17 3
knit + f18 3
knit + b19 3
knit + f20 3
;return even loops to the front:
xfer b1 f1
xfer b3 f3
xfer b5 f5
xfer b7 f7
xfer b9 f9
xfer b11 f11
xfer b13 f13
xfer b15 f15
xfer b17 f17
xfer b19 f19
;knit even rows with odd loops on the back:
xfer f2 b2
xfer f4 b4
xfer f6 b6
xfer f8 b8
xfer f10 b10
xfer f12 b12
xfer f14 b14
xfer f16 b16
xfer f18 b18
xfer f20 b20
knit - b20 3
knit - f19 3
knit - b18 3
knit - f17 3
knit - b16 3
knit - f15 3
knit - b14 3
knit - f13 3
knit - b12 3
knit - f11 3
knit - b10 3
knit - f9 3
knit - b8 3
knit - f7 3
knit - b6 3
knit - f5 3
knit - b4 3
knit - f3 3
knit - b2 3
knit - f1 3
;return odd loops to the front:
xfer b2 f2
xfer b4 f4
xfer b6 f6
xfer b8 f8
xfer b10 f10
xfer b12 f12
xfer b14 f14
xfer b16 f16
xfer b18 f18
xfer b20 f20
;knit odd rows with even loops on the back:
xfer f1 b1
xfer f3 b3
xfer f5 b5
xfer f7 b7
xfer f9 b9
xfer f11 b11
xfer f13 b13
xfer f15 b15
xfer f17 b17
xfer f19 b19
knit + b1 3
knit + f2 3
knit + b3 3
knit + f4 3
knit + b5 3
knit + f6 3
knit + b7 3
knit + f8 3
knit + b9 3
knit + f10 3
knit + b11 3
knit + f12 3
knit + b13 3
knit + f14 3
knit + b15 3
knit + f16 3
knit + b17 3
knit + f18 3
knit + b19 3
knit + f20 3
;return even loops to the front:
xfer b1 f1
xfer b3 f3
xfer b5 f5
xfer b7 f7
xfer b9 f9
xfer b11 f11
xfer b13 f13
xfer b15 f15
xfer b17 f17
xfer b19 f19
;knit even rows with odd loops on the back:
xfer f2 b2
xfer f4 b4
xfer f6 b6
xfer f8 b8
xfer f10 b10
xfer f12 b12
xfer f14 b14
xfer f16 b16
xfer f18 b18
xfer f20 b20
knit - b20 3
knit - f19 3
knit - b18 3
knit - f17 3
knit - b16 3
knit - f15 3
knit - b14 3
knit - f13 3
knit - b12 3
knit - f11 3
knit - b10 3
knit - f9 3
knit - b8 3
knit - f7 3
knit - b6 3
knit - f5 3
knit - b4 3
knit - f3 3
knit - b2 3
knit - f1 3
;return odd loops to the front:
xfer b2 f2
xfer b4 f4
xfer b6 f6
xfer b8 f8
xfer b10 f10
xfer b12 f12
xfer b14 f14
xfer b16 f16
xfer b18 f18
xfer b20 f20
;knit odd rows with even loops on the back:
xfer f1 b1
xfer f3 b3
xfer f5 b5
xfer f7 b7
xfer f9 b9
xfer f11 b11
xfer f13 b13
xfer f15 b15
xfer f17 b17
xfer f19 b19
knit + b1 3
knit + f2 3
knit + b3 3
knit + f4 3
knit + b5 3
knit + f6 3
knit + b7 3
knit + f8 3
knit + b9 3
knit + f10 3
knit + b11 3
knit + f12 3
knit + b13 3
knit + f14 3
knit + b15 3
knit + f16 3
knit + b17 3
knit + f18 3
knit + b19 3
knit + f20 3
;return even loops to the front:
xfer b1 f1
xfer b3 f3
xfer b5 f5
xfer b7 f7
xfer b9 f9
xfer b11 f11
xfer b13 f13
xfer b15 f15
xfer b17 f17
xfer b19 f19
;knit even rows with odd loops on the back:
xfer f2 b2
xfer f4 b4
xfer f6 b6
xfer f8 b8
xfer f10 b10
xfer f12 b12
xfer f14 b14
xfer f16 b16
xfer f18 b18
xfer f20 b20
knit - b20 3
knit - f19 3
knit - b18 3
knit - f17 3
knit - b16 3
knit - f15 3
knit - b14 3
knit - f13 3
knit - b12 3
knit - f11 3
knit - b10 3
knit - f9 3
knit - b8 3
knit - f7 3
knit - b6 3
knit - f5 3
knit - b4 3
knit - f3 3
knit - b2 3
knit - f1 3
;return odd loops to the front:
xfer b2 f2
xfer b4 f4
xfer b6 f6
xfer b8 f8
xfer b10 f10
xfer b12 f12
xfer b14 f14
xfer b16 f16
xfer b18 f18
xfer b20 f20

; ---- take carrier out and drop remaining loops ----
;Take carrier out with yarn inserting hook:
outhook 3

;drop loops:
drop f1
drop f2
drop f3
drop f4
drop f5
drop f6
drop f7
drop f8
drop f9
drop f10
drop f11
drop f12
drop f13
drop f14
drop f15
drop f16
drop f17
drop f18
drop f19
drop f20
//title: Seed Stitch Sheet (plain javascript)

//Write header:
console.log(';!knitout-2');
console.log(';;Machine: SWGN2');
console.log(';;Carriers: 1 2 3 4 5 6 7 8 9 10');

//Parameters:
let min = 1; //needle number of left edge
let max = 20; //needle number of right edge
let rows = 20; //number of rows to knit
let carrier = "3"; //carrier name

// ---- set up initial loops and yarn carrier ----
//Bring in carrier:
console.log(`inhook ${carrier}`);
//Set stitch table entry for cast-on:
console.log(`x-stitch-number 101`);

//On SWGN2 machines, carriers start on the right,
//so will start tucking onto needles right-to-left,
//and will be sure to tuck the rightmost needle in the first pass:
for (let n = max; n >= min; n -= 1) {
	//tuck alternating needles, making sure to do the right edge:
	if ((max - n) % 2 === 0) {
		console.log(`tuck - f${n} ${carrier}`);
	}
}
//now, moving left-to-right, tuck the needles that were not tucked on the first pass:
for (let n = min; n <= max; n += 1) {
	if ((max - n) % 2 !== 0) {
		console.log(`tuck + f${n} ${carrier}`);
	}
}
//Set stitch table entry for knitting:
console.log(`x-stitch-number 105`);
//knit two plain rows to allow cast-on stitches to relax:
// two isn't set in stone here -- it's just convenient
// for this example code to have the carrier end up on the right.
for (let n = max; n >= min; n -= 1) {
	console.log(`knit - f${n} ${carrier}`);
}
//send out yarn inserting hook; it is no longer needed to hold the yarn in place:
console.log(`releasehook ${carrier}`);
for (let n = min; n <= max; n += 1) {
	console.log(`knit + f${n} ${carrier}`);
}

// ---- seed stitch sheet ----
//Create a seed stitch (checkerboard of front- and back-knits) sheet.

for (let r = 0; r <= rows; r += 1) {
	if (r % 2 === 0) {
		//knit even rows with odd loops on the back:
		for (let n = min; n <= max; n += 1) {
			if ((n-min) % 2 !== 0) {
				console.log(`xfer f${n} b${n}`);
			}
		}
		for (let n = max; n >= min; n -= 1) {
			if ((n-min) % 2 === 0) {
				console.log(`knit - f${n} ${carrier}`);
			} else {
				console.log(`knit - b${n} ${carrier}`);
			}
		}
		//return odd loops to the front:
		for (let n = min; n <= max; n += 1) {
			if ((n-min) % 2 !== 0) {
				console.log(`xfer b${n} f${n}`);
			}
		}
	} else {
		//knit odd rows with even loops on the back:
		for (let n = min; n <= max; n += 1) {
			if ((n-min) % 2 === 0) {
				console.log(`xfer f${n} b${n}`);
			}
		}
		for (let n = min; n <= max; n += 1) {
			if ((n-min) % 2 !== 0) {
				console.log(`knit + f${n} ${carrier}`);
			} else {
				console.log(`knit + b${n} ${carrier}`);
			}
		}
		//return even loops to the front:
		for (let n = min; n <= max; n += 1) {
			if ((n-min) % 2 === 0) {
				console.log(`xfer b${n} f${n}`);
			}
		}
	}
}

// ---- take carrier out and drop remaining loops ----
//Take carrier out with yarn inserting hook:
console.log(`outhook ${carrier}`);

//drop loops:
for (let n = min; n <= max; n += 1) {
	console.log(`drop f${n}`);
}
#title: Seed Stitch Sheet (plain python)

#Write header:
print(';!knitout-2')
print(';;Machine: SWGN2')
print(';;Carriers: 1 2 3 4 5 6 7 8 9 10')

#Parameters:
min = 1 #needle number of left edge
max = 20 #needle number of right edge
rows = 20 #number of rows to knit
carrier = "3" #carrier name

# ---- set up initial loops and yarn carrier ----
#Bring in carrier:
print(f"inhook {carrier}")
#Set stitch table entry for cast-on:
print(f"x-stitch-number 101")

#On SWGN2 machines, carriers start on the right,
#so will start tucking onto needles right-to-left,
#and will be sure to tuck the rightmost needle in the first pass:
for n in range(max, min-1, -1):
	#tuck alternating needles, making sure to do the right edge:
	if (max - n) % 2 == 0:
		print(f"tuck - f{n} {carrier}")
#now, moving left-to-right, tuck the needles that were not tucked on the first pass:
for n in range(min, max+1, 1):
	if (max - n) % 2 != 0:
		print(f"tuck + f{n} {carrier}")
#Set stitch table entry for knitting:
print(f"x-stitch-number 105")
#knit two plain rows to allow cast-on stitches to relax:
# two isn't set in stone here -- it's just convenient
# for this example code to have the carrier end up on the right.
for n in range(max, min-1, -1):
	print(f"knit - f{n} {carrier}")
#send out yarn inserting hook; it is no longer needed to hold the yarn in place:
print(f"releasehook {carrier}")
for n in range(min, max+1, 1):
	print(f"knit + f{n} {carrier}")

# ---- seed stitch sheet ----
#Create a seed stitch (checkerboard of front- and back-knits) sheet.

for r in range(0, rows+1, 1):
	if r % 2 == 0:
		#knit even rows with odd loops on the back:
		for n in range(min, max+1, 1):
			if (n-min) % 2 != 0:
				print(f"xfer f{n} b{n}")
		for n in range(max, min-1, -1):
			if (n-min) % 2 == 0:
				print(f"knit - f{n} {carrier}")
			else:
				print(f"knit - b{n} {carrier}")
		#return odd loops to the front:
		for n in range(min, max+1, 1):
			if (n-min) % 2 != 0:
				print(f"xfer b{n} f{n}")
	else:
		#knit odd rows with even loops on the back:
		for n in range(min, max+1, 1):
			if (n-min) % 2 == 0:
				print(f"xfer f{n} b{n}")
		for n in range(min, max+1, 1):
			if (n-min) % 2 != 0:
				print(f"knit + f{n} {carrier}")
			else:
				print(f"knit + b{n} {carrier}")
		#return even loops to the front:
		for n in range(min, max+1, 1):
			if (n-min) % 2 == 0:
				print(f"xfer b{n} f{n}")

# ---- take carrier out and drop remaining loops ----
#Take carrier out with yarn inserting hook:
print(f"outhook {carrier}")

#drop loops:
for n in range(min, max+1, 1):
	print(f"drop f{n}")
#title: Seed Stitch Sheet (python with knitout module)

import knitout
K = knitout.Writer('1 2 3 4 5 6 7 8 9 10');
K.addHeader('Machine', 'SWGN2');

#Parameters:
min = 1 #needle number of left edge
max = 20 #needle number of right edge
rows = 20 #number of rows to knit
carrier = "3" #carrier name

# ---- set up initial loops and yarn carrier ----
#Bring in carrier:
K.inhook(carrier)
#Set stitch table entry for cast-on:
K.stitchNumber(101)

#On SWGN2 machines, carriers start on the right,
#so will start tucking onto needles right-to-left,
#and will be sure to tuck the rightmost needle in the first pass:
for n in range(max, min-1, -1):
	#tuck alternating needles, making sure to do the right edge:
	if (max - n) % 2 == 0:
		K.tuck("-", 'f' + str(n), carrier)
#now, moving left-to-right, tuck the needles that were not tucked on the first pass:
for n in range(min, max+1, 1):
	if (max - n) % 2 != 0:
		K.tuck("+", 'f' + str(n), carrier)
#Set stitch table entry for knitting:
K.stitchNumber(105)
#knit two plain rows to allow cast-on stitches to relax:
# two isn't set in stone here -- it's just convenient
# for this example code to have the carrier end up on the right.
for n in range(max, min-1, -1):
	K.knit("-", 'f' + str(n), carrier)
#send out yarn inserting hook; it is no longer needed to hold the yarn in place:
K.releasehook(carrier)
for n in range(min, max+1, 1):
	K.knit("+", 'f' + str(n), carrier)

# ---- seed stitch sheet ----
#Create a seed stitch (checkerboard of front- and back-knits) sheet.

for r in range(0, rows+1, 1):
	if r % 2 == 0:
		#knit even rows with odd loops on the back:
		for n in range(min, max+1, 1):
			if (n-min) % 2 != 0:
				K.xfer('f' + str(n), 'b' + str(n))
		for n in range(max, min-1, -1):
			if (n-min) % 2 == 0:
				K.knit("-", 'f' + str(n), carrier)
			else:
				K.knit("-", 'b' + str(n), carrier)
		#return odd loops to the front:
		for n in range(min, max+1, 1):
			if (n-min) % 2 != 0:
				K.xfer('b' + str(n), 'f' + str(n))
	else:
		#knit odd rows with even loops on the back:
		for n in range(min, max+1, 1):
			if (n-min) % 2 == 0:
				K.xfer('f' + str(n), 'b' + str(n))
		for n in range(min, max+1, 1):
			if (n-min) % 2 != 0:
				K.knit("+", 'f' + str(n), carrier)
			else:
				K.knit("+", 'b' + str(n), carrier)
		#return even loops to the front:
		for n in range(min, max+1, 1):
			if (n-min) % 2 == 0:
				K.xfer('b' + str(n), 'f' + str(n))

# ---- take carrier out and drop remaining loops ----
#Take carrier out with yarn inserting hook:
K.outhook(carrier)

#drop loops:
for n in range(min, max+1, 1):
	K.drop('f' + str(n))

K.write('seed-stitch-sheet.swgn2.k')