Faces from a mesh: Difference between revisions

→‎{{header|Wren}}: Updated code, no change in output.
m (→‎{{header|Phix}}: added syntax colouring, made p2js compatible)
(→‎{{header|Wren}}: Updated code, no change in output.)
Line 888:
{{trans|Go}}
{{libheader|Wren-sort}}
{{libheader|Wren-seq}}
{{libheader|Wren-fmt}}
<lang ecmascript>import "./sort" for Sort
import "./fmtseq" for FmtLst
import "./fmt" for Fmt
 
// Assumes s1, s2 are of same length.
var sliceEqual = Fn.new { |s1, s2|
for (i in 0...s1.count) {
if (s1[i] != s2[i]) return false
}
return true
}
 
// Check two perimeters are equal.
var perimEqual = Fn.new { |p1, p2|
Line 911 ⟶ 905:
for (r in 0..1) {
for (i in 0...le) {
if (sliceEqualLst.callareEqual(c, p2)) return true
// do circular shift to right
var t = Lst.rshift(c[-1])
for (i in le-2..0) c[i+1] = c[i]
c[0] = t
}
// now process in opposite direction
SortLst.reverse(c) // reverses 'c' in place
}
return false
}
 
var faceToPerim = Fn.new { |face|
// use copy to avoid mutating 'face'
Line 983 ⟶ 975:
return perim[0..-2]
}
 
System.print("Perimeter format equality checks:")
var areEqual = perimEqual.call([8, 1, 3], [1, 3, 8])
9,488

edits