✨
This commit is contained in:
@ -2,7 +2,7 @@ hello|
|
|||||||
set do random<1;128;> -> r|
|
set do random<1;128;> -> r|
|
||||||
set 0 -> guess|
|
set 0 -> guess|
|
||||||
do [
|
do [
|
||||||
set do input<'guess: ';> -> guess|
|
set do int<do input<'guess: ';>;> -> guess|
|
||||||
do do print<'too high';> if variable guess > variable r|
|
do do print<'too high';> if variable guess > variable r|
|
||||||
do do print<'too low';> if variable guess < variable r|
|
do do print<'too low';> if variable guess < variable r|
|
||||||
do do print<'correct!';> if variable guess = variable r|
|
do do print<'correct!';> if variable guess = variable r|
|
||||||
|
@ -16,17 +16,48 @@ define split<1> as [
|
|||||||
return variable list|
|
return variable list|
|
||||||
]|
|
]|
|
||||||
|
|
||||||
define calc<1> as [
|
define is_number<1> as [
|
||||||
|
set '0123456789' -> numbers|
|
||||||
|
set 0 -> i|
|
||||||
|
do [
|
||||||
|
set 0 -> j|
|
||||||
|
do [
|
||||||
|
do skip else return false if argument #1{variable i} = variable numbers{variable j}|
|
||||||
|
set variable j + 1 -> j|
|
||||||
|
] until variable j = do len<variable numbers;>|
|
||||||
|
set variable i + 1 -> i|
|
||||||
|
] until variable i = do len<argument #1;>|
|
||||||
|
return true|
|
||||||
|
]|
|
||||||
|
|
||||||
|
define calc<3> as [
|
||||||
|
do return argument #2 + argument #3 if argument #1 = '+'|
|
||||||
|
return 'error'|
|
||||||
|
]|
|
||||||
|
|
||||||
|
define unfold<1> as [
|
||||||
|
do return 'error' if do len<argument #1;> = 0|
|
||||||
|
|
||||||
set {} -> middle|
|
set {} -> middle|
|
||||||
set 1 -> i|
|
set 1 -> i|
|
||||||
do [
|
do [
|
||||||
set variable middle + {argument #1{variable i};} -> middle|
|
set variable middle + {argument #1{variable i};} -> middle|
|
||||||
set variable i + 1 -> i|
|
set variable i + 1 -> i|
|
||||||
] until variable i = do len<argument #1;> - 1|
|
] until variable i = do len<argument #1;> - 1|
|
||||||
return variable middle|
|
|
||||||
|
do return 'error' if do len<variable middle;> = 0|
|
||||||
|
|
||||||
|
do [
|
||||||
|
set variable middle{0} -> middle|
|
||||||
|
do set do int<variable middle;> -> n1 else return 'error' if do "is_number"<variable middle;>|
|
||||||
|
] else set do "unfold"<variable middle;> -> n1 if do len<variable middle;> = 1|
|
||||||
|
|
||||||
|
do set do int<argument #1{do len<argument #1;>-1};> -> n2 else return 'error' if do "is_number"<argument #1{do len<argument #1;>-1};>|
|
||||||
|
|
||||||
|
return do "calc"<argument #1{0}; variable n1; variable n2;>|
|
||||||
]|
|
]|
|
||||||
|
|
||||||
set do input<':';> -> x|
|
set do input<':';> -> x|
|
||||||
set do "split"<variable x;> -> list|
|
set do "split"<variable x;> -> list|
|
||||||
do print<do "calc"<variable list;>;>|
|
do print<do "unfold"<variable list;>;>|
|
||||||
goodbye|
|
goodbye|
|
@ -189,7 +189,7 @@ class Builtin(Command):
|
|||||||
if isinstance(result, str) or isinstance(result, int) or isinstance(result, float):
|
if isinstance(result, str) or isinstance(result, int) or isinstance(result, float):
|
||||||
prints.append(str(result))
|
prints.append(str(result))
|
||||||
elif isinstance(result, list):
|
elif isinstance(result, list):
|
||||||
result = f"{'{'}{''.join([str(i)+";" for i in result])}{'}'}"
|
result = f"{'{'}{''.join([str(i)+';' for i in result])}{'}'}"
|
||||||
prints.append(str(result))
|
prints.append(str(result))
|
||||||
else:
|
else:
|
||||||
print(f"C003: Incorrect type {type(result)} for builtin print")
|
print(f"C003: Incorrect type {type(result)} for builtin print")
|
||||||
|
Reference in New Issue
Block a user