Sie sind vermutlich noch nicht im Forum angemeldet - Klicken Sie hier um sich kostenlos anzumelden Impressum 
Sie können sich hier anmelden
Dieses Board hat 236 Mitglieder
23.721 Beiträge & 2.257 Themen
Beiträge der letzten Tage
Foren Suche
Suchoptionen
  • Math scrabble implementedDatum17.06.2021 15:45
    Foren-Beitrag von Raman im Thema Math scrabble implemented

    Zitat von Scotty im Beitrag #40
    Dictionaries are somewhat out of my business. For sake of usability I prefer a clean list without langA_variantA,langA_variantB,langB... what speaks for integration. But obviously we come to a point where dictionaries make sense. And we should implement a special mode for Math in the next version.

    If equations with fractional tiles are also integrated into math.dic, then there will be 10 million equations. Or 20 million equations if equations with tiles of both editions are mixed up. Do you think that a dictionary with tens of millions of equations is really feasible enough?
    Other human players using it whenever playing against computer opponents as players should be asked to disable the categories which are part of other edition, so as not to make the computer moves slow down even in a 15×15 size of Scrabble board.

    Can you please tell me whether computer moves are very slow in your system with my current version 1.0.6 of math.dic that contains over 5.6 million equations? Especially during the end game, in a 15×15 size of Scrabble board and in a 21×21 size of Scrabble board?
    May be that your desktop system with a faster CPU should perform much better than my laptop system with a slower CPU.

    What algorithm is the computer using for searching for the best possible move to play and for all available moves to play? Does it look for tiles in rack one by one iteratively or recursively? If a play connects one or more tiles already present on board, then does it look only for words or equation that satisfy the letter or character at the given position?
    When a new game is started, then is it possible to remove all the loaded words in the memory (but not from the dictionary from which initially all the loaded words had been read) that are not part of the tile set at least when using no blank tiles? Blank tiles should not use a letter or character from the tile set of the other edition.

    This is to improve the performance of computer players as opponents even in a 15×15 size of Scrabble board whenever other human players using integrated Maths dictionary containing equations of two different editions of Maths Scrabble do not disable the categories which are part of other edition, whenever playing against computer opponents as players.

    Now, for something different:
    A-Math game style of Maths Scrabble:

    2 blank tiles (scoring 0 points)
    1 point: = ×20, 1 ×3, 2 ×3
    2 points: 3 ×3, 4 ×3, 6 ×3
    3 points: 0 ×2, 5 ×3, 8 ×3, + ×5, ×5
    4 points: 7 ×3, 9 ×3, 12 ×3, × ×5, ÷ ×5
    5 points: 10 ×3, 15 ×3, 18 ×3
    6 points: 14 ×3, 16 ×3, 20 ×3
    7 points: 11 ×2
    8 points: 13 ×2
    9 points: 17 ×2
    10 points: 19 ×2

    Maths Scrabble in hexadecimal (base 16):

    2 blank tiles (scoring 0 points)
    1 point: = ×20, 0 ×6, 1 ×6, 2 ×6, 4 ×5
    2 points: 3 ×5, 6 ×5, 8 ×5, A ×5, C ×5
    3 points: 5 ×4, 7 ×4, 9 ×4, E ×5, + ×3, ×3
    4 points: B ×4, D ×4, F ×4, × ×3, ÷ ×3
    5 points: ×1
    6 points: ² ×1, ^ ×1
    7 points: ×1
    8 points: ³ ×1, ! ×1
    9 points: ×1
    10 points: ×1, . ×1

    I did not create dictionaries for these yet to play against computer players as opponents, just checked out by playing both sides by myself whether tile distribution would really be decent enough in playing these Maths Scrabble variants, in any size of Scrabble board, 2D or 3D.

  • Math scrabble implementedDatum15.06.2021 22:07
    Foren-Beitrag von Raman im Thema Math scrabble implemented

    I have made YouTube videos for at least 10 different diverse tile sets in Scrabble board with Scrabble3D application, out of which only 3 of them are languages, all of them using different writing scripts:

    1.English Super Scrabble
    2. 21×21 Tamil Scrabble
    3. A-Math game style of Maths Scrabble
    4. Equate game style of 21×21 Number Scrabble with fractional tiles
    5. English phonetic Scrabble
    6. Russian Scrabble
    7. Scrabble with Roman numerals
    8. Scrabble with chess moves
    9. Scrabble with perfect squares
    10. Scrabble with date

    Scotty, you have not considered equate.dic for SourceForge page, but do you have any feedback about it? Do you like it? Do you think that it can be improved in any way?
    Can a tile set between 100 tiles and 130 tiles that is suitable for play with a 15×15 Scrabble board be used in the dictionary instead of a tile set of 200 tiles that is suitable for play with a 21×21 Scrabble board? Note that Equate edition of Maths Scrabble game with fractional tiles is played in a 19×19 Scrabble board with 190 tiles.
    1 point: = ×22, 1 ×7, 2 ×6
    2 points: 0 ×5, 3 ×5, 4 ×5
    3 points: 5 ×5, 6 ×5, 8 ×4, × ×7, ÷ ×7
    4 points: 7 ×4, 9 ×4, + ×4, ×4
    5 points: ¹/₂ ×2, ¹/₄ ×1, ³/₄ ×1
    6 points: ¹/₃ ×1, ²/₃ ×1
    7 points: ¹/₆ ×1, ⁵/₆ ×1
    8 points: ¹/₅ ×1, ²/₅ ×1, ³/₅ ×1, ⁴/₅ ×1, ¹/₈ ×1, ³/₈ ×1, ⁵/₈ ×1, ⁷/₈ ×1
    9 points: ¹/₁₀ ×1, ³/₁₀ ×1, ⁷/₁₀ ×1, ⁹/₁₀ ×1, ¹/₁₂ ×1, ⁵/₁₂ ×1, ⁷/₁₂ ×1, ¹¹/₁₂ ×1
    10 points: ¹/₇ ×1, ²/₇ ×1, ³/₇ ×1, ⁴/₇ ×1, ⁵/₇ ×1, ⁶/₇ ×1, ¹/₉ ×1, ²/₉ ×1, ⁴/₉ ×1, ⁵/₉ ×1, ⁷/₉ ×1, ⁸/₉ ×1
    Or do you think that fractional tiles can be merged into math.dic as a single Maths dictionary? Note that my latest created version 1.0.6 of math.dic already contains over 5.6 million equations. If more equations are added into it (even for equations with three numbers on one side and with one number on other side or for equations with two numbers on one side and with two numbers on other side), then playing against computer players as opponents will slow down even for a 15×15 Scrabble board.
    I don't think that it is possible to play with 10 million equations in dictionary when operators in both categories are kept separate or 20 million equations in dictionary when operators in both categories are also merged. Don't you?
    Actually, in physically available versions of Maths Scrabble, there are at least two different commercial editions, Equate game with number tiles, fractional tiles and operators and A-Math game with only number tiles and operators. Each of them use a different tile set.

    In my humble opinion, the most optimal way to implement Maths Scrabble in computer program is to do parsing to check equations for syntax validity and semantic correctness and also to make computer players as opponents to search for and play with the best moves in lesser amount of time.
    I think that Scrabble3D application right now makes use of a trie data structure to store each valid move in any given dictionary whenever that particular dictionary is loaded into Scrabble3D application and after that all of the words in that specific dictionary are sorted in order of ASCII characters. Isn't it?

    Is there any group of people whoever are interested in Maths Scrabble in social media like Facebook, Twitter, WhatsApp messenger, Telegram, etc. in which I can join? Or can one be created? How can that group in social media be made popular among interested people all over the world? This is one place but no one is active here.
    Maths Scrabble is not popular unlike Scrabble in different languages despite Maths Scrabble being open for all people in the world and not for speakers of a particular language. It is good to also have a World Maths Scrabble players association that conducts Maths Scrabble tournaments in a city every 6 months. No one plays Maths Scrabble online with other human players these days in game server of Scrabble3D application. Most of them play only French, German and Hungarian and not even English.

    I need to do more testing of my latest created version 1.0.6 of math.dic with other human players. If anyone reading this forum is interested in trying games of Maths Scrabble with me, then please reach out to me here.
    I can see many dozen views of my attached images of Maths Scrabble, both with fractional tiles and without fractional tiles, in my previous posts in this thread in this forum. But other than Scotty and Bussinchen, I haven't seen anyone responded to me here by means of their own created accounts.
    Zitat von Raman im Beitrag #27
    In Wikipedia,

    Math sets use these 100 tiles:
    2 blank tiles (scoring 0 points)
    1 point: = ×18, 1 ×8, 2 ×7
    2 points: 0 ×6, 3 ×6, 4 ×6
    3 points: 5 ×6, 6 ×6, 8 ×5, + ×3, ×3
    4 points: 7 ×5, 9 ×5, × ×3, ÷ ×3
    5 points: ×2
    6 points: ² ×1
    7 points: ³ ×1
    8 points: ! ×1
    9 points: ^ ×1
    10 points: . ×1, ×1
    To play, you have to put in a true equation on the board.

    Math sets previously used these 120 tiles:
    3 blank tiles (scoring 0 points)
    0 points: = ×18
    1 point: 1 ×10
    2 points: 2 ×8, 4 ×7, 5 ×7
    3 points: 0 ×6
    4 points: 3 ×7, 6 ×7, 8 ×6, 9 ×6
    5 points: 7 ×6
    6 points: + ×4, ×4, × ×4
    7 points: ÷ ×3, ×3
    8 points: . ×3
    9 points: ^ ×1
    10 points: ! ×1, ² ×1, ³ ×1, ×1, ×1, < ×1, > ×1

    I removed the unfit tiles ∞, < and > because there is no meaningful equation containing ∞ and < and > will not restrict possibilities but instead they will allow human players or computer players to form wild mathematical equations at their own wishes.
    If a Maths dictionary can be created that also includes < and > with just unary operators or binary operators on one side and numbers on other side, then that dictionary will contain 10¹³ equations. Modulo operator is a somewhat wild operator, but not as much as compared to < and >. I did not include it in my dictionary. If equations with modulo operator are also included in the Maths dictionary, then there will be 10¹⁰ equations in that Maths dictionary, just with that Maths dictionary containing all equations with modulo operator of length upto 11.

    Although I reduced the point values of most of the tiles such that there are a few tiles with point value ≥ 5, similar to that of conventional English Scrabble, the number of tiles need not be just limited to 100 but it can be also 110, 120 or 130.
    In the YouTube video of A-Math game style of Maths Scrabble that has been made by me that I have attached along with this post of mine in this thread in this forum, I used this tile distribution of 120 tiles, with point values of tiles best suited for playing against computer players as opponents, letting it know what tiles it should take seriously to play into the Scrabble board as early as possible and what not to:
    2 blank tiles (scoring 0 points)
    1 point: = ×20, 1 ×9, 2 ×8
    2 points: 0 ×7, 3 ×8, 4 ×8
    3 points: 5 ×8, 6 ×8, 8 ×7, + ×3, ×3
    4 points: 7 ×7, 9 ×7, × ×3, ÷ ×3
    5 points: ×1
    6 points: ² ×1, ^ ×1
    7 points: ×1
    8 points: ³ ×1, ! ×1
    9 points: ×1
    10 points: ×1, . ×1
    Equations with all of these tiles are available in my latest created version 1.0.6 of math.dic. There is also more ratio of numbers in this 120 tile version so as to make myself and computer players as opponents to play more equations with larger numbers as is the focus of my latest created version 1.0.6 of math.dic than equations with more operators.
    This will also give more chances for myself and computer players as opponents to form more bingos with just an unary operator or a binary operator on one side and a number on other side and more such chances will mathematically and naturally occur in the first few moves of the game with 15×15 Scrabble board when most of the 15×15 Maths Scrabble board is empty. In larger size of 2D boards and in smaller or larger size of 3D boards, such chances can happen during any time in the middle of the played game of Maths Scrabble.

    Out of the 10 YouTube videos that have been made by me that I have attached along with this post of mine in this thread in this forum, 3 of them use 21×21 board with 200 tiles and 7 of them use 15×15 board with 120 tiles.
    Anyone who has any opinion about their own tile distribution for Maths Scrabble can share it here. I think of removing fourth power and fourth root from the tile set and instead have more tiles with square root and decimal point.

    For playing games of Maths Scrabble against other human players, in which dictionary is not important and if a valid equation that is not present in the Maths dictionary is played, then it can be accepted by all of other human players whoever are involved in the played game by using a poll, it is possible to play equations with 2 or 3 square roots in the same equation.
    Equations with a square root, a cube root or a fourth root and an unary operator or a binary operator on the same side can also be played. I have not included such equations in my latest created version 1.0.6 of math.dic because the Maths dictionary will become very large otherwise.

  • Maths Scrabble Puzzles.Datum15.06.2021 19:32
    Foren-Beitrag von Raman im Thema Maths Scrabble Puzzles.

    Four more Maths Scrabble puzzles.

  • Maths Scrabble Puzzles.Datum10.06.2021 18:54
    Foren-Beitrag von Raman im Thema Maths Scrabble Puzzles.

    Even a single blank tile, not necessarily two blank tiles, allows plenty of possibilities for bingos in Maths Scrabble.

    But, can a bingo be made also if the blank tile is selected as a decimal point?

    Sometimes, bingos with addition operation and subtraction operation need not have any solutions with three 3 digit numbers.

    Most of the time, bingos with exponentiation operation will only have all trivial solutions, in which either base is either 0 or 1, or exponent is 1.

  • Maths Scrabble Puzzles.Datum09.06.2021 19:32
    Foren-Beitrag von Raman im Thema Maths Scrabble Puzzles.

    What is the best equation that can be played here? Is there any equation that can be played on the leftmost column that touches the triple word score on the top left corner square?

    This is just asking for the best equation that can be played simply and not looking out for a bingo equation at all.

  • Math scrabble implementedDatum08.06.2021 21:38
    Foren-Beitrag von Raman im Thema Math scrabble implemented

    maths.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
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
     
    print '[Header]'
    print 'Version=100006'
    print 'Author=Raman Viswanathan <raman22feb1988@gmail.com>'
    print 'StandardCategory=Equalities'
    print 'Licence=GNU General Public License, v3'
    print 'Release=09.06.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, 10000):
    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)) >= 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 = 1
    for 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
    print '2SSE4194304=;5'
    print '2SCE8388608=;5'
    print '2STE16777216=;5'
    print '4194304E2SS=;5'
    print '8388608E2SC=;5'
    print '16777216E2ST=;5'
    for index in range(10, 10000):
    exponent = str(index)
    if '0' not in exponent and '1' not in exponent and '5' not in exponent and '6' not in exponent and '7' not in exponent and '8' not in exponent and '9' not in exponent:
    power = ((exponent.replace('2', 'S')).replace('3', 'C')).replace('4', 'T')
    print '0' + power + 'E0=;5'
    print '0E0' + power + '=;5'
    print '1' + power + 'E1=;5'
    print '1E1' + power + '=;5'
     

  • Math scrabble implementedDatum08.06.2021 20:33
    Foren-Beitrag von Raman im Thema Math scrabble implemented

    Scotty, please update the Maths dictionary in SourceForge page to my latest version 1.0.6 whenever you are free.
    I added some 146274 equations that I found missing from the Maths dictionary by rigorous testing of Maths dictionary with Scrabble3D application. My latest version 1.0.6 of Maths dictionary contains 5611396 equations right now.
    math.dic: https://drive.google.com/file/d/1gDYyHzy...iew?usp=sharing

    I added some 145800 exponentiation equations with decimal numbers with 4 significant decimal digits that are strictly greater than 1 and base being 0 and 1 and exponent being 1.
    I also added some 474 exponentiation equations formed out of square, cube and tesseract tiles with the base being 0 (upto power that is being 4444), 1 (upto power that is being 4444) and 2 (upto power that is being 24).

    Zitat von Raman im Beitrag #33
    I created the English dictionary with NWL2020 dictionary for North America and CSW2019 dictionary for the rest of the world, as played in the latest Scrabble tournaments all around the world, instead of TWL2006 dictionary and CSW2007 dictionary respectively in the SourceForge page.
    english.dic: https://drive.google.com/file/d/1BY40j9x...iew?usp=sharing
    I also have the English dictionary with NWL2018 dictionary and CSW2019 dictionary.
    american.dic: https://drive.google.com/file/d/1Y4W1PsL...iew?usp=sharing
    NWL2020 dictionary, as played in the latest Scrabble tournaments in Canada and United States of America was released only 5 months ago. It just removes 259 offensive words from NWL2018 dictionary.

    Please note that english.dic is the latest updated version of the English dictionary combining the NWL2020 dictionary for North America and CSW2019 dictionary for the rest of the world, as played in the latest Scrabble tournaments all around the world.
    I posted american.dic only for historical purposes and for the interest of other players whoever, if any players, might be interested in downloading and playing with the old NWL2018 dictionary for North America.
    american.dic is an outdated version of the English dictionary and it is not to be considered for the purpose of uploading it to the SourceForge page.

  • Math scrabble implementedDatum07.06.2021 20:11
    Foren-Beitrag von Raman im Thema Math scrabble implemented

    On Monday, 8 June 2020, exactly one year back from today, I played my first game of Maths Scrabble with another human player in Scrabble3D online game server.
    It was against Mrs. Ishika of Bangalore Scrabble club, who has a similar board game at home bought and last used about 8 years back from last year. Or about 9 years back from this year.

    You can call it for testing purposes. I also played a game of 21×21 English Scrabble with Marisha Sharma of Delhi Scrabble club a couple of weeks back from that day in Scrabble3D online game server.

    21×21 English Scrabble is available for pay for $15 per year at http://thepixiepit.co.uk/. Scrabble3D is much more enhanced than that.
    Games can be played in 2D boards upto 48×48 and even in 3D boards. Letter distribution, points for each letter, dictionary words, number of tiles in each of player's racks and number of blanks used in game can be customized as per player's wishes. Small percentage of all tiles can also be tiles which are randomly picked up by the computer from the letter set.

    Maths Scrabble should be open for all people in the world and not for speakers of a particular language.

    Publically disclosable selected conversation between both of us in WhatsApp messenger:

    Ishika: You should have taken off seventh root, factorial, infinity, lesser than, greater than.
    Me: What mathematical equations have infinity? And plenty of possibilities with lesser than and greater than.
    Ishika: Anything divided by zero is infinity. I mean remove them. I have a seventh root tile in my rack.
    Me: Lesser than and greater than will not restrict possibilities. It will allow players to form wild mathematical equations at their own wishes.
    Ishika: This does not look like 100 tiles. We must not restrict the number of tiles but must restrict the complex symbols for beginners. By the way, I can play only one game today.
    Me: I added a fourth root tile in the letter set but not a seventh root tile. Please share a screenshot of your Scrabble board and your Scrabble tiles with me. I will check out whether it is a fourth root tile or really a seventh root tile.
    Ishika:

    Me: You only have ordinary square root tile in your rack and not a seventh root tile.
    Ishika: Oh, it is seven points for the tile! Got it. Now, it is your turn. I have played 4=4×1 long back. What did you play?
    Me: I did not receive any move from you. Click on the 'Next Player' button which is the third button from the left just below the menu bar and pass on your turn to the next player. Alternatively, you can also press Ctrl + N as a keyboard shortcut.
    Ishika: Sorry, just getting used to it. Next time I will do much better as I will be used to it.

    This was the Scrabble board position at the end of that played game.

    My opponent first played 5=8×0+5 at the bottom row for 96 points, then extended that to 25=8×0+5+20 for 123 points and later on extended that to 1×√625=8×0+5+20 for 174 points and finally won me 614 - 341.
    Forming such long mathematical equations is just typical of Maths Scrabble among human players. Although I must add that my opponent got both blanks luckily in that played game of Maths Scrabble.
    If I played 87−34=53 instead of 78−43=35, such high scoring mathematical equation would not have been possible for my opponent to play or may be a different mathematical equation could have been extended on both sides.

    Me: I hoped you enjoyed the game. How can you make Maths Scrabble popular as conventional 15×15 English Scrabble?
    Ishika: You can find minded communities on social media such as Facebook and Twitter.
    Me: Would you be interested in sharing our played game with Bangalore Scrabble club? If it was related to conventional English Scrabble, then I could share it by myself. It would just not be nice for me alone to keep talking about unconventional Scrabble and others keeping on talking about conventional 15×15 English Scrabble in Bangalore Scrabble club WhatsApp messenger group.
    Ishika: Do you have a screenshot of our played game with you? I have one with a pop up message that hides part of the Scrabble board, although it is mostly over empty space and very few tiles are sitting below it.
    Me: You can learn how to take a screenshot of our played network game by yourself. Log in to the Scrabble3D online game server and go to File from the menu bar and load remote game. Alternatively, you can also press Ctrl + O as a keyboard shortcut. Played network games will be stored on the Scrabble3D online game server for 14 days. This is the maximum time that you would be able to access them. After that, they will be archived. Ordinary players will not be able to access or unarchive archived games from the Scrabble3D online game server. Only the Scrabble3D administrators will be able to do that.

    Later on, I revised the point values for all the tiles in Maths Scrabble and reduced them for Maths Scrabble to be played furthermore optimally. It is a more mixed version of Scotty's version of Maths Scrabble tile distribution in post 3 in this thread and Jouni Tolonen's latest version 1.0.4 of Maths Scrabble tile distribution that has been uploaded to the SourceForge page.
    Similar to conventional 15×15 English Scrabble, I edited the point values for all the tiles such that there are only a few number of tiles with point value ≥ 5. In this process, I reduced the point value of √ tile from 7 points to 5 points.

    On Saturday, 24 April 2020, I really played a game of Maths Scrabble with 21×21 board with all of types of such complex symbols, just for fun.
    It was played with 2 human players and I played both the sides by myself with 12 tiles in each of player's racks instead of just 10 simply as having more number of tiles in each of player's racks is furthermore optimal enough to form longer numbers that are perfect powers of integers that are ≥ 2 that are necessary to push those complex symbols away into the Scrabble board that can be beautifully presented to other people instead of 0 and 1 which are perfect powers of themselves and so they are very short and very unappealing for the Scrabble board to be beautifully presented to other people and as other human players who are actively in contact with me are not that interested to play Maths Scrabble with me, online or offline.
    I did not play against the computer players as computer players would not understand such complex symbols until programmed and such mathematical equations are added up into the Maths Scrabble dictionary, which should not be too much of work either.
    By the way, it is also very difficult to instruct the computer players to plan pushing away such complex symbols into the 21×21 Scrabble board optimally by knowing which tiles to retain in the Scrabble racks and by knowing which tiles to push away into the Scrabble board depending upon the complex symbols that have arrived in the Scrabble racks and to plan playing by space rather than by score when using 250 tiles and accommodating them very densely in a 21×21 Scrabble board.

    This was the Scrabble board position at the end of that played game.

  • Maths Scrabble Puzzles.Datum07.06.2021 18:49
    Foren-Beitrag von Raman im Thema Maths Scrabble Puzzles.

    Five more Maths Scrabble puzzles.

    Sometimes, multiplication or division with 0 or powering with 0 or 1 as base or 0 as exponent may be the frowned upon but the only powerful bingo that will be available to play as the highest scoring move spanning 2 of the premium word score squares.

  • Math scrabble implementedDatum07.06.2021 08:47
    Foren-Beitrag von Raman im Thema Math scrabble implemented

    Zitat von Scotty im Beitrag #31
    What dictionaries would you share on SF.net?

    Well, yesterday was Sunday and so I finally had the time to work upon the dictionaries to make them better suited for SourceForge pages, than the ones used for playing against other human players or computer players online or offline in my local computer's Scrabble3D application.

    At the first place, you can consider my first version of Equate style of Maths Scrabble. If you like it, then I can also add equations with powers and roots.
    equate.dic: https://drive.google.com/file/d/1S6ukuGJ...iew?usp=sharing

    Equate game is played on a 19×19 Scrabble board with 190 tiles. I made my version more interesting with 200 tiles and can be played in 21×21 Scrabble board (with same density as 100 tiles in 15×15 Scrabble board) or in 19×19 Scrabble board (with very dense occupying of tiles).
    https://www.boardgamegeek.com/image/1817520/equate
    I revised the tile distribution, removed reducible fraction tiles, removed fraction tiles with value ≥ 1 and added all other missing irreducible fraction tiles with denominators ≤ 12 and values strictly between 0 and 1.
    There are tiles like 3² in the advanced pack of Equate game. These tiles would not be nice to be combined with other digit tiles to the right and these tiles can never combine with other digit tiles to the left. 9 is much better to use in this case. My created dictionary contains none of such tiles, with emphasis heavily being only upon irreducible fraction tiles with denominators ≤ 12 and values strictly between 0 and 1.
    For example, 19×3=57. 9 cannot be replaced by 3² here.

    Dictionaries that can be updated:
    Here is my improved version of Maths dictionary. If you like it, then you can update the SourceForge Maths dictionary with my version.
    math.dic: https://drive.google.com/file/d/1gDYyHzy...iew?usp=sharing
    My created Maths dictionary already contains 5465122 equations and no equations involving three numbers on one side or a binary operator and a unary operator on one side. If you want, then you can take the union of all equations in the Maths dictionary that is prepared my be and the Maths dictionary that is prepared by Jouni Tolonen.
    But be warned, that the Maths dictionary that is prepared by Jouni Tolonen contains some wrong equations like 18-9=7 and 18+5=13. 0^0 is indeterminate but it contains 0^0=1. Usually minus sign cannot be placed before 0 but it contains 0=-0-0.

    In the Maths Scrabble game played on the board on the left side, it was possible to accommodate 129 out of 130 tiles. It is a good tile distribution for Maths Scrabble with 130 tiles. Only one = tile was left over at the end.
    I played it by myself for 2 players planning for spacing over scoring and packing them up densely. 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'.
    Modulo operator is a somewhat wild operator that allows a player to use all the number tiles at once and if possible also forming a bingo if there are 8 number tiles out of 10 tiles in player's rack and one modulo operator tile and one = tile, if not allowing players to form wild mathematical equations at their own wishes as is the case for < tile and > tile.
    My created Maths dictionary does not contain any equation with modulo operator, but if it is included in human player games played online or offline since it will not be understandable by computer players, % tile can be added to the letter set and mod will be shown in the tile instead of %.
    In Scrabble3D application, even if a word is not present in that specific language dictionary, then it is always playable, if the player accepts it while playing against computer players and no other human players and all other human players accept it by means of a poll while playing against one or more other human players with zero or more computer players.

    I have a better version of English phonetic Scrabble dictionary, with added pre-defined letter set containing no digraph tiles, with added words containing 7 of the digraphs aɪ, eɪ, ɔɪ, aʊ, oʊ, tʃ, dʒ with or without forming those letter pairs from two separate tiles.
    english_phonetic.dic: https://drive.google.com/file/d/193beQHO...iew?usp=sharing

    I created the English dictionary with NWL2020 dictionary for North America and CSW2019 dictionary for the rest of the world, as played in the latest Scrabble tournaments all around the world, instead of TWL2006 dictionary and CSW2007 dictionary respectively in the SourceForge page.
    english.dic: https://drive.google.com/file/d/1BY40j9x...iew?usp=sharing
    I also have the English dictionary with NWL2018 dictionary and CSW2019 dictionary.
    american.dic: https://drive.google.com/file/d/1Y4W1PsL...iew?usp=sharing
    NWL2020 dictionary, as played in the latest Scrabble tournaments in Canada and United States of America was released only 5 months ago. It just removes 259 offensive words from NWL2018 dictionary.

    Other fancy dictionaries that I have created, that may be of interest to other people. If you like any of them, you can consider uploading them to SourceForge:
    Scrabble with Roman numerals:
    roman.dic: https://drive.google.com/file/d/1rihB3hF...iew?usp=sharing

    Scrabble with chess moves:
    chess.dic: https://drive.google.com/file/d/1faFNhlC...iew?usp=sharing

    Scrabble with date and 4 digit year:
    date.dic: https://drive.google.com/file/d/1u2kYmMi...iew?usp=sharing

    Scrabble with perfect squares:
    square.dic: https://drive.google.com/file/d/19-bLMs8...iew?usp=sharing

    Scrabble with perfect cubes:
    cube.dic: https://drive.google.com/file/d/1vCrOQZS...iew?usp=sharing

    Scrabble with triangular numbers:
    triangular.dic: https://drive.google.com/file/d/1qlb5RHB...iew?usp=sharing

    Scrabble with names of chemical elements and their symbols:
    element.dic: https://drive.google.com/file/d/1WkfAUpB...iew?usp=sharing
    Sudoku assembly game:
    sudoku.dic: https://drive.google.com/file/d/1U9cW1Uo...iew?usp=sharing

    Zigzag pattern:
    zigzag.dic: https://drive.google.com/file/d/1yFJ7mgG...iew?usp=sharing

    Scrabble with perfect powers:
    power.dic: https://drive.google.com/file/d/1ldolYKT...iew?usp=sharing

    Scrabble with date and 2 digit year:
    day.dic: https://drive.google.com/file/d/1RaqUiXv...iew?usp=sharing

    24 hour time, with seconds, without AM and PM marker:
    time.dic: https://drive.google.com/file/d/1hlpHYIk...iew?usp=sharing

    12 hour time, with seconds, with AM and PM marker in 2 separate tiles:
    clock.dic: https://drive.google.com/file/d/11_R4v_Q...iew?usp=sharing

    12 hour time, with seconds, without AM and PM marker:
    watch.dic: https://drive.google.com/file/d/1bzCkGjX...iew?usp=sharing

    12 hour time, without seconds, without AM and PM marker:
    hour.dic: https://drive.google.com/file/d/11FI3_FM...iew?usp=sharing

    12 hour time, without seconds, with AM and PM marker in 2 separate tiles:
    minute.dic: https://drive.google.com/file/d/1Op1vgIm...iew?usp=sharing

    24 hour time, without seconds, without AM and PM marker:
    second.dic: https://drive.google.com/file/d/1QWCNuT7...iew?usp=sharing

    12 hour time, with seconds, with AM and PM marker in 1 single tile:
    hourglass.dic: https://drive.google.com/file/d/1idqKLxy...iew?usp=sharing

    12 hour time, without seconds, with AM and PM marker in 1 single tile:
    sundial.dic: https://drive.google.com/file/d/1Y8Fa5TV...iew?usp=sharing

    Zitat von Scotty im Beitrag #31
    First, you have to configure the movie export, see http://scrabble.sourceforge.net/wiki/ind...uration:Network. I'm using "/usr/bin/ffmpeg" and "-r 2". When done you can export a clip of all moves via File > Screenshot using the file type filter MPEG1 Video.

    For a smooth YouTube video of a 45×45 size of Maths Scrabble board which is showing move by move progression, it would be impressive to just have the Scrabble board without white space to the left and to the right and without the tiles at the bottom of the Scrabble board, at least without the tiles obscuring part of the Scrabble board at the bottom.
    Unlike manually saved screenshots move by move, if automatic move by move screenshots are captured with FFMPEG, then will the white space to the left and to the right of the Scrabble board disappear? Will the tiles not be at the bottom of the Scrabble board, at least the tiles not obscuring part of the Scrabble board at the bottom?

  • Thema von Raman im Forum More languages

    Weird desire - Scrabble with chess moves

    1 point: a ×4, b ×4, c ×4, d ×4, e ×4, f ×4, g ×4, h ×4, 1 ×4, 2 ×4, 3 ×4, 4 ×4, 5 ×4, 6 ×4, 7 ×4, 8 ×4
    2 points: K ×5, Q ×5, R ×5, B ×5, N ×5
    3 points: x ×7
    4 points: + ×3
    5 points: # ×1

    For a bizarre attempt of Scrabble with chess moves, 7 tiles in each of player's racks is optimal as in conventional English Scrabble. The chess dictionary contains 29274 different chess moves, which is a little more than 28946 in the version 1.0.4 of the Maths dictionary that had been prepared by Jouni Tolonen.

    move.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
     
    print '[Header]'
    print 'Version=100000'
    print 'Author=Raman Viswanathan <raman22feb1988@gmail.com>'
    print 'StandardCategory=Chess moves'
    print 'Licence=GNU General Public License, v3'
    print 'Release=05.06.21'
    print 'Comment=Scrabble with chess moves'
    print 'Letters=K,Q,R,9,N,a,b,c,d,e,f,g,h,1,2,3,4,5,6,7,8,x,+,#,0,-'
    print 'Values=2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,4,5,8,10'
    print 'Counts=5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,3,1,0,0'
    print 'Key='
    print '[Replace]'
    print '9=B'
    print '-=\xe2\x88\x92'
    print '[Categories]'
    print '[Words]'
    pieces = ['K', 'Q', 'R', '9', 'N']
    files = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
    ranks = ['1', '2', '3', '4', '5', '6', '7', '8']
    print '0-0='
    print '0-0+='
    print '0-0#='
    print '0-0-0='
    print '0-0-0+='
    print '0-0-0#='
    for file in files:
    for rank in ranks:
    if int(rank) >= 2 and int(rank) <= 7:
    print file + rank + '='
    print file + rank + '+='
    print file + rank + '#='
    else:
    for piece in pieces[1:]:
    print file + rank + piece + '='
    print file + rank + piece + '+='
    print file + rank + piece + '#='
    for i in range(7):
    for rank in ranks:
    if int(rank) >= 2 and int(rank) <= 7:
    print files[i] + 'x' + files[i + 1] + rank + '='
    print files[i] + 'x' + files[i + 1] + rank + '+='
    print files[i] + 'x' + files[i + 1] + rank + '#='
    print files[i + 1] + 'x' + files[i] + rank + '='
    print files[i + 1] + 'x' + files[i] + rank + '+='
    print files[i + 1] + 'x' + files[i] + rank + '#='
    else:
    for piece in pieces[1:]:
    print files[i] + 'x' + files[i + 1] + rank + piece + '='
    print files[i] + 'x' + files[i + 1] + rank + piece + '+='
    print files[i] + 'x' + files[i + 1] + rank + piece + '#='
    print files[i + 1] + 'x' + files[i] + rank + piece + '='
    print files[i + 1] + 'x' + files[i] + rank + piece + '+='
    print files[i + 1] + 'x' + files[i] + rank + piece + '#='
    for piece in pieces:
    for file in files:
    for rank in ranks:
    print piece + file + rank + '='
    print piece + 'x' + file + rank + '='
    print piece + file + rank + '+='
    print piece + 'x' + file + rank + '+='
    print piece + file + rank + '#='
    print piece + 'x' + file + rank + '#='
    for column in range(8):
    for file in range(8):
    for rank in range(8):
    print 'Q' + files[column] + files[file] + ranks[rank] + '='
    print 'Q' + files[column] + 'x' + files[file] + ranks[rank] + '='
    print 'Q' + files[column] + files[file] + ranks[rank] + '+='
    print 'Q' + files[column] + 'x' + files[file] + ranks[rank] + '+='
    print 'Q' + files[column] + files[file] + ranks[rank] + '#='
    print 'Q' + files[column] + 'x' + files[file] + ranks[rank] + '#='
    for column in range(8):
    for file in range(8):
    for rank in range(8):
    print 'R' + files[column] + files[file] + ranks[rank] + '='
    print 'R' + files[column] + 'x' + files[file] + ranks[rank] + '='
    print 'R' + files[column] + files[file] + ranks[rank] + '+='
    print 'R' + files[column] + 'x' + files[file] + ranks[rank] + '+='
    print 'R' + files[column] + files[file] + ranks[rank] + '#='
    print 'R' + files[column] + 'x' + files[file] + ranks[rank] + '#='
    for column in range(8):
    for file in range(8):
    for rank in range(8):
    if column == file:
    continue
    if (file == 0 or file == 7) and (rank == 0 or rank == 7):
    continue
    if (rank + abs(column - file) > 7) and (rank - abs(column - file) < 0):
    continue
    print '9' + files[column] + files[file] + ranks[rank] + '='
    print '9' + files[column] + 'x' + files[file] + ranks[rank] + '='
    print '9' + files[column] + files[file] + ranks[rank] + '+='
    print '9' + files[column] + 'x' + files[file] + ranks[rank] + '+='
    print '9' + files[column] + files[file] + ranks[rank] + '#='
    print '9' + files[column] + 'x' + files[file] + ranks[rank] + '#='
    for column in range(8):
    for file in range(8):
    for rank in range(8):
    if column == file or abs(column - file) > 2:
    continue
    print 'N' + files[column] + files[file] + ranks[rank] + '='
    print 'N' + files[column] + 'x' + files[file] + ranks[rank] + '='
    print 'N' + files[column] + files[file] + ranks[rank] + '+='
    print 'N' + files[column] + 'x' + files[file] + ranks[rank] + '+='
    print 'N' + files[column] + files[file] + ranks[rank] + '#='
    print 'N' + files[column] + 'x' + files[file] + ranks[rank] + '#='
    for row in range(8):
    for file in range(8):
    for rank in range(8):
    if (rank == 0 or rank == 7) and ((file + abs(rank - row) > 7) and (file - abs(rank - row) < 0)):
    continue
    print 'Q' + ranks[row] + files[file] + ranks[rank] + '='
    print 'Q' + ranks[row] + 'x' + files[file] + ranks[rank] + '='
    print 'Q' + ranks[row] + files[file] + ranks[rank] + '+='
    print 'Q' + ranks[row] + 'x' + files[file] + ranks[rank] + '+='
    print 'Q' + ranks[row] + files[file] + ranks[rank] + '#='
    print 'Q' + ranks[row] + 'x' + files[file] + ranks[rank] + '#='
    for row in range(8):
    for file in range(8):
    for rank in range(8):
    if rank == 0 or rank == 7:
    continue
    if row == rank:
    continue
    print 'R' + ranks[row] + files[file] + ranks[rank] + '='
    print 'R' + ranks[row] + 'x' + files[file] + ranks[rank] + '='
    print 'R' + ranks[row] + files[file] + ranks[rank] + '+='
    print 'R' + ranks[row] + 'x' + files[file] + ranks[rank] + '+='
    print 'R' + ranks[row] + files[file] + ranks[rank] + '#='
    print 'R' + ranks[row] + 'x' + files[file] + ranks[rank] + '#='
    for row in range(8):
    for file in range(8):
    for rank in range(8):
    if row == rank:
    continue
    if (file + abs(rank - row) > 7) and (file - abs(rank - row) < 0):
    continue
    if (rank > row) and (2 * rank - row > 7):
    continue
    if (rank < row) and (2 * rank - row < 0):
    continue
    print '9' + ranks[row] + files[file] + ranks[rank] + '='
    print '9' + ranks[row] + 'x' + files[file] + ranks[rank] + '='
    print '9' + ranks[row] + files[file] + ranks[rank] + '+='
    print '9' + ranks[row] + 'x' + files[file] + ranks[rank] + '+='
    print '9' + ranks[row] + files[file] + ranks[rank] + '#='
    print '9' + ranks[row] + 'x' + files[file] + ranks[rank] + '#='
    for row in range(8):
    for file in range(8):
    for rank in range(8):
    if row == rank or abs(rank - row) > 2:
    continue
    if rank == 0 or rank == 7:
    continue
    if (rank == 1 or rank == 6) and abs(rank - row) > 1:
    continue
    print 'N' + ranks[row] + files[file] + ranks[rank] + '='
    print 'N' + ranks[row] + 'x' + files[file] + ranks[rank] + '='
    print 'N' + ranks[row] + files[file] + ranks[rank] + '+='
    print 'N' + ranks[row] + 'x' + files[file] + ranks[rank] + '+='
    print 'N' + ranks[row] + files[file] + ranks[rank] + '#='
    print 'N' + ranks[row] + 'x' + files[file] + ranks[rank] + '#='
    for column in range(8):
    for row in range(8):
    for file in range(8):
    for rank in range(8):
    if column != file and row != rank and abs(file - column) != abs(rank - row):
    continue
    if column == file and row == rank:
    continue
    if row == rank:
    if file == 0 or file == 7:
    continue
    if (rank + abs(column - file) > 7) and (rank - abs(column - file) < 0):
    continue
    if column == file:
    if rank == 0 or rank == 7:
    continue
    if (file + abs(row - rank) > 7) and (file - abs(row - rank) < 0):
    continue
    print 'Q' + files[column] + ranks[row] + files[file] + ranks[rank] + '='
    print 'Q' + files[column] + ranks[row] + 'x' + files[file] + ranks[rank] + '='
    print 'Q' + files[column] + ranks[row] + files[file] + ranks[rank] + '+='
    print 'Q' + files[column] + ranks[row] + 'x' + files[file] + ranks[rank] + '+='
    print 'Q' + files[column] + ranks[row] + files[file] + ranks[rank] + '#='
    print 'Q' + files[column] + ranks[row] + 'x' + files[file] + ranks[rank] + '#='
    for column in range(8):
    for row in range(8):
    for file in range(8):
    for rank in range(8):
    if column == file or row == rank:
    continue
    if abs(file - column) != abs(rank - row):
    continue
    if (rank > row) and (2 * rank - row > 7):
    continue
    if (rank < row) and (2 * rank - row < 0):
    continue
    if (file > column) and (2 * file - column > 7):
    continue
    if (file < column) and (2 * file - column < 0):
    continue
    print '9' + files[column] + ranks[row] + files[file] + ranks[rank] + '='
    print '9' + files[column] + ranks[row] + 'x' + files[file] + ranks[rank] + '='
    print '9' + files[column] + ranks[row] + files[file] + ranks[rank] + '+='
    print '9' + files[column] + ranks[row] + 'x' + files[file] + ranks[rank] + '+='
    print '9' + files[column] + ranks[row] + files[file] + ranks[rank] + '#='
    print '9' + files[column] + ranks[row] + 'x' + files[file] + ranks[rank] + '#='
    for column in range(8):
    for row in range(8):
    for file in range(8):
    for rank in range(8):
    if column == file or row == rank:
    continue
    if abs(file - column) > 2 or abs(rank - row) > 2 or abs(file - column) == abs(rank - row):
    continue
    if (rank > row) and (2 * rank - row > 7):
    continue
    if (rank < row) and (2 * rank - row < 0):
    continue
    if (file > column) and (2 * file - column > 7):
    continue
    if (file < column) and (2 * file - column < 0):
    continue
    print 'N' + files[column] + ranks[row] + files[file] + ranks[rank] + '='
    print 'N' + files[column] + ranks[row] + 'x' + files[file] + ranks[rank] + '='
    print 'N' + files[column] + ranks[row] + files[file] + ranks[rank] + '+='
    print 'N' + files[column] + ranks[row] + 'x' + files[file] + ranks[rank] + '+='
    print 'N' + files[column] + ranks[row] + files[file] + ranks[rank] + '#='
    print 'N' + files[column] + ranks[row] + 'x' + files[file] + ranks[rank] + '#='
     

  • Zigzag patternDatum06.06.2021 11:26
    Thema von Raman im Forum More languages

    What if 9=9 was the only equation in the Maths dictionary? How long could it stretch in a custom size of Scrabble board? I played it by myself for 2 players in a 15×15 board as I did not want the computer players to botch the ends with a dead end as by the dictionary stretching in all directions would essentially yield the same scores if there were no premium squares.

    1 point: = ×50
    2 points: x ×50

    I was inspired on this dictionary by 8=8 equation extending 3 times in the end game when I was playing a game of Maths Scrabble. Here I replaced 8 or 9 with 'x', to be not specific about the digit used. I played it with 10 tiles in each of player's racks but it can be lower, so as to maintain at least one 'x' tile and one '=' tile in the rack always. Otherwise player has to lose a turn by swapping tiles. x=x is the only word in the Zigzag dictionary. Even if a player has multiple 'x' and multiple '=' in the rack, longer words containing multiple 'x' and multiple '=' are not allowed in a single turn.

    [Header]
    Version=100000
    Author=Raman Viswanathan <raman22feb1988@gmail.com>
    StandardCategory=Equalities
    Licence=GNU General Public License, v3
    Release=30.05.21
    Comment=For best use have 10 letters on rack
    Letters=⁼,x
    Values=1,2
    Counts=50,50
    Key=
    [Replace]
    [Categories]
    [Words]
    x⁼x=

  • Maths Scrabble Puzzles.Datum28.05.2021 10:42
    Foren-Beitrag von Raman im Thema Maths Scrabble Puzzles.

    It is also worthwhile to try these out.

  • Math scrabble implementedDatum26.05.2021 13:06
    Foren-Beitrag von Raman im Thema Math scrabble implemented

    Zitat von Scotty im Beitrag #31
    First, you have to configure the movie export, see http://scrabble.sourceforge.net/wiki/ind...uration:Network. I'm using "/usr/bin/ffmpeg" and "-r 2". When done you can export a clip of all moves via File > Screenshot using the file type filter MPEG1 Video.

    Thank you for the information about movie export.
    Zitat von Scotty im Beitrag #31
    What dictionaries would you share on SF.net?

    I think that I can work more and revise the categories in my new dictionaries to make it better suited for SourceForge, than the one used for playing against other human players or computer players online or offline in my local computer's Scrabble3D application.
    For example that the new categories could give more emphasis to number of allowed words to determine speed of computer for play depending upon the size of the Scrabble board in 2D or 3D, instead of the old categories that are defined traditionally.
    Eventhough it is worthwhile of noting that loading of a dictionary of over 5 million words should not be any problem of taking of too much of time at the starting of the Scrabble3D application whenever all of the words are in the sorted order in the dictionary according to the ASCII or Unicode character sequences.
    I have a deadline on May 31. I will get back to you on this next week, that is June 1 or June 2.

  • Maths Scrabble Puzzles.Datum25.05.2021 17:25
    Foren-Beitrag von Raman im Thema Maths Scrabble Puzzles.

    Beautiful bingos in maths Scrabble with decimal numbers and factorials, with or without using one or more blank tiles.

    Bingos in maths Scrabble with multiplication and division operators.

    While bingos in maths Scrabble with addition and subtraction operators are more commonplace, with or without using decimal numbers.

    There can be more than one solution for bingo in most of the maths Scrabble puzzles, eventhough some may not be the play of highest scoring equation.

    Also, it is worthwhile to try out for bingos of length 12 and greater.

    Also, it is worthwhile to try out for bingos in Scrabble boards of sizes that are larger than 15×15.

    In the start of played game or for a few moves after that, there will be more space and more chances of having exactly one operator and exactly one '=' in rack to form more bingos. Human players and computer players with my maths dictionary containing more and longer mathematical equations with longer numbers usually tend to push away as many number tiles as they can during the first few moves so as to stagnate with more operator tiles and '=' tiles in their player's racks in the latter stages of the Scrabble game so as to have with lesser chances of forming bingos with maths Scrabble during the middle game and during the end game.

    In my humble opinion, for maths Scrabble without fractional tiles and equate game style of maths Scrabble with fractional tiles, it would always be optimal to have 10 tiles in rack and more ratio of numbers to operators and '=' for larger 2D and smaller or larger 3D boards with more number of tiles that are used in the played game.

  • Thema von Raman im Forum More languages

    Scrabble3D application used as a Sudoku assembly game

    1 point: 1 ×9, 2 ×9, 3 ×9, 4 ×9, 5 ×9, 6 ×9, 7 ×9, 8 ×9, 9 ×9

    In 2 of my test games that are played against the computer, I used 2 tiles in each of the player's racks at any one time. But, it can be larger than that also.
    Or it can be 1 also, but Scrabble3D application does not allow 1. It starts with a minimum of 2 tiles in each of the player's racks at any one time.

    I also removed all scoring squares except for the double word score in the central square at the start of the game, which is compulsory to have for Scrabble3D application to start any game although it need not be unique or at the central square of the Scrabble board. The double word score at the central square is crucial to give the starting player a balanced bias of Scrabble score eventhough the length of the starting integer would be 1 or 2 and it would score 2 points or 4 points respectively.
    In the computer details settings in the computer engine section of options tab in settings submenu in configuration menu of Scrabble3D application, for playing against the computer with the Sudoku dictionary without any issues for the first few moves, 'exchange tiles if score or number of tiles is lesser than' value should be reduced from 10 points and length should be reduced from 5 tiles to their minimum possible values of 0 points and 3 tiles respectively to avoid one or more computer players from swapping their own tiles during the first few moves.

    While playing against the computer, it is impossible to ensure same digit along a horizontal row or vertical column when separated by a space or within each of the 9 squares in the Sudoku grid.
    In the Sudoku dictionary, all that I would be able to define are all integers from 1 digit to 9 digits without any zeros and without any repeated digits.

    Please note that this sudoku.py Python program of mine automatically sorts all Sudoku dictionary words based upon ASCII and Unicode characters by itself.

    There are a total of 986409 integers in Sudoku dictionary.
    Please note that (9C1 × 1!) + (9C2 × 2!) + (9C3 × 3!) + (9C4 × 4!) + (9C5 × 5!) + (9C6 × 6!) + (9C7 × 7!) + (9C8 × 8!) + (9C9 × 9!) = 986409.

    sudoku.dic: https://drive.google.com/file/d/1yTjyJl0...iew?usp=sharing

    sudoku.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
     
    from itertools import permutations
    print '[Header]'
    print 'Version=100000'
    print 'Author=Raman Viswanathan <raman22feb1988@gmail.com>'
    print 'StandardCategory=Sudoku numbers'
    print 'Licence=GNU General Public License, v3'
    print 'Release=20.05.21'
    print 'Comment=Sudoku assembly game'
    print 'Letters=1,2,3,4,5,6,7,8,9'
    print 'Values=1,1,1,1,1,1,1,1,1'
    print 'Counts=9,9,9,9,9,9,9,9,9'
    print 'Key='
    print '[Replace]'
    print '[Categories]'
    print '[Words]'
    l = []
    for i in range(1, 10000000):
    s = str(i)
    t = set(s)
    if len(s) == len(t) and '0' not in t:
    l.append(s)
    x = '123456789'
    for j in range(9):
    y = x[:j] + x[j + 1:]
    z = permutations(y)
    for item in list(z):
    l.append(''.join(item))
    p = permutations(x)
    for thing in list(p):
    l.append(''.join(thing))
    l.sort()
    for element in l:
    print element + '='
     

  • Math scrabble implementedDatum25.05.2021 14:47
    Foren-Beitrag von Raman im Thema Math scrabble implemented

    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'.

  • Math scrabble implementedDatum25.05.2021 13:48
    Foren-Beitrag von Raman im Thema Math scrabble implemented

    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.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    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=sharing
    maths.dic: https://drive.google.com/file/d/1YQ9a3jp...iew?usp=sharing

    maths.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.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
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
     
    print '[Header]'
    print 'Version=100005'
    print 'Author=Raman Viswanathan <raman22feb1988@gmail.com>'
    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 = 1
    for 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=sharing
    equation.dic: https://drive.google.com/file/d/1cQ6iLKC...iew?usp=sharing
    fraction.dic: https://drive.google.com/file/d/15Vdadoq...iew?usp=sharing
    Note: fractions.dic is unsorted version of fraction.dic
    Use unsorted.py python program above with file name changed from unsorted.dic to fractions.dic to sort it and output it to fraction.dic

    fraction.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, 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 a
    def subscript(t):
    b = ""
    for d in t:
    b += n[ord(d) - 48]
    return b
    def gcd(p, q):
    while q > 0:
    (p, q) = (q, p % q)
    return p
    def string(nu, de):
    result = ''
    if nu >= de or nu == 0:
    result += str(nu / de)
    if nu % de > 0:
    result += d[(nu % de, de)]
    return result
    def terms(nu, de):
    result = 0
    if nu >= de or nu == 0:
    result += len(str(nu / de))
    if nu % de > 0:
    result += 1
    return result
    print '[Header]'
    print 'Version=100000'
    print 'Author=Raman Viswanathan <raman22feb1988@gmail.com>'
    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.

  • Thema von Raman im Forum More languages

    Exotic dictionary - Scrabble with names of chemical elements and their symbols

    1 point: I ×12, U ×11, N ×8, E ×7, R ×7, O ×6, A ×5, T ×5, L ×4, S ×3
    2 points: D ×3, G ×2
    3 points: M ×11, C ×3, B ×2, P ×2
    4 points: H ×2, F ×1, V ×1, W ×1, Y ×1
    5 points: K ×1
    8 points: X ×1
    10 points: Z ×1

    I played it with 20 tiles in rack at a time.

    I was inspired with it by Bernie McMahon's Facebook post on 'Quicksilver theme Scrabble board' to Scrabble Snippetz Facebook group and Pixie Pit Scrabble Players Facebook group.

    This should work out well enough because since all two letter symbols of chemical elements are included in the dictionary (but not any of the one letter symbols of chemical elements), most of the rarely used letters that are stagnated in the player's racks at the end of the played game should have some place in the Scrabble board to be pushed away as symbols of chemical elements and not as names of chemical elements.
    Players should plan the end game in such a way that they push away the rarely used letters that are not part of any two letter symbol of any chemical element at the earliest and not keeping them in their racks till the very end of the played games with this dictionary.

    elements.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
     
    elements = []
    elements.append('hydrogen')
    elements.append('helium')
    elements.append('lithium')
    elements.append('beryllium')
    elements.append('boron')
    elements.append('carbon')
    elements.append('nitrogen')
    elements.append('oxygen')
    elements.append('fluorine')
    elements.append('neon')
    elements.append('sodium')
    elements.append('magnesium')
    elements.append('aluminium')
    elements.append('silicon')
    elements.append('phosphorus')
    elements.append('sulphur')
    elements.append('chlorine')
    elements.append('argon')
    elements.append('potassium')
    elements.append('calcium')
    elements.append('scandium')
    elements.append('titanium')
    elements.append('vanadium')
    elements.append('chromium')
    elements.append('manganese')
    elements.append('iron')
    elements.append('cobalt')
    elements.append('nickel')
    elements.append('copper')
    elements.append('zinc')
    elements.append('gallium')
    elements.append('germanium')
    elements.append('arsenic')
    elements.append('selenium')
    elements.append('bromine')
    elements.append('krypton')
    elements.append('rubidium')
    elements.append('strontium')
    elements.append('yttrium')
    elements.append('zirconium')
    elements.append('niobium')
    elements.append('molybdenum')
    elements.append('technetium')
    elements.append('ruthenium')
    elements.append('rhodium')
    elements.append('palladium')
    elements.append('silver')
    elements.append('cadmium')
    elements.append('indium')
    elements.append('tin')
    elements.append('antimony')
    elements.append('tellurium')
    elements.append('iodine')
    elements.append('xenon')
    elements.append('caesium')
    elements.append('barium')
    elements.append('lanthanum')
    elements.append('cerium')
    elements.append('praseodymium')
    elements.append('neodymium')
    elements.append('promethium')
    elements.append('samarium')
    elements.append('europium')
    elements.append('gadolinium')
    elements.append('terbium')
    elements.append('dysprosium')
    elements.append('holmium')
    elements.append('erbium')
    elements.append('thulium')
    elements.append('ytterbium')
    elements.append('lutetium')
    elements.append('hafnium')
    elements.append('tantalum')
    elements.append('tungsten')
    elements.append('rhenium')
    elements.append('osmium')
    elements.append('iridium')
    elements.append('platinum')
    elements.append('gold')
    elements.append('mercury')
    elements.append('thallium')
    elements.append('lead')
    elements.append('bismuth')
    elements.append('polonium')
    elements.append('astatine')
    elements.append('radon')
    elements.append('francium')
    elements.append('radium')
    elements.append('actinium')
    elements.append('thorium')
    elements.append('protactinium')
    elements.append('uranium')
    elements.append('neptunium')
    elements.append('plutonium')
    elements.append('americium')
    elements.append('curium')
    elements.append('berkelium')
    elements.append('californium')
    elements.append('einsteinium')
    elements.append('fermium')
    elements.append('mendelevium')
    elements.append('nobelium')
    elements.append('lawrencium')
    elements.append('rutherfordium')
    elements.append('dubnium')
    elements.append('seaborgium')
    elements.append('bohrium')
    elements.append('hassium')
    elements.append('meitnerium')
    elements.append('darmstadtium')
    elements.append('roentgenium')
    elements.append('copernicium')
    elements.append('nihonium')
    elements.append('flerovium')
    elements.append('moscovium')
    elements.append('livermorium')
    elements.append('tennessine')
    elements.append('oganesson')
    symbols = []
    symbols.append('h')
    symbols.append('he')
    symbols.append('li')
    symbols.append('be')
    symbols.append('b')
    symbols.append('c')
    symbols.append('n')
    symbols.append('o')
    symbols.append('f')
    symbols.append('ne')
    symbols.append('na')
    symbols.append('mg')
    symbols.append('al')
    symbols.append('si')
    symbols.append('p')
    symbols.append('s')
    symbols.append('cl')
    symbols.append('ar')
    symbols.append('k')
    symbols.append('ca')
    symbols.append('sc')
    symbols.append('ti')
    symbols.append('v')
    symbols.append('cr')
    symbols.append('mn')
    symbols.append('fe')
    symbols.append('co')
    symbols.append('ni')
    symbols.append('cu')
    symbols.append('zn')
    symbols.append('ga')
    symbols.append('ge')
    symbols.append('as')
    symbols.append('se')
    symbols.append('br')
    symbols.append('kr')
    symbols.append('rb')
    symbols.append('sr')
    symbols.append('y')
    symbols.append('zr')
    symbols.append('nb')
    symbols.append('mo')
    symbols.append('tc')
    symbols.append('ru')
    symbols.append('rh')
    symbols.append('pd')
    symbols.append('ag')
    symbols.append('cd')
    symbols.append('in')
    symbols.append('sn')
    symbols.append('sb')
    symbols.append('te')
    symbols.append('i')
    symbols.append('xe')
    symbols.append('cs')
    symbols.append('ba')
    symbols.append('la')
    symbols.append('ce')
    symbols.append('pr')
    symbols.append('nd')
    symbols.append('pm')
    symbols.append('sm')
    symbols.append('eu')
    symbols.append('gd')
    symbols.append('tb')
    symbols.append('dy')
    symbols.append('ho')
    symbols.append('er')
    symbols.append('tm')
    symbols.append('yb')
    symbols.append('lu')
    symbols.append('hf')
    symbols.append('ta')
    symbols.append('w')
    symbols.append('re')
    symbols.append('os')
    symbols.append('ir')
    symbols.append('pt')
    symbols.append('au')
    symbols.append('hg')
    symbols.append('tl')
    symbols.append('pb')
    symbols.append('bi')
    symbols.append('po')
    symbols.append('at')
    symbols.append('rn')
    symbols.append('fr')
    symbols.append('ra')
    symbols.append('ac')
    symbols.append('th')
    symbols.append('pa')
    symbols.append('u')
    symbols.append('np')
    symbols.append('pu')
    symbols.append('am')
    symbols.append('cm')
    symbols.append('bk')
    symbols.append('cf')
    symbols.append('es')
    symbols.append('fm')
    symbols.append('md')
    symbols.append('no')
    symbols.append('lr')
    symbols.append('rf')
    symbols.append('db')
    symbols.append('sg')
    symbols.append('bh')
    symbols.append('hs')
    symbols.append('mt')
    symbols.append('ds')
    symbols.append('rg')
    symbols.append('cn')
    symbols.append('nh')
    symbols.append('fl')
    symbols.append('mc')
    symbols.append('lv')
    symbols.append('ts')
    symbols.append('og')
    print('[Header]')
    print('Version=100000')
    print('Author=Raman Viswanathan <raman22feb1988@gmail.com>')
    print('StandardCategory=Chemical elements')
    print('Licence=GNU General Public License, v3')
    print('Comment=Periodic table of chemical elements')
    print('Letters=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,3,3,2,1,4,2,4,1,8,5,1,3,1,1,3,10,1,1,1,1,4,4,8,4,10')
    print('Counts=5,2,3,3,7,1,2,2,12,0,1,4,11,8,6,2,0,7,3,5,11,1,1,1,1,1')
    print('[Replace]')
    print('[Categories]')
    print('1=Element names')
    print('2=Element symbols')
    print('[Words]')
    # count = [0] * 26
    # total = 0
    # for item in elements:
    # for letter in item:
    # count[ord(letter) - 97] += 1
    # total += 1
    # for item in symbols:
    # for letter in item:
    # count[ord(letter) - 97] += 1
    # total += 1
    # for thing in range(26):
    # print chr(thing + 65), (count[thing] * 1000.0) / total
    for i in range(118):
    print elements[i].upper() + '=Chemical element with atomic number ' + str(i + 1) + ';1'
    for j in range(118):
    print symbols[j].upper() + '=Symbol for chemical element ' + elements[j].capitalize() + ';2'
     

  • Math scrabble implementedDatum12.05.2021 20:20
    Foren-Beitrag von Raman im Thema Math scrabble implemented

    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=sharing

    maths.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
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
     
    print '[Header]'
    print 'Version=100005'
    print 'Author=Raman Viswanathan <raman22feb1988@gmail.com>'
    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 = 1
    for i in range(15):
    if i > 0:
    j *= i
    print str(i) + '!E' + str(j) + '=;7'
    print str(j) + 'E' + str(i) + '!=;7'
     


    unique.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    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=sharing
    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 a
    def subscript(t):
    b = ""
    for d in t:
    b += n[ord(d) - 48]
    return b
    def gcd(p, q):
    while q > 0:
    (p, q) = (q, p % q)
    return p
    def string(nu, de):
    result = ''
    if nu >= de or nu == 0:
    result += str(nu / de)
    if nu % de > 0:
    result += d[(nu % de, de)]
    return result
    def terms(nu, de):
    result = 0
    if nu >= de or nu == 0:
    result += len(str(nu / de))
    if nu % de > 0:
    result += 1
    return result
    print '[Header]'
    print 'Version=100000'
    print 'Author=Raman Viswanathan <raman22feb1988@gmail.com>'
    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.

Inhalte des Mitglieds Raman
Beiträge: 167
Ort: Chennai, India
Geschlecht: männlich
Seite 1 von 9 « Seite 1 2 3 4 5 6 9 Seite »
Xobor Forum Software von Xobor.de
Einfach ein Forum erstellen
Datenschutz