diff --git a/app_functions.py b/app_functions.py index 6894b7677e52334e927dc7b9b570b764d22370ee..236022c24db584a373c484a5714ec245a3088fe3 100644 --- a/app_functions.py +++ b/app_functions.py @@ -25,10 +25,10 @@ def pair(A,B): return new_abs(f,new_app(new_app(f,A),B)) def getFirstFromPair(p): - return beta_reduction_totale(new_app(p,boolean[True])) + return beta_reduction_totale(new_app(p,boolean[True]),None) def getSecondFromPair(p): - return beta_reduction_totale(new_app(p,boolean[False])) + return beta_reduction_totale(new_app(p,boolean[False]),None) def dec_to_lambda_relative_integers(number): if number >= 0: @@ -36,16 +36,24 @@ def dec_to_lambda_relative_integers(number): return pair(boolean[False], dec_to_church(number)) def succ(n): - return beta_reduction_totale(new_abs(f,new_abs(x,new_app(new_app(n,f), new_app(f,x))))) + return beta_reduction_totale(new_abs(f,new_abs(x,new_app(new_app(n,f), new_app(f,x)))),None,False) def adder(n,m): - return beta_reduction_totale(new_app(new_app(m,succs),n)) + return beta_reduction_totale(new_app(new_app(m,succs),n),None) def power(n,m):# retourne n puiss m - return beta_reduction_totale(new_app(m,n)) + return beta_reduction_totale(new_app(m,n),None) def multiplication(n,m): - return beta_reduction_totale(new_abs(f,new_abs(x,new_app(m,new_app(n,f))))) + return beta_reduction_totale(new_abs(f,new_abs(x,new_app(m,new_app(n,f)))),None) def is_zero(n): - return beta_reduction_totale(new_app(new_app(n,new_abs(x,boolean[False])),boolean[True])) + return beta_reduction_totale(new_app(new_app(n,new_abs(x,boolean[False])),boolean[True]),None) + + +j= new_abs(x,new_abs(y,new_app(new_app(is_zero(new_app(x,dec_to_church(1))),y),succ(new_app(x,y))))) + +def predec(n): + return beta_reduction_totale(new_app(new_app(new_app(n,j),new_abs(z,dec_to_church(0))),dec_to_church(0)),None,False) + +print((predec(dec_to_church(2)))) \ No newline at end of file diff --git a/figures/alligator_brown.png b/figures/alligator_brown.png new file mode 100644 index 0000000000000000000000000000000000000000..65b8e7eac3a27403b755e1edc8f3d27b67e5fc3f Binary files /dev/null and b/figures/alligator_brown.png differ diff --git a/figures/alligator_oceanblue.png b/figures/alligator_oceanblue.png new file mode 100644 index 0000000000000000000000000000000000000000..ebb43d6498eba6699e5ffa4c76779223b830c50b Binary files /dev/null and b/figures/alligator_oceanblue.png differ diff --git a/figures/egg_brown.png b/figures/egg_brown.png new file mode 100644 index 0000000000000000000000000000000000000000..994d079e30071a8ff917c288e6609f83ee9cf69a Binary files /dev/null and b/figures/egg_brown.png differ diff --git a/figures/egg_oceanblue.png b/figures/egg_oceanblue.png new file mode 100644 index 0000000000000000000000000000000000000000..ff99118ad1536a3dc380943876c31f041a57b351 Binary files /dev/null and b/figures/egg_oceanblue.png differ diff --git a/figures/egg_yellow.png b/figures/egg_yellow.png index 8f07b847f2eee6f5272c20b0f83cafcb819c4140..8fca842ee0d4faa70af3f8af4292ee48bf7db284 100644 Binary files a/figures/egg_yellow.png and b/figures/egg_yellow.png differ diff --git a/figures/space.png b/figures/space.png deleted file mode 100644 index 1ce0cb77aaf0311c4071aaa86c5882ef81d22d6e..0000000000000000000000000000000000000000 Binary files a/figures/space.png and /dev/null differ diff --git a/logic.py b/logic.py index ea5c1b544b24884e1ac5231e891bd2590990eb2c..bdcea21cf0f487788ab4ed726b8741d539f5dc67 100644 --- a/logic.py +++ b/logic.py @@ -201,14 +201,19 @@ def captureImage(terme, path): image_maker.saveImage(image_maker.createImage(terme),str(image_counter),path) image_counter += 1 -def beta_reduction_totale(terme, path): - if path == None: - captureImage(terme, None) +def beta_reduction_totale(terme, path, saveImages=True): + if saveImages == False: + if beta_reduction(terme) != None: + return beta_reduction_totale(beta_reduction(terme), path, False) + return (terme) else: - captureImage(terme,path) - if beta_reduction(terme) != None: - return beta_reduction_totale(beta_reduction(terme), path) - return (terme) + if path == None: + captureImage(terme, None) + else: + captureImage(terme,path) + if beta_reduction(terme) != None: + return beta_reduction_totale(beta_reduction(terme), path) + return (terme) numbers_to_letters = { 0:'x', @@ -228,8 +233,10 @@ numbers_to_letters = { 14:'n', 15:'v', 16:'f', - 17:'ç' - + 17:'ç', + 18:'aa', + 19:'bb', + 20:'cc', } diff --git a/main.py b/main.py index 7fcba913fc618b9483728c728e7986db0e7c9bd0..374fa578d7ec32c6f2f95463cf72295298045705 100644 --- a/main.py +++ b/main.py @@ -13,14 +13,14 @@ def delete_images(path): except Exception as e: print(e) -def run_beta_reduction_totale(terme,path): +def run_beta_reduction_totale(terme,path='beta_reduction_totale'): terme = parsing.parseTerm(terme) os.makedirs(path, exist_ok=True) if len(os.listdir(path)) > 0: delete_images(path) logic.beta_reduction_totale(terme,path) -def run_beta_reduction_interactive_totale(terme,path): +def run_beta_reduction_interactive_totale(terme,path='beta_reduction_interactive_totale'): terme = parsing.parseTerm(terme) os.makedirs(path, exist_ok=True) if len(os.listdir(path)) > 0: diff --git a/menu.py b/menu.py index f305e7aee7772089863a09c0a29eb22f6c4d7a29..4bc9553c61c0d84bd83d29beee6841679fc248a3 100644 --- a/menu.py +++ b/menu.py @@ -39,7 +39,7 @@ def run_main_menu(): if choice == 1: clear() terme1 = input('Enter a term: ') - main.run_beta_reduction_totale(terme1,'beta_reduction_totale') + main.run_beta_reduction_totale(terme1) clear() print('Done!') time.sleep(1) @@ -49,7 +49,7 @@ def run_main_menu(): elif choice == 2: clear() terme2 = input('Enter a term: ') - main.run_beta_reduction_interactive_totale(terme2,'beta_reduction_interactive_totale') + main.run_beta_reduction_interactive_totale(terme2) clear() print('Done!') logic.image_counter = 0 diff --git a/requirements.txt b/requirements.txt index 15d8f8a1572e76f0cce62963292c9cad6031a0fd..6fe6654dc9e070eae67dade8be981417082e7138 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1 @@ -os -time pyfiglet \ No newline at end of file