-
Notifications
You must be signed in to change notification settings - Fork 0
/
word.py
109 lines (97 loc) · 3.79 KB
/
word.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
class WordFactory:
def __init__(self, config):
self.config = config
def item(self, item):
print("self.factory.item ", item)
for cmd in self.config['commands']:
for word in cmd['name']['single']:
if word in item:
print("self.factory.item.single ", item)
if word.strip() in ["квадрат", "square"]:
print("--> квадрат")
it = item.split(' ')[-1]
print(self.square(it))
return self.square(it)
for word in cmd['name']['multiple']:
if word in item:
print("self.factory.item.multi ", item)
if word.strip() in ["квадраты", "squares"]:
print("--> квадраты")
words = item.split(' ')
endOfCommandIndex = words.index(word.strip()) + 1
items = words[endOfCommandIndex:len(words)]
print(self.squares(items))
return self.squares(items)
def squares(self, words):
squares = []
for word in words:
squares.append(self.square(word))
return squares
def square(self, word):
squareWord = ""
if word != "":
word = list(word)
currentIndex = 0
while currentIndex < len(word):
for rowIndex, letter in enumerate(word):
# print(word[row_index], end=" ")
squareWord += (word[rowIndex] + " ")
firstLetter = word.pop(0)
word.append(firstLetter)
# print("")
squareWord += "\n"
currentIndex += 1
# print("")
squareWord += "\n"
return squareWord
def corner(self, word):
cornerWord = ""
if word != "":
word = list(word)
for rowIndex, letter in enumerate(word):
if(rowIndex < len(word)):
cornerWord += (word[rowIndex] + " ")
cornerWord += "\n"
word.pop(0)
for rowIndex, letter in enumerate(word):
cornerWord += (word[rowIndex] + "\n")
return cornerWord
def corners(self, words):
corners = []
for word in words:
corners.append(self.corner(word))
return corners
def verticals(self, words):
rawWords = words.split(' ')
verticalWords = []
verticalWord = ""
greatestWordLength = self.__getGreatestWordLength(words)
positionInArray = 0
while len(verticalWords) < greatestWordLength:
for rawWord in rawWords:
try:
for letter_index, letter in enumerate(rawWord[positionInArray]):
verticalWord += rawWord[positionInArray] + " "
except Exception:
space = " "
verticalWord += space + " "
continue
verticalWords.append(verticalWord)
if positionInArray < greatestWordLength - 1:
positionInArray += 1
verticalWord = ""
return verticalWords
def __getGreatestWordLength(self, words):
rawWords = words.split(' ')
prev = 0
new = 0
for word in rawWords:
if len(word) > new:
prev = new
new = len(word)
else:
continue
return new
# if __name__ == '__main__':
# factory = WordFactory()
# print(factory.verticals("ремонт обуви копир ключей"))