-
Notifications
You must be signed in to change notification settings - Fork 6
/
submission_autograder.py
41 lines (34 loc) · 9.24 KB
/
submission_autograder.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# submission_autograder.py
# ------------------------
# Licensing Information: You are free to use or extend these projects for
# educational purposes provided that (1) you do not distribute or publish
# solutions, (2) you retain this notice, and (3) you provide clear
# attribution to UC Berkeley, including a link to http://ai.berkeley.edu.
#
# Attribution Information: The Pacman AI projects were developed at UC Berkeley.
# The core projects and autograders were primarily created by John DeNero
# ([email protected]) and Dan Klein ([email protected]).
# Student side autograding was added by Brad Miller, Nick Hay, and
# Pieter Abbeel ([email protected]).
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import print_function
from codecs import open
"""
CS 188 Local Submission Autograder
Written by the CS 188 Staff
==============================================================================
_____ _ _
/ ____| | | |
| (___ | |_ ___ _ __ | |
\___ \| __/ _ \| '_ \| |
____) | || (_) | |_) |_|
|_____/ \__\___/| .__/(_)
| |
|_|
Modifying or tampering with this file is a violation of course policy.
If you're having trouble running the autograder, please contact the staff.
==============================================================================
"""
import bz2, base64
exec(bz2.decompress(base64.b64decode('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')))