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
  • Tamil ScrabbleDatum28.03.2021 11:10
    Foren-Beitrag von Raman im Thema Tamil Scrabble

    Zitat von Scotty im Beitrag #56
    Add the letter set to the dictionary. For example, Math looks like this:
    Letters=⁼,0,1,2,3,4,5,6,7,8,9,−,×,÷,+,.,!,^,²,³,√,∜,∞,>,<
    Values=0,3,1,2,4,3,3,4,5,4,4,6,6,7,6,8,10,9,10,10,7,10,10,10,10
    Counts=18,6,10,8,7,7,7,7,6,6,6,4,4,3,4,3,1,1,1,1,3,1,1,1,1

    If you want to, then you can change the letter set in Math dictionary to the following.

    Letters=⁼,0,1,2,3,4,5,6,7,8,9,−,×,÷,+,.,!,^,²,³,√,∜
    Values=1,2,1,1,2,2,3,3,4,3,4,3,4,4,3,10,8,9,6,7,5,10
    Counts=18,6,8,7,6,6,6,6,5,5,5,3,3,3,3,1,1,1,1,1,2,1

    This is the best fit of parameters to the best of my knowledge after my analysis having played several games of Math Scrabble.

    (1) This reduces the total number of tiles to 98 (excluding two blank tiles) instead of 117 (excluding three blank tiles?).
    (2) This removes useless mathematical symbols like >, < and ∞. Don't you think that ∞ cannot be part of any meaningful mathematical equation? Don't you think that > and < will allow players to form with wild mathematical equations at player's own wishes instead of restricting with possibilities?
    (3) This reduces average tile value for each letter. Like conventional English Scrabble, there are limited number of tiles with tile value > 5.
    (4) This increases tile value of ⁼ letter from 0 to 1. Every tile is worth at least one point.
    (5) ∛ or mod may be better replacements for ∜ but I do not change with ∜ because the Math dictionary created by Jouni Tolonen contains words containing ∜ (although only ∜16⁼2 and 2⁼∜16) but not ∛ or mod.
    Zitat von Scotty im Beitrag Unfixed bugs in Scrabble3D application.
    Sure, ideally you get in contact with the original author. Otherwise I would take your "much better version" opinion without hesitation if there is another user's word. In case of math.dic it's not too difficult to check myself.

    Replacing the Math dictionary with a robust letter set is a quick way of removing the major flaw without having the need to create entire long Math dictionary again by making use of computer program.
    And computer will take long time to play each turn with long Math dictionary with board sizes > 21×21.

    Loading a long Math dictionary every time the Scrabble3D application restarts will take a long time but not verifying the presence of each word once they are placed on the Math Scrabble board during each of player's turns and displaying their meaning and category, if not general category.
    Even a Math dictionary allowing mathematical equations upto length 11 can be very long, assuming that there are 10 tiles in rack and even not allowing connecting two Math Scrabble tiles that are already present in Math Scrabble board.

    Even then multiplication by 0 and 1 should not be allowed with numbers greater than 4 digits because there are 8 forms of mathematical equations possible for each multiplication math equation with 0 and 1 only (when computer program runs for addition and multiplication only and not for subtraction and division): A×B=C, B×A=C, C÷A=B, C÷B=A, C=A×B, C=B×A, B=C÷A, A=C÷B.
    If an intelligent parsing algorithm for playing the best mathematical equation from the Math Scrabble rack by making use of one or more Math Scrabble tiles that are already present in the Math Scrabble board and checking their correctness along with displaying their meaning and category, if not general category, then there is no need to create an exhaustive Math dictionary with endless number of mathematical equations.

    This applies only to Math dictionary in which number of mathematical equations are unlimited and it does not apply to other language dictionaries.
    Instead of the classical Math Scrabble letter set that is listed above, that intelligent parsing above that is mentioned above can also be used for fractional tiles in Equate style Math Scrabble, or equations of Set Theory, Mathematical Logic, etc.

  • Tamil ScrabbleDatum25.03.2021 21:33
    Foren-Beitrag von Raman im Thema Tamil Scrabble

    Please update the Tamil dictionary to version 1.0.4 from the below link. I have updated the Tamil dictionary with the best fit of all parameters to the best of my knowledge in all of individual categories and in all of combined categories and this may be the last update that I might ever make to the Tamil dictionary.
    https://drive.google.com/file/d/1_ubes0-...iew?usp=sharing

    Here are the few changes that I made:
    (1) Removed [Alternative_Categories] completely.
    (2) Revised the tile values for some of the letters in the letter set.
    (3) Updated version number to 100004.
    (4) Updated release date to Friday, 26 March 2021.
    (5) Changed standard category from 'Tamil lexicon' to 'Common words' (words common to both categories).
    (6) Changed comments from 'The digital South Asia library' to 'Tamil lexicon - the digital South Asia library'.

    Zitat von Scotty im Beitrag #61
    What I understand is that a word "Foo" can be either easy or difficult.

    Your understanding is wrong. If you looked at both of my Tamil Scrabble game boards that I have attached along with my post 59 in this thread, then you would have understood it more clearly.
    If I have a trigraph like பொ (single Tamil letter), then in easy version, I have separate tiles for all three symbols and in difficult version, I have one single tile for all those trigraphs and also for digraphs, thereby giving one separate tile to each of the Tamil letters instead of separating each of the symbols.
    பொ is rarely used and has got higher tile value than each of the symbols separated (the case in which each separate symbol has got tile value of 1).

    [Left side] Easy version
    [Right side] Difficult version
    Zitat von Scotty im Beitrag #61
    Meaning when excluding both categories you should have zero words to play.

    There are 36664 out of 116448 Tamil words in the Tamil dictionary that do not contain any of these symbols: ஔ, ா, ெ, ே, ை, ொ, ோ and ௌ and so they belong to neither easy version nor difficult version as defined in the Tamil dictionary.
    If you think that every word should be either in easy version or in difficult version and there should be zero words to play when excluding both of the categories, then duplicate entries of all of those 36664 Tamil words need to be defined in the Tamil dictionary.
    Including duplicate entries of Tamil words in Tamil dictionary will make the Tamil dictionary to occupy more space. It also takes more time to load the Tamil Scrabble dictionary by the Scrabble3D application at the start of the program, eventhough 36664 Tamil words is not a huge number when compared to total number of words in the Tamil dictionary right now, which is 196232 = 36664 + (79784 × 2). 36664 + 79784 = 116448. The multiplier of 2 is for the two categories which are easy version and difficult version of the 79784 out of 116448 Tamil words in the Tamil dictionary.

    On the top of all of that, duplicate entries of Tamil words in Tamil dictionary are always skipped by Scrabble3D application when it loads the Tamil dictionary, meaning that if all of those 36664 Tamil words are first defined in easy version and then also in difficult version later in the Tamil dictionary, then the Scrabble3D application discards away with all of those difficult version Tamil words and only keeps off with all of those easy version Tamil words when it loads the Tamil dictionary.
    On the other hand, if all of those 36664 Tamil words are first defined in difficult version and then also in easy version later in the Tamil dictionary, then the Scrabble3D application discards away with all of those easy version Tamil words and only keeps off with all of those difficult version Tamil words when it loads the Tamil dictionary.

    Thank you.

    split.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
     
    import codecs
     
    tamil = codecs.open("C:\\Program Files (x86)\\Scrabble3D\\tamil\\tamil\\split.txt", "r", "utf-8")
    d = {}
    for line in tamil:
    s = line[:-1]
    t = s.find('=')
    d[s[:t]] = s[t+1:].split(',')
    tamil.close()
     
    def expand(word):
    words = [word]
    index = []
    for k in range(len(word)):
    if word[k] in d:
    index.append(k)
    for e in range(len(index) - 1, -1, -1):
    f = len(words)
    for c in range(f):
    for b in range(1, len(d[words[c][index[e]]])):
    words.append(words[c][:index[e]] + (d[words[c][index[e]]][b], d[words[c][index[e]]][b][:-1]) [d[words[c][index[e]]][b][-1] == '\r'] + words[c][index[e]+1:])
    return words
     
    out = codecs.open("C:\\Program Files (x86)\\Scrabble3D\\tamil\\tamil\\tamil.dic", "w", "utf-8")
    file = codecs.open("C:\\Program Files (x86)\\Scrabble3D\\tamil\\tamil\\tamil_final.dic", "r", "utf-8")
    for i in range(215):
    r = file.readline()
    out.write(r[:-1])
    for line in file:
    st = line[:-1]
    idx = st.find('=')
    word = st[:idx]
    meaning = (st[idx+1:], st[idx+1:-1]) [st[-1] == '\r']
    l = expand(word)
    if len(l) == 1:
    out.write(l[0] + '=' + meaning + '\n')
    else:
    for j in range(len(l)):
    if j == 0:
    out.write(l[j] + '=' + meaning + ';2\n')
    elif j == len(l) - 1:
    out.write(l[j] + '=' + meaning + ';1\n')
    else:
    out.write(l[j] + '=' + meaning + ';3\n')
    file.close()
    out.close()
     

  • Tamil ScrabbleDatum07.03.2021 20:37
    Foren-Beitrag von Raman im Thema Tamil Scrabble

    Please give me with one more day of time. I will provide you with the final version of Tamil dictionary that is to be uploaded and updated in SourceForge tomorrow.

    Thank you.

  • Tamil ScrabbleDatum07.03.2021 09:20
    Foren-Beitrag von Raman im Thema Tamil Scrabble

    The lines that are defined in [Alternative_Categories] section in Tamil dictionary appear along with two categories 'Easy version' and 'Difficult version' and they can be confusing to players whoever make use of Tamil dictionary.
    Is it possible to define a secondary letter set for the Tamil dictionary instead of [Alternative_Categories] section?

    Or just comment out those lines without the need to remove them off completely?
    If it is really necessary, then I will provide a version 1.0.4 of the Tamil dictionary tomorrow which can avoid all of those issues that can be uploaded into SourceForge.

  • Tamil ScrabbleDatum06.03.2021 10:28
    Foren-Beitrag von Raman im Thema Tamil Scrabble

    Zitat von Scotty im Beitrag Dictionary
    Tamil dictionary was updated to v1.0.3 and has now a category for difficult words. Kudos @Raman

    You cannot quite call them 'difficult words'. It is 'difficult version' making use of digraph tiles and trigraph tiles with as much as 313 distinct tiles in which most of the digraph tiles and trigraph tiles are rarely used than in 'easy version' and are difficult to play than in 'easy version'.
    This is how actually Tamil Scrabble is to be played, but for beginners, it is quite good to start with 'easy version' with only 113 distinct tiles without making use of any of digraph tiles and trigraph tiles.
    The 'easy version' separates out all occurrences of ா, ெ, ே and ை. However that in the hybrid Tamil dictionary with two different categories for 'easy version' and 'difficult version', players can play a mix of both versions if they want to do so with.
    For beginners, 'easy version' can be played with 20 tiles in rack and so 'difficult version' also. For experienced players, however 'easy version' can be played with 15 tiles in rack or even something that is lesser than that.

    [Left side] Easy version
    [Right side] Difficult version
    More previews of my Tamil Scrabble games to follow up later on.

    Zitat von Scotty im Beitrag #56
    You can add any comment to the dictionary. A section [Alternative_Categories] would just be ignored.

    By the way, I did not have time to look into this yesterday. You said that [Alternative_Categories] would just be ignored, but why the lines in them are showing along with the two categories 'Easy version' and 'Difficult version' long and filling the entire screen line?
    Please change that section to comment if possible, otherwise just remove that section from the dictionary completely. Anyone who wants a letter set for 'Easy version' can take it from this forum and it is not a requirement for that thing to be present in the dictionary data if they show untidily in the categories section.

    Please update to version 1.0.4 of Tamil dictionary removing the [Alternative_Categories] section completely if commenting that is not possible. My preferred method would be to comment it.
    Lines in [Alternative_Categories] do not have any numbers followed by '=' to carry on with those numbers in any of the dictionary words.

    Zitat von Scotty im Beitrag #58
    Think the comprehensive approach with categories fits better the program idea although the dictionary is quite large. Uploaded the new version.

    The total number of words in dictionary is right now 196232, much lesser than CSW2019 (International / United Kingdom) English Scrabble dictionary of 279496 words.
    The long definition of each of the dictionary words and multiple definitions in case of some of the dictionary words make the Tamil Scrabble dictionary that I provided you for uploading to SourceForge large, although 79784 words are redundant which are not among the 36664 words that are common to both of the two different categories, 'Easy version' and 'Difficult version'.

  • Tamil ScrabbleDatum05.03.2021 21:29
    Foren-Beitrag von Raman im Thema Tamil Scrabble

    Please update the Tamil dictionary in whatever way you want (either of these two ways).

    (1) Single Tamil dictionary (தமிழ்) with two different categories, containing 36664 words common to both categories and 79784 words specific to easy version (without digraph tiles and trigraph tiles) and 79784 words specific to difficult version (with digraph tiles and trigraph tiles).
    tamil.dic: https://drive.google.com/file/d/1yXx_BaM...iew?usp=sharing

    (2) Two different Tamil dictionaries, Tamil easy (தமிழ் சுலபம்) and Tamil hard (தமிழ் கடினம்). In this case, please replace pre-existing tamil.dic by tamil_easy.dic (a newly updated version), after renaming tamil.dic to tamil_easy.dic in the version.config, version.ini and list of dictionaries in SourceForge.
    tamil_easy.dic: https://drive.google.com/file/d/1Jy1sTkq...iew?usp=sharing
    tamil_hard.dic: https://drive.google.com/file/d/1hQMC3xz...iew?usp=sharing

    Thank you.

    merge.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
     
    easy = open('C:\\Program Files (x86)\\Scrabble3D\\tamil\\tamil\\tamil_easy.dic', 'r')
    hard = open('C:\\Program Files (x86)\\Scrabble3D\\tamil\\tamil\\tamil_hard.dic', 'r')
    for i in range(7):
    s = easy.readline()
    print s[:-1]
    t = hard.readline()
    letter1 = []
    letter2 = []
    for j in range(3):
    u = easy.readline()
    letter1.append(u[:-1])
    v = hard.readline()
    letter2.append(v[:-1])
    print letter2[0] + ',\xc3\xb4,\xc3\xb9,\xc3\xba,\xc3\xbb'
    print letter2[1] + ',1,1,1,1'
    print letter2[2] + ',0,0,0,0'
    for k in range(40):
    w = easy.readline()
    for l in range(202):
    x = hard.readline()
    if l < 200:
    print x[:-1]
    print '[Categories]'
    print '1=Easy version'
    print '2=Difficult version'
    print '[Alternative_Categories]'
    for thing in letter2:
    print thing
    for item in letter1:
    print item
    print '[Words]'
    c = {}
    d = {}
    while True:
    y = easy.readline()
    if len(y) == 0:
    break
    p = y.find('=')
    c[y[:p]] = y[p+1:-1]
    while True:
    z = hard.readline()
    if len(z) == 0:
    break
    q = z.find('=')
    d[z[:q]] = z[q+1:-1]
    a = set(c.keys())
    b = set(d.keys())
    f = a.intersection(b)
    g = a.difference(b)
    h = b.difference(a)
    for e in f:
    print e + '=' + d[e]
    for o in g:
    print o + '=' + c[o] + ';1'
    for r in h:
    print r + '=' + d[r] + ';2'
    easy.close()
    hard.close()
     

  • Tamil ScrabbleDatum02.03.2021 08:49
    Foren-Beitrag von Raman im Thema Tamil Scrabble

    I would like to do an update to the Tamil dictionary, so that players can switch between easy version or difficult version.

    Let us do it tomorrow, but I would like to ask you a few questions about it before doing that update:
    (1) The two versions have different letter sets. What is your preferred way to do it?
    Can I have two different categories in the same dictionary or can I have two different dictionaries with different letter sets?

    (2) If I use two different categories in the same dictionary, then is it possible to define two different letter sets for the different categories in the same dictionary?
    Or at least an option to comment the secondary letter set instructing the players to uncomment the secondary letter set and comment the primary letter set whenever they want to play with the secondary letter set?

  • Tamil ScrabbleDatum01.12.2020 10:01
    Foren-Beitrag von Raman im Thema Tamil Scrabble

    Then, why can't a single Portuguese dictionary exist with a category (also known as filter) to choose between European version or Brazilian version instead of 2 separate ones?

    Zitat von Scotty im Beitrag #52
    I would rather introduce a category aka filter. We have this for German where the standard set is limited and users can add another bunch of words from other sources pretty easy.

    Categories (also known as filters) can be introduced when tile sets are going to be the same.
    'Tamil easy' and 'Tamil hard' will use different tile sets. There are set of tiles that are common to both 'Tamil easy' and 'Tamil hard', there are set of tiles that are unique to 'Tamil easy' and should not interfere with 'Tamil hard' and there are set of tiles that are unique to 'Tamil hard' and should not interfere with 'Tamil easy'.
    That interference should not occur when assigning letter to blank tiles and generating randomly 10 tiles for each played game. க can be used for க, கா, கெ, கே, கை, கொ, கோ and கௌ in 'Tamil easy' as ா, ெ, ே, ை and ள have separate tiles of their own but க can only be used for க in 'Tamil hard' as other letters have separate tiles of their own.
    Do you think that it is still possible to use category (also known as filter) if the tile sets in the 2 dictionaries are different from each other?

    If a new category (also known as filter) is introduced in a single Tamil dictionary for the easier version and the harder version, is it possible to define 2 independent tile sets for both the versions which is not supposed to interfere with the other tile set?

  • Tamil ScrabbleDatum30.11.2020 17:46
    Foren-Beitrag von Raman im Thema Tamil Scrabble

    Scotty: Just like the Portuguese dictionary is split into two: European version and Brazilian version, may I suggest that Tamil dictionary also be split into two, an easier version and a harder version?

    The older version of Tamil dictionary, tamil.dic, just rename its English name to 'Tamil easy' and local name to 'தமிழ் சுலபம்'.
    Get tamizh.dic from https://drive.google.com/file/d/1lITDV1W...iew?usp=sharing. Keep its English name to 'Tamil hard' and local name to 'தமிழ் கடினம்'.
    The harder version can be fit for people who love difficult challenges, diverse letter set and for best results need 20 tiles in rack at any one time.
    I cannot reduce it from 1000 tiles pre-defined in the letter set in the dictionary. Some difficult to play letters have been assigned points in range from 11 to 20 and some of them need some specific letters to combine with.
    Doing that also makes the computer players as opponents to take such letters seriously depending upon the frequency and combination with other specific letters and playing them immediately when opportunity comes when such tiles do land on the player's racks with.

    The harder version combines letters like ஔ, ா, ெ, ே, ை, ொ, ோ and ௌ into one single tile, the way how Tamil is actually to be played.
    This version is the extensive use of Tamil digraphs and trigraphs, but not actually to be said digraphs and trigraphs as they are single Tamil letter.
    The easier version splits some of the rarely used and difficult to play Tamil letters into two or three tiles which are good for beginners.
    I will later attach screenshots over hereby of all my played games, both with easier version and harder version.

    I will do an update to the 'Tamil hard' dictionary version once again in a week or two. This will be to revise and finalize with letter distribution and points of letters once again.
    I will change all the tile letters to Unicode font (people won't need to download the Valluvan font as in 'Tamil easy' dictionary in which ா, ெ, ே and ை tiles will not be nice if they are represented by the Unicode font).
    I will also consider including all Tamil loanwords that are borrowed from Sanskrit containing the letter ஶ which does not exist in the Valluvan font and so words containing ஶ have been dropped from the 'Tamil easy' dictionary.
    ஶ has been dropped from some words containing it in Tamil Lexicon dictionary, so it is to be revised from the pronounciations in the meanings in which š sound is included.
    In any case that ச is a good substitute letter for most of the Tamil loanwords that are borrowed from Sanskrit containing the letter ஶ and that letter is too rarely used to be included in any tiles but only to appear randomly if anyone were to ever include with 10 random tiles in each played game, unlike the other Tamil loanwords that are borrowed from Sanskrit containing the other Sanskrit letters of ஸ, ஜ, ஷ and ஹ.
    க்ஷ = க் + ஷ and ஶ்ரீ = ஶ் + ரீ. ஶ்ரீ is supported by the Valluvan font and words containing them have not been dropped from the 'Tamil easy' dictionary although most of them are not regular Tamil words but rather names of persons and names of places which are too hard for me to drop them from the dictionary, so that I have decided to have them in the 'Tamil easy' dictionary and 'Tamil hard' dictionary.
    Names of days of the week and names of months of the year are much better to be kept in the Scrabble dictionaries than names of persons and names of places although official Scrabble dictionaries that are published in languages that make use of the Latin Script alphabets do drop with them altogether.

    Thank you.

    By the way that one single dictionary with two different categories cannot be used to play with both easier version and harder version because they make use of completely different letter sets as you can see by yourself if you were ever to open that dictionary.
    For example, if anyone were to ever include with 10 random tiles in each played game, the choice of easier version or harder version should entirely and strictly depend upon player's tastes.

  • Unfixed bugs in Scrabble3D application.Datum25.10.2020 18:40

    Zitat von Scotty im Beitrag #29

    Zitat von Raman
    Does it always look out for ways to push away as much as tiles as possible while not allowing high scoring and rarely used letters to stagnate in its rack?


    If the Computer wins the game (more points than opponent) it places as much letters as possible. Otherwise as much points.


    I don't think that is literally true.

    Consider the following board position, at the endgame, when there are no more tiles left in the bag.
    When computer evaluated for the best move and when it is computer's turn to play at its strongest level, the best move for play by computer at its strongest level comes to merely 14 points, which is 7 = 7 - 0 at the rightmost column.
    But there is another move which scores 108 points and pushes more tiles than 7 = 7 - 0.
    But that move is only fourth in the best move list out of 5. Why is it so?

    Attached Equate400.txt saved game file for your own reference. Please rename it to Equate400.ssg before experimenting it by yourself.
    Also that equate.dic is too large to be attached here. It can be shared by a link after uploading it on Google Drive, but anyway that I am sharing my python script from which you can generate yourself by running Python 2.7.

    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'
     


    By the way that if joker is exchanged for the same letter on the board, as in B21 square in this board position, the star should disappear. But here it does not happen to be the case. Why is it so?
    Also that the turn does not get ended for me if I exchange the joker with the same letter on the board, as it says so in the configuration settings page and Scrabble3D application's wiki page. Why is it so?

    By the way that it is only possible for human players to exchange joker with the same letter on the board or convert at most one tile to a joker per turn in What-If-Only variant. I hope that you are just aware of that simply, but that you do not take that as a serious issue, because it counteracts with the skill level of the computer players playing the highest scoring plays ever.
    The computer players do not do that. Why is it so?

  • Discussions about forum donationsDatum20.10.2020 21:45
    Foren-Beitrag von Raman im Thema Discussions about forum donations

    Although I do not want to get involved in forum donations, just curious about it simply, the banner at the bottom of the page says that 14% of 144€ has been raised so far.
    I would like to know who donated it which might be essentially of no use in a forum with very few active members? And what happens if the 100% target is reached only near the end of the year, namely 2020-21?
    Will it be used for the Premium Tariff fees for this forum for the small portion of the remaining year, namely 2020-21 or will it be carried forward to be used wisely for the next subsequent year fully, namely 2021-22?

  • Math scrabble implementedDatum20.10.2020 21:37
    Foren-Beitrag von Raman im Thema Math scrabble implemented

    On Wednesday, 23 September 2020, Alexlatham96 updated the Maths Scrabble letter distribution in the Wikipedia page to the one present in math.dic in Scrabble3D application that had been contributed by Jouni Tolonen.

    My proposal of the Maths Scrabble letter distribution article for the Wikipedia page:

    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
    Math Scrabble is played with 10 tiles in the rack at a time. To play, you have to put in a true equation on the board.

    An alternative by Equate game has this distribution of 200 tiles:

    4 blank tiles (scoring 0 points)
    1 point: ×36, 1 ×29, 2 ×28
    2 points: 0 ×27, 3 ×27, 4 ×27
    3 points: 5 ×27, 6 ×27, 8 ×26, × ×9, ÷ ×9
    4 points: 7 ×26, 9 ×26, + ×8, ×8
    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
    Equate game is played on a 21×21 board and 10 tiles are on the rack at a time.

    --

    Here after, I am going to call the former Maths Scrabble tile set as classical Maths Scrabble.

    I have revised the classical Maths Scrabble letter set to provide a balance between post 3 by Scotty in this thread and the one that is present in math.dic in Scrabble3D application that had been contributed by Jouni Tolonen.
    This is to remove the useless symbols such as those like ∞, < and > and overall lower the points for all tiles to match with the one that is similar to English Scrabble. At the same time having at least one tile with any given face value between 1 and 10 (1 and 10 both inclusive).
    At least if not to have a better classical Maths dictionary for the Scrabble3D application, the tile set for math.dic can be updated for above to provide the most optimal experience. A better classical Maths dictionary will matter only for the computer players as opponents (only offline and not online) and not for the human players as opponents (either offline or online).
    My tile set also increases the count of digits and decreases the count of symbols. This is done to encourage players to form longer mathematical equations with longer numbers. Some kits that are available from shops will contain tiles with numbers that are ≥ 10 and this will discourage players from forming longer mathematical equations with longer numbers.

    I modified the original tile set of the Equate game to make it more thrilling by discarding all tiles of reducible fractions and by considering only those fractional tiles whose values are strictly between 0 and 1 (0 and 1 both exclusive).
    In short, there should be exactly φ(N) distinct fractional tiles with the denominator N, that are strictly between 0 and 1 (0 and 1 both exclusive). That is, those values of denominator that are ≥ 1, ≤ N - 1 and co-prime to N.
    I also removed the flaw of having just 3 tiles each for the digits 0 and 1 and 9 tiles each for the rest of the digits, namely, 2, 3, 4, 5, 6, 7, 8 and 9.

    Why having heavy flaws like this and selling? Are these part of trade tactics to fool all the customers who buy those kits? Even if there are some flaws in the tile set and board design and outside packing looks good, the customers will blindly buy those kits and play them. If they become popular, then they will organize tournaments with such tile sets becoming as a standard?
    I am saying this also because of the fact that Upwords large pack is a 8×8 board with 64 tiles for ₹400, whereas Upwords small travel pack is a 10×10 board with 100 tiles for ₹225.
    Similarly that in Sorkalam Tamil Scrabble pack, 2 of the Tamil vowel combinations on transparent tiles, at most one of them to be placed on other consonants on wooden tiles are missing, namely ு and ூ, still many customers would be fools to buy those kits just simply because the outside packing looks good. And that they do not mind playing with those missing 2 letters as a handicap and they write great reviews about the overall product and design of the game to be played.
    The cost of Sorkalam game in Amazon is ₹1200. If everyone else does like what I did in my own 2014 make, printing out Scrabble board and Scrabble tiles on chart paper, pasting them on cardboard and cutting them with scissors, the entire process will merely cost only around less than ₹200 (first I did it for 21×21 English Scrabble seeing that it would be so much of cost to buy the real kit from abroad, then I did it for Tamil Scrabble and later on I did it for Scrabble with mathematical equations). That way, people can pick up their own letter distribution, points for tiles and printed extra tiles to ensure different letter distributions in different games. Still more and more people are interested in buying Sorkalam game from Amazon that does not even have the complete letter set (no ு and ூ vowel combos that are printed on transparent tiles which are part of core Tamil and those that are also frequently used). Wooden tiles are just a sign of attraction for people to buy them and that people psychologically prefer more to play with wooden tiles than ones made out of that from cardboard and chart paper, isn't it?

    For 21×21 board with 200 tiles, for classical Maths Scrabble, lesser number of ⁼ tiles would be sufficient, say 34, and more number of digit tiles and lesser number of symbol tiles can be put into the bag than when compared to that of Equate game style.
    This is because longer mathematical equations with longer numbers can be comfortably played in classical Maths Scrabble and players can be encouraged to do so with. But in Equate game style, diverse variety of distinct fractional tiles prevents players from forming longer mathematical equations with longer numbers.
    So that more shorter equations will be formed and more number of ⁼ tiles would be needed, say 36.

    --

    I will come up with my proposed Tamil Scrabble letter distribution article for the Wikipedia page soon. Please give me some more time to prepare with it.

    I am also thinking about Scrabble with logical equations. In that case, we can only have two numbers 0 and 1 and no longer logical equations with longer numbers, even when making use of different variety of 7 distinct logical operators such as those like and, or, not, nand, nor, xor and xnor.
    Although that more than one logical operator can be allowed on any one single side of any logical equation. I think that it would be more thrilling to play that with some variable names, say A, B, C and D.
    In that case that logical equations such as those like A + A̅B = A + B, AB + A̅B + AB̅ + A̅B̅ = 1, etc. are all supposed to be valid logical equations only.

    And also that it would be good to give a thought whether it works out if any of types of variables are introduced either into classical Maths Scrabble or into Equate game style of Maths Scrabble.

    The tile set that I have used for the equate.dic dictionary file, Equate game style of Maths Scrabble, that can be generated from the equate.py Python script as a source code, by executing that with Python 2.7, in my previous post 25 in this thread makes use of these 200 tiles without having any blank tiles:
    1 point: ×36, 1 ×29, 2 ×28
    2 points: 0 ×27, 3 ×27, 4 ×27
    3 points: 5 ×27, 6 ×27, 8 ×26, × ×9, ÷ ×9
    4 points: 7 ×26, 9 ×26, + ×9, ×9
    5 points: ¹/₂ ×4, ¹/₄ ×2, ³/₄ ×2
    6 points: ¹/₃ ×2, ²/₃ ×2
    7 points: ¹/₆ ×1, ⁵/₆ ×1
    8 points: ¹/₅ ×1, ²/₅ ×1, ³/₅ ×1, ⁴/₅ ×1, ¹/₈ ×1, ³/₈ ×1, ⁵/₈ ×1, ⁷/₈ ×1
    9 points: ¹/₁₀ ×1, ³/₁₀ ×1, ⁷/₁₀ ×1, ⁹/₁₀ ×1
    10 points: ¹/₇ ×1, ²/₇ ×1, ³/₇ ×1, ⁴/₇ ×1, ⁵/₇ ×1, ⁶/₇ ×1, ¹/₉ ×1, ²/₉ ×1, ⁴/₉ ×1, ⁵/₉ ×1, ⁷/₉ ×1, ⁸/₉ ×1
    It is a gentle balance between 220 tiles in my previous post 25 in this thread and 200 tiles having any blank tiles in my current post 26 in this thread for my proposal of the Maths Scrabble letter distribution article for the Wikipedia page.

    In Scrabble3D application, it is essentially worthless to play with any blank tiles for larger 2D boards or (smaller or larger) 3D boards with computer players as opponents (only offline and never online), because it will slow down the performance of computer players as opponents (only offline and never online).
    Because there are lots of possibilities that are supported for them, especially with dictionaries that contain larger number of words and in dictionaries that have large number of distinct letters in the letter set.

    Playing with more number of rack does not necessarily slow down the performance of computer players as opponents (only offline and never online) because Scrabble3D application seems to make use of trie data structure for storing and looking up all of types of dictionary words.
    And that it does not look up for all of types of permutations in all of types of starting and ending Scrabble board squares or cubes in 2D Scrabble board or 3D Scrabble board in all of types of axes at any one single given period of time.

  • Math scrabble implementedDatum20.10.2020 20:08
    Foren-Beitrag von Raman im Thema Math scrabble implemented

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

    The following 220 tiles might fit well for a 21×21 board in order to optimally play with 10 tiles in the rack at any one given period of time. Because there are a diverse variety of fractional tiles used, this variant of Maths Scrabble is played only with 4 fundamental mathematical operations of addition, subtraction, multiplication and division.
    1 point: ×40, 1 ×30, 2 ×29
    2 points: 0 ×28, 3 ×28, 4 ×28
    3 points: 5 ×28, 6 ×28, 8 ×27, × ×10, ÷ ×10
    4 points: 7 ×27, 9 ×27, + ×10, ×10
    5 points: ¹/₂ ×4, ¹/₄ ×2, ³/₄ ×2
    6 points: ¹/₃ ×2, ²/₃ ×2
    7 points: ¹/₆ ×2, ⁵/₆ ×2
    8 points: ¹/₅ ×1, ²/₅ ×1, ³/₅ ×1, ⁴/₅ ×1, ¹/₈ ×1, ³/₈ ×1, ⁵/₈ ×1, ⁷/₈ ×1
    9 points: ¹/₁₀ ×1, ³/₁₀ ×1, ⁷/₁₀ ×1, ⁹/₁₀ ×1
    10 points: ¹/₇ ×1, ²/₇ ×1, ³/₇ ×1, ⁴/₇ ×1, ⁵/₇ ×1, ⁶/₇ ×1, ¹/₉ ×1, ²/₉ ×1, ⁴/₉ ×1, ⁵/₉ ×1, ⁷/₉ ×1, ⁸/₉ ×1
    Note that × and ÷ are assigned lesser points than + and − because × and ÷ can wildly combine with fractions of all denominators, whereas + and − can only strictly combine with fractions of the same denominators and their proper divisors.


    equate.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
     
    num = [1, 1, 2, 1, 3, 1, 2, 3, 4, 1, 5, 1, 2, 3, 4, 5, 6, 1, 3, 5, 7, 1, 2, 4, 5, 7, 8, 1, 3, 7, 9, 1, 5, 7, 11, 0]
    den = [2, 3, 3, 4, 4, 5, 5, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 12, 12, 12, 12, 1]
    sym = ['#', '$', '&', '(', ')', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '%', ':', '^', '.', '!']
    conj = [0, 2, 1, 4, 3, 8, 7, 6, 5, 10, 9, 16, 15, 14, 13, 12, 11, 20, 19, 18, 17, 26, 25, 24, 23, 22, 21, 30, 29, 28, 27, 34, 33, 32, 31, 35]
    m = ["\xe2\x81\xb0", "\xc2\xb9", "\xc2\xb2", "\xc2\xb3", "\xe2\x81\xb4", "\xe2\x81\xb5", "\xe2\x81\xb6", "\xe2\x81\xb7", "\xe2\x81\xb8", "\xe2\x81\xb9"]
    n = ["\xe2\x82\x80", "\xe2\x82\x81", "\xe2\x82\x82", "\xe2\x82\x83", "\xe2\x82\x84", "\xe2\x82\x85", "\xe2\x82\x86", "\xe2\x82\x87", "\xe2\x82\x88", "\xe2\x82\x89"]
    d = {}
    for j in range(len(sym) - 1):
    d[(num[j], den[j])] = sym[j]
    def superscript(s):
    a = ""
    for c in s:
    a += m[ord(c) - 48]
    return 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=20.10.20'
    print 'Comment=Equate game style of Scrabble with mathematical equations'
    print 'Letters=@,0,1,2,3,4,5,6,7,8,9,-,*,/,+,#,$,&,(,),A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,%,:,^,.'
    print 'Values=1,2,1,1,2,2,3,3,4,3,4,4,3,3,4,5,6,6,5,5,8,8,8,8,7,7,10,10,10,10,10,10,8,8,8,8,10,10,10,10,10,10,9,9,9,9,9,9,9,9'
    print 'Counts=36,9,11,10,9,9,9,9,8,8,8,9,9,9,9,4,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0'
    print 'Key='
    print '[Replace]'
    print '-=\xe2\x88\x92'
    print '*=\xc3\x97'
    print '/=\xc3\xb7'
    print '@=\xe2\x81\xbc'
    for i in range(len(sym) - 1):
    print sym[i] + '=' + superscript(str(num[i])) + '/' + subscript(str(den[i]))
    print '[Categories]'
    print '1=Addition'
    print '2=Subtraction'
    print '3=Multiplication'
    print '4=Division'
    print '[Words]'
    for k in range(10000):
    print str(k) + '@' + str(k) + '='
    for k in range(100):
    for l in range(len(sym) - 1):
    print (str(k), '') [k == 0] + d[(num[l], den[l])] + '@' + (str(k), '') [k == 0] + d[(num[l], den[l])] + '='
    for k in range(10):
    for l in range(len(sym) - 1):
    for o in range(10):
    for r in range(len(sym) - 1):
    t = den[l] * k + num[l]
    u = den[l]
    v = den[r] * o + num[r]
    w = den[r]
    y = t * w + u * v
    z = u * w
    g = gcd(y, z)
    y /= g
    z /= g
    if z > 12 or z == 11 or y % z == 0:
    continue
    if terms(t, u) + terms(v, w) + terms(y, z) <= 6:
    print string(t, u) + '+' + string(v, w) + '@' + string(y, z) + '=;1'
    print string(y, z) + '@' + string(t, u) + '+' + string(v, w) + '=;1'
    print string(y, z) + '-' + string(t, u) + '@' + string(v, w) + '=;2'
    print string(v, w) + '@' + string(y, z) + '-' + string(t, u) + '=;2'
    for k in range(100):
    for l in range(len(sym) - 1, len(sym)):
    for o in range(100):
    for r in range(len(sym) - 1):
    t = den[l] * k + num[l]
    u = den[l]
    v = den[r] * o + num[r]
    w = den[r]
    y = t * w + u * v
    z = u * w
    g = gcd(y, z)
    y /= g
    z /= g
    if z > 12 or z == 11:
    continue
    if terms(t, u) + terms(v, w) + terms(y, z) <= 6:
    print string(t, u) + '+' + string(v, w) + '@' + string(y, z) + '=;1'
    print string(y, z) + '@' + string(t, u) + '+' + string(v, w) + '=;1'
    print string(y, z) + '-' + string(t, u) + '@' + string(v, w) + '=;2'
    print string(v, w) + '@' + string(y, z) + '-' + string(t, u) + '=;2'
    for k in range(100):
    for l in range(len(sym) - 1):
    for o in range(100):
    for r in range(len(sym) - 1, len(sym)):
    t = den[l] * k + num[l]
    u = den[l]
    v = den[r] * o + num[r]
    w = den[r]
    y = t * w + u * v
    z = u * w
    g = gcd(y, z)
    y /= g
    z /= g
    if z > 12 or z == 11:
    continue
    if terms(t, u) + terms(v, w) + terms(y, z) <= 6:
    print string(t, u) + '+' + string(v, w) + '@' + string(y, z) + '=;1'
    print string(y, z) + '@' + string(t, u) + '+' + string(v, w) + '=;1'
    print string(y, z) + '-' + string(t, u) + '@' + string(v, w) + '=;2'
    print string(v, w) + '@' + string(y, z) + '-' + string(t, u) + '=;2'
    for k in range(100):
    for l in range(len(sym) - 1):
    for o in range(100):
    for r in range(conj[l], conj[l] + 1):
    t = den[l] * k + num[l]
    u = den[l]
    v = den[r] * o + num[r]
    w = den[r]
    y = t * w + u * v
    z = u * w
    g = gcd(y, z)
    y /= g
    z /= g
    if z > 12 or z == 11:
    continue
    if terms(t, u) + terms(v, w) + terms(y, z) <= 6:
    print string(t, u) + '+' + string(v, w) + '@' + string(y, z) + '=;1'
    print string(y, z) + '@' + string(t, u) + '+' + string(v, w) + '=;1'
    print string(y, z) + '-' + string(t, u) + '@' + string(v, w) + '=;2'
    print string(v, w) + '@' + string(y, z) + '-' + string(t, u) + '=;2'
    for k in range(1000):
    for o in range(1000):
    y = k + o
    if len(str(k)) + len(str(o)) + len(str(y)) <= 7:
    print str(k) + '+' + str(o) + '@' + str(y) + '=;1'
    print str(y) + '@' + str(k) + '+' + str(o) + '=;1'
    print str(y) + '-' + str(k) + '@' + str(o) + '=;2'
    print str(o) + '@' + str(y) + '-' + str(k) + '=;2'
    for k in range(100):
    for l in range(len(sym) - 1):
    for o in range(100):
    for r in range(len(sym) - 1):
    t = den[l] * k + num[l]
    u = den[l]
    v = den[r] * o + num[r]
    w = den[r]
    y = t * v
    z = u * w
    g = gcd(y, z)
    y /= g
    z /= g
    if z > 12 or z == 11:
    continue
    if terms(t, u) + terms(v, w) + terms(y, z) <= 6:
    print string(t, u) + '*' + string(v, w) + '@' + string(y, z) + '=;3'
    print string(y, z) + '@' + string(t, u) + '*' + string(v, w) + '=;3'
    print string(y, z) + '/' + string(t, u) + '@' + string(v, w) + '=;4'
    print string(v, w) + '@' + string(y, z) + '/' + string(t, u) + '=;4'
    for k in range(100):
    for l in range(len(sym) - 1, len(sym)):
    for o in range(100):
    for r in range(len(sym) - 1):
    t = den[l] * k + num[l]
    u = den[l]
    v = den[r] * o + num[r]
    w = den[r]
    y = t * v
    z = u * w
    g = gcd(y, z)
    y /= g
    z /= g
    if z > 12 or z == 11:
    continue
    if terms(t, u) + terms(v, w) + terms(y, z) <= 6:
    print string(t, u) + '*' + string(v, w) + '@' + string(y, z) + '=;3'
    print string(y, z) + '@' + string(t, u) + '*' + string(v, w) + '=;3'
    if k > 0:
    print string(y, z) + '/' + string(t, u) + '@' + string(v, w) + '=;4'
    print string(v, w) + '@' + string(y, z) + '/' + string(t, u) + '=;4'
    for k in range(100):
    for l in range(len(sym) - 1):
    for o in range(100):
    for r in range(len(sym) - 1, len(sym)):
    t = den[l] * k + num[l]
    u = den[l]
    v = den[r] * o + num[r]
    w = den[r]
    y = t * v
    z = u * w
    g = gcd(y, z)
    y /= g
    z /= g
    if z > 12 or z == 11:
    continue
    if terms(t, u) + terms(v, w) + terms(y, z) <= 6:
    print string(t, u) + '*' + string(v, w) + '@' + string(y, z) + '=;3'
    print string(y, z) + '@' + string(t, u) + '*' + string(v, w) + '=;3'
    print string(y, z) + '/' + string(t, u) + '@' + string(v, w) + '=;4'
    print string(v, w) + '@' + string(y, z) + '/' + string(t, u) + '=;4'
    for k in range(1, 100):
    for l in range(len(sym) - 1, len(sym)):
    for o in range(100):
    for r in range(len(sym) - 1):
    t = den[l] * k + num[l]
    u = den[l]
    v = den[r] * o + num[r]
    w = den[r]
    y = t * v
    z = u * w
    g = gcd(y, z)
    y /= g
    z /= g
    if z > 12 or z == 11:
    continue
    if terms(t, u) + terms(v, w) + terms(y, z) == 7:
    print string(t, u) + '*' + string(v, w) + '@' + string(y, z) + '=;3'
    print string(y, z) + '@' + string(t, u) + '*' + string(v, w) + '=;3'
    if k > 0:
    print string(y, z) + '/' + string(t, u) + '@' + string(v, w) + '=;4'
    print string(v, w) + '@' + string(y, z) + '/' + string(t, u) + '=;4'
    for k in range(100):
    for l in range(len(sym) - 1):
    for o in range(1, 100):
    for r in range(len(sym) - 1, len(sym)):
    t = den[l] * k + num[l]
    u = den[l]
    v = den[r] * o + num[r]
    w = den[r]
    y = t * v
    z = u * w
    g = gcd(y, z)
    y /= g
    z /= g
    if z > 12 or z == 11:
    continue
    if terms(t, u) + terms(v, w) + terms(y, z) == 7:
    print string(t, u) + '*' + string(v, w) + '@' + string(y, z) + '=;3'
    print string(y, z) + '@' + string(t, u) + '*' + string(v, w) + '=;3'
    print string(y, z) + '/' + string(t, u) + '@' + string(v, w) + '=;4'
    print string(v, w) + '@' + string(y, z) + '/' + string(t, u) + '=;4'
    for k in range(1, 1000):
    for o in range(1, 1000):
    y = k * o
    if len(str(k)) + len(str(o)) + len(str(y)) <= 8:
    print str(k) + '*' + str(o) + '@' + str(y) + '=;3'
    print str(y) + '@' + str(k) + '*' + str(o) + '=;3'
    print str(y) + '/' + str(k) + '@' + str(o) + '=;4'
    print str(o) + '@' + str(y) + '/' + str(k) + '=;4'
    print '0*0@0=;3'
    print '0@0*0=;3'
    for k in range(1, 10000):
    print '0*' + str(k) + '@0=;3'
    print '0@0*' + str(k) + '=;3'
    print str(k) + '*0@0=;3'
    print '0@' + str(k) + '*0=;3'
    print '0/' + str(k) + '@0=;4'
    print '0@0/' + str(k) + '=;4'
    for l in range(len(sym) - 1):
    k = range(0, 1000, den[l])
    for r in range(len(k)):
    y = k[r] * num[l] / den[l]
    z = k[r]
    if z >= 100:
    print sym[l] + '*' + str(z) + '@' + str(y) + '=;3'
    print str(z) + '*' + sym[l] + '@' + str(y) + '=;3'
    print str(y) + '@' + sym[l] + '*' + str(z) + '=;3'
    print str(y) + '@' + str(z) + '*' + sym[l] + '=;3'
    print str(y) + '/' + str(z) + '@' + sym[l] + '=;4'
    print str(y) + '/' + sym[l] + '@' + str(z) + '=;4'
    print sym[l] + '@' + str(y) + '/' + str(z) + '=;4'
    print str(z) + '@' + str(y) + '/' + sym[l] + '=;4'
     


    Compare my tile set with the actual tile set of the Equate game which is played on a 19×19 board with 190 tiles:
    LetterCountPoints
    400
    031
    131
    291
    391
    491
    591
    692
    792
    892
    992
    112
    ×113
    ÷115
    +111
    ¹/₂44
    ²/₂12
    ⁵/₂15
    ¹/₃28
    ²/₃28
    ³/₃12
    ¹/₄26
    ²/₄25
    ³/₄26
    ⁴/₄12
    ⁷/₄17
    ¹/₆110
    ²/₆19
    ³/₆15
    ⁴/₆19
    ⁵/₆112
    ⁶/₆12
    Blank30
    Total190382

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

  • Usage: python power.py > power.dic (Python 2.7)

    power.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
     
    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"]
    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
    print "[Header]"
    print "Version=100000"
    print "Author=Raman Viswanathan <raman22feb1988@gmail.com>"
    print "StandardCategory=1 digit"
    print "Licence=GNU General Public License, v3"
    print "Release=20.09.20"
    print "Comment=This dictionary contains all numbers which are perfect powers of any integer \xe2\x89\xa5 2"
    print "[Replace]"
    print "[Categories]"
    for j in range(1, 11):
    print str(j) + "=" + str(j + 1) + " digits"
    print "[Words]"
    k = {}
    for i in range(2, 316228):
    z = i ** 2
    y = 2
    while z < 10 ** 11:
    if z not in k:
    k[z] = (i, y)
    z *= i
    y += 1
    x = []
    for (key, value) in k.items():
    x.append((key, value[0], value[1]))
    l = sorted(x)
    for item in l:
    print str(item[0]) + "=" + str(item[1]) + superscript(str(item[2])) + (";" + str(len(str(item[0])) - 1), "") [item[0] <= 9]
     

  • Scrabble with Roman numeralsDatum19.09.2020 04:17
    Thema von Raman im Forum Taberna

    Exotic dictionary - Scrabble with Roman numerals

    Exotic dictionary - Scrabble with Roman numerals


    2 points: M ×20, C ×20, X ×20
    3 points: I ×19
    5 points: D ×7, L ×7, V ×7

    That is ideally played with 7 tiles in rack for obtaining within best results, but players can change this number freely enough depending upon their own wishes and depending upon their own tastes.





    Usage: python roman.py > roman.dic (Python 2.7)

    roman.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    def Roman(n):
    cRomanString = ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']
    cRomanValue = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
    x = 0
    result = ''
    while n > 0:
    if n / cRomanValue[x] >= 1:
    result += cRomanString[x]
    n -= cRomanValue[x]
    else:
    x += 1
    return result
    print "[Header]"
    print "Version=100000"
    print "Author=Raman Viswanathan <raman22feb1988@gmail.com>"
    print "StandardCategory=Roman Numerals"
    print "Licence=GNU General Public License, v3"
    print "Comment=This dictionary contains all Roman Numerals from 1 to 3999"
    print "[Replace]"
    print "[Categories]"
    print "[Words]"
    for i in range(1, 4000):
    print Roman(i) + "=" + str(i)
     


  • Thema von Raman im Forum More languages

    Exotic dictionary - Scrabble with date

    [Replace]
    -=–

    2 blank tiles (scoring 0 points)
    2 points: ×23
    3 points: 1 ×14, 2 ×11
    4 points: 3 ×8
    5 points: 5 ×6, 7 ×6, 8 ×6
    6 points: 0 ×6, 4 ×6, 6 ×6, 9 ×6

    That is ideally played with 10 tiles in rack for obtaining within best results, but players can change this number freely enough depending upon their own wishes and depending upon their own tastes.



    date.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
     
    print '[Header]'
    print 'Version=100000'
    print 'Author=Raman Viswanathan <raman22feb1988@gmail.com>'
    print 'StandardCategory=Gregorian calendar with 4 digits for year'
    print 'Licence=GNU General Public License, v3'
    print 'Release=17.09.20'
    print 'Comment=This dictionary contains all dates from 1\xe2\x88\x921\xe2\x88\x921 to 31\xe2\x88\x9212\xe2\x88\x929999'
    print '[Replace]'
    print '-=\xe2\x88\x92'
    print '[Categories]'
    print '[Words]'
    days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
    day = -1
    for year in range(1, 10000):
    for month in range(1, 13):
    dates = 31
    if month == 4 or month == 6 or month == 9 or month == 11:
    dates -= 1
    if month == 2:
    dates -= 3
    if year % 4 == 0:
    dates += 1
    if year >= 1800 and year % 100 == 0 and year % 400 != 0:
    dates -= 1
    for date in range(1, dates + 1):
    if year == 1752 and month == 9 and date >= 3 and date <= 13:
    print str(date) + '-' + str(month) + '-' + str(year) + '=11 days were dropped during the process of switching over from Julian calendar to Gregorian calendar'
    else:
    print str(date) + '-' + str(month) + '-' + str(year) + '=' + days[day % 7]
    day += 1
     


    day.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    print '[Header]'
    print 'Version=100000'
    print 'Author=Raman Viswanathan <raman22feb1988@gmail.com>'
    print 'StandardCategory=Gregorian calendar with 2 digits for year'
    print 'Licence=GNU General Public License, v3'
    print 'Release=17.09.20'
    print 'Comment=This dictionary contains all dates from 1\xe2\x88\x921\xe2\x88\x9200 to 31\xe2\x88\x9212\xe2\x88\x9299'
    print '[Replace]'
    print '-=\xe2\x88\x92'
    print '[Categories]'
    print '[Words]'
    for year in range(0, 100):
    for month in range(1, 13):
    dates = 31
    if month == 4 or month == 6 or month == 9 or month == 11:
    dates -= 1
    if month == 2:
    dates -= 3
    if year % 4 == 0:
    dates += 1
    for date in range(1, dates + 1):
    print str(date) + '-' + str(month) + '-' + (str(year), '0' + str(year)) [year <= 9]
     


    time.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    print '[Header]'
    print 'Version=100000'
    print 'Author=Raman Viswanathan <raman22feb1988@gmail.com>'
    print 'StandardCategory=24 hour time with seconds'
    print 'Licence=GNU General Public License, v3'
    print 'Release=17.09.20'
    print 'Comment=This dictionary contains all time from 0:00:00 to 23:59:59'
    print '[Replace]'
    print '[Categories]'
    print '[Words]'
    for hour in range(0, 24):
    for minute in range(0, 60):
    for second in range(0, 60):
    print str(hour) + ':' + (str(minute), '0' + str(minute)) [minute <= 9] + ':' + (str(second), '0' + str(second)) [second <= 9]
     


    clock.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    print '[Header]'
    print 'Version=100000'
    print 'Author=Raman Viswanathan <raman22feb1988@gmail.com>'
    print 'StandardCategory=12 hour time with seconds with AM / PM marker in two separate tiles'
    print 'Licence=GNU General Public License, v3'
    print 'Release=17.09.20'
    print 'Comment=This dictionary contains all time from 12:00:00 AM to 11:59:59 PM'
    print '[Replace]'
    print '[Categories]'
    print '[Words]'
    for hour in range(1, 13):
    for minute in range(0, 60):
    for second in range(0, 60):
    print str(hour) + ':' + (str(minute), '0' + str(minute)) [minute <= 9] + ':' + (str(second), '0' + str(second)) [second <= 9] + 'AM'
    print str(hour) + ':' + (str(minute), '0' + str(minute)) [minute <= 9] + ':' + (str(second), '0' + str(second)) [second <= 9] + 'PM'
     


    watch.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    print '[Header]'
    print 'Version=100000'
    print 'Author=Raman Viswanathan <raman22feb1988@gmail.com>'
    print 'StandardCategory=12 hour time with seconds without AM / PM marker'
    print 'Licence=GNU General Public License, v3'
    print 'Release=17.09.20'
    print 'Comment=This dictionary contains all time from 1:00:00 to 12:59:59'
    print '[Replace]'
    print '[Categories]'
    print '[Words]'
    for hour in range(1, 13):
    for minute in range(0, 60):
    for second in range(0, 60):
    print str(hour) + ':' + (str(minute), '0' + str(minute)) [minute <= 9] + ':' + (str(second), '0' + str(second)) [second <= 9]
     


    hour.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    print '[Header]'
    print 'Version=100000'
    print 'Author=Raman Viswanathan <raman22feb1988@gmail.com>'
    print 'StandardCategory=12 hour time without seconds without AM / PM marker'
    print 'Licence=GNU General Public License, v3'
    print 'Release=17.09.20'
    print 'Comment=This dictionary contains all time from 1:00 to 12:59'
    print '[Replace]'
    print '[Categories]'
    print '[Words]'
    for hour in range(1, 13):
    for minute in range(0, 60):
    print str(hour) + ':' + (str(minute), '0' + str(minute)) [minute <= 9]
     


    minute.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    print '[Header]'
    print 'Version=100000'
    print 'Author=Raman Viswanathan <raman22feb1988@gmail.com>'
    print 'StandardCategory=12 hour time without seconds with AM / PM marker in two separate tiles'
    print 'Licence=GNU General Public License, v3'
    print 'Release=17.09.20'
    print 'Comment=This dictionary contains all time from 12:00 AM to 11:59 PM'
    print '[Replace]'
    print '[Categories]'
    print '[Words]'
    for hour in range(1, 13):
    for minute in range(0, 60):
    print str(hour) + ':' + (str(minute), '0' + str(minute)) [minute <= 9] + 'AM'
    print str(hour) + ':' + (str(minute), '0' + str(minute)) [minute <= 9] + 'PM'
     


    second.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    print '[Header]'
    print 'Version=100000'
    print 'Author=Raman Viswanathan <raman22feb1988@gmail.com>'
    print 'StandardCategory=24 hour time without seconds'
    print 'Licence=GNU General Public License, v3'
    print 'Release=17.09.20'
    print 'Comment=This dictionary contains all time from 0:00 to 23:59'
    print '[Replace]'
    print '[Categories]'
    print '[Words]'
    for hour in range(0, 24):
    for minute in range(0, 60):
    print str(hour) + ':' + (str(minute), '0' + str(minute)) [minute <= 9]
     


    hourglass.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    print '[Header]'
    print 'Version=100000'
    print 'Author=Raman Viswanathan <raman22feb1988@gmail.com>'
    print 'StandardCategory=12 hour time with seconds with AM / PM marker in one single tile'
    print 'Licence=GNU General Public License, v3'
    print 'Release=17.09.20'
    print 'Comment=This dictionary contains all time from 12:00:00 AM to 11:59:59 PM'
    print '[Replace]'
    print 'A=AM'
    print 'P=PM'
    print '[Categories]'
    print '[Words]'
    for hour in range(1, 13):
    for minute in range(0, 60):
    for second in range(0, 60):
    print str(hour) + ':' + (str(minute), '0' + str(minute)) [minute <= 9] + ':' + (str(second), '0' + str(second)) [second <= 9] + 'A'
    print str(hour) + ':' + (str(minute), '0' + str(minute)) [minute <= 9] + ':' + (str(second), '0' + str(second)) [second <= 9] + 'P'
     


    sundial.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    print '[Header]'
    print 'Version=100000'
    print 'Author=Raman Viswanathan <raman22feb1988@gmail.com>'
    print 'StandardCategory=12 hour time without seconds with AM / PM marker in one single tile'
    print 'Licence=GNU General Public License, v3'
    print 'Release=17.09.20'
    print 'Comment=This dictionary contains all time from 12:00 AM to 11:59 PM'
    print '[Replace]'
    print 'A=AM'
    print 'P=PM'
    print '[Categories]'
    print '[Words]'
    for hour in range(1, 13):
    for minute in range(0, 60):
    print str(hour) + ':' + (str(minute), '0' + str(minute)) [minute <= 9] + 'A'
    print str(hour) + ':' + (str(minute), '0' + str(minute)) [minute <= 9] + 'P'
     

  • Thema von Raman im Forum More languages

    Exotic dictionary - Scrabble with perfect squares

    2 points: 4 ×10, 6 ×10
    3 points: 0 ×10, 1 ×10, 2 ×10
    4 points: 5 ×10, 8 ×10, 9 ×10
    5 points: 3 ×10, 7 ×10

    That is ideally played with 7 or 8 tiles in rack for obtaining within best results, but players can change this number freely enough depending upon their own wishes and depending upon their own tastes.




    square.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    print "[Header]"
    print "Version=100000"
    print "Author=Raman Viswanathan <raman22feb1988@gmail.com>"
    print "StandardCategory=1 digit"
    print "Licence=GNU General Public License, v3"
    print "Comment=Squares"
    print "[Replace]"
    print "[Categories]"
    for j in range(1, 11):
    print str(j) + "=" + str(j + 1) + " digits"
    print "[Words]"
    for i in range(1, 316228):
    print str(i ** 2) + "=" + str(i) + "\xc2\xb2" + (";" + str(len(str(i ** 2)) - 1), "") [i <= 3]
     


    triangular.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
     
    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"]
    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
    print "[Header]"
    print "Version=100000"
    print "Author=Raman Viswanathan <raman22feb1988@gmail.com>"
    print "StandardCategory=1 digit"
    print "Licence=GNU General Public License, v3"
    print "Comment=Triangular Numbers"
    print "[Replace]"
    print "[Categories]"
    for j in range(1, 11):
    print str(j) + "=" + str(j + 1) + " digits"
    print "[Words]"
    for i in range(2, 447215):
    print str((i * (i - 1)) / 2) + "=" + superscript(str(i)) + "C" + n[2] + (";" + str(len(str((i * (i - 1)) / 2)) - 1), "") [i <= 4]
     


    cube.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    print "[Header]"
    print "Version=100000"
    print "Author=Raman Viswanathan <raman22feb1988@gmail.com>"
    print "StandardCategory=1 digit"
    print "Licence=GNU General Public License, v3"
    print "Comment=Cubes"
    print "[Replace]"
    print "[Categories]"
    for j in range(1, 15):
    print str(j) + "=" + str(j + 1) + " digits"
    print "[Words]"
    for i in range(1, 100000):
    print str(i ** 3) + "=" + str(i) + "\xc2\xb3" + (";" + str(len(str(i ** 3)) - 1), "") [i <= 2]
     

  • Thema von Raman im Forum More languages

    Exotic dictionary - Scrabble with Roman numerals

    2 points: M ×20, C ×20, X ×20
    3 points: I ×19
    5 points: D ×7, L ×7, V ×7

    That is ideally played with 7 tiles in rack for obtaining within best results, but players can change this number freely enough depending upon their own wishes and depending upon their own tastes.




    roman.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    def Roman(n):
    cRomanString = ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']
    cRomanValue = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
    x = 0
    result = ''
    while n > 0:
    if n / cRomanValue[x] >= 1:
    result += cRomanString[x]
    n -= cRomanValue[x]
    else:
    x += 1
    return result
    print "[Header]"
    print "Version=100000"
    print "Author=Raman Viswanathan <raman22feb1988@gmail.com>"
    print "StandardCategory=Roman Numerals"
    print "Licence=GNU General Public License, v3"
    print "Comment=This dictionary contains all Roman Numerals from 1 to 3999"
    print "[Replace]"
    print "[Categories]"
    print "[Words]"
    for i in range(1, 4000):
    print Roman(i) + "=" + str(i)
     

  • Word puzzles.Datum15.09.2020 21:15
    Foren-Beitrag von Raman im Thema Word puzzles.

    More 3 letter word puzzles:
    https://www.sporcle.com/games/Tom_the_Te...tal-and-country.
    Hint: Only one letter change between an answer and a next answer.

    (li) Female sheep
    (lii) Under obligation to repay
    (liii) They give a hoot!
    (liv) Lubricant for a car's engine
    (lv) American rapper, ___ Wayne
    (lvi) Rim or edge of a pitcher
    (lvii) One trip around a track
    (lviii) In computer parlance, a local area network
    (lix) Prohibit or forbid
    (lx) Flying mammal that likes caves
    (lxi) Slang for decorative skin art (ink)
    (lxii) Thick, viscous fluid composed of hydrocarbons
    (lxiii) Blemish a surface
    (lxiv) 'One small step for ___'
    (lxv) 'Ya ___' - Jamaican phrase for 'No problem'
    (lxvi) ABC crime drama, 'The ___ Squad' (1968-1973)
    (lxvii) Supreme being
    (lxviii) Spanish shout for a soccer score
    (lxix) Latin name for our sun
    (lxx) French for salt
    (lxxi) Mediterranean or Caspian, for example
    (lxxii) A grassy meadow

  • Find out a nine timer bingo in this following board position:

    I wish that all of puzzles in this thread and in 'Maths Scrabble Puzzles' thread are numbered properly. At least by some administrator of this forum as I do not have editing access to my old posts in this forum beyond the time limit of 1 hour except only in the Tamil forum in which I am assigned to be the only moderator in this forum.
    Anyway that it is not that important at all for a forum with a very few visitors nowadays. Also that my own Scrabble puzzles and also that of similarly posted messages in this forum may be only for my own future reference purposes. Also that I do not know about that trend in the past and also that I cannot predict about that in the future.

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