Skip to main content
2 of 4
saved 2 bytes
Arnauld
  • 197.8k
  • 20
  • 180
  • 650

#JavaScript (ES6),  55  53 bytes

Takes input as (a)(b) with \$a\le b\$. Returns \$0\$ (valid), \$1\$ (ended) or \$2\$ (invalid).

a=>b=>a<0|a>29|b>30|b>21&(a-=b)*a>4?2:b>20&a*a>1|b>29

Try it online!

Arnauld
  • 197.8k
  • 20
  • 180
  • 650