 Sie sind vermutlich noch nicht im Forum angemeldet - Klicken Sie hier um sich kostenlos anzumelden Impressum
 Portal |Scrabble3D Forum |Forum Donations |Suche |Login |Registrieren |Mitglieder |Impressum - Datenschutz - FAQ
Sie können sich hier anmelden
Dieses Thema hat 41 Antworten
und wurde 4.485 mal aufgerufen
 Seiten 1 | 2 | 3
Raman Offline  Beiträge: 167

01.09.2020 21:03
 #16 RE: Math scrabble implemented Zitat · Antworten
Raman Offline  Beiträge: 167

10.09.2020 14:49
 #17 RE: Math scrabble implemented Zitat · Antworten
 Zitat von Scotty im Beitrag Unfixed bugs in Scrabble3D application.Sure, ideally you get in contact with the original author. Otherwise I would take your "much better version" opinion without hesitation if there is another user's word. In case of math.dic it's not too difficult to check myself.8 types of possibilities can be considered for each of type of mathematical equation as follows:A+B=C, B+A=C, C-A=B, C-B=A, C=A+B, C=B+A, B=C-A, A=C-B.D×E=F, E×D=F, F÷D=E, F÷E=D, F=D×E, F=E×D, E=F÷D, D=F÷E.Having more numbers will encourage players to form mathematical equations with longer numbers, but that:If the ratio of numbers to operators and = in letter set is too small, then as the game progresses, all numbers can be easily pushed away in one move but operators and = accumulate in player's rack discouraging players to play mathematical equations with longer numbers.If the ratio of numbers to operators and = in letter set is too large, then at the beginning moves there might not be good balance of numbers and operators and = in player's racks to make good and valid play.So whenever designing a letter set for Scrabble with mathematical equations, these things have to be taken into mind.I am talking about this for large letter sets for larger 2D boards and smaller 3D boards which other people might not be patient enough and interested enough to play for that long, either short time games played at a stretch or long time games played over a span of lasting for several days.I don't think that most of other people would be patient enough and interested enough in playing games with Scrabble boards beyond that Classic Scrabble 15×15 2D board and Super Scrabble 21×21 2D board.I have created designs for board layouts for larger 2D boards and smaller 3D boards which I might only make use of.Different people will come out with their own designs for board layouts and nothing may be perfectly accepted standard right now and may be that would be so in the future also.
Raman Offline  Beiträge: 167

10.09.2020 16:56
 #18 RE: Math scrabble implemented Zitat · Antworten
 Points for some of the difficult to play tiles could be higher, to give computer signal to take those tiles seriously and not to stagnate many of such tiles in its rack by giving priority to high scoring words formed by making use of next tier of high scoring tiles.This might not necessarily apply for playing with other human players, online or offline, along with other computer players as opponents or not because especially experienced human players tend to play wisely enough, by knowing which of tiles are difficult to play in what situations and that would be depending upon any of type of Scrabble board position also.This would be suitable for Tamil Scrabble especially when playing with digraph tiles and trigraph tiles for representing with each of 1 single Tamil letter, where there are a lot of letters which have a few words that contain them with.For Scrabble with mathematical equations, things like decimal point could be formed only with longer equations only when such suitable tiles for using it form beautifully upon player's rack especially with lower number of tiles in rack and it is furthermore difficult to play when board gets filled up as game progresses with fewer and fewer enough vacant spaces for playing it. The possibility of short words is completely ruled out in Scrabble with mathematical equations and so it is very difficult to push all tiles by players at end of played game, especially in 2D boards rather than, instead of 3D boards without ending games by all players passing with some number of tiles stagnated in each of player's rack. Shortest mathematical equations of length of 3 include 0=0, 1=1, 2=2, 3=3, 4=4, 5=5, 6=6, 7=7, 8=8 and 9=9 and there is no limit for longer ones. There are more and more mathematical equations possible as length of mathematical equations increases up.⁼ 1 point.0 2 points.1 1 point.2 1 point.3 2 points.4 2 points.5 3 points.6 3 points.7 4 points.8 3 points.9 4 points.− 3 points.× 4 points.÷ 4 points.+ 3 points.. 10 points.! 9 points.^ 8 points.² 6 points.³ 7 points.√ 5 points.∜ 10 points.Number of points in the scale from 1 to 10 would be assigned for at least for 1 single letter.It does not matter how frequently or how rarely that letter would be made use of for in the letter set of for larger 2D boards and smaller 3D boards.More tiles of smaller digits with lower points for them would be good enough because they are much easier to play than bigger digits or not necessarily, but that they would much more frequently occur in leading digits.I personally do not prefer leading zeros or trailing zeros after decimal point.And that more tiles for even digits with lower points for them would be good enough because they occur much more frequently at unit's place for multiplication and division than odd digits. Odd × Odd = Odd, Odd × Even = Even, Even × Odd = Even and Even × Even = Even. Similarly that would be also for digits 5 and 0 on an other hand viewpoint and that on an other perspective viewpoint.I personally do not prefer leading minus before a zero.
Raman Offline  Beiträge: 167

10.09.2020 11:21
 #19 Maths Scrabble Puzzles. Zitat · Antworten
 Zitat von Bussinchen im Beitrag Unfixed bugs in Scrabble3D application.As you write in English, I think it is okay if you start a new thread here in the English section on General and call it "Maths Scrabble Puzzles".I actually thought that it would be much better of in a 1 single post in 'Maths Scrabble implemented' thread in 'More languages' forum in 'International' group in this forum,and especially if it were for this 1 single post, puzzles to be included here only for spotting a bingo and not for spotting a best move that connects 2 premium word score squares and not that connects 2 premium letter score squares and if puzzles are to be entirely from my own played games only and not from any other sources of other people, for example, Scrabble club WhatsApp group whoever would be primarily and only be focused upon entirely just English Scrabble only simply.Find a bingo in this board position. Find a bingo in this board position. Find a bingo in this board position. Find a bingo in this board position. Find a bingo in this board position. And that just simply that this is a compilation of 5 different puzzles from my own played games that have been posted at all of types of places in this forum and that would be primarily and only in 'Unfixed bugs in Scrabble3D application' thread in 'Bugreports & Suggestions' forum in 'English' group in this forum.By the way that why is it 'Bugreports & Suggestions' and not 'Bug reports & Suggestions'?
Raman Offline  Beiträge: 167

12.09.2020 20:48
 #20 RE: Maths Scrabble Puzzles. Zitat · Antworten
 (Just fibbing) Make wooden tiles for Maths Scrabble and sell them for profit to raise money to finance the Premium Tariff for this Scrabble3D forum. Note: It will be much cheaper if they are printed on chart paper, pasted on cardboard sheet and cut with scissors. But that wooden tiles will be attractive to most people who would psychologically prefer playing with them. Just that it is worthwhile to compare the rates of wooden tiles with that of tiles made out of cardboard sheet and chart paper.
Raman Offline  Beiträge: 167

13.09.2020 13:26
 #21 RE: Math scrabble implemented Zitat · Antworten
Raman Offline  Beiträge: 167

13.09.2020 15:41
 #22 RE: Math scrabble implemented Zitat · Antworten
 https://www.boardgamegeek.com/image/1817520/equateTo play, you have to put in a true equation on the board.Words such as those like 73, 3 ²/₄, 739 ²/₆ and 42 on Equate board and 54 and 46 on tile images on board and not that are played with actual tiles on Equate board does not make sense over thereby.
Scotty Offline Beiträge: 3.747

14.09.2020 10:02
 #23 RE: Math scrabble implemented Zitat · Antworten
 Zitat von Raman im Beitrag #21Scotty: Seeing post 3 in this thread, I just want to ask whether it was you who updated Wikipedia page for Scrabble letter distributions for Maths Scrabble.No, I didn't. Check the history to find out that OliverGalvin edited the page for Math and Tamil. Download: Sourceforge | Help:Wiki | Discussion: Forum | News: Twitter | Fanship: Facebook | IRC: Freenode #scrabble3d
Raman Offline  Beiträge: 167

14.09.2020 11:57
 #24 RE: Math scrabble implemented Zitat · Antworten

Zitat von Scotty im Beitrag #23
No, I didn't. Check the history to find out that OliverGalvin edited the page for Math and Tamil.

If I understand correctly, then Alexlatham96 edited the page for Math and Tamil. OliverGalvin just fixed a broken reference link at the bottom of the page to this forum yesterday.

By the way, I do not personally like having fractional tiles. Decimal tiles which can serve only terminating fractions and not non-terminating repeating ones serve better for this purpose.
There are lots of different fractional tiles possible for them to fit into Scrabble (Equate) board properly to form a valid mathematical equation.
Everyone will have their own tastes of board layout and tiles distribution.

Post 3 in this thread gives a distribution for 100 tiles for Maths Scrabble, without any blank tiles used at all. 3 blank tiles was an arbitrary number that was used by Alexlatham96 in Wikipedia page.
Seeing the similarity in Maths Scrabble tile distributions in post 3 in this thread in this forum and Wikipedia page, I assume that Alexlatham96 only took that data for Wikipedia page from post 3 in this thread in this forum.
Math Scrabble was updated to its latest version in Scrabble3D application on 12 March 2014 and Maths Section in Wikipedia article was created by Alexlatham96 on 2 May 2017. Link to Equate (game) in Maths section in Wikipedia article was added by OliverGalvin on 30 July 2020.
I got hold of Scrabble3D application from the Wikipedia page on Scrabble tile distributions for different languages. When it said about Maths Scrabble I got the link from it, which I had been longing to play it for a long period of time and trying out with an experience upon it.

Anyway that, in my own humble opinion that, for best results Maths Scrabble is to be played with separate racks for each of the players for digits, operators and =.
Some kits available from shop make use of numbers ≥ 10, and that discourages forming equations with longer numbers.

By the way, this is the tile distribution for Maths Scrabble according to the latest version of Maths dictionary that is uploaded to the sourceforge page for the Scrabble3D application.
This information is not posted earlier on into this thread for Alexlatham96 to take that data from over hereby to adopt it in Maths section in Wikipedia article.
I only kept on posting my own different versions of researched and optimal letter sets for Maths Scrabble earlier on into this thread for other people's reference and analysis purposes only.
 Letter Count Points ⁼ 18 0 0 6 3 1 10 1 2 8 2 3 7 4 4 7 3 5 7 3 6 7 4 7 6 5 8 6 4 9 6 4 − 4 6 × 4 6 ÷ 3 7 + 4 6 . 3 8 ! 1 10 ^ 1 9 ² 1 10 ³ 1 10 √ 3 7 ∜ 1 10 ∞ 1 10 > 1 10 < 1 10 Total 117 437

∞, >, < are not good to be present in the letter set for Maths Scrabble.
What mathematical equations have ∞? And lot of possibilities with < and >.
< and > will not restrict possibilities. It will allow players to form wild mathematical equations with random high scoring points at player's wish.

Raman Offline  Beiträge: 167

20.10.2020 20:08
 #25 RE: Math scrabble implemented Zitat · Antworten

I just tried to simulate and play with Equate game style of Maths Scrabble in Scrabble3D application.
https://www.boardgamegeek.com/image/1817520/equate
Not exactly with the same tile set as in Equate game, but my modified version of it, with reducible fractional tiles removed and with keeping only fractional tiles which are strictly between 0 and 1 (0 and 1 both exclusive).

The following 220 tiles might fit well for a 21×21 board in order to optimally play with 10 tiles in the rack at any one given period of time. Because there are a diverse variety of fractional tiles used, this variant of Maths Scrabble is played only with 4 fundamental mathematical operations of addition, subtraction, multiplication and division.
1 point: ×40, 1 ×30, 2 ×29
2 points: 0 ×28, 3 ×28, 4 ×28
3 points: 5 ×28, 6 ×28, 8 ×27, × ×10, ÷ ×10
4 points: 7 ×27, 9 ×27, + ×10, ×10
5 points: ¹/₂ ×4, ¹/₄ ×2, ³/₄ ×2
6 points: ¹/₃ ×2, ²/₃ ×2
7 points: ¹/₆ ×2, ⁵/₆ ×2
8 points: ¹/₅ ×1, ²/₅ ×1, ³/₅ ×1, ⁴/₅ ×1, ¹/₈ ×1, ³/₈ ×1, ⁵/₈ ×1, ⁷/₈ ×1
9 points: ¹/₁₀ ×1, ³/₁₀ ×1, ⁷/₁₀ ×1, ⁹/₁₀ ×1
10 points: ¹/₇ ×1, ²/₇ ×1, ³/₇ ×1, ⁴/₇ ×1, ⁵/₇ ×1, ⁶/₇ ×1, ¹/₉ ×1, ²/₉ ×1, ⁴/₉ ×1, ⁵/₉ ×1, ⁷/₉ ×1, ⁸/₉ ×1
Note that × and ÷ are assigned lesser points than + and − because × and ÷ can wildly combine with fractions of all denominators, whereas + and − can only strictly combine with fractions of the same denominators and their proper divisors.        equate.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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287

``num = [1, 1, 2, 1, 3, 1, 2, 3, 4, 1, 5, 1, 2, 3, 4, 5, 6, 1, 3, 5, 7, 1, 2, 4, 5, 7, 8, 1, 3, 7, 9, 1, 5, 7, 11, 0]den = [2, 3, 3, 4, 4, 5, 5, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 12, 12, 12, 12, 1]sym = ['#', '\$', '&', '(', ')', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '%', ':', '^', '.', '!']conj = [0, 2, 1, 4, 3, 8, 7, 6, 5, 10, 9, 16, 15, 14, 13, 12, 11, 20, 19, 18, 17, 26, 25, 24, 23, 22, 21, 30, 29, 28, 27, 34, 33, 32, 31, 35]m = ["\xe2\x81\xb0", "\xc2\xb9", "\xc2\xb2", "\xc2\xb3", "\xe2\x81\xb4", "\xe2\x81\xb5", "\xe2\x81\xb6", "\xe2\x81\xb7", "\xe2\x81\xb8", "\xe2\x81\xb9"]n = ["\xe2\x82\x80", "\xe2\x82\x81", "\xe2\x82\x82", "\xe2\x82\x83", "\xe2\x82\x84", "\xe2\x82\x85", "\xe2\x82\x86", "\xe2\x82\x87", "\xe2\x82\x88", "\xe2\x82\x89"]d = {}for j in range(len(sym) - 1):    d[(num[j], den[j])] = sym[j]def superscript(s):    a = ""    for c in s:        a += m[ord(c) - 48]    return adef subscript(t):    b = ""    for d in t:        b += n[ord(d) - 48]    return bdef gcd(p, q):    while q > 0:        (p, q) = (q, p % q)    return pdef string(nu, de):    result = ''    if nu >= de or nu == 0:        result += str(nu / de)    if nu % de > 0:        result += d[(nu % de, de)]    return resultdef terms(nu, de):    result = 0    if nu >= de or nu == 0:        result += len(str(nu / de))    if nu % de > 0:        result += 1    return resultprint '[Header]'print 'Version=100000'print 'Author=Raman Viswanathan <raman22feb1988@gmail.com>'print 'StandardCategory=Equalities'print 'Licence=GNU General Public License, v3'print 'Release=20.10.20'print 'Comment=Equate game style of Scrabble with mathematical equations'print 'Letters=@,0,1,2,3,4,5,6,7,8,9,-,*,/,+,#,\$,&,(,),A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,%,:,^,.'print 'Values=1,2,1,1,2,2,3,3,4,3,4,4,3,3,4,5,6,6,5,5,8,8,8,8,7,7,10,10,10,10,10,10,8,8,8,8,10,10,10,10,10,10,9,9,9,9,9,9,9,9'print 'Counts=36,9,11,10,9,9,9,9,8,8,8,9,9,9,9,4,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0'print 'Key='print '[Replace]'print '-=\xe2\x88\x92'print '*=\xc3\x97'print '/=\xc3\xb7'print '@=\xe2\x81\xbc'for i in range(len(sym) - 1):    print sym[i] + '=' + superscript(str(num[i])) + '/' + subscript(str(den[i]))print '[Categories]'print '1=Addition'print '2=Subtraction'print '3=Multiplication'print '4=Division'print '[Words]'for k in range(10000):    print str(k) + '@' + str(k) + '='for k in range(100):    for l in range(len(sym) - 1):        print (str(k), '') [k == 0] + d[(num[l], den[l])] + '@' + (str(k), '') [k == 0] + d[(num[l], den[l])] + '='for k in range(10):    for l in range(len(sym) - 1):        for o in range(10):            for r in range(len(sym) - 1):                t = den[l] * k + num[l]                u = den[l]                v = den[r] * o + num[r]                w = den[r]                y = t * w + u * v                z = u * w                g = gcd(y, z)                y /= g                z /= g                if z > 12 or z == 11 or y % z == 0:                    continue                if terms(t, u) + terms(v, w) + terms(y, z) <= 6:                    print string(t, u) + '+' + string(v, w) + '@' + string(y, z) + '=;1'                    print string(y, z) + '@' + string(t, u) + '+' + string(v, w) + '=;1'                    print string(y, z) + '-' + string(t, u) + '@' + string(v, w) + '=;2'                    print string(v, w) + '@' + string(y, z) + '-' + string(t, u) + '=;2'for k in range(100):    for l in range(len(sym) - 1, len(sym)):        for o in range(100):            for r in range(len(sym) - 1):                t = den[l] * k + num[l]                u = den[l]                v = den[r] * o + num[r]                w = den[r]                y = t * w + u * v                z = u * w                g = gcd(y, z)                y /= g                z /= g                if z > 12 or z == 11:                    continue                if terms(t, u) + terms(v, w) + terms(y, z) <= 6:                    print string(t, u) + '+' + string(v, w) + '@' + string(y, z) + '=;1'                    print string(y, z) + '@' + string(t, u) + '+' + string(v, w) + '=;1'                    print string(y, z) + '-' + string(t, u) + '@' + string(v, w) + '=;2'                    print string(v, w) + '@' + string(y, z) + '-' + string(t, u) + '=;2'for k in range(100):    for l in range(len(sym) - 1):        for o in range(100):            for r in range(len(sym) - 1, len(sym)):                t = den[l] * k + num[l]                u = den[l]                v = den[r] * o + num[r]                w = den[r]                y = t * w + u * v                z = u * w                g = gcd(y, z)                y /= g                z /= g                if z > 12 or z == 11:                    continue                if terms(t, u) + terms(v, w) + terms(y, z) <= 6:                    print string(t, u) + '+' + string(v, w) + '@' + string(y, z) + '=;1'                    print string(y, z) + '@' + string(t, u) + '+' + string(v, w) + '=;1'                    print string(y, z) + '-' + string(t, u) + '@' + string(v, w) + '=;2'                    print string(v, w) + '@' + string(y, z) + '-' + string(t, u) + '=;2'for k in range(100):    for l in range(len(sym) - 1):        for o in range(100):            for r in range(conj[l], conj[l] + 1):                t = den[l] * k + num[l]                u = den[l]                v = den[r] * o + num[r]                w = den[r]                y = t * w + u * v                z = u * w                g = gcd(y, z)                y /= g                z /= g                if z > 12 or z == 11:                    continue                if terms(t, u) + terms(v, w) + terms(y, z) <= 6:                    print string(t, u) + '+' + string(v, w) + '@' + string(y, z) + '=;1'                    print string(y, z) + '@' + string(t, u) + '+' + string(v, w) + '=;1'                    print string(y, z) + '-' + string(t, u) + '@' + string(v, w) + '=;2'                    print string(v, w) + '@' + string(y, z) + '-' + string(t, u) + '=;2'for k in range(1000):    for o in range(1000):        y = k + o        if len(str(k)) + len(str(o)) + len(str(y)) <= 7:                    print str(k) + '+' + str(o) + '@' + str(y) + '=;1'                    print str(y) + '@' + str(k) + '+' + str(o) + '=;1'                    print str(y) + '-' + str(k) + '@' + str(o) + '=;2'                    print str(o) + '@' + str(y) + '-' + str(k) + '=;2'for k in range(100):    for l in range(len(sym) - 1):        for o in range(100):            for r in range(len(sym) - 1):                t = den[l] * k + num[l]                u = den[l]                v = den[r] * o + num[r]                w = den[r]                y = t * v                z = u * w                g = gcd(y, z)                y /= g                z /= g                if z > 12 or z == 11:                    continue                if terms(t, u) + terms(v, w) + terms(y, z) <= 6:                    print string(t, u) + '*' + string(v, w) + '@' + string(y, z) + '=;3'                    print string(y, z) + '@' + string(t, u) + '*' + string(v, w) + '=;3'                    print string(y, z) + '/' + string(t, u) + '@' + string(v, w) + '=;4'                    print string(v, w) + '@' + string(y, z) + '/' + string(t, u) + '=;4'for k in range(100):    for l in range(len(sym) - 1, len(sym)):        for o in range(100):            for r in range(len(sym) - 1):                t = den[l] * k + num[l]                u = den[l]                v = den[r] * o + num[r]                w = den[r]                y = t * v                z = u * w                g = gcd(y, z)                y /= g                z /= g                if z > 12 or z == 11:                    continue                if terms(t, u) + terms(v, w) + terms(y, z) <= 6:                    print string(t, u) + '*' + string(v, w) + '@' + string(y, z) + '=;3'                    print string(y, z) + '@' + string(t, u) + '*' + string(v, w) + '=;3'                    if k > 0:                        print string(y, z) + '/' + string(t, u) + '@' + string(v, w) + '=;4'                        print string(v, w) + '@' + string(y, z) + '/' + string(t, u) + '=;4'for k in range(100):    for l in range(len(sym) - 1):        for o in range(100):            for r in range(len(sym) - 1, len(sym)):                t = den[l] * k + num[l]                u = den[l]                v = den[r] * o + num[r]                w = den[r]                y = t * v                z = u * w                g = gcd(y, z)                y /= g                z /= g                if z > 12 or z == 11:                    continue                if terms(t, u) + terms(v, w) + terms(y, z) <= 6:                    print string(t, u) + '*' + string(v, w) + '@' + string(y, z) + '=;3'                    print string(y, z) + '@' + string(t, u) + '*' + string(v, w) + '=;3'                    print string(y, z) + '/' + string(t, u) + '@' + string(v, w) + '=;4'                    print string(v, w) + '@' + string(y, z) + '/' + string(t, u) + '=;4'for k in range(1, 100):    for l in range(len(sym) - 1, len(sym)):        for o in range(100):            for r in range(len(sym) - 1):                t = den[l] * k + num[l]                u = den[l]                v = den[r] * o + num[r]                w = den[r]                y = t * v                z = u * w                g = gcd(y, z)                y /= g                z /= g                if z > 12 or z == 11:                    continue                if terms(t, u) + terms(v, w) + terms(y, z) == 7:                    print string(t, u) + '*' + string(v, w) + '@' + string(y, z) + '=;3'                    print string(y, z) + '@' + string(t, u) + '*' + string(v, w) + '=;3'                    if k > 0:                        print string(y, z) + '/' + string(t, u) + '@' + string(v, w) + '=;4'                        print string(v, w) + '@' + string(y, z) + '/' + string(t, u) + '=;4'for k in range(100):    for l in range(len(sym) - 1):        for o in range(1, 100):            for r in range(len(sym) - 1, len(sym)):                t = den[l] * k + num[l]                u = den[l]                v = den[r] * o + num[r]                w = den[r]                y = t * v                z = u * w                g = gcd(y, z)                y /= g                z /= g                if z > 12 or z == 11:                    continue                if terms(t, u) + terms(v, w) + terms(y, z) == 7:                    print string(t, u) + '*' + string(v, w) + '@' + string(y, z) + '=;3'                    print string(y, z) + '@' + string(t, u) + '*' + string(v, w) + '=;3'                    print string(y, z) + '/' + string(t, u) + '@' + string(v, w) + '=;4'                    print string(v, w) + '@' + string(y, z) + '/' + string(t, u) + '=;4'for k in range(1, 1000):    for o in range(1, 1000):        y = k * o        if len(str(k)) + len(str(o)) + len(str(y)) <= 8:            print str(k) + '*' + str(o) + '@' + str(y) + '=;3'            print str(y) + '@' + str(k) + '*' + str(o) + '=;3'            print str(y) + '/' + str(k) + '@' + str(o) + '=;4'            print str(o) + '@' + str(y) + '/' + str(k) + '=;4'print '0*0@0=;3'print '0@0*0=;3'for k in range(1, 10000):    print '0*' + str(k) + '@0=;3'    print '0@0*' + str(k) + '=;3'    print str(k) + '*0@0=;3'    print '0@' + str(k) + '*0=;3'    print '0/' + str(k) + '@0=;4'    print '0@0/' + str(k) + '=;4'for l in range(len(sym) - 1):    k = range(0, 1000, den[l])    for r in range(len(k)):        y = k[r] * num[l] / den[l]        z = k[r]        if z >= 100:            print sym[l] + '*' + str(z) + '@' + str(y) + '=;3'            print str(z) + '*' + sym[l] + '@' + str(y) + '=;3'            print str(y) + '@' + sym[l] + '*' + str(z) + '=;3'            print str(y) + '@' + str(z) + '*' + sym[l] + '=;3'            print str(y) + '/' + str(z) + '@' + sym[l] + '=;4'            print str(y) + '/' + sym[l] + '@' + str(z) + '=;4'            print sym[l] + '@' + str(y) + '/' + str(z) + '=;4'            print str(z) + '@' + str(y) + '/' + sym[l] + '=;4' ``

Compare my tile set with the actual tile set of the Equate game which is played on a 19×19 board with 190 tiles:
 Letter Count Points ⁼ 40 0 0 3 1 1 3 1 2 9 1 3 9 1 4 9 1 5 9 1 6 9 2 7 9 2 8 9 2 9 9 2 − 11 2 × 11 3 ÷ 11 5 + 11 1 ¹/₂ 4 4 ²/₂ 1 2 ⁵/₂ 1 5 ¹/₃ 2 8 ²/₃ 2 8 ³/₃ 1 2 ¹/₄ 2 6 ²/₄ 2 5 ³/₄ 2 6 ⁴/₄ 1 2 ⁷/₄ 1 7 ¹/₆ 1 10 ²/₆ 1 9 ³/₆ 1 5 ⁴/₆ 1 9 ⁵/₆ 1 12 ⁶/₆ 1 2 Blank 3 0 Total 190 382

Why ⁵/₂ exists without ³/₂ and ⁷/₄ without ⁵/₄?
What is the point of having multiple equivalent reducible fractions such as those like ¹/₂, ²/₄ and ³/₆? ¹/₃ and ²/₆? ²/₃ and ⁴/₆? 2¹/₂ and ⁵/₂? 1³/₄ and ⁷/₄?
What is the point of having multiple equivalent reducible fractions which all reduce to 1, such as those like ²/₂, ³/₃, ⁴/₄ and ⁶/₆?
Why 0 and 1 tiles are only 3 each in number, which are more likely to be more frequently used than the rest of the digits, whereas all other digits namely 2, 3, 4, 5, 6, 7, 8 and 9 tiles are 9 each in number?
Although that I do not desire to make use of leading zeros or trailing zeros after the decimal point.

Raman Offline  Beiträge: 167

20.10.2020 21:37
 #26 RE: Math scrabble implemented Zitat · Antworten
Raman Offline  Beiträge: 167

12.05.2021 20:20
 #27 RE: Math scrabble implemented Zitat · Antworten
 Scotty: I prepared a much better version of Maths dictionary. Please let me know whether you will be interested in it or let me know whether it will be useful to other people.I considered only equations with two numbers on one side and one number on other side for binary operators and one number on both sides for unary operators.I gave extensive treatment to decimals with equations containing upto 3 of them. I also considered equations with cube root and fourth power, but not modulo because there are too many short equations with modulo and if I include them, then it will cause Scrabble3D application to take even more time to load the Maths dictionary every time. These symbols are not present in Maths dictionary that was prepared by Jouni Tolonen.It contains 5254685 equations that will take Scrabble3D application at least 2½ hours to load. It cannot be played with computer for Scrabble boards larger than 21×21.maths.dic: https://drive.google.com/file/d/1YQ9a3jp...iew?usp=sharingmaths.py123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325 ``print '[Header]'print 'Version=100005'print 'Author=Raman Viswanathan 'print 'StandardCategory=Equalities'print 'Licence=GNU General Public License, v3'print 'Release=10.05.21'print 'Comment=For best use have 10 letters on rack'print 'Letters=E,0,1,2,3,4,5,6,7,8,9,-,*,/,+,.,!,^,S,C,R,F,%,K,T,L,M,N,P,U,V,W,X,Y,Z,G,H'print 'Values=1,2,1,1,2,2,3,3,4,3,4,3,4,4,3,10,8,9,6,7,5,10,5,6,8,12,14,16,18,20,11,13,15,17,19,7,9'print 'Counts=18,6,8,7,6,6,6,6,5,5,5,3,3,3,3,1,1,1,1,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0'print 'Key='print '[Replace]'print '-=\xe2\x88\x92'print '*=\xc3\x97'print '/=\xc3\xb7'print 'E=\xe2\x81\xbc'print 'S=\xc2\xb2'print 'C=\xc2\xb3'print 'R=\xe2\x88\x9a'print 'F=\xe2\x88\x9c'print '%=\xe1\xb5\x90\xe1\xb5\x92\xe1\xb5\x88'print 'K=\xe2\x88\x9b'print 'T=\xe2\x81\xb4'print 'L=\xe2\x81\xb5'print 'M=\xe2\x81\xb6'print 'N=\xe2\x81\xb7'print 'P=\xe2\x81\xb8'print 'U=\xe2\x81\xb9'print 'V=\xe2\x81\xb5\xe2\x88\x9a'print 'W=\xe2\x81\xb6\xe2\x88\x9a'print 'X=\xe2\x81\xb7\xe2\x88\x9a'print 'Y=\xe2\x81\xb8\xe2\x88\x9a'print 'Z=\xe2\x81\xb9\xe2\x88\x9a'print 'G=\xc2\xb9'print 'H=\xe2\x81\xb0'print '[Categories]'print '1=Addition'print '2=Subtraction'print '3=Multiplication'print '4=Division'print '5=Exponentiation'print '6=Roots'print '7=Factorial'print '8=Decimals'print '9=Modulo'print '[Words]'for i in range(10000): print str(i) + 'E' + str(i) if i % 10 != 0: print str(float(i) / 10) + 'E' + str(float(i) / 10) print str(float(i) / 100) + 'E' + str(float(i) / 100) print str(float(i) / 1000) + 'E' + str(float(i) / 1000)for i in range(1000): for j in range(i, 10000): k = i + j if len(str(i) + str(j) + str(k)) >= 10: break else: print str(i) + '+' + str(j) + 'E' + str(k) + '=;1' if i != j: print str(j) + '+' + str(i) + 'E' + str(k) + '=;1' print str(k) + 'E' + str(i) + '+' + str(j) + '=;1' if i != j: print str(k) + 'E' + str(j) + '+' + str(i) + '=;1' print str(k) + '-' + str(i) + 'E' + str(j) + '=;2' if i != j: print str(k) + '-' + str(j) + 'E' + str(i) + '=;2' print str(j) + 'E' + str(k) + '-' + str(i) + '=;2' if i != j: print str(i) + 'E' + str(k) + '-' + str(j) + '=;2' if (i % 10 != 0 or j % 10 != 0) and k < 100: x = (float(i) / 10, i / 10) [i % 10 == 0] y = (float(j) / 10, j / 10) [j % 10 == 0] z = (float(k) / 10, k / 10) [k % 10 == 0] print str(x) + '+' + str(y) + 'E' + str(z) + '=;8' if x != y: print str(y) + '+' + str(x) + 'E' + str(z) + '=;8' print str(z) + 'E' + str(x) + '+' + str(y) + '=;8' if x != y: print str(z) + 'E' + str(y) + '+' + str(x) + '=;8' print str(z) + '-' + str(x) + 'E' + str(y) + '=;8' if x != y: print str(z) + '-' + str(y) + 'E' + str(x) + '=;8' print str(y) + 'E' + str(z) + '-' + str(x) + '=;8' if x != y: print str(x) + 'E' + str(z) + '-' + str(y) + '=;8' if (i % 100 == 0 or j % 100 == 0 or k % 100 == 0) and (i % 100 != 0 or j % 100 != 0 or k % 100 != 0) and k < 1000: x = (float(i) / 100, i / 100) [i % 100 == 0] y = (float(j) / 100, j / 100) [j % 100 == 0] z = (float(k) / 100, k / 100) [k % 100 == 0] print str(x) + '+' + str(y) + 'E' + str(z) + '=;8' if x != y: print str(y) + '+' + str(x) + 'E' + str(z) + '=;8' print str(z) + 'E' + str(x) + '+' + str(y) + '=;8' if x != y: print str(z) + 'E' + str(y) + '+' + str(x) + '=;8' print str(z) + '-' + str(x) + 'E' + str(y) + '=;8' if x != y: print str(z) + '-' + str(y) + 'E' + str(x) + '=;8' print str(y) + 'E' + str(z) + '-' + str(x) + '=;8' if x != y: print str(x) + 'E' + str(z) + '-' + str(y) + '=;8's = set([])for i in range(1, 100): for j in range(i, 10000): k = i * j if len(str(i) + str(j) + str(k)) >= 11: break else: print str(i) + '*' + str(j) + 'E' + str(k) + '=;3' if i != j: print str(j) + '*' + str(i) + 'E' + str(k) + '=;3' print str(k) + 'E' + str(i) + '*' + str(j) + '=;3' if i != j: print str(k) + 'E' + str(j) + '*' + str(i) + '=;3' print str(k) + '/' + str(i) + 'E' + str(j) + '=;4' if i != j: print str(k) + '/' + str(j) + 'E' + str(i) + '=;4' print str(j) + 'E' + str(k) + '/' + str(i) + '=;4' if i != j: print str(i) + 'E' + str(k) + '/' + str(j) + '=;4' s.add((i, j)) s.add((j, i)) y = j while True: if y < 1 and (len(str(y)) >= 11 or 'e' in str(y)): break x = i while True: z = x * y if z % 1 == 0: z = int(z) if x < 1 and len(str(x) + str(y) + str(z)) >= 11: break if (x, y) not in s and len(str(x) + str(y) + str(z)) <= 10: print str(x) + '*' + str(y) + 'E' + str(z) + '=;8' if x != y: print str(y) + '*' + str(x) + 'E' + str(z) + '=;8' print str(z) + 'E' + str(x) + '*' + str(y) + '=;8' if x != y: print str(z) + 'E' + str(y) + '*' + str(x) + '=;8' print str(z) + '/' + str(x) + 'E' + str(y) + '=;8' if x != y: print str(z) + '/' + str(y) + 'E' + str(x) + '=;8' print str(y) + 'E' + str(z) + '/' + str(x) + '=;8' if x != y: print str(x) + 'E' + str(z) + '/' + str(y) + '=;8' s.add((x, y)) s.add((y, x)) x = (float(x) / 10, x / 10) [x % 10 == 0] y = (float(y) / 10, y / 10) [y % 10 == 0]for i in range(100, 1000, 4): for j in range(100, 1000, 25): y = j while True: if y < 1 and (len(str(y)) >= 11 or 'e' in str(y)): break x = i while True: z = x * y if z % 1 == 0: z = int(z) if x < 1 and len(str(x) + str(y) + str(z)) >= 11: break if (x, y) not in s and len(str(x) + str(y) + str(z)) <= 10: print str(x) + '*' + str(y) + 'E' + str(z) + '=;8' if x != y: print str(y) + '*' + str(x) + 'E' + str(z) + '=;8' print str(z) + 'E' + str(x) + '*' + str(y) + '=;8' if x != y: print str(z) + 'E' + str(y) + '*' + str(x) + '=;8' print str(z) + '/' + str(x) + 'E' + str(y) + '=;8' if x != y: print str(z) + '/' + str(y) + 'E' + str(x) + '=;8' print str(y) + 'E' + str(z) + '/' + str(x) + '=;8' if x != y: print str(x) + 'E' + str(z) + '/' + str(y) + '=;8' s.add((x, y)) s.add((y, x)) x = (float(x) / 10, x / 10) [x % 10 == 0] y = (float(y) / 10, y / 10) [y % 10 == 0]for i in range(12, 1000, 4): for j in range(1000, 10000, 25): y = j while True: if y < 1 and (len(str(y)) >= 11 or 'e' in str(y)): break x = i while True: z = x * y if z % 1 == 0: z = int(z) if x < 1 and len(str(x) + str(y) + str(z)) >= 11: break if (x, y) not in s and len(str(x) + str(y) + str(z)) <= 10: print str(x) + '*' + str(y) + 'E' + str(z) + '=;8' if x != y: print str(y) + '*' + str(x) + 'E' + str(z) + '=;8' print str(z) + 'E' + str(x) + '*' + str(y) + '=;8' if x != y: print str(z) + 'E' + str(y) + '*' + str(x) + '=;8' print str(z) + '/' + str(x) + 'E' + str(y) + '=;8' if x != y: print str(z) + '/' + str(y) + 'E' + str(x) + '=;8' print str(y) + 'E' + str(z) + '/' + str(x) + '=;8' if x != y: print str(x) + 'E' + str(z) + '/' + str(y) + '=;8' s.add((x, y)) s.add((y, x)) x = (float(x) / 10, x / 10) [x % 10 == 0] y = (float(y) / 10, y / 10) [y % 10 == 0]for i in range(10000): print '0*' + str(i) + 'E0=;3' if i != 0: print str(i) + '*0E0=;3' print '0E0*' + str(i) + '=;3' if i != 0: print '0E' + str(i) + '*0=;3' print '0/' + str(i) + 'E0=;4' if i != 0: print '0E0/' + str(i) + '=;4' if i % 10 != 0: print '0*' + str(float(i) / 10) + 'E0=;8' print str(float(i) / 10) + '*0E0=;8' print '0E0*' + str(float(i) / 10) + '=;8' print '0E' + str(float(i) / 10) + '*0=;8' print '0/' + str(float(i) / 10) + 'E0=;8' print '0E0/' + str(float(i) / 10) + '=;8' print '0*' + str(float(i) / 100) + 'E0=;8' print str(float(i) / 100) + '*0E0=;8' print '0E0*' + str(float(i) / 100) + '=;8' print '0E' + str(float(i) / 100) + '*0=;8' print '0/' + str(float(i) / 100) + 'E0=;8' print '0E0/' + str(float(i) / 100) + '=;8' print '0*' + str(float(i) / 1000) + 'E0=;8' print str(float(i) / 1000) + '*0E0=;8' print '0E0*' + str(float(i) / 1000) + '=;8' print '0E' + str(float(i) / 1000) + '*0=;8' print '0/' + str(float(i) / 1000) + 'E0=;8' print '0E0/' + str(float(i) / 1000) + '=;8'print '0SE0=;5'print '0CE0=;5'print '0TE0=;5'print '0E0S=;5'print '0E0C=;5'print '0E0T=;5'print 'R0E0=;6'print 'K0E0=;6'print 'F0E0=;6'print '0ER0=;6'print '0EK0=;6'print '0EF0=;6'for i in range(1, 1000): print '0^' + str(i) + 'E0=;5' print '0E0^' + str(i) + '=;5' if i % 10 != 0: print '0^' + str(float(i) / 10) + 'E0=;8' print '0E0^' + str(float(i) / 10) + '=;8' print '1^' + str(float(i) / 10) + 'E1=;8' print '1E1^' + str(float(i) / 10) + '=;8' print str(float(i) / 10) + '^0E1=;8' print '1E' + str(float(i) / 10) + '^0=;8' print '0^' + str(float(i) / 100) + 'E0=;8' print '0E0^' + str(float(i) / 100) + '=;8' print '1^' + str(float(i) / 100) + 'E1=;8' print '1E1^' + str(float(i) / 100) + '=;8' print str(float(i) / 100) + '^0E1=;8' print '1E' + str(float(i) / 100) + '^0=;8' print '0^' + str(float(i) / 1000) + 'E0=;8' print '0E0^' + str(float(i) / 1000) + '=;8' print '1^' + str(float(i) / 1000) + 'E1=;8' print '1E1^' + str(float(i) / 1000) + '=;8' print str(float(i) / 1000) + '^0E1=;8' print '1E' + str(float(i) / 1000) + '^0=;8'for i in range(1, 10000): for j in range(10000): k = i ** j if len(str(i) + str(j) + str(k)) >= 11: break print str(i) + '^' + str(j) + 'E' + str(k) + '=;5' print str(k) + 'E' + str(i) + '^' + str(j) + '=;5' if j == 2: print str(i) + 'SE' + str(k) + '=;5' print str(k) + 'E' + str(i) + 'S=;5' print 'R' + str(k) + 'E' + str(i) + '=;6' print str(i) + 'ER' + str(k) + '=;6' elif j == 3: print str(i) + 'CE' + str(k) + '=;5' print str(k) + 'E' + str(i) + 'C=;5' print 'K' + str(k) + 'E' + str(i) + '=;6' print str(i) + 'EK' + str(k) + '=;6' elif j == 4: print str(i) + 'TE' + str(k) + '=;5' print str(k) + 'E' + str(i) + 'T=;5' print 'F' + str(k) + 'E' + str(i) + '=;6' print str(i) + 'EF' + str(k) + '=;6' if i % 10 != 0 and j > 0 and j <= 4: x = float(i) / 10 z = float(k) / (10 ** j) while 'e' not in str(z) and len(str(x) + str(j) + str(z)) <= 10: print str(x) + '^' + str(j) + 'E' + str(z) + '=;8' print str(z) + 'E' + str(x) + '^' + str(j) + '=;8' if j == 2: print str(x) + 'SE' + str(z) + '=;8' print str(z) + 'E' + str(x) + 'S=;8' print 'R' + str(z) + 'E' + str(x) + '=;8' print str(x) + 'ER' + str(z) + '=;8' elif j == 3: print str(x) + 'CE' + str(z) + '=;8' print str(z) + 'E' + str(x) + 'C=;8' print 'K' + str(z) + 'E' + str(x) + '=;8' print str(x) + 'EK' + str(z) + '=;8' elif j == 4: print str(x) + 'TE' + str(z) + '=;8' print str(z) + 'E' + str(x) + 'T=;8' print 'F' + str(z) + 'E' + str(x) + '=;8' print str(x) + 'EF' + str(z) + '=;8' x /= 10 z /= (10 ** j)j = 1for i in range(15): if i > 0: j *= i print str(i) + '!E' + str(j) + '=;7' print str(j) + 'E' + str(i) + '!=;7' ``unique.py12345678910111213 ``file = open('C:\\Python27\\math.dic', 'r')for i in range(46): s = file.readline()l = set([])for line in file: l.add(line[:-1])file.close()document = open('C:\\Python27\\math.dic', 'r')for i in range(46): t = document.readline() print t[:-1]for item in l: print item ``          By the way, my Maths dictionary uses keyboard characters to replace all symbols that are not available in the keyboard.So, if there is any problem for dragging and dropping by mouse (as was the case with my own modified and compiled source code in a Windows virtual box running an Ubuntu operating system), then keyboard typing to place on the board will always be an alternative.On the other hand, I also prepared another version of Maths dictionary. It is in Equate game style. It gives extensive emphasis to different irreducible fractions with denominators less than 10 and those with denominators 12.Only addition, subtraction, multiplication and division are the operators used. Multiplication and division tiles are greater in number here than addition and subtraction tiles so that fractions with different denominators can combine together more easily and so they have lesser number of points here.My Equate game style Maths dictionary contains 781328 equations that will take Scrabble3D application only a few minutes to load. Longer equations are not given emphasis here because fractional tiles will dominate the rack most of the time restricting the players from forming longer equations.equate.dic: https://drive.google.com/file/d/1P4oYimG...iew?usp=sharingequate.py123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287 ``num = [1, 1, 2, 1, 3, 1, 2, 3, 4, 1, 5, 1, 2, 3, 4, 5, 6, 1, 3, 5, 7, 1, 2, 4, 5, 7, 8, 1, 3, 7, 9, 1, 5, 7, 11, 0]den = [2, 3, 3, 4, 4, 5, 5, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 12, 12, 12, 12, 1]sym = ['#', '\$', '&', '(', ')', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '%', ':', '^', '.', '!']conj = [0, 2, 1, 4, 3, 8, 7, 6, 5, 10, 9, 16, 15, 14, 13, 12, 11, 20, 19, 18, 17, 26, 25, 24, 23, 22, 21, 30, 29, 28, 27, 34, 33, 32, 31, 35]m = ["\xe2\x81\xb0", "\xc2\xb9", "\xc2\xb2", "\xc2\xb3", "\xe2\x81\xb4", "\xe2\x81\xb5", "\xe2\x81\xb6", "\xe2\x81\xb7", "\xe2\x81\xb8", "\xe2\x81\xb9"]n = ["\xe2\x82\x80", "\xe2\x82\x81", "\xe2\x82\x82", "\xe2\x82\x83", "\xe2\x82\x84", "\xe2\x82\x85", "\xe2\x82\x86", "\xe2\x82\x87", "\xe2\x82\x88", "\xe2\x82\x89"]d = {}for j in range(len(sym) - 1): d[(num[j], den[j])] = sym[j]def superscript(s): a = "" for c in s: a += m[ord(c) - 48] return adef subscript(t): b = "" for d in t: b += n[ord(d) - 48] return bdef gcd(p, q): while q > 0: (p, q) = (q, p % q) return pdef string(nu, de): result = '' if nu >= de or nu == 0: result += str(nu / de) if nu % de > 0: result += d[(nu % de, de)] return resultdef terms(nu, de): result = 0 if nu >= de or nu == 0: result += len(str(nu / de)) if nu % de > 0: result += 1 return resultprint '[Header]'print 'Version=100000'print 'Author=Raman Viswanathan 'print 'StandardCategory=Equalities'print 'Licence=GNU General Public License, v3'print 'Release=24.10.20'print 'Comment=Equate game style of Scrabble with mathematical equations'print 'Letters=@,0,1,2,3,4,5,6,7,8,9,-,*,/,+,#,\$,&,(,),A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,%,:,^,.'print 'Values=1,2,1,1,2,2,3,3,4,3,4,4,3,3,4,5,6,6,5,5,8,8,8,8,7,7,10,10,10,10,10,10,8,8,8,8,10,10,10,10,10,10,9,9,9,9,9,9,9,9'print 'Counts=36,8,10,9,8,8,8,8,7,7,7,7,11,11,7,4,2,2,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1'print 'Key='print '[Replace]'print '-=\xe2\x88\x92'print '*=\xc3\x97'print '/=\xc3\xb7'print '@=\xe2\x81\xbc'for i in range(len(sym) - 1): print sym[i] + '=' + superscript(str(num[i])) + '/' + subscript(str(den[i]))print '[Categories]'print '1=Addition'print '2=Subtraction'print '3=Multiplication'print '4=Division'print '[Words]'for k in range(10000): print str(k) + '@' + str(k) + '='for k in range(100): for l in range(len(sym) - 1): print (str(k), '') [k == 0] + d[(num[l], den[l])] + '@' + (str(k), '') [k == 0] + d[(num[l], den[l])] + '='for k in range(10): for l in range(len(sym) - 1): for o in range(10): for r in range(len(sym) - 1): t = den[l] * k + num[l] u = den[l] v = den[r] * o + num[r] w = den[r] y = t * w + u * v z = u * w g = gcd(y, z) y /= g z /= g if z > 12 or z == 11 or y % z == 0: continue if terms(t, u) + terms(v, w) + terms(y, z) <= 6: print string(t, u) + '+' + string(v, w) + '@' + string(y, z) + '=;1' print string(y, z) + '@' + string(t, u) + '+' + string(v, w) + '=;1' print string(y, z) + '-' + string(t, u) + '@' + string(v, w) + '=;2' print string(v, w) + '@' + string(y, z) + '-' + string(t, u) + '=;2'for k in range(100): for l in range(len(sym) - 1, len(sym)): for o in range(100): for r in range(len(sym) - 1): t = den[l] * k + num[l] u = den[l] v = den[r] * o + num[r] w = den[r] y = t * w + u * v z = u * w g = gcd(y, z) y /= g z /= g if z > 12 or z == 11: continue if terms(t, u) + terms(v, w) + terms(y, z) <= 6: print string(t, u) + '+' + string(v, w) + '@' + string(y, z) + '=;1' print string(y, z) + '@' + string(t, u) + '+' + string(v, w) + '=;1' print string(y, z) + '-' + string(t, u) + '@' + string(v, w) + '=;2' print string(v, w) + '@' + string(y, z) + '-' + string(t, u) + '=;2'for k in range(100): for l in range(len(sym) - 1): for o in range(100): for r in range(len(sym) - 1, len(sym)): t = den[l] * k + num[l] u = den[l] v = den[r] * o + num[r] w = den[r] y = t * w + u * v z = u * w g = gcd(y, z) y /= g z /= g if z > 12 or z == 11: continue if terms(t, u) + terms(v, w) + terms(y, z) <= 6: print string(t, u) + '+' + string(v, w) + '@' + string(y, z) + '=;1' print string(y, z) + '@' + string(t, u) + '+' + string(v, w) + '=;1' print string(y, z) + '-' + string(t, u) + '@' + string(v, w) + '=;2' print string(v, w) + '@' + string(y, z) + '-' + string(t, u) + '=;2'for k in range(100): for l in range(len(sym) - 1): for o in range(100): for r in range(conj[l], conj[l] + 1): t = den[l] * k + num[l] u = den[l] v = den[r] * o + num[r] w = den[r] y = t * w + u * v z = u * w g = gcd(y, z) y /= g z /= g if z > 12 or z == 11: continue if terms(t, u) + terms(v, w) + terms(y, z) <= 6: print string(t, u) + '+' + string(v, w) + '@' + string(y, z) + '=;1' print string(y, z) + '@' + string(t, u) + '+' + string(v, w) + '=;1' print string(y, z) + '-' + string(t, u) + '@' + string(v, w) + '=;2' print string(v, w) + '@' + string(y, z) + '-' + string(t, u) + '=;2'for k in range(1000): for o in range(1000): y = k + o if len(str(k)) + len(str(o)) + len(str(y)) <= 7: print str(k) + '+' + str(o) + '@' + str(y) + '=;1' print str(y) + '@' + str(k) + '+' + str(o) + '=;1' print str(y) + '-' + str(k) + '@' + str(o) + '=;2' print str(o) + '@' + str(y) + '-' + str(k) + '=;2'for k in range(100): for l in range(len(sym) - 1): for o in range(100): for r in range(len(sym) - 1): t = den[l] * k + num[l] u = den[l] v = den[r] * o + num[r] w = den[r] y = t * v z = u * w g = gcd(y, z) y /= g z /= g if z > 12 or z == 11: continue if terms(t, u) + terms(v, w) + terms(y, z) <= 6: print string(t, u) + '*' + string(v, w) + '@' + string(y, z) + '=;3' print string(y, z) + '@' + string(t, u) + '*' + string(v, w) + '=;3' print string(y, z) + '/' + string(t, u) + '@' + string(v, w) + '=;4' print string(v, w) + '@' + string(y, z) + '/' + string(t, u) + '=;4'for k in range(100): for l in range(len(sym) - 1, len(sym)): for o in range(100): for r in range(len(sym) - 1): t = den[l] * k + num[l] u = den[l] v = den[r] * o + num[r] w = den[r] y = t * v z = u * w g = gcd(y, z) y /= g z /= g if z > 12 or z == 11: continue if terms(t, u) + terms(v, w) + terms(y, z) <= 6: print string(t, u) + '*' + string(v, w) + '@' + string(y, z) + '=;3' print string(y, z) + '@' + string(t, u) + '*' + string(v, w) + '=;3' if k > 0: print string(y, z) + '/' + string(t, u) + '@' + string(v, w) + '=;4' print string(v, w) + '@' + string(y, z) + '/' + string(t, u) + '=;4'for k in range(100): for l in range(len(sym) - 1): for o in range(100): for r in range(len(sym) - 1, len(sym)): t = den[l] * k + num[l] u = den[l] v = den[r] * o + num[r] w = den[r] y = t * v z = u * w g = gcd(y, z) y /= g z /= g if z > 12 or z == 11: continue if terms(t, u) + terms(v, w) + terms(y, z) <= 6: print string(t, u) + '*' + string(v, w) + '@' + string(y, z) + '=;3' print string(y, z) + '@' + string(t, u) + '*' + string(v, w) + '=;3' print string(y, z) + '/' + string(t, u) + '@' + string(v, w) + '=;4' print string(v, w) + '@' + string(y, z) + '/' + string(t, u) + '=;4'for k in range(1, 100): for l in range(len(sym) - 1, len(sym)): for o in range(100): for r in range(len(sym) - 1): t = den[l] * k + num[l] u = den[l] v = den[r] * o + num[r] w = den[r] y = t * v z = u * w g = gcd(y, z) y /= g z /= g if z > 12 or z == 11: continue if terms(t, u) + terms(v, w) + terms(y, z) == 7: print string(t, u) + '*' + string(v, w) + '@' + string(y, z) + '=;3' print string(y, z) + '@' + string(t, u) + '*' + string(v, w) + '=;3' if k > 0: print string(y, z) + '/' + string(t, u) + '@' + string(v, w) + '=;4' print string(v, w) + '@' + string(y, z) + '/' + string(t, u) + '=;4'for k in range(100): for l in range(len(sym) - 1): for o in range(1, 100): for r in range(len(sym) - 1, len(sym)): t = den[l] * k + num[l] u = den[l] v = den[r] * o + num[r] w = den[r] y = t * v z = u * w g = gcd(y, z) y /= g z /= g if z > 12 or z == 11: continue if terms(t, u) + terms(v, w) + terms(y, z) == 7: print string(t, u) + '*' + string(v, w) + '@' + string(y, z) + '=;3' print string(y, z) + '@' + string(t, u) + '*' + string(v, w) + '=;3' print string(y, z) + '/' + string(t, u) + '@' + string(v, w) + '=;4' print string(v, w) + '@' + string(y, z) + '/' + string(t, u) + '=;4'for k in range(1, 1000): for o in range(1, 1000): y = k * o if len(str(k)) + len(str(o)) + len(str(y)) <= 8: print str(k) + '*' + str(o) + '@' + str(y) + '=;3' print str(y) + '@' + str(k) + '*' + str(o) + '=;3' print str(y) + '/' + str(k) + '@' + str(o) + '=;4' print str(o) + '@' + str(y) + '/' + str(k) + '=;4'print '0*0@0=;3'print '0@0*0=;3'for k in range(1, 10000): print '0*' + str(k) + '@0=;3' print '0@0*' + str(k) + '=;3' print str(k) + '*0@0=;3' print '0@' + str(k) + '*0=;3' print '0/' + str(k) + '@0=;4' print '0@0/' + str(k) + '=;4'for l in range(len(sym) - 1): k = range(0, 1000, den[l]) for r in range(len(k)): y = k[r] * num[l] / den[l] z = k[r] if z >= 100: print sym[l] + '*' + str(z) + '@' + str(y) + '=;3' print str(z) + '*' + sym[l] + '@' + str(y) + '=;3' print str(y) + '@' + sym[l] + '*' + str(z) + '=;3' print str(y) + '@' + str(z) + '*' + sym[l] + '=;3' print str(y) + '/' + str(z) + '@' + sym[l] + '=;4' print str(y) + '/' + sym[l] + '@' + str(z) + '=;4' print sym[l] + '@' + str(y) + '/' + str(z) + '=;4' print str(z) + '@' + str(y) + '/' + sym[l] + '=;4' ``          Maths Scrabble should be open to play for everyone in the world and not speakers of a particular language.
Scotty Offline Beiträge: 3.747

13.05.2021 09:23
 #28 RE: Math scrabble implemented Zitat · Antworten
 If you modify the dictionary after you loaded it into the program, eg. add a description and revert back, you will be asked if these changes should be saved. Do so to get the correct sorting order which makes the next loading much faster. Unfortunately it encrypts the data and I have to run it with an extra build to keep it readable (if you managed to build, it's the function Save() in udictionary.And I like it very much. Could be used in school to learn fractional arithmetic. Download: Sourceforge | Help:Wiki | Discussion: Forum | News: Twitter | Fanship: Facebook | IRC: Freenode #scrabble3d
Raman Offline  Beiträge: 167

25.05.2021 13:48
 #29 RE: Math scrabble implemented Zitat · Antworten
 Yes, as per your advice I sorted my large maths dictionary and loaded it into the program. It took only 1 minute to load the large maths dictionary containing over 5 million equations.I did not modify the dictionary in the Scrabble3D application by using 'Word Search' feature and save it while exiting the Scrabble3D application. This encrypts the dictionary.A simple Python program would sort the dictionary without encrypting by using sort() function assuming that sorting is done strictly based upon ASCII and Unicode values of each character.unsorted.py12345678910111213 ``file = open('C:\\Python27\\unsorted.dic', 'r')for i in range(46): s = file.readline() print s[:-1]l = []for line in file: t = line[:-1] (u, v) = t.split('=') l.append((u, v))file.close()l.sort()for (key, value) in l: print key + '=' + value ``To my previous version of maths dictionary in my previous post in this thread, I made a few corrections.I removed invalid equation: 0 ÷ 0 = 0, added addition and subtraction equations with decimals of length 10 and 11 with two of the terms having one same digit after decimal point and one of the terms being an integer, added power equations with exponent having decimals and base being not 0 and 1, added four digit integers for power of 0, added equations of length 12 for unary operators like square root, cube root, fourth root, square, cube and fourth power.I also removed duplicate equations with decimals of length 9 with two of the terms having one single digit after decimal point and one of the terms being an integer, for unique.py to remove duplicate equations from math.dic as an another program and output to unsorted.dic.Now that my updated maths dictionary contains 5465122 equations. Let me know if you will be interested in it.arithmetic.dic: https://drive.google.com/file/d/1y-qLE_y...iew?usp=sharingmaths.dic: https://drive.google.com/file/d/1YQ9a3jp...iew?usp=sharingmaths.dic replaces some non-keyboard characters of arithmetic.dic to be suitable for keyboard typing, although the characters displayed on tiles in Scrabble board is not changed.⁼, −, ×, ÷, ², ³, ⁴, √, ∛, ∜ are replaced by E, -, *, /, S, C, T, R, K, F respectively.E for equals, S for square, C for cube, T for tesseract (fourth power), R for root (square root), K for cube root and F for fourth root.maths.py123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357 ``print '[Header]'print 'Version=100005'print 'Author=Raman Viswanathan 'print 'StandardCategory=Equalities'print 'Licence=GNU General Public License, v3'print 'Release=24.05.21'print 'Comment=For best use have 10 letters on rack'print 'Letters=E,0,1,2,3,4,5,6,7,8,9,-,*,/,+,.,!,^,S,C,R,F,%,K,T,L,M,N,P,U,V,W,X,Y,Z,G,H'print 'Values=1,2,1,1,2,2,3,3,4,3,4,3,4,4,3,10,8,9,6,7,5,10,5,6,8,12,14,16,18,20,11,13,15,17,19,7,9'print 'Counts=18,6,8,7,6,6,6,6,5,5,5,3,3,3,3,1,1,1,1,1,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0'print 'Key='print '[Replace]'print '-=\xe2\x88\x92'print '*=\xc3\x97'print '/=\xc3\xb7'print 'E=\xe2\x81\xbc'print 'S=\xc2\xb2'print 'C=\xc2\xb3'print 'R=\xe2\x88\x9a'print 'F=\xe2\x88\x9c'print '%=\xe1\xb5\x90\xe1\xb5\x92\xe1\xb5\x88'print 'K=\xe2\x88\x9b'print 'T=\xe2\x81\xb4'print 'L=\xe2\x81\xb5'print 'M=\xe2\x81\xb6'print 'N=\xe2\x81\xb7'print 'P=\xe2\x81\xb8'print 'U=\xe2\x81\xb9'print 'V=\xe2\x81\xb5\xe2\x88\x9a'print 'W=\xe2\x81\xb6\xe2\x88\x9a'print 'X=\xe2\x81\xb7\xe2\x88\x9a'print 'Y=\xe2\x81\xb8\xe2\x88\x9a'print 'Z=\xe2\x81\xb9\xe2\x88\x9a'print 'G=\xc2\xb9'print 'H=\xe2\x81\xb0'print '[Categories]'print '1=Addition'print '2=Subtraction'print '3=Multiplication'print '4=Division'print '5=Exponentiation'print '6=Roots'print '7=Factorial'print '8=Decimals'print '9=Modulo'print '[Words]'for i in range(10000): print str(i) + 'E' + str(i) + '=' if i % 10 != 0: print str(float(i) / 10) + 'E' + str(float(i) / 10) + '=' print str(float(i) / 100) + 'E' + str(float(i) / 100) + '=' print str(float(i) / 1000) + 'E' + str(float(i) / 1000) + '='for i in range(1000): for j in range(i, 10000): k = i + j if len(str(i) + str(j) + str(k)) >= 10: break else: print str(i) + '+' + str(j) + 'E' + str(k) + '=;1' if i != j: print str(j) + '+' + str(i) + 'E' + str(k) + '=;1' print str(k) + 'E' + str(i) + '+' + str(j) + '=;1' if i != j: print str(k) + 'E' + str(j) + '+' + str(i) + '=;1' print str(k) + '-' + str(i) + 'E' + str(j) + '=;2' if i != j: print str(k) + '-' + str(j) + 'E' + str(i) + '=;2' print str(j) + 'E' + str(k) + '-' + str(i) + '=;2' if i != j: print str(i) + 'E' + str(k) + '-' + str(j) + '=;2' if (i % 10 != 0 or j % 10 != 0) and k < 1000: x = (float(i) / 10, i / 10) [i % 10 == 0] y = (float(j) / 10, j / 10) [j % 10 == 0] z = (float(k) / 10, k / 10) [k % 10 == 0] if len(str(x) + str(y) + str(z)) <= 9: print str(x) + '+' + str(y) + 'E' + str(z) + '=;8' if x != y: print str(y) + '+' + str(x) + 'E' + str(z) + '=;8' print str(z) + 'E' + str(x) + '+' + str(y) + '=;8' if x != y: print str(z) + 'E' + str(y) + '+' + str(x) + '=;8' print str(z) + '-' + str(x) + 'E' + str(y) + '=;8' if x != y: print str(z) + '-' + str(y) + 'E' + str(x) + '=;8' print str(y) + 'E' + str(z) + '-' + str(x) + '=;8' if x != y: print str(x) + 'E' + str(z) + '-' + str(y) + '=;8' if (i % 100 == 0 or j % 100 == 0 or k % 100 == 0) and (i % 100 != 0 or j % 100 != 0 or k % 100 != 0) and k < 1000: if i % 10 != 0 or j % 10 != 0 or k % 10 != 0: x = (float(i) / 100, i / 100) [i % 100 == 0] y = (float(j) / 100, j / 100) [j % 100 == 0] z = (float(k) / 100, k / 100) [k % 100 == 0] print str(x) + '+' + str(y) + 'E' + str(z) + '=;8' if x != y: print str(y) + '+' + str(x) + 'E' + str(z) + '=;8' print str(z) + 'E' + str(x) + '+' + str(y) + '=;8' if x != y: print str(z) + 'E' + str(y) + '+' + str(x) + '=;8' print str(z) + '-' + str(x) + 'E' + str(y) + '=;8' if x != y: print str(z) + '-' + str(y) + 'E' + str(x) + '=;8' print str(y) + 'E' + str(z) + '-' + str(x) + '=;8' if x != y: print str(x) + 'E' + str(z) + '-' + str(y) + '=;8's = set([])for i in range(1, 100): for j in range(i, 10000): k = i * j if len(str(i) + str(j) + str(k)) >= 11: break else: print str(i) + '*' + str(j) + 'E' + str(k) + '=;3' if i != j: print str(j) + '*' + str(i) + 'E' + str(k) + '=;3' print str(k) + 'E' + str(i) + '*' + str(j) + '=;3' if i != j: print str(k) + 'E' + str(j) + '*' + str(i) + '=;3' print str(k) + '/' + str(i) + 'E' + str(j) + '=;4' if i != j: print str(k) + '/' + str(j) + 'E' + str(i) + '=;4' print str(j) + 'E' + str(k) + '/' + str(i) + '=;4' if i != j: print str(i) + 'E' + str(k) + '/' + str(j) + '=;4' s.add((i, j)) s.add((j, i)) y = j while True: if y < 1 and (len(str(y)) >= 11 or 'e' in str(y)): break x = i while True: z = x * y if z % 1 == 0: z = int(z) if x < 1 and len(str(x) + str(y) + str(z)) >= 11: break if (x, y) not in s and len(str(x) + str(y) + str(z)) <= 10: print str(x) + '*' + str(y) + 'E' + str(z) + '=;8' if x != y: print str(y) + '*' + str(x) + 'E' + str(z) + '=;8' print str(z) + 'E' + str(x) + '*' + str(y) + '=;8' if x != y: print str(z) + 'E' + str(y) + '*' + str(x) + '=;8' print str(z) + '/' + str(x) + 'E' + str(y) + '=;8' if x != y: print str(z) + '/' + str(y) + 'E' + str(x) + '=;8' print str(y) + 'E' + str(z) + '/' + str(x) + '=;8' if x != y: print str(x) + 'E' + str(z) + '/' + str(y) + '=;8' s.add((x, y)) s.add((y, x)) x = (float(x) / 10, x / 10) [x % 10 == 0] y = (float(y) / 10, y / 10) [y % 10 == 0]for i in range(100, 1000, 4): for j in range(100, 1000, 25): y = j while True: if y < 1 and (len(str(y)) >= 11 or 'e' in str(y)): break x = i while True: z = x * y if z % 1 == 0: z = int(z) if x < 1 and len(str(x) + str(y) + str(z)) >= 11: break if (x, y) not in s and len(str(x) + str(y) + str(z)) <= 10: print str(x) + '*' + str(y) + 'E' + str(z) + '=;8' if x != y: print str(y) + '*' + str(x) + 'E' + str(z) + '=;8' print str(z) + 'E' + str(x) + '*' + str(y) + '=;8' if x != y: print str(z) + 'E' + str(y) + '*' + str(x) + '=;8' print str(z) + '/' + str(x) + 'E' + str(y) + '=;8' if x != y: print str(z) + '/' + str(y) + 'E' + str(x) + '=;8' print str(y) + 'E' + str(z) + '/' + str(x) + '=;8' if x != y: print str(x) + 'E' + str(z) + '/' + str(y) + '=;8' s.add((x, y)) s.add((y, x)) x = (float(x) / 10, x / 10) [x % 10 == 0] y = (float(y) / 10, y / 10) [y % 10 == 0]for i in range(12, 1000, 4): for j in range(1000, 10000, 25): y = j while True: if y < 1 and (len(str(y)) >= 11 or 'e' in str(y)): break x = i while True: z = x * y if z % 1 == 0: z = int(z) if x < 1 and len(str(x) + str(y) + str(z)) >= 11: break if (x, y) not in s and len(str(x) + str(y) + str(z)) <= 10: print str(x) + '*' + str(y) + 'E' + str(z) + '=;8' if x != y: print str(y) + '*' + str(x) + 'E' + str(z) + '=;8' print str(z) + 'E' + str(x) + '*' + str(y) + '=;8' if x != y: print str(z) + 'E' + str(y) + '*' + str(x) + '=;8' print str(z) + '/' + str(x) + 'E' + str(y) + '=;8' if x != y: print str(z) + '/' + str(y) + 'E' + str(x) + '=;8' print str(y) + 'E' + str(z) + '/' + str(x) + '=;8' if x != y: print str(x) + 'E' + str(z) + '/' + str(y) + '=;8' s.add((x, y)) s.add((y, x)) x = (float(x) / 10, x / 10) [x % 10 == 0] y = (float(y) / 10, y / 10) [y % 10 == 0]for i in range(10000): print '0*' + str(i) + 'E0=;3' print '0E0*' + str(i) + '=;3' if i != 0: print str(i) + '*0E0=;3' print '0E' + str(i) + '*0=;3' print '0/' + str(i) + 'E0=;4' print '0E0/' + str(i) + '=;4' if i % 10 != 0: print '0*' + str(float(i) / 10) + 'E0=;8' print str(float(i) / 10) + '*0E0=;8' print '0E0*' + str(float(i) / 10) + '=;8' print '0E' + str(float(i) / 10) + '*0=;8' print '0/' + str(float(i) / 10) + 'E0=;8' print '0E0/' + str(float(i) / 10) + '=;8' print '0*' + str(float(i) / 100) + 'E0=;8' print str(float(i) / 100) + '*0E0=;8' print '0E0*' + str(float(i) / 100) + '=;8' print '0E' + str(float(i) / 100) + '*0=;8' print '0/' + str(float(i) / 100) + 'E0=;8' print '0E0/' + str(float(i) / 100) + '=;8' print '0*' + str(float(i) / 1000) + 'E0=;8' print str(float(i) / 1000) + '*0E0=;8' print '0E0*' + str(float(i) / 1000) + '=;8' print '0E' + str(float(i) / 1000) + '*0=;8' print '0/' + str(float(i) / 1000) + 'E0=;8' print '0E0/' + str(float(i) / 1000) + '=;8'print '0SE0=;5'print '0CE0=;5'print '0TE0=;5'print '0E0S=;5'print '0E0C=;5'print '0E0T=;5'print 'R0E0=;6'print 'K0E0=;6'print 'F0E0=;6'print '0ER0=;6'print '0EK0=;6'print '0EF0=;6'for i in range(1, 1000): print '0^' + str(i) + 'E0=;5' print '0E0^' + str(i) + '=;5' if i % 10 != 0: print '0^' + str(float(i) / 10) + 'E0=;8' print '0E0^' + str(float(i) / 10) + '=;8' print '1^' + str(float(i) / 10) + 'E1=;8' print '1E1^' + str(float(i) / 10) + '=;8' print str(float(i) / 10) + '^0E1=;8' print '1E' + str(float(i) / 10) + '^0=;8' print '0^' + str(float(i) / 100) + 'E0=;8' print '0E0^' + str(float(i) / 100) + '=;8' print '1^' + str(float(i) / 100) + 'E1=;8' print '1E1^' + str(float(i) / 100) + '=;8' print str(float(i) / 100) + '^0E1=;8' print '1E' + str(float(i) / 100) + '^0=;8' print '0^' + str(float(i) / 1000) + 'E0=;8' print '0E0^' + str(float(i) / 1000) + '=;8' print '1^' + str(float(i) / 1000) + 'E1=;8' print '1E1^' + str(float(i) / 1000) + '=;8' print str(float(i) / 1000) + '^0E1=;8' print '1E' + str(float(i) / 1000) + '^0=;8'for i in range(1000, 10000): print '0^' + str(i) + 'E0=;5' print '0E0^' + str(i) + '=;5'for i in range(1, 10000): for j in range(10000): k = i ** j if len(str(i) + str(j) + str(k)) >= 12: break if len(str(i) + str(j) + str(k)) <= 10: print str(i) + '^' + str(j) + 'E' + str(k) + '=;5' print str(k) + 'E' + str(i) + '^' + str(j) + '=;5' if j == 2: print str(i) + 'SE' + str(k) + '=;5' print str(k) + 'E' + str(i) + 'S=;5' print 'R' + str(k) + 'E' + str(i) + '=;6' print str(i) + 'ER' + str(k) + '=;6' elif j == 3: print str(i) + 'CE' + str(k) + '=;5' print str(k) + 'E' + str(i) + 'C=;5' print 'K' + str(k) + 'E' + str(i) + '=;6' print str(i) + 'EK' + str(k) + '=;6' elif j == 4: print str(i) + 'TE' + str(k) + '=;5' print str(k) + 'E' + str(i) + 'T=;5' print 'F' + str(k) + 'E' + str(i) + '=;6' print str(i) + 'EF' + str(k) + '=;6' if i % 10 != 0 and j > 0 and j <= 4: x = float(i) / 10 z = float(k) / (10 ** j) while 'e' not in str(z) and len(str(x) + str(j) + str(z)) <= 11: if len(str(x) + str(j) + str(z)) <= 10: print str(x) + '^' + str(j) + 'E' + str(z) + '=;8' print str(z) + 'E' + str(x) + '^' + str(j) + '=;8' if j == 2: print str(x) + 'SE' + str(z) + '=;8' print str(z) + 'E' + str(x) + 'S=;8' print 'R' + str(z) + 'E' + str(x) + '=;8' print str(x) + 'ER' + str(z) + '=;8' elif j == 3: print str(x) + 'CE' + str(z) + '=;8' print str(z) + 'E' + str(x) + 'C=;8' print 'K' + str(z) + 'E' + str(x) + '=;8' print str(x) + 'EK' + str(z) + '=;8' elif j == 4: print str(x) + 'TE' + str(z) + '=;8' print str(z) + 'E' + str(x) + 'T=;8' print 'F' + str(z) + 'E' + str(x) + '=;8' print str(x) + 'EF' + str(z) + '=;8' x /= 10 z /= (10 ** j)j = 1for i in range(15): if i > 0: j *= i print str(i) + '!E' + str(j) + '=;7' print str(j) + 'E' + str(i) + '!=;7'for i in [2, 4, 5, 8, 10]: j = 1 while True: if (i % 2 == 0 and j % 2 == 0) or (i % 5 == 0 and j % 5 == 0): j += 1 continue if len(str(2 ** i) + str(float(j) / float(i)) + str(2 ** j)) >= 11: break k = 2 while True: x = k ** i y = float(j) / float(i) z = k ** j if len(str(x) + str(y) + str(z)) >= 11: break print str(x) + '^' + str(y) + 'E' + str(z) + '=;8' print str(z) + 'E' + str(x) + '^' + str(y) + '=;8' if k % 10 != 0: while True: x = float(x) / float(10 ** i) z = float(z) / float(10 ** j) if 'e' in str(x) or 'e' in str(z) or len(str(x) + str(y) + str(z)) >= 11: break print str(x) + '^' + str(y) + 'E' + str(z) + '=;8' print str(z) + 'E' + str(x) + '^' + str(y) + '=;8' k += 1 j += 1 ``     In the first two games above, in maths Scrabble with 100 tiles including two blanks, it was possible to play 99 tiles on the board, with only 1 tile remaining on one of the player's racks.It should be an optimal tile distribution for maths Scrabble. However that using more number of number tiles encourages players to just form longer equations simply with larger numbers.On the other hand, maths scrabble can also be played in style of Equate game with fractional tiles. I consider all irreducible fractional tiles which are between 0 and 1 and only addition, subtraction, multiplication and division operators.equate.dic contains all irreducible fractional tiles with denominators 2 to 10 and 12 which are between 0 and 1 (781328 equations).equation.dic contains all irreducible fractional tiles with denominators 2 to 20 except 11, 13, 17 and 19 which are between 0 and 1 (1456480 equations).fraction.dic contains all irreducible fractional tiles with denominators 2 to 20 which are between 0 and 1 (2499096 equations).equate.dic: https://drive.google.com/file/d/1P4oYimG...iew?usp=sharingequation.dic: https://drive.google.com/file/d/1cQ6iLKC...iew?usp=sharingfraction.dic: https://drive.google.com/file/d/15Vdadoq...iew?usp=sharingNote: fractions.dic is unsorted version of fraction.dicUse unsorted.py python program above with file name changed from unsorted.dic to fractions.dic to sort it and output it to fraction.dicfraction.py123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287 ``num = [1, 1, 2, 1, 3, 1, 2, 3, 4, 1, 5, 1, 2, 3, 4, 5, 6, 1, 3, 5, 7, 1, 2, 4, 5, 7, 8, 1, 3, 7, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 5, 7, 11, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 3, 5, 9, 11, 13, 1, 2, 4, 7, 8, 11, 13, 14, 1, 3, 5, 7, 9, 11, 13, 15, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1, 5, 7, 11, 13, 17, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 1, 3, 7, 9, 11, 13, 17, 19, 0]den = [2, 3, 3, 4, 4, 5, 5, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 1]sym = ['#', '\$', '&', '(', ')', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '\xc2\xa1', '\xc2\xa2', '\xc2\xa3', '\xc2\xa4', '\xc2\xa5', '\xc2\xa6', '\xc2\xa7', '\xc2\xa8', '\xc2\xa9', '\xc2\xaa', '%', ':', '^', '.', '\xc2\xab', '\xc2\xac', '\xc2\xad', '\xc2\xae', '\xc2\xaf', '\xc2\xb0', '\xc2\xb1', '\xc2\xb4', '\xc2\xb5', '\xc2\xb6', '\xc2\xb7', '\xc2\xb8', '\xc2\xba', '\xc2\xbb', '\xc2\xbc', '\xc2\xbd', '\xc2\xbe', '\xc2\xbf', '\xc3\x80', '\xc3\x81', '\xc3\x82', '\xc3\x83', '\xc3\x84', '\xc3\x85', '\xc3\x86', '\xc3\x87', '\xc3\x88', '\xc3\x89', '\xc3\x8a', '\xc3\x8b', '\xc3\x8c', '\xc3\x8d', '\xc3\x8e', '\xc3\x8f', '\xc3\x90', '\xc3\x91', '\xc3\x92', '\xc3\x93', '\xc3\x94', '\xc3\x95', '\xc3\x96', '\xc3\x98', '\xc3\x99', '\xc3\x9a', '\xc3\x9b', '\xc3\x9c', '\xc3\x9d', '\xc3\x9e', '\xc3\x9f', '\xd0\x90', '\xd0\x91', '\xd0\x92', '\xd0\x93', '\xd0\x94', '\xd0\x95', '\xd0\x81', '\xd0\x96', '\xd0\x97', '\xd0\x98', '\xd0\x99', '\xd0\x9a', '\xd0\x9b', '\xd0\x9c', '\xd0\x9d', '\xd0\x9e', '\xd0\x9f', '\xd0\xa0', '\xd0\xa1', '\xd0\xa2', '\xd0\xa3', '\xd0\xa4', '\xd0\xa5', '\xd0\xa6', '\xd0\xa7', '\xd0\xa8', '\xd0\xa9', '\xd0\xaa', '\xd0\xab', '\xd0\xac', '\xd0\xad', '\xd0\xae', '\xd0\xaf', '!']conj = [0, 2, 1, 4, 3, 8, 7, 6, 5, 10, 9, 16, 15, 14, 13, 12, 11, 20, 19, 18, 17, 26, 25, 24, 23, 22, 21, 30, 29, 28, 27, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 44, 43, 42, 41, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 62, 61, 60, 59, 58, 57, 70, 69, 68, 67, 66, 65, 64, 63, 78, 77, 76, 75, 74, 73, 72, 71, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 100, 99, 98, 97, 96, 95, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 126, 125, 124, 123, 122, 121, 120, 119, 127]m = ["\xe2\x81\xb0", "\xc2\xb9", "\xc2\xb2", "\xc2\xb3", "\xe2\x81\xb4", "\xe2\x81\xb5", "\xe2\x81\xb6", "\xe2\x81\xb7", "\xe2\x81\xb8", "\xe2\x81\xb9"]n = ["\xe2\x82\x80", "\xe2\x82\x81", "\xe2\x82\x82", "\xe2\x82\x83", "\xe2\x82\x84", "\xe2\x82\x85", "\xe2\x82\x86", "\xe2\x82\x87", "\xe2\x82\x88", "\xe2\x82\x89"]d = {}for j in range(len(sym) - 1): d[(num[j], den[j])] = sym[j]def superscript(s): a = "" for c in s: a += m[ord(c) - 48] return adef subscript(t): b = "" for d in t: b += n[ord(d) - 48] return bdef gcd(p, q): while q > 0: (p, q) = (q, p % q) return pdef string(nu, de): result = '' if nu >= de or nu == 0: result += str(nu / de) if nu % de > 0: result += d[(nu % de, de)] return resultdef terms(nu, de): result = 0 if nu >= de or nu == 0: result += len(str(nu / de)) if nu % de > 0: result += 1 return resultprint '[Header]'print 'Version=100000'print 'Author=Raman Viswanathan 'print 'StandardCategory=Equalities'print 'Licence=GNU General Public License, v3'print 'Release=23.05.21'print 'Comment=Equate game style of Scrabble with mathematical equations'print 'Letters=@,0,1,2,3,4,5,6,7,8,9,-,*,/,+,#,\$,&,(,),A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,\xc2\xa1,\xc2\xa2,\xc2\xa3,\xc2\xa4,\xc2\xa5,\xc2\xa6,\xc2\xa7,\xc2\xa8,\xc2\xa9,\xc2\xaa,%,:,^,.,\xc2\xab,\xc2\xac,\xc2\xad,\xc2\xae,\xc2\xaf,\xc2\xb0,\xc2\xb1,\xc2\xb4,\xc2\xb5,\xc2\xb6,\xc2\xb7,\xc2\xb8,\xc2\xba,\xc2\xbb,\xc2\xbc,\xc2\xbd,\xc2\xbe,\xc2\xbf,\xc3\x80,\xc3\x81,\xc3\x82,\xc3\x83,\xc3\x84,\xc3\x85,\xc3\x86,\xc3\x87,\xc3\x88,\xc3\x89,\xc3\x8a,\xc3\x8b,\xc3\x8c,\xc3\x8d,\xc3\x8e,\xc3\x8f,\xc3\x90,\xc3\x91,\xc3\x92,\xc3\x93,\xc3\x94,\xc3\x95,\xc3\x96,\xc3\x98,\xc3\x99,\xc3\x9a,\xc3\x9b,\xc3\x9c,\xc3\x9d,\xc3\x9e,\xc3\x9f,\xd0\x90,\xd0\x91,\xd0\x92,\xd0\x93,\xd0\x94,\xd0\x95,\xd0\x81,\xd0\x96,\xd0\x97,\xd0\x98,\xd0\x99,\xd0\x9a,\xd0\x9b,\xd0\x9c,\xd0\x9d,\xd0\x9e,\xd0\x9f,\xd0\xa0,\xd0\xa1,\xd0\xa2,\xd0\xa3,\xd0\xa4,\xd0\xa5,\xd0\xa6,\xd0\xa7,\xd0\xa8,\xd0\xa9,\xd0\xaa,\xd0\xab,\xd0\xac,\xd0\xad,\xd0\xae,\xd0\xaf'print 'Values=1,2,1,1,2,2,3,3,4,3,4,4,3,3,4,5,6,6,5,5,8,8,8,8,7,7,11,11,11,11,11,11,8,8,8,8,10,10,10,10,10,10,9,9,9,9,15,15,15,15,15,15,15,15,15,15,10,10,10,10,17,17,17,17,17,17,17,17,17,17,17,17,12,12,12,12,12,12,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,16,16,16,16,16,16,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,18,18,18,18,18,18,18,18'print 'Counts=36,8,10,9,8,8,8,8,7,7,7,7,11,11,7,4,2,2,2,2,1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0'print 'Key='print '[Replace]'print '-=\xe2\x88\x92'print '*=\xc3\x97'print '/=\xc3\xb7'print '@=\xe2\x81\xbc'for i in range(len(sym) - 1): print sym[i] + '=' + superscript(str(num[i])) + '/' + subscript(str(den[i]))print '[Categories]'print '1=Addition'print '2=Subtraction'print '3=Multiplication'print '4=Division'print '[Words]'for k in range(10000): print str(k) + '@' + str(k) + '='for k in range(100): for l in range(len(sym) - 1): print (str(k), '') [k == 0] + d[(num[l], den[l])] + '@' + (str(k), '') [k == 0] + d[(num[l], den[l])] + '='for k in range(10): for l in range(len(sym) - 1): for o in range(10): for r in range(len(sym) - 1): t = den[l] * k + num[l] u = den[l] v = den[r] * o + num[r] w = den[r] y = t * w + u * v z = u * w g = gcd(y, z) y /= g z /= g if z > 20 or y % z == 0: continue if terms(t, u) + terms(v, w) + terms(y, z) <= 6: print string(t, u) + '+' + string(v, w) + '@' + string(y, z) + '=;1' print string(y, z) + '@' + string(t, u) + '+' + string(v, w) + '=;1' print string(y, z) + '-' + string(t, u) + '@' + string(v, w) + '=;2' print string(v, w) + '@' + string(y, z) + '-' + string(t, u) + '=;2'for k in range(100): for l in range(len(sym) - 1, len(sym)): for o in range(100): for r in range(len(sym) - 1): t = den[l] * k + num[l] u = den[l] v = den[r] * o + num[r] w = den[r] y = t * w + u * v z = u * w g = gcd(y, z) y /= g z /= g if z > 20: continue if terms(t, u) + terms(v, w) + terms(y, z) <= 6: print string(t, u) + '+' + string(v, w) + '@' + string(y, z) + '=;1' print string(y, z) + '@' + string(t, u) + '+' + string(v, w) + '=;1' print string(y, z) + '-' + string(t, u) + '@' + string(v, w) + '=;2' print string(v, w) + '@' + string(y, z) + '-' + string(t, u) + '=;2'for k in range(100): for l in range(len(sym) - 1): for o in range(100): for r in range(len(sym) - 1, len(sym)): t = den[l] * k + num[l] u = den[l] v = den[r] * o + num[r] w = den[r] y = t * w + u * v z = u * w g = gcd(y, z) y /= g z /= g if z > 20: continue if terms(t, u) + terms(v, w) + terms(y, z) <= 6: print string(t, u) + '+' + string(v, w) + '@' + string(y, z) + '=;1' print string(y, z) + '@' + string(t, u) + '+' + string(v, w) + '=;1' print string(y, z) + '-' + string(t, u) + '@' + string(v, w) + '=;2' print string(v, w) + '@' + string(y, z) + '-' + string(t, u) + '=;2'for k in range(100): for l in range(len(sym) - 1): for o in range(100): for r in range(conj[l], conj[l] + 1): t = den[l] * k + num[l] u = den[l] v = den[r] * o + num[r] w = den[r] y = t * w + u * v z = u * w g = gcd(y, z) y /= g z /= g if z > 20: continue if terms(t, u) + terms(v, w) + terms(y, z) <= 6: print string(t, u) + '+' + string(v, w) + '@' + string(y, z) + '=;1' print string(y, z) + '@' + string(t, u) + '+' + string(v, w) + '=;1' print string(y, z) + '-' + string(t, u) + '@' + string(v, w) + '=;2' print string(v, w) + '@' + string(y, z) + '-' + string(t, u) + '=;2'for k in range(1000): for o in range(1000): y = k + o if len(str(k)) + len(str(o)) + len(str(y)) <= 7: print str(k) + '+' + str(o) + '@' + str(y) + '=;1' print str(y) + '@' + str(k) + '+' + str(o) + '=;1' print str(y) + '-' + str(k) + '@' + str(o) + '=;2' print str(o) + '@' + str(y) + '-' + str(k) + '=;2'for k in range(100): for l in range(len(sym) - 1): for o in range(100): for r in range(len(sym) - 1): t = den[l] * k + num[l] u = den[l] v = den[r] * o + num[r] w = den[r] y = t * v z = u * w g = gcd(y, z) y /= g z /= g if z > 20: continue if terms(t, u) + terms(v, w) + terms(y, z) <= 6: print string(t, u) + '*' + string(v, w) + '@' + string(y, z) + '=;3' print string(y, z) + '@' + string(t, u) + '*' + string(v, w) + '=;3' print string(y, z) + '/' + string(t, u) + '@' + string(v, w) + '=;4' print string(v, w) + '@' + string(y, z) + '/' + string(t, u) + '=;4'for k in range(100): for l in range(len(sym) - 1, len(sym)): for o in range(100): for r in range(len(sym) - 1): t = den[l] * k + num[l] u = den[l] v = den[r] * o + num[r] w = den[r] y = t * v z = u * w g = gcd(y, z) y /= g z /= g if z > 20: continue if terms(t, u) + terms(v, w) + terms(y, z) <= 6: print string(t, u) + '*' + string(v, w) + '@' + string(y, z) + '=;3' print string(y, z) + '@' + string(t, u) + '*' + string(v, w) + '=;3' if k > 0: print string(y, z) + '/' + string(t, u) + '@' + string(v, w) + '=;4' print string(v, w) + '@' + string(y, z) + '/' + string(t, u) + '=;4'for k in range(100): for l in range(len(sym) - 1): for o in range(100): for r in range(len(sym) - 1, len(sym)): t = den[l] * k + num[l] u = den[l] v = den[r] * o + num[r] w = den[r] y = t * v z = u * w g = gcd(y, z) y /= g z /= g if z > 20: continue if terms(t, u) + terms(v, w) + terms(y, z) <= 6: print string(t, u) + '*' + string(v, w) + '@' + string(y, z) + '=;3' print string(y, z) + '@' + string(t, u) + '*' + string(v, w) + '=;3' print string(y, z) + '/' + string(t, u) + '@' + string(v, w) + '=;4' print string(v, w) + '@' + string(y, z) + '/' + string(t, u) + '=;4'for k in range(1, 100): for l in range(len(sym) - 1, len(sym)): for o in range(100): for r in range(len(sym) - 1): t = den[l] * k + num[l] u = den[l] v = den[r] * o + num[r] w = den[r] y = t * v z = u * w g = gcd(y, z) y /= g z /= g if z > 20: continue if terms(t, u) + terms(v, w) + terms(y, z) == 7: print string(t, u) + '*' + string(v, w) + '@' + string(y, z) + '=;3' print string(y, z) + '@' + string(t, u) + '*' + string(v, w) + '=;3' if k > 0: print string(y, z) + '/' + string(t, u) + '@' + string(v, w) + '=;4' print string(v, w) + '@' + string(y, z) + '/' + string(t, u) + '=;4'for k in range(100): for l in range(len(sym) - 1): for o in range(1, 100): for r in range(len(sym) - 1, len(sym)): t = den[l] * k + num[l] u = den[l] v = den[r] * o + num[r] w = den[r] y = t * v z = u * w g = gcd(y, z) y /= g z /= g if z > 20: continue if terms(t, u) + terms(v, w) + terms(y, z) == 7: print string(t, u) + '*' + string(v, w) + '@' + string(y, z) + '=;3' print string(y, z) + '@' + string(t, u) + '*' + string(v, w) + '=;3' print string(y, z) + '/' + string(t, u) + '@' + string(v, w) + '=;4' print string(v, w) + '@' + string(y, z) + '/' + string(t, u) + '=;4'for k in range(1, 1000): for o in range(1, 1000): y = k * o if len(str(k)) + len(str(o)) + len(str(y)) <= 8: print str(k) + '*' + str(o) + '@' + str(y) + '=;3' print str(y) + '@' + str(k) + '*' + str(o) + '=;3' print str(y) + '/' + str(k) + '@' + str(o) + '=;4' print str(o) + '@' + str(y) + '/' + str(k) + '=;4'print '0*0@0=;3'print '0@0*0=;3'for k in range(1, 10000): print '0*' + str(k) + '@0=;3' print '0@0*' + str(k) + '=;3' print str(k) + '*0@0=;3' print '0@' + str(k) + '*0=;3' print '0/' + str(k) + '@0=;4' print '0@0/' + str(k) + '=;4'for l in range(len(sym) - 1): k = range(0, 1000, den[l]) for r in range(len(k)): y = k[r] * num[l] / den[l] z = k[r] if z >= 100: print sym[l] + '*' + str(z) + '@' + str(y) + '=;3' print str(z) + '*' + sym[l] + '@' + str(y) + '=;3' print str(y) + '@' + sym[l] + '*' + str(z) + '=;3' print str(y) + '@' + str(z) + '*' + sym[l] + '=;3' print str(y) + '/' + str(z) + '@' + sym[l] + '=;4' print str(y) + '/' + sym[l] + '@' + str(z) + '=;4' print sym[l] + '@' + str(y) + '/' + str(z) + '=;4' print str(z) + '@' + str(y) + '/' + sym[l] + '=;4' ``     You can test all of these dictionaries in your own system with human vs human games, human vs computer games or computer vs computer games.The more the number of equations in the dictionary means that more the time the computer takes to play a move and so these dictionaries cannot be used to play with computer for Scrabble boards of sizes that are larger than 21×21.
Raman Offline  Beiträge: 167

25.05.2021 14:47
 #30 RE: Math scrabble implemented Zitat · Antworten

Also, is there any option in Scrabble3D application to make a video of the Scrabble board in 2D or 3D move by move, similar to what you have done in German Scrabble with 21×21×21 3D board with 2884 tiles: https://www.youtube.com/watch?v=XwoBwI3PZvM?
How did you make that video? With Scrabble3D application directly or some other nice video recording application that is suitable for this purpose? If it is not through Scrabble3D application directly, then what is the name of the video recording application that you used for this purpose? Let me also download it, use it, give it a try and upload my nice looking Scrabble boards move by move of maths Scrabble, Equate game style of maths Scrabble, English Scrabble, Tamil Scrabble, English phonetic Scrabble, etc. to YouTube with a link to the Scrabble3D application from those videos and also saying that I would be interested in playing those Scrabble variants in the Scrabble3D application, so that people interested in them will come and play with me and they all will become more and more popular from YouTube which many number of people use everyday than most of the other websites in the Internet.

This maths 45×45 Scrabble board would look beautiful for YouTube if made a video move by move, although it is only 2D board.
I played it by myself for all 4 players for 4 days mainly with the aim of making the maths Scrabble board to look beautiful and not with the aim of making high scoring moves, bingo, winning or losing.
I was aiming to have all equations with unary and binary operators to the left side of '=' and only a single integer or single decimal number to the right side of '='.
I was also aiming to avoid equations like 'single integer = single integer' and 'single decimal number = single decimal number'.
I was also aiming to consider carefully with space issues over scoring issues to pack tiles densely.

Rename Maths1150.txt to Maths1150.ssg to load and view this entire maths Scrabble game in your Scrabble3D application. Also, this first Equate game style of maths Scrabble that has been listed below was carefully played by myself for 2 players on a 17×17 Scrabble board in only 2 dimensions to accommodate all irreducible fractional tiles with denominators less than 12 (including 11) that are between 0 and 1.
I carefully considered with space issues over scoring issues to pack tiles densely, while avoiding multiplication and division equations involving 0 and equations like 'single integer = single integer' and 'single rational number = single rational number'.  Dateianlage: Maths1150.txt
 Seiten 1 | 2 | 3 Forum Software von Xobor.deEinfach ein Forum erstellen