optimize ux
This commit is contained in:
		
							
								
								
									
										11
									
								
								chapter-03/binseq/binseq.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								chapter-03/binseq/binseq.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
from collections.abc import Callable
 | 
			
		||||
 | 
			
		||||
class REAL:
 | 
			
		||||
    def __init__(self, f: Callable[[int], str]) -> None:
 | 
			
		||||
        self.binseq = f
 | 
			
		||||
 | 
			
		||||
    def as_string(self, w: int) -> str:
 | 
			
		||||
        s = ""
 | 
			
		||||
        for n in range(w):
 | 
			
		||||
            s += self.binseq(n)
 | 
			
		||||
        return s
 | 
			
		||||
							
								
								
									
										20
									
								
								chapter-03/binseq/main.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								chapter-03/binseq/main.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
from binseq import REAL
 | 
			
		||||
from math import isqrt  # integer sqrt
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def one_third(n):
 | 
			
		||||
    if n == 1: return "."
 | 
			
		||||
    if n % 2 == 0: return "0"
 | 
			
		||||
    return "1"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def irrational(n):
 | 
			
		||||
    if n == 1: return "."
 | 
			
		||||
    if n != isqrt(n) * isqrt(n): return "1"
 | 
			
		||||
    return "0"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x = REAL(one_third)
 | 
			
		||||
y = REAL(irrational)
 | 
			
		||||
 | 
			
		||||
print("x: " + x.as_string(50) + "\ny: " + y.as_string(50))
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								chapter-03/dedekint/__pycache__/dedekint.cpython-313.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								chapter-03/dedekint/__pycache__/dedekint.cpython-313.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										6
									
								
								chapter-03/dedekint/dedekint.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								chapter-03/dedekint/dedekint.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
from collections.abc import Callable
 | 
			
		||||
from gmpy2 import mpq
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class REAL:
 | 
			
		||||
    def __init__(self, f: Callable[[mpq], bool]): self.smaller=f
 | 
			
		||||
							
								
								
									
										26
									
								
								chapter-03/dedekint/main.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								chapter-03/dedekint/main.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
			
		||||
from dedekint import REAL
 | 
			
		||||
# mpq for rational numbers
 | 
			
		||||
from gmpy2 import mpq
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def sqrt_two(q):
 | 
			
		||||
    if q <= 0 or q * q < 2: return True
 | 
			
		||||
    return False
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
x = REAL(sqrt_two)
 | 
			
		||||
 | 
			
		||||
print("1.41422 is smaller:", x.smaller(mpq(141422, 100000)))
 | 
			
		||||
print("1.41421 is smaller:", x.smaller(mpq(141421, 100000)))
 | 
			
		||||
 | 
			
		||||
k = 0
 | 
			
		||||
n = 1
 | 
			
		||||
z = 0
 | 
			
		||||
 | 
			
		||||
for k in range(100):
 | 
			
		||||
    if x.smaller(mpq(z, n)):
 | 
			
		||||
        z = z + 1
 | 
			
		||||
    else:
 | 
			
		||||
        print(z, "/", n)
 | 
			
		||||
        z = (z - 1) * 10
 | 
			
		||||
        n = n * 10
 | 
			
		||||
		Reference in New Issue
	
	Block a user