Files
TDT4205/ps6/vsl_programs/ps6-codegen2/ternary.vsl
T
2026-04-28 15:27:55 +02:00

120 lines
1.6 KiB
Plaintext

func main(a) {
// Nudge away from 50
a = a > 50 ? b(a, 4) : c(a, 4)
print("a: ")
// Cap to range [0, 100]
a = a > 100
? i(100)
: (a < 0
? i(0)
: i(a))
// Round to nearest 10
print("b: ")
var b = a >= 55
? (a >= 75
? (a >= 95
? i(100)
: (a >= 85
? i(90)
: i(80)))
: (a >= 65
? i(70)
: i(60)))
: (a >= 25
? (a >= 45
? i(50)
: (a >= 35
? i(40)
: i(30)))
: (a >= 15
? i(20)
: (a >= 5
? i(10)
: i(0))))
println("b: ", b)
}
func b(x, y) {
println("Inside b(", x, ", ", y, ")")
return x + y
}
func c(x, y) {
println("Inside c(", x, ", ", y, ")")
return x - y
}
// Identity function
func i(value) {
println(value)
return value
}
//TESTCASE: 97
//Inside b(97, 4)
//a: 100
//b: 100
//b: 100
//TESTCASE: 82
//Inside b(82, 4)
//a: 86
//b: 90
//b: 90
//TESTCASE: 80
//Inside b(80, 4)
//a: 84
//b: 80
//b: 80
//TESTCASE: 68
//Inside b(68, 4)
//a: 72
//b: 70
//b: 70
//TESTCASE: 51
//Inside b(51, 4)
//a: 55
//b: 60
//b: 60
//TESTCASE: 50
//Inside c(50, 4)
//a: 46
//b: 50
//b: 50
//TESTCASE: 44
//Inside c(44, 4)
//a: 40
//b: 40
//b: 40
//TESTCASE: 32
//Inside c(32, 4)
//a: 28
//b: 30
//b: 30
//TESTCASE: 28
//Inside c(28, 4)
//a: 24
//b: 20
//b: 20
//TESTCASE: 9
//Inside c(9, 4)
//a: 5
//b: 10
//b: 10
//TESTCASE: 2
//Inside c(2, 4)
//a: 0
//b: 0
//b: 0