Faces from a mesh: Difference between revisions
Content added Content deleted
m (→{{header|Phix}}: added syntax colouring, made p2js compatible) |
(→{{header|Wren}}: Updated code, no change in output.) |
||
Line 888: | Line 888: | ||
{{trans|Go}} |
{{trans|Go}} |
||
{{libheader|Wren-sort}} |
{{libheader|Wren-sort}} |
||
{{libheader|Wren-seq}} |
|||
{{libheader|Wren-fmt}} |
{{libheader|Wren-fmt}} |
||
<lang ecmascript>import "/sort" for Sort |
<lang ecmascript>import "./sort" for Sort |
||
import "/ |
import "./seq" for Lst |
||
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. |
// Check two perimeters are equal. |
||
var perimEqual = Fn.new { |p1, p2| |
var perimEqual = Fn.new { |p1, p2| |
||
Line 911: | Line 905: | ||
for (r in 0..1) { |
for (r in 0..1) { |
||
for (i in 0...le) { |
for (i in 0...le) { |
||
if ( |
if (Lst.areEqual(c, p2)) return true |
||
// do circular shift to right |
// do circular shift to right |
||
Lst.rshift(c) |
|||
for (i in le-2..0) c[i+1] = c[i] |
|||
c[0] = t |
|||
} |
} |
||
// now process in opposite direction |
// now process in opposite direction |
||
Lst.reverse(c) // reverses 'c' in place |
|||
} |
} |
||
return false |
return false |
||
} |
} |
||
var faceToPerim = Fn.new { |face| |
var faceToPerim = Fn.new { |face| |
||
// use copy to avoid mutating 'face' |
// use copy to avoid mutating 'face' |
||
Line 983: | Line 975: | ||
return perim[0..-2] |
return perim[0..-2] |
||
} |
} |
||
System.print("Perimeter format equality checks:") |
System.print("Perimeter format equality checks:") |
||
var areEqual = perimEqual.call([8, 1, 3], [1, 3, 8]) |
var areEqual = perimEqual.call([8, 1, 3], [1, 3, 8]) |