Created
May 12, 2018 08:33
-
-
Save agoose77/7ac98e74c3b7f1892789575c8cd50536 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 107, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from pygments.formatters import HtmlFormatter\n", | |
"from pygments import highlight" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 108, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import re\n", | |
"\n", | |
"from pygments.lexer import Lexer, RegexLexer, include, bygroups, using, \\\n", | |
" default, words, combined, do_insertions\n", | |
"from pygments.util import get_bool_opt, shebang_matches\n", | |
"from pygments.token import Text, Comment, Operator, Keyword, Name, String, \\\n", | |
" Number, Punctuation, Generic, Other, Error\n", | |
"from pygments import unistring as uni\n", | |
"\n", | |
"line_re = re.compile('.*?\\n')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 109, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"class Python3Lexer(RegexLexer):\n", | |
" \"\"\"\n", | |
" For `Python <http://www.python.org>`_ source code (version 3.0).\n", | |
"\n", | |
" .. versionadded:: 0.10\n", | |
" \"\"\"\n", | |
"\n", | |
" name = 'Python 3'\n", | |
" aliases = ['python3', 'py3']\n", | |
" filenames = [] # Nothing until Python 3 gets widespread\n", | |
" mimetypes = ['text/x-python3', 'application/x-python3']\n", | |
"\n", | |
" flags = re.MULTILINE | re.UNICODE\n", | |
"\n", | |
" uni_name = \"[%s][%s]*\" % (uni.xid_start, uni.xid_continue)\n", | |
"\n", | |
" def innerstring_rules(ttype):\n", | |
" return [\n", | |
" # the old style '%s' % (...) string formatting (still valid in Py3)\n", | |
" (r'%(\\(\\w+\\))?[-#0 +]*([0-9]+|[*])?(\\.([0-9]+|[*]))?'\n", | |
" '[hlL]?[E-GXc-giorsux%]', String.Interpol),\n", | |
" # the new style '{}'.format(...) string formatting\n", | |
" (r'\\{'\n", | |
" '((\\w+)((\\.\\w+)|(\\[[^\\]]+\\]))*)?' # field name\n", | |
" '(\\![sra])?' # conversion\n", | |
" '(\\:(.?[<>=\\^])?[-+ ]?#?0?(\\d+)?,?(\\.\\d+)?[E-GXb-gnosx%]?)?'\n", | |
" '\\}', String.Interpol),\n", | |
"\n", | |
" # backslashes, quotes and formatting signs must be parsed one at a time\n", | |
" (r'[^\\\\\\'\"%{\\n]+', ttype),\n", | |
" (r'[\\'\"\\\\]', ttype),\n", | |
" # unhandled string formatting sign\n", | |
" (r'%|(\\{{1,2})', ttype)\n", | |
" # newlines are an error (use \"nl\" state)\n", | |
" ]\n", | |
"\n", | |
" tokens = PythonLexer.tokens.copy()\n", | |
" tokens['keywords'] = [\n", | |
" (words((\n", | |
" 'assert', 'async', 'await', 'break', 'continue', 'del', 'elif',\n", | |
" 'else', 'except', 'finally', 'for', 'global', 'if', 'lambda', 'pass',\n", | |
" 'raise', 'nonlocal', 'return', 'try', 'while', 'yield', 'yield from',\n", | |
" 'as', 'with', 'given'), suffix=r'\\b'),\n", | |
" Keyword),\n", | |
" (words((\n", | |
" 'True', 'False', 'None'), suffix=r'\\b'),\n", | |
" Keyword.Constant),\n", | |
" ]\n", | |
" tokens['builtins'] = [\n", | |
" (words((\n", | |
" '__import__', 'abs', 'all', 'any', 'bin', 'bool', 'bytearray', 'bytes',\n", | |
" 'chr', 'classmethod', 'cmp', 'compile', 'complex', 'delattr', 'dict',\n", | |
" 'dir', 'divmod', 'enumerate', 'eval', 'filter', 'float', 'format',\n", | |
" 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'hex', 'id',\n", | |
" 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'list',\n", | |
" 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct',\n", | |
" 'open', 'ord', 'pow', 'print', 'property', 'range', 'repr', 'reversed',\n", | |
" 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str',\n", | |
" 'sum', 'super', 'tuple', 'type', 'vars', 'zip'), prefix=r'(?<!\\.)',\n", | |
" suffix=r'\\b'),\n", | |
" Name.Builtin),\n", | |
" (r'(?<!\\.)(self|Ellipsis|NotImplemented|cls)\\b', Name.Builtin.Pseudo),\n", | |
" (words((\n", | |
" 'ArithmeticError', 'AssertionError', 'AttributeError',\n", | |
" 'BaseException', 'BufferError', 'BytesWarning', 'DeprecationWarning',\n", | |
" 'EOFError', 'EnvironmentError', 'Exception', 'FloatingPointError',\n", | |
" 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError',\n", | |
" 'ImportWarning', 'IndentationError', 'IndexError', 'KeyError',\n", | |
" 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError',\n", | |
" 'NotImplementedError', 'OSError', 'OverflowError',\n", | |
" 'PendingDeprecationWarning', 'ReferenceError', 'ResourceWarning',\n", | |
" 'RuntimeError', 'RuntimeWarning', 'StopIteration',\n", | |
" 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError',\n", | |
" 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError',\n", | |
" 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError',\n", | |
" 'UnicodeWarning', 'UserWarning', 'ValueError', 'VMSError', 'Warning',\n", | |
" 'WindowsError', 'ZeroDivisionError',\n", | |
" # new builtin exceptions from PEP 3151\n", | |
" 'BlockingIOError', 'ChildProcessError', 'ConnectionError',\n", | |
" 'BrokenPipeError', 'ConnectionAbortedError', 'ConnectionRefusedError',\n", | |
" 'ConnectionResetError', 'FileExistsError', 'FileNotFoundError',\n", | |
" 'InterruptedError', 'IsADirectoryError', 'NotADirectoryError',\n", | |
" 'PermissionError', 'ProcessLookupError', 'TimeoutError'),\n", | |
" prefix=r'(?<!\\.)', suffix=r'\\b'),\n", | |
" Name.Exception),\n", | |
" ]\n", | |
" tokens['magicfuncs'] = [\n", | |
" (words((\n", | |
" '__abs__', '__add__', '__aenter__', '__aexit__', '__aiter__', '__and__',\n", | |
" '__anext__', '__await__', '__bool__', '__bytes__', '__call__',\n", | |
" '__complex__', '__contains__', '__del__', '__delattr__', '__delete__',\n", | |
" '__delitem__', '__dir__', '__divmod__', '__enter__', '__eq__', '__exit__',\n", | |
" '__float__', '__floordiv__', '__format__', '__ge__', '__get__',\n", | |
" '__getattr__', '__getattribute__', '__getitem__', '__gt__', '__hash__',\n", | |
" '__iadd__', '__iand__', '__ifloordiv__', '__ilshift__', '__imatmul__',\n", | |
" '__imod__', '__import__', '__imul__', '__index__', '__init__',\n", | |
" '__instancecheck__', '__int__', '__invert__', '__ior__', '__ipow__',\n", | |
" '__irshift__', '__isub__', '__iter__', '__itruediv__', '__ixor__',\n", | |
" '__le__', '__len__', '__length_hint__', '__lshift__', '__lt__',\n", | |
" '__matmul__', '__missing__', '__mod__', '__mul__', '__ne__', '__neg__',\n", | |
" '__new__', '__next__', '__or__', '__pos__', '__pow__', '__prepare__',\n", | |
" '__radd__', '__rand__', '__rdivmod__', '__repr__', '__reversed__',\n", | |
" '__rfloordiv__', '__rlshift__', '__rmatmul__', '__rmod__', '__rmul__',\n", | |
" '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__',\n", | |
" '__rsub__', '__rtruediv__', '__rxor__', '__set__', '__setattr__',\n", | |
" '__setitem__', '__str__', '__sub__', '__subclasscheck__', '__truediv__',\n", | |
" '__xor__'), suffix=r'\\b'),\n", | |
" Name.Function.Magic),\n", | |
" ]\n", | |
" tokens['magicvars'] = [\n", | |
" (words((\n", | |
" '__annotations__', '__bases__', '__class__', '__closure__', '__code__',\n", | |
" '__defaults__', '__dict__', '__doc__', '__file__', '__func__',\n", | |
" '__globals__', '__kwdefaults__', '__module__', '__mro__', '__name__',\n", | |
" '__objclass__', '__qualname__', '__self__', '__slots__', '__weakref__'),\n", | |
" suffix=r'\\b'),\n", | |
" Name.Variable.Magic),\n", | |
" ]\n", | |
" tokens['numbers'] = [\n", | |
" (r'(\\d+\\.\\d*|\\d*\\.\\d+)([eE][+-]?[0-9]+)?', Number.Float),\n", | |
" (r'\\d+[eE][+-]?[0-9]+j?', Number.Float),\n", | |
" (r'0[oO][0-7]+', Number.Oct),\n", | |
" (r'0[bB][01]+', Number.Bin),\n", | |
" (r'0[xX][a-fA-F0-9]+', Number.Hex),\n", | |
" (r'\\d+', Number.Integer)\n", | |
" ]\n", | |
" tokens['backtick'] = []\n", | |
" tokens['name'] = [\n", | |
" (r'@\\w+', Name.Decorator),\n", | |
" (r'@', Operator), # new matrix multiplication operator\n", | |
" (uni_name, Name),\n", | |
" ]\n", | |
" tokens['funcname'] = [\n", | |
" (uni_name, Name.Function, '#pop')\n", | |
" ]\n", | |
" tokens['classname'] = [\n", | |
" (uni_name, Name.Class, '#pop')\n", | |
" ]\n", | |
" tokens['import'] = [\n", | |
" (r'(\\s+)(as)(\\s+)', bygroups(Text, Keyword, Text)),\n", | |
" (r'\\.', Name.Namespace),\n", | |
" (uni_name, Name.Namespace),\n", | |
" (r'(\\s*)(,)(\\s*)', bygroups(Text, Operator, Text)),\n", | |
" default('#pop') # all else: go back\n", | |
" ]\n", | |
" tokens['fromimport'] = [\n", | |
" (r'(\\s+)(import)\\b', bygroups(Text, Keyword), '#pop'),\n", | |
" (r'\\.', Name.Namespace),\n", | |
" (uni_name, Name.Namespace),\n", | |
" default('#pop'),\n", | |
" ]\n", | |
" tokens['strings-single'] = innerstring_rules(String.Single)\n", | |
" tokens['strings-double'] = innerstring_rules(String.Double)\n", | |
"\n", | |
" def analyse_text(text):\n", | |
" return shebang_matches(text, r'pythonw?3(\\.\\d)?')\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 110, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from IPython.display import HTML\n", | |
"def output(code):\n", | |
" return HTML(f\"\"\"<style>{HtmlFormatter().get_style_defs()}</style>\"\"\" + highlight(code, Python3Lexer(), HtmlFormatter()))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 111, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<style>.hll { background-color: #ffffcc }\n", | |
".c { color: #408080; font-style: italic } /* Comment */\n", | |
".err { border: 1px solid #FF0000 } /* Error */\n", | |
".k { color: #008000; font-weight: bold } /* Keyword */\n", | |
".o { color: #666666 } /* Operator */\n", | |
".ch { color: #408080; font-style: italic } /* Comment.Hashbang */\n", | |
".cm { color: #408080; font-style: italic } /* Comment.Multiline */\n", | |
".cp { color: #BC7A00 } /* Comment.Preproc */\n", | |
".cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */\n", | |
".c1 { color: #408080; font-style: italic } /* Comment.Single */\n", | |
".cs { color: #408080; font-style: italic } /* Comment.Special */\n", | |
".gd { color: #A00000 } /* Generic.Deleted */\n", | |
".ge { font-style: italic } /* Generic.Emph */\n", | |
".gr { color: #FF0000 } /* Generic.Error */\n", | |
".gh { color: #000080; font-weight: bold } /* Generic.Heading */\n", | |
".gi { color: #00A000 } /* Generic.Inserted */\n", | |
".go { color: #888888 } /* Generic.Output */\n", | |
".gp { color: #000080; font-weight: bold } /* Generic.Prompt */\n", | |
".gs { font-weight: bold } /* Generic.Strong */\n", | |
".gu { color: #800080; font-weight: bold } /* Generic.Subheading */\n", | |
".gt { color: #0044DD } /* Generic.Traceback */\n", | |
".kc { color: #008000; font-weight: bold } /* Keyword.Constant */\n", | |
".kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\n", | |
".kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\n", | |
".kp { color: #008000 } /* Keyword.Pseudo */\n", | |
".kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\n", | |
".kt { color: #B00040 } /* Keyword.Type */\n", | |
".m { color: #666666 } /* Literal.Number */\n", | |
".s { color: #BA2121 } /* Literal.String */\n", | |
".na { color: #7D9029 } /* Name.Attribute */\n", | |
".nb { color: #008000 } /* Name.Builtin */\n", | |
".nc { color: #0000FF; font-weight: bold } /* Name.Class */\n", | |
".no { color: #880000 } /* Name.Constant */\n", | |
".nd { color: #AA22FF } /* Name.Decorator */\n", | |
".ni { color: #999999; font-weight: bold } /* Name.Entity */\n", | |
".ne { color: #D2413A; font-weight: bold } /* Name.Exception */\n", | |
".nf { color: #0000FF } /* Name.Function */\n", | |
".nl { color: #A0A000 } /* Name.Label */\n", | |
".nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\n", | |
".nt { color: #008000; font-weight: bold } /* Name.Tag */\n", | |
".nv { color: #19177C } /* Name.Variable */\n", | |
".ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\n", | |
".w { color: #bbbbbb } /* Text.Whitespace */\n", | |
".mb { color: #666666 } /* Literal.Number.Bin */\n", | |
".mf { color: #666666 } /* Literal.Number.Float */\n", | |
".mh { color: #666666 } /* Literal.Number.Hex */\n", | |
".mi { color: #666666 } /* Literal.Number.Integer */\n", | |
".mo { color: #666666 } /* Literal.Number.Oct */\n", | |
".sa { color: #BA2121 } /* Literal.String.Affix */\n", | |
".sb { color: #BA2121 } /* Literal.String.Backtick */\n", | |
".sc { color: #BA2121 } /* Literal.String.Char */\n", | |
".dl { color: #BA2121 } /* Literal.String.Delimiter */\n", | |
".sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\n", | |
".s2 { color: #BA2121 } /* Literal.String.Double */\n", | |
".se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\n", | |
".sh { color: #BA2121 } /* Literal.String.Heredoc */\n", | |
".si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\n", | |
".sx { color: #008000 } /* Literal.String.Other */\n", | |
".sr { color: #BB6688 } /* Literal.String.Regex */\n", | |
".s1 { color: #BA2121 } /* Literal.String.Single */\n", | |
".ss { color: #19177C } /* Literal.String.Symbol */\n", | |
".bp { color: #008000 } /* Name.Builtin.Pseudo */\n", | |
".fm { color: #0000FF } /* Name.Function.Magic */\n", | |
".vc { color: #19177C } /* Name.Variable.Class */\n", | |
".vg { color: #19177C } /* Name.Variable.Global */\n", | |
".vi { color: #19177C } /* Name.Variable.Instance */\n", | |
".vm { color: #19177C } /* Name.Variable.Magic */\n", | |
".il { color: #666666 } /* Literal.Number.Integer.Long */</style><div class=\"highlight\"><pre><span></span><span class=\"k\">while</span> <span class=\"n\">cmd</span> <span class=\"o\">!=</span> <span class=\"n\">CMD_QUIT</span> <span class=\"k\">given</span> <span class=\"n\">cmd</span> <span class=\"o\">=</span> <span class=\"n\">get_command</span><span class=\"p\">(</span><span class=\"n\">msg_loop</span><span class=\"p\">,</span> <span class=\"n\">Events</span><span class=\"o\">.</span><span class=\"n\">KB</span><span class=\"p\">):</span>\n", | |
" <span class=\"k\">pass</span>\n", | |
" \n", | |
"<span class=\"k\">while</span> <span class=\"p\">(</span><span class=\"n\">cmd</span> <span class=\"p\">:</span><span class=\"o\">=</span> <span class=\"n\">get_command</span><span class=\"p\">(</span><span class=\"n\">msg_loop</span><span class=\"p\">,</span> <span class=\"n\">Events</span><span class=\"o\">.</span><span class=\"n\">KB</span><span class=\"p\">))</span> <span class=\"o\">!=</span> <span class=\"n\">CMD_QUIT</span><span class=\"p\">:</span>\n", | |
" <span class=\"k\">pass</span>\n", | |
"</pre></div>\n" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"execution_count": 111, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"output(\"\"\"while cmd != CMD_QUIT given cmd = get_command(msg_loop, Events.KB):\n", | |
" pass\n", | |
" \n", | |
"while (cmd := get_command(msg_loop, Events.KB)) != CMD_QUIT:\n", | |
" pass\"\"\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 112, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<style>.hll { background-color: #ffffcc }\n", | |
".c { color: #408080; font-style: italic } /* Comment */\n", | |
".err { border: 1px solid #FF0000 } /* Error */\n", | |
".k { color: #008000; font-weight: bold } /* Keyword */\n", | |
".o { color: #666666 } /* Operator */\n", | |
".ch { color: #408080; font-style: italic } /* Comment.Hashbang */\n", | |
".cm { color: #408080; font-style: italic } /* Comment.Multiline */\n", | |
".cp { color: #BC7A00 } /* Comment.Preproc */\n", | |
".cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */\n", | |
".c1 { color: #408080; font-style: italic } /* Comment.Single */\n", | |
".cs { color: #408080; font-style: italic } /* Comment.Special */\n", | |
".gd { color: #A00000 } /* Generic.Deleted */\n", | |
".ge { font-style: italic } /* Generic.Emph */\n", | |
".gr { color: #FF0000 } /* Generic.Error */\n", | |
".gh { color: #000080; font-weight: bold } /* Generic.Heading */\n", | |
".gi { color: #00A000 } /* Generic.Inserted */\n", | |
".go { color: #888888 } /* Generic.Output */\n", | |
".gp { color: #000080; font-weight: bold } /* Generic.Prompt */\n", | |
".gs { font-weight: bold } /* Generic.Strong */\n", | |
".gu { color: #800080; font-weight: bold } /* Generic.Subheading */\n", | |
".gt { color: #0044DD } /* Generic.Traceback */\n", | |
".kc { color: #008000; font-weight: bold } /* Keyword.Constant */\n", | |
".kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\n", | |
".kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\n", | |
".kp { color: #008000 } /* Keyword.Pseudo */\n", | |
".kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\n", | |
".kt { color: #B00040 } /* Keyword.Type */\n", | |
".m { color: #666666 } /* Literal.Number */\n", | |
".s { color: #BA2121 } /* Literal.String */\n", | |
".na { color: #7D9029 } /* Name.Attribute */\n", | |
".nb { color: #008000 } /* Name.Builtin */\n", | |
".nc { color: #0000FF; font-weight: bold } /* Name.Class */\n", | |
".no { color: #880000 } /* Name.Constant */\n", | |
".nd { color: #AA22FF } /* Name.Decorator */\n", | |
".ni { color: #999999; font-weight: bold } /* Name.Entity */\n", | |
".ne { color: #D2413A; font-weight: bold } /* Name.Exception */\n", | |
".nf { color: #0000FF } /* Name.Function */\n", | |
".nl { color: #A0A000 } /* Name.Label */\n", | |
".nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\n", | |
".nt { color: #008000; font-weight: bold } /* Name.Tag */\n", | |
".nv { color: #19177C } /* Name.Variable */\n", | |
".ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\n", | |
".w { color: #bbbbbb } /* Text.Whitespace */\n", | |
".mb { color: #666666 } /* Literal.Number.Bin */\n", | |
".mf { color: #666666 } /* Literal.Number.Float */\n", | |
".mh { color: #666666 } /* Literal.Number.Hex */\n", | |
".mi { color: #666666 } /* Literal.Number.Integer */\n", | |
".mo { color: #666666 } /* Literal.Number.Oct */\n", | |
".sa { color: #BA2121 } /* Literal.String.Affix */\n", | |
".sb { color: #BA2121 } /* Literal.String.Backtick */\n", | |
".sc { color: #BA2121 } /* Literal.String.Char */\n", | |
".dl { color: #BA2121 } /* Literal.String.Delimiter */\n", | |
".sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\n", | |
".s2 { color: #BA2121 } /* Literal.String.Double */\n", | |
".se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\n", | |
".sh { color: #BA2121 } /* Literal.String.Heredoc */\n", | |
".si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\n", | |
".sx { color: #008000 } /* Literal.String.Other */\n", | |
".sr { color: #BB6688 } /* Literal.String.Regex */\n", | |
".s1 { color: #BA2121 } /* Literal.String.Single */\n", | |
".ss { color: #19177C } /* Literal.String.Symbol */\n", | |
".bp { color: #008000 } /* Name.Builtin.Pseudo */\n", | |
".fm { color: #0000FF } /* Name.Function.Magic */\n", | |
".vc { color: #19177C } /* Name.Variable.Class */\n", | |
".vg { color: #19177C } /* Name.Variable.Global */\n", | |
".vi { color: #19177C } /* Name.Variable.Instance */\n", | |
".vm { color: #19177C } /* Name.Variable.Magic */\n", | |
".il { color: #666666 } /* Literal.Number.Integer.Long */</style><div class=\"highlight\"><pre><span></span><span class=\"k\">while</span> <span class=\"p\">(</span><span class=\"n\">node</span><span class=\"o\">.</span><span class=\"n\">x</span><span class=\"p\">,</span> <span class=\"n\">node</span><span class=\"o\">.</span><span class=\"n\">y</span><span class=\"p\">)</span> <span class=\"o\">></span> <span class=\"p\">(</span><span class=\"mf\">5.0</span><span class=\"p\">,</span> <span class=\"mf\">5.0</span><span class=\"p\">)</span> <span class=\"k\">given</span> <span class=\"n\">node</span> <span class=\"o\">=</span> <span class=\"n\">get_neighbours</span><span class=\"p\">(</span><span class=\"n\">node</span><span class=\"p\">):</span>\n", | |
" <span class=\"k\">pass</span>\n", | |
"</pre></div>\n" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"execution_count": 112, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"output(\"\"\"while (node.x, node.y) > (5.0, 5.0) given node = get_neighbours(node):\n", | |
" pass\"\"\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 114, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<style>.hll { background-color: #ffffcc }\n", | |
".c { color: #408080; font-style: italic } /* Comment */\n", | |
".err { border: 1px solid #FF0000 } /* Error */\n", | |
".k { color: #008000; font-weight: bold } /* Keyword */\n", | |
".o { color: #666666 } /* Operator */\n", | |
".ch { color: #408080; font-style: italic } /* Comment.Hashbang */\n", | |
".cm { color: #408080; font-style: italic } /* Comment.Multiline */\n", | |
".cp { color: #BC7A00 } /* Comment.Preproc */\n", | |
".cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */\n", | |
".c1 { color: #408080; font-style: italic } /* Comment.Single */\n", | |
".cs { color: #408080; font-style: italic } /* Comment.Special */\n", | |
".gd { color: #A00000 } /* Generic.Deleted */\n", | |
".ge { font-style: italic } /* Generic.Emph */\n", | |
".gr { color: #FF0000 } /* Generic.Error */\n", | |
".gh { color: #000080; font-weight: bold } /* Generic.Heading */\n", | |
".gi { color: #00A000 } /* Generic.Inserted */\n", | |
".go { color: #888888 } /* Generic.Output */\n", | |
".gp { color: #000080; font-weight: bold } /* Generic.Prompt */\n", | |
".gs { font-weight: bold } /* Generic.Strong */\n", | |
".gu { color: #800080; font-weight: bold } /* Generic.Subheading */\n", | |
".gt { color: #0044DD } /* Generic.Traceback */\n", | |
".kc { color: #008000; font-weight: bold } /* Keyword.Constant */\n", | |
".kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\n", | |
".kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\n", | |
".kp { color: #008000 } /* Keyword.Pseudo */\n", | |
".kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\n", | |
".kt { color: #B00040 } /* Keyword.Type */\n", | |
".m { color: #666666 } /* Literal.Number */\n", | |
".s { color: #BA2121 } /* Literal.String */\n", | |
".na { color: #7D9029 } /* Name.Attribute */\n", | |
".nb { color: #008000 } /* Name.Builtin */\n", | |
".nc { color: #0000FF; font-weight: bold } /* Name.Class */\n", | |
".no { color: #880000 } /* Name.Constant */\n", | |
".nd { color: #AA22FF } /* Name.Decorator */\n", | |
".ni { color: #999999; font-weight: bold } /* Name.Entity */\n", | |
".ne { color: #D2413A; font-weight: bold } /* Name.Exception */\n", | |
".nf { color: #0000FF } /* Name.Function */\n", | |
".nl { color: #A0A000 } /* Name.Label */\n", | |
".nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\n", | |
".nt { color: #008000; font-weight: bold } /* Name.Tag */\n", | |
".nv { color: #19177C } /* Name.Variable */\n", | |
".ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\n", | |
".w { color: #bbbbbb } /* Text.Whitespace */\n", | |
".mb { color: #666666 } /* Literal.Number.Bin */\n", | |
".mf { color: #666666 } /* Literal.Number.Float */\n", | |
".mh { color: #666666 } /* Literal.Number.Hex */\n", | |
".mi { color: #666666 } /* Literal.Number.Integer */\n", | |
".mo { color: #666666 } /* Literal.Number.Oct */\n", | |
".sa { color: #BA2121 } /* Literal.String.Affix */\n", | |
".sb { color: #BA2121 } /* Literal.String.Backtick */\n", | |
".sc { color: #BA2121 } /* Literal.String.Char */\n", | |
".dl { color: #BA2121 } /* Literal.String.Delimiter */\n", | |
".sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\n", | |
".s2 { color: #BA2121 } /* Literal.String.Double */\n", | |
".se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\n", | |
".sh { color: #BA2121 } /* Literal.String.Heredoc */\n", | |
".si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\n", | |
".sx { color: #008000 } /* Literal.String.Other */\n", | |
".sr { color: #BB6688 } /* Literal.String.Regex */\n", | |
".s1 { color: #BA2121 } /* Literal.String.Single */\n", | |
".ss { color: #19177C } /* Literal.String.Symbol */\n", | |
".bp { color: #008000 } /* Name.Builtin.Pseudo */\n", | |
".fm { color: #0000FF } /* Name.Function.Magic */\n", | |
".vc { color: #19177C } /* Name.Variable.Class */\n", | |
".vg { color: #19177C } /* Name.Variable.Global */\n", | |
".vi { color: #19177C } /* Name.Variable.Instance */\n", | |
".vm { color: #19177C } /* Name.Variable.Magic */\n", | |
".il { color: #666666 } /* Literal.Number.Integer.Long */</style><div class=\"highlight\"><pre><span></span><span class=\"k\">for</span> <span class=\"n\">i</span> <span class=\"ow\">in</span> <span class=\"o\">...</span><span class=\"p\">:</span>\n", | |
" <span class=\"n\">result</span> <span class=\"o\">=</span> <span class=\"n\">handler</span><span class=\"p\">(</span><span class=\"n\">match</span><span class=\"p\">,</span> <span class=\"n\">value</span><span class=\"p\">,</span> <span class=\"n\">context</span><span class=\"p\">)</span>\n", | |
" <span class=\"k\">if</span> <span class=\"n\">result</span> <span class=\"ow\">is</span> <span class=\"ow\">not</span> <span class=\"kc\">None</span><span class=\"p\">:</span>\n", | |
" <span class=\"k\">yield</span> <span class=\"n\">result</span>\n", | |
"\n", | |
"<span class=\"k\">for</span> <span class=\"n\">i</span> <span class=\"ow\">in</span> <span class=\"o\">...</span><span class=\"p\">:</span>\n", | |
" <span class=\"k\">if</span> <span class=\"p\">(</span><span class=\"n\">result</span> <span class=\"p\">:</span><span class=\"o\">=</span> <span class=\"n\">handler</span><span class=\"p\">(</span><span class=\"n\">match</span><span class=\"p\">,</span> <span class=\"n\">value</span><span class=\"p\">,</span> <span class=\"n\">context</span><span class=\"p\">))</span> <span class=\"ow\">is</span> <span class=\"ow\">not</span> <span class=\"kc\">None</span><span class=\"p\">:</span>\n", | |
" <span class=\"k\">yield</span> <span class=\"n\">result</span>\n", | |
" \n", | |
"<span class=\"k\">for</span> <span class=\"n\">i</span> <span class=\"ow\">in</span> <span class=\"o\">...</span><span class=\"p\">:</span>\n", | |
" <span class=\"k\">if</span> <span class=\"n\">result</span> <span class=\"ow\">is</span> <span class=\"ow\">not</span> <span class=\"kc\">None</span> <span class=\"k\">given</span> <span class=\"n\">result</span> <span class=\"o\">=</span> <span class=\"n\">handler</span><span class=\"p\">(</span><span class=\"n\">match</span><span class=\"p\">,</span> <span class=\"n\">value</span><span class=\"p\">,</span> <span class=\"n\">context</span><span class=\"p\">):</span>\n", | |
" <span class=\"k\">yield</span> <span class=\"n\">result</span>\n", | |
"</pre></div>\n" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"execution_count": 114, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"output(\"\"\"for i in ...:\n", | |
" result = handler(match, value, context)\n", | |
" if result is not None:\n", | |
" yield result\n", | |
"\n", | |
"for i in ...:\n", | |
" if (result := handler(match, value, context)) is not None:\n", | |
" yield result\n", | |
" \n", | |
"for i in ...:\n", | |
" if result is not None given result = handler(match, value, context):\n", | |
" yield result\"\"\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 115, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<style>.hll { background-color: #ffffcc }\n", | |
".c { color: #408080; font-style: italic } /* Comment */\n", | |
".err { border: 1px solid #FF0000 } /* Error */\n", | |
".k { color: #008000; font-weight: bold } /* Keyword */\n", | |
".o { color: #666666 } /* Operator */\n", | |
".ch { color: #408080; font-style: italic } /* Comment.Hashbang */\n", | |
".cm { color: #408080; font-style: italic } /* Comment.Multiline */\n", | |
".cp { color: #BC7A00 } /* Comment.Preproc */\n", | |
".cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */\n", | |
".c1 { color: #408080; font-style: italic } /* Comment.Single */\n", | |
".cs { color: #408080; font-style: italic } /* Comment.Special */\n", | |
".gd { color: #A00000 } /* Generic.Deleted */\n", | |
".ge { font-style: italic } /* Generic.Emph */\n", | |
".gr { color: #FF0000 } /* Generic.Error */\n", | |
".gh { color: #000080; font-weight: bold } /* Generic.Heading */\n", | |
".gi { color: #00A000 } /* Generic.Inserted */\n", | |
".go { color: #888888 } /* Generic.Output */\n", | |
".gp { color: #000080; font-weight: bold } /* Generic.Prompt */\n", | |
".gs { font-weight: bold } /* Generic.Strong */\n", | |
".gu { color: #800080; font-weight: bold } /* Generic.Subheading */\n", | |
".gt { color: #0044DD } /* Generic.Traceback */\n", | |
".kc { color: #008000; font-weight: bold } /* Keyword.Constant */\n", | |
".kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\n", | |
".kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\n", | |
".kp { color: #008000 } /* Keyword.Pseudo */\n", | |
".kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\n", | |
".kt { color: #B00040 } /* Keyword.Type */\n", | |
".m { color: #666666 } /* Literal.Number */\n", | |
".s { color: #BA2121 } /* Literal.String */\n", | |
".na { color: #7D9029 } /* Name.Attribute */\n", | |
".nb { color: #008000 } /* Name.Builtin */\n", | |
".nc { color: #0000FF; font-weight: bold } /* Name.Class */\n", | |
".no { color: #880000 } /* Name.Constant */\n", | |
".nd { color: #AA22FF } /* Name.Decorator */\n", | |
".ni { color: #999999; font-weight: bold } /* Name.Entity */\n", | |
".ne { color: #D2413A; font-weight: bold } /* Name.Exception */\n", | |
".nf { color: #0000FF } /* Name.Function */\n", | |
".nl { color: #A0A000 } /* Name.Label */\n", | |
".nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\n", | |
".nt { color: #008000; font-weight: bold } /* Name.Tag */\n", | |
".nv { color: #19177C } /* Name.Variable */\n", | |
".ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\n", | |
".w { color: #bbbbbb } /* Text.Whitespace */\n", | |
".mb { color: #666666 } /* Literal.Number.Bin */\n", | |
".mf { color: #666666 } /* Literal.Number.Float */\n", | |
".mh { color: #666666 } /* Literal.Number.Hex */\n", | |
".mi { color: #666666 } /* Literal.Number.Integer */\n", | |
".mo { color: #666666 } /* Literal.Number.Oct */\n", | |
".sa { color: #BA2121 } /* Literal.String.Affix */\n", | |
".sb { color: #BA2121 } /* Literal.String.Backtick */\n", | |
".sc { color: #BA2121 } /* Literal.String.Char */\n", | |
".dl { color: #BA2121 } /* Literal.String.Delimiter */\n", | |
".sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\n", | |
".s2 { color: #BA2121 } /* Literal.String.Double */\n", | |
".se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\n", | |
".sh { color: #BA2121 } /* Literal.String.Heredoc */\n", | |
".si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\n", | |
".sx { color: #008000 } /* Literal.String.Other */\n", | |
".sr { color: #BB6688 } /* Literal.String.Regex */\n", | |
".s1 { color: #BA2121 } /* Literal.String.Single */\n", | |
".ss { color: #19177C } /* Literal.String.Symbol */\n", | |
".bp { color: #008000 } /* Name.Builtin.Pseudo */\n", | |
".fm { color: #0000FF } /* Name.Function.Magic */\n", | |
".vc { color: #19177C } /* Name.Variable.Class */\n", | |
".vg { color: #19177C } /* Name.Variable.Global */\n", | |
".vi { color: #19177C } /* Name.Variable.Instance */\n", | |
".vm { color: #19177C } /* Name.Variable.Magic */\n", | |
".il { color: #666666 } /* Literal.Number.Integer.Long */</style><div class=\"highlight\"><pre><span></span><span class=\"k\">while</span> <span class=\"n\">parent</span> <span class=\"ow\">in</span> <span class=\"n\">node_to_parent</span> <span class=\"k\">given</span> <span class=\"n\">parent</span> <span class=\"o\">=</span> <span class=\"n\">node_to_parent</span><span class=\"p\">[</span><span class=\"n\">node</span><span class=\"p\">]:</span>\n", | |
" <span class=\"n\">result</span><span class=\"o\">.</span><span class=\"n\">appendleft</span><span class=\"p\">(</span><span class=\"n\">parent</span><span class=\"p\">)</span>\n", | |
" \n", | |
"<span class=\"k\">while</span> <span class=\"p\">(</span><span class=\"n\">parent</span> <span class=\"p\">:</span><span class=\"o\">=</span> <span class=\"n\">node_to_parent</span><span class=\"p\">[</span><span class=\"n\">node</span><span class=\"p\">])</span> <span class=\"ow\">in</span> <span class=\"n\">node_to_parent</span><span class=\"p\">:</span>\n", | |
" <span class=\"n\">result</span><span class=\"o\">.</span><span class=\"n\">appendleft</span><span class=\"p\">(</span><span class=\"n\">parent</span><span class=\"p\">)</span>\n", | |
"</pre></div>\n" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"execution_count": 115, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"output(\"\"\"while parent in node_to_parent given parent = node_to_parent[node]:\n", | |
" result.appendleft(parent)\n", | |
" \n", | |
"while (parent := node_to_parent[node]) in node_to_parent:\n", | |
" result.appendleft(parent)\"\"\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 116, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<style>.hll { background-color: #ffffcc }\n", | |
".c { color: #408080; font-style: italic } /* Comment */\n", | |
".err { border: 1px solid #FF0000 } /* Error */\n", | |
".k { color: #008000; font-weight: bold } /* Keyword */\n", | |
".o { color: #666666 } /* Operator */\n", | |
".ch { color: #408080; font-style: italic } /* Comment.Hashbang */\n", | |
".cm { color: #408080; font-style: italic } /* Comment.Multiline */\n", | |
".cp { color: #BC7A00 } /* Comment.Preproc */\n", | |
".cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */\n", | |
".c1 { color: #408080; font-style: italic } /* Comment.Single */\n", | |
".cs { color: #408080; font-style: italic } /* Comment.Special */\n", | |
".gd { color: #A00000 } /* Generic.Deleted */\n", | |
".ge { font-style: italic } /* Generic.Emph */\n", | |
".gr { color: #FF0000 } /* Generic.Error */\n", | |
".gh { color: #000080; font-weight: bold } /* Generic.Heading */\n", | |
".gi { color: #00A000 } /* Generic.Inserted */\n", | |
".go { color: #888888 } /* Generic.Output */\n", | |
".gp { color: #000080; font-weight: bold } /* Generic.Prompt */\n", | |
".gs { font-weight: bold } /* Generic.Strong */\n", | |
".gu { color: #800080; font-weight: bold } /* Generic.Subheading */\n", | |
".gt { color: #0044DD } /* Generic.Traceback */\n", | |
".kc { color: #008000; font-weight: bold } /* Keyword.Constant */\n", | |
".kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\n", | |
".kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\n", | |
".kp { color: #008000 } /* Keyword.Pseudo */\n", | |
".kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\n", | |
".kt { color: #B00040 } /* Keyword.Type */\n", | |
".m { color: #666666 } /* Literal.Number */\n", | |
".s { color: #BA2121 } /* Literal.String */\n", | |
".na { color: #7D9029 } /* Name.Attribute */\n", | |
".nb { color: #008000 } /* Name.Builtin */\n", | |
".nc { color: #0000FF; font-weight: bold } /* Name.Class */\n", | |
".no { color: #880000 } /* Name.Constant */\n", | |
".nd { color: #AA22FF } /* Name.Decorator */\n", | |
".ni { color: #999999; font-weight: bold } /* Name.Entity */\n", | |
".ne { color: #D2413A; font-weight: bold } /* Name.Exception */\n", | |
".nf { color: #0000FF } /* Name.Function */\n", | |
".nl { color: #A0A000 } /* Name.Label */\n", | |
".nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\n", | |
".nt { color: #008000; font-weight: bold } /* Name.Tag */\n", | |
".nv { color: #19177C } /* Name.Variable */\n", | |
".ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\n", | |
".w { color: #bbbbbb } /* Text.Whitespace */\n", | |
".mb { color: #666666 } /* Literal.Number.Bin */\n", | |
".mf { color: #666666 } /* Literal.Number.Float */\n", | |
".mh { color: #666666 } /* Literal.Number.Hex */\n", | |
".mi { color: #666666 } /* Literal.Number.Integer */\n", | |
".mo { color: #666666 } /* Literal.Number.Oct */\n", | |
".sa { color: #BA2121 } /* Literal.String.Affix */\n", | |
".sb { color: #BA2121 } /* Literal.String.Backtick */\n", | |
".sc { color: #BA2121 } /* Literal.String.Char */\n", | |
".dl { color: #BA2121 } /* Literal.String.Delimiter */\n", | |
".sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\n", | |
".s2 { color: #BA2121 } /* Literal.String.Double */\n", | |
".se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\n", | |
".sh { color: #BA2121 } /* Literal.String.Heredoc */\n", | |
".si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\n", | |
".sx { color: #008000 } /* Literal.String.Other */\n", | |
".sr { color: #BB6688 } /* Literal.String.Regex */\n", | |
".s1 { color: #BA2121 } /* Literal.String.Single */\n", | |
".ss { color: #19177C } /* Literal.String.Symbol */\n", | |
".bp { color: #008000 } /* Name.Builtin.Pseudo */\n", | |
".fm { color: #0000FF } /* Name.Function.Magic */\n", | |
".vc { color: #19177C } /* Name.Variable.Class */\n", | |
".vg { color: #19177C } /* Name.Variable.Global */\n", | |
".vi { color: #19177C } /* Name.Variable.Instance */\n", | |
".vm { color: #19177C } /* Name.Variable.Magic */\n", | |
".il { color: #666666 } /* Literal.Number.Integer.Long */</style><div class=\"highlight\"><pre><span></span><span class=\"k\">while</span> <span class=\"n\">is_invalid</span><span class=\"p\">(</span><span class=\"n\">username</span><span class=\"p\">)</span> <span class=\"k\">given</span> <span class=\"n\">username</span> <span class=\"o\">=</span> <span class=\"nb\">input</span><span class=\"p\">(</span><span class=\"s2\">"Username:"</span><span class=\"p\">):</span>\n", | |
" <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"s2\">"Invalid entry, try again"</span><span class=\"p\">)</span>\n", | |
"</pre></div>\n" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"execution_count": 116, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"output(\"\"\"while is_invalid(username) given username = input(\"Username:\"):\n", | |
" print(\"Invalid entry, try again\")\"\"\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 117, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<style>.hll { background-color: #ffffcc }\n", | |
".c { color: #408080; font-style: italic } /* Comment */\n", | |
".err { border: 1px solid #FF0000 } /* Error */\n", | |
".k { color: #008000; font-weight: bold } /* Keyword */\n", | |
".o { color: #666666 } /* Operator */\n", | |
".ch { color: #408080; font-style: italic } /* Comment.Hashbang */\n", | |
".cm { color: #408080; font-style: italic } /* Comment.Multiline */\n", | |
".cp { color: #BC7A00 } /* Comment.Preproc */\n", | |
".cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */\n", | |
".c1 { color: #408080; font-style: italic } /* Comment.Single */\n", | |
".cs { color: #408080; font-style: italic } /* Comment.Special */\n", | |
".gd { color: #A00000 } /* Generic.Deleted */\n", | |
".ge { font-style: italic } /* Generic.Emph */\n", | |
".gr { color: #FF0000 } /* Generic.Error */\n", | |
".gh { color: #000080; font-weight: bold } /* Generic.Heading */\n", | |
".gi { color: #00A000 } /* Generic.Inserted */\n", | |
".go { color: #888888 } /* Generic.Output */\n", | |
".gp { color: #000080; font-weight: bold } /* Generic.Prompt */\n", | |
".gs { font-weight: bold } /* Generic.Strong */\n", | |
".gu { color: #800080; font-weight: bold } /* Generic.Subheading */\n", | |
".gt { color: #0044DD } /* Generic.Traceback */\n", | |
".kc { color: #008000; font-weight: bold } /* Keyword.Constant */\n", | |
".kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\n", | |
".kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\n", | |
".kp { color: #008000 } /* Keyword.Pseudo */\n", | |
".kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\n", | |
".kt { color: #B00040 } /* Keyword.Type */\n", | |
".m { color: #666666 } /* Literal.Number */\n", | |
".s { color: #BA2121 } /* Literal.String */\n", | |
".na { color: #7D9029 } /* Name.Attribute */\n", | |
".nb { color: #008000 } /* Name.Builtin */\n", | |
".nc { color: #0000FF; font-weight: bold } /* Name.Class */\n", | |
".no { color: #880000 } /* Name.Constant */\n", | |
".nd { color: #AA22FF } /* Name.Decorator */\n", | |
".ni { color: #999999; font-weight: bold } /* Name.Entity */\n", | |
".ne { color: #D2413A; font-weight: bold } /* Name.Exception */\n", | |
".nf { color: #0000FF } /* Name.Function */\n", | |
".nl { color: #A0A000 } /* Name.Label */\n", | |
".nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\n", | |
".nt { color: #008000; font-weight: bold } /* Name.Tag */\n", | |
".nv { color: #19177C } /* Name.Variable */\n", | |
".ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\n", | |
".w { color: #bbbbbb } /* Text.Whitespace */\n", | |
".mb { color: #666666 } /* Literal.Number.Bin */\n", | |
".mf { color: #666666 } /* Literal.Number.Float */\n", | |
".mh { color: #666666 } /* Literal.Number.Hex */\n", | |
".mi { color: #666666 } /* Literal.Number.Integer */\n", | |
".mo { color: #666666 } /* Literal.Number.Oct */\n", | |
".sa { color: #BA2121 } /* Literal.String.Affix */\n", | |
".sb { color: #BA2121 } /* Literal.String.Backtick */\n", | |
".sc { color: #BA2121 } /* Literal.String.Char */\n", | |
".dl { color: #BA2121 } /* Literal.String.Delimiter */\n", | |
".sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\n", | |
".s2 { color: #BA2121 } /* Literal.String.Double */\n", | |
".se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\n", | |
".sh { color: #BA2121 } /* Literal.String.Heredoc */\n", | |
".si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\n", | |
".sx { color: #008000 } /* Literal.String.Other */\n", | |
".sr { color: #BB6688 } /* Literal.String.Regex */\n", | |
".s1 { color: #BA2121 } /* Literal.String.Single */\n", | |
".ss { color: #19177C } /* Literal.String.Symbol */\n", | |
".bp { color: #008000 } /* Name.Builtin.Pseudo */\n", | |
".fm { color: #0000FF } /* Name.Function.Magic */\n", | |
".vc { color: #19177C } /* Name.Variable.Class */\n", | |
".vg { color: #19177C } /* Name.Variable.Global */\n", | |
".vi { color: #19177C } /* Name.Variable.Instance */\n", | |
".vm { color: #19177C } /* Name.Variable.Magic */\n", | |
".il { color: #666666 } /* Literal.Number.Integer.Long */</style><div class=\"highlight\"><pre><span></span><span class=\"k\">while</span> <span class=\"n\">is_invalid</span><span class=\"p\">(</span><span class=\"n\">username</span><span class=\"p\">:</span><span class=\"o\">=</span><span class=\"nb\">input</span><span class=\"p\">(</span><span class=\"s2\">"Username:"</span><span class=\"p\">)):</span>\n", | |
" <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"s2\">"Invalid entry, try again"</span><span class=\"p\">)</span>\n", | |
"</pre></div>\n" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"execution_count": 117, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"output(\"\"\"while is_invalid(username:=input(\"Username:\")):\n", | |
" print(\"Invalid entry, try again\")\"\"\")" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Goals" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 118, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<style>.hll { background-color: #ffffcc }\n", | |
".c { color: #408080; font-style: italic } /* Comment */\n", | |
".err { border: 1px solid #FF0000 } /* Error */\n", | |
".k { color: #008000; font-weight: bold } /* Keyword */\n", | |
".o { color: #666666 } /* Operator */\n", | |
".ch { color: #408080; font-style: italic } /* Comment.Hashbang */\n", | |
".cm { color: #408080; font-style: italic } /* Comment.Multiline */\n", | |
".cp { color: #BC7A00 } /* Comment.Preproc */\n", | |
".cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */\n", | |
".c1 { color: #408080; font-style: italic } /* Comment.Single */\n", | |
".cs { color: #408080; font-style: italic } /* Comment.Special */\n", | |
".gd { color: #A00000 } /* Generic.Deleted */\n", | |
".ge { font-style: italic } /* Generic.Emph */\n", | |
".gr { color: #FF0000 } /* Generic.Error */\n", | |
".gh { color: #000080; font-weight: bold } /* Generic.Heading */\n", | |
".gi { color: #00A000 } /* Generic.Inserted */\n", | |
".go { color: #888888 } /* Generic.Output */\n", | |
".gp { color: #000080; font-weight: bold } /* Generic.Prompt */\n", | |
".gs { font-weight: bold } /* Generic.Strong */\n", | |
".gu { color: #800080; font-weight: bold } /* Generic.Subheading */\n", | |
".gt { color: #0044DD } /* Generic.Traceback */\n", | |
".kc { color: #008000; font-weight: bold } /* Keyword.Constant */\n", | |
".kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\n", | |
".kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\n", | |
".kp { color: #008000 } /* Keyword.Pseudo */\n", | |
".kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\n", | |
".kt { color: #B00040 } /* Keyword.Type */\n", | |
".m { color: #666666 } /* Literal.Number */\n", | |
".s { color: #BA2121 } /* Literal.String */\n", | |
".na { color: #7D9029 } /* Name.Attribute */\n", | |
".nb { color: #008000 } /* Name.Builtin */\n", | |
".nc { color: #0000FF; font-weight: bold } /* Name.Class */\n", | |
".no { color: #880000 } /* Name.Constant */\n", | |
".nd { color: #AA22FF } /* Name.Decorator */\n", | |
".ni { color: #999999; font-weight: bold } /* Name.Entity */\n", | |
".ne { color: #D2413A; font-weight: bold } /* Name.Exception */\n", | |
".nf { color: #0000FF } /* Name.Function */\n", | |
".nl { color: #A0A000 } /* Name.Label */\n", | |
".nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\n", | |
".nt { color: #008000; font-weight: bold } /* Name.Tag */\n", | |
".nv { color: #19177C } /* Name.Variable */\n", | |
".ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\n", | |
".w { color: #bbbbbb } /* Text.Whitespace */\n", | |
".mb { color: #666666 } /* Literal.Number.Bin */\n", | |
".mf { color: #666666 } /* Literal.Number.Float */\n", | |
".mh { color: #666666 } /* Literal.Number.Hex */\n", | |
".mi { color: #666666 } /* Literal.Number.Integer */\n", | |
".mo { color: #666666 } /* Literal.Number.Oct */\n", | |
".sa { color: #BA2121 } /* Literal.String.Affix */\n", | |
".sb { color: #BA2121 } /* Literal.String.Backtick */\n", | |
".sc { color: #BA2121 } /* Literal.String.Char */\n", | |
".dl { color: #BA2121 } /* Literal.String.Delimiter */\n", | |
".sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\n", | |
".s2 { color: #BA2121 } /* Literal.String.Double */\n", | |
".se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\n", | |
".sh { color: #BA2121 } /* Literal.String.Heredoc */\n", | |
".si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\n", | |
".sx { color: #008000 } /* Literal.String.Other */\n", | |
".sr { color: #BB6688 } /* Literal.String.Regex */\n", | |
".s1 { color: #BA2121 } /* Literal.String.Single */\n", | |
".ss { color: #19177C } /* Literal.String.Symbol */\n", | |
".bp { color: #008000 } /* Name.Builtin.Pseudo */\n", | |
".fm { color: #0000FF } /* Name.Function.Magic */\n", | |
".vc { color: #19177C } /* Name.Variable.Class */\n", | |
".vg { color: #19177C } /* Name.Variable.Global */\n", | |
".vi { color: #19177C } /* Name.Variable.Instance */\n", | |
".vm { color: #19177C } /* Name.Variable.Magic */\n", | |
".il { color: #666666 } /* Literal.Number.Integer.Long */</style><div class=\"highlight\"><pre><span></span><span class=\"n\">goal_relevance_pairs</span> <span class=\"o\">=</span> <span class=\"p\">[(</span><span class=\"n\">r</span><span class=\"p\">,</span> <span class=\"n\">g</span><span class=\"p\">)</span> <span class=\"k\">for</span> <span class=\"n\">g</span> <span class=\"ow\">in</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">goals</span> <span class=\"k\">if</span> <span class=\"n\">r</span> <span class=\"o\">></span> <span class=\"mi\">0</span> <span class=\"k\">given</span> <span class=\"n\">r</span> <span class=\"o\">=</span> <span class=\"n\">g</span><span class=\"o\">.</span><span class=\"n\">get_relevance</span><span class=\"p\">(</span><span class=\"n\">world_state</span><span class=\"p\">)]</span> \n", | |
"</pre></div>\n" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"execution_count": 118, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"output(\"\"\"goal_relevance_pairs = [(r, g) for g in self.goals if r > 0 given r = g.get_relevance(world_state)] \"\"\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 119, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<style>.hll { background-color: #ffffcc }\n", | |
".c { color: #408080; font-style: italic } /* Comment */\n", | |
".err { border: 1px solid #FF0000 } /* Error */\n", | |
".k { color: #008000; font-weight: bold } /* Keyword */\n", | |
".o { color: #666666 } /* Operator */\n", | |
".ch { color: #408080; font-style: italic } /* Comment.Hashbang */\n", | |
".cm { color: #408080; font-style: italic } /* Comment.Multiline */\n", | |
".cp { color: #BC7A00 } /* Comment.Preproc */\n", | |
".cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */\n", | |
".c1 { color: #408080; font-style: italic } /* Comment.Single */\n", | |
".cs { color: #408080; font-style: italic } /* Comment.Special */\n", | |
".gd { color: #A00000 } /* Generic.Deleted */\n", | |
".ge { font-style: italic } /* Generic.Emph */\n", | |
".gr { color: #FF0000 } /* Generic.Error */\n", | |
".gh { color: #000080; font-weight: bold } /* Generic.Heading */\n", | |
".gi { color: #00A000 } /* Generic.Inserted */\n", | |
".go { color: #888888 } /* Generic.Output */\n", | |
".gp { color: #000080; font-weight: bold } /* Generic.Prompt */\n", | |
".gs { font-weight: bold } /* Generic.Strong */\n", | |
".gu { color: #800080; font-weight: bold } /* Generic.Subheading */\n", | |
".gt { color: #0044DD } /* Generic.Traceback */\n", | |
".kc { color: #008000; font-weight: bold } /* Keyword.Constant */\n", | |
".kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\n", | |
".kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\n", | |
".kp { color: #008000 } /* Keyword.Pseudo */\n", | |
".kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\n", | |
".kt { color: #B00040 } /* Keyword.Type */\n", | |
".m { color: #666666 } /* Literal.Number */\n", | |
".s { color: #BA2121 } /* Literal.String */\n", | |
".na { color: #7D9029 } /* Name.Attribute */\n", | |
".nb { color: #008000 } /* Name.Builtin */\n", | |
".nc { color: #0000FF; font-weight: bold } /* Name.Class */\n", | |
".no { color: #880000 } /* Name.Constant */\n", | |
".nd { color: #AA22FF } /* Name.Decorator */\n", | |
".ni { color: #999999; font-weight: bold } /* Name.Entity */\n", | |
".ne { color: #D2413A; font-weight: bold } /* Name.Exception */\n", | |
".nf { color: #0000FF } /* Name.Function */\n", | |
".nl { color: #A0A000 } /* Name.Label */\n", | |
".nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\n", | |
".nt { color: #008000; font-weight: bold } /* Name.Tag */\n", | |
".nv { color: #19177C } /* Name.Variable */\n", | |
".ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\n", | |
".w { color: #bbbbbb } /* Text.Whitespace */\n", | |
".mb { color: #666666 } /* Literal.Number.Bin */\n", | |
".mf { color: #666666 } /* Literal.Number.Float */\n", | |
".mh { color: #666666 } /* Literal.Number.Hex */\n", | |
".mi { color: #666666 } /* Literal.Number.Integer */\n", | |
".mo { color: #666666 } /* Literal.Number.Oct */\n", | |
".sa { color: #BA2121 } /* Literal.String.Affix */\n", | |
".sb { color: #BA2121 } /* Literal.String.Backtick */\n", | |
".sc { color: #BA2121 } /* Literal.String.Char */\n", | |
".dl { color: #BA2121 } /* Literal.String.Delimiter */\n", | |
".sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\n", | |
".s2 { color: #BA2121 } /* Literal.String.Double */\n", | |
".se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\n", | |
".sh { color: #BA2121 } /* Literal.String.Heredoc */\n", | |
".si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\n", | |
".sx { color: #008000 } /* Literal.String.Other */\n", | |
".sr { color: #BB6688 } /* Literal.String.Regex */\n", | |
".s1 { color: #BA2121 } /* Literal.String.Single */\n", | |
".ss { color: #19177C } /* Literal.String.Symbol */\n", | |
".bp { color: #008000 } /* Name.Builtin.Pseudo */\n", | |
".fm { color: #0000FF } /* Name.Function.Magic */\n", | |
".vc { color: #19177C } /* Name.Variable.Class */\n", | |
".vg { color: #19177C } /* Name.Variable.Global */\n", | |
".vi { color: #19177C } /* Name.Variable.Instance */\n", | |
".vm { color: #19177C } /* Name.Variable.Magic */\n", | |
".il { color: #666666 } /* Literal.Number.Integer.Long */</style><div class=\"highlight\"><pre><span></span><span class=\"n\">goal_relevance_pairs</span> <span class=\"o\">=</span> <span class=\"p\">[(</span><span class=\"n\">r</span><span class=\"p\">,</span> <span class=\"n\">g</span><span class=\"p\">)</span> <span class=\"k\">for</span> <span class=\"n\">g</span> <span class=\"ow\">in</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">goals</span> <span class=\"k\">if</span> <span class=\"p\">(</span><span class=\"n\">r</span><span class=\"p\">:</span><span class=\"o\">=</span><span class=\"n\">g</span><span class=\"o\">.</span><span class=\"n\">get_relevance</span><span class=\"p\">(</span><span class=\"n\">world_state</span><span class=\"p\">))</span> <span class=\"o\">></span> <span class=\"mi\">0</span><span class=\"p\">]</span>\n", | |
"</pre></div>\n" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"execution_count": 119, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"output(\"\"\"goal_relevance_pairs = [(r, g) for g in self.goals if (r:=g.get_relevance(world_state)) > 0]\"\"\")" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.6.3" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment