more atomic committing

* Proper coordinate rounding, as in Arond()
* Forgotten EOL now consumed if found (still optional)
* Convert unit tests images to 1-bit before comparing
* Much better unit testing script
* Add 17 test scripts from the 2019 TI-Planet and Planète Casio contest
  which consisted in reproducing an image with minimum code
This commit is contained in:
Lephe 2019-10-26 13:51:54 +02:00
parent ff6013b603
commit 32fbcf143a
Signed by: Lephenixnoir
GPG Key ID: 1BBA026E13FC0495
39 changed files with 123 additions and 24 deletions

View File

@ -34,6 +34,8 @@ echo -n "F908313200333500" | ./fx92.py -u -
* `--save <bmp>` will save a screenshot of the output to the designated file.
* `--quiet` will "hide" the window while executing. _(At the moment the window
is still shown, but closed immediately, due to SDL subtleties.)_
* `--stream <dir>` will stream window frames as a series of bitmap images to
the specified directory. Use your favorite tool to make a GIF.
## Tests

View File

@ -1,6 +1,8 @@
# fx-92 Scientifique Collège+ language interpreter: On-screen drawing
from sdl2 import *
from fx92.util import rndcoord
import math
import os
@ -88,8 +90,8 @@ class Window:
x = self.width // 2 + x - 1
y = self.height // 2 - y
x = int(round(x))
y = int(round(y))
x = rndcoord(x)
y = rndcoord(y)
SDL_RenderDrawPoint(self.r, x, y)
@ -140,8 +142,8 @@ class Window:
self._point(x, y)
def line(self, x1, y1, x2, y2, color):
x1, y1, x2, y2 = round(x1), round(y1), round(x2), round(y2)
x1, y1, x2, y2 = int(x1), int(y1), int(x2), int(y2)
x1, y1 = rndcoord(x1), rndcoord(y1)
x2, y2 = rndcoord(x2), rndcoord(y2)
self._line(x1, y1, x2, y2, color)
def linef(self, x, y, angle, dist, color):
@ -155,8 +157,8 @@ class Window:
x2 = x + dist * cos
y2 = y + dist * sin
x1, y1, x2, y2 = round(x), round(y), round(x2), round(y2)
x1, y1, x2, y2 = int(x1), int(y1), int(x2), int(y2)
x1, y1 = rndcoord(x), rndcoord(y)
x2, y2 = rndcoord(x2), rndcoord(y2)
self._line(x1, y1, x2, y2, color)
def wait(self, allow_any=False):

View File

@ -152,6 +152,7 @@ class Parser:
self.expect(T.EOL, optional=True)
prg = self.program()
self.expect(T.REPEAT_END)
self.expect(T.EOL, optional=True)
return Node(N.REPEAT, arg, prg)
if op.type == T.WHILE:
@ -160,6 +161,7 @@ class Parser:
self.expect(T.EOL, optional=True)
prg = self.program()
self.expect(T.WHILE_END)
self.expect(T.EOL, optional=True)
return Node(N.WHILE, cond, prg)
if op.type == T.IF:
@ -168,6 +170,7 @@ class Parser:
self.expect(T.EOL, optional=True)
prg = self.program()
self.expect(T.IF_END)
self.expect(T.EOL, optional=True)
return Node(N.IF, cond, prg, None)
if op.type == T.IFELSE:
@ -176,8 +179,10 @@ class Parser:
self.expect(T.EOL, optional=True)
p1 = self.program()
self.expect(T.ELSE)
self.expect(T.EOL, optional=True)
p2 = self.program()
self.expect(T.IFELSE_END)
self.expect(T.EOL, optional=True)
return Node(N.IF, cond, p1, p2)
# arg -> expr PARAM

View File

@ -63,3 +63,8 @@ def decimal_repr(x):
dg = str(i)
dg = dg[0] + "." + dg[1:] + "e" + str(true_exp)
return sign + dg
def rndcoord(x):
halfint = (int(x) != x) and (int(2*x) == 2*x)
sign = -1 if x < 0 else 1
return int(round(x)) + int(halfint) * sign

View File

@ -1,5 +1,6 @@
#! /usr/bin/python3
import re
import sys
import glob
import os.path
@ -9,60 +10,121 @@ from PIL import Image
from PIL import ImageChops
def imgequal(ref, out):
ref = Image.open(ref)
out = Image.open(out)
ref = Image.open(ref).convert("1")
out = Image.open(out).convert("1")
diff = ImageChops.difference(ref, out)
return diff.getbbox() is None
def runtest(program, refout=None, refimg=None):
st = subprocess.run("./fx92.py --quiet --save=/tmp/fx92-test.bmp".split()
+ [program], stdout=subprocess.PIPE)
def readable_cmd(cmd):
result = ""
for arg in cmd:
if " " not in arg and "'" not in arg and '"' not in arg:
a = arg
elif "'" not in arg:
a = "'" + arg + "'"
else:
a = a.replace(" ", "\\ ").replace("'", "\\'").replace('"', '\\"')
result += " " + arg
return result.strip()
def indent(str, n):
return re.subn(r"^", " " * n, str, flags=re.MULTILINE)[0]
def runtest(program, refout=None, refimg=None, kind="script"):
kind = "-u" if kind == "url" else "-s"
cmd = "./fx92.py --quiet --save=/tmp/fx92-test.bmp".split() \
+ [kind, program]
st = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# Retrieve standard error
stderr = ""
if st.stderr:
stderr = st.stderr.decode().strip("\n")
stderr = indent(stderr, 4)
if st.returncode != 0:
print(" -> Execution FAILED!")
return 0
print("\x1b[41;1mFAILED\x1b[0m", program)
print(" " + readable_cmd(cmd))
if stderr:
print(" Standard error:")
print(stderr)
else:
print(" Nothing on standard error")
print("")
return False
print(" Execution completed.")
success = True
status = { "out": None, "img": None }
if refout is not None:
with open(refout, "rb") as fp:
refout = fp.read()
if st.stdout == refout:
print(" Output is correct.")
status["out"] = True
else:
print(" -> Output is incorrect!")
print(" ref:", repr(refout))
print(" out:", repr(st.stdout))
status["out"] = (st.stdout, refout)
success = False
if refimg is not None:
if imgequal(refimg, "/tmp/fx92-test.bmp"):
print(" Image is correct.")
status["img"] = True
else:
print(" -> Image is incorrect!")
status["img"] = False
success = False
if status["out"] is None and status["img"] is None:
print("PASSED", program)
elif success:
print("\x1b[43;1mPASSED\x1b[0m", program)
else:
print("\x1b[41;1mFAILED\x1b[0m", program)
if status["out"] is None:
print(" (No reference output)")
elif status["out"] == True:
print(" Output is correct.")
else:
print(" Incorrect output, got:")
print(indent(status["out"][0], 4))
print(" Expected:")
print(indent(status["out"][1], 4))
if status["img"] is None:
print(" (No reference image)")
elif status["img"] == True:
print(" Image is correct.")
else:
print(" Image is incorrect!")
if stderr:
print(" Standard error:")
print(stderr)
print("")
return success
def main():
paths = glob.glob("tests/*.txt")
p1 = glob.glob("tests/*.txt")
p2 = glob.glob("tests/contest2019/*.txt")
paths = sorted(p1) + sorted(p2)
print("Found {} tests.".format(len(paths)))
total = 0
passed = 0
for t in paths:
print("\n{}:".format(t))
refout = t[:-4] + ".out"
refout = refout if os.path.isfile(refout) else None
refimg = t[:-4] + ".png"
refimg = refimg if os.path.isfile(refimg) else None
passed += runtest(t, refout=refout, refimg=refimg)
kind = "url" if t.startswith("tests/contest2019/") else "script"
passed += runtest(t, refout=refout, refimg=refimg, kind=kind)
total += 1
if passed < total:

View File

@ -2,3 +2,4 @@
0
90
160
150

View File

@ -7,3 +7,6 @@ print theta
rotate 70
print theta
rotate 350
print theta

2
tests/contest2019/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
# Ignore folder with streams
*/

BIN
tests/contest2019/0326.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 391 B

View File

@ -0,0 +1 @@
http://wes.casio.com/math/index.php?q=I-295A+U-000000000000+M-0E00000000+S-000410110000100E0010B300D365+E-F909F901F9113500F901F90631382E343300F901F905332E3200F901F9063332332E313400F901F9053400F901F9063238382E343300F901F912F901F90AF901F908323400A73300F901F909F901F90B37004200F901F9113500F901F90731383000F901F9054200F901F90632323500F901F90542A8312E313500F901F90B42A731004200F901F912F901F90AF901F908393900393900F901F903F901F902

BIN
tests/contest2019/1344.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 547 B

View File

@ -0,0 +1 @@
http://wes.casio.com/math/index.php?q=I-295A+U-000000000000+M-0E00000000+S-000410110000100E0010B300D365+E-F90B30004000F901F90B3435004400F901F90BA744004500F901F90B3245004200F901F90BA742004300F901F90B34004700F901F91547A53400F901F9083500323200F901F909F901F9113200F901F9053800F901F9064200F901F9053400F901F9064200F901F912F901F90AF901F908313000323000F901F909F901F9113200F901F9053500F901F9064200F901F9053700F901F9064200F901F912F901F90AF901F908313300313600F901F909F901F9113200F901F9053500F901F9064200F901F9053600F901F9064200F901F912F901F90AF901F9083130003700F901F9113400F901F90B40A631004000F901F909F901F9053300F901F9064500F901F9053100F901F9064400F901F9053100F901F9064500F901F9053300F901F9064500F901F9053100F901F90AF901F9053100F901F91540A53100F901F90848A631004900F901F916F901F91540A53200F901F908480049A73100F901F916F901F91540A53300F901F90848A731004900F901F916F901F912F901F90AF901F908480049A73100F901F909F901F9113400F901F9053300F901F9064500F901F9053400F901F9064500F901F912F901F916F901F91547A53400F901F90B313335004600F901F90AF901F908323700323200F901F909F901F9053100F901F906A74600F901F9053100F901F9064600F901F9053200F901F906A74600F901F9053300F901F9064600F901F9053300F901F906A74600F901F9053400F901F9064600F901F9053400F901F906A74600F901F9053600F901F9064600F901F9053500F901F906A74600F901F9053700F901F9064600F901F9113200F901F9053600F901F906A74600F901F9053800F901F9064600F901F912F901F906A74600F901F9053100F901F9064600F901F9053600F901F916F901F91547A53400F901F90AF901F9083836003100F901F909F901F9113500F901F9053200F901F9064200F901F912F901F9053400F901F9064200F901F9113300F901F9053200F901F90AF901F9053200F901F909F901F912F901F9053200F901F9064200F901F9053200F901F9064200F901F9053200F901F9064300F901F9053200F901F9064300F901F9053200F901F90AF901F90848A636004900F901F909F901F9113200F901F9053200F901F9064300F901F9053400F901F9064300F901F912F901F916F901F90AF901F90848004200F901F903F901F902

BIN
tests/contest2019/1367.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 548 B

View File

@ -0,0 +1 @@
http://wes.casio.com/math/index.php?q=I-295A+U-000000000000+M-0E00000000+S-000410110000100E0010B300D365+E-F90B30004400F901F9083733A7393700313700F901F909F901F90B31004200F901F9113500F901F90848A642004900F901F90848A7420049A74200F901F90B42A631004200F901F912F901F9113200F901F90848A642004900F901F90848A7420049A74200F901F912F901F90848A642004900F901F90AF901F90848A732320049A6313000F901F909F901F9113400F901F9053200F901F90AF901F9053100F901F906A7393000F901F9053100F901F906393000F901F909F901F9053100F901F906A7393000F901F9053100F901F90AF901F906393000F901F9053100F901F906A7393000F901F9053100F901F909F901F9053100F901F912F901F90AF901F908480049A63200F901F909F901F9113400F901F9053200F901F90AF901F9053100F901F906A7393000F901F9053100F901F906393000F901F909F901F9053100F901F90AF901F9053100F901F906A7393000F901F9053100F901F909F901F90848004900F901F90AF901F906393000F901F9053100F901F906A7393000F901F9053100F901F909F901F9053100F901F90AF901F906393000F901F9053100F901F906A7393000F901F9053100F901F909F901F9053100F901F912F901F90AF901F90848A7360049A6313500F901F909F901F9113200F901F9053800F901F906A7393000F901F9053400F901F906A7393000F901F912F901F90AF901F90848A631300049A73800F901F906A7393000F901F909F901F90B37004200F901F9113200F901F9053100F901F906A7393000F901F9053500F901F906A7393000F901F9054200F901F906A7393000F901F9053500F901F906A7393000F901F9053300F901F90B42A731004200F901F90AF901F90631383000F901F90848A7320049A73200F901F909F901F912F901F90AF901F90848A636330049A7313000F901F909F901F906393000F901F9053200F901F9113200F901F906A7393000F901F9053200F901F912F901F9113200F901F906393000F901F9053200F901F912F901F90AF901F9083200313500F901F9113200F901F909F901F9053444A63200F901F90848A63244A63100A731A64900F901F908480049A73300F901F908A731A73244A64800A731A64900F901F9084800A731A64900F901F90848A732A7344400A732A64900F901F905A73444A732A644A8A73100F901F90BA731004400F901F90AF901F908A733A6480038A64900F901F912F901F90532303000F901F903F901F902

BIN
tests/contest2019/1418.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 566 B

View File

@ -0,0 +1 @@
http://wes.casio.com/math/index.php?q=I-295A+U-000000000000+M-0E00000000+S-000410110000100E0010B000AC88+E-F90B32004000F901F90B3130004700F901F90840004700F901F909F901F90732373000F901F9113200F901F9053400F901F906A7393000F901F9053800F901F906A7393000F901F912F901F90AF901F90834003800F901F909F901F9113200F901F9053700F901F906A7393000F901F9053500F901F906A7393000F901F912F901F90AF901F90837003400F901F909F901F9113200F901F9053600F901F906A7393000F901F9053500F901F906A7393000F901F912F901F90AF901F90B3136004000F901F90840004700F901F909F901F90B32004200F901F9113600F901F90B47A76042A731D0004700F901F90840004700F901F9073000F901F9054200F901F91542FB013700F901F90B42A631004200F901F916F901F912F901F905A73100F901F908313600A7313700F901F9053600F901F90AF901F908343200A7313900F901F909F901F9113200F901F9053300F901F906393000F901F9053900F901F906393000F901F912F901F90AF901F908343000A73500F901F909F901F9083332003300F901F90AF901F908363700A7313500F901F909F901F9113200F901F9053200F901F906393000F901F9053400F901F906393000F901F912F901F90AF901F908343100A73500F901F909F901F9113400F901F9053300F901F906393000F901F912F901F90AF901F908363300A7313300F901F909F901F9113300F901F9053200F901F906393000F901F912F901F90AF901F908363300A7313300F901F909F901F9113200F901F9053200F901F906393000F901F912F901F90AF901F908373100A7313500F901F909F901F9073000F901F9053200F901F905A73100F901F906393000F901F9053400F901F90AF901F908373500A7313500F901F9073000F901F909F901F9053200F901F906393000F901F9053400F901F906393000F901F9113300F901F9053200F901F906393000F901F912F901F90AF901F9083338003300F901F909F901F9073000F901F9113200F901F9053300F901F906393000F901F9053100F901F906393000F901F912F901F90AF901F9083335003000F901F909F901F9053900F901F906A7393000F901F9053600F901F90AF901F905393900F901F903F901F902

View File

@ -0,0 +1 @@
http://wes.casio.com/math/index.php?q=I-295A+U-000000000000+M-0E00000000+S-000410110001100E0010B30025E0+E-F9083237003700F901F9053100F901F909F901F90B31004000F901F91340FB053700F901F9054000F901F90832380037A740A86040A631D0A93200F901F90B40A631004000F901F914F901F9053600F901F908323800A7323000F901F9053600F901F90AF901F908313400A73100F901F909F901F9083134003100F901F9053500F901F908313900A73500F901F905A73500F901F908313400A73200F901F90AF901F9083136003000F901F909F901F908313600A73200F901F905A73500F901F9083131003500F901F9053300F901F9083134003700F901F905A73800F901F90836003300F901F9053800F901F9083134003500F901F9053200F901F9083136003100F901F90AF901F908373400A7313400F901F9053100F901F909F901F9053200F901F908373700A7313600F901F905A73200F901F908373500A7313800F901F9053200F901F90AF901F9053200F901F9113200F901F9053100F901F909F901F9053100F901F906393000F901F9053400F901F906393000F901F912F901F90AF901F9053400F901F909F901F9053200F901F905A73100F901F906393000F901F9053400F901F908383300A7313500F901F90AF901F908383600A7313800F901F909F901F906A7393000F901F9053300F901F906393000F901F9053200F901F9113400F901F9053200F901F906393000F901F912F901F90AF901F908383200A7313000F901F9053100F901F909F901F9053300F901F908383400A73400F901F908383500A73400F901F905A73200F901F908383200A73900F901F908373900A73600F901F9053200F901F908383000A73400F901F908383200A73600F901F90AF901F9083800A7313200F901F9073000F901F90B31004700F901F91347FB053900F901F91547A53500F901F9083600A7313200F901F916F901F9053100F901F909F901F906393000F901F9053100F901F906A7393000F901F91547FB023400F901F90AF901F9053100F901F906393000F901F9053100F901F909F901F90AF901F9053100F901F906A7393000F901F9053100F901F909F901F916F901F9053100F901F90AF901F906393000F901F9053100F901F906A7393000F901F9053100F901F909F901F9053300F901F90AF901F9053100F901F906A7393000F901F90B47A631004700F901F914F901F907393000F901F908353400A73400F901F909F901F908353700A73700F901F908353300A7313100F901F905A73200F901F908353700A7313300F901F905A73800F901F908353600A7323200F901F908353500A7323200F901F908353400A7323100F901F9053800F901F908353800A7313300F901F9053200F901F908353700A7313000F901F9053100F901F908353400A73900F901F908353600A73700F901F9053400F901F908353500A73200F901F908353600A73100F901F9053100F901F9083537003100F901F9053300F901F9083534003700F901F9083530003700F901F9083438003500F901F9083437003500F901F9083436003400F901F905A73300F901F9083435003100F901F9083434003000F901F908353200A73800F901F908353400A73800F901F908353100A73800F901F908343900A73600F901F908343700A73600F901F908343600A73500F901F9053100F901F908343700A73400F901F9053300F901F908343900A73300F901F908353400A73300F901F908353300A73400F901F905A73400F901F908353200A73700F901F908353400A73500F901F90AF901F9083438003500F901F905A73100F901F909F901F905A73100F901F906A7393000F901F9053200F901F90AF901F9053200F901F909F901F9053300F901F906393000F901F9053200F901F906393000F901F9053100F901F9083536003300F901F909F901F9083533003000F901F9053300F901F9083438003200F901F90AF901F908353000A73200F901F909F901F9083530003100F901F905A73300F901F908353300A73100F901F90AF901F9083435003200F901F909F901F9083437003000F901F90AF901F9083734003200F901F9073000F901F90B30004700F901F91347FB053200F901F9053100F901F909F901F90AF901F9053600F901F9053100F901F91546A53000F901F909F901F916F901F90AF901F9053700F901F909F901F90AF901F908393000A73300F901F90631383000F901F90B47A631004700F901F914F901F9083739003100F901F9113200F901F9113200F901F9053100F901F909F901F9053100F901F90AF901F9053100F901F912F901F908383500A73100F901F90631383000F901F912F901F9083736003000F901F9113200F901F9053100F901F909F901F9053200F901F90AF901F9053500F901F912F901F908373400A73100F901F9113200F901F9053100F901F909F901F9053100F901F90AF901F905313100F901F912F901F908373400A73300F901F9113200F901F907393000F901F9053100F901F909F901F9053300F901F90AF901F908393000A73300F901F912F901F908383200A73300F901F9053100F901F909F901F90AF901F90B3432004200F901F90BA73135004300F901F90B30004400F901F91344FB053300F901F90842A632004300F901F909F901F908420043A63200F901F90AF901F90842A634004300F901F909F901F90842A6360043A63200F901F90AF901F90842A6330043A63200F901F909F901F9053200F901F90AF901F91544A53000F901F90B3631004200F901F90B31004300F901F916F901F91544A53100F901F90B3633004200F901F90BA73232004300F901F916F901F90B44A631004400F901F914F901F903F901F902

View File

@ -0,0 +1 @@
http://wes.casio.com/math/index.php?q=I-295A+U-000000000000+M-0E00000000+S-000410110001100E0010B30025E0+E-F909F901F9083000A73700F901F9053500F901F905A73200F901F9083300A7313000F901F9053500F901F9083800A73400F901F905A73500F901F9053200F901F90835003000F901F905A73500F901F9083000A73200F901F9053300F901F90833003200F901F905A73800F901F908A73500A73200F901F9053400F901F90AF901F9053100F901F9083137003200F901F909F901F90B31004200F901F90B7432004300F901F9053100F901F9113500F901F90B42A631004200F901F90732323500F901F90543A86042A731D000F901F9073000F901F9054200F901F912F901F908313700A7313900F901F9053600F901F908313700A7323500F901F9053500F901F90AF901F9053100F901F9083000A7323600F901F9113400F901F909F901F9053300F901F906343500F901F9054300F901F906A7343500F901F9053100F901F906343500F901F90543A83200F901F906343500F901F9053100F901F906A7343500F901F90543A743A9684300F901F90AF901F90543A9684300F901F906343500F901F912F901F9083000A7323400F901F9113400F901F909F901F9053300F901F906343500F901F90543A833A743A9684300F901F90AF901F90543A9684300F901F906343500F901F912F901F908343300A7323600F901F909F901F908343300A7313300F901F9053200F901F905A73400F901F908333300A73500F901F9083430003200F901F9053400F901F908343400A73400F901F905A73700F901F908333700A73200F901F9053500F901F90AF901F9053100F901F908343600A7323600F901F909F901F908343600A7313200F901F90AF901F908363400A7313900F901F909F901F9053200F901F908363600A7323100F901F905A73200F901F908363400A7323300F901F9053600F901F908373000A7313900F901F905A73200F901F908363800A7323300F901F9053500F901F908373300A7313900F901F908373300A7323300F901F9053500F901F908373800A7313900F901F905A73200F901F908373600A7323100F901F9053100F901F90AF901F9053100F901F908373100A7313400F901F909F901F908373100A7313100F901F908373300A73900F901F9053100F901F908373400A7313100F901F908373100A7313400F901F908363800A7313100F901F908363800A73900F901F9053100F901F908373100A7313100F901F903F901F902

View File

@ -0,0 +1 @@
http://wes.casio.com/math/index.php?q=I-295A+U-000000000000+M-0E00000000+S-000410110000100E0010B300D365+E-F90AF901F9083134003900F901F909F901F908313400313000F901F908313900313000F901F9083139003400F901F9083134003400F901F9083134003600F901F9083136003800F901F9083136003700F901F9083131003700F901F908313100313400F901F908313400313400F901F908313400313200F901F9083600313200F901F9083600313600F901F908313400313600F901F908313400313400F901F908313600313400F901F908313600313000F901F90AF901F908313400A73100F901F909F901F90731383000F901F9113400F901F9053300F901F906343500F901F9053400F901F906343500F901F912F901F90AF901F9083132003100F901F909F901F9113400F901F9113300F901F90632322E3500F901F9053300F901F912F901F90632322E3500F901F9053100F901F912F901F90AF901F90AF901F908323800313600F901F909F901F90B3238004300F901F90B3136004400F901F90B31004200F901F91342A53700F901F90B43A631004300F901F90843004400F901F90B44A742004400F901F9083238004400F901F90B42A631004200F901F914F901F908333400A73500F901F908323800A7313100F901F908333400A7313100F901F90AF901F908353000313200F901F909F901F908343900313200F901F908343800313300F901F908353100313600F901F908353400313600F901F908353000313600F901F908343800313400F901F908343800313100F901F9083530003900F901F9083530003800F901F908353200313000F901F908353000313000F901F9083533003900F901F9083533003800F901F908353300313000F901F908353400313000F901F908353500313100F901F908353500313200F901F908353200313200F901F908353500313200F901F908353500313500F901F908353400313400F901F908353600313400F901F908353700313300F901F908353700313000F901F9083535003700F901F9083536003600F901F9083536003200F901F9083537003200F901F908353300A73200F901F908353300A73400F901F908353700A73400F901F908353700A7313200F901F908353600A7313300F901F908353500A7313300F901F908353400A7313200F901F908353400A73400F901F908353800A73400F901F908353800A73200F901F908353700A73100F901F9083537003000F901F9083534003000F901F9083535003100F901F9083531003100F901F903F901F902

BIN
tests/contest2019/1958.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 650 B

View File

@ -0,0 +1 @@
http://wes.casio.com/math/index.php?q=I-295A+U-0007002548EA+M-0E00000000+S-000410110001100E0010B300DC40+E-F908A7333100313200F901F909F901F908A7333600313200F901F908A7333600313600F901F908A7323800313600F901F908A7323800313200F901F908A7333100313200F901F908A73331003700F901F908A73236003700F901F908A73236003800F901F908A73238003600F901F908A73238003400F901F908A73233003400F901F908A7323300313000F901F908A7323800313000F901F908A73238003900F901F908A7323600313100F901F908A7323600313400F901F908A7333100313400F901F908A7333100313200F901F90AF901F908C03800C0313100F901F909F901F905C03600F901F908C03800C03500F901F905C03600F901F908C038003100F901F905C03600F901F908C039003600F901F905C03500F901F908C0313000313000F901F905C03400F901F908C0313100313300F901F905C03300F901F908C0313200313500F901F905C03200F901F908C0313300313600F901F905C03100F901F90AF901F90B31004200F901F9113200F901F908343000313100F901F909F901F9083430A66033A842D0003900F901F9083430A66038A842D0003800F901F90AF901F9083430003700F901F909F901F9083430A66031A842D0003800F901F90531A84200F901F90AF901F9083430003300F901F909F901F9083430003000F901F9083430A66033A842D0003300F901F9083430A66033A842D0003500F901F905C031A84200F901F9083430A66031A842D0003400F901F90AF901F90BC031004200F901F912F901F90AF901F908C03330003100F901F909F901F911333600F901F905312E313200F901F906C0392E3900F901F912F901F90AF901F9073000F901F908C0333000C03100F901F909F901F911323800F901F9053100F901F906C031322E373500F901F912F901F90AF901F90832003900F901F909F901F9083130003100F901F9083135003000F901F908313600C03300F901F908313500C03400F901F908313500C0313200F901F908313400C0313300F901F908313200C0313200F901F908313200C03400F901F908313100C03200F901F9083134003200F901F9083134003600F901F9083133003700F901F908313500313000F901F908313500313300F901F908313200313600F901F90AF901F9083000A73400F901F909F901F90AF901F9083100A73500F901F909F901F90AF901F9083300A73200F901F909F901F90AF901F908393000393000F901F903F901F902

BIN
tests/contest2019/2070.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 645 B

View File

@ -0,0 +1 @@
http://wes.casio.com/math/index.php?q=I-295A+U-0007002548EA+M-0E00000000+S-000410110001100E0010B300DC40+E-F908A7333100313200F901F909F901F908A7333600313200F901F908A7333600313600F901F908A7323800313600F901F908A7323800313200F901F908A7333100313200F901F908A73331003700F901F908A73236003700F901F908A73236003800F901F908A73238003600F901F908A73238003400F901F908A73233003400F901F908A7323300313000F901F908A7323800313000F901F908A73238003900F901F908A7323600313100F901F908A7323600313400F901F908A7333100313400F901F908A7333100313200F901F90AF901F908C03800C0313100F901F909F901F905C03600F901F908C03800C03500F901F905C03600F901F908C038003100F901F905C03600F901F908C039003600F901F905C03500F901F908C0313000313000F901F905C03400F901F908C0313100313300F901F905C03300F901F908C0313200313500F901F905C03200F901F908C0313300313600F901F905C03100F901F90AF901F90B31004200F901F9113200F901F908343000313100F901F909F901F9083430A66033A842D0003900F901F9083430A66035A842D0003900F901F9083430A66038A842D0003700F901F9083430A66038A842D000313000F901F9083430A66037A842D000313100F901F90AF901F9083430003700F901F909F901F9083430A66031A842D0003800F901F90531A84200F901F90AF901F9083430003300F901F909F901F9083430003000F901F9083430A66033A842D0003300F901F9083430A66033A842D0003500F901F905C031A84200F901F9083430A66031A842D0003400F901F90AF901F90BC031004200F901F912F901F90AF901F908C03330003100F901F909F901F911333600F901F905312E313200F901F906C0392E3900F901F912F901F90AF901F9073000F901F908C0333000C03100F901F909F901F911323800F901F9053100F901F906C031322E373500F901F912F901F90AF901F90832003900F901F909F901F9083130003100F901F9083135003000F901F908313600C03300F901F908313500C03400F901F908313500C0313200F901F908313400C0313300F901F908313200C0313200F901F908313200C03400F901F908313100C03200F901F9083134003200F901F9083134003400F901F9083131003400F901F9083131003600F901F90837003600F901F90835003800F901F9083400313000F901F9083400313300F901F90AF901F9083000343000F901F903F901F902

BIN
tests/contest2019/2227.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 654 B

View File

@ -0,0 +1 @@
http://wes.casio.com/math/index.php?q=I-295A+U-000000000000+M-0E00000000+S-000410110000100E0010B300D365+E-F908A73430003000F901F909F901F9113400F901F9053300F901F906A7333400F901F905342E3500F901F906A7333100F901F9053300F901F906A7323600F901F912F901F9073000F901F90AF901F908480049A73200F901F909F901F9113400F901F9053100F901F906A7313400F901F9053400F901F906A7363000F901F905322E3500F901F906A7313600F901F912F901F90AF901F90848A631370049A6313700F901F909F901F90B31004200F901F9113500F901F90848A642004900F901F90848A7420049A74200F901F90B42A631004200F901F912F901F9113200F901F90848A642004900F901F90848A7420049A74200F901F912F901F90848A642004900F901F90AF901F90848A732380049A6323700F901F909F901F9113200F901F9053800F901F906A7393000F901F9053400F901F906A7393000F901F912F901F90AF901F90848A6350049A73900F901F909F901F90B37004200F901F9113200F901F9113200F901F9053500F901F906393000F901F9054200F901F906393000F901F912F901F90B42A731004200F901F90AF901F90848A6330049A73300F901F909F901F912F901F90AF901F90848A635380049A73600F901F909F901F9053200F901F908480049A73200F901F905A73200F901F908480049A73200F901F9053600F901F908480049A63400F901F905A73200F901F908480049A73400F901F9053500F901F908480049A63400F901F9053500F901F908480049A73400F901F905A73200F901F90AF901F90848A734330049A6313800F901F909F901F90848A6380049A73800F901F9053400F901F908480049A63500F901F90848A7310049A63100F901F90848A7320049A73200F901F908480049A73400F901F9053400F901F908480049A7313400F901F905A73300F901F908480049A6313300F901F90AF901F90848A7360049A6313100F901F909F901F908480049A63300F901F90848A6320049A63200F901F9053400F901F90848A6330049A73300F901F908480049A73300F901F90AF901F90848A733004900F901F909F901F905A73700F901F908480049A73400F901F9053600F901F90AF901F90848A7330049A63300F901F909F901F9053300F901F90848A6320049A63200F901F908480049A63300F901F90AF901F90848A632340049A7313100F901F909F901F90848A6330049A73300F901F90848A6330049A63300F901F90AF901F90531303000F901F903F901F902

BIN
tests/contest2019/2405.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 658 B

View File

@ -0,0 +1 @@
http://wes.casio.com/math/index.php?q=I-295A+U-000500151CCF+M-0E00000000+S-000410110011001E0010B300EA68+E-F909F901F90732373000F901F90B31004200F901F90B30004300F901F9113200F901F908A742003000F901F909F901F90B3242A643004400F901F9084400A73200F901F905A73200F901F90844A642003000F901F90844A63242003100F901F905A73300F901F90844A63442003300F901F9053300F901F90844A64200A73400F901F908A74200A73400F901F90AF901F90833A64400A73400F901F909F901F9053500F901F90833A644A64200A73800F901F90833A642A64300A73600F901F90AF901F90834A642A64300A7313000F901F909F901F90844A63400A7313000F901F90834A644A64200A7313300F901F9053100F901F90834A64400A7313500F901F9053700F901F90834A642A64300A7323300F901F90BA731004200F901F90B31004300F901F90AF901F912F901F9073000F901F9083100A73900F901F909F901F908A73700A73100F901F90AF901F908A7333700A73600F901F90B36004200F901F9113200F901F909F901F9113200F901F9053500F901F906393000F901F9054200F901F906393000F901F912F901F90B37004200F901F90AF901F908A7343000A73300F901F912F901F908A73435003200F901F909F901F9113200F901F9053800F901F906393000F901F9053400F901F906393000F901F912F901F90AF901F908A7333900A7323200F901F909F901F9113400F901F9053100F901F906323500F901F9053400F901F906323200F901F9053200F901F906323300F901F9053300F901F906323000F901F912F901F908A7333900A7323000F901F9113400F901F9053100F901F906323000F901F9053300F901F906353000F901F9053300F901F906323000F901F912F901F90AF901F908A73233003600F901F909F901F90B30004200F901F90B30004300F901F9113800F901F90632323500F901F90542A743A674324200F901F90631333500F901F90B31004300F901F91542FB033600F901F90B42A631004200F901F916F901F9054200F901F912F901F90AF901F908323400A7313900F901F9113400F901F909F901F9113200F901F9053200F901F906393000F901F91543A53300F901F90AF901F916F901F9053400F901F906393000F901F912F901F90AF901F90B43A631004300F901F9053400F901F912F901F9113200F901F9083331A6384400A73200F901F909F901F9083331A6334400A73100F901F90AF901F90B31004400F901F912F901F905383000F901F903F901F902

BIN
tests/contest2019/2559.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 699 B

View File

@ -0,0 +1 @@
http://wes.casio.com/math/index.php?q=I-295A+U-0007001B151D+M-0E00000000+S-090410110001100E0010B3006005+E-F908C03238003900F901F909F901F908C0323800313000F901F9053500F901F908C03233003400F901F905C03500F901F908C03238003700F901F9053200F901F908C0323600313400F901F905C03500F901F908C0333100313200F901F9053300F901F908C0323800313600F901F905C03800F901F908C0333600313200F901F9053500F901F908C03331003700F901F9053200F901F90AF901F908C03800C0313100F901F909F901F905C03600F901F908C03800C03500F901F905C03600F901F908C038003100F901F905C03600F901F908C039003600F901F905C03500F901F908C0313000313000F901F905C03400F901F908C0313100313300F901F905C03300F901F90AF901F908333300C03500F901F909F901F9053200F901F908333500C03700F901F905C03200F901F908333300C03900F901F9053600F901F908333900C03500F901F905C03200F901F908333700C03800F901F90AF901F908343200C03500F901F909F901F908343200C03900F901F9053500F901F908343700C03500F901F905C03200F901F908343500C03700F901F90AF901F908333200313000F901F909F901F9083332003800F901F9083337003900F901F908343000313100F901F9083433003900F901F9083438003800F901F908343800313000F901F90AF901F9083337003500F901F909F901F9083337003300F901F9083430003000F901F9083433003300F901F90AF901F9083400313000F901F909F901F90837003600F901F9053500F901F908313500313000F901F908313500313300F901F908313200313600F901F905C03400F901F9083600313400F901F9083600313200F901F9053700F901F908313200313000F901F905C03500F901F9083131003800F901F90AF901F90832003900F901F909F901F9083130003100F901F9083131003400F901F9053300F901F9083134003600F901F9083134003000F901F9053100F901F908313600C03200F901F908313500C03400F901F908313500C0313300F901F905C03300F901F908313200C03400F901F9053400F901F905C03500F901F9083131003500F901F90AF901F908C0333000C0313200F901F909F901F911333600F901F905312E313200F901F906392E3900F901F912F901F90AF901F908C0333000C0313000F901F909F901F9073000F901F911323800F901F9053100F901F90631322E373500F901F912F901F90AF901F9083000343000F901F903F901F902

BIN
tests/contest2019/2673.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 705 B

View File

@ -0,0 +1 @@
http://wes.casio.com/math/index.php?q=I-295A+U-000000000000+M-0E00000000+S-000410110000100E0010B300D365+E-F90BA73930004600F901F90B362E33004500F901F90B35004400F901F9113200F901F90B30004200F901F911393900F901F908A7352E35A645784200A7352E35A645774200F901F90B42A644004200F901F909F901F912F901F90B342E35004500F901F90AF901F912F901F908A73700313400F901F909F901F9053500F901F90848003700F901F905A73500F901F9084800313400F901F90AF901F908A73400313000F901F909F901F9053500F901F90848003400F901F905A73500F901F9084800313000F901F90AF901F908A7313200313600F901F909F901F9053800F901F9084800313200F901F905A73800F901F9084800313600F901F90AF901F90B31004700F901F905323200F901F909F901F9113700F901F9054700F901F90848A7470049A74700F901F91547FB013600F901F90B47A631004700F901F916F901F912F901F9054700F901F90AF901F908353700A73500F901F909F901F9113300F901F9053200F901F9064600F901F912F901F905A73200F901F9064600F901F9113500F901F9054700F901F906393000F901F91747A53200F901F90B34004700F901F918F901F90B47A732004700F901F919F901F912F901F9083731004900F901F9113400F901F9054700F901F906393000F901F90B32004700F901F912F901F90B31004400F901F90B31004500F901F9113400F901F90AF901F90836340039A6324400F901F909F901F90848A73345003900F901F90848A73545003800F901F905A73100F901F9053300F901F90AF901F9082E35603735A7334500A7313200F901F909F901F9053800F901F90848A63445004900F901F9053200F901F90848A73245003100F901F90BA745004500F901F91545A53100F901F90BA744004400F901F916F901F912F901F9083338003100F901F9053900F901F9083331004900F901F9083332003900F901F9083335004900F901F908333700313100F901F9053400F901F908333900313300F901F905A73300F901F908333600313200F901F9083330004900F901F9083236003900F901F9083334003100F901F9083336003400F901F9083334003600F901F9083237003500F901F9083239003300F901F9083332004900F901F9083239003600F901F908323800313300F901F908333300313600F901F9083336004900F901F90AF901F9083338003100F901F909F901F9083333004900F901F9083332003200F901F90AF901F90830004600F901F903F901F902

BIN
tests/contest2019/2805.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 714 B

View File

@ -0,0 +1 @@
http://wes.casio.com/math/index.php?q=I-295A+U-000000000000+M-0E00000000+S-000410110000100E0010B300D365+E-F90B3130004700F901F90AF901F9083500313100F901F909F901F90B36343630323036343230004200F901F90B31323435323534383433004000F901F9113200F901F911313100F901F90734356042A7478342A94700F901F90B8342A947004200F901F90540A7478340A94700F901F90B8340A947004000F901F912F901F90B32343632303234363032004200F901F90B34353131323335363531004000F901F912F901F90B342E35004200F901F9113200F901F90B30004000F901F90AF901F911333200F901F908362E35A642784000A7362E35A642774000F901F909F901F90B40A63930A938004000F901F912F901F90B362E34004200F901F912F901F90B31004600F901F9113200F901F90BA746004600F901F90AF901F9083736A73346003800F901F909F901F907393046A7363000F901F905332E3600F901F9073630A739304600F901F905332E3600F901F907383046A7393000F901F9053500F901F907393000F901F9053200F901F905A73300F901F912F901F90AF901F908323200313500F901F909F901F9113700F901F9073000F901F9054600F901F90732323500F901F90546743200F901F90B46A631A78346A936004600F901F912F901F9073000F901F9054600F901F90AF901F9083530003500F901F909F901F90B31333433323832343638363536004200F901F90B37383333323439333934323335004000F901F9113300F901F91546A53800F901F90B32343533323132313234313738004200F901F90B31383231333131333131333232004000F901F916F901F911313500F901F90734356042A7478342A94700F901F9056040A7478340A947D0D06031A62E34316032A788322C42A7478342A94700F901F90B8342A947004200F901F90B8340A947004000F901F912F901F90B37343633343638373435363738004200F901F90B32323332343333313531343133004000F901F90B31A646004600F901F912F901F90AF901F908363900A73600F901F909F901F90B3634323036343630004200F901F90B353432343632323232004000F901F9113200F901F911313000F901F90734356042A7478342A94700F901F90540A7478340A94700F901F90B8342A947004200F901F90B8340A947004000F901F912F901F90B363432303630343632004200F901F90B32323234353331313134004000F901F912F901F90AF901F905334700F901F903F901F902

BIN
tests/contest2019/3217.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 763 B

View File

@ -0,0 +1 @@
http://wes.casio.com/math/index.php?q=I-295A+U-000000000000+M-0E00000000+S-000410110000100E0010B300D365+E-F9083400313700F901F90B3434004500F901F90B3534383433323533004200F901F909F901F911323400F901F906393000F901F90B2E318342004200F901F90531306042A7834200F901F90B42A635306032303331837842D0D0A633313330363483782E31A742004200F901F912F901F90AF901F905333000F901F90B36353533363448004200F901F911323100F901F911313600F901F90B2E358342004200F901F90848003532A7324CA93435A77A42A7834200F901F909F901F9053000F901F90AF901F90632322E3500F901F912F901F9053100F901F90B42A63132837848A73532D0D0A633333031303038383531837848A73338D0D0A634323538333833303537837848A73430004200F901F90B42A632343533353734373431837848A73432D0D0A631303831363731303434837848A745004200F901F90B42A6373937313836363830837848A73334D0D0A6383738303632313430837848A73336004200F901F912F901F9084800323200F901F9113800F901F90831360049A64200F901F90B42A731A78331307742004200F901F909F901F905C04200F901F912F901F90AF901F90845003800F901F909F901F9083435003500F901F9083432003700F901F9083431003200F901F9053500F901F90848003400F901F9083435003100F901F90848004200F901F9084500C03700F901F9083432004200F901F90848003100F901F90AF901F90B342E35004200F901F9113200F901F911343500F901F9063800F901F9082E35A642784C002E35A642774C00F901F909F901F912F901F90AF901F90B362E3335004200F901F912F901F90B35363432343635363030004200F901F90848003200F901F9113500F901F9083230220049A73100F901F911313200F901F90B2E358342004200F901F91542A5834200F901F909F901F9053000F901F90AF901F916F901F90534A93300F901F912F901F90B42A63136373739303934837842004200F901F912F901F90B3831393233323031004200F901F911313200F901F9083730004900F901F9113900F901F90B2E358342004200F901F9113200F901F908313430A7480045A77C42A7834200F901F909F901F9053000F901F90AF901F912F901F9053100F901F912F901F90B45A731004500F901F90B42A63333363836343730837845A73431D0D0A632333634343238837845A73338D0D0A6323633363835837845A73335004200F901F912F901F903F901F902

BIN
tests/contest2019/3270.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

View File

@ -0,0 +1 @@
http://wes.casio.com/math/index.php?q=I-295A+U-000000000000+M-0E00000000+S-000410110000100E0010B300D365+E-F90B342E35004300F901F9113200F901F911373200F901F908C036382E35A643784C00C031322E35A643774C00F901F909F901F9063500F901F912F901F90AF901F90B362E33004300F901F912F901F90848003300F901F909F901F905C03500F901F9084800C03300F901F9053500F901F90848003300F901F90AF901F908C03730003700F901F909F901F9053500F901F90848003000F901F905C03500F901F90848003700F901F90AF901F908C03735003900F901F909F901F9053800F901F90848003500F901F905C03800F901F90848003900F901F911373800F901F90B353336303536393137837848A63238D0D0A6353336303335343438837848A63235D0D0A631383939393835837848A63239004300F901F90B43A6353338303439393234837848A63236D0D0A63635303438383936837848A631D0D0A63635303330343634837848A732004300F901F90B43A6353338303232343632837848A63237D0D0A63635303236313736837848A633D0D0A63635303133303234837848A737004300F901F90B43A6323638343335343638837848A63138D0D0A632313039333136837848A63335D0D0A631303539333838837848A63334004300F901F90B43A6313030363633333238837848A63136D0D0A63630383138373230837848A637D0D0A63337373835393230837848A731004300F901F90B43A636373736837848A63336D0D0A63530333639837848A63331D0D0A63530333835837848A63330004300F901F90B43A6313233343234837848D0D0A6373836373532837848A63337D0D0A631383335303038837848A63234004300F901F90B43A63335363730333336837848A632D0D0A6343832333436323460837848A635D0D0A6837848A735004300F901F90B43A63333353638383936837848A733D0D0A6343430343034343860837848A636D0D0A6837848A736004300F901F90B43A63236303637837848A63332D0D0A63133333938837848A63333D0D0A639363060837848A638D0D0A6837848A738004300F901F90848A631003900F901F91548A5C0353300F901F909F901F9113800F901F90848A7430049A74300F901F90B43A631A78343A936004300F901F9054300F901F912F901F916F901F911333800F901F909F901F91531A5888343A932C939A749D0D02C3200F901F9053000F901F916F901F90AF901F908480049A73100F901F912F901F912F901F902

BIN
tests/contest2019/m0069.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 B

View File

@ -0,0 +1 @@
http://wes.casio.com/math/index.php?q=I-295A+U-000000000000+M-0E00000000+S-000410110001100E0010B30025E0+E-F908323000A7363000F901F909F901F9053800F901F906A7393000F901F9053400F901F906A7393000F901F9053900F901F906A7393000F901F9053400F901F903F901F902