示例#1
0
class Digits:
    zero = Digit("zero", "", "ten", 0)
    one = Digit("one", "ten", "eleven", 1)
    two = Digit("two", "twenty", "twelve", 2)
    three = Digit("three", "thirty", "thirteen", 3)
    four = Digit("four", "forty", "fourteen", 4)
    five = Digit("five", "fifty", "fifteen", 5)
    six = Digit("six", "sixty", "sixteen", 6)
    seven = Digit("seven", "seventy", "seventeen", 7)
    eight = Digit("eight", "eighty", "eighteen", 8)
    nine = Digit("nine", "ninety", "nineteen", 9)

    digits = zero, one, two, three, four, five, six, seven, eight, nine

    @classmethod
    def next(cls, digit):
        if digit == cls.nine:
            return cls.zero, True
        return cls.digits[cls.digits.index(digit) + 1], False

    @classmethod
    def previous(cls, digit):
        if digit == cls.zero:
            return cls.nine, True
        return cls.digits[cls.digits.index(digit) - 1], False
示例#2
0
def draw_text(name, info, posX, posY, size):
    name = Digit(name, info, size, posX, posY, -1, False)
    fontstr = "Times " + str(size) + " italic bold"
    name.id = w.create_text(posX, posY, text=info, anchor="se", font=fontstr)
    #name.view()
    digitList.append(name)
    listsize = len(digitList)
    ls = str(listsize)
    return name
示例#3
0
 def _split_to_digits(self, invoice_matrix):
     digits = []
     digit_vector = tuple()
     for i in range(0, conf.chars_in_line, conf.digit_size):
         for j in range(conf.digit_size):
             digit_vector += (tuple(invoice_matrix[j][i:i+conf.digit_size]))
         digit = Digit(digit_vector)
         digits.append(digit)
         if digit.get_digit() == '?':
             self.is_illegal = True
         digit_vector = tuple()
     return digits
示例#4
0
    def __init__(self, inputDigitStrings, outputDigitStrings):
        # inputDigits contains one of each digit ("Each entry consists of ten unique signal patterns")
        self.inputDigits = [
            Digit(digitString) for digitString in inputDigitStrings
        ]
        self.outputDigits = [
            Digit(digitString) for digitString in outputDigitStrings
        ]

        # We should know at least 1, 4, 7, and 8 at the start
        self.discoveredDigits = {}
        for inputDigit in self.inputDigits:
            if inputDigit.digit != None:
                self.discoveredDigits[inputDigit.digit] = inputDigit

        # The segments are arranged as they were in the original diagrams:
        #  aaaa
        # b    c
        # b    c
        #  dddd
        # e    f
        # e    f
        #  gggg
        #
        # So e mapped to g means that wire e in this display is equivalent to
        # segment g. When this is fully filled in we can decode any digit
        self.wireToSegmentMap = {}
        self.segmentToWireMap = {}

        # 2, 3, 5
        self.fiveSegmentDigits = []

        # 0, 6, 9
        self.sixSegmentDigits = []

        for digit in self.inputDigits:
            if digit.numSegmentsOn == 5:
                self.fiveSegmentDigits.append(digit)
            elif digit.numSegmentsOn == 6:
                self.sixSegmentDigits.append(digit)

        self.discoverSegmentA()
        self.discoverDigit6()
        self.discoverSegmentC()
        self.discoverSegmentF()
        self.discoverDigit3()
        self.discoverSegmentG()
        self.discoverSegmentD()
        self.discoverDigit9and0()
        self.discoverSegmentB()
        self.discoverSegmentE()
        self.discoverDigit2and5()
示例#5
0
def input_puzzle(img):

    problem_grid = np.zeros([9, 9])
    digits = []

    width = len(img) // 9
    size = len(img)
    for row in range(9):
        for col in range(9):
            # Cut c pixels from surrounding Border
            c = 5
            num = img[row * width + c:row * width + width - c,
                      col * width + c:col * width + width - c]
            number = get_number(num)

            num = img[row * width:row * width + width,
                      col * width:col * width + width]
            digits.append(Digit(num, number))
            #print(number)
            r = int(100 * (row * width) / (11 * size))
            c = int(100 * (col * width) / (11 * size))

            if number in possible_characters:
                problem_grid[r, c] = number
            else:
                problem_grid[r, c] = 0

    return problem_grid, digits
示例#6
0
 def get_one(correct, incorrect):
     result = dict()
     questions = list()
     min_int = 0
     correct_max_int = len(correct) - 1
     incorrect_max_int = len(incorrect) - 1
     correct_random = Digit.get_random_int(min_int, correct_max_int)
     incorrect_random = Digit.get_random_int(min_int, incorrect_max_int)
     answer = Digit.get_random_int(0, 1)
     if answer:
         questions.append(incorrect[incorrect_random])
         questions.append(correct[correct_random])
     else:
         questions.append(correct[correct_random])
         questions.append(incorrect[incorrect_random])
     result["questions"] = questions
     result["answer"] = answer
     return result
    def _convert_list_to_string_integer_hexadecimal(self, list):

        result_value = ''
        for item in list:
            if(item > 9):
                item = Digit.get_letter_for_number(self,item)
            result_value = result_value + str(item) 

        return result_value
示例#8
0
    def __init__(self, complexity: int = 3, drawing_mode: str = "utf8") -> None:
        self.size = complexity ** 2
        self.digits = []
        for i, symbol in enumerate(SYMBOLS):
            if i < self.size:
                self.digits.append(Digit(symbol, i + 1))
            else:
                break

        max_complexity = int(len(SYMBOLS) ** (1 / 2))
        if complexity < 1 or complexity > max_complexity:
            raise ValueError(
                "Puzzle complexity: expected integer from 1 to {}. Got {}".format(
                    str(max_complexity), str(complexity)
                )
            )
        else:
            self.complexity = complexity

        dm_lower = drawing_mode.lower()
        if dm_lower == "ascii":
            self.null_digit = Digit(".", 0)
            self.spacers = ["|", "-", "+"]
        elif dm_lower.startswith(("utf", "unicode")):
            self.null_digit = Digit("·", 0)
            self.spacers = [" │ ", "─", "┼"]
        else:
            self.null_digit = Digit("0", 0)
            self.spacers = ["  ", " ", " "]

        self.initial_state = self.generate_boxes()
        self.boxes = copy.deepcopy(self.initial_state)
        for _ in range(self.size):
            self.fill_random_square()

        self.solved_states = []
        self.unsolved_states = copy.deepcopy(self.boxes)
    def _convert_list_to_string_fraction_hexadecimal(self, list):

        result_value = ''
        counter = 0
        for item in list:

            if(counter == 10):
                break

            if(item > 9):
                item = Digit.get_letter_for_number(self,item)

            result_value = result_value + str(item) 
            counter += 1

        return result_value
示例#10
0
    def extractCells(self, sudoku):
        cells = []
        W, H = sudoku.shape

        cell_size = W // 9
        i, j = 0, 0
        for r in range(0, W, cell_size):

            j = 0
            for c in range(0, W, cell_size):
                cell = sudoku[r:r + cell_size, c:c + cell_size]
                cell = self.helpers.make_it_square(cell, 28)
                #self.helpers.show(cell, 'Before clean')
                cell = self.clean(cell)
                digit = Digit(cell).digit
                #self.helpers.show(digit, 'After clean')
                digit = self.centerDigit(digit)
                cells.append(digit // 255)
                j += 1
            i += 1
        return cells
示例#11
0
 def __init__(self):
     self.col = Colon(400, 350 // 2)
     self.hour1 = Digit(30, 50)
     self.hour2 = Digit(210, 50)
     self.minute1 = Digit(450, 50)
     self.minute2 = Digit(630, 50)
示例#12
0
class Clock:
    def __init__(self):
        self.col = Colon(400, 350 // 2)
        self.hour1 = Digit(30, 50)
        self.hour2 = Digit(210, 50)
        self.minute1 = Digit(450, 50)
        self.minute2 = Digit(630, 50)

    def update(self, hour, minute, seconds):
        self.col.update(seconds)

        if hour > 12:
            hour -= 12
        h1 = 0
        self.hour1.dim = True
        h2 = hour
        if len(str(hour)) == 2:
            self.hour1.dim = False
            h1 = int(str(hour)[0])
            h2 = int(str(hour)[1])
        self.hour1.update(h1)
        self.hour2.update(h2)

        m1 = 0
        m2 = minute
        if len(str(minute)) == 2:
            m1 = int(str(minute)[0])
            m2 = int(str(minute)[1])
        self.minute1.update(m1)
        self.minute2.update(m2)

    def show(self, win):
        self.col.show(win)
        self.hour1.show(win)
        self.hour2.show(win)
        self.minute1.show(win)
        self.minute2.show(win)
示例#13
0
from letter import Letter
from digit import Digit

letter = Letter()
digit = Digit()
userchose = input(
    " Hellow World! please Enter Letter(A-Z) or Digit(0- 9):> ").upper()

while True:
    if userchose == 'A':
        letter.A()
    elif userchose == 'B':
        letter.B()
    elif userchose == 'C':
        letter.C()
    elif userchose == 'D':
        letter.D()
    elif userchose == 'E':
        letter.E()
    elif userchose == 'F':
        letter.F()
    elif userchose == 'G':
        letter.G()
    elif userchose == 'H':
        letter.H()
    elif userchose == 'I':
        letter.I()
    elif userchose == 'J':
        letter.J()
    elif userchose == 'K':
        letter.K()