00001: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_20.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_30.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_40.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_50.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_60.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_70.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_80.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_90.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_100.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_10.0
[[07, 06, 0, 'ICE'], [07, 04, 0, 'JUD'], [04, 05, 01, 'INFSIVE'], [06, 08, 0, 'M']]
test_get_play_20.0
[[01, 07, 01, 'MALEATE'], [05, 06, 01, 'JURY'], [05, 08, 01, 'REWTH'], [01, 08, 0, 'OLEHUNT'],
 [02, 014, 01, 'RAVISES'], [0, 10, 0, 'TOGA'],
 [05, 013, 01, 'POZ'], [05, 05, 01, 'ABAND'],
 [02, 10, 0, 'COYE'], [10, 02, 0, 'FOOS']]
test_get_play_30.0
[[06, 06, 01, 'XUNT']]
test_get_play_40.0
[[07, 01, 0, 'INHERITANCE']]
test_get_play_50.0
[[06, 09, 01, 'CAT']]
test_get_play_60.0
[[06, 07, 01, 'CT']]
test_get_play_70.0
[[07, 03, 0, 'COMDER']]
test_get_play_80.0
[[06, 06, 0, 'AT']]
test_get_play_90.0
[[06, 07, 0, 'M']]
test_get_play_100.0
[[0, 07, 01, 'HEPATICS'], [01, 03, 0, 'MAILS'], [07, 06, 01, 'ARREAR'], [02, 0, 0, 'EASIED'],
 [013, 06, 0, 'SAHIWAL'], [03, 013, 01, 'MICROLOGIES'],
 [014, 07, 0, 'GAS'], [07, 05, 01, 'GOORY'],
 [10, 07, 0, 'SHIPS'], [02, 011, 01, 'MALEFICE'], [0, 10, 01, 'DOOLAN'], [04, 09, 01, 'POGEY'],
 [0, 014, 01, 'AGROS'], [03, 02, 01, 'TONIEST'], [09, 01, 01, 'SLICES'], [04, 0, 0, 'CRONY'],
 [07, 014, 01, 'DIXIT'], [011, 04, 01, 'PINS'],
 [05, 0, 01, 'ARED'], [0, 01, 0, 'GRAFT'], [012, 09, 0, 'MO'],
 [06, 04, 01, 'CAB'], [011, 012, 01, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_30.0
[-14]
test_play_40.0
[-14, -21]
test_play_50.0
[-160, -172]
test_play_60.0
[-160, -1]
test_play_70.0
[-163, -14]
test_play_80.0
[-162]
test_play_90.0
[-11, -15, -124, -17, -185, -12]
test_play_100.0
[-19, -133, -136, -18, -12, -173, -165, -17, -174, -16]
test_play_110.0
[-167, -61, -128, -11, -13, -185, -11, -12, -17, -125, -17, -14, -21, -132, -12, -15, -16, -168, -16, -13, -10, -127, -128]
test_play_120.0
[-11]
test_play_130.0
[-19]
test_play_140.0
[-18, -120, -126, -1]
test_play_150.0
[-139]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 72, 'const': 107, 'code+const': 179}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    return [[],[]]
def get_play(board, new_board):
    return [0,0,0,""]
def play(row,col,down,tiles,board):
    return -1
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00002: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_90.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO',
   'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING',
   'OXYPRHEQNBUTALIFIZONED', 'SAD', 'XPI', 'YE'],
  ['ACR', 'CI', 'DOMBPREQUALINWASHFING', 'EOM', 'IG', 'LY', 'NTD', 'OUM', 'OXYPHENBUTAZONEPIER', 'RNYE',
   'SEJACULATING', 'TN', 'TZOOT'],
 'UF' []]]
test_get_all_words_100.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JIVEA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JAJOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_40.0
[14, 621]
test_play_50.0
[360, 3572]
test_play_60.0
[360, 408-1]
test_play_70.0
[4163, -14]
test_play_80.0
[4162]
test_play_90.0
[11, 125, 724, 17, 3859, 12]
test_play_100.0IndexError('list index out of range')
[9, 133, 1236, 18, 12, 73, 659, 17, 7415, 106]
test_play_110.0IndexError('list index out of range')
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[411]
test_play_130.0
[49]
test_play_140.0
[8, 820, 826, 8-1]
test_play_150.0
[839]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 1060, 'const': 387, 'code+const': 1447}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  one = 1
  tmp_board = board
  all,ll,rr = [],[],[]
  txt = ''
  i,j = 0,0
  while i <= 14 :
    while j <= 14 :
      if tmp_board[i][j] != '' :
        txt += tmp_board[i][j]
      elif tmp_board[i][j] == '' :
        if txt == '' :
          pass
        else :
          if len(txt) < 1 :
            pass
          else :
            all.append(txt)
            txt = ''
      j += 1
    j = 0
    i += 1
  k,l = 0,0
  while k <= 14 :
    while l <= 14 :
      if tmp_board[l][k] != '' :
        txt += tmp_board[l][k]
      elif tmp_board[l][k] == '' :
        if txt == '' :
          pass
        else :
          if len(txt) < 1 :
            pass
          else :
            all.append(txt)
            txt = ''
      l += 1
    l = 0
    k += 1
  if one == 1 :
    for i in range(0, len(all)) :
      if is_valid(all[i]) == True :
        ll.append(all[i])
      else :
        if len(all[i]) == 1 :
          pass
        else :
          rr.append(all[i])
    ll.sort()
    rr.sort()
    return [ll,rr]
  else :
    return [[],[]]
def get_play(board, new_board):
  one = 1
  tmp_board = board
  tmp_new_board = new_board
  position_row = []
  position_col = []
  i,j,txt = 0,0,''
  while i <= 14 :
    while j <= 14 :
      if tmp_board[i][j] != tmp_new_board[i][j] :
        if tmp_board[i][j] != '' :
          txt += tmp_board[i][j]
          position_row.append(i)
          position_col.append(j)
        else :
          txt += tmp_new_board[i][j]
          position_row.append(i)
          position_col.append(j)
      else :
        pass
      j += 1
    j = 0
    i += 1
  if len(position_row) == 1 :
    down = 0
  else :
    if position_row[0] == position_row[1] :
      down = 0
    else :
      down = 1
  if one == 1 :
    row = position_row[0]
    col = position_col[0]
    return [row,col,down,txt]
  else :
    return [0,0,0,""]
def play(row,col,down,tiles,board):
  one = 1
  tmp_row = row
  tmp_col = col
  tmp_down = down
  tmp_tiles = tiles
  tmp_board = board
  txt = ''
  valid,tmp_board = place_tiles(tmp_row,tmp_col,tmp_down,tmp_tiles,tmp_board)
  if tmp_down == 0 :
    while tmp_board[tmp_row][tmp_col] != '' :
      txt += tmp_board[tmp_row][tmp_col]
      tmp_col += 1
  else :
    while tmp_board[tmp_row][tmp_col] != '' :
      txt += tmp_board[tmp_row][tmp_col]
      tmp_row += 1
  if is_valid(txt) == True :
    score = 0
    for z in range(0,len(txt)) :
      score += get_value(txt[z])
      if len(tmp_tiles) >= 7 :
        score += 50
      else :
        pass
  else :
    score = -1
  if one == 1 :
    return score
  else :
    return -1
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00003: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14.0]
test_play_41.0
[14.0, 21.0]
test_play_51.0
[60.0, 72.0]
test_play_61.0
[60.0, -1]
test_play_71.0
[63.0, 14.0]
test_play_81.0
[62.0]
test_play_91.0
[11.0, 15.0, 24.0, 17.0, 85.0, 12.0]
test_play_101.0
[9.0, 33.0, 36.0, 18.0, 12.0, 73.0, 65.0, 17.0, 74.0, 16.0]
test_play_111.0
[67.0, 61.0, 28.0, 11.0, 13.0, 85.0, 11.0, 12.0, 7.0, 25.0, 17.0, 14.0, 21.0, 32.0, 12.0, 15.0,
 16.0, 68.0, 6.0, 13.0, 10.0, 27.0, 28.0]
test_play_120.0
[8.011]
test_play_130.0
[5.09]
test_play_140.0
[8.0, 20.0, 22.06, -1]
test_play_150.0
[35.09]
test_best_play_11.0
[[69.0, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68.0, 0, 7, 1], [87.0, 12, 0, 0], [79.0, 1, 12, 1], [59.0, 1, 0, 0], [11.0, 2, 3, 0],
 [65.0, 3, 4, 1],
 [19.0, 6, 1, 0], [7.0, 4, 2, 1], [11.0, 0, 1, 0], [22.0, 3, 8, 1]]
test_best_play_41.0
[[71.0, 0, 7, 1], [63.0, 10, 0, 0], [63.0, 1, 1, 0], [9.0, 7, 3, 1], [19.0, 13, 0, 0],
 [72.0, 14, 4, 0],
 [17.0, 6, 6, 0], [8.0, 3, 3, 0], [18.0, 4, 0, 0], [16.0, 5, 1, 0]]
test_best_play_51.0
[[83.0, 0, 7, 1], [62.0, 13, 0, 0], [58.0, 1, 8, 0], [10.0, 0, 1, 0], [68.0, 0, 11, 1],
 [24.0, 6, 8, 1],
 [18.0, 8, 9, 1], [10.0, 1, 2, 1], [21.0, 5, 3, 1], [27.0, 4, 4, 1]]
bytecount: {'code': 1624, 'const': 470, 'code+const': 2094}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    l=[[],[]]
    for row in board:
        word=''
        found=False
        done1,done2=False,False
        for j in range(15):
            if found==False:
                if row[j]!='':
                    start=j
                    found=True
                    done1=True
            else:
                if j<14:
                    if row[j]=='':
                        stop=j
                        found=False
                        done2=True
                else:
                    if row[14]!='':
                        stop=j+1
                        found=False
                        done2=True
                    else:
                        stop=j
                        found=False
                        done2=True
            if done1==True and done2==True:
                if stop-start>=2:
                    for j in range(start,stop):
                        word+=row[j]
                    if is_valid(word):
                        l[0].append(word)
                        word=''
                        done1=False
                        done2=False
                    else:
                        l[1].append(word)
                        word=''
                        done1=False
                        done2=False
    for j in range(15):
        word=''
        found=False
        done1,done2=False,False
        for i in range(15):
            if found==False:
                if board[i][j]!='':
                    start=i
                    found=True
                    done1=True
            else:
                if i<14:
                    if board[i][j]=='':
                        stop=i
                        found=False
                        done2=True
                else:
                    if board[14][j]!='':
                        stop=i+1
                        found=False
                        done2=True
                    else:
                        stop=i
                        found=False
                        done2=True
            if done1==True and done2==True:
                if stop-start>=2:
                    for i in range(start,stop):
                        word+=board[i][j]
                    if is_valid(word):
                        l[0].append(word)
                        word=''
                        done1=False
                        done2=False
                    else:
                        l[1].append(word)
                        word=''
                        done1=False
                        done2=False
    l[0].sort()
    l[1].sort()
    return l
def get_play(board, new_board):
    di={}
    dj={}
    for i in range(15):
        for j in range(15):
            if board[i][j]!=new_board[i][j]:
                if i in di:
                    di[i].append(j)
                else:
                    di[i]=[j]
                if j in dj:
                    dj[j].append(i)
                else:
                    dj[j]=[i]
    wordi=''
    wordj=''
    for key in di:
        if len(di[key])>=2:
            for v in di[key]:
                wordi+=new_board[key][v]
    for key in dj:
        if len(dj[key])>=2:
            for v in dj[key]:
                wordj+=new_board[v][key]
    for key in di:
        if len(di[key])>=2:
            return [key,di[key][0],0,wordi]
    for key in dj:
        if len(dj[key])>=2:
            return [dj[key][0],key,1,wordj]
    for key in di:
        if len(di[key])>=1:
            return [key,di[key][0],0,new_board[key][di[key][0]]]
def play(row,col,down,tiles,board):
    words=get_all_words(board)[0]
    new_board=place_tiles(row,col,down,tiles,board)[1]
    new_words=get_all_words(new_board)[0]+get_all_words(new_board)[1]
    for e in words:
        if e in new_words:
            new_words.pop(new_words.index(e))
    if len(new_words)!=0:
        inv=False
        for l in new_words:
            if not is_valid(l):
                inv=True
                break
        if inv==True:
            return -1
        sum=0.0
        for word in new_words:
            for w in word:
                sum+=get_value(w)
        if len(tiles)>=7:
            sum+=50
        return sum
    else:
        return -1
def best_play(tiles,board):
    scores=[]
    for down in range(2):
        for i in range(15):
            for j in range(15):
                p=play(i,j,down,tiles,board)
                if place_tiles(i,j,down,tiles,board)[0]:
                    scores.append([-p,i,j,down])
    scores.sort()
    if -scores[0][0]==-1:
        return [-1,-1,-1,-1]
    else:
        row,col,d=scores[0][1:]
        board=place_tiles(row,col,d,tiles,board)[1]
        return [-scores[0][0],scores[0][1],scores[0][2],scores[0][3]]

00004: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0UnboundLocalError("local variable 'row_start' referenced before assignment")
[]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1986, 'const': 306, 'code+const': 2292}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    board_list = copy_board(board)
    k = []
    board_list_inverse = []
    for i in range(len(board_list)) :
        for j in range(len(board_list[i])) :
            if board_list[i][j] == '' :
                board_list[i][j] = '-'
    for i in range(len(board_list[0])) :
        for j in range(len(board_list)) :
            k.append('')
        board_list_inverse.append(k)
        k = []
    for i in range(len(board_list_inverse)) :
        for j in range(len(board_list_inverse[i])) :
            board_list_inverse[j][i] = board_list[i][j]
    word_line = []
    word_row = []
    for i in range(len(board_list)) :
        if ''.join(board_list[i]).strip('-').split('-') != [''] :
            word_line.append(''.join(board_list[i]).strip('-').split('-'))
        if ''.join(board_list_inverse[i]).strip('-').split('-') != [''] :
            word_row.append(''.join(board_list_inverse[i]).strip('-').split('-'))
    word_out = [[],[]]
    for i in range(len(word_line)) :
        for e in word_line[i] :
            if is_valid(e) :
                word_out[0].append(e)
            elif not is_valid(e) and len(e) >= 2 :
                word_out[1].append(e)
    for i in range(len(word_row)) :
        for e in word_row[i] :
            if is_valid(e) :
                word_out[0].append(e)
            elif not is_valid(e) and len(e) >= 2 :
                word_out[1].append(e)
    word_out[0].sort()
    word_out[1].sort()
    return word_out
def get_play(board, new_board):
    board_clear = make_board()
    k = []
    for i in range(len(board)) :
        for j in range(len(board[i])) :
            if new_board[i][j] != board[i][j] :
                board_clear[i][j] = new_board[i][j]
    set = 0 
    for i in range(len(board_clear)) :
        count = 0
        for j in range(len(board_clear[i])) :
            if board_clear[i][j] != '' :
                count += 1
        if count == 1 :
            set = 1
            break
    k = []
    board_clear_inverse = []
    for i in range(len(board_clear[0])) :
            for j in range(len(board_clear)):
                k.append(0)
            board_clear_inverse.append(k)
            k = []
    if set == 1 :  
        for i in range(len(board_clear)) :
            for j in range(len(board_clear[i])) :
                board_clear_inverse[j][i] = board_clear[i][j]
    else :
        for i in range(len(board_clear)) :
            for j in range(len(board_clear[i])) :
                board_clear_inverse[i][j] = board_clear[i][j]
    c = 0
    for e in board_clear_inverse :
        if e != ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] :
            line_start = board_clear_inverse.index(e)
            for i in range(len(e)-1) :
                if e[i] != e[i+1] and e[i] == '' :
                    row_start = i+1
                    break
            for d in e :
                if d != '' : c += 1
            word = ''.join(e)
    if c == 1 :
        set = 0   
        line_start,row_start = row_start,line_start         
    if set == 1 :
        line_start,row_start = row_start,line_start
    return [line_start,row_start,set,word]
def play(row,col,down,tiles,board):
    board_new = place_tiles(row,col,down,tiles,board)[1]
    if len(get_all_words(board_new)[1]) > 0 :
        return -1
    if place_tiles(row,col,down,tiles,board)[0] == False :
        return -1
    word_oldboard = get_all_words(board)[0]
    word_newboard = get_all_words(board_new)[0]
    word = []
    for e in word_newboard :
        if e not in word_oldboard :
            word.append(e)
        elif e in word_oldboard :
            word_oldboard.remove(e)
    score = 0
    for i in range(len(word)) :
        for e in word[i] :
            score +=  get_value(e)
    if len(tiles) >= 7 :
        score += 50
    return score
def best_play(tiles,board):
    check = []
    for i in range(len(board)) :
        for j in range(len(board[i])) :
            if play(i,j,0,tiles,board) != -1 :
                check.append([play(i,j,0,tiles,board),i,j,0])
            elif play(i,j,1,tiles,board) != -1 :
                check.append([play(i,j,1,tiles,board),i,j,1])
            elif play(i,j,0,tiles,board) == -1 :
                check.append([-1,-1,-1,-1])
            elif play(i,j,1,tiles,board) == -1 :
                check.append([-1,-1,-1,-1])
    if check[::] == [-1,-1,-1,-1] :
        return [-1,-1,-1,-1]
    else :
        check.sort()
        check[::] = check[::-1]
        best_out = []
        for i in range(len(check)) :
            if check[i][0] == check[0][0] :
                best_out.append(check[i])
        best_out.sort()
        return best_out[0]

00005: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0
[[10, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 10, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [10, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [10, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 10, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_150.0
[379]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1080, 'const': 394, 'code+const': 1474}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    Ans = []
    for i in range(15):
        what1 = ""
        what2 = ""
        for e in range(15):
            if not board[i][e]:what1 += ' '
            what1 += board[i][e] 
            if not board[e][i]:what2 += ' '
            what2 += board[e][i] 
        for ch in what1.split():
            if len(ch)>=2: Ans.append(ch.strip())
        for ch in what2.split():
            if len(ch)>=2: Ans.append(ch.strip())
    Va = []
    InVa = []
    for ch in Ans:
        if is_valid(ch): Va.append(ch)
        else: InVa.append(ch)
    return [sorted(Va), sorted(InVa)]
def get_play(board, new_board):
    row, col, Ans, tiles = 0, 0, '', 0
    for i in range(15):
        if board[i] != new_board[i]:
            if not row: row = i
            if i != row: tiles = 1
            for j in range(15):
                if board[i][j] != new_board[i][j]:
                    if not col: col = j
                    Ans += new_board[i][j]
    if len(Ans) == 1: tiles = 0
    return [row,col,tiles,Ans]
def play(row,col,down,tiles,board):
    Ans = []
    value,new = place_tiles(row,col,down,tiles,board)
    if not value: return -1
    for i in range(15):
        rowold = ""
        rownew = ""
        colold = ""
        colnew = ""
        for e in range(15):
            if not board[i][e]:rowold += ' '
            rowold += board[i][e] 
            if not new[i][e]:rownew += ' '
            rownew += new[i][e] 
            if not board[e][i]:colold += ' '
            colold += board[e][i] 
            if not new[e][i]:colnew += ' '
            colnew += new[e][i] 
        for ch in rownew.split():
            if len(ch)>=2 and not is_valid(ch): return -1
            elif ch not in rowold.split() and len(ch)>=2 : Ans.append(ch)
        for ch in colnew.split():
            if len(ch)>=2 and not is_valid(ch): return -1
            elif ch not in colold.split() and len(ch)>=2: Ans.append(ch)
    Score = 0
    for e in Ans:
        for ch in e  : Score += get_value(ch)
    if len(tiles)>=7 : Score += 50
    return Score
def best_play(tiles,board):
    Score = [-1,-1,-1,-1]
    for i in range(15):
        for e in range(15):
            Landscape = play(i,e,0,tiles,board)
            Portrait = play(i,e,1,tiles,board)
            if Landscape > Score[0]: Score = [Landscape,i,e,0]
            if Portrait > Score[0]: Score = [Portrait,i,e,1]
    return Score

00006: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1944, 'const': 336, 'code+const': 2280}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    word = []
    for i in range(15):
        for j in range(15):
            if board[i][j] != "":
                if i == 0 and j == 0:
                    if board[i+1][j] != "":
                        k = 0
                        w = ""
                        while k != 15 and board[k][j] != "":
                            w += board[k][j]
                            k += 1
                        word.append(w)
                    if board[i][j+1] != "":
                        k = 0
                        w = ""
                        while k != 15 and board[i][k] != "":
                            w += board[i][k]
                            k += 1
                        word.append(w)                        
                elif i == 0 and j != 0:
                    if board[i][j-1] == "" and j+1 != 15 and board[i][j+1] != "":
                        k = j
                        w = ""
                        while k != 15 and board[i][k] != "":
                            w += board[i][k]
                            k += 1
                        word.append(w)
                    if board[i+1][j] != "":
                        k = 0
                        w = ""
                        while k != 15 and board[k][j] != "":
                            w += board[k][j]
                            k += 1
                        word.append(w)
                elif i != 0 and j == 0:
                    if board[i][j+1] != "":
                        k = 0
                        w = ""
                        while k != 15 and board[i][k] != "":
                            w += board[i][k]
                            k += 1
                        word.append(w)
                    if board[i-1][j] == "" and i+1 != 15 and board[i+1][j] != "":
                        k = i
                        w = ""
                        while k != 15 and board[k][j] != "":
                            w += board[k][j]
                            k += 1
                        word.append(w)
                else:
                    if board[i][j-1] == "" and j+1 != 15 and board[i][j+1] != "":
                        k = j
                        w = ""
                        while k != 15 and board[i][k] != "":
                            w += board[i][k]
                            k += 1
                        word.append(w)
                    if board[i-1][j] == "" and i+1 != 15 and board[i+1][j] != "":
                        k = i
                        w = ""
                        while k != 15 and board[k][j] != "":
                            w += board[k][j]
                            k += 1
                        word.append(w)
    valid = []
    not_valid = []
    for e in word:
        if is_valid(e):
            valid.append(e)
        else:
            not_valid.append(e)
    valid.sort()
    not_valid.sort()
    return [valid,not_valid]
def get_play(board, new_board):
    change = []
    for i in range(15):
        for j in range(15):
            if board[i][j] != new_board[i][j]:
                change.append([i,j])
    change.sort()
    x,y = change[0]
    if len(change) == 1:
        row = x
        col = y
        down = 0
        tiles = new_board[x][y]
    else:
        zx = True
        zy = True
        for e in change:
            if e[0] != x:
                zx = False
            if e[1] != y:
                zy = False
        if zx:
            down = 0
            first = change[0][1]
            last = change[-1][1]
            row = x
            col = first
            tiles = ""
            for e in change:
                tiles += new_board[e[0]][e[1]]           
        if zy:
            down = 1
            first = change[0][0]
            last = change[-1][0]
            row = first
            col = y
            tiles = ""
            for e in change:
                tiles += new_board[e[0]][e[1]] 
    return [row,col,down,tiles]
def play(row,col,down,tiles,board):
    new_board = place_tiles(row,col,down,tiles,board)[1]
    valid = get_all_words(board)[0]
    new_valid = get_all_words(new_board)[0]
    if len(get_all_words(new_board)[1]) != 0:
        score = -1
    else:
        score = 0
        if len(tiles) >= 7:
            score += 50
        v = []
        for e in new_valid:
            if e not in valid:
                v.append(e)
            else:
                valid.remove(e)
        for e in v:
            for ch in e:
                score += get_value(ch)
    return score
def best_play(tiles,board):
    l = []
    for i in range(15):
        for j in range(15):
            for d in range(2):
                if place_tiles(i,j,d,tiles,board)[0]:
                    s = [play(i,j,d,tiles,board),i,j,d]
                    l.append(s)
    l.sort()
    max_score = l[-1][0]
    hello = []
    for e in l:
        if e[0] == max_score:
            hello.append(e)
    z = hello[0]
    if z[0] == -1:
        z = [-1,-1,-1,-1]
    return z

00007: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1146, 'const': 294, 'code+const': 1440}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    q = []
    for i in range(len(board)):
        t = ""
        for u in range(len(board[0])):
            if board[i][u] == "":
                t += " "
            else:
                t += board[i][u]
        r = t.split()
        for i in r:
            if len(i) >= 2:
                q.append(i)
    for i in range(len(board[0])):
        t = ""
        for u in range(len(board)):
            if board[u][i] == "":
                t += " "
            else:
                t += board[u][i]
        r = t.split()
        for i in r:
            if len(i) >= 2:
                q.append(i)
    v = []
    nv = []
    for r in q:
        if is_valid(r):
            v.append(r)
        else:
            nv.append(r)
    v.sort()
    nv.sort()
    return [v,nv]
def get_play(board, new_board):
    h = []
    for i in range(len(board)):
        for u in range(len(board[0])):
            if board[i][u] != new_board[i][u]:
                h.append([i,u,new_board[i][u]])
    if len(h) == 1:
        s = h[0]
        s.insert(2,0)
        return s
    if h[0][0] == h[1][0]:
        s = min(h)
        f = s[:2]
        f.append(0)
        ii = ""
        for w in h:
            ii += w[2]
        f.append(ii)
        return f
    else:
        s = min(h)
        f = s[:2]
        f.append(1)
        ii = ""
        for w in h:
            ii += w[2]
        f.append(ii)
        return f
def play(row,col,down,tiles,board):
    v,nnb = place_tiles(row,col,down,tiles,board)
    if not v:
        return -1
    a = get_all_words(board)[0]
    b = get_all_words(nnb)[0]
    x = get_all_words(board)[1]
    y = get_all_words(nnb)[1]
    if x != y:
        return -1
    c = b
    for i in a:
        if i in b:
            c.remove(i)
    score = 0
    for word in c:
        for letter in word:
            score += get_value(letter)
    if len(tiles) >= 7:
        score += 50
    return score
def best_play(tiles,board):
    a = []
    for i in range(len(board)):
        for u in range(len(board[0])):
            if play(i,u,0,tiles,board) != -1:
                a.append([play(i,u,0,tiles,board),i,u,0])
            if play(i,u,1,tiles,board) != -1:
                a.append([play(i,u,1,tiles,board),i,u,1])
    if a == []:
        return [-1,-1,-1,-1]
    x = max(a)[0]
    s = []
    for o in a:
        if o[0] == x:
            s.append(o)
    d = min(s)
    return d

00008: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 1928]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 206, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1270, 'const': 640, 'code+const': 1910}
check_import({'allowable': ['math']}): none
def transpose(board):
  board_t = [[board[0][i]] for i in range(15)]
  for i in range(1, 15):
    for j in range(15):
      board_t[j].append(board[i][j])
  return board_t
def get_all_words(board):
  board_s = [[' ' if letter == '' else letter for letter in row] for row in board]
  board_s_t = transpose(board_s)
  words = ["".join(row).split() for row in board_s] + ["".join(col).split() for col in board_s_t]
  valid = []
  invalid = []
  for list_word in words:
    for word in list_word:
      if is_valid(word):
        valid.append(word)
      elif len(word) > 1:
        invalid.append(word)
  return [sorted(valid), sorted(invalid)]
def get_row_col(board):
  board_s = [[' ' if letter == '' else letter for letter in row] for row in board]
  board_s_t = transpose(board_s)
  return ["".join(row) for row in board_s], ["".join(col) for col in board_s_t]
def get_new_word(old_board, new_board):
  i, j, k, s = 0, 0, 0, ""
  while old_board[i] == new_board[i]:
    i += 1
  while old_board[i][j] == new_board[i][j]:
    j += 1
  while j + k < 15:
    if old_board[i][j + k] != new_board[i][j + k] and new_board[i][j + k] != " ":
      s += new_board[i][j + k]
    k += 1
  return i, j, s
def get_play(board, new_board):
  old_row, old_col = get_row_col(board)
  new_row, new_col = get_row_col(new_board)
  c, down = 0, 0
  for i in range(15):
    if old_row[i] != new_row[i]:
      c += 1
    if c > 1:
      break
  if c > 1:
    down = 1
    col, row, word = get_new_word(old_col, new_col)
  else:
    row, col, word = get_new_word(old_row, new_row)
  return [row, col, down, word]
def get_score(words):
  score = 0
  for word in words:
    score += sum([get_value(letter) for letter in word])
  return score
def play(row,col,down,tiles,board):
  valid, new_board = place_tiles(row, col, down, tiles, board)
  if not valid:
    return -1
  old_valid, old_invalid = get_all_words(board)
  new_valid, new_invalid = get_all_words(new_board)
  for word in new_invalid:
    if word not in old_invalid:
      return -1
  old_valid = [word for word in old_valid if word in new_valid]
  return get_score(new_valid) - get_score(old_valid) + (50 if len(tiles) > 6 else 0)
def best_play(tiles,board):
  max_score, row, col, down = -1, -1, -1, -1
  for i in range(15):
    for j in range(15):
      for k in range(2):
        score = play(i, j, k, tiles, board)
        if max_score < score:
          max_score = score
          row = i
          col = j
          down = k
  return [max_score, row, col, down]

00009: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 780, 'const': 405, 'code+const': 1185}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    b = board
    a = sorted(' '.join(''.join([e if e else ' ' for e in n]) for n in b).split() + ' '.join([''.join(b[j][i] if b[j][i] else ' ' for j in range(15)) for i in range(15)]).split())
    return [[e for e in a if is_valid(e)], [e for e in a if not is_valid(e) and len(e) >= 2]]
def get_play(board, new_board):
    x = board; z = new_board
    r = []; c = 0
    for i in range(15):
        for j in range(15):
            if x[i][j] != z[i][j]:
                if not r: a, b = i, j
                else: c = 0 if a == i else 1
                r.append(z[i][j])
    return [a, b, c, ''.join(r)]
def play(row, col, down, tiles, board):
    a = get_all_words(board)
    v, n = place_tiles(row, col, down, tiles, board)
    s, z = get_all_words(n)
    for e in a[0]:
        if e in s:
            s.remove(e)
    b = sum([sum([get_value(i) for i in e]) for e in s])
    if not b or z: b = -1
    return b + 50 if len(tiles) >= 7 and b > 0 else b
def best_play(tiles,board):
    s = [-1, -1, -1, -1]
    for r in range(15):
        for c in range(15):
            for d in range(2):
                a = play(r, c, d, tiles, board)
                if a > s[0]:
                    s = [a, r, c, d]
    return s

00010: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 858, 'const': 308, 'code+const': 1166}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid_words, invalid_words = [], []
  for i in board:
    para = ""
    for k,j in enumerate(i):
      if "A"<=j<="Z":
        para += j
      if j == "" or k==14:
          if len(para)>=2:
            if is_valid(para):
              valid_words.append(para)
            else:
              invalid_words.append(para)
          para = ""
  for i in range(len(board)):
    para = ""
    for j in range(len(board)):
      if "A"<=board[j][i]<="Z":
        para += board[j][i]
      if board[j][i] == "" or j==14:
        if len(para)>=2:
            if is_valid(para):
              valid_words.append(para)
            else:
              invalid_words.append(para)
        para = ""
  valid_words.sort()
  invalid_words.sort()
  return [valid_words, invalid_words]
def get_play(board, new_board):
  new_words = ""
  idxi = -1
  idxj = -1
  for i in range(len(new_board)):
    for j in range(len(new_board)):
      if new_board[i][j] != board[i][j]:
        if new_words == "":
          idxi = i
          idxj = j
        new_words += new_board[i][j]
        para = i
  if idxi != para:
    down = 1
  else:
    down = 0
  return [idxi, idxj, down, new_words]
def play(row,col,down,tiles,board):
  score = -1
  valid1, new_board = place_tiles(row,col,down,tiles,board)
  if valid1:
    valid_words1, invalid_words1 = get_all_words(board)
    valid_words2, invalid_words2 = get_all_words(new_board)
    if invalid_words1 == invalid_words2:
      score = 0
      lst = []
      for i in valid_words2:
          if i in valid_words1:
            valid_words1.remove(i)
          else:
            lst.append(i)
      for j in lst:
        for k in j:
          score += get_value(k)
      if len(tiles) >= 7:
        score += 50
  return score
def best_play(tiles,board):
  max_score = -1
  down = -1
  idxi = -1
  idxj = -1
  for i in range(len(board)):
    for j in range(len(board)):
      new_score = play(i,j,0,tiles,board)
      if new_score > max_score:
        idxi = i
        idxj = j
        down = 0
        max_score = new_score
      new_score = play(i,j,1,tiles,board)
      if new_score > max_score:
        idxi = i
        idxj = j
        down = 1
        max_score = new_score
  return [max_score, idxi, idxj , down]

00011: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1032, 'const': 378, 'code+const': 1410}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  horizontal_word = ''
  for i in board :
    for e in i :
      if e == '':
        horizontal_word += ' '
      else:
        horizontal_word += e
    horizontal_word += ' '
  horizontal=horizontal_word.split()
  verticle_word =''
  for i in range (15):
    for e in board :
      if e[i] == '':
        verticle_word += ' '
      else : 
        verticle_word += e[i]
    verticle_word +=' '
  verticle = verticle_word.split()
  a= horizontal + verticle
  valid_word =[]
  invalid_word =[]
  for word in a:
    if len(word) == 1:
      continue
    if is_valid(word) :
      valid_word.append(word)
    else:
      invalid_word.append(word)
  valid_word.sort()
  invalid_word.sort()
  return [valid_word,invalid_word]
def get_play(board, new_board):
  ans=[]
  n=False
  for i in range (15):
    if board[i] != new_board[i] :
      ans.append(i)
      for e in range(15):
        if board[i][e] != new_board[i][e]:
          ans.append(e)
          n=True
          break
    if n :
      break
  x,y=ans
  text=''
  for i in  range (15):
    if board[x][i] != new_board[x][i] :
      text += new_board[x][i]
  if len(text) >= 2:
    ans.append(0)
    ans.append(text)
  else:
    verticle_text ='' 
    for e in range (15):
      if board[e][y] != new_board[e][y]:
        verticle_text += new_board[e][y]
    if len(verticle_text) >= 2:
      ans.append(1)
      ans.append(verticle_text)
    else:
      ans.append(0)
      ans.append(text)
  return ans
def play(row,col,down,tiles,board):
  valid,new_board = place_tiles(row,col,down,tiles,board)
  x=get_all_words(new_board)
  if not valid or x[1] != []:
    return -1
  if len(tiles) >= 7:
    score =50
  else:
    score = 0
  all_word_board  = get_all_words(board)[0] +get_all_words(board)[1]
  all_word_new_board = get_all_words(new_board)[0]
  new_word = []
  for i in all_word_new_board:
    if i not in all_word_board:
      new_word.append(i)
    else:
      all_word_board.remove(i)
  for i in new_word :
    for e in i :
      score += get_value(e)
  return score
def best_play(tiles,board):
  x=[]
  for i in range (15):
    for e in range (15):
      x.append([-(play(i,e,0,tiles,board)),i,e,0])
      x.append([-(play(i,e,1,tiles,board)),i,e,1])
  x.sort()
  if x[0][0] != 1 :
    return [-(x[0][0]),x[0][1],x[0][2],x[0][3]]
  else :
    return [-1,-1,-1,-1]

00012: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1178, 'const': 429, 'code+const': 1607}
check_import({'allowable': ['math']}): none
def get_words(board):
  word = ''
  for i in board:
    word += ','
    for j in i:
      if j != '':
        word += j
      else:
        word += ','
  word = word.split(',')
  return word
def get_all_words(board):
  trans_board = []
  for i in range(15):
    trans_board.append([line[i] for line in board])
  words = []
  valid_words = []
  invalid_words = []
  row_word = get_words(board)
  for i in row_word:
    if i != '':
      words.append(i)
  column_words = get_words(trans_board)
  for i in column_words:
    if i != '':
      words.append(i)
  for i in words:
    if len(i) > 1:
      if is_valid(i):
        valid_words.append(i)
      else:
        invalid_words.append(i)
  valid_words.sort()
  invalid_words.sort()
  return [valid_words, invalid_words]
def get_play(board, new_board):
  cor = []
  ind = 0
  w_out = ''
  words = []
  b = make_board()
  for i in range(15):
    for j in range(15):
      if board[i][j] != new_board[i][j] :
        b[i][j] = new_board[i][j]
        cor.append([i,j])
  word = get_words(b)
  for i in word:
    if i != '':
      words.append(i)
  if len(cor) > 1:
    if cor[0][0] == cor[1][0]:
      ind = 0
    else:
      ind = 1
  for i in words:
    w_out += i
  return [cor[0][0],cor[0][1],ind,w_out]
def play(row,col,down,tiles,board):
  ans = 0
  check1 = place_tiles(row,col,down,tiles,board)
  if check1[0] == False:
    return -1
  n_b = check1[1]
  check2 = get_all_words(n_b)
  if len(check2[1]) != 0:
    return -1
  ow, ow1 = get_all_words(board)
  nw, nw1 = get_all_words(n_b)
  for i in ow:
    if i in nw:
      nw.remove(i)
  if len(tiles) > 6:
    ans += 50
  for i in nw:
    for j in i:
      ans += get_value(j)
  return ans
def best_play(tiles,board):
  ans = []
  a_T = []
  a_F = []
  for row in range(15):
    for col in range(15):
      for down in range(2):
        check0,check1 = place_tiles(row,col,down,tiles,board)
        if check0 == True:
          a_T.append([play(row,col,down,tiles,board),row,col,down])
        if check0 == False:
          a_F.append([play(row,col,down,tiles,board),row,col,down])
  if len(a_T) < 1:
    return [-1,-1,-1,-1]
  a_T.sort()
  cad = []
  for i in range(len(a_T)):
    if a_T[i][0] not in cad:
      cad.append(a_T[i][0])
  cad = sorted(cad, reverse = True)
  caddi = cad[0]
  for i in range(len(a_T)):
    if a_T[i][0] == caddi:
      ans = a_T[i]
      break
  if ans[0] == -1:
    return [-1,-1,-1,-1]
  return ans

00013: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1290, 'const': 334, 'code+const': 1624}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid = []; invalid = []
    for i in range(len(board)):
        word = ''
        for j in range(len(board[0])):
            if board[i][j] != '':
                word += board[i][j]
            else:
                if len(word) >= 2 and is_valid(word.upper()):
                    valid.append(word.upper())
                elif len(word) >= 2:
                    invalid.append(word.upper())
                word = ''
        if len(word) >= 2 and is_valid(word.upper()):
            valid.append(word.upper())
        elif len(word) >= 2:
            invalid.append(word.upper())
    for i in range(len(board[0])):
        word = ''
        for j in range(len(board)):
            if board[j][i] != '':
                word += board[j][i]
            else:
                if len(word) >= 2 and is_valid(word.upper()):
                    valid.append(word.upper())
                elif len(word) >= 2:
                    invalid.append(word.upper())
                word = ''
        if len(word) >= 2 and is_valid(word.upper()):
            valid.append(word.upper())
        elif len(word) >= 2:
            invalid.append(word.upper())
    valid.sort()
    invalid.sort()
    return [valid,invalid]
def get_play(board, new_board):
    word = ''
    c = True
    for i in range(len(board)):
        for j in range(len(board[0])):
            if board[i][j] != new_board[i][j]:
                if word == '':
                    tung_out = i
                    norn_out = j
                word += new_board[i][j]
            if len(word) == 2 and c:
                if i - tung_out > 0:
                    down = 1
                elif j - norn_out > 0:
                    down = 0
                c = False
    if len(word) == 1:
        down = 0
    return [tung_out,norn_out,down,word]
def play(row,col,down,tiles,board):
    new = copy_board(board)
    valid = place_tiles(row,col,down,tiles,new)[0]
    new = place_tiles(row,col,down,tiles,new)[1]
    new_word = get_all_words(new)[0]
    new_word_invalid = get_all_words(new)[1]
    if new_word_invalid != [] or valid == False:
        return -1
    word = get_all_words(board)[0]
    sc = 0
    for w in word:
        if w in new_word:
            new_word.remove(w)
    for i in range(len(new_word)):
        if is_valid(new_word[i]):
            for j in range(len(new_word[i])):
                sc += get_value(new_word[i][j])
    if len(tiles) >= 7:
        sc += 50
    return sc
def best_play(tiles,board):
    best = []
    sc_list  = []
    best_ij = []
    for i in range(len(board)):
        for j in range(len(board[0])):
            sc = play(j,i,0,tiles,board)
            if sc>0:
                best.append([sc,j,i,0])
                sc_list.append(sc)
            sc = play(j,i,1,tiles,board)
            if sc>0:
                best.append([sc,j,i,1])
                sc_list.append(sc)
    if sc_list == []:
        return [-1,-1,-1,-1]
    maxsc = max(sc_list)
    for i in range(len(best)):
        if best[i][0] == maxsc:
            best_ij.append([best[i][1],best[i][2],best[i][3]])
    best_ij.sort()
    best_all  = [maxsc,best_ij[0][0],best_ij[0][1],best_ij[0][2]]
    return best_all

00014: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1404, 'const': 470, 'code+const': 1874}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  out = [[],[]]
  data = []
  line_column = ['','','','','','','','','','','','','','','']
  for i in range(15):
    line_row = ''
    for j in range(15):
      if board[i][j] == '':
        line_row += ' '
        line_column[j] += ' '
      else:
        line_row += board[i][j]
        line_column[j] += board[i][j]
    line_row = line_row.strip().split()
    for e in line_row:
      if len(e) >=2:
        data.append(e)
  for k in line_column:
    k = k.strip().split()
    for m in k:
      if len(m) >=2:
        data.append(m)
  data.sort()
  for n in data:
    if is_valid(n) == True:
      out[0].append(n)
    else:
      out[1].append(n)
  return out
def get_play(board, new_board):
  boardgu = make_board()
  out = [0,0,0,'']
  for i in range(15):
    for j in range(15):
      if board[i][j] != new_board[i][j]:
        boardgu[i][j] = new_board[i][j]
  finish = False
  for m in range(15):
    for n in range(15):
      if boardgu[m][n] != '':
        out[0] = m ; out[1] = n
        finish = True
        break
    if finish == True: break
  line_column = ['','','','','','','','','','','','','','','']
  line_row = []
  for a in range(15):
    line = ''
    for b in range(15):
      if boardgu[a][b] != '':
        line += boardgu[a][b]
        line_column[b] += boardgu[a][b]
    line_row.append(line)
  ncolumn = []
  for u in line_column:
    if u != '':
      ncolumn.append(u)
  nrow = []
  for v in line_row:
    if v!= '':
      nrow.append(v)
  if len(ncolumn) < len(nrow):
    out[2] = 1
  out[3] = ''.join(ncolumn)
  return out
def play(row,col,down,tiles,board):
  out = 0
  valid = True
  pre_words = get_all_words(board)
  if place_tiles(row,col,down,tiles,board)[0] == False:
    valid = False
  else:
    new_board = place_tiles(row,col,down,tiles,board)[1]
    post_words = get_all_words(new_board)
    for i in post_words[1]:
      if i not in pre_words[1]:
        valid = False
        break
    if len(post_words[1]) > len(pre_words[1]):
      valid = False
    new_words = []
    for j in post_words[0]:
      if j not in pre_words[0]:
        new_words.append(j)
      else:
        pre_words[0][pre_words[0].index(j)] = '*'
    for k in new_words:
      for n in k:
        out += get_value(n)
    if len(get_play(board, new_board)[3]) >= 7:
      out += 50
  if valid == False:
    out = -1
  return out
def best_play(tiles,board):
  data = []
  for i in range(15):
    for j in range(15):
      if play(i,j,0,tiles,board) != -1:
        data.append([play(i,j,0,tiles,board)*-1,i,j,0])
  for n in range(15):
    for m in range(15):
      if play(n,m,1,tiles,board) != -1:
        data.append([play(n,m,1,tiles,board)*-1,n,m,1])
  data.sort()
  for u in data:
    u[0] *= -1
  if len(data) != 0:
    return data[0]
  else:
    return [-1,-1,-1,-1]

00015: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 10, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 2166, 'const': 482, 'code+const': 2648}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  word = [[],[]]
  for ch in board:
    letter = ''
    for ch1 in ch:
      if 'A' <= ch1.upper() <= 'Z':
        letter += ch1.upper()
      else:
        letter += ' '
    letter = letter.strip()
    letter = letter.split()
    for i in range(len(letter)):
      for k in range(len(letter[i])):
        lettern = letter[i][k::]
        if is_valid(lettern): 
          word[0].append(lettern)
          break
        else:
          if len(lettern) != 1:
            word[1].append(lettern)
          break
  for j in range(15):
    letter2 = ''
    for ch2 in board:
      if 'A' <= ch2[j] <= 'Z':
        letter2 += ch2[j].upper()
      else:
        letter2 += ' '
    letter2 = letter2.strip()
    letter2 = letter2.split()
    for l in range(len(letter2)):
      for m in range(len(letter2[l])):
        letternn = letter2[l][m::]
        if is_valid(letternn): 
          word[0].append(letternn)
          break
        else:
          if len(letternn) != 1:
            word[1].append(letternn)
          break
  for i in range(len(word)):
    word[i].sort()
  return word
def get_play(board, new_board):
  w = ''
  wn = ''
  nnb = copy_board(new_board)
  for ch in board:
    for ch1 in ch:
      i = board.index(ch)
      j = ch.index(ch1)
      board[i][j] = ''
      if ch1 == nnb[i][j]:
        nnb[i][j] = ''
  for ch2 in nnb :
    for ch3 in ch2 :
        if 'A' <= ch3 <= 'Z' :
            w += ch3
            wn += ch3
  if len(w) == 1:
    for ch6 in nnb:
      if w in ch6:
        q = nnb.index(ch6)
        r = ch6.index(w)
    if q + 1 > 14 or r + 1 > 14 : 
      pass
    else:
        if 'A' <= nnb[q][r+1] <= 'Z': 
          for ch7 in nnb[q][r+1::]:
            if 'A' <= ch7 <= 'Z':
              w += ch7
            else:
              break
        if 'A' <= nnb[q+1][r] <= 'Z':
          for ch8 in nnb[q+1]:
            if 'A' <= ch8[r] <= 'Z':
              w += ch8
            else:
              break
  for ch4 in nnb:
    if w[0] in ch4:
      k = nnb.index(ch4)
      l = ch4.index(w[0])
  for ch5 in nnb:
    if w[-1] in ch5:
      m = nnb.index(ch5)
      n = ch5.index(w[-1])
  if k == m: o = 0
  if l == n: o = 1
  if len(wn) == 1: o = 0
  dataout = [k,l,o,w]
  return dataout
def play(row,col,down,tiles,board):
  owb  = board
  ow   = get_all_words(owb)
  nwb  = (place_tiles(row,col,down,tiles,board))[1]
  nw   = get_all_words(nwb)
  cowb = copy_board(owb)
  for ch in ow[0]:
    if ch in nw[0]:
      nw[0].remove(ch)
  if len(nw[0]) != 0 :
    i = (len((get_play(cowb, nwb))[3]))
  else:
    return -1
  if i >= 7 :
    j = 50
    for ch1 in nw[0]:
      for ch2 in ch1:
        j += get_value(ch2)
    return j
  else:
    k = 0
    for ch3 in nw[0]:
      for ch4 in ch3:
        k += get_value(ch4)
    return k
def best_play(tiles,board):
  ps = []
  for i in range(15):
    for j in range(15):
      for k in range(2):
        if (place_tiles(i,j,k,tiles,board))[0] :
          omg = (place_tiles(i,j,k,tiles,board))[1]
          if (get_all_words(omg))[0] != [] and (get_all_words(omg))[1] == [] :
            ps.append([(play(i,j,k,tiles,board)),i,j,k])
  s = []
  for ch in ps:
    s.append(ch[0])
  if s == []:
    return [-1,-1,-1,-1]
  ms = max(s)
  for ch in s:
    if ch == ms:
      pi = []
      pil = []
      pil2 = []
      for ch1 in ps:
        if ms in ch1:
          pi.append(ch1)
          for ch2 in pi:
            pil.append(ch2[1])
            pil2.append(ch2[1])
          mpi = min(pil)
          pil2.remove(mpi)
          for ch3 in pil2:
            if ch3 == mpi:
              pj = []
              pjl = []
              pjl2 = []
              for ch4 in ps:
                if ms in ch4 and mpi in ch4:
                  pj.append(ch4)
                for ch5 in pj:
                  pjl.append(ch5[2])
                  pjl2.append(ch5[2])
                mpj = min(pjl)
                pjl2.remove(mpj)
                for ch6 in pjl2:
                  if ch6 == mpj:
                    pk = []
                    for ch7 in ps:
                      if ms in ch7 and mpi in ch7 and mpj in ch7 :
                        pk.append(ch7)
                    for ch8 in pk:
                      if ch[3] == 0:
                        r = ps.index(ch8)
                        return ps[r]
                n = pjl.index(mpj)
                p = pj.index(pj[n])
                return ps[p]
          m = pil.index(mpi)
          o = ps.index(pi[m])
          return ps[o] 
  l = s.index(ms)
  return ps[l]

00016: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_10.0NameError("name 'l' is not defined")
[]
test_get_all_words_20.0NameError("name 'l' is not defined")
[]
test_get_all_words_30.0NameError("name 'l' is not defined")
[]
test_get_all_words_40.0NameError("name 'l' is not defined")
[]
test_get_all_words_50.0NameError("name 'l' is not defined")
[]
test_get_all_words_60.0NameError("name 'l' is not defined")
[]
test_get_all_words_70.0NameError("name 'l' is not defined")
[]
test_get_all_words_80.0NameError("name 'l' is not defined")
[]
test_get_all_words_90.0NameError("name 'l' is not defined")
[]
test_get_all_words_100.0NameError("name 'l' is not defined")
[]
test_get_play_10.0NameError("name 'l' is not defined")
[]
test_get_play_20.0NameError("name 'l' is not defined")
[]
test_get_play_30.0NameError("name 'l' is not defined")
[]
test_get_play_40.0NameError("name 'l' is not defined")
[]
test_get_play_50.0NameError("name 'l' is not defined")
[]
test_get_play_60.0NameError("name 'l' is not defined")
[]
test_get_play_70.0NameError("name 'l' is not defined")
[]
test_get_play_80.0NameError("name 'l' is not defined")
[]
test_get_play_90.0NameError("name 'l' is not defined")
[]
test_get_play_100.0NameError("name 'l' is not defined")
[]
test_play_10.0NameError("name 'l' is not defined")
[]
test_play_20.0NameError("name 'l' is not defined")
[]
test_play_30.0NameError("name 'l' is not defined")
[]
test_play_40.0NameError("name 'l' is not defined")
[]
test_play_50.0NameError("name 'l' is not defined")
[]
test_play_60.0NameError("name 'l' is not defined")
[]
test_play_70.0NameError("name 'l' is not defined")
[]
test_play_80.0NameError("name 'l' is not defined")
[]
test_play_90.0NameError("name 'l' is not defined")
[]
test_play_100.0NameError("name 'l' is not defined")
[]
test_play_110.0NameError("name 'l' is not defined")
[]
test_play_120.0NameError("name 'l' is not defined")
[]
test_play_130.0NameError("name 'l' is not defined")
[]
test_play_140.0NameError("name 'l' is not defined")
[]
test_play_150.0NameError("name 'l' is not defined")
[]
test_best_play_10.0NameError("name 'l' is not defined")
[]
test_best_play_20.0NameError("name 'l' is not defined")
[]
test_best_play_30.0NameError("name 'l' is not defined")
[]
test_best_play_40.0NameError("name 'l' is not defined")
[]
test_best_play_50.0NameError("name 'l' is not defined")
[]
bytecount: {'code': 732, 'const': 364, 'code+const': 1096}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    rotated_board = []
    for i in l:
      rotated_board.append([board[j][i] for j in l])
    all_words = ''.join([letter if letter is not '' else ' ' for line in board + rotated_board for letter in (list(line)+[' '])]).split(' ')
    valid = sorted([word for word in all_words if is_valid(word)])
    invalid = sorted([word for word in all_words if len(word)>=2 and not is_valid(word)])
    return [valid, invalid]
def get_play(board, new_board):
    hs, vs ,tiles = [],[],[]
    for h, v ,tile in [[i,j,new_board[i][j]] for i in l for j in l if board[i][j] is not new_board[i][j]]:
      hs.append(h)
      vs.append(v)
      tiles.append(tile)
    return [min(hs),min(vs),hs.count(hs[0])!=len(hs),''.join(tiles)]
def play(row,col,down,tiles,board):
    valid, invalid = get_all_words(place_tiles(row,col,down,tiles,board)[1])
    for word in get_all_words(board)[0]:
      if word in valid:
        valid.remove(word)
    if len(invalid) or not len(valid):
      return -1      
    return (50* (len(tiles)>=7)) + sum(get_value(letter) for letter in ''.join(valid))
def best_play(tiles,board):
    bp = [-1,-1,-1,-1]
    for i in l:
      for j in l:
        for k in [0,1]:
          a = play(i,j,k,tiles, board)
          if bp[0] < a:
            bp = [a,i,j,k]
    return bp

00017: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1400, 'const': 377, 'code+const': 1777}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  ans=[[],[]]
  for i in range(15):
    col=''
    for j in range(15):
      if(board[i][j]!=''):col+=board[i][j]
      else:col+=' '
    words=col.split()
    for k in words:
      if(is_valid(k)):
        ans[0].append(k)
      elif(len(k)>1):
        ans[1].append(k)
  for j in range(15):
    col=''
    for i in range(15):
      if(board[i][j]!=''):col+=board[i][j]
      else:col+=' '
    words=col.split()
    for k in words:
      if(is_valid(k)):
        ans[0].append(k)
      elif(len(k)>1):
        ans[1].append(k)
  ans[0].sort()
  ans[1].sort()
  return ans
def get_play(board, new_board):
  consi=[]
  for i in range(15):
    for j in range(15):
      if(board[i][j]!=new_board[i][j]):
        consi.append([i,j])
  consi.sort()
  if(len(consi)>1 and consi[0][0]==consi[1][0]):d=0
  elif(len(consi)>1 and consi[0][1]==consi[1][1]):d=1
  else:d=0
  word=''
  for i in consi:
    word+=new_board[i[0]][i[1]]
  return [consi[0][0],consi[0][1],d,word]
def play(row,col,down,tiles,board):
    i=row
    j=col
    di=dj=0
    if(down==0):dj=1
    else:di=1
    odi=(di+1)%2
    odj=(dj+1)%2
    b,nb=place_tiles(row,col,down,tiles,board)
    if(b==False):
      return -1
    while(i-di>-1 and j-dj>-1 and board[i-di][j-dj].isalpha()):
        i-=di
        j-=dj
    word=''
    l=0
    cnt=0
    while(i<15 and j<15):
        if(board[i][j].isalpha()):
            word+=board[i][j]
        elif(l<len(tiles)):
            word+=tiles[l]
            consiw=tiles[l]
            ii=i
            jj=j
            while(ii-odi>-1 and jj-odj>-1 and board[ii-odi][jj-odj].isalpha()):
                consiw=board[ii-odi][jj-odj]+consiw
                ii-=odi
                jj-=odj
            ii=i
            jj=j
            while(ii+odi<15 and jj+odj<15 and board[ii+odi][jj+odj].isalpha()):
                consiw+=board[ii+odi][jj+odj]
                ii+=odi
                jj+=odj
            if(is_valid(consiw)):
                for k in consiw:
                    cnt+=get_value(k)
            elif(len(consiw)>1):
              return -1
            l+=1
        else:
          break
        i+=di
        j+=dj
    if(is_valid(word)):
        for k in word:
            cnt+=get_value(k)
        if(len(tiles)>6):cnt+=50
        return cnt
    else:
      return -1
def best_play(tiles,board):
  mx=r=c=d=-1
  for i in range(15):
    for j in range(15):
      for k in range(2):
        sc= play(i,j,k,tiles,board)
        if(mx<sc):
          r=i
          c=j
          d=k
          mx=sc   
  return [mx,r,c,d]

00018: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 944, 'const': 350, 'code+const': 1294}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  all_word = []
  for e in board:
    word = ''
    for a in e:
      if a == '':
        a = ' '
      a.upper()
      word += a
    all_word += word.split()
  c = 0
  r = 0
  while r <= 14:
    word = ''
    c = 0
    while c <= 14:
      a = board[c][r]
      if a == '':
        a = ' '
      word += a
      c += 1
    word.upper()
    r += 1
    all_word += word.split()
  valid = []
  notvalid = []
  for word in all_word:
    if is_valid(word) == True:
      valid.append(word)
    else:
      if len(word) > 1:
        notvalid.append(word)
  valid.sort()
  notvalid.sort()
  return [valid,notvalid]
def get_play(board, new_board):
    word = ''
    position = []
    for e in range(len(board)):
      for a in range(len(new_board[e])):
        l = new_board[e][a]
        if l != board[e][a]:
          word += l
          position.append([e,a])
    down = 0
    if len(position) == 1:
      down = 0
    else:
      if position [0][0] != position[1][0]:
        down = 1
    return [position[0][0],position[0][1],down,word]
def play(row,col,down,tiles,board):
    tiles = tiles.upper()
    score = 0
    oldword = get_all_words(board)
    newboard = place_tiles(row,col,down,tiles,board)[1]
    newword = get_all_words(newboard)
    if newword[1] != []:
      return -1
    for word in oldword[0]:
      if word in newword[0]:
        newword[0].remove(word)
    for word in newword[0]:
        for letter in word:
          score += get_value(letter)
    if len(tiles) >= 7:
      score += 50
    return score
def best_play(tiles,board):
  choose = []
  for down in range(2):
    for row in range(15):
      for col in range(15):
        if place_tiles(row,col,down,tiles,board)[0] == True:
          newboard = place_tiles(row,col,down,tiles,board)[1]
          allword = get_all_words(newboard)
          score = play(row,col,down,tiles,board)
          if allword[1] != []:
            score = -1    
          if score == -1:
            choose.append([1,-1,-1,-1])
          else:
            choose.append([-score,row,col,down])  
  choose.sort()
  choose[0][0] *= -1
  if choose[0][0] == 1:
    choose[0] = [-1,-1,-1,-1]
  return choose[0]

00019: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_10.0
["[[], [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', "
 "' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',...(more)"]]]
test_get_all_words_20.0
["[[], [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', "
 "' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', "
 "'T', 'R', 'A', 'N', 'S', 'P', 'O', 'R', 'T', 'A', 'T', 'I', 'O', 'N', 'S'], ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',...(more)"[]]]
test_get_all_words_30.0
["[[], [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', "
 "' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'M', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'U', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', 'E', 'T', 'E', 'R', 'N', 'A', 'L', 'S', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', 'MUSK', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', 'E', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'T', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'EE', ' ', ' R'], ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',...(more)"[]]]
test_get_all_words_40.0
["[[], [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', "
 "' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', 'O', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', 'N', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'N', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'E', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'V', ' ', 'R', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' S', 'U', 'N', 'W', 'I', 'T', 'S', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', 'VIL', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', 'D', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' E', ' ZOO'], ['F', 'E', 'W', "
 "'Z', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'O', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',...(more)"]]]
test_get_all_words_50.0
["[[], [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', "
 "' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "HELIOS', 'U', ' ', ' ', ' ', ' ', ' NOBSERVANT'], [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' LIAM', 'N', 'O', "
 "'O', 'O', 'O', 'O', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'O', ' ', ' ', 'N', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'B', ' ', ' ', 'I', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', 'H', 'E', 'L', 'I', 'O', 'S', ' ', ' ', 'G', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', 'I', ' ', ' ', 'E', ' ', ' ', 'I', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'A', ' "
 "', ' ', 'R', ' ', ' ', 'R', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'M', ' ', ' ', 'V', ' "
 "', ' ', 'I', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'A', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',...(more)"]]]
test_get_all_words_60.0
["[[], [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', "
 "' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'M', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'O', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', 'QFY', 'I', 'N', ' ', ' ', ' FLATER', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', 'MON', 'E', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', 'F', 'Y', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'L', ' ', ' "
 "', ' ', ' ', ' ', ' NE', ' PE', ' QIN', ' ', ' ', ' ', ' ', ' ', ' UT', 'Y', 'A', ' ', ' ', ' YUP'], ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',...(more)"[]]]
test_get_all_words_70.0
["[[], [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', "
 "' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' AT', ' ES', ' GI', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' IN', 'M', 'A', 'N', 'G', 'I', 'E', 'R', ' ', ' ME', ' ', ' ', ' ', ' ', ' ', ' NA', 'R', "
 "'E', 'T', 'A', 'I', 'N', 'S', ' '], ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',...(more)"[]]]
test_get_all_words_80.0
["[[], [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', "
 "' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', ' ATT', ' EH', ' FEH', 'SFERN', 'I', 'F', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "IT', 'I', 'T', 'E', 'R', 'A', 'N', 'T', ' NAES', ' RE', ' ', ' ', ' ', ' ', ' ', ' ', ' REI', ' ', ' ', "
 "'R', 'E', 'T', 'A', 'I', 'N', 'S', ' ', ' ', ' ', ' ', ' ', ' ', 'U', 'RSI', 'A', 'N', 'SI', 'TF', "
 "'E', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'S', 'T', 'A', "
 "'I', 'R', 'E', 'D', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' TI', ' ', 'F', 'URANITE'], 'H', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',...(more)"[]]]
test_get_all_words_90.0
["[[], [' AD', 'OAD', 'X', 'Y', 'P', 'H', 'E', 'NAD', 'B', 'U', 'T', 'RA', 'Z', 'O', 'INWASHING', 'E', ' ', 'P', "
 "'DIM', 'EDOD', 'RDOM', ' DOM', 'DOM', 'DOM', 'RDOM', 'DOM', ' ', 'D', 'O', 'M', ' ', 'J', ' ', 'A', ' ', ' ', 'E', ' "
 "', ' ', ' DOM', 'A', ' ', ' ', ' DORM', 'DSO', ' ED', ' ED', 'EJA', ' ', 'C', ' ', ' ', 'Q', ' ', ' ', ' ', "
 "'I', ' ', ' ', ' ', 'ULAT', ' ', ' ', 'C', ' ', 'I', ' ', ' ', 'U', ' ', ' ', ' ', 'N', ' ', ' ', ' "
 "', ' ', ' ', ' ', 'U', ' ', 'F', ' ', ' ', 'A', 'D', ' ', ' ', 'W', ' ', ' ', ' ', ' ', ' ', ' "
 "G', 'L', ' ', 'Y', ' ', ' ', 'L', 'O', ' ', ' ', 'A', 'D', ' ', ' ', ' ', ' ', ' ', 'A', ' ', "
 "'MI', ' ', 'D', 'MI', 'MO', ' ', 'MOD', 'MONS', 'O', ' ', ' ', ' ', ' ', ' ', 'T', ' ERS', 'NO',
 ' ', 'O', "
 "'F', ' ', ' ', 'O', 'H', 'M', ' ', ' ', ' OM', ' ', ' ', 'OPACIFYI', ' ', 'NG', ' ', 'MOXYPHENBUTAZONE', 'PIER', ' PREQUALIFIED', ' ', "
 "'UM', 'XI', ' ', ' ', ' ', ' ', ' ', ' ', 'N', ' ', ' ', ' ', ' ', 'YE', 'D', ' ', ' ', 'N', ' ', ' "
 "', ' ', ' ', ' ', ' ', 'G', ' ', ' ', ' ', ' ', 'D', 'ZOOT'], 'D', ' ', 'G', ' ', ' ', ' ', ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'M', 'O',...(more)"[]]]
test_get_all_words_100.0
["[[], [' ', ' ', ' ', ' ', ' ', ' ', 'T', ' ', ' ', ' ', ' ', ' ', 'F', ' ', ' ', ' ', ' ', ' ', "
 "' ', ' ', ' ', ' ', 'R', ' ', ' ', ' ', ' ', ' ', 'U', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', 'I', ' ', ' ', ' ', ' ', ' ', 'G', ' ', ' ', 'A', ' ', ' ', ' ', ' ', 'T', 'R', 'A', 'T', ' "
 "', ' ', ' ', 'G', 'I', ' ', 'J', 'A', ' ', 'J', 'O', 'J', 'URK', 'O', 'CALP', 'FO', 'O', 'M', 'JT', "
 "'Y', 'FUGIO', 'O', 'GI', ' ', ' ', ' ', ' ', ' ', 'R', ' ', 'E', ' ', 'X', 'U', ' ', 'V', ' ', ' ', "
 "'GYV', ' ', ' ', ' ', ' ', ' ', 'E', ' HOCK', 'D', ' IF', 'I', 'N', 'T', 'E', 'R', 'N', 'E', 'D', ' ', ' "
 "ITA', ' JA',
 ' ', 'JIVE', ' ', ' ', ' ', 'D', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', "
 "'MUN', ' ', ' ', ' OXIDS', 'S', 'I', 'T', 'H', 'I', 'N', 'G', ' ', ' ', ' ', ' ', ' ', 'S', ' ', ' ', ' "
 "', ' ', 'F', 'TO', 'TO', 'T', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' "
 "', 'C', 'RA', 'L', 'P', ' ', ' ', ' ', ' ', ' ', ' ', ' T', ' ', ' ', ' ', 'TRIALED', 'TUREENS', 'KXU'], ' ', ' "
 "', ' ', ' ', ' ', ' ', ' ', ' ', ' ', [' JOJUOLOOMJYOOI', ' RO',...(more)"]]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_30.0
[-14]
test_play_40.0
[-14, -21]
test_play_50.0
[-160, -172]
test_play_60.0
[-160, -1]
test_play_70.0
[-163, -14]
test_play_80.0
[-162]
test_play_90.0
[-11, -15, -124, -17, -185, -12]
test_play_100.0
[-19, -133, -136, -18, -12, -173, -165, -17, -174, -16]
test_play_110.0
[-167, -61, -128, -11, -13, -185, -11, -12, -17, -125, -17, -14, -21, -132, -12, -15, -16, -168, -16, -13, -10, -127, -128]
test_play_120.0
[-11]
test_play_130.0
[-19]
test_play_140.0
[-18, -120, -126, -1]
test_play_150.0
[-139]
test_best_play_10.0
[[-169, 01, 07, 01]]
test_best_play_20.0
[[-1, 0-1, 0-1, 0-1]]
test_best_play_30.0
[[-168, 0, 07, 01], [-187, 012, 0, 0], [-179, 01, 012, 01], [-159, 01, 0, 0], [-11, 02, 03, 0], [-165, 03, 04, 01],
 [-19, 06, 01, 0], [-17, 04, 02, 01], [-11, 0, 01, 0], [-122, 03, 08, 01]]
test_best_play_40.0
[[-71, 0, 07, 01], [-163, 10, 0, 0], [-163, 01, 01, 0], [-19, 07, 03, 01], [-19, 013, 0, 0], [-172, 014, 04, 0],
 [-17, 06, 06, 0], [-18, 03, 03, 0], [-18, 04, 0, 0], [-16, 05, 01, 0]]
test_best_play_50.0
[[-183, 0, 07, 01], [-162, 013, 0, 0], [-158, 01, 08, 0], [-10, 0, 01, 0], [-168, 0, 011, 01], [-124, 06, 08, 01],
 [-18, 08, 09, 01], [-10, 01, 02, 01], [-21, 05, 03, 01], [-127, 04, 04, 01]]
bytecount: {'code': 800, 'const': 348, 'code+const': 1148}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    words = ''
    for i in range(15):
        words += ' '
        for j in range(15):
            if board[i][j] != '':
                words += board[i][j].upper()
            else: words += ' '
    for j in range(15):
        words += ' '
        for i in range(15):
            if board[i][j] != '':
                words += board[i][j].upper()
            else: words += ' '
    words.split().sort()
    vw = [[],[]]
    for e in words:
        if is_valid(e) == True: vw[0].append(e)
        else: vw[1].append(e)
    return vw
def get_play(board, new_board):
    new = ''
    path = []
    for i in range(15):
        for j in range(15):
            if board[i][j] != new_board[i][j]:
                new += new_board[i][j].upper()
                path.append([i,j])
    if len(path) == 1 : d = 0
    elif path[0][0] == path[1][0]: d = 0
    else: d = 1
    return [path[0][0],path[0][1],d,new]
def play(row,col,down,tiles,board):
    s = 0
    vplace,newb = place_tiles(row,col,down,tiles,board)
    w1 = get_all_words(board)
    w2 = get_all_words(newb)
    for w in w2[0]:
        if w not in w1[0]:
            for e in w:
                s += get_value(e)
    if len(tiles) >= 7:
        s += 50
    if vplace == False or w2[1] != []:
        return -1
    return s
def best_play(tiles,board):
    allplay = []
    for i in range(15):
        for j in range(15):
            for d in range(2):
                allplay.append([play(i,j,d,tiles,board),i,j,d])
    allplay.sort()
    maxscore = allplay[-1][0]
    for p in range(len(allplay)):
        if allplay[p][0] == maxscore:
            return allplay[p]
    return [-1,-1,-1,-1]

00020: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1140, 'const': 409, 'code+const': 1549}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    out2 = []
    allword = []
    nj = []
    out = [[],[]]
    for i in board:
        if i != ['']*15:
            down0 = [under(e) for e in i]
            down0 = ''.join(down0)
            down0 = down0.strip('<').split('<')
            allword += down0
    for j in range(len(board[0])):
        bj = []
        for i in board:
            bj.append(i[j])
        nj.append(bj)
    for i in nj:
        if i != ['']*15:
            down0 = [under(e) for e in i]
            down0 = ''.join(down0)
            down0 = down0.strip('<').split('<')
            allword += down0
    for c in allword:
        if len(c) > 1:
            if is_valid(c):
                out[0].append(c)
            else:
                out[1].append(c)
    out2 = [sorted(out[0]),sorted(out[1])]
    return out2
def under(e):
    if e == '':
        return '<'
    else:
        return e
def get_play(board, new_board):
    count = 0
    txt = ''
    use = []
    down = 0
    out = []
    for i in range(len(board)):
        for j in range(len(board[0])):
            if board[i][j] != new_board[i][j]:
                txt += new_board[i][j]
                use.append([i,j])
    if len(use) != 1:
        if use[0][1] == use[1][1]:
            down = 1
    out += use[0]
    out += [down]
    out += [txt]
    return out
def play(row,col,down,tiles,board):
    newboard = copy_board(board)
    newboard = place_tiles(row,col,down,tiles,newboard)
    if newboard[0] == False:
        return -1
    newwords = get_all_words(newboard[1])[0]
    words = get_all_words(board)[0]
    newwordsF = get_all_words(newboard[1])[1]
    wordsF = get_all_words(board)[1]
    for c in wordsF:
        if c in newwordsF:
            newwords.remove(c)
    if newwordsF != []:
        return -1
    for c in words:
        if c in newwords:
            newwords.remove(c)
    if newwords == []:
        return -1
    out = 0
    if len(tiles) >= 7:
        out += 50
    for c in newwords:
        for e in c:
            out += get_value(e)
    return out
def best_play(tiles,board):
    down = [0,1]
    alls = []
    out = []
    count = 0
    for i in range(15):
        for j in range(15):
            for k in down:
                count += 1
                s = play(i,j,k,tiles,board)
                if s != -1:
                    alls.append([s,-i,-j,-k])
    if alls == []:
        return [-1,-1,-1,-1]
    else:
        alls.sort()
        alls[-1][1] = -alls[-1][1]
        alls[-1][2] = -alls[-1][2]
        alls[-1][3] = -alls[-1][3]
        return alls[-1]

00021: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_50.0
[[['AR', 'BI', 'HELIOS', 'ON', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_60.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA'], ['QYUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_80.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NA', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'SIF', 'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_90.0
[[['AD', 'AD', 'AED', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DORM',
  'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'FADLO', 'MIT', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM',
   'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  ['GMI', 'HDOM', 'IDIM', 'NOF', 'YLO']]]
test_get_all_words_100.0
[[['AA', 'ARK', 'CALP', 'ED', 'EDFOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'JITA', 'JIVEA',
   'MUNJIVE', 'OMUN', 'OXIDS', 'RESITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'NSITHING', 'RITA', 'SFOOT']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0
[50-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 15, 264, 17, 895, 012]
test_play_100.0
[9, 33, 4236, 18, 812, 73, 7465, 157, 74, 16]
test_play_110.0
[67, 61, 428, 151, 613, 845, 11, 12, 137, 1625, 17, 14, 21, 321, 4812, 3315, 16, 68, 16, 013, 170, 3827, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 120, 1426, 8-1]
test_play_150.0
[1539]
test_best_play_10.0
[None[69, 1, 7, 1]]
test_best_play_20.0
[None[-1, -1, -1, -1]]
test_best_play_30.0TypeError('cannot unpack non-iterable NoneType object')
[None[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_40.0TypeError('cannot unpack non-iterable NoneType object')
[None[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_50.0TypeError('cannot unpack non-iterable NoneType object')
[None[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 984, 'const': 321, 'code+const': 1305}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    char = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    valid = []; non_valid = []
    list_word1 = []
    for r in range(len(board)):
        w = ''
        for c in range(len(board[r])):
            word = board[r][c].upper() 
            if word in char:
                w += word
            if (len(w) >= 2 and word == '') or (len(w) >= 2 and c == 14 and board[r][c-1].upper() != ''):
                list_word1.append(w)
                w = ''
    for j in list_word1:
        check1 = is_valid(j)
        if check1 == True:
            valid.append(j)
        elif check1 == False:
            if j != '' and len(j)>2:
                non_valid.append(j)
    list_word2 = []
    for r1 in range(len(board)):
        w1 = ''
        for c1 in range(len(board[r1])):
            word1 = board[c1][r1].upper() 
            if word1 in char:
                w1 += word1
            if (len(w1) >= 2 and word1 == '') or (len(w1) >= 2 and c1 == 14 and board[c1-1][r1].upper() != ''):
                list_word2.append(w1)
                w1 = ''
    for i in list_word2:
        check = is_valid(i)
        if check == True:
            valid.append(i)
        elif check == False:
            if i != '' and len(i)>2:
                non_valid.append(i)
    valid.sort()
    non_valid.sort()
    return [valid,non_valid]
def get_play(board, new_board):
    word = ''
    row = []; col = []
    for r in range(len(board)):
        for c in range(len(board)):
            old = board[r][c]
            new = new_board[r][c]
            if new != old:
                word += new
                row.append(r)
                col.append(c)
    row.sort()
    col.sort()
    if (max(row)-min(row))>(max(col)-min(col)):
        down = 1
    else:
        down = 0
    return [row[0],col[0],down,word]
def play(row,col,down,tiles,board):
    scr = 0
    new_board = place_tiles(row,col,down,tiles,board)[1]
    old_word = get_all_words(board)
    new_word = get_all_words(new_board)
    for n in new_word[0]:
        if n not in old_word[0]:
            check = is_valid(n)
            for k in range(len(n)):
                if check == True:
                    for g in range(len(n[k])):
                        scr += get_value(n[k][g])
                else:
                    scr = -1
    if len(tiles) >= 7 and scr != -1:
        scr += 50
    return scr
def best_play(tiles,board):
    return

00022: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1008, 'const': 304, 'code+const': 1312}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    a = '' ;x = [] ;y = []
    for i in range(15):
        a = ''
        for j in range(15):
            if not board[i][j] == '':
                a += board[i][j]
            else:
                if is_valid(a):
                    x.append(a)
                elif not is_valid(a) and len(a) >= 2:
                    y.append(a)
                a = ''
        if is_valid(a):
                x.append(a)
        elif not is_valid(a) and len(a) >= 2:
                y.append(a)
        a = ''
    for i in range(15):
        a = ''
        for j in range(15):
            if not board[j][i] == '':
                a += board[j][i]
            else:
                if is_valid(a):
                    x.append(a)
                elif not is_valid(a) and len(a) >= 2:
                    y.append(a)
                a = ''
        if is_valid(a):
                x.append(a)
        elif not is_valid(a) and len(a) >= 2:
                y.append(a)
        a = ''               
    return [sorted(x), sorted(y)]
def get_play(board, new_board):
    a = '' ;ans = []; d = 0
    for i in range(15):
        for j in range(15):
            if not board[i][j] == new_board[i][j]:
                a += new_board[i][j]
                ans.append([i, j])
    if len(ans) > 1 and (ans[0][1] == ans[1][1]) :
        d = 1
    ans1 = ans[0][0] ;ans2 = ans[0][1]
    return [ans1, ans2, d, a]
def word_score(word):
    s = 0
    for i in word:
        s += get_value(i)
    return s
def play(row,col,down,tiles,board):
    s = 0
    if len(tiles) >= 7:
        s += 50
    words = get_all_words(board)
    new_board = copy_board(board)
    temp = place_tiles(row, col, down ,tiles, new_board)
    if not temp[0]:
        return -1
    new_board = temp[1]
    new_words = get_all_words(new_board)
    for new_word in new_words[1]:
        if new_word not in words[1]:
            return -1
        else:
            words[1].remove(new_word)
    for new_word in new_words[0]:
        if new_word not in words[0]:
            s += word_score(new_word)
        else:
            words[0].remove(new_word)
    return s
def best_play(tiles,board):
    s = -1 ;x = 0 ;y = 0 ;z = 0
    for i in range(15):
        for j in range(15):
            for down in range(2):
                temp = play(i, j, down, tiles, board)
                if s < temp:
                    s = temp ;x = i ;y = j ;z = down
    if s == -1:
        return [-1, -1, -1, -1]
    return [s, x, y, z]

00023: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1182, 'const': 365, 'code+const': 1547}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid=[]
  invalid=[]
  a=''
  b=''
  word=[]
  for i in range(15):
      for j in range(15):
          if board[i][j] != "":
              a+=board[i][j]
          else:
              if len(a)>1:
                  word.append(a)
              a=''
          if board[j][i] !="":
              b+=board[j][i]
          else:
              if len(b)>1:
                  word.append(b)
              b=''
      if len(a)>1:
          word.append(a)
      a=''
      if len(b)>1:
          word.append(b)
      b=''
  word.sort()
  for e in word:
      if is_valid(e):
          valid.append(e)
      else:
          invalid.append(e)
  return [valid,invalid]
def get_play(board, new_board):
  r=-1
  c=-1
  j=-1
  t=''
  d=0
  for i in range(15):
    for j in range(15):
      if board[i][j]!=new_board[i][j]:
        if r==-1 and c==-1:
          r=i
          c=j
        t+=new_board[i][j]
        if r!=i:
          d=1
  a=[r,c,d,t]
  return a
def play(row,col,down,tiles,board):
  ans=[]
  score=0
  x,y=place_tiles(row,col,down,tiles,board)
  if not x:
      return -1
  for i in range(15):
      a1=""
      a2=""
      b1=""
      b2=""
      for j in range(15):
          if not board[i][j]:
              a1+=" "
          if not y[i][j]:
              a2+=" "
          if not board[j][i]:
              b1+=" "
          if not y[j][i]:
              b2+=" "
          a1+=board[i][j]
          a2+=y[i][j]
          b1+=board[j][i]
          b2+=y[j][i]
      a2=a2.split()
      b2=b2.split()
      for w in a1.split():
          if is_valid(w) and w in a2:
              a2.remove(w)
      for w in b1.split():
          if len(w)>=2 and is_valid(w) and w in b2:
              b2.remove(w)
      for w in a2:
        if len(w)>=2 and not is_valid(w):
            return -1
        elif len(w)>=2:
            ans.append(w)
      for w in b2:
        if len(w)>=2 and not is_valid(w):
            return -1
        elif len(w)>=2:
            ans.append(w)
  for w in ans:
      for k in w:
          score+=get_value(k)
  if len(tiles)>=7:
      score+=50
  return score
def best_play(tiles,board):
  ans = [-1,-1,-1,-1]
  for i in range(15):
      for j in range(15):
          x = play(i ,j ,0 ,tiles ,board)
          y = play(i ,j ,1 ,tiles ,board)
          if x > ans[0]:
              ans = [x, i ,j ,0]
          if y > ans[0]:
              ans = [y, i ,j ,1]
  return ans

00024: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1330, 'const': 364, 'code+const': 1694}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid=[]
    invalid=[]
    myboard=copy_board(board)
    for row in range (15):
        word=["",""]
        for col in range (15):
            if myboard[row][col] != "":
                word[0]+=myboard[row][col]
            else:
                if is_valid(word[0])==False and len(word[0])>=2:
                    invalid.append(word[0])
                elif is_valid(word[0])==True and len(word[0])>=2:
                    valid.append(word[0])
                word[0]=""
            if myboard[col][row] != "":
                word[1]+=myboard[col][row]
            else:
                if is_valid(word[1])==False and len(word[1])>=2:
                    invalid.append(word[1])
                elif is_valid(word[1])==True and len(word[1])>=2:
                    valid.append(word[1])
                word[1]=""
        if is_valid(word[0])==False and len(word[0])>=2:
            invalid.append(word[0])
        elif is_valid(word[0])==True and len(word[0])>=2:
            valid.append(word[0])
        if is_valid(word[1])==False and len(word[1])>=2:
            invalid.append(word[1])
        elif is_valid(word[1])==True and len(word[1])>=2:
            valid.append(word[1])
    valid.sort()
    invalid.sort()
    return [valid,invalid]
def get_play(board, new_board):
    myboard=copy_board(board)
    mynewboard=copy_board(new_board)
    word=""
    answer=[0,0,0,word]
    answer2=[0,0]
    for row in range (15):
        for col in range (15):
            if myboard[row][col]!=mynewboard[row][col]:
                if word=="":
                    answer[0]=row
                    answer[1]=col
                if len(word)==1:
                    answer2[0]=row
                    answer2[1]=col
                word+=mynewboard[row][col]
    if answer[1]==answer2[1]:
        answer[2]=1
    answer[3]=word
    return answer
def play(row,col,down,tiles,board):
    myboard=copy_board(board)
    a,newboard=place_tiles(row,col,down,tiles,myboard)
    score=0
    oldword=get_all_words(board)[0]
    if a == True:
        newword=get_all_words(newboard)[0]
        for x in range (len(newword)):
            if newword[x] not in oldword:
                for y in newword[x]:
                    score+=get_value(y)
            else:
                oldword.remove(newword[x])        
    else:
        return -1
    if score!=0:
        if len(tiles)>=7:
            score+=50
        return score
    else:
        return -1
def best_play(tiles,board):
    myboard=copy_board(board)
    answer=[]
    for row in range (15):
        for col in range (15):
            scored0=-play(row,col,0,tiles,myboard)
            if scored0 != 1:
                newboard=place_tiles(row,col,0,tiles,myboard)[1]
                if get_all_words(newboard)[1] == []:
                    answer.append([scored0,row,col,0])        
    for row in range (15):
        for col in range (15):
            scored1=-play(row,col,1,tiles,myboard)
            if scored1 != 1:
                newboard=place_tiles(row,col,1,tiles,myboard)[1]
                if get_all_words(newboard)[1] == []:
                    answer.append([scored1,row,col,1])            
    if answer != []:
        answer.sort()
        answer[0][0]*=-1
        return answer[0]
    return [-1,-1,-1,-1]

00025: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_40.0
[[['CONNERS', 'UNWITS'], ['CONNVILDERS', 'ZOO'], ['FEWZ', 'VR']]]
test_get_all_words_50.0
[[['BHELI', 'ONS', 'UNOBSERVANT'], ['LIARRM', 'HELINOOOOOSG', 'ONIEGI', 'MVRI', 'NOOOOO']]]
test_get_all_words_60.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_80.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'ITA', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SIF', 'SIRF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_90.0
[[['EJACULD', 'ATD', 'AD', 'BRAINWASHING', 'DIMO', 'MDOD', 'DOMONSTERS', 'DOPACIFYINGM', 'DOXYPHENBUTAZONEM', 'PREQUALIFIEDOM', 'XIDOM'],
  ['ADTOM', 'AEADOAM',
   'BRAINWASHINGDOM', 'CQITCDORM', 'DSO', 'EDG', 'EDDOM', 'EDJACULATING', 'FADWLO', 'GMI', 'MIN', 'HDOMDOM',
   'IMODI', 'MDONSOTERS', 'IUNUO',
   'NODF', 'OHMD', 'OM', 'NOPACIFOHMYING', 'OXYPHENSBUTAZONE', 'OMPIER', 'PREQUALIFIERDORMDOMJ', 'TSUM', 'UMDOMNXI', 'YEDOM',
   'YLOADA', 'ZOOTE'],
  []]]
test_get_all_words_100.0
[[['AA', 'ARK', 'CALP', 'EDFOOT', 'TRFUGIALEDO'],
 'GI', ['GYVED', 'HOCK', 'IF', 'INTERNED', 'FUGIORITA', 'IGJA',
   'JOJIVE', 'MUN', 'OLOOMJYOOXIDS', 'NSITHING', 'TO', 'TO', 'TREXUVVAT', 'TRUIALED', 'TUREENSFOOT', 'TFXU'],
  ['JOJUOLOOMJYOOI', 'TRATGIJAO']]]
test_get_play_10.0
[[07, 06, 0, 'ICE'], [07, 04, 0, 'JUD'], [04, 05, 01, 'INFSIVE'], [06, 08, 0, 'M']]
test_get_play_20.0
[[01, 07, 01, 'MALEATE'], [05, 06, 01, 'JURY'], [05, 08, 01, 'REWTH'], [01, 08, 0, 'OLEHUNT'],
 [02, 014, 01, 'RAVISES'], [0, 10, 0, 'TOGA'],
 [05, 013, 01, 'POZ'], [05, 05, 01, 'ABAND'],
 [02, 10, 0, 'COYE'], [10, 02, 0, 'FOOS']]
test_get_play_30.0
[[06, 06, 01, 'XUNT']]
test_get_play_40.0
[[07, 01, 0, 'INHERITANCE']]
test_get_play_50.0
[[06, 09, 01, 'CAT']]
test_get_play_60.0
[[06, 07, 01, 'CT']]
test_get_play_70.0
[[07, 03, 0, 'COMDER']]
test_get_play_80.0
[[06, 06, 0, 'AT']]
test_get_play_90.0
[[06, 07, 0, 'M']]
test_get_play_100.0
[[0, 07, 01, 'HEPATICS'], [01, 03, 0, 'MAILS'], [07, 06, 01, 'ARREAR'], [02, 0, 0, 'EASIED'],
 [013, 06, 0, 'SAHIWAL'], [03, 013, 01, 'MICROLOGIES'],
 [014, 07, 0, 'GAS'], [07, 05, 01, 'GOORY'],
 [10, 07, 0, 'SHIPS'], [02, 011, 01, 'MALEFICE'], [0, 10, 01, 'DOOLAN'], [04, 09, 01, 'POGEY'],
 [0, 014, 01, 'AGROS'], [03, 02, 01, 'TONIEST'], [09, 01, 01, 'SLICES'], [04, 0, 0, 'CRONY'],
 [07, 014, 01, 'DIXIT'], [011, 04, 01, 'PINS'],
 [05, 0, 01, 'ARED'], [0, 01, 0, 'GRAFT'], [012, 09, 0, 'MO'],
 [06, 04, 01, 'CAB'], [011, 012, 01, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_30.0
[-14]
test_play_40.0
[-14, -21]
test_play_50.0
[-160, -172]
test_play_60.0
[-160, -1]
test_play_70.0
[-163, -14]
test_play_80.0
[-162]
test_play_90.0
[-11, -15, -124, -17, -185, -12]
test_play_100.0
[-19, -133, -136, -18, -12, -173, -165, -17, -174, -16]
test_play_110.0
[-167, -61, -128, -11, -13, -185, -11, -12, -17, -125, -17, -14, -21, -132, -12, -15, -16, -168, -16, -13, -10, -127, -128]
test_play_120.0
[-11]
test_play_130.0
[-19]
test_play_140.0
[-18, -120, -126, -1]
test_play_150.0
[-139]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 610, 'const': 226, 'code+const': 836}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  word=[]
  for i in range(len(board)):
    x=''      
    for j in range(len(board[i])):
      if "A"<= board[i][j]<= 'Z':
        x+=board[i][j]
    word.append(x)
  if len(word) ==0:
    return [[],[]]
  l=[]
  for n in board:
    for j in  range(len(n)):
      if 'A' <= n[j] <= 'Z':
        l.append([j,n[j]])
    if len(l) >0:
      break
  for i in board[board.index(n)+1:]:
    for e in range(len(l)):
      if 'A' <=i[l[e][0]]<='Z':
        l[e].append(i[l[e][0]])
  for i in range(len(l)):
    l[i]=''.join(l[i][1:])
  word+=l
  word.sort()
  for i in word:
    if len(i)<2:
      word.remove(i)
  Wr=[]
  Wf=[]
  for i in word:
    if i in word_list:
      Wr.append(i)
    else:
      if len(i)>=2:
        Wf.append(i)
      ans=[Wr,Wf]
  return ans
def get_play(board, new_board):
    return [0,0,0,""]
def play(row,col,down,tiles,board):
    return -1
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00026: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_60.0
[[6, 7, 01, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0IndexError('list index out of range')
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 908, 'const': 326, 'code+const': 1234}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid = []
    invalid = []
    a = ""
    for i in range(15) :
        for k in range(15) :
            if board[i][k].isalpha() :
                a += board[i][k]
            if board[i][k] == "" or k == 14 :
                if len(a) >= 2 :
                    b = is_valid(a)
                    if b :
                        valid.append(a)
                    else :
                        invalid.append(a)
                a = ""
    a = ""
    for i in range(15) :
        for k in range(15) :
            if board[k][i].isalpha() :
                a += board[k][i]
            if board[k][i] == "" or k == 14 :
                if len(a) >= 2 :
                    b = is_valid(a)
                    if b :
                        valid.append(a)
                    else :
                        invalid.append(a)
                a = ""
    valid.sort()
    invalid.sort()                  
    return [valid,invalid]
def get_play(board, new_board):
    row = 0
    col = 0
    down = 0
    tiles = ""
    for i in range(15) :
        for j in range(15) :
            if board[i][j] != new_board[i][j] :
                if tiles == "" :
                    row = i
                    col = j
                if board[i+1][j] != new_board[i+1][j] :
                    down = 1
                tiles += new_board[i][j]
    return [row,col,down,tiles]
def play(row,col,down,tiles,board):
    score = 0
    lst = []
    old_all_words = get_all_words(board)
    check,new = place_tiles(row,col,down,tiles,board)
    if check :
        new_all_words = get_all_words(new)
        olds = old_all_words[0] + old_all_words[1]
        news = new_all_words[0] + new_all_words[1]
    else :
        return -1
    for i in news :
        if i in olds :
            olds.remove(i)
        else :
            if not is_valid(i) :
                return -1
            else :
                lst.append(i)
    for word in lst :
        for ch in word :
            score += get_value(ch)
    if len(tiles) >= 7 :
        score += 50
    return score
def best_play(tiles,board):
    lst = []
    for i in range(15) :
        for j in range(15) : 
            lst.append([-play(i,j,0,tiles,board),i,j,0])
            lst.append([-play(i,j,1,tiles,board),i,j,1])
    lst.sort()
    mx = lst[0]
    if mx[0] == 1 : return [-1,-1,-1,-1]
    return [-mx[0],mx[1],mx[2],mx[3]]

00027: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_20.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 01, 'RAVISES'],
 [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 01, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 01, 'DIXIT'],
 [11, 4, 1, 'PINS'], [85, 0, 01, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'],
 [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1820, 'const': 365, 'code+const': 2185}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    res = [[],[]]
    for r in board :
      word = ''
      for c in r :
        if c != '' : word+=c
        else :
          if word == '' : continue
          word = word.upper()
          if is_valid(word) : res[0].append(word)
          else :
            if len(word) >=2 :
              res[1].append(word)
          word = ""
      if word!= '' :
        word = word.upper()
        if is_valid(word) : res[0].append(word)
        else :
          if len(word) >=2 :
            res[1].append(word)
      word = ""
    for ic in range(15) :
      word = ''
      for ir in range(15) :
        ch = board[ir][ic]
        if ch : word+=ch
        else :
          if word == '' : continue
          word = word.upper()
          if is_valid(word) : res[0].append(word)
          else :
            if len(word) >=2 :
              res[1].append(word)
          word = ""
      if word!= '' :
        word = word.upper()
        if is_valid(word) : res[0].append(word)
        else :
          if len(word) >=2 :
            res[1].append(word)
        word = ""
    res[0] = sorted(res[0])
    res[1] = sorted(res[1])
    return res
def get_play(board, new_board):
    po = [-1,-1]
    for i in range(15) :
      for j in range(15) :
        if board[i][j] != new_board[i][j] :
          po = [i,j]
          aci,acj = i+1,j 
          ari,arj = i, j+1
          wr = new_board[i][j]
          wc = new_board[i][j]
          di = 0 
          while aci<15 and arj < 15 :
            if board[ari][arj]!=new_board[ari][arj] :
              di = 0
              break
            if board[aci][acj]!=new_board[aci][acj] :
              di = 1
              break
            aci+=1
            arj+=1
          if di :
            while(aci<15 and new_board[aci][acj]!='') :
              if board[aci][acj]!=new_board[aci][acj] :
                wc += new_board[aci][acj]
              aci+=1
          else :
            while(arj<15 and new_board[ari][arj]!='') :
              if board[ari][arj]!=new_board[ari][arj] :
                wr += new_board[ari][arj]
              arj+=1
          break
        if po != [-1,-1] : break
    return [po[0],po[1],di, wc if di else wr]
def play(row,col,down,tiles,board):
    check, new_board = place_tiles(row,col, down, tiles, board)
    if not check : return -1
    score = 0
    word = ''
    count_tiles = 0
    i,j = row,col
    while i-1>=0 and down :
      if new_board[i-1][j] == '' : break
      i-=1
    while j-1>=0 and not down : 
      if new_board[i][j-1] == '' : break
      j-=1
    while i<15 and j<15 :
      if new_board[i][j] == '': break
      if board[i][j] != new_board[i][j] :
        count_tiles += 1
        if down:
          tj = j-1
          while tj>=0 :
            if new_board[i][tj] == '' : break
            tj -= 1
          tj+=1
          w = ''
          sw = 0
          while tj < 15 :
            if new_board[i][tj] == '' : break
            w += new_board[i][tj]
            sw += get_value(new_board[i][tj])
            tj += 1
          if len(w) != 1 : 
            if not is_valid(w): return -1
            score += sw
        if not down:
          ti = i-1
          while ti>=0 :
            if new_board[ti][j] == '' : break
            ti -= 1
          ti+=1
          w = ''
          sw = 0
          while ti < 15 :
            if new_board[ti][j] == '' : break
            w += new_board[ti][j]
            sw += get_value(new_board[ti][j])
            ti += 1
          if len(w) != 1 : 
            if not is_valid(w): return -1
            score += sw
      word += new_board[i][j]
      score += get_value(new_board[i][j])
      if down : i+=1
      else : j+=1
    if not is_valid(word): return -1
    if count_tiles >=7 : score += 50
    return score
def best_play(tiles,board):
    highest_score = -1
    poi = -1
    poj = -1
    d = -1
    for i in range(15) :
      for j in range(15) :
        acr = play(i,j,0, tiles, board)
        acc = play(i,j,1,tiles, board)
        if acr > highest_score :
          highest_score = acr
          poi = i
          poj = j
          d = 0
        if acc > highest_score :
          highest_score = acc
          poi = i
          poj = j
          d = 1
    return [highest_score,poi,poj,d]

00028: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1080, 'const': 282, 'code+const': 1362}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    list=[]
    word=[]
    for e in board:
        rowword=[]
        i=0
        for w in e:
            if w!='':
                rowword.append(w)
            elif w== '' and len(rowword)>0:
                string=''.join(rowword)
                word.append(string)
                rowword=[]
            i+=1
        string=''.join(rowword)
        if string =='' or len(string)==1:
            pass
        else:
            word.append(string)
    k=0
    while k<len(board[0]):
        columnword=[]
        for e in board:
            if len(columnword)>0 and e[k]=='':
                string=''.join(columnword)
                word.append(string)
                columnword=[]
            elif e[k] !='':
                columnword.append(e[k])
        string=''.join(columnword)
        if string =='' or len(string)==1:
            pass
        else:
            word.append(string)
        k+=1
    Word=[]
    for e in word:
        if len(e)==1:
            pass
        else:
            Word.append(e)
    Word.sort()
    valid=[]
    invalid=[]
    for e in Word:
        if is_valid(e)==True:
            valid.append(e)
        else:
            invalid.append(e)
    list.append(valid)
    list.append(invalid)
    return list
def get_play(board, new_board):
    col=0
    v=0
    tial=[]
    while col<len(board[0]):
        for i in range(15):
            prev=board[col][i]
            now=new_board[col][i]
            if prev != now:
                tial.append(now)
                if v==0:
                    col1=i
                    row1=col
                    v+=1
                col2=i
                row2=col
        col+=1
    tiles=''.join(tial)
    down=0
    if row2>row1:
        down=1
    if col2>col1 or len(tiles)==1:
        down=0
    output=[row1,col1,down,tiles]
    return output  
def play(row,col,down,tiles,board):
    valid,new_board=place_tiles(row, col, down, tiles, board)
    word1=get_all_words(board)
    word2=get_all_words(new_board)
    score=0
    if not valid or word2[1]!=[]:
        return -1
    for e in word2[0]:
        if e not in word1[0]:
            for w in e:
                score+=get_value(w)
        else:
            word1[0].remove(e)
    if len(tiles)>=7:
        score+=50
    return score
def best_play(tiles,board):
    t=[]
    for row in range(len(board[0])):
        for col in range(len(board[0])):
            for down in range(2):
                score=play(row, col, down, tiles, board)
                if score==-1:
                    t.append([-1, -1, -1, -1])
                else:
                    t.append([score, row, col, down])
    t.sort()
    max=t[-1][0]
    for e in t:
        try:
            if e[0]==max:
                return e
        except:
            pass

00029: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[]
[[[], []]]
test_get_all_words_21.0
['T']
['R']
['A']
['N']
['S']
['P']
['O']
['R']
['T']
['A']
['T']
['I']
['O']
['N']
['S']
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[]
['E']
['T']
['E']
['R']
['N']
['A']
['L']
['MUSKETEER']
[]
[]
[]
[]
[]
[]
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_40.0
[]
[]
[]
[]
['U']
['N']
['W', 'F']
['VILDE']
['T', 'W']
['CONNERS', 'ZOO']
[]
[]
[]
[]
[]
[[['CONNERS', 'UNWITS', 'VILDE', 'CONNERS', 'ZOO'], ['FEWZ']]]
test_get_all_words_50.0
[]
[]
[]
['H']
['E']
['LIAM']
['I']
['O']
['UNOBSERVANT']
['O']
['O']
['ONIGIRI']
['O']
['O']
[]
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'LIAM', 'ONIGIRI']]]
test_get_all_words_60.0
[]
[]
[]
[]
[]
[]
['Q', 'YUP']
['INFLATER']
['MONEY']
[]
[]
[]
[]
[]
[]
[[['QINFY', 'INFLATER', 'FMONEY', 'YANE', 'UTPE', 'PEQIN', 'YUPT', 'INFLYATER', 'MONEYUP'], []]]
test_get_all_words_70.0
[]
[]
['R']
['ME']
['AT']
['NA']
['GI']
['IN']
['ES']
['R']
[]
[]
[]
[]
[]
[[['MANGIERT', 'RETAINS', 'MEGI', 'ATIN', 'MANAGIER', 'GIME', 'INA', 'RETAINS'], []]]
test_get_all_words_80.0
['U']
['SI', 'R']
['IT', 'A']
['FERN']
['REI']
['ATT']
['NAES']
['TI', 'T']
['N', 'A']
['S', 'IF']
['RE']
['EH']
['D']
[]
[]
[[['SIFATT', 'ITERANTH', 'RFETAINSH', 'UFERANITE', 'STAIRED', 'FEH', 'SIT', 'ITERANT', 'FERNAES', 'REI', 'ATTREI',
   'NARETAINS', 'TSI', 'SIF',
   'STAIRED', 'TI', 'URANITEH'],
  []]]
test_get_all_words_90.0
['OPACIFYING']
['XI']
['YE', 'DOM']
['PREQUALIFIED']
['H', 'DOM', 'DOM']
['ED', 'DOM']
['NO', 'DOM', 'DOM']
['BRAINWASHING', 'O']
['UM', 'DOM', 'N']
['T', 'S']
['AD', 'T']
['ZOOT', 'E']
['OM', 'R']
['N', 'S']
['EJACULATING']
[[['OXYPHENBUTAZONED', 'PIERAD', 'ADO', 'BRMAINWASHING', 'DOIM', 'ADOD', 'LDOM', 'ADOM', 'DIOM', 'DSOM', 'DOFM', 'DOHM', 'DOMI',
   'DOMI', 'EDORM', 'DSOD', 'MOED', 'MO', 'MONSTERSD', 'OPEJACIFYULATING', 'XI', 'YELO', 'DOMI', 'PREQUALMIFIED',
   'DMOM', 'MODOM', 'MONSTEDRS', 'DNOM',
   'NOF', 'DOHM', 'DOM', 'BROPACINWASHFYING', 'OXYPHENBUMTAZONE', 'DOMPIER', 'PREQUALIFIED', 'ZOOTUM', 'OMXI', 'YE',
   'EJACULAZOOTING'],
  []]]
test_get_all_words_100.0
['J']
['O']
['J']
['TUREENS']
['RO']
['TRIALED']
['TO']
['OXIDS']
['MUN', 'IF', 'A']
['J', 'T', 'TO', 'R']
['GYVE', 'HOCK']
['FUGIO', 'R', 'ITA']
['O', 'N', 'N', 'L']
['JIVE', 'G', 'P']
['AA', 'D']
[[['TRATA', 'GIARK', 'JCALP', 'XUFOOT', 'FUGINTERNEDO', 'SITHGING', 'FOOTGYVE', 'HOCALPK', 'ARKIF', 'INTUERNEENSD', 'TRITALED',
   'TOJA',
   'OXJIDSVE', 'MUN', 'OXIFDS', 'SITOHING', 'GYVETO', 'HTOCK', 'FUGIOTRAT', 'ITRIALED', 'JIVTUREENS', 'AAXU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_30.0
[-14]
test_play_40.0
[-14, -21]
test_play_50.0
[-160, -172]
test_play_60.0
[-160, -1]
test_play_70.0
[-163, -14]
test_play_80.0
[-162]
test_play_90.0
[-11, -15, -124, -17, -185, -12]
test_play_100.0
[-19, -133, -136, -18, -12, -173, -165, -17, -174, -16]
test_play_110.0
[-167, -61, -128, -11, -13, -185, -11, -12, -17, -125, -17, -14, -21, -132, -12, -15, -16, -168, -16, -13, -10, -127, -128]
test_play_120.0
[-11]
test_play_130.0
[-19]
test_play_140.0
[-18, -120, -126, -1]
test_play_150.0
[-139]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 766, 'const': 242, 'code+const': 1008}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid=[]
    invalid=[]
    s=""
    for i in board:
        for j in i:
            if s!="" and j=="":
                s+=" "
            s+=str(j)
        s=s.split()
        for k in s:
            if is_valid(k)==True:
                valid.append(k)
                s=""
            elif is_valid(k)==False and len(k)>=2:
                invalid.append(k)
                s=""
        s=""    
    for i in range (15):
        for j in range (15):
            if s!="" and board[j][i] =="":
                s+=" "
            s+=str(board[j][i])
        s=s.split()
        print(s)
        for k in s:
            if is_valid(k)==True:
                valid.append(k)
                s=""
            elif is_valid(k)==False and len(k)>=2:
                invalid.append(k)
                s=""
        s="" 
    return [valid,invalid]
def get_play(board, new_board):
    s=""
    n1=[]
    n2=[]
    for i in range(15):
        for j in range(15):
            if new_board[i][j]!=board[i][j]:
                s+=new_board[i][j]
                n1.append([i,j])
    for i in range(15):
        for j in range(15):            
            if new_board[j][i]!=board[j][i]:
                n2.append([i,j])   
    if len(n1)==1 and len(n2)==1 :
        a=[n1[0][0],n1[0][1],0,s]
    else:
        if n1[0][0]==n1[1][0]:
            a=([n1[0][0],n1[0][1],0,s])
        if n2[0][0]==n2[1][0]:
            a=([n2[0][1],n2[0][0],1,s])
    return (a)      
def play(row,col,down,tiles,board):
    return -1
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00030: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1280, 'const': 376, 'code+const': 1656}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid = []
  invalid = []
  for i in range(15):
    word = '' 
    for j in range(15):
      if board[i][j] == '':
        word += ' '
      else:
        word += board[i][j]
    wordlist = word.strip().split()
    for word in wordlist:
      if is_valid(word):
        valid.append(word)
      elif word != '' and len(word) >= 2:
        invalid.append(word)
  for j in range(15):
    word = ''
    for i in range(15):
      if board[i][j] == '':
        word += ' '
      else:
        word += board[i][j]
    wordlist = word.strip().split()
    for word in wordlist:
      if is_valid(word):
        valid.append(word)
      elif word != '' and len(word) >= 2:
        invalid.append(word)
  valid.sort()
  invalid.sort()
  return [valid,invalid]
def get_play(board, new_board):
  row = []
  col = []
  down = []
  add = []
  lr = []
  ud = []
  new_board1 = copy_board(new_board)
  for i in range(15):
    for j in range(15):
      if new_board1[i][j] == board[i][j]:
        new_board1[i][j] = ''
  found = False
  for i in range(15):
    for j in range(15):
      if new_board1[i][j] != '':
        row.append(i)
        col.append(j)
        found = True
        break
    if found:
      break
  for i in range(15):
    word = '' 
    for j in range(15):
        word += new_board1[i][j]
    if word != '':
      lr = [min(row),min(col),0,word]
      break
  for j in range(15):
    word = '' 
    for i in range(15):
        word += new_board1[i][j]
    if word != '':
      ud  = [min(row),min(col),1,word]
      break
  if len(lr[3]) == 1 and len(ud[3]) == 1:
    return lr
  if len(lr[3]) > len(ud[3]):
    return lr
  else:
    return ud
def play(row,col,down,tiles,board):
  valid,board1 = place_tiles(row,col,down,tiles,board)
  allword1 = get_all_words(board1)
  validword1 = allword1[0]
  invalidword1 = allword1[1]
  allword = get_all_words(board)
  validword = allword[0]
  invalidword = allword[1]
  for word1 in invalidword1:
    if word1 not in invalidword:
      valid = False 
      break
  if not valid:
    return -1
  else:
    p = 0
    for word1 in validword1:
      if word1 not in validword:
        for t in word1:
          p += get_value(t)
      else:
        validword.remove(word1)
    if len(tiles) >= 7:
      p += 50
    return p
def best_play(tiles,board):
  mx = -2
  for i in range(15):
    for j in range(15):
      if play(i,j,0,tiles,board) > mx:
        mx = play(i,j,0,tiles,board)
      if play(i,j,1,tiles,board) > mx:
        mx = play(i,j,1,tiles,board)
  if mx == -1:
    return [-1,-1,-1,-1]
  for i in range(15):
    for j in range(15):
      if play(i,j,0,tiles,board) == mx:
        return [mx,i,j,0]
      elif play(i,j,1,tiles,board) == mx:
        return [mx,i,j,1]

00031: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_20.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_90.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_20.0
[[-1, 5-1, 7-1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_50.0
[[83, 0, 7, 1], [62, 13, 0, 0], [6358, 14, 58, 0], [10, 0, 1, 0], [68, 20, 11, 1], [24, 26, 8, 1],
 [18, 48, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1716, 'const': 527, 'code+const': 2243}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  right = []
  wrong = []
  ans = [right,wrong]
  word = []
  tt = []
  copy = copy_board(board)
  for i in copy :
    p = ""
    for k in i :
      if "a"<=k<="z" or "A"<=k<="Z" :
        p += k
      else :
        p += "-"
    word.append(p)
  for i in range(len(copy)) :
    p = ""
    for k in range(len(copy[i])) :
      if "a"<=copy[k][i]<="z" or "A"<=copy[k][i]<="Z" :
        p += copy[k][i]
      else :
        p += "-"
    word.append(p)
  for i in word :
    if "-" in i :
      x = i.split("-")
      for k in x :
        if k != "" and len(k) >= 2 :
          tt.append(k)
  tt.sort()
  for i in tt :
    res = is_valid(i)
    if res == True :
      right.append(i)
    else :
      wrong.append(i)
  return ans
def get_play(board, new_board):
  old = copy_board(board)
  new = copy_board(new_board)
  res = ""
  x = []
  ans = []
  down = 0
  for i in range(len(old)) :
    for j in range(len(new)) :
      if new[j][i] != old[j][i] :
        res += new[j][i]
        x.append([j,i])
  if len(x) > 1 :
    for i in range(len(x)-1) :
      if x[i][0] == x[i+1][0] :
        down = 0
      else :
        down = 1
  tt = x[0]
  for i in tt :
    ans.append(i)
  ans.append(down)
  ans.append(res)
  return ans
def play(row,col,down,tiles,board):
  s = 0
  i = row
  j = col
  newboard = place_tiles(row,col,down,tiles,board)
  nb = place_tiles(row,col,down,tiles,board)[0]
  x1 = get_all_words(board)
  x2 = get_all_words(newboard[1])
  n1 = x1[0]
  n2 = x2[0]
  new = []
  if len(x2[1])>0:
    return -1
  for i in n2 :
    if i not in n1 :
      if is_valid(i) :
        new.append(i)
      else :
        return -1
    else :
      n1.remove(i)
  if new == [] :
    s = -1
  else :
    s = 0
    for i in new :
      for k in i :
        o = get_value(k)
        s += o
  if len(tiles) >= 7 and place_tiles(row,col,down,tiles,board)[0]:
      s += 50
  return s
def best_play(tiles,board):
  copyboard = copy_board(board)
  new = True
  ans = []
  for i in copyboard :
    for k in i :
      if k != "" :
        new = False
        break
  if new == True :
    yao = len(tiles)
    row = 8 - yao
    if row < 0 :
      row = 0
    col = 7
    down = 1
    score = play(row,col,down,tiles,board)
    ans.append(score)
    ans.append(row)
    ans.append(col)
    ans.append(down)
  else :
    used = []
    check = []
    wew = {}
    pp = []
    for i in range(0,len(copyboard)):
      for j in range(0,len(copyboard)) :
        if copyboard[j][i] != "" :
          used.append([j,i])
    yao = len(tiles)
    for i in range(len(copyboard)):
      for j in range(len(copyboard)) :
        x = play(j,i,0,tiles,copyboard)
        if x in check : pass
        else :
          check.append(x)
        pp.append([x,j,i,0])
        wew[x] = j,i,0
    for i in range(len(copyboard)):
      for j in range(len(copyboard)) :
        x = play(j,i,1,tiles,copyboard)
        if x in check : pass
        else :
          check.append(x)
        pp.append([x,j,i,1])
        wew[x] = j,i,1
    pp.sort(reverse=True)
    check.sort(reverse=True)
    oo = max(wew)
    rt = pp[0][0]
    qwe = []
    for i in pp :
      if i[0] == rt :
        qwe.append(i)
    qwe.sort()
    rez = qwe[0]
    ans.append(rez[0])
    ans.append(rez[1])
    ans.append(rez[2])
    ans.append(rez[3])
    if ans[0] == -1 :
      ans = [-1,-1,-1,-1]
  return ans

00032: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1380, 'const': 392, 'code+const': 1772}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  list_w = []
  join1 = []
  join2 = []
  ans = [[],[]]
  for j in range (15):
      for k in range(15):
          if join1 == []:
              if board[j][k] != '':
                  join1.append(board[j][k])
          else:
              if board[j][k] != '' :
                  join1.append(board[j][k])
              else:
                  word = ''.join(join1)
                  list_w.append(word)
                  join1 = []
          if join2 == []:
              if board[k][j] != '':
                  c = k
                  join2.append(board[k][j])
          else:
              if board[k][j] != '' :
                  join2.append(board[k][j])
              else:
                  word2 = ''.join(join2)
                  list_w.append(word2)
                  join2 = []
      word2 = ''.join(join2)
      list_w.append(word2)
      join2 = []
      word = ''.join(join1)
      list_w.append(word)
      join1 = []
  for i in list_w:
      i = i.upper()
      if len(i) < 2:
          pass
      else:
          if is_valid(i) == True:
              ans[0].append(i)
          elif is_valid(i) == False:
              ans[1].append(i)   
  ans[0].sort()
  ans[1].sort()
  return ans
def get_play(board, new_board):
    check = []
    check2 = []
    new_word = []
    ans = []
    for j in range(15):
        for k in range(15):
            if board[j][k] != new_board[j][k]:
                check.append(j)
                check2.append(k)
                new_word.append(new_board[j][k])
    if len(new_word)>1:
        if len(set(check)) == 1:
            word = ''.join(new_word)
            down = 0
        if len(set(check2)) == 1:
            word = ''.join(new_word)
            down = 1  
    else:
        down = 0  
        word = new_word[0]
    ans.append(check[0])
    ans.append(check2[0])
    ans.append(down)
    ans.append(word)
    return ans
def play(row,col,down,tiles,board):
    score = 0
    c = 0
    checker = []
    copyboard = copy_board(board)
    word1 = get_all_words(board)
    valid, board2 = place_tiles(row,col,down,tiles,board)
    if valid == True:
        word2 = get_all_words(board2)
        if word1[1] == word2[1]:
            for i in range (len(word1[0])):
                if word1[0][i] in word2[0]:
                    word2[0].remove(word1[0][i])
            for k in word2[0]:
                for j in k: 
                    score = score + get_value(j)
            if len(tiles) >= 7:
              score = score + 50
        else:
          score = -1
          board = copyboard
    else:
        score = -1
        board = copyboard 
    return score
def best_play(tiles,board):
    copyboard = copy_board(board)
    play_list = []
    score = 0
    down = 0
    for i in range(15):
        for j in range (15):
              valid, board2 = place_tiles(i,j,0,tiles,board)
              if valid == True:
                  score = play(i,j,0,tiles,board)
                  if score > 0:
                      play_list.append([score,i,j,0])
                      score = 0
              score = 0
              valid, board2 = place_tiles(i,j,1,tiles,board)
              if valid == True:
                  score = play(i,j,1,tiles,board)
                  if score > 0:
                      play_list.append([score,i,j,1])
                      score = 0
              score = 0
    if play_list == []:
        play_list = [[-1,-1,-1,-1]]
    play_list.sort()
    ans = play_list[-1]
    max_score = play_list[-1][0]
    for i in play_list:
      if i[0] == max_score:
        if i[1] < ans[1]:
          ans = i
        elif i[1] == ans[1]:
          if i[2] < ans[2]:
            ans = i  
          elif i[2] == ans[2]:
            if i[3] < ans[3]:
              ans = i 
    return ans

00033: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1548, 'const': 501, 'code+const': 2049}
check_import({'allowable': ['math']}): none
def get_horizontal_words(i,board,start, end, p):
  hword = ""
  for j in range(start,end,p) :
    if board[i][j] != "" :
      hword += board[i][j]
    else:
      return hword
  return hword
def get_vertical_words(j,board,start, end, p):
  vword = ""
  for i in range(start,end,p) :
    if board[i][j] != "" :
        vword += board[i][j]
    else:
        return vword
  return vword
def get_all_words(board):
    words = []
    valid_words = []
    invalid_words = []
    for i in range(15) :
      hword = ""
      for j in range(15) :
        if board[i][j] != "" :
          hword += board[i][j]
        else:
          if len(hword) > 1:
            words.append(hword)
          hword = ""
      if len(hword) > 1:
        words.append(hword)
    for j in range(15):
      vword = ""
      for i in range(15) :
        if board[i][j] != "" :
          vword += board[i][j]
        else:
          if len(vword) > 1:
            words.append(vword)
          vword = ""
      if len(vword) > 1:
        words.append(vword)    
    for w in words :
      if is_valid(w) :
        valid_words.append(w)
      else :
        invalid_words.append(w)
    valid_words.sort()
    invalid_words.sort()
    return [valid_words,invalid_words]
def get_play(board, new_board):
    isVertical = 0
    row,column = 0,0
    add_word   = ""
    found = False
    for i in range(len(board)) :
      for j in range(len(board[i])) :
        if board[i][j] != new_board[i][j] :
          row,column = i,j
          for iv in range(i+1,15) :
            if board[iv][j].upper() != new_board[iv][j].upper() :
              isVertical = 1
          found = True
          break
      if found :
        break
    if isVertical:
      for i in range(row,15):
        if board[i][column] != new_board[i][column] :
          add_word += new_board[i][column]
    else:
      for j in range(column,15):
        if board[row][j] != new_board[row][j] :
          add_word += new_board[row][j]
    return [row,column,isVertical,add_word]
def play(row,col,down,tiles,board):
    score = 0
    words = []
    valid,new_board = place_tiles(row,col,down,tiles,board)
    if down and valid:  
      for i in range(row,15):
        if board[i][col] !=  new_board[i][col]:
          word = get_horizontal_words(i,new_board,col-1, -1, -1)[::-1] + get_horizontal_words(i,new_board,col, 15, 1)
          if len(word) > 1:
            words.append(word)
      word = get_vertical_words(col,new_board,row-1,-1,-1)[::-1] + get_vertical_words(col,new_board,row,15,1)
      if len(word) > 1:
          words.append(word)
    elif valid :
      for j in range(col,15):
        if board[row][j] !=  new_board[row][j]:
          word = "".join(get_vertical_words(j,new_board,row-1,-1,-1))[::-1] + get_vertical_words(j,new_board,row,15,1)
          if len(word) > 1:
            words.append(word)
      word = get_horizontal_words(row,new_board,col-1,-1,-1)[::-1] + get_horizontal_words(row,new_board,col,15,1)
      if len(word) > 1:
          words.append(word)
    else:
      return -1
    for ws in words:
      if is_valid(ws) :
        for w in ws:
          score += get_value(w)
      else:
        return -1
    if len(tiles) >= 7:
      score += 50
    if score > 0:
      return score
    else:
      return -1
def best_play(tiles,board):
    maxscore,maxi,maxj,maxdown = -1,-1,-1,-1
    for i in range(15):
      for j in range(15):
        valid,new_board = place_tiles(i,j,0,tiles,board)
        if valid :
          score_horizon = play(i,j,0,tiles,board)
          if score_horizon > maxscore:
            maxscore = score_horizon
            maxi = i
            maxj = j
            maxdown = 0
        valid,new_board = place_tiles(i,j,-1,tiles,board)
        if valid : 
          score_vertical = play(i,j,1,tiles,board)
          if score_vertical > maxscore:
            maxscore = score_vertical
            maxi = i
            maxj = j
            maxdown = 1
    return [maxscore,maxi,maxj,maxdown]

00034: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 15, 24, 17, 85, 012]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 1827, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 120, 1426, -1]
test_play_150.0
[2839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 82, 63, 10], [645, 43, 24, 01],
 [-19, -16, -1, -10], [7, 64, 52, 01], [911, 20, 1, 0], [922, 93, 18, 1]]
test_best_play_40.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 93, 13, 10], [18, 64, 140, 10], [146, 85, 12, 10]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1328, 'const': 425, 'code+const': 1753}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    t = []
    f = []
    x = []
    for i in board:
      b = ''
      for e in range(len(i)):
        if 'A' <= i[e] <= 'Z':
          b += i[e]
        else: b += ' '
      q = b.split(' ')
      for z in q:
        if is_valid(z) == True:
          t.append(z)
        elif is_valid(z) == False and len(z)>1:
          f.append(z)
    for i in range(len(board[0])):
      c = ''
      for e in board:
        if 'A' <= e[i] <= 'Z':
          c += e[i]
        else: c += ' '
      w = c.split(' ')
      for v in w:
        if is_valid(v) == True:
          t.append(v)
        elif is_valid(v) == False and len(v)>1:
          f.append(v)   
    t.sort()
    f.sort()
    x.append(t)
    x.append(f)
    return x 
def get_play(board, new_board):
    a = []
    r = 0
    for i in range(len(board)):
      b = ''
      c = []
      for e in range(len(board[i])):
        if board[i][e] != new_board[i][e]:
          b += new_board[i][e]
          c.append(i)
          c.append(e)
          r +=1
      if len(b) > 1:
        a.append(c[0])
        a.append(c[1])
        a.append(0)
        a.append(b)
      elif len(b) == 1 and r == 1:
        a.append(c[0])
        a.append(c[1])
        a.append(0)
        a.append(b)
    for i in range(len(board[0])):
      d = ''
      f = []
      for e in range(len(board)):
        if board[e][i] != new_board[e][i]:
          d += new_board[e][i]
          f.append(e)
          f.append(i)
      if len(d) > 1:
        a.append(f[0])
        a.append(f[1])
        a.append(1)
        a.append(d)
    return a[-4:]
def play(row,col,down,tiles,board):
    a = place_tiles(row,col,down,tiles,board)[0]
    sc = 0
    if a == True:
      c = get_all_words(place_tiles(row,col,down,tiles,board)[1])
      d = get_all_words(board)
      f = ''
      for i in c[0]:
          if i not in d[0]:
            f += str(i)
      for i in f:
        sc += get_value(i)
      if len(tiles) >= 7:
        sc += 50
      if len(c[1]) >= 1 or len(c[0])==0:
        return -1
    elif a == False:
      return -1
    return sc 
def best_play(tiles,board):
    amax = -1
    b = -1
    c = -1
    d = -1
    for i in range(len(board)):
      for e in range(len(board[0])):
        a = play(i,e,1,tiles,board)
        if a > amax:
          amax = a
          b = i
          c = e
          d = 1
    for i in range(len(board)):
      for e in range(len(board[0])):
        a = play(i,e,0,tiles,board)
        if a > amax:
          amax = a
          b = i
          c = e
          d = 0
    return [amax,b,c,d]

00035: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 7, 7, 0], [69, 7, 6, 0], [69, 7, 5, 0], [69, 7, 4, 0], [69, 7, 3, 0], [69, 7, 2, 0], [69, 7, 1, 0], [-1, -1, -1, -1]]
[[69, 7, 1, 0], [69, 1, 7, 1]]
[([69, 1, 7, 1)]]
test_best_play_21.0
[[-1, -1, -1, -1]]
[[-1, -1, -1, -1], [-1, -1, -1, -1]]
[([-1, -1, -1, -1)]]
test_best_play_30.0
[[68, 7, 3, 0], [68, 7, 2, 0], [68, 7, 1, 0], [68, 7, 0, 0], [-1, -1, -1, -1]]
[[68, 7, 0, 0], [68, 0, 7, 1]]
[[87, 12, 0, 0], [-1, -1, -1, -1]]
[[87, 12, 0, 0], [-1, -1, -1, -1]]
[[-1, -1, -1, -1]]
[[79, 1, 12, 1], [-1, -1, -1, -1]]
[[59, 8, 0, 0], [59, 4, 0, 0], [59, 1, 0, 0], [-1, -1, -1, -1]]
[[59, 1, 0, 0], [-1, -1, -1, -1]]
[[11, 13, 9, 0], [11, 2, 3, 0], [6, 1, 9, 0], [5, 9, 5, 0], [5, 4, 5, 0], [5, 3, 10, 0], [-1, -1, -1, -1]]
[[11, 8, 6, 1], [11, 2, 3, 0]]
[[64, 4, 2, 0], [-1, -1, -1, -1]]
[[65, 3, 4, 1], [64, 4, 2, 0]]
[[19, 8, 1, 0], [19, 6, 1, 0], [-1, -1, -1, -1]]
[[19, 6, 1, 0], [-1, -1, -1, -1]]
[[7, 10, 5, 0], [7, 8, 0, 0], [-1, -1, -1, -1]]
[[7, 8, 0, 0], [7, 4, 2, 1]]
[[11, 0, 5, 0], [11, 0, 1, 0], [7, 8, 10, 0], [7, 8, 9, 0], [7, 6, 11, 0], [7, 6, 10, 0], [7, 5, 10, 0], [7, 5, 9, 0], [7, 2, 11, 0], [7, 2, 10, 0], [6, 9, 10, 0], [5, 1, 10, 0], [4, 10, 11, 0], [4, 10, 10, 0], [4, 8, 8, 0], [4, 7, 10, 0], [4, 7, 9, 0], [4, 3, 6, 0], [-1, -1, -1, -1]]
[[16, 0, 5, 1], [11 ...(more)
[([68, 0, 7, 1)], ([87, 12, 0, 0)], ([79, 1, 12, 1)], ([59, 1, 0, 0)], ([11, 2, 3, 0)], ([65, 3, 4, 1)],
 ([19, 6, 1, 0)], ([7, 4, 2, 1)], ([116, 0, 51, 1)0], ([22, 3, 8, 1)]]
test_best_play_40.0
[[71, 7, 4, 0], [71, 7, 3, 0], [71, 7, 2, 0], [71, 7, 1, 0], [71, 7, 0, 0], [-1, -1, -1, -1]]
[[71, 7, 0, 0], [71, 0, 7, 1]]
[[63, 10, 0, 0], [-1, -1, -1, -1]]
[[63, 10, 0, 0], [-1, -1, -1, -1]]
[[63, 1, 1, 0], [-1, -1, -1, -1]]
[[63, 1, 1, 0], [-1, -1, -1, -1]]
[[8, 6, 3, 0], [-1, -1, -1, -1]]
[[9, 7, 3, 1], [8, 6, 3, 0]]
[[19, 13, 0, 0], [-1, -1, -1, -1]]
[[19, 13, 0, 0], [-1, -1, -1, -1]]
[[72, 14, 4, 0], [-1, -1, -1, -1]]
[[72, 14, 4, 0], [-1, -1, -1, -1]]
[[17, 6, 6, 0], [-1, -1, -1, -1]]
[[17, 6, 6, 0], [-1, -1, -1, -1]]
[[8, 4, 3, 0], [8, 3, 3, 0], [-1, -1, -1, -1]]
[[8, 9, 13, 1], [8, 3, 3, 0]]
[[18, 4, 0, 0], [-1, -1, -1, -1]]
[[18, 4, 0, 0], [-1, -1, -1, -1]]
[[16, 5, 1, 0], [12, 0, 11, 0], [7, 8, 5, 0], [-1, -1, -1, -1]]
[[21, 8, 5, 1], [16, 5, 1, 0]]
[([71, 0, 7, 1)], ([63, 10, 0, 0)], ([63, 1, 1, 0)], ([9, 7, 3, 1)], ([19, 13, 0, 0)], ([72, 14, 4, 0)],
 ([17, 6, 6, 0)], ([8, 3, 3, 0)], ([18, 4, 0, 0)], (2[1, 86, 5, 1), 0]]
test_best_play_51.0
[[83, 7, 1, 0], [83, 7, 0, 0], [-1, -1, -1, -1]]
[[83, 7, 0, 0], [83, 0, 7, 1]]
[[62, 13, 0, 0], [-1, -1, -1, -1]]
[[62, 13, 0, 0], [-1, -1, -1, -1]]
[[58, 10, 8, 0], [58, 6, 8, 0], [58, 1, 8, 0], [-1, -1, -1, -1]]
[[58, 1, 8, 0], [-1, -1, -1, -1]]
[[10, 0, 1, 0], [9, 8, 3, 0], [-1, -1, -1, -1]]
[[10, 0, 1, 0], [-1, -1, -1, -1]]
[[-1, -1, -1, -1]]
[[68, 0, 11, 1], [-1, -1, -1, -1]]
[[6, 9, 3, 0], [6, 5, 3, 0], [-1, -1, -1, -1]]
[[24, 6, 8, 1], [6, 5, 3, 0]]
[[-1, -1, -1, -1]]
[[18, 8, 9, 1], [-1, -1, -1, -1]]
[[-1, -1, -1, -1]]
[[10, 1, 2, 1], [-1, -1, -1, -1]]
[[14, 3, 0, 0], [14, 2, 0, 0], [-1, -1, -1, -1]]
[[21, 5, 3, 1], [14, 2, 0, 0]]
[[26, 13, 10, 0], [-1, -1, -1, -1]]
[[27, 4, 4, 1], [26, 13, 10, 0]]
[([83, 0, 7, 1)], ([62, 13, 0, 0)], ([58, 1, 8, 0)], ([10, 0, 1, 0)], ([68, 0, 11, 1)], ([24, 6, 8, 1)],
 ([18, 8, 9, 1)], ([10, 1, 2, 1)], ([21, 5, 3, 1)], ([27, 4, 4, 1)]]
bytecount: {'code': 2720, 'const': 505, 'code+const': 3225}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    output = []
    output1 = []
    for row in range(0,15) :
        col = 0
        while col<15 :
            word = ''
            if board[row][col] != '' :
                while col<15 and board[row][col] != '' :
                    word += board[row][col]
                    col += 1
                if len(word) >= 2 and word in word_list :
                    output += [word]
                elif len(word) >= 2 :
                    output1 += [word]
            else :
                col += 1
    for col in range(0,15) :
        row = 0
        while row<15 :
            word = ''
            if board[row][col] != '' :
                while row<15 and board[row][col] != '' :
                    word += board[row][col]
                    row += 1
                if len(word) >= 2 and word in word_list :
                    output += [word]
                elif len(word) >= 2 :
                    output1 += [word]
            else :
                row += 1
    output.sort()
    output1.sort()
    return [output,output1]
def get_play(board, new_board):
    check = True
    for row in range(0,15) :
        if check == True :
            for col in range(0,15) :
                if board[row][col] != new_board[row][col] :
                    check = False
                    break
        else :
            row -= 1
            break
    word1 = ''
    row1 = row
    while row1<15 :
        if board[row1][col] == new_board[row1][col] :
            row1 +=1
            if row1<15 and new_board[row1][col] == '' :
                break                
        else :
            word1 += new_board[row1][col]
            row1 +=1
    word2 = ''
    col1 = col
    while col1<15 :
        if board[row][col1] == new_board[row][col1] :
            col1 +=1
            if col1<15 and new_board[row][col1] == '' :
                break                
        else :
            word2 += new_board[row][col1]
            col1 +=1
    if len(word1) > len(word2) :
        return [row,col,1,word1]
    elif len(word2) > len(word1) :
        return [row,col,0,word2]
    else :
        return [row,col,0,word1]
def play(row,col,down,tiles,board):
    new_board = place_tiles(row,col,down,tiles,board)[1]
    s = 0
    check = False
    if down :
        count = 0
        word = ''
        row3 = row
        col2 = col
        while row3<15 and new_board[row3][col2] != '' :
            while row3 >= 0 and new_board[row3][col2] != '' :
                row3 -= 1
            row3 += 1
            while row3<15 and new_board[row3][col2] != '' :
                word += new_board[row3][col2]
                row3 += 1
        if len(word) >= 2 :
            if word in word_list :
                for i in word :
                    s += letter_value[i.lower()]
                if len(tiles) >= 7 and check == False :
                    s += 50
                    check == True
            else :
                return -1
        row2 = row
        col3 = col
        word = ''
        while count < len(tiles) and row2<15 and new_board[row2][col3] != '' :
            if new_board[row2][col3] == tiles.upper()[count] :
                while col3 >= 0 and new_board[row2][col3] != '' :
                    col3 -= 1
                col3 += 1
                while col3<15 and new_board[row2][col3] != '' :
                    word += new_board[row2][col3]
                    col3 += 1
                if len(word) >= 2 :
                    if word in word_list :
                        for i in word :
                            s += letter_value[i.lower()]
                    else :
                        return -1
                count += 1
                row2 += 1
                word = ''
                col3 = col
            else :
                row2 += 1
    else :
        count = 0
        word = ''
        col2 = col
        row3 = row
        while col2<15 and new_board[row3][col2] != '' :
            while col2 >= 0 and new_board[row3][col2] != '' :
                col2 -= 1
            col2 += 1
            while col2<15 and new_board[row3][col2] != '' :
                word += new_board[row3][col2]
                col2 += 1
        if len(word) >= 2 :
            if word in word_list :
                for i in word :
                    s += letter_value[i.lower()]
                if len(tiles) >= 7 and check == False :
                    s += 50
            else :
                return -1
        col2 = col
        row3 = row
        word = ''
        while count < len(tiles) and col2<15 and new_board[row3][col2] != '' :
            if new_board[row3][col2] == tiles.upper()[count] :
                while row3 >= 0 and new_board[row3][col2] != '' :
                    row3 -= 1
                row3 += 1
                while row3<15 and new_board[row3][col2] != '' :
                    word += new_board[row3][col2]
                    row3 += 1
                if len(word) >= 2 :
                    if word in word_list :
                        for i in word :
                            s += letter_value[i.lower()]
                    else :
                        return -1
                count += 1
                col2 += 1
                word = ''
                row3 = row
            else :
                col2 += 1
    return s
def best_play(tiles,board):
    score_row = [[-1,-1,-1,-1]]
    score_col = [[-1,-1,-1,-1]]
    new_board = board
    for k in range(0,15) :
        for l in range(0,16-len(tiles)) :
            if place_tiles(k,l,0,tiles,new_board)[0] == True :
                if play(k,l,0,tiles,new_board) > 0 :
                    score_row.append([play(k,l,0,tiles,new_board),k,l,0])
    for l in range(0,15) :
        for k in range(0,16-len(tiles)) :
            if place_tiles(k,l,1,tiles,new_board)[0] == True :
                if play(k,l,1,tiles,new_board) > 0 :  
                    score_col.append([play(k,l,1,tiles,new_board),k,l,1])
    score_row.sort(reverse=True)
    print(score_row)
    new = [score_row[0]]
    for p in score_row :
        for i in range(0,3) :
            if p[i+1] < score_row[0][i+1] and p[0] >= score_row[0][0] :
                new.append(p)
        new.sort()
    score_row = new[0]
    score_col.sort(reverse=True)
    new = [score_col[0]]
    for p in score_col :
        for i in range(0,3) :
            if p[i+1] < score_col[0][i+1] and p[0] >= score_col[0][0] :
                new.append(p)
        new.sort()
    score_col = new[0]
    final_score = [score_row,score_col]
    final_score.sort(reverse=True)
    new = [final_score[0]]
    print(final_score)
    for p in final_score :
        for i in range(0,3) :
            if p[i+1] < final_score[0][i+1] and p[0] >= final_score[0][0] :
                new.append(p)
        new.sort()
    return new[0][0],new[0][1],new[0][2],new[0][3]

00036: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_10.0
[[[None], [None]]]
test_get_all_words_20.0
[[['TRANoneSPORTATIONS'], [None]]]
test_get_all_words_30.0
[[['ETERNoneALS', 'MUSKETEER'], [None]]]
test_get_all_words_40.0
[[['CONoneNERS', 'UNWITS', 'VILDE', 'ZOO'], [None'FEWZ']]]
test_get_all_words_50.0
[[['HELIOS', 'UNoneOBSERVANT'], ['LIAM', 'NoneOOOOO', 'ONIGIRI']]]
test_get_all_words_60.0
[[['FY', 'INoneFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], [None]]]
test_get_all_words_70.0
[[['AT', 'ES', 'GI', 'INone', 'MANGIER', 'ME', 'NA', 'RETAINS'], [None]]]
test_get_all_words_80.0
[[['ATT', 'EH', 'FEH', 'FERNone', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  [None]]]
test_get_all_words_90.0
[[['AD', 'AD', 'AD', 'BRAINoneWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  [None]]]
test_get_all_words_100.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INoneTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  [None'JOJUOLOOMJYOOI', 'RO']]]
test_get_play_10.0
[[07, 06, 0, 'ICE'], [07, 04, 0, 'JUD'], [04, 05, 01, 'INFSIVE'], [06, 08, 0, 'M']]
test_get_play_20.0
[[01, 07, 01, 'MALEATE'], [05, 06, 01, 'JURY'], [05, 08, 01, 'REWTH'], [01, 08, 0, 'OLEHUNT'],
 [02, 014, 01, 'RAVISES'], [0, 10, 0, 'TOGA'],
 [05, 013, 01, 'POZ'], [05, 05, 01, 'ABAND'],
 [02, 10, 0, 'COYE'], [10, 02, 0, 'FOOS']]
test_get_play_30.0
[[06, 06, 01, 'XUNT']]
test_get_play_40.0
[[07, 01, 0, 'INHERITANCE']]
test_get_play_50.0
[[06, 09, 01, 'CAT']]
test_get_play_60.0
[[06, 07, 01, 'CT']]
test_get_play_70.0
[[07, 03, 0, 'COMDER']]
test_get_play_80.0
[[06, 06, 0, 'AT']]
test_get_play_90.0
[[06, 07, 0, 'M']]
test_get_play_100.0
[[0, 07, 01, 'HEPATICS'], [01, 03, 0, 'MAILS'], [07, 06, 01, 'ARREAR'], [02, 0, 0, 'EASIED'],
 [013, 06, 0, 'SAHIWAL'], [03, 013, 01, 'MICROLOGIES'],
 [014, 07, 0, 'GAS'], [07, 05, 01, 'GOORY'],
 [10, 07, 0, 'SHIPS'], [02, 011, 01, 'MALEFICE'], [0, 10, 01, 'DOOLAN'], [04, 09, 01, 'POGEY'],
 [0, 014, 01, 'AGROS'], [03, 02, 01, 'TONIEST'], [09, 01, 01, 'SLICES'], [04, 0, 0, 'CRONY'],
 [07, 014, 01, 'DIXIT'], [011, 04, 01, 'PINS'],
 [05, 0, 01, 'ARED'], [0, 01, 0, 'GRAFT'], [012, 09, 0, 'MO'],
 [06, 04, 01, 'CAB'], [011, 012, 01, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_30.0
[-14]
test_play_40.0
[-14, -21]
test_play_50.0
[-160, -172]
test_play_60.0
[-160, -1]
test_play_70.0
[-163, -14]
test_play_80.0
[-162]
test_play_90.0
[-11, -15, -124, -17, -185, -12]
test_play_100.0
[-19, -133, -136, -18, -12, -173, -165, -17, -174, -16]
test_play_110.0
[-167, -61, -128, -11, -13, -185, -11, -12, -17, -125, -17, -14, -21, -132, -12, -15, -16, -168, -16, -13, -10, -127, -128]
test_play_120.0
[-11]
test_play_130.0
[-19]
test_play_140.0
[-18, -120, -126, -1]
test_play_150.0
[-139]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 498, 'const': 202, 'code+const': 700}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    Words=[[],[]]
    for i in range(15):
        Words+=''
        for j in range(15):
            if board[i][j]!='':
                Words+=board[i][j]
            else:
                Words+=''
            for j in range(15):
                Words+=''
                for i in range(15):
                    if board[i][j]!='':
                        Words+=board[i][j]
                    else:
                        Words+=''
    words=[[],[]]
    W0=str(words[0]).split()
    W1=str(words[1]).split()
    for w in W0:
        if len(w)>=2:
            if is_valid(w):
                words[0]+=w
    for w in W1:
        if len(w)>=2:
            if not is_valid(w):
                words[1]+=w
    return [[words[0].sort()],[words[1].sort()]]
def get_play(board, new_board):
    w=""
    for i in range(15):
      for j in range(15):
        if board[i][j]!=new_board[i][j]:
          w+=new_board[i][j]
    return [0,0,0,""]
def play(row,col,down,tiles,board):
    return -1
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00037: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, -16, -168, 6, -13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_40.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [-172, -14, -14, -10],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1240, 'const': 336, 'code+const': 1576}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    boards = copy_board(board)
    word = ''
    valid=[]
    invalid=[]
    for i in range(15):
      if i>0:
          if word != ''  and is_valid(word)==True :
              valid.append(word)
          elif word != '' and len(word) > 1 and is_valid(word)==False:
              invalid.append(word)
      word=''
      for j in range(15):
          if boards[i][j] != '' :
              word+=str(boards[i][j]).upper()
          else:
              if word != '' and len(word) != 1:
                  if is_valid(word) == True:
                      valid.append(word)
                  else:
                      invalid.append(word)
              word=''
    if is_valid(word) == True:
      valid.append(word)
    word=''
    for k in range(15):
      if k>0:
          if word != ''  and is_valid(word)==True :
              valid.append(word)
          elif word != '' and len(word) > 1 and is_valid(word)==False:
              invalid.append(word)
      word=''
      for m in boards:
        if m[k] != '':
          word+=str(m[k]).upper()
        else:
          if word != '' and len(word) != 1:
            if is_valid(word) == True :
              valid.append(word)
            else:
              invalid.append(word)
          word=''
    if is_valid(word) == True:
      valid.append(word)
    elif is_valid(word) == False and word!= '':
        invalid.append(word)
    valid.sort()
    invalid.sort()            
    return [valid,invalid] 
def get_play(board, new_board):
    old_copy = copy_board(board)
    new_copy = copy_board(new_board)
    row=[]
    col=[]
    word = ''
    down = 0 
    first_row = 0
    first_col = 0
    for i in range(15):
        for j in range(15):
            if new_copy[i][j] != '':
                if old_copy[i][j] != new_copy[i][j]:
                    row.append(i)
                    col.append(j)
                    word += new_copy[i][j]
    if len(row) == 1 or row[0]==row[1]:
        down = 0
    elif len(col) == 1 or col[0]==col[1]:
        down = 1
    return [row[0],col[0],down,word]
def play(row,col,down,tiles,board):
    old_word = get_all_words(board)[0]
    point = 0
    valid,new_board = place_tiles(row,col,down,tiles,board)
    new_word = get_all_words(new_board)[0]
    for old in old_word :
        if old in new_word :
          new_word.remove(old)
    if new_word == [] or len(get_all_words(new_board)[1]) != 0 :
      return -1
    if valid and len(get_all_words(new_board)[0]) != 0  :
        if len(tiles) >=7 :
          point+=50
        for new in new_word :
            for letter in new :
                   point += get_value(letter)
        return point
    return -1
def best_play(tiles,board):
    all_score = []
    for down in range(2):
        for col in range(15):
            for row in range(15):
                score = play(row,col,down,tiles,board)
                if score != -1 :
                    all_score.append([-score,row,col,down])
    if all_score == []:
        return [-1,-1,-1,-1]
    all_score.sort()
    most_score = [-all_score[0][0]] + all_score[0][1:]
    return most_score

00038: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_10.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_get_all_words_20.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_get_all_words_30.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_get_all_words_40.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_get_all_words_50.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_get_all_words_60.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_get_all_words_70.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_get_all_words_80.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_get_all_words_90.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_get_all_words_100.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_get_play_10.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_get_play_20.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_get_play_30.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_get_play_40.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_get_play_50.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_get_play_60.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_get_play_70.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_get_play_80.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_get_play_90.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_get_play_100.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_play_10.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_play_20.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_play_30.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_play_40.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_play_50.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_play_60.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_play_70.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_play_80.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_play_90.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_play_100.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_play_110.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_play_120.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_play_130.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_play_140.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_play_150.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_best_play_10.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_best_play_20.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_best_play_30.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_best_play_40.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
test_best_play_50.0SyntaxError(\'invalid syntax\', (\'<string>\', 431, 46, " if board[i][j] != \'\' and board[i][j+1] = \'\'\\n"))
[]
bytecount: {}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  words = []
  for i in range(len(board)): 
    word_row = ''
    for j in range(len(board[0])):
      if board[i][j] != '' and board[i][j+1] != '':
        word_row += board[i][j]
      if board[i][j] != '' and board[i][j+1] = ''
        word_row += board[i][j]
    word_row.upper()
    words.append(word_row)
  for i in range(len(board)-1): 
    word_col = ''
    for j in range(len(board[0])):
      if board[i][j] != '' and board[i+1][j] != '':
        word_col += board[i][j]
      if 
def get_play(board, new_board):
    return [0,0,0,""]
def play(row,col,down,tiles,board):
    return -1
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00039: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0KeyError(2)
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1498, 'const': 304, 'code+const': 1802}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  k =[[],[]]
  for i in range(len(board)):      
    check = ""
    for j in range(len(board[0])):
      if j < len(board[0])-1 :  
         if board[i][j] != "":
            check+= board[i][j][0]
         if len(check)>=2 and board[i][j+1] == "":
           if is_valid(check):
                    k[0].append(check)
           else:
                    k[1].append(check)
         if board[i][j+1] == "":
            check = "" 
      else:
          if board[i][j] != "":
            check+= board[i][j][0]
          if len(check)>=2:
            if is_valid(check):
                    k[0].append(check)
            else:
                    k[1].append(check)
  for i in range(len(board[0])):      
    check = ""
    for j in range(len(board)):
      if j < len(board)-1 :  
         if board[j][i] != "":
            check+= board[j][i][0]
         if len(check)>=2 and board[j+1][i] == "":
           if is_valid(check):
                    k[0].append(check)
           else:
                    k[1].append(check)
           check = ""
         if board[j+1][i] == "":
            check = "" 
      else: 
          if board[j][i] != "":
            check+= board[j][i][0]
          if len(check)>=2 :
            if is_valid(check):
                    k[0].append(check)
            else:
                    k[1].append(check)
    k[0] = sorted(k[0])
    k[1] = sorted(k[1])
  return k 
def get_play(board, new_board):
  k = ["","",0,""]
  dict_ij = {}
  for i in range(len(board)):
    for j in range(len(board[0])):
      if board[i][j] ==  new_board[i][j]:
        dict_ij[i]=[]
        dict_ij[j]=[]
      break
  for i in range(len(board)):
    for j in range(len(board[0])): 
      if board[i][j] == "" and new_board[i][j] != "" :
        k[3]+= new_board[i][j]
        if i in dict_ij:
          dict_ij[i].append(j)
        else:
          dict_ij[j].append(i)
  p = max(len(dict_ij[e]) for e in dict_ij )
  h = []
  for e in dict_ij:
    h.append([e,dict_ij[e]])
  for x1,x2 in sorted(h) :
    if len(x2) == p:
       k[0] = x1
       k[1] = min(x2)
       break
  c = 0
  for x1,x2 in h:
    if x2 != [] :
      c+=1
  if c>1 :
    k[2] = 1 
  return k
def play(row,col,down,tiles,board):
    score = 0
    k1,k2 = place_tiles(row,col,down,tiles,board)
    word1,word2 = get_all_words(k2)
    old_word1,old_word2 = get_all_words(board) 
    if not k1 or word2 != []:
      return -1
    for e in word1:
      if e not in old_word1:
        for w in e:
          score+= get_value(w)
      else:
        old_word1.remove(e)
    if len(tiles)>= 7:
          score+=50
    return score
def best_play(tiles,board):
    k = []
    for r in range(15):
      for c in range(15):
        for d in range(2):
          if play(r,c,d,tiles,board) != -1 :
            k.append([play(r,c,d,tiles,board),r,c,d])
          else:
            k.append([-1,-1,-1,-1])
    k.sort()
    for e in k:
      if e[0]== k[-1][0]:
        return e
    return [-1,-1,-1,-1]

00040: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1228, 'const': 432, 'code+const': 1660}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  rows = []
  for row in range(15):
    word = " "
    for col in range(15):
      if len(board[row][col]) != 0:
        word += board[row][col]
      else:
        word += " "
    rows.append(word)
  colum = ["", "", "","","","","","","","","","","","",""]
  for row in range(15):
    for col in range(15):
      if len(board[row][col]) != 0:
        colum[col] += board[row][col]
      else:
        colum[col] += " "
  now = rows + colum
  YES = []
  NO = []
  for lol in now:
    for word in lol.strip().split():
      if is_valid(word):
        YES.append(word)
      elif len(word) > 1:
        NO.append(word)
  YES.sort()
  NO.sort()
  get = [YES, NO]
  return get
def get_play(board, new_board):
  rows = []
  for row in range(15):
    word = [[],[],0,""]
    for col in range(15):
      if new_board[row][col] != board[row][col]:
        word[0].append(row)
        word[1].append(col)
        word[3] += new_board[row][col]
    rows.append(word)
  colum = []
  for n in range(15):
    colum.append([[],[],1,""])
  for row in range(15):
    for col in range(15):
      if new_board[row][col] != board[row][col]:
        colum[col][0].append(row)
        colum[col][1].append(col)
        colum[col][3] += new_board[row][col]
  now = colum + rows
  for row,col,down,tiles in now:
    if len(tiles) >= 2:
      data = [row[0],col[0],down,tiles]
      return data
    elif len(tiles) == 1 and down == 0:
      data = [row[0],col[0],down,tiles]
      return data
def play(row,col,down,tiles,board):
  Cboard = copy_board(board)
  YES_1 = get_all_words(Cboard)[0]
  check , board2 = place_tiles(row,col,down,tiles,Cboard)
  if check:
    Cboard = board2
    YES_2, NO_2 = get_all_words(Cboard)
    if len(NO_2) == 0:
      scores = 0
      if len(tiles) > 6:
        scores += 50
      for data in YES_1:
        if data in YES_2:
          YES_2.remove(data)
      for word in YES_2:
        for alp in word:
          scores += get_value(alp)
      return scores
    return -1
  return -1
def best_play(tiles,board):
  best = [[play(row,col,down,tiles,board), 0-row, 0-col, 0-down] for row in range(15) for col in range(15) for down in range(2) if play(row,col,down,tiles,board) != -1]
  if len(best) > 0:
    best.sort()
    best = best[-1]
    score, row, col, down = best[0], 0-best[1], 0-best[2], 0-best[3]
    return [score, row, col, down]
  return [-1]*4

00041: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 990, 'const': 462, 'code+const': 1452}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    ans = [[],[]]
    all = []
    x0,y0,word1,word2 = '','','',''
    for a in range(15):
        for b in range(15):
            x = board[a][b]
            y = board[b][a]
            if x == '' and x0 == '' : pass
            elif x == '' : 
                all.append(word1)
                word1 = ''
            elif x in alpha: word1 += x
            if y == '' and y0 == '' : pass
            elif y == '' : 
                all.append(word2)
                word2 = ''
            elif y in alpha: word2 += y
            x0,y0 = x,y 
        if len(word1) > 1: all.append(word1)
        if len(word2) > 1: all.append(word2)
        word1,word2 = '',''
    for word in all:
        if len(word) > 1: 
            if is_valid(word): ans[0].append(word)
            else: ans[1].append(word)
    ans[0].sort()
    ans[1].sort()
    return ans
def get_play(board, new_board):
    check = True
    for a in range(15):
        for b in range(15):
            x1 = board[a][b]
            x2 = new_board[a][b]
            if x1 != x2 : 
                check = False
                break
        if check == False : break
    ans1,ans2 = '',''
    for i in range(15):
        if board[i][b] != new_board[i][b] : ans1 += new_board[i][b]
        if board[a][i] != new_board[a][i] : ans2 += new_board[a][i]
    if len(ans1) > 1 : return [a,b,1,ans1]
    else : return [a,b,0,ans2]
def play(row,col,down,tiles,board):
    new_board = place_tiles(row,col,down,tiles,board)[1]
    a = get_all_words(board)
    b = get_all_words(new_board)
    point = 0
    all = []
    if len(b[1]) > len(a[1]): return -1
    else :
        for word in b[0]:
            if word in a[0]: a[0].remove(word)
            else: all.append(word)
    for word in all :
        for letter in word:
            point += get_value(letter)
    if point > 0 and len(tiles) >= 7: point += 50
    return point
def best_play(tiles,board):
    ans = [-1,-1,-1,-1]
    Max = 0
    for a in range(15):
        for b in range(15):
            point0 = play(a,b,0,tiles,board)
            point1 = play(a,b,1,tiles,board)
            if point0 > Max or point1 > Max :
                if point0 >= point1 : 
                    ans = [point0,a,b,0]
                    Max = point0
                else : 
                    ans = [point1,a,b,1]
                    Max = point1
    return ans

00042: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1106, 'const': 312, 'code+const': 1418}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  word_row=[]
  word_col=[]
  word=[]
  s=''
  valid_words=[]
  invalid_words=[]
  ans=[]
  for i in range(15): 
    a=''
    for j in range(15): 
      if board[i][j]!='':
        a+=board[i][j]
      if board[i][j]=='':
        a+=" "
    word_row+=a.split()
  for i in range(15):
    a=''
    for j in range(15):
      if board[j][i]!='':
        a+=board[j][i]
      if board[j][i]=='':
        a+=" "
    word_col+=a.split()
  for i in word_row:
    if is_valid(i) == True:
      valid_words.append(i)
      valid_words.sort()
    elif len(i)!= 1:
      invalid_words.append(i)
      invalid_words.sort()
  for i in word_col:
    if is_valid(i) == True:
      valid_words.append(i)
      valid_words.sort()
    elif len(i)!= 1:
      invalid_words.append(i)
      invalid_words.sort()
  ans=[valid_words,invalid_words]
  return ans
def get_play(board, new_board):
  weirds=''
  ans=[]
  position=[]
  for i in range(15): 
    for j in range(15): 
      if board[i][j] != new_board[i][j]:
        weirds+=new_board[i][j]
        position.append([i,j])
  if len(weirds)==1:
    ans.append(position[0][0])
    ans.append(position[0][1])
    ans.append(0)
    ans.append(weirds)
  elif position[0][0]==position[1][0]: 
    ans.append(position[0][0])
    ans.append(position[0][1])
    ans.append(0)
    ans.append(weirds)
  elif position[0][1]==position[1][1]: 
    ans.append(position[0][0])
    ans.append(position[0][1])
    ans.append(1)
    ans.append(weirds)
  return ans
def play(row,col,down,tiles,board):
  valid,newboard=place_tiles(row,col,down,tiles,board)
  a=[]
  if valid==True:
    validword_1,invalidword_1=get_all_words(newboard)
    validword_2,invalidword_2=get_all_words(board)
    for i in validword_1:
      if i not in validword_2:
        a.append(i)
      else:
        validword_2.remove(i)
    value=0
    for i in a:
      for j in i:
        value+=get_value(j)
    if invalidword_1!=[]:
      return -1
    if len(tiles)>=7:
      value+=50
    return value
  return -1
def best_play(tiles,board):
  point_0=-1
  a=-1
  b=-1
  c=-1
  for i in range(15):
    for j in range(15):
      for k in range(2):
        points=play(i,j,k,tiles,board)
        if points>point_0:
          point_0=points
          a=i
          b=j
          c=k  
  return [point_0,a,b,c]

00043: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 01, 'TONIEST'], [9, 1, 01, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1296, 'const': 419, 'code+const': 1715}
check_import({'allowable': ['math']}): none
def raverse_board(board):
    ans = make_board()
    for i in range(15) :
        for j in range(15) :
            if board[i][j] != '':
                ans[j][i] = board[i][j]    
    return ans
def find_word(board) :
    ans = [[],[]]
    for i in range(15) :
        ended = 0
        for j in range(15) :
            if board[i][j] != '' :
                if '' in board[i][j:] :
                    end = board[i].index('',j)
                    if ended  < end :
                        x = ''
                        for ch in board[i][j:end] :
                            x+=ch
                        if is_valid(x) == True :
                            ans[0].append(x)
                        else :
                            if len(x) > 1 :
                                ans[1].append(x)
                        ended = end
                else :
                  x = ''
                  for ch in board[i][j:] :
                      x+=ch
                  if is_valid(x) == True :
                      ans[0].append(x)
                  else :
                      if len(x) > 1 :
                          ans[1].append(x)
                  break
    return ans
def get_all_words(board):
    normal = find_word(board)
    rev = find_word(raverse_board(board))
    for ch in rev[0] :
        normal[0].append(ch)
    for ch2 in rev[1] :
        normal[1].append(ch2)
    normal[0].sort()
    normal[1].sort()
    return normal
def get_play(board, new_board):
    letters = ''
    for i in range(15) :
      for j in range(15) :
          if new_board[i][j] != board[i][j] :
            if len(letters) == 0 :
              letters += new_board[i][j]
              row = i
              col = j
            else :
               letters += new_board[i][j]
    for ch in letters :
        if ch in new_board[row][col:] :
         down = 0
        else :
          down = 1
    return [row,col,down,letters]
def play(row,col,down,tiles,board):
    valid,new_board = place_tiles(row,col,down,tiles,board)
    if valid == False : 
      return -1
    score = 0
    if len(tiles) >= 7 :
      score = 50
    if get_all_words(new_board)[1] != get_all_words(board)[1] :
      return -1 
    allword = get_all_words(new_board)[0]
    ans = [word for word in allword]
    alloldword = get_all_words(board)[0]
    for word in allword :
      for oldword in alloldword :
          if word == oldword :          
            ans.remove(word)
            alloldword.remove(oldword)
    for e in ans :
      for ch in e :
        score += get_value(ch)
    return score
def best_play(tiles,board):
    bestscore = 0
    for i in range(15) :
      for j in range(15) :
        if place_tiles(i,j,0,tiles,board)[0] == True :
          score = play(i,j,0,tiles,board)
          if score > bestscore :
            bestscore = score
        if place_tiles(i,j,1,tiles,board)[0] == True :
          score = play(i,j,1,tiles,board)
          if score > bestscore :
            bestscore = score
    for i in range(15) :
      for j in range(15) :
        if place_tiles(i,j,0,tiles,board)[0] == True :
          score = play(i,j,0,tiles,board)
          if score == bestscore :
            return [score,i,j,0]
        if place_tiles(i,j,1,tiles,board)[0] == True :
          score = play(i,j,1,tiles,board)
          if score == bestscore :
            return [score,i,j,1]
    return [-1,-1,-1,-1]

00044: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 972, 'const': 307, 'code+const': 1279}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  r=copy_board(board)
  iv=[]
  v=[]
  for i in range(len(board)):
    w=""
    for j in range(len(board[i])):
      r[j][i]=board[i][j]
      a=board[i][j].upper()
      if a == "":
        if len(w)>=2:
          if is_valid(w):
            v.append(w)
          else:
            iv.append(w)
        w=""
      elif a in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
        w+=a
    if len(w)>=2:
        if is_valid(w):
          v.append(w)
        else:
          iv.append(w)
  for l in r:
    w=""
    for a in l:
      a=a.upper()
      if a == "":
        if len(w)>=2:
          if is_valid(w):
            v.append(w)
          else:
            iv.append(w)
        w=""
      elif a in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
        w+=a
    if len(w)>=2:
      if is_valid(w):
        v.append(w)
      else:
        iv.append(w)
  v.sort()
  iv.sort()
  s=[v,iv]
  return s
def get_play(board, new_board):
  n=""
  b=[]
  a=[]
  s=[]
  for i in range(len(board)):
    for j in range(len(board[i])):
      if new_board[i][j] != board[i][j] and new_board[i][j] != "":
        if i not in a:
          a.append(i)
        if j not in b:
          b.append(j)
        n+=new_board[i][j]
  if len(a) > 1:
    s=[a[0],b[0],1,n]
  else:
    s=[a[0],b[0],0,n]
  return s
def play(row,col,down,tiles,board):
  s=0
  d=[]
  b=place_tiles(row,col,down,tiles,board)
  if b[0]:
    new_board=b[1]
    l=get_all_words(new_board)
    p=get_all_words(board)
    for v in p[0]:
      if v in l[0]:
        l[0].remove(v)
    if l[1] == []:
      for w in l[0]:
        for letter in w:
          s+=get_value(letter) 
      if len(tiles)>=7:
        s+=50
    else:
      s=-1 
  else:
    s=-1
  return s
def best_play(tiles,board):
  p=[-1,-1,-1,-1]
  max_s=0
  for r in range(15):
    for c in range(15):
      for d in range(2):
        s=play(r,c,d,tiles,board)
        if s>max_s:
          max_s=s
          p=[s,r,c,d]
  return p

00045: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 938, 'const': 389, 'code+const': 1327}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words=[]
    invalid_words=[]
    for row in range(15): 
        readed = ''
        for col in range(15):
            if 'A'<=(board[row][col]).upper()<='Z':
                readed+=(board[row][col]).upper()
            else:
                readed+=' '
        for wor in readed.split():
            if is_valid(wor):
                valid_words.append(wor)
            elif len(wor)>1:
                invalid_words.append(wor)
    for col in range(15): 
        readed = ''
        for row in range(15):
            if 'A'<=(board[row][col]).upper()<='Z':
                readed+=(board[row][col]).upper()
            else:
                readed+=' '
        for wor in readed.split():
            if is_valid(wor):
                valid_words.append(wor)
            elif len(wor)>1:
                invalid_words.append(wor)
    return [sorted(valid_words),sorted(invalid_words)]
def get_play(board, new_board):
    dif=''
    rows=[]
    cols=[]
    for row in range(15):
        for col in range(15):
            if board[row][col]!=new_board[row][col]:
                dif+=new_board[row][col]
                rows.append(row)
                cols.append(col)
    if rows[0]==rows[-1]:
        tiles=0
    else:
        tiles=1               
    return [rows[0],cols[0],tiles,dif]
def play(row,col,down,tiles,board):
    valid, new_board=place_tiles(row,col,down,tiles,board)
    new_point=0
    if len(tiles)>=7:
        new_point+=50
    if valid:
        old_valid_words,old_invalid_words=get_all_words(board)
        new_valid_words,new_invalid_words=get_all_words(new_board)
        if new_valid_words == old_valid_words or new_invalid_words:
            return -1
        else:
            for inter in old_valid_words:
                if inter in new_valid_words:
                    new_valid_words.remove(inter)
            for nn in ''.join(new_valid_words):
                new_point+=get_value(nn)
            if new_point==0:
                return -1
            return new_point
    return -1
def best_play(tiles,board):
    old_board=copy_board(board)
    d=[]
    for row in range(15):
        for col in range(15):
            for down in range(2):
                if place_tiles(row,col,down,tiles,old_board)[0]:
                    if play(row,col,down,tiles,old_board)!=-1:
                        d.append([(-1*int(play(row,col,down,tiles,old_board))),row,col,down])
    if d==[]:
        return [-1,-1,-1,-1]
    else :
        [pla,row,col,down]=(sorted(d))[0]       
        return [abs(pla),row,col,down]

00046: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 950, 'const': 430, 'code+const': 1380}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    words=[]
    b=[]
    for i in range(15):
        b.append([])
        for j in range(15):
            b[i].append(board[j][i])
    for row in board:
        words+=''.join([e if e!='' else ' ' for e in row]).split()
    for col in b:
        words+=''.join([e if e!='' else ' ' for e in col]).split()
    words = sorted([e for e in words if len(e)>1])
    valid=[e for e in words if is_valid(e)]
    invalid=[e for e in words if e not in valid]
    return [valid,invalid]
def get_play(board, new_board):
    word=''
    row=-1
    col=-1
    for i in range(15):
        for j in range(15):
            if board[i][j]!=new_board[i][j]:
                row=i
                col=j
                break
        if row!=-1 and col!=-1:
            break
    for i in range(15):
        for j in range(15):
            if board[i][j]!=new_board[i][j]:
                word+=new_board[i][j]
                down=1 if row!=i else 0
    return [row,col,down,word]
def play(row,col,down,tiles,board):
    score=0
    check,newboard=place_tiles(row,col,down,tiles,board)
    word1=get_all_words(board)[0]
    word=[]
    if check==False:
        return -1
    if get_all_words(newboard)[1]!=[]:
        return -1
    word2=get_all_words(newboard)[0]
    for e in word1:
        for i in range(len(word2)):
            if e==word2[i]:
                word2[i]='-'
                break
    for e in word2:
        if e!='-':
            word.append(e)
    for e in word:
        for t in e:
            score+=get_value(t)
    if len(tiles)>=7:
        score+=50
    return score
def best_play(tiles,board):
    maxscore=-1
    best=[-1,-1,-1,-1]
    for row in range(15):
        for col in range(15):
            for down in range(2):
                score=play(row,col,down,tiles,board)
                if score>maxscore:
                    maxscore=score
                    best=[maxscore,row,col,down]
    return best

00047: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1280, 'const': 360, 'code+const': 1640}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    words = [[],[]]
    for row in board:
        word = ""
        Find = False
        for e in row:
            if e != "":
                Find = True
                word += e.upper()
            elif e == "" and Find == True:
                Find = False
                if is_valid(word):
                    words[0].append(word)
                elif len(word) > 1: 
                    words[1].append(word)
                word = ""
        if Find == True:
            if is_valid(word):
                words[0].append(word)
            elif len(word) > 1: 
                words[1].append(word)
    for i in range(15):
        w = [] ;Find = False
        for x in range(15):
            w.append("")
        for j in range(15):
            if board[j][i] != "":
                Find = True
                w[i] += board[j][i].upper()
            elif board[j][i] == "" and (Find == True):
                Find = False
                if is_valid(w[i]):
                    words[0].append(w[i])
                elif len(w[i]) > 1:
                    words[1].append(w[i])
                w[i] = ""
        if Find == True:
            if is_valid(w[i]):
                words[0].append(w[i])
            elif len(w[i]) > 1: 
                words[1].append(w[i])
    words[0].sort()
    words[1].sort()
    return words
def get_play(board, new_board):
    diff = []
    first = True
    for i in range(len(board)):
        x = []
        for k in range(len(new_board[i])):
            if new_board[i][k] != board[i][k]:
                x.append(new_board[i][k])
                if first: 
                  row = i; col = k ;first = False
        if len(x) != 0:
            diff.append(x)
    if len(diff) == 1:
        down = 0
    else: down = 1
    out = ""
    for s in diff:
        for x in s:
            out += x
    return [row,col,down,out]
def play(row,col,down,tiles,board):
    point = 0; bonus = False
    valid, board_checked = place_tiles(row,col,down,tiles,board)
    if not valid: return -1
    if len(tiles) >= 7: bonus = True
    word_bf = get_all_words(board)
    word_at = get_all_words(board_checked)
    new_word = []
    if len(word_bf[1]) != len(word_at[1]):
        return -1
    for e in word_at[0]:
        new_word.append(e)
    for w in word_bf[0]:
        if w in new_word:
            new_word.remove(w)
    is_w = False
    for w in new_word:
        if is_valid(w):
            is_w = True
            for letter in w:
                point += get_value(letter)
    if point == 0 or is_w == False: return -1
    if bonus: point += 50
    return point
def best_play(tiles,board):
    tiles = tiles.upper()
    max = [0,0,0,0]
    for row in range(15):
        for col in range(15):
            down = 0
            if play(row,col,down,tiles,board) > max[0]:
                max[0] = play(row,col,down,tiles,board)
                max[1:] = [row, col, down]
            down = 1
            if play(row,col,down,tiles,board) > max[0]:
                max[0] = play(row,col,down,tiles,board)
                max[1:] = [row, col, down]      
    if max == [0,0,0,0]: return [-1,-1,-1,-1]
    return max

00048: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1048, 'const': 334, 'code+const': 1382}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    d = [[],[]]
    s1 = ''
    s2 = ''
    for i in range (15):
        for j in range (15):
            if board[i][j] != '':
                s1 += board[i][j]
            else:
                s1 += '_'
            if board[j][i] != '':
                s2 += board[j][i]
            else:
                s2 += '_'
        s1 += '_'
        s2 += '_'
    k = s1.split('_')+s2.split('_')
    for e in k:
      if is_valid(e):
          d[0].append(e)
      elif not is_valid(e) and e!= ''  and len(e) > 1:
          d[1].append(e)
    d[0].sort()
    d[1].sort()
    return d
def get_play(board, new_board):
  d = [0,0,0]
  position = []
  s = ''
  for i in range (15):
    for j in range (15):
      if board[i][j] != new_board[i][j]:
        s += new_board[i][j]
        position.append([i,j])
  d.append(s)
  for k in range (position[0][0]+1,15):
      if board[k][position[0][1]] != new_board[k][position[0][1]] and len(s) != 1:
          d[2] = 1
          break
  d[0],d[1] = position[0][0],position[0][1]
  return d
def play(row,col,down,tiles,board):
    rule,new_board = place_tiles(row,col,down,tiles,board)
    old_true,old_false = get_all_words(board)
    new_true,new_false = get_all_words(new_board)
    if old_false == new_false:
        d = []
        point = 0
        if rule:
            for e in new_true:
                if e not in old_true:
                    d.append(e)
                else:
                    old_true.remove(e)
            if d != []:
                for e in d:
                    if is_valid(e): 
                        for s in e:
                            point += get_value(s)
                if len(tiles) >= 7:
                    point += 50
                return point
            else:
                return -1
        else:
            return -1
    else:
        return -1
def best_play(tiles,board):
    d = []
    for k in range (2):
        for i in range (15):
            for j in range (15):
                if play(i,j,k,tiles,board) != -1:
                    d.append([play(i,j,k,tiles,board),i,j,k])
                if play(j,i,k,tiles,board) != -1:
                    d.append([play(i,j,k,tiles,board),i,j,k])
    if d == []:
        return [-1,-1,-1,-1]
    else:
        d = sorted(d)[::-1]
        k = [e for e in d if e[0] == d[0][0]]
        k.sort()
    return k[0]

00049: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_20.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_30.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_40.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_50.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_60.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_70.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_80.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_90.0
["[['OP', 'OP', 'OP', 'OP', 'OP', 'OP', 'OP', 'OP', 'OP', 'OP', 'OP', 'OP', 'OP', 'OP', 'OPAD', "
 "'OPAD', 'OPAD', 'OPBRA', 'OPINWASHING', 'OPADIM', 'DOPAD', 'DOPAM', 'DOPAM', 'DOPAM', 'DOPAM', 'DOPAM', 'DOPAM', 'DOPACIFYM', "
 "'OPACIFY', 'OPACIFY', 'OPACIFY', 'OPACIFY', 'OPACIFY', 'DOPACIFYM', 'DOPACIFYRM', 'DSOPACIFY', "
 "'OPACIFYINGED', 'OPACIFYINGED', 'OPEJACIFYING', 'OPULACIFYTING', 'LOPACIFYING', 'OPACIFYMING', "
 "'OPACIFYMING', 'MOPACIFYING', 'MOPACIFYINGD', 'MOPACIFYINGSTERS', 'OPACIFYING', 'OPACIFYING', "
 "'OPACIFYING', 'OPACIFYING', 'OPACIFYING', 'OPACIFYINGHM', 'OPACIFYING', 'OPACIFYING', "
 "'OPACIFYING', 'OPACIFYINGM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'OXYPHENBUTAZONE', "
 "'OXYPHENBUTAZONIER', 'OXYPHRENBQUTAZONLIFIED', 'OXYPHENBUTAZONEM', 'OXYPHENBUTAZONEI', 'OXYPHENBUTAZONE', "
 "'OXYPHENBUTAZONE', 'OXYPHENBUTAZONE', 'OXYPHENBUTAZONE', 'OXYPHENBUTAZONE', 'OXYPHENBUTAZONE'], "
 "'OXYPHENBUTAZONE', 'OXYPHENBUTAZONE', 'OXYPHENBUTAZONE'], ['OPAC', 'OPAC', 'OPAC', 'OPAC', "
 "'OPAC', 'OPAC', 'OPAC', 'OPAC', 'OPAC', 'OPAC', 'OPAC', 'OPAC', 'OPACI', 'OPACI', 'OPACI', "
 "'OPACI', 'OPACI', 'O...(more)"]]]
test_get_all_words_100.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0
[50-1]
test_play_21.0
[-1]
test_play_30.0
[014]
test_play_40.0
[014, 021]
test_play_50.0
[560, 5072]
test_play_60.0
[560, 50-1]
test_play_70.0
[5063, 014]
test_play_80.0
[5062]
test_play_90.0
[011, 015, 024, 017, 850, 012]
test_play_100.0
[09, 033, 036, 018, 012, 5073, 2765, 017, 5074, 016]
test_play_110.0
[5067, 5061, 028, 011, 013, 850, 011, 012, 07, 025, 017, 014, 021, 032, 012, 015, 016, 5068, -16, 013, -10, 027, 45528]
test_play_120.0
[011]
test_play_130.0
[09]
test_play_140.0
[08, 20, 026, 0-1]
test_play_150.0
[039]
test_best_play_10.0
[[5069, 1, 7, 1]]
test_best_play_20.0
[[0-1, 5-1, 7-1, -1]]
test_best_play_30.0
[[5068, 0, 7, 1], [5087, 12, 0, 0], [5079, 01, 12, 1], [509, 01, 30, 10], [11, 253, 3, 0, 1], [650, 03, 54, 1],
 [27019, 06, 91, 0], [07, 04, 142, 1], [011, 20, 21, 0], [19122, 73, 08, 1]]
test_best_play_40.0
[[5071, 0, 7, 1], [5063, 10, 0, 0], [21563, 01, 81, 10], [1059, 07, 13, 01], [019, 13, 90, 0], [50572, 214, 04, 0],
 [1702, 36, 06, 0], [1058, 03, 103, 0], [0, 18, 14, 10, 0], [016, 25, 13, 10]]
test_best_play_50.0
[[5083, 0, 7, 1], [5062, 13, 0, 0], [50, 08, 1, 18, 0], [10, 0, 31, 10], [5068, 0, 511, 1], [2684, 36, 08, 1],
 [018, 18, 89, 01], [1350, 01, 92, 01], [021, 15, 13, 1], [275, 04, 24, 1]]
bytecount: {'code': 768, 'const': 380, 'code+const': 1148}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  y,n = [],[]
  b = copy_board(board)
  for i in range(15):
      for j in range(15):
          if(b[i][j] == ''): b[i][j] = ' '
  for i in range(15):
    s = [''.join(b[i]).split()]
    w = ""
    for x in b:
      w += x[i]
      s.append(w.split())
      for S in s:
        for x in S:
          if(len(x) > 1):
              if(is_valid(x)): y.append(x)
              else: n.append(x)
    y.sort()
    n.sort()
    return [y,n]
def get_play(board, new_board):
  word = ""
  y,x = -1,-1
  for i in range(15):
    for j in range(15):
      z = new_board[i][j]
      if(board[i][j] != z):
        word += z
        if(y == -1): y,x = i,j
  if(place_tiles(y,x,0,word,board)[1] == new_board):
    return [y,x,0,word]
  else:
    return [y,x,1,word]
def play(row,col,down,tiles,board):
  r,b = place_tiles(row,col,down,tiles,copy_board(board))
  y,n = get_all_words(b)
  if(len(n) > 0 or not r): return -1
  Y, N = get_all_words(board)
  for z in Y: 
      if z in y: y.remove(z)
  return 50 * (len(tiles) > 6) + sum(sum(get_value(i) for i in z) for z in y)
def best_play(tiles,board):
  s,r,c,d = -1,-1,-1,-1
  for R in range(15):
      for C in range(15):
          for D in range(2):
              S = play(R,C,D,tiles,board)
              if S > s:
                  s, r, c, d = S, R, C, D
  return [s, r, c, d]

00050: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 10, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 01, 'MICROLOGIES'], [14, 7, 10, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 01, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 01, 'TONIEST'], [9, 1, 01, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 01, 'PINS'], [5, 0, 01, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 01, 'BEL']]
test_play_10.0
[50-1]
test_play_21.0
[-1]
test_play_30.0
[014]
test_play_40.0
[014, 214]
test_play_50.0
[560, 6072]
test_play_60.0
[560, 60-1]
test_play_70.0
[5063, 134]
test_play_80.0
[5062]
test_play_90.0
[011, 115, 264, 417, 11085, 7412]
test_play_100.0
[09, 933, 4236, 518, 7612, 1373, 14365, 1087, 16974, 1316]
test_play_110.0
[5067, 671, 28, 56, 6711, 1263, 10485, 115, 124, 1317, 1256, 171, 1854, 2199, 322, 12, 23415, 24916, 30768, 2756, 2813, 29410,
 30427, 33128]
test_play_120.0
[611]
test_play_130.0
[49]
test_play_140.0
[08, 820, 286, 44-1]
test_play_150.0
[739]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 840, 'const': 296, 'code+const': 1136}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    b = [[],[]]
    for i in range(len(board)):
        a = ''
        for j in range(len(board)):
            if board[i][j] == '':
                a += ' '
            else:
                a += board[i][j]
        a = a.split()
        for e in a :
            if is_valid(e) == True :
                b[0] += [e]
            else :
                if len(e) >= 2 :
                    b[1] += [e]
    for i in range(len(board)):
        a = ''
        for j in range(len(board)):
            if board[j][i] == '':
                a += ' '
            else:
                a += board[j][i]
        a = a.split()
        for e in a :
            if is_valid(e) == True :
                b[0] += [e]
            else :
                if len(e) >= 2 :
                    b[1] += [e]
    c = [[],[]]
    c[0] += sorted(b[0])
    c[1] += sorted(b[1])
    return c
def get_play(board, new_board):
    nb = []
    a = ''
    for i in range(len(board)):
        for j in range(len(board)):
            if board[i][j] != new_board[i][j]:
                a += new_board[i][j]
                if nb == []:
                    nb += [i]+[j]
    if len(a) == 1 :
        nb += [0]
    else :
        for i in new_board :
            if a[0] in i :
                if a[len(a)-1] in i :
                    nb += [0]
                    break
                else:
                    nb += [1]
                    break
                break
    nb += [a]
    return nb
def play(row,col,down,tiles,board):
    a = place_tiles(row,col,down,tiles,board)
    gaw = get_all_words(board)
    valid = a[0]
    if valid == True and gaw[1] == [] :
        score = 0
        for i in gaw[0]:
            for e in i:
                e = e.lower()
                score += letter_value[e]
        if len(tiles) >= 7 :
            score += 50
    else:
        score = -1
    return score
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00051: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1498, 'const': 364, 'code+const': 1862}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  get_all_words = []
  all_words = []
  have = []
  donthave = []
  for row in range(15):
      c = 0
      while c < 15:
        if board[row][c] != '':
          e = board[row][c]
          c += 1
          for next in range(c,15):
            if board[row][next] != '':
              e += board[row][next]
              c += 1
            else:
              break
          if len(e) > 1:
            all_words.append(e)
        else:
          c += 1
  for col in range(15):
    r = 0
    while r < 15:
      if board[r][col] != '':
        e = board[r][col]
        r += 1
        for next in range(r,15):
          if board[next][col] != '':
            e += board[next][col]
            r += 1
          else:
            break
        if len(e) > 1:
          all_words.append(e)
      else:
        r += 1
  for e in all_words:
    if is_valid(e) == True:
      have.append(e)
    elif is_valid(e) == False:
      donthave.append(e)
  have.sort()
  donthave.sort()
  get_all_words.append(have)
  get_all_words.append(donthave)
  return get_all_words
def get_play(board, new_board):
  add_tiles = ''
  for r in range(15):
    for c in range(15):
      if new_board[r][c] != board[r][c]:
        add_tiles += new_board[r][c]
  for r in range(15):
    for c in range(15):
      if new_board[r][c] != board[r][c]:
        if len(add_tiles) == 1 or c < 14 and new_board[r][c+1] != board[r][c+1]:
          return [r,c,0,add_tiles]
        elif r < 14 and new_board[r+1][c] != board[r+1][c]:
          return [r,c,1,add_tiles]
        elif new_board[r][c+1] == board[r][c+1] :
          for j in range(c+1,15):
            if new_board[r][j] != board[r][j]:
              return [r,c,0,add_tiles]
          for j in range(r+1,15):
            if new_board[j][c] != board[j][c]:
              return [r,c,1,add_tiles]
        elif new_board[r+1][c] == board[r+1][c]:
          for j in range(r+1,15):
            if new_board[j][c] != board[j][c]:
              return [r,c,1,add_tiles]
          for j in range(c+1,15):
            if new_board[r][j] != board[r][j]:
              return [r,c,0,add_tiles]
def play(row,col,down,tiles,board):
  if place_tiles(row,col,down,tiles,board)[0] == True:
    new_board = place_tiles(row,col,down,tiles,board)[1]
    words_board = get_all_words(board)[0]
    words_new_board = get_all_words(new_board)[0]
    words_new_board_invalid = get_all_words(new_board)[1]
    if len(words_new_board_invalid) > 0:
      return -1
    else:
      pass
    if len(tiles) >= 7:
      score = 50
    else:
      score = 0
    for e in words_board:
      if e in words_new_board:
        words_new_board.remove(e)
    for e in words_new_board:
        for k in e:
          score += get_value(k)
    return score
  else:
    return -1
def best_play(tiles,board):
  list_score = []
  for r in range(15):
    for c in range(15):
      for b in range(2):
        if place_tiles(r,c,b,tiles,board)[0] == True:
          score = play(r,c,b,tiles,board)
          if score > -1:
            list_score.append([-score,r,c,b])
  if len(list_score) != 0:
    list_score.sort()
    best_play = list_score[0]
    best_play[0] = -(best_play[0])
    return best_play
  else:
    return [-1,-1,-1,-1]

00052: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0
[[10, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 10, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [10, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [10, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 10, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 956, 'const': 282, 'code+const': 1238}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    show = []
    for i in range(len(board)): 
        word_long = ""
        for k in range(len(board)): 
            if board[i][k] != "":
                word_long += board[i][k]
            else:
                if len(word_long) >= 2:
                    show.append(word_long)
                word_long = ""
        if len(word_long) >= 2:
            show.append(word_long)
            word_long = ""
        word_norm = ""
        for k in range(len(board)):  
            if board[k][i] != "":
                word_norm += board[k][i]
            else:
                if len(word_norm) >= 2:
                    show.append(word_norm)
                word_norm = ""
        if len(word_norm) >= 2:
            show.append(word_norm)
            word_norm = ""
    show.sort()
    in_d = []
    out_d = []
    for e in show:
        if is_valid(e) == True:
            in_d.append(e)
        else:
            out_d.append(e)
    return [in_d,out_d]
def get_play(board, new_board):
    diff = ""
    row = 0
    col = 0
    down = 0
    for i in range(len(board)): 
        for k in range(len(board)): 
            if board[i][k] == "" and new_board[i][k] != "":
                if row == 0:
                    row = i
                elif row < i:
                    down = 1
                if col == 0:
                    col = k
                elif  col < k:
                    pass
                diff += new_board[i][k]
    return [row,col,down,diff]
def play(row,col,down,tiles,board):
    show = []
    score = 0
    new_board = copy_board(board)
    valid,new_board = place_tiles(row,col,down,tiles,new_board)
    if valid == False:
        return -1
    if len(get_all_words(new_board)[1]) == 0 and len(get_all_words(board)[1]) == 0 :
        new_allword = get_all_words(new_board)
        old_allword = get_all_words(board)
        for e in new_allword[0]:
            if e not in old_allword[0]:
                if is_valid(e) == True:
                    show.append(e)
            else:
                old_allword[0].remove(e)
        for r in show:
            for t in r:
                score += letter_value[t.lower()]
        if len(tiles) >= 7:
            score += 50
        if score == 0:
            return -1
        show = []
    else:
        return -1
    return score
def best_play(tiles,board):
    total = 0
    for i in range(len(board)): 
        for j in range(len(board[0])):  
            point0 = play(i,j,0, tiles, board)
            if point0 > total:
                total = point0
                show = [total,i,j,0]
            point1 = play(i, j, 1, tiles, board)
            if point1 > total:
                total = point1
                show = [total, i, j, 1]
    if total == 0:
        return [-1, -1, -1, -1]
    return show

00053: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1118, 'const': 326, 'code+const': 1444}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  val, inv = [], []
  board2 = copy_board(board)
  for i in range(15):
    for j in range(15):
      board2[i][j] = board[j][i]
  boa = [board, board2]
  for e in boa:
    for i in range(15):
      a, b = [], []
      for j in range(15):
        if len(e[i][j]) == 1 and (j == 0 or len(e[i][j-1]) == 0):
          a.append(j)
        if len(e[i][j]) == 1 and (j == 14 or len(e[i][j+1]) == 0):
          a.append(j)
      k = 0
      while k in range(len(a)-1):
        word = "".join(e[i][a[k]:a[k+1]+1])
        if is_valid(word) and len(word) >= 2:
          val.append(word)
        if len(word) >= 2 and not is_valid(word):
          inv.append(word)
        k += 2
  val.sort()
  inv.sort()
  return [val,inv]
def get_play(board, new_board):
  dif = []
  word = ""
  for i in range(15):
    for j in range(15):
      if board[i][j] != new_board[i][j]:
        dif.append([i,j])
  if len(dif) == 1:
    down = 0
  else:
    if dif[0][0] == dif[1][0]:
      down = 0
    elif dif[0][1] == dif[1][1]:
      down = 1
  for e in dif:
    word += new_board[e[0]][e[1]]
  return [dif[0][0],dif[0][1],down,word]
def play(row,col,down,tiles,board):
  score = 0
  valid, newboard = place_tiles(row,col,down,tiles,board)
  word1val, word1inv = get_all_words(board)
  word2val, word2inv = get_all_words(newboard)
  for e in word1val:
    if e in word2val:
      word2val.remove(e)
  for e in word1inv:
    if e in word2inv:
      word2inv.remove(e)
  if len(word2inv) != 0:
    return -1
  for e in word2val:
    for k in e:
      score += get_value(k)
  if len(tiles) >= 7:
    score += 50
  return score
def best_play(tiles,board):
  score = -1
  for i in range(15):
    for j in range(15):
      for k in range(2):
        valid, nboard = place_tiles(14 - i, 14 - j, 1- k,tiles,board)
        if valid:
          if play(14 - i, 14 - j, 1 - k,tiles,board) >= score:
            score = play(14 - i, 14 - j, 1 - k,tiles,board)
            row = 14 - i
            col = 14 - j
            down = 1 - k
  if score == -1:
    return [-1, -1, -1, -1]
  return [score,row,col,down]

00054: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 914, 'const': 408, 'code+const': 1322}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid=[]
  invalid=[]
  w=''
  for row in range(15):
    for col in range(15):
      if board[row][col] !='':
        w+=board[row][col]
      else:
        w+=' '
    w+=' '
  for col in range(15):
    for row in range(15):
      if board[row][col] !='':
        w+=board[row][col]
      else:
        w+=' '
    w+=' '
  w=w.strip().split()
  for i in w:
    if len(i)>1:
      if is_valid(i)==True:
        valid.append(i)
      else:
        invalid.append(i)
  invalid.sort()
  valid.sort()     
  return [valid,invalid]
def get_play(board, new_board):
  b=[]
  w=''
  check=False
  for row in range(15):
    for col in range(15):
      if board[row][col]!=new_board[row][col]:
        b.append([row,col])
        w+=new_board[row][col]
        check=True
  if len(w)>1:
    if b[0][0]==b[1][0]:
      down=0
    else:
      down=1
  else:
    down=0
  return [b[0][0],b[0][1],down,w]
def play(row,col,down,tiles,board):
  l,new=place_tiles(row,col,down,tiles,board)
  if l== False or len(get_all_words(new)[1])>0:
     return -1
  old=get_all_words(board)[0]
  up=get_all_words(new)[0]
  d=[]
  score=0
  for i in up:
    if i not in old:
      d.append(i)
    else:
      old.remove(i)
  if len(tiles) >=7:
    score=50
  for e in range(len(d)):
    for c in d[e]:
      score+=get_value(c)
  return score
def best_play(tiles,board):
  score=[]
  for row in range(15):
    for col in range(15):
      for down in range(2):
        x=play(row,col,down,tiles,board)
        if x != -1:
          score.append([x,row,col,down])
  if len(score)==0:
    return [-1,-1,-1,-1]
  score.sort(reverse=True)
  maxx=score[0][0]
  m=[]
  for n in score:
    if n[0]==maxx:
      m.append(n)
  m.sort()
  return m[0]

00055: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 898, 'const': 312, 'code+const': 1210}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    a=""
    b=""
    for i in range(15):
      for k in range(15):
        if board[i][k] == "":
          a += " "
        else:
          a += board[i][k]
        if k == 14:
          a += " "
        if board[k][i] == "":
          b += " "
        else:
          b += board[k][i]
        if k == 14:
          b += " "
    a = a.strip().split()
    b = b.strip().split()
    c=[]
    d=[]
    for i in a:
      if len(i) >= 2:
        if is_valid(i):
          c.append(i)
        else:
          d.append(i)
    for i in b:
      if len(i) >= 2:
        if is_valid(i):
          c.append(i)
        else:
          d.append(i)
    c.sort()
    d.sort()
    return [c,d]
def get_play(board, new_board):
  a = []
  c = 0
  d = ""
  for i in range(15):
    for k in range(15):
      if board[i][k] != new_board[i][k]:
        a.append([i,k,new_board[i][k]])
  if len(a) == 1:
    return [a[0][0],a[0][1],0,a[0][2]]
  if a[0][0] != a[1][0]:
    c = 1
  for o in a:
    d += o[2]
  return [a[0][0],a[0][1],c,d]
def play(row,col,down,tiles,board):
  x,y = place_tiles(row,col,down,tiles,board)
  a,b = get_all_words(board)
  c,d = get_all_words(y)
  f = []
  if d == [] and x:
    for k in c:
      if k not in a:
        f.append(k)
      else:
        a.remove(k)
    p = 0 
    for i in f:
      for k in i:
        p += get_value(k)
    if len(tiles) >= 7:
      p += 50
    return(p)
  return -1
def best_play(tiles,board):
  a = -1
  b = -1
  c = -1
  d = -1
  for i in range(15):
    for k in range(15):
      for j in range(2):
        p = play(i,k,j,tiles,board)
        if p > a:
          a = p
          b = i
          c = k
          d = j
  return [a,b,c,d]

00056: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1384, 'const': 344, 'code+const': 1728}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid, invalid, allword = [], [], []
    boardtranspose = [[row[i] for row in board] for i in range(len(board[0]))]
    for i in board:
        s = [ch.upper() if ch.isalpha() else " " for ch in i]
        s = "".join(s)
        s = s.strip().split()
        s = [j for j in s if len(j)>1]
        allword.extend(s)
    for i in boardtranspose:
        s = [ch.upper() if ch.isalpha() else " " for ch in i]
        s = "".join(s)
        s = s.strip().split()
        s = [j for j in s if len(j)>1]
        allword.extend(s)
    [valid.append(i) if is_valid(i) else invalid.append(i) for i in allword]
    return [sorted(valid),sorted(invalid)]
def get_play(board, new_board):
    for i in range(len(board)):
        if board[i] != new_board[i]:
            row = i
            break
    s = ""
    count = 0
    for i in range(len(new_board[row])):
        if new_board[row][i] != board[row][i]:
            if count == 0:
                col = i
            count += 1
            s += new_board[row][i]
    down = 0
    if len(s) > 1:
        return [row,col,down,s]
    else:
        s = ""
        boardtranspose = [[row[i] for row in board] for i in range(len(board[0]))]
        newboardtranspose = [[row[i] for row in new_board] for i in range(len(new_board[0]))]
        for i in range(len(new_board[col])):
            if newboardtranspose[col][i] != boardtranspose[col][i]:
                s += newboardtranspose[col][i]
        if len(s) > 1:
            down = 1
        return [row,col,down,s]
def play(row,col,down,tiles,board):
    b, newboard = place_tiles(row,col,down,tiles,board)
    if b:
        allold = get_all_words(board)
        allnew = get_all_words(newboard)
        if allold[1] != allnew[1]:
            return -1
        else:
            allwords = allnew[0]
            [allwords.remove(i) for i in allold[0] if i in allwords]
            score = 0
            for s in allwords:
                for ch in s:
                    score += get_value(ch)
            if len(tiles) >= 7:
                score += 50
            board = copy_board(newboard)
            return score
    else:
        return -1
def best_play(tiles,board):
    allplay = []
    for i in range(len(board)):
        for j in range(len(board[0])):
            playside = play(i,j,0,tiles,board)
            playdown = play(i,j,1,tiles,board)
            if playside != -1:
                allplay.append([playside,i,j,0])
            if playdown != -1:
                allplay.append([playdown,i,j,1])
    if (len(allplay)) == 0:
        return [-1,-1,-1,-1]
    else:
        score = [i[0] for i in allplay]
        allmaxscore = [i for i in allplay if i[0] == max(score)]
        allmaxscore.sort()
        return allmaxscore[0]

00057: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1342, 'const': 369, 'code+const': 1711}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid = []
  invalid = []
  r,c= '',''
  for i in board:
      r+= ' '
      for e in i:
          if 'A'<=e<='Z':
              r+=e
          else: r+=' '
  for i in range(len(board)):
      c+=' '
      for e in range(len(board)):
          y = board[e][i]
          if 'A'<=y<='Z':
              c+=y
          else: c+= ' '  
  r = sorted([i for i in r.split() if len(i)>=2])
  c = sorted([i for i in c.split() if len(i)>=2])
  k = sorted(r+c)
  for i in k:
    if is_valid(i): valid.append(i)
    else: invalid.append(i) 
  return [sorted(valid),sorted(invalid)]
def get_play(board, new_board):
  pos=[]
  for i in range(len(board)):
    for e in range(len(board)):
        if board[i][e] != new_board[i][e]:
            pos.append([i,e,new_board[i][e]])
  tiles=''
  row,col,down=pos[0][0],pos[0][1],0
  for r,c,cha in pos:
    tiles+=cha
    if c-col==0 and r-row!= 0: down=1
  return [row,col,down,tiles]
def play(row,col,down,tiles,board):
  score = 0
  board_place = place_tiles(row,col,down,tiles,board)
  if board_place[0]== False: return -1  
  board1 = board_place[1]    
  b4 = get_all_words(board)[0]  
  q = get_all_words(board1)
  if q[1] != []: return -1
  af = q[0]
  t = []
  for i in af:
    c = af.count(i)-b4.count(i)
    if i not in b4:                                        
      for w in i:
        score += get_value(w)
    elif c>0:
      if i not in t:
        g=0
        for w in i:
          g+= get_value(w)
        score += g*c
        t.append(i)
  if score == 0 :
    return -1
  if len(tiles)>=7:
    score+=50
  return score
def best_play(tiles,board):
  l=[]
  b0 = copy_board(board)
  for i in range(len(b0)):
    for j in range(len(b0)):
      R = place_tiles(i,j,0,tiles,b0)
      if R[0] == True:
        new_board = R[1]
        row,colum,down,cha = get_play(b0,new_board)
        score = play(row,colum,0,tiles,b0)
        if score == -1:
          l.append([-1,-1,-1,-1])
        elif score > 0:
          l.append([score,row,colum,0])
      C = place_tiles(i,j,1,tiles,b0)
      if C[0] == True:
        new_board = C[1]
        row,colum,down,cha = get_play(b0,new_board)
        score = play(row,colum,1,tiles,b0)
        if score == -1:
          l.append([-1,-1,-1,-1])
        elif score > 0 :
          l.append([score,row,colum,1])
  if l != []:
    out = sorted(l)[::-1]
  elif l == []:
    out = [[-1,-1,-1,-1]]
  max_score = out[0][0]
  t=[]
  for score,row,colum,down in out:
    if score==max_score:
      t.append([score,row,colum,down])
  t.sort()
  return t[0]

00058: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1070, 'const': 365, 'code+const': 1435}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  list_true=[]
  list_false=[]
  k=0
  for i in range(15):
    c=''
    for j in range(15):
      if board[i][j].isalpha():
        c+=board[i][j]
      else:
        if len(c)>=2 and is_valid(c)==1:
          list_true+=[c]
        if len(c)>=2 and is_valid(c)==0:
          list_false+=[c]
        c=''
    if len(c)>=2 and is_valid(c)==1:
      list_true+=[c]
    if len(c)>=2 and is_valid(c)==0:
      list_false+=[c]
  for i in range(15):
    c=''
    for j in range(15):
      if board[j][i].isalpha():
        c+=board[j][i]
      if board[j][i].isalpha()==0 or j==14:
        if len(c)>=2 and is_valid(c)==1:
          list_true+=[c]
        if len(c)>=2 and is_valid(c)==0:
          list_false+=[c]
        c=''
  list_true.sort()
  list_false.sort()
  return [list_true,list_false]
def get_play(board, new_board):
  step = 0
  down = 0
  c = ''
  for i in range(15):
    for j in range(15):
      if new_board[i][j] != board[i][j]:
        if step == 0:
          row = i
          col = j
          step = 1
        elif step > 0:
          if col == j:
            down = 1
          step = -1
        c += new_board[i][j]
  return [row,col,down,c]
def play(row,col,down,tiles,board):
  new_board=copy_board(board)
  v,new_board=place_tiles(row,col,down,tiles,new_board)
  score=0
  k=0
  word_new=get_all_words(new_board)
  word_old=get_all_words(board)
  if len(word_new[1])>0:
    return -1
  for i in word_old[0]:
    for j in range(len(word_new[0])):
      if word_new[0][j]==i:
        word_new[0][j]=''
        break
  for i in word_new[0]:
    for j in i:
      get_value(j)
      if get_value(j)>=0:
        score+=get_value(j)
  if len(tiles)>6:
    score+=50
  return score
def best_play(tiles,board):
  highScore=-1
  col=-1
  row=-1
  do=-1
  cx=0
  for i in range(15):
    for j in range(15):
      d=0
      if place_tiles(i,j,d,tiles,board)[0]:
        if highScore<play(i,j,d,tiles,board):
          col=i
          row=j
          do=d
          highScore=play(i,j,d,tiles,board)
      d=1
      if place_tiles(i,j,d,tiles,board)[0]:
        if highScore<play(i,j,d,tiles,board):
          col=i
          row=j
          do=d
          highScore=play(i,j,d,tiles,board)
  return [highScore,col,row,do]

00059: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_90.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO',
   'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING',
   'OXYPRHEQNBUTALIFIZONED', 'SAD', 'XPI', 'YER'],
  ['DOMBPREQUALINWASHFING', 'EOMD', 'OUM', 'OXYPHENBUTAZONEPIER', 'SYEJACULATING',
   'TZOOT'],
  []]]
test_get_all_words_100.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JIVEA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JAJOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0
[50-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 15, 24, 17, 85, -12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 428, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 321, 12, -15, 16, 68, 106, 213, -10, -127, -128]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 120, 1426, 8-1]
test_play_150.0
[2839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_20.0
[[-1, 0-1, 0-1, 0-1]]
test_best_play_30.0
[[68, 0, 7, 1], [87, 12, 0, 0], [798, 01, 612, 1], [7259, 31, 50, 10], [11, 2, 13, 6, 0], [765, 3, 4, 8, 1],
 [319, 6, 11, 0, 0], [197, 64, 92, 1], [211, 130, 1, 0], [1522, 03, 8, 1]]
test_best_play_40.0
[[71, 0, 7, 1], [763, 210, 80, 10], [7863, 1, 91, 10], [149, 17, 63, 1], [2019, 813, 10, 10], [772, 214, 114, 10],
 [2517, 26, 126, 10], [258, 13, 73, 0], [218, 34, 130, 10], [136, 45, 14, 10]]
test_best_play_50.0
[[83, 0, 7, 1], [8062, 513, 80, 10], [7258, 1, 98, 10], [210, 80, 61, 10], [7468, 0, 101, 1], [1824, 126, 48, 01],
 [178, 18, 69, 1], [2310, 31, 52, 1], [321, 45, 43, 1], [1927, 14, 114, 1]]
bytecount: {'code': 1046, 'const': 326, 'code+const': 1372}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  m=''
  for i in range(len(board)):
    for j in range(len(board[i])):
      if board[i][j]!='':
        m+=board[i][j]
      else:
        m+=','
  w = m.upper().split(',')
  valid_words=[]
  invalid_words=[]
  for word in w:
    if word!='':
      if is_valid(word):
        valid_words.append(word)
      elif len(word)>2:
        invalid_words.append(word)
  m=''
  for i in range(len(board)):
    for j in range(len(board[i])):
      if board[j][i]!='':
        m+=board[j][i]
      else:
        m+=','
  w = m.upper().split(',')
  for word in w:
    if word!='':
      if is_valid(word):
        valid_words.append(word)
      elif len(word)>2:
        invalid_words.append(word)
  valid_words.sort()
  invalid_words.sort()
  return [valid_words,invalid_words]
def get_play(board, new_board):
  tiles=''
  rc=[]
  for i in range(len(board)):
      for j in range(len(board[i])):
          if new_board[i][j] != board[i][j]:
              tiles+=new_board[i][j]
              rc.append([i,j])
  row=rc[0][0]
  col=rc[0][1]
  if len(tiles)>1:
      if rc[0][1]==rc[1][1]:
          down=1
      else:
          down=0
  else:
      down=0
  return [row,col,down,tiles]
def play(row,col,down,tiles,board):
  score=0
  valid_words=[]
  new_board=place_tiles(row,col,down,tiles,board)[1]
  for e in get_all_words(new_board)[0]:
    if e not in get_all_words(board)[0]:
        valid_words.append(e)
  for i in range(len(valid_words)):
    for e in valid_words[i]:
      if get_value(e)!=-1:
        score+=get_value(e)
  if 7<=len(tiles):
    score+=50
  if score==0:
    return -1
  return score
def best_play(tiles,board):
  ans=[]
  s1=[]
  s2=[]
  score,row,col,down=-1,-1,-1,-1
  for i in range(15):
    for j in range(15):
      for k in range(2):
        s1.append([play(i,j,k,tiles,board),i,j,k])
        s2.append(play(i,j,k,tiles,board))
  q=max(s2)
  for i in range(len(s1)):
    if q==s1[i][0]:
      ans.append(s1[i])
  if len(ans)>1:
    ans.sort()
    return ans[0]
  elif len(ans)==1:
    return ans[0]

00060: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 786, 'const': 441, 'code+const': 1227}
check_import({'allowable': ['math']}): none
def get_all_words(board):
   Y = []
   N = []
   VH = [[[] for e in range(15)],[[] for e in range(15)]]
   for r in range(15):
      for cl in range (15):
         q = board[r][cl]
         if q == '':
            q = ' '
         VH[0][cl] += q
         VH[1][r] += q
   for e in [0,1]:
      for v in VH[e]:
         for t in ''.join(v).split():
            if is_valid(t):
               Y.append(t)
            elif len(t) >= 2:
               N.append(t)
   return [sorted(Y),sorted(N)]
def get_play(board, new_board):
   rcdt = [0,0,0,'']
   rs = 0
   for e in range (15):
      if board[e] != new_board[e]:
         rs += 1
         for j in range (15):
            if board[e][j] != new_board[e][j]:
               rcdt[3] += new_board[e][j].upper()
               if len(rcdt[3]) == 1:
                  rcdt[0] = e
                  rcdt[1] = j
   if rs > 1:
       rcdt[2] = 1
   return rcdt
def play(row,col,down,tiles,board):
    toBe = place_tiles(row,col,down,tiles,board)
    if not toBe[0]:
      return -1
    a = get_all_words(toBe[1])
    if a[1] != []:
      return -1
    score = 0
    b = get_all_words(board)
    for e in b[0]:
       if e in a[0]:
          a[0].remove(e)
    for letter in ''.join(a[0]):
             score += letter_value[letter.lower()]
    if len(tiles) >= 7:
       score += 50
    return score
def best_play(tiles,board):
    rcd = [-1]*4
    maxscore = 0
    for row in range (15):
      for col in range (15):
        for down in range (2):
          crscore = play(row,col,down,tiles,board)
          if crscore > maxscore:
            rcd = [crscore, row, col, down]
            maxscore = crscore
    return rcd

00061: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 810, 'const': 400, 'code+const': 1210}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    a = [[], []]
    for n in range(2):
      for i in range(len(board)):
        b = ''
        for j in range(len(board[i])):
          if n == 0:
            x = board[i][j]
          if n == 1:
            x = board[j][i]
          if x != '':
            b += x
          else:
            b += ' '
        for word in b.strip().split():
          if len(word) >= 2:
            if is_valid(word):
              a[0].append(word)
            else:
              a[1].append(word)
    a[0].sort()
    a[1].sort()
    return a
def get_play(board, new_board):
    a = True
    t = ''
    d = 0
    for i in range(len(board)):
      for j in range(len(board[i])):
        x = new_board[i][j]
        if x != board[i][j]:
          if a: 
            row = i
            col = j
            a = False
          else:
            if j == col: 
              d = 1
          t += x
    return [row, col, d, t]
def play(row,col,down,tiles,board):
    board_words = get_all_words(board)
    played_board = place_tiles(row,col,down,tiles,board)
    new_board_words = get_all_words(played_board[1])
    if not played_board[0]:
      return -1
    a = []
    s = 0
    for n in range(2):
      for i in new_board_words[n]:
        if i not in board_words[n]:
          if n == 0:
            for j in i:
              s += get_value(j)
          else:
            a.append(i)
        else:
          board_words[n].remove(i)
    if len(a) != 0:
      return -1
    if len(tiles) >= 7:
      s += 50
    return s
def best_play(tiles,board):
    lst = []
    for row in range(len(board)):
      for col in range(len(board[row])):
        for down in range(2):
          s = play(row,col,down,tiles,board)
          if s != -1:
            lst.append([s, row, col, down])
    lst.sort(key= lambda x: (-x[0], x[1]))
    if len(lst) == 0:
      return [-1,-1,-1,-1]
    return lst[0]

00062: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1072, 'const': 333, 'code+const': 1405}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    r = [[],[]] ; k = len(board)
    s1 = s2 = ''
    for i in board:
        for j in i:
            if j == '': s1 += ' '
            else: s1 += j
        s1 += ' '
    s1 = s1.strip().split()
    for i in range(k):
        for j in range(k):
            if board[j][i] == '': s2 += ' '
            else: s2 += board[j][i]
        s2 += ' '
    s2 = s2.strip().split()
    s = s1+s2
    s.sort()
    for i in s:
        if len(i) != 1:
            if is_valid(i):
                r[0].append(i)    
            else:
                r[1].append(i) 
    return r
def get_play(board, new_board):
    k = len(board) ; s = ''
    c = 0 ; db = False
    for i in range(k):
        for j in range(k):
            if board[i][j] != new_board[i][j]:
                a = i ; b = j
                db = True
                break
        if db : break
    for i in range(k):
        for j in range(k):
            if board[i][j] != new_board[i][j]:
                s += new_board[i][j]
                if i != a: c = 1
                elif j != b: c = 0
    if len(s) == 0: c = 0
    return [a,b,c,s]
def play(row,col,down,tiles,board):
    a = get_all_words(board)
    valid,new_board = place_tiles(row,col,down,tiles,board)
    if valid:
        b = get_all_words(new_board)
        if b[1] == []:
            s = ['']
            for i in b[0]:
                if i not in a[0]:
                    s.append(i)
                if i in a[0]:
                    a[0].remove(i)
            score = 0
            for i in s:
                if i != '':
                    for j in i:
                        score += get_value(j)
            if len(tiles) >= 7: score += 50
            return score
        else: return -1
    else: return -1
def best_play(tiles,board):
    k = len(board) ; s = []
    for i in range(k):
        for j in range(k):
            if play(i,j,0,tiles,board) != -1:
                p = play(i,j,0,tiles,board)
                s.append([p,-i,-j,0])
    for i in range(k):
        for j in range(k):
            if play(i,j,1,tiles,board) != -1:
                p = play(i,j,1,tiles,board)
                s.append([p,-i,-j,-1])
    if s == []: return [-1,-1,-1,-1]
    else:
        s.sort()
        r = []
        for i in s[::-1][0]:
            if i < 0: r.append(-i)
            else: r.append(i)
        return r

00063: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_40.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_60.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_80.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_90.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OMF',
 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_100.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED',
   'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_10.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [54, 5, 1, 'INFISIVE'], [6, 8, 0, 'M']]
test_get_play_20.0
[[1, 7, 01, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 10, 'ONLEHUENTH'],
 [52, -14, 1, 'VRAVISRES'], [0, 120, 10, 'GTOGAT'], [5, 13, 1, 'POZ'], [05, 135, 1, 'ABAND'],
 [2, 10, 10, 'COEYE'], [10, 2, 10, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0IndexError('list index out of range')
[[0, 7, 01, 'HEPATICS'], [1, 3, 10, 'MLAILS'], [17, 46, 1, 'ARREAR'], [12, 70, 10, 'EDIASIEAD'],
 [13, 86, 10, 'SAHIWAL'], [13, 13, 1, 'MICROLOGIREILS'], [104, 137, 10, 'GAS'], [7, 135, 1, 'GOORYRG'],
 [210, 7, 10, 'PSHISPS'], [12, 311, 1, 'MALEFICEEILA'], [0, 10, 1, 'DNOOLAN'], [14, 109, 1, 'POPGEYEG'],
 [10, 104, 1, 'AGRORGAS'], [3, 2, 1, 'TNTOENIEST'], [59, 13, 1, 'SLICEILSS'], [4, 40, 10, 'NOYCRONY'],
 [07, 104, 1, 'DIXITI'], [211, 74, 1, 'PNINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'DGREAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'FTRGCAB'], [11, 312, 1, 'MOBEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_40.0
[14, 215]
test_play_50.0
[60, 572]
test_play_60.0
[60, 52-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 315, 24, 17, 585, 12]
test_play_100.0
[9, 133, 1236, 518, 12, 6473, 65, 107, 6374, 16]
test_play_110.0
[67, 61, 428, 11, 613, 7485, 411, 812, 7, 1325, 11, 7, 124, 210, 32, 12, 15, -16, -168, -16, -13, -10, 927, 428]
test_play_120.0
[411]
test_play_130.0
[59]
test_play_140.0
[8, 20, 326, 4-1]
test_play_150.0
[1539]
test_best_play_10.0
[[69, 1, 7, 1, 0]]
test_best_play_20.0
[[-1, 0-1, 0-1, 0-1]]
test_best_play_30.0IndexError('list index out of range')
[[68, 0, 7, 1], [87, 12, 0, 0], [679, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [78, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_40.0IndexError('list index out of range')
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 62, 0], [8, 23, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_50.0IndexError('list index out of range')
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [628, 0, 131, 1], [5724, 6, -18, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1378, 'const': 621, 'code+const': 1999}
check_import({'allowable': ['math']}): [[('IPython.core.display', 1)]]
from IPython.core.display import JSON
def get_all_words(board):
    ch_group=[]
    valid=[]
    invalid=[]
    for i in range(len(board)):
      text=''
      for j in range(len(board[i])):
        if board[i][j] in ['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']:
          text+=board[i][j]
          if board[i][(j+1)%len(board[i])] == '':
            break
      if len(text)>1:
        ch_group.append(text)
    new=[]
    for i in range(len(board)):
      n=[]
      for j in range(len(board[i])):
        n.append(board[j][i])
      new.append(n)
    for i in range(len(new)):
      text=''
      for j in range(len(new[i])):
        if new[i][j] in ['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']:
          text+=new[i][j]
          if new[i][(j+1)%len(new[i])] == '':
            break
      if len(text)>1:
        ch_group.append(text)
    ch_group=sorted(ch_group)
    for e in ch_group:
      if str(is_valid(e))=='True':
        valid.append(e)
      else:
        invalid.append(e)
    return [valid,invalid]
def get_play(board, new_board):
  if new_board != board:
    ch_b=[]
    ch_nb=[]
    ch=[]
    ch2=[]
    for i in range(len(board)):
      for j in range(len(board[i])):
        if board[i][j] in ['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']:
          ch_b.append(board[i][j])
    for i in range(len(new_board)):
      for j in range(len(new_board[i])):
        if new_board[i][j] in ['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']:
          ch_nb.append(new_board[i][j])
          ch.append(new_board[i][j])
        else:
          ch.append(new_board[i][j])
    ch2=ch_b+ch_nb
    for e in ch_b:
      ch_nb.remove(e)
    ch_nb="".join(ch_nb)
    s=ch.index(ch_nb[0])
    a=(s+1)//15
    b=((s+1)%15)-1
    if len(ch_nb)==1:
      return [a,b,0,str(ch_nb)]
    else:
      count=0
      for i in range(len(ch_b)):
        if ch[s+i] in ch2:
          count+=1
      if count==len(ch_b):
        return [a,b,0,str(ch_nb)]
      else:
        return [a,b,1,str(ch_nb)]
  else:
    return [0,0,0,""]
def play(row,col,down,tiles,board):
  new_board=place_tiles(row,col,down,tiles,board)[1]
  a=get_all_words(board)
  b=get_all_words(new_board)
  c=[]
  for i in range(len(b[0])):
    if b[0][i] not in a[0]:
      c.append(b[0][i])
  if len(c)!=0:
    scores=0
    for i in range(len(c)):
      for j in range(len(c[i])):
        scores+=get_value(c[i][j])
      if len(tiles)>=7:
        scores+=50
      return scores
  else:
      return -1
def best_play(tiles,board):
  a=[]
  for i in range(15):
    for j in range(15):
      for k in range(2):
        new_board=place_tiles(i,j,k,tiles,board)[1]
        row,col,down,t=get_play(board, new_board)
        scores=play(row,col,down,tiles,board)
        a.append([-scores,row,col,down])
  a=sorted(a)
  return [-a[0][0],a[0][1],a[0][2],a[0][3]]

00064: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1264, 'const': 325, 'code+const': 1589}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  A = []
  for i in range(15):
    t = ''
    c = False
    for j in range(15):
      if board[i][j] != '' and j == 14 and len(t)>=1:
        t += board[i][j]
        A.append(t)
      elif board[i][j] != '':
        t += board[i][j]
        c = True
      elif board[i][j] == '' and c == True and len(t)>=2:
        A.append(t)
        t = ''
        c = False
      else:
        t = ''
        c = False
  for j in range(15):
    t = ''
    c = False
    for i in range(15):
      if board[i][j] != '' and i == 14 and len(t)>=1:
        t += board[i][j]
        A.append(t)
      if board[i][j] != '':
        t += board[i][j]
        c = True
      elif board[i][j] == '' and c == True and len(t)>=2:
        A.append(t)
        t = ''
        c = False
      else:
        t = ''
        c = False
  x = [] ; y = []  
  for e in A:
    if is_valid(e) == True:
      x.append(e)
    else:
      y.append(e)
  x.sort() ; y.sort()
  return [x,y]
def get_play(board, new_board):
  for i in range(15):
    for j in range(15):
      if board[i][j] != new_board[i][j]:
        row = i
        col = j
        tiles = new_board[i][j]
        for k in range(1,15-i):
          if board[i+k][j] != new_board[i+k][j]:
            tiles += new_board[i+k][j]
        if tiles != new_board[i][j]:
          return [row,col,1,tiles]
        for l in range(1,15-j):
          if board[i][j+l] != new_board[i][j+l]:
            tiles += new_board[i][j+l]
        return [row,col,0,tiles]  
def play(row,col,down,tiles,board):
  new_board = place_tiles(row,col,down,tiles,board)[1]
  old = [e for e in get_all_words(board)[0]] 
  new = [e for e in get_all_words(new_board)[0]] 
  for e in old:
    if e in new:
      new.remove(e) 
  score = 0
  for x in new:
    for letter in x:
      score += get_value(letter)
  if score == 0 or get_all_words(board)[1] != get_all_words(new_board)[1] :
    return -1
  if len(tiles) >= 7:
    score += 50
  return score
def best_play(tiles,board):
  all_score = []
  max_score = -100
  for i in range(15):
    for j in range(15):
      for k in range(2):
        all_score.append([play(i,j,k,tiles,board),i,j,k])
  all_score.sort()
  max_score = all_score[-1][0]
  if max_score == -1:
    return [-1,-1,-1,-1]
  A = []
  for e in all_score:
    if e[0] == max_score:
      A.append(e)
  A.sort()
  return A[0]

00065: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_20.0
[[-1, 5-1, 7-1, -1]]
test_best_play_30.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 84, 02, 01], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1360, 'const': 405, 'code+const': 1765}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words=[];invalid_words=[]
    for i in range(15):
      x=''
      for j in range(15):
        if board[i][j]=='':
          x+=' '
        else:
          x+=board[i][j]
      x=x.split()
      for k in range(len(x)):
        word=is_valid(x[k])
        if word is True:
          valid_words.append(x[k])
        elif len(x[k])>1 and word is False:
          invalid_words.append(x[k])
    for i in range(15):
      x=''
      for j in range(15):
        if board[j][i]=='':
          x+=' '
        else:
          x+=board[j][i]
      x=x.split()
      for k in range(len(x)):
        word=is_valid(x[k])
        if word is True:
          valid_words.append(x[k])
        elif len(x[k])>1 and word is False:
          invalid_words.append(x[k])
    valid_words.sort()
    invalid_words.sort()
    return [valid_words,invalid_words]
def get_play(board, new_board):
    x=''
    play=[]
    for i in range(15):
      for j in range(15):
        if board[i][j]!=new_board[i][j]:
          x+=new_board[i][j]
          play.append(i)
          play.append(j)
    y=play[0]
    z=play[1]
    if len(x)==1 or play[0]==play[2]:
      d=0
    elif play[0]!=play[2]:
      d=1
    return [y,z,d,x]
def play(row,col,down,tiles,board):
    old_valid_words=get_all_words(board)[0]
    old_invalid_words=get_all_words(board)[1]
    new_board=place_tiles(row,col,down,tiles,board)[1]
    new_valid_words=get_all_words(new_board)[0]
    new_invalid_words=get_all_words(new_board)[1]
    for i in range(len(old_valid_words)):
      if old_valid_words[i] in new_valid_words:
        new_valid_words.remove(old_valid_words[i])
    for i in range(len(old_invalid_words)):
      if old_invalid_words[i] in new_invalid_words:
        new_invalid_words.remove(old_invalid_words[i])
    score=0
    for i in range(len(new_valid_words)):
      for k in new_valid_words[i]:
        score+=get_value(k)
    if len(new_invalid_words)>0:
      score=-1
      board=board
    elif score>0 and len(tiles)>=7:
      score+=50
      board=new_board
    return score
def best_play(tiles,board):
    list_row=[]
    list_col=[]
    score_boardx=[]
    score_boardy=[]
    if board[7][7]=='':
      row=8-len(tiles)
      if row < 0:
        row=0
      col=7
      down=1
      score=play(row,col,down,tiles,board)
    else:
      for i in range(15):
        for j in range(15):
          x=play(i,j,0,tiles,board)
          y=play(i,j,1,tiles,board)
          score_boardx.append(x)
          score_boardy.append(y)
          list_row.append(i)
          list_col.append(j)
      mx=max(score_boardx)
      my=max(score_boardy)
      if mx>my:
        mm=mx
        j=score_boardx.index(mx)
        row=list_row[j]
        col=list_col[j]
        down=0
        score=mx
      elif my>mx:
        mm=my
        j=score_boardy.index(my)
        row=list_row[j]
        col=list_col[j]
        down=1
        score=my
      elif mx==my and mx!=0 and my!=0:
        mm=mx
        j=score_boardx.index(mx)
        row=list_row[j]
        col=list_col[j]
        down=0      
        score=mx
      elif mx==my and mx==0 and my==0:
        score=-1;down=-1;row=-1;col=-1
    return [score,row,col,down]

00066: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_20.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_60.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_90.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF',
   'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_100.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS',
   'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_10.0IndexError('list index out of range')
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 01, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_20.0
[[1, 7, 01, 'MALEATE'], [5, 6, 01, 'JURY'], [5, 8, 01, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 01, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 01, 'POZ'], [5, 5, 01, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_30.0
[[6, 6, 01, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_50.0
[[6, 9, 01, 'CAT']]
test_get_play_60.0
[[6, 7, 01, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_90.0IndexError('list index out of range')
[]
test_get_play_100.0
[[0, 7, 01, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 01, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 01, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 01, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 01, 'MALEFICE'], [0, 10, 01, 'DOOLAN'], [4, 9, 01, 'POGEY'],
 [0, 14, 01, 'AGROS'], [3, 2, 01, 'TONIEST'], [9, 1, 01, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 01, 'DIXIT'], [11, 4, 01, 'PINS'], [5, 0, 01, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 01, 'CAB'], [11, 12, 01, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_30.0
[-14]
test_play_40.0
[-14, -21]
test_play_50.0
[-160, -172]
test_play_60.0
[-160, -1]
test_play_70.0
[-163, -14]
test_play_80.0
[-162]
test_play_90.0
[-11, -15, -124, -17, -185, -12]
test_play_100.0
[-19, -133, -136, -18, -12, -173, -165, -17, -174, -16]
test_play_110.0
[-167, -61, -128, -11, -13, -185, -11, -12, -17, -125, -17, -14, -21, -132, -12, -15, -16, -168, -16, -13, -10, -127, -128]
test_play_120.0
[-11]
test_play_130.0
[-19]
test_play_140.0
[-18, -120, -126, -1]
test_play_150.0
[-139]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 584, 'const': 258, 'code+const': 842}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    w = [] ; gaw = [[],[]]
    for i in range(15):
      wl = '' ; wr = ''
      for j in range(15):
          if len(wl) == 1 and board[i][j] == '':wl = ''
          if board[i][j] != '':wl += board[i][j]
          elif len(wl) >= 2 and board[i][j] == '':
              w.append(wl)
              wl = ''
          if len(wr) == 1 and board[j][i] == '':wr = ''
          if board[j][i] != '':wr += board[j][i]
          elif len(wr) >= 2 and board[j][i] == '':
              w.append(wr)
              wr = ''
    w.sort()
    for e in w:
      if is_valid(e) == True:
        gaw[0].append(e)
      else:
        gaw[1].append(e)
    return gaw
def get_play(board, new_board):
    gp = [0,0,0,""] ; fr = [] ; fc = []
    for i in range(15):
      for j in range(15):
        if board[i][j] != new_board[i][j]:
          fr.append(i) ; fc.append(j) ; gp[3] += new_board[i][j]
    if fr[0] == fr[1]:gp[2] = 0
    else:gp[1] = 1
    gp[0]=fr[0] ; gp[1]=fc[0]
    return gp
def play(row,col,down,tiles,board):
    return -1
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00067: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1778, 'const': 855, 'code+const': 2633}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    x=[]
    for i in range(15):
        y=[]
        for e in f(board[i]):
            x.append(e)
        for j in range(15):
            y.append(board[j][i])
        for e in f(y):
            x.append(e)
    return [sorted([e for e in x if is_valid(e)]),sorted([e for e in x if not is_valid(e)])]
def get_play(board, new_board):
    b=False
    for i in range(15):
        for j in range(15):
            if board[i][j]!=new_board[i][j]:
                b=True
                break
        if b:
            break
    k=0
    text=''
    for z in range(i+1,15):
        if board[z][j]!=new_board[z][j]:
            k=1
            break
    if k:
        for z in range(15):
            if board[z][j]!=new_board[z][j]:
                text+=new_board[z][j]
    else:
        for z in range(15):
            if board[i][z]!=new_board[i][z]:
                text+=new_board[i][z]
    return [i,j,k,text]
def play(row,col,down,tiles,board):
    x=get_all_words_and_index(place_tiles(row,col,down,tiles,board)[1])
    y=get_all_words_and_index(board)
    if not place_tiles(row,col,down,tiles,board)[0] or x[1]!=[]:
        return -1
    for e in y[0]:
        if e in x[0]:
            x[0].remove(e)
    if len(tiles)>=7:
        s=50
    else:
        s=0
    ss=0
    for e in x[0]:
        ss+=sum([get_value(u) for u in e[0]])
    return ss+s
def best_play(tiles,board):
    b=False
    x={}
    for i in range(15):
        for j in range(15):
            for k in range(2):
                s=play(i,j,k,tiles,board)
                if s!=-1:
                    b=True
                    if not s in x:
                        x[s]=[[i,j,k]]
                    else:
                        x[s].append([i,j,k])
    if not b:
        return [-1,-1,-1,-1]
    i=sorted(x)[::-1][0]
    return [i]+sorted(x[i])[0]
def f(x):
    t=''
    for e in x:
        if 'A'<=e<='Z':
          t+=e
        else:
          t+=' '
    return [e for e in t.strip().split() if len(e)>=2]
def ff(x):
    t=''
    for e in x:
        if 'A'<=e<='Z':
          t+=e
        else:
          t+=' '
    return [e for e in t.strip().split()]
def g(i,x):
    t=''
    for z in range(len(x)):
        if 'A'<=x[z]<='Z':
            t+=str(i)+str(z)
        else:
            t+=' '
    return [e for e in t.strip().split()]
def h(i,x):
    t=''
    for z in range(len(x)):
        if 'A'<=x[z]<='Z':
            t+=str(z)+str(i)
        else:
            t+=' '
    return [e for e in t.strip().split()]
def z(x,y):
    z=[]
    for i in range(len(x)):
        z.append([x[i],y[i]])
    return z
def get_all_words_and_index(board):
    x=[]
    for i in range(15):
        y=[]
        x+=(z(ff(board[i]),g(i,board[i])))
        for j in range(15):
            y.append(board[j][i])
        x+=(z(ff(y),h(i,y)))
    x=[e for e in x if len(e)>0]
    return [sorted([e for e in x if is_valid(e[0]) and len(e[0])>=2]),sorted([e for e in x if not is_valid(e[0]) and len(e[0])>=2])]

00068: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1]]
[[87, 12, 0, 0]]
[[79, 1, 12, 1]]
[[59, 1, 0, 0]]
[[11, 2, 3, 0]]
[[65, 3, 4, 1]]
[[19, 6, 1, 0]]
[[7, 4, 2, 1]]
[[11, 0, 1, 0]]
[[22, 3, 8, 1]]
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1]]
[[63, 10, 0, 0]]
[[63, 1, 1, 0]]
[[9, 7, 3, 1]]
[[19, 13, 0, 0]]
[[72, 14, 4, 0]]
[[17, 6, 6, 0]]
[[8, 3, 3, 0]]
[[18, 4, 0, 0]]
[[16, 5, 1, 0]]
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1]]
[[62, 13, 0, 0]]
[[58, 1, 8, 0]]
[[10, 0, 1, 0]]
[[68, 0, 11, 1]]
[[24, 6, 8, 1]]
[[18, 8, 9, 1]]
[[10, 1, 2, 1]]
[[21, 5, 3, 1]]
[[27, 4, 4, 1]]
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1596, 'const': 350, 'code+const': 1946}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  fin = [[],[]] 
  for i in range(15):
    j=0;a=''
    while j <= 14:
      a=''
      while j <= 14:
        if a!='' and board[i][j] == '':break
        elif board[i][j] != '':
          a += board[i][j]
          j += 1
        else:
          j += 1
      if len(a)>1:
        if is_valid(a):fin[0].append(a)
        elif a!='' and is_valid(a)==False:fin[1].append(a)
  for i in range(15):
    j=0;a=''
    while j <= 14:
      a=''
      while j <= 14:
        if a!='' and board[j][i] == '':break
        elif board[j][i] != '':
          a += board[j][i]
          j += 1
        else:
          j += 1
      if len(a)>1:
        if is_valid(a):fin[0].append(a)
        elif a!='' and is_valid(a)==False:fin[1].append(a)
  for i in range(2):
    fin[i].sort()
  return fin
def get_play(board, new_board):
  tile ='';fin=[];test = copy_board(board)
  for i in range(15):
    for j in range(15):
      if board[i][j]!=new_board[i][j]:tile += new_board[i][j]
  for i in range(15):
    for j in range(15):
      if place_tiles(i,j,0,tile,test)[1] == new_board:
        return [i,j,0,tile.upper()]
      elif place_tiles(i,j,1,tile,test)[1] == new_board:
        return [i,j,1,tile.upper()]
  return fin
def play(row,col,down,tiles,board):
  score = 0
  test = copy_board(board)
  test = place_tiles(row,col,down,tiles,test)[1]
  if get_all_words(board)[0]==get_all_words(test)[0] or get_all_words(board)[1]!=get_all_words(test)[1]:
    return -1
  else:
    a = get_all_words(test)[0]
    for i in get_all_words(board)[0]:
      if i in a:
        a.remove(i)
    for i in a: 
      for j in i: 
        score += get_value(j)
  if len(tiles)>=7:
    score += 50
  return score
def best_play(tiles,board):
  sc = []
  for i in range(15):
    for j in range(15):
      if play(i,j,0,tiles,board) != -1:
        if sc == []:
          sc.append([play(i,j,0,tiles,board),i,j,0])
        elif sc[0][0]<play(i,j,0,tiles,board):
          sc = [[play(i,j,0,tiles,board),i,j,0]]
        elif sc[0][0]==play(i,j,0,tiles,board):
          if sc[0][1]>i:
            sc = [[play(i,j,0,tiles,board),i,j,0]]
          elif sc[0][1]<i:
            pass
          elif sc[0][1]==i:
            if sc[0][2]>j:
              sc = [[play(i,j,0,tiles,board),i,j,0]]
            elif sc[0][2]<j:
              pass
      if play(i,j,1,tiles,board) != -1:
        if sc == []:
          sc.append([play(i,j,1,tiles,board),i,j,1])
        elif sc[0][0]<play(i,j,1,tiles,board):
          sc = [[play(i,j,1,tiles,board),i,j,1]]
        elif sc[0][0]==play(i,j,1,tiles,board):
          if sc[0][1]>i:
            sc = [[play(i,j,1,tiles,board),i,j,1]]
          elif sc[0][1]<i:
            pass
          elif sc[0][1]==i:
            if sc[0][2]>j:
              sc = [[play(i,j,1,tiles,board),i,j,1]]
            elif sc[0][2]<j:
              pass
  if sc == []:
    sc = [[-1,-1,-1,-1]]
  print(sc)
  return sc[0]

00069: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_40.0
[14, -21]
test_play_50.0
[60, 572]
test_play_60.0
[60, 58-1]
test_play_70.0
[63, -14]
test_play_81.0
[62]
test_play_90.0
[11, 125, 724, 17, 859, -12]
test_play_100.0
[9, 133, 1236, 18, 12, 5973, 65, 107, 5974, -16]
test_play_110.0
[67, 61, -128, -11, -13, -185, -11, -12, -17, -125, -17, -14, -21, -132, -12, -15, -16, -168, -16, -13, -10, -127, -128]
test_play_120.0
[-11]
test_play_130.0
[-19]
test_play_140.0
[8, 820, 826, 8-1]
test_play_150.0
[-139]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 1802, 'const': 364, 'code+const': 2166}
check_import({'allowable': ['math']}): none
def word_row(board):
    x = []
    for i in range(len(board)):
        y = board[i]
        J = 0
        for j in range(len(board[i])):
            if j+J <= 14 :
                if y[j+J] != '':
                    if '' in y[j+J:]:
                        k = y[j+J:].index('')
                        s = ''.join(y[j+J:j+J+k])
                        S = s.upper()
                        x.append(S)
                        if J == 0:
                            J = k
                        else:
                            J += k
                    else:
                        s = ''.join(y[j+J:])
                        S = s.upper()
                        x.append(S)
                        break
    return x
def word_col(board):
    x = []
    for i in range(len(board)):
        y = []
        P = 0
        for j in range(len(board[i])):
            y.append(board[j][i])
        for p in range(len(board[i])):
            if p+P <= 14 :
                if y[p+P] != '':
                    if '' in y[p+P:]:
                        k = y[p+P:].index('')
                        s = ''.join(y[p+P:p+P+k])
                        S = s.upper()
                        x.append(S)
                        if P == 0:
                            P = k
                        else:
                            P += k
                    else:
                        s = ''.join(y[p+P:])
                        S = s.upper()
                        x.append(S)
                        break
    return x
def get_all_words(board):
    Vword = []
    IVword = []
    x = word_row(board)
    y = word_col(board)
    for e in x:
        if is_valid(e):
            Vword.append(e)
        else:
            if len(e) >= 2:
                IVword.append(e)
    for w in y:
        if is_valid(w):
            Vword.append(w)
        else:
            if len(w) >= 2:
                IVword.append(w)
    Vword.sort()
    IVword.sort()
    s = [Vword,IVword]
    return s
def get_play(board, new_board):
    x = []
    ans = []
    dROW = []
    dCOL = []
    Check0 = []
    for i in range(len(board)):
        y = board[i]
        Y = new_board[i]
        if y != Y:
            dROW.append(i)
        for j in range(len(board[i])):
            if y[j] != Y[j]:
                dCOL.append(j)
                if y[j] == '':
                    x.append(Y[j])
                else:
                    x.append(y[j])
    if dROW != []:
        ans.append(min(dROW))
    if dCOL != []:
        ans.append(min(dCOL))
    s = ''.join(x)
    t = s.upper()
    if len(dCOL)>1:
        Check0.append(True)
    if len(dROW) == 1 and len(dCOL) == 1:
        Check0.append(True)
    ans.append(0)
    ans.append(t)
    ANS = []
    Box = []
    drow = []
    dcol = []
    for i in range(len(board)):
        for j in range(len(board)):
            a = board[j][i]
            A = new_board[j][i]
            if a != A:
                drow.append(j)
                dcol.append(i)
                if a == '':
                    Box.append(A)
                else:
                    Box.append(a)
    if drow != []:
        ANS.append(min(drow))
    if dcol != []:
        ANS.append(min(dcol))
    pls = ''.join(Box)
    PLS = pls.upper()
    if len(drow)>1:
        for q in range(len(drow)):
            if drow[q] != drow[(q+1)%len(drow)]:
                Check0.append(False)
    if len(drow) == 1 and len(drow) == 1:
        Check0.append(True)
    ANS.append(1)
    ANS.append(PLS)
    if False in Check0:
        return ANS
    else:
        return ans
def play(row,col,down,tiles,board):
    ret = place_tiles(row,col,down,tiles,board)
    BB = ret[1]
    score = 0
    if ret[0]:
        if down == 0:
            x = BB[row][col:]
            k = x.index('')
            y = x[:k]
            s = ''.join(y)
            S = s.upper()
            word = S
            if is_valid(word):
                for e in word:
                    score += get_value(e)
                if len(word) >= 7:
                    score += 50
            else:
                score = -1
        else:
            x = []
            for i in range(len(BB)):
                x.append(BB[i][col])
            k = x.index('')
            y = x[:k]
            s = ''.join(y)
            S = s.upper()
            word = S
            if is_valid(word):
                for e in word:
                    score += get_value(e)
                if len(word) >= 7:
                    score += 50
            else:
                score = -1
        return score
    else:
        return -1
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00070: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 15, 24, 17, 85, 012]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 1827, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 120, 1426, -1]
test_play_150.0
[2839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1072, 'const': 340, 'code+const': 1412}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid = []
    invalid = []
    virtual = copy_board(board)
    for i in range(len(virtual)):
      virtual[i].append('')
    virtual.append(['']*len(virtual[0]))
    for e in virtual:
      word = ''
      for i in range(len(e)-1):
        if e[i]!='':
          word +=e[i]
          if e[i+1]=='':
            if len(word)>1:
              if is_valid(word): valid.append(word)
              else: invalid.append(word)
            word = ''
    for i in range(len(virtual[0])):
      for j in range(len(virtual)-1):
        if virtual[j][i]!='':
          word+=virtual[j][i]
          if virtual[j+1][i]=='':
            if len(word)>1:
              if is_valid(word): valid.append(word)
              else: invalid.append(word)
            word = ''
    valid = [e.upper() for e in sorted(valid)]
    invalid = [e.upper() for e in sorted(invalid)]
    return [valid,invalid]
def get_play(board, new_board):
    word = ''
    pos = []
    down = 0
    for i in range(len(board)):
      for j in range(len(board[0])):
        if board[i][j]!=new_board[i][j]:
          word+=new_board[i][j]
          pos.append([i,j])
    if len(word)>1 and pos[0][0]!=pos[1][0]:
        down = 1
    x,y = pos[0]
    return [x,y,down,word.upper()]
def play(row,col,down,tiles,board):
    valid,new_board  = place_tiles(row,col,down,tiles,board)
    if not valid or len(get_all_words(new_board)[1])!=0: return -1
    old_words = get_all_words(board)[0]
    new_words = get_all_words(new_board)[0]
    score = 0
    for e in new_words:
      if e not in old_words:
        for s in e:
          score+=get_value(s)
    if len(tiles)>=7:
      score+=50
    return score
def best_play(tiles,board):
    a = []
    s = []
    not_playable = True
    for i in range(15):
      for j in range(15):
        for d in range(2):
          x = play(i,j,d,tiles,board)
          a.append([x,[i,j,d]])
    for e in a:
      if e[0]!=-1:
        not_playable = False
        break
    if not_playable: return [-1,-1,-1,-1]
    a.sort(reverse=True)
    best = a[0][0]
    for k in a:
      if k[0]==best:
        s.append(k)
    s.sort()
    score,lis = s[0]
    return [score,lis[0],lis[1],lis[2]]

00071: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0
[49-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 15, 24, 17, 85, 012]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 1827, 28]
test_play_120.0
[411]
test_play_130.0
[59]
test_play_140.0
[8, 820, 1126, 8-1]
test_play_150.0
[2839]
test_best_play_10.0
[[469, 14, 147, 01]]
test_best_play_20.0
[[-1, 0-1, 0-1, 0-1]]
test_best_play_30.0
[[4968, 140, 147, 01], [4987, 142, 140, 0], [479, 14, 142, 01], [459, 14, 140, 0], [411, 72, 73, 10], [650, 143, 14, 01],
 [189, 96, 81, 10], [117, 104, 92, 1], [12, 12, 10, 1, 0], [122, 113, 118, 1]]
test_best_play_40.0
[[4971, 140, 147, 01], [4963, 140, 140, 0], [4963, 14, 14, 0], [79, 7, 73, 1], [119, 103, 80, 10], [5072, 14, 14, 0],
 [187, 96, 96, 10], [148, 103, 103, 10], [918, 94, 110, 10], [16, 125, 12, 10]]
test_best_play_50.0
[[4983, 140, 147, 01], [4962, 143, 140, 0], [4958, 14, 148, 0], [810, 70, 71, 10], [5068, 140, 141, 01], [724, 106, 8, 1],
 [158, 108, 9, 1], [130, 91, 102, 1], [213, 105, 113, 1], [27, 104, 124, 1]]
bytecount: {'code': 2110, 'const': 338, 'code+const': 2448}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  word = []
  w = ""
  v_word = []
  inv_word = []
  for i in range (15) :
    for j in range (15) :
      if board[i][j] != "" :
        if j != 14 :
          w += board[i][j]
        else :
          w += board[i][j]
          word.append(w)
          w = ""
      else :
        if len(w) != 0 : 
          word.append(w)
          w = ""
        else :
          w = ""
  for k in range (15) :
    for l in range (15) :
      if board[l][k] != "" :
        if l != 14 :
          w += board[l][k]
        else :
          w += board[l][k]
          word.append(w)
          w = ""
      else :
        if len(w) != 0 :
          word.append(w)
          w = ""
        else :
          w = ""
  for m in word :
    if is_valid(m) == True :
      v_word.append(m)
    else :
      if len(m) >= 2 :
        inv_word.append(m)
  if len(v_word) > 1 :
    v_word = sorted(v_word)
  if len(inv_word) > 1 :
    inv_word = sorted(inv_word) 
  return [v_word,inv_word]
def get_play(board, new_board):
  row = []
  col = []
  down = 1
  w = ""
  word = []
  z = []
  for i in range (15) :
    for j in range (15) :
      if j != 14 :
        if board[i][j] != new_board[i][j] :
          row.append(i)
          col.append(j)
          w += new_board[i][j]
        elif board[i][j] == "" :
          if len(w) > 0 :
            word.append(w)
            w = ""
      else :
        if board[i][j] != new_board[i][j] :
          row.append(i)
          col.append(j)
          w += new_board[i][j]
          word.append(w)
        else :
          if len(w) > 0 :
            word.append(w)
        w = ""
  for q in word :
    if len(q) > 1 :
      down = 0
  for k in range (15) :
    for l in range (15) :
      if l != 14 :
        if board[l][k] != new_board[l][k] :
          row.append(l)
          col.append(k)
          w += new_board[l][k]
        elif board[l][k] == "" :
          if len(w) > 0 :
            word.append(w)
            w = ""
      else :
        if board[l][k] != new_board[l][k] :
          row.append(l)
          col.append(k)
          w += new_board[l][k]
          word.append(w)
        else :
          if len(w) > 0 :
            word.append(w)
        w = ""
  for y in word :
    if y not in z :
      z.append(y)
  if len(z) == 1 :
    down = 0
  for p in word :
    if len(p) > len(w) :
      w = p
  return [row[0],col[0],down,w]
def play(row,col,down,tiles,board):
  score = 0
  bonus = 0
  new_board = place_tiles(row,col,down,tiles,board)[1]
  word1 = get_all_words(board)
  word2 = get_all_words(new_board)
  v_word = []
  if len(tiles) >= 7 :
    bonus = 50
  if len(word1[0]) > 0 :
    for i in word2[0] :
      if i not in word1[0] and i not in v_word :
        v_word.append(i)
    for j in v_word :
      for k in range (len(j)) :
        score += get_value(j[k])
  else :
    if len(word2[0]) > 0 : 
      for l in word2[0] :
        if l not in v_word :
          v_word.append(l)
      for m in v_word :
        for o in range (len(m)) :
          score += get_value(m[o])
    else :
      score = -1
  return score+bonus
def best_play(tiles,board):
  row = 0
  col = 0
  down = 0
  score = 0
  x = 0
  y = 0
  xl = []
  yl = []
  for i in range (15) :
    for j in range (15) :
      if play(i,j,1,tiles,board) > score :
        x = i
        y = j
  xl.append(x)
  yl.append(y)
  x = 0
  y = 0
  score = 0
  for k in range (15) :
    for l in range (15) :
      if play(k,l,0,tiles,board) > score :
        x = i
        y = j
  xl.append(x)
  yl.append(y)
  if play(xl[0],yl[0],1,tiles,board) > play(xl[1],yl[1],0,tiles,board) :
    score = play(xl[0],yl[0],1,tiles,board)
    row = xl[0]
    col = yl[0]
    down = 1
  elif play(xl[0],yl[0],1,tiles,board) < play(xl[1],yl[1],0,tiles,board) :
    score = play(xl[1],yl[1],0,tiles,board)
    row = xl[1]
    col = yl[1]
    down = 0
  else :
    if xl[0] < xl[1] :
      score = play(xl[0],yl[0],1,tiles,board)
      row = xl[0]
      col = yl[0]
      down = 1
    elif xl[1] < xl[0] :
      score = play(xl[1],yl[1],0,tiles,board)
      row = xl[1]
      col = yl[1]
      down = 0
    else :
      if yl[0] < yl[1] :
        score = play(xl[0],yl[0],1,tiles,board)
        row = xl[0]
        col = yl[0]
        down = 1
      else :
        score = play(xl[1],yl[1],0,tiles,board)
        row = xl[1]
        col = yl[1]
        down = 0
  return [score,row,col,down]

00072: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 1827, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 120, 1426, 8-1]
test_play_150.0
[2839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1398, 'const': 338, 'code+const': 1736}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid = [] ; invalid = [] ; word = "" ; blank_board =  make_board ; word_list = []  ; point = [] ; checker = False 
  for i in range(15) :
    if board[i] != blank_board :
      for j in range(15) :
        if board[i][j] != "" :
          word += board[i][j]
        else : 
          word_list.append(word)
          word = ""
      word_list.append(word)
      word = ""
    for coln in range(15) :
      if board[i][coln] != "" :
        row = i 
        while True :
          if row <= 14 and [row,coln] not in point :
            if board[row][coln] != "" :
              word += board[row][coln]
              point.append([row,coln])
              row += 1
            else  :
              break
          else :
            break 
        word_list.append(word)
        word = ""
  for wordss in word_list :
    if len(wordss) >= 2 :
      if  is_valid(wordss) :
        valid.append(wordss)
      else   :
         invalid.append(wordss)
  valid.sort() 
  invalid.sort()
  return [valid,invalid]
def get_play(board, new_board):
  ans = [] ; tile = "" ; position = []
  for i in range(15) :
    for j in range(15) :
      if board[i][j] != new_board[i][j] :
        position.append([i,j])
        tile += new_board[i][j]
  ans.append(position[0][0])
  ans.append(position[0][1])
  if len(tile) == 1 : down = 0
  else :
    for i in range(len(position)-1) :
      if position[i][0] != position[i+1][0] : 
        down = 1 
      elif position[i][1] != position[i+1][1] : 
        down  = 0
  ans.append(down)
  ans.append(tile) 
  return ans 
def play(row,col,down,tiles,board):
  all_score = 0 ; score = 0 ; new_word = [] ; same_word = []
  newbo = place_tiles(row,col,down,tiles,board) 
  new_add_old = get_all_words(newbo[1]) 
  only_old = get_all_words(board) 
  for i in range(len(new_add_old[0])) :
    c = 0
    for j in range(len(new_add_old[0])) :
      if new_add_old[0][i] == new_add_old[0][j] :
        c += 1 
    if c > 1 : 
      same_word.append([new_add_old[0][i],c]) 
  for i in range(len(new_add_old[0])) :
    if new_add_old[0][i] not in only_old[0] :
      new_word.append(new_add_old[0][i])
  if len(new_word) == 0 :
    if len(same_word) > 1 :
      new_word.append(same_word[0][0])
    else : return -1
  for i in range(len(new_word)) :
    for j in range(len(new_word[i])) :
      if len(new_word[i][j]) > 1 :
        for k in range(len(new_word[i][j])) :
          all_score += letter_value[new_word[i][j][k].lower()]
      else : 
         all_score += letter_value[new_word[i][j].lower()]
  if len(tiles) > 6 :
    all_score += 50
  return all_score
def best_play(tiles,board):
  score_list = [] 
  for row in range(15) :
    for col in range(15):
      for down in range(2) :
        new_bo = place_tiles(row,col,down,tiles,board) 
        if new_bo[0] : 
          word = get_all_words(new_bo[1])
          if len(word[1])  == 0 :
            score = play(row , col ,down , tiles , board)
            score_list.append([score,row,col,down])
          elif len(word[1]) > 0  : 
            score_list.append([-1,-1,-1,-1])
  max_score  = max(score_list)[0]
  for i in range(len(score_list)) :
    if max_score == score_list[i][0] :
      ans = score_list[i]
      break 
  return ans

00073: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1190, 'const': 309, 'code+const': 1499}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words=[] ; invalid_words=[] ; t=""
    for row in range(15):
      for col in range(15):
        if board[row][col]=="":
          if len(t)>1 and is_valid(t)==True:
            valid_words.append(t)
          if len(t)>1 and is_valid(t)==False:
            invalid_words.append(t)
          t=""
        else:
          t+=board[row][col]
      if len(t)>1 and is_valid(t)==True:
        valid_words.append(t)
      elif len(t)>1 and is_valid(t)==False:
        invalid_words.append(t)
      t=""
    for row in range(15):
      for col in range(15):
        if board[col][row]=="":
          if len(t)>1 and is_valid(t)==True:
            valid_words.append(t)
          if len(t)>1 and is_valid(t)==False:
            invalid_words.append(t)
          t=""
        else:
          t+=board[col][row]
      if len(t)>1 and is_valid(t)==True:
        valid_words.append(t)
      elif len(t)>1 and is_valid(t)==False:
        invalid_words.append(t)
      t=""
    valid_words.sort() ; invalid_words.sort()
    return [valid_words,invalid_words]
def get_play(board, new_board):
    stop=False
    down=0
    for row in range(15):
      for col in range(15):
        if board[row][col]!=new_board[row][col]:
          tiles=new_board[row][col]
          stop=True
          break
      if stop:break 
    for k in range(col+1,15):
      if board[row][k]!=new_board[row][k]:
        tiles+=new_board[row][k]
    for k in range(row+1,15):
      if board[k][col]!=new_board[k][col]:
        down=1
        tiles+=new_board[k][col]
    return [row,col,down,tiles]
def play(row,col,down,tiles,board):
    if place_tiles(row,col,down,tiles,board)[0]==False:
      return -1
    new_board=place_tiles(row,col,down,tiles,board)[1]
    if get_all_words(new_board)[1] != []:
      return -1
    valid_word=get_all_words(board)[0]
    valid_word_new=get_all_words(new_board)[0]
    wordlist=[]
    for e in valid_word_new:
      if e not in valid_word:
        wordlist.append(e)
      else:
        valid_word.remove(e)
    score=0
    for word in wordlist:
      for ch in word:
        score+=get_value(ch)
    if len(tiles)>=7:
      score+=50
    return score
def best_play(tiles,board):
    max_score=-1 ; row=-1 ; col=-1 ; down=-1
    for r in range(15):
      for c in range(15):
        for d in range(2):
          score=play(r,c,d,tiles,board)
          if score > max_score:
            max_score=score ; row=r ; col=c ; down=d
          elif score!=-1 and score==max_score:
            if r<row:
              row=r ; col=c ; down=d
            elif r==row and c<col:
              col=c ; down=d
            elif r==row and c==col and d<down:
              down=d
    return [max_score,row,col,down]

00074: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 940, 'const': 372, 'code+const': 1312}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  word = ''
  for e in board:
    for i in range(len(e)):
      if 'A'<=e[i]<='Z':
        word += e[i]
      else:
        word += ' '
    word += ' '
  for i in range(len(board[0])):
    for e in board:
      if 'A'<=e[i]<='Z':
        word += e[i]
      else:
        word += ' '
    word += ' '
  all = word.split(' ')
  val = []
  inva = []
  for e in all:
    if len(e) >=2:
      if is_valid(e):
        val.append(e)
      else:
        inva.append(e)
  val.sort()
  inva.sort()
  return [val,inva]
def get_play(board, new_board):
  add = []
  ind = []
  for i in range(len(board)):
    for j in range(len(board[0])):
      if board[i][j] != new_board[i][j]:
        add.append(new_board[i][j])
        ind.append([i,j])
  down = 0
  if ind[0][0] < ind[-1][0] and len(add)>=2:
    down = 1
  add = ''.join(add)
  return [ind[0][0],ind[0][1],down,add]
def play(row,col,down,tiles,board):
  boo,new = place_tiles(row,col,down,tiles,board)
  if boo == False:
    return -1
  all1 = get_all_words(board)
  all2 = get_all_words(new)
  if all2[1] != []:
    return -1
  score = 0
  newword = []
  for e in all2[0]:
    if e not in all1[0]:
      for f in e:
        score += get_value(f)
    else:
      all1[0].remove(e)
  if len(tiles) >= 7 and score>0:
    score += 50
  return score
def best_play(tiles,board):
  l = []
  for i in range(len(board)):
    for j in range(len(board[0])):
      s0 = play(i,j,0,tiles,board)
      if s0 == -1:
        l.append([-1,-1,-1,-1])
      else:
        l.append([s0,i,j,0])
      s1 = play(i,j,1,tiles,board)
      if s1 == -1:
        l.append([-1,-1,-1,-1])
      else:
        l.append([s1,i,j,1])
  l.sort()
  maxs = l[-1][0]
  for e in l:
    if e[0] == maxs:
      return e

00075: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 844, 'const': 324, 'code+const': 1168}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    wordValid=[]
    wordUnvalid=[]
    for i in range(15):
        text=''
        for j in range(15):
            if board[i][j].isalpha():
                text+=board[i][j]
            if not board[i][j].isalpha() and len(text)>0 or j==14:
                if len(text)>1:
                    if is_valid(text):
                        wordValid.append(text)
                    else:
                        wordUnvalid.append(text)
                text=''
    for i in range(15):
        text=''
        for j in range(15):
            if board[j][i].isalpha():
                text+=board[j][i]
            if not board[j][i].isalpha() and len(text)>0 or j==14:
                if len(text)>1:
                    if is_valid(text):
                        wordValid.append(text)
                    else:
                        wordUnvalid.append(text)
                text=''
    wordValid.sort()
    wordUnvalid.sort()
    return [wordValid,wordUnvalid]
def get_play(board, new_board):
    firstI=-1
    firstJ=-1
    text=''
    down=0
    for i in range(15):
        for j in range(15):
            if board[i][j]!=new_board[i][j]:
                text+=new_board[i][j]
                if firstI==-1:
                    firstI=i
                    firstJ=j
                elif j==firstJ:
                    down=1
    return [firstI,firstJ,down,text]
def play(row,col,down,tiles,board):
    place=place_tiles(row,col,down,tiles,board)
    wordOld=get_all_words(board)
    wordNew=get_all_words(place[1])
    w=[]
    ans=0
    if place[0]==False or len(wordNew[1])>0:
        return -1
    for i in wordNew[0]:
        if i in wordOld[0]:
            wordOld[0].remove(i)
        else:
            w.append(i)
    for i in w:
        for j in i:
            ans+=get_value(j)
    if len(tiles)>=7:
        ans+=50
    return ans
def best_play(tiles,board):
    ans1=-1
    ans2=-1
    ans3=-1
    ans4=-1
    for i in range(15):
        for j in range(15):
            for k in range(2):
                p=play(i,j,k,tiles,board)
                if p>ans1:
                    ans1=p
                    ans2=i
                    ans3=j
                    ans4=k
    return [ans1,ans2,ans3,ans4]

00076: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 193, 10, 1827, 28]
test_play_120.0
[811]
test_play_131.0
[9]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[2839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1726, 'const': 452, 'code+const': 2178}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_word=[]
    invalid_word=[]
    nrow=len(board)
    ncol=len(board[0])
    word_l2r=''
    for i in range(nrow):
        for j in range(ncol):
            if 'a'<=board[i][j].lower()<='z' :
                word_l2r+=board[i][j]
            else:
                word_l2r+=' '
            if j==14:
                word_l2r+=' '
    word_l2r=word_l2r.split()
    word_u2d=''
    for i in range(ncol):
        for j in range(nrow):
            if 'a'<=board[j][i].lower()<='z':
                word_u2d+=board[j][i]
            else:
                word_u2d+=' '
            if j==14:
                word_u2d+=' '
    word_u2d=word_u2d.split()
    for i in range(len(word_l2r)):
        if is_valid(word_l2r[i]):
            valid_word.append(word_l2r[i])
        else:
            if len(word_l2r[i])!=1:
                invalid_word.append(word_l2r[i])
    for i in range(len(word_u2d)):
        if is_valid(word_u2d[i]):
            valid_word.append(word_u2d[i])
        else:
            if len(word_u2d[i]) !=1:
                invalid_word.append(word_u2d[i])
    valid_word.sort()
    invalid_word.sort()
    return [valid_word,invalid_word]
def get_play(board, new_board):
    nrow=len(board)
    ncol=len(board[0])
    tiles=''
    for i in range(nrow):
        for j in range(ncol):
            if new_board[i][j]!=board[i][j]:
                tiles+=new_board[i][j]
    for i in range(nrow):
        for j in range(ncol):
            if new_board[i][j]!=board[i][j]:
                row=i
                col=j
                to_break=True
                break
            else:
                to_break=False
        if to_break:
            break
    if len(tiles)==1:
            down=0
    else:
        for j in range(col,ncol-1):
            if 'A'<=new_board[row][j+1]<='Z' and new_board[row][j+1] in tiles.upper()                and new_board[row][j+1]!=board[row][j+1]:
                down=0
                break
        for i in range(row,nrow-1):
            if 'A'<=new_board[i+1][col]<='Z' and new_board[i+1][col] in tiles.upper()                 and new_board[i+1][col]!= board[i+1][col]:
                down=1 
                break
    return [row,col,down,tiles]
def play(row,col,down,tiles,board):
    after_board=copy_board(board)
    after_board=place_tiles(row,col,down,tiles,after_board)[1]
    word_in_board=get_all_words(board)
    word_after_tiles=get_all_words(after_board)
    word_score=[]
    for i in range(len(word_after_tiles[0])):
        if word_after_tiles[0][i] not in word_in_board[0]:
            word_score.append(word_after_tiles[0][i])
        if word_after_tiles[0][i] in word_in_board[0]             and tiles.upper() in word_after_tiles[0][i]             and word_after_tiles[0][i] not in word_score            and len(tiles)!=1:
           word_score.append(word_after_tiles[0][i])
    score=0
    if len(tiles)>=7:
        score+=50
    if len(word_score)==0 or len(word_after_tiles[1])!=0:
        score=-1
    else:
        for i in range(len(word_score)):
            for j in range(len(word_score[i])):
                score+=letter_value[word_score[i][j].lower()]
    if score==-1:
        after_board=board
    else:
        board=after_board
    return score
def best_play(tiles,board):
    down=0
    score_list=[]
    for i in range(len(board)):
        for j in range(len(board[0])):
            if place_tiles(i,j,down,tiles,board)[0]:
                score=play(i,j,down,tiles,board)
                if score!=-1:
                    score_list.append([score,i,j,down])
    down=1
    for i in range(len(board)):
        for j in range(len(board[0])):
            if place_tiles(i,j,down,tiles,board)[0]:
                score=play(i,j,down,tiles,board)
                if score!=-1:
                    score_list.append([score,i,j,down])
    max_score=[]
    for i in range(len(score_list)):
        if score_list[i][0]==max(score_list)[0]:
            max_score.append(score_list[i])
    max_score.sort()
    if max_score==[]:
        max_score=[[-1,-1,-1,-1]]
    else:
        row=max_score[0][1]
        col=max_score[0][2]
        down=max_score[0][3]
    return max_score[0]

00077: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 742, 'const': 362, 'code+const': 1104}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  A=[]
  B=[]
  c=''
  x=0
  for i in range(15):
    c+=' '
    for j in board[i]:
      if j == '':
        c+=' '
      else:
        c+=j
  while x<15:
    y=0
    c+=' '
    while y<15:
      if board[y][x]=='':
        c+=' '
      else:
        c+=board[y][x]
      y+=1
    x+=1
  for z in c.strip().split():
    if len(z)>1:
      if is_valid(z):
        A.append(z)
      else:
        B.append(z)
  return [sorted(A),sorted(B)]
def get_play(board, new_board):
  w,I,d='','',0
  for i in range(15):
    for j in range(15):
      if board[i][j]!=new_board[i][j]:
        w+=new_board[i][j]
        if I=='':
          I,J=i,j
        elif j==J:
          d=1
  return [I,J,d,w]
def play(row,col,down,tiles,board):
  s=0
  a,b=get_all_words(board)
  x,y=place_tiles(row,col,down,tiles,board)
  A,B=get_all_words(y)
  if B!=[] or x==False:
    s=-1
  else:
    if len(tiles)>6:
      s+=50
    for i in A:
      if i in a:
        a.remove(i)
      else:
        for j in i:
          s+=get_value(j)
  return s
def best_play(tiles,board):
  V=[[1,-1,-1,-1]]
  for d in range(2):
    for i in range(15):
      for j in range(15):
        n=play(i,j,d,tiles,board)
        if n!=-1:
          V.append([n*-1,i,j,d])
  V.sort()
  V[0][0]*=-1
  return V[0]

00078: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0
[50-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 15, 24, 17, 85, -12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 1827, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 120, 1426, 8-1]
test_play_150.0
[2839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[68, 0, 7, 1], [87, 12, 60, 10], [10879, 41, 512, 1], [7259, 81, 80, 10], [171, 112, 93, 10], [7265, 73, 4, 1],
 [3019, 16, 81, 10], [197, 14, 92, 1], [191, 120, 21, 0], [22, 3, 108, 1]]
test_best_play_40.0
[[71, 0, 7, 1], [763, 210, 80, 10], [7863, 1, 91, 10], [149, 17, 63, 1], [2019, 813, 10, 10], [772, 214, 114, 10],
 [2517, 26, 126, 10], [258, 13, 73, 0], [218, 34, 130, 10], [136, 45, 14, 10]]
test_best_play_50.0
[[83, 0, 7, 1], [8062, 513, 80, 10], [7258, 1, 98, 10], [210, 80, 61, 10], [7468, 0, 101, 1], [1824, 126, 48, 01],
 [178, 18, 69, 1], [2310, 31, 52, 1], [321, 45, 43, 1], [1927, 14, 114, 1]]
bytecount: {'code': 1100, 'const': 354, 'code+const': 1454}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    vl = []
    invl = []
    for i in range(15):
      for j in range(15):
        if board[i][j] != '':
          if ((i-1 >= 0 and board[i-1][j] == '') or i == 0) and i+1 < 15 and board[i+1][j] != '':
            k = i
            word = ""
            while k<15 and board[k][j] != '':
              word += board[k][j]
              k+=1
            if is_valid(word):
              vl += [word]
            else:
              invl += [word]
          if ((j-1 >= 0 and board[i][j-1]=='') or j == 0) and j+1 < 15 and board[i][j+1] != '':
            k = j
            word = ""
            while k<15 and  board[i][k] != '':
              word += board[i][k]
              k+=1
            if is_valid(word):
              vl += [word]
            else:
              invl += [word]
    vl.sort()
    invl.sort()
    return [vl,invl]
def get_play(board, new_board):
    ii,ij=-1,-1
    s = ''
    ld = []
    lr = []
    for i in range(15):
      for j in range(15):
        if new_board[i][j] != board[i][j]:
          if ii == -1 and ij == -1:
            s = new_board[i][j]
            ii = i
            ij = j
          else:
            if ii == i:
              lr += [new_board[i][j]]
            if ij == j:
              ld += [new_board[i][j]]
    return [ii,ij,int(len(ld)!=0),s + ''.join(ld) + ''.join(lr)]
def play(row,col,down,tiles,board):
    prev_words = get_all_words(board)
    vl,nboard = place_tiles(row,col,down,tiles,board)
    after_words = get_all_words(nboard)
    s = 0
    for i in after_words[0]:
      if i not in prev_words[0]:
        for j in i:
          s += get_value(j)
    if len(tiles) >= 7 :
      s += 50
    if s == 0:
      s = -1
    else:
      board = nboard
    return s
def play_test(row,col,down,tiles,board):
  score = play(row,col,down,tiles,board)  
  if score!=-1:
    board = place_tiles(row,col,down,tiles,board)[1]
  print_board(board)
  print(score)
  return board
def best_play(tiles,board):
    max_s = 0
    ans_s = 0
    ans_row=0
    ans_col=0
    ans_down=0
    for i in range(15):
      for j in range(15):
        nboard = copy_board(board)
        s = play(i,j,0,tiles,nboard)
        if s > max_s:
          ans_s = s
          max_s = s
          ans_row=i
          ans_col=j
          ans_down = 0
        nboard = copy_board(board)
        s = play(i,j,1,tiles,nboard)
        if s > max_s:
          ans_s = s
          max_s = s
          ans_row=i
          ans_col=j
          ans_down = 1
    if max_s==0:
      return [-1,-1,-1,-1]
    else:
      return [ans_s,ans_row,ans_col,ans_down]

00079: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_10.0
[[[7, 6], [70, 7'ICE'], [7, 8]], [[7, 4], [7, 5]0, [7, 9]'JUD'],
 [[4, 5], [51, 5'INFSIVE'], [6, 5], [8, 5], [9, 5], [10, 5], [11, 5]], [[6, 8]'M']]
test_get_play_20.0
[[[1, 7], [21, 7], [3, 7], [4, 7'MALEATE'], [5, 7], [6, 7]1, [7, 7]'JURY'], [[5, 6], [6, 6], [7, 6], [8, 6]],
 [[5, 8], [6, 8], [7, 8], [8, 8], [9, 8]],
 [[1, 8'REWTH'], [1, 9]8, [1, 10], [1, 11], [1, 12], [1, 13], [1, 14]'OLEHUNT'],
 [[2, 14], [3, 14], [4, 14], [5, 14], [6, 14], [7, 14'RAVISES'], [8, 14]],
 [[0, 10], [0, 11'TOGA'], [0, 12], [0, 13]], [[5, 13], [6, 13], [7, 13]],
 [[5, 5'POZ'], [6, 5], [7, 5], [8, 5], [9, 5]], [[2, 10], [2, 11'ABAND'],
 [2, 12], [2, 13]],
 [[10, 2], [10, 3'COYE'], [10, 4]2, [10, 5]'FOOS']]
test_get_play_30.0
[[[6, 6], [8, 6], [9, 6], [10, 6]'XUNT']]
test_get_play_40.0
[[[7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7], [7, 8], [7, 9], [7, 10], [7, 11]'INHERITANCE']]
test_get_play_50.0
[[[6, 9], [7, 9], [81, 9]'CAT']]
test_get_play_60.0
[[[6, 7], [81, 7]'CT']]
test_get_play_70.0
[[[7, 3], [7, 4], [7, 5], [7, 9], [7, 10], [7, 11]'COMDER']]
test_get_play_80.0
[[[6, 6], [60, 7]'AT']]
test_get_play_90.0
[[[6, 7], 0, 'M']]
test_get_play_100.0
[[[0, 7], [1, 7], [2, 7], [3, 7'HEPATICS'], [4, 7], [5, 7], [6, 7], [7, 7]],
 [[1, 3], [1, 4], [1, 5], [1, 6], [1, 8]], [[7, 6], [8, 6], [9, 6], [10, 6'MAILS'], [117, 6], [12, 6]'ARREAR'],
 [[2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5]],
 [[13, 6], [13, 7], [13, 8], [13, 9], [13, 10], [13, 11], [13, 12]'EASIED'],
 [[3, 13], [4, 13], [5, 13], [6, 13], [7, 13], [8, 13], [9, 13], [10, 13'SAHIWAL'], [11, 13], [12, 13],
  [13, 13]'MICROLOGIES'],
 [[14, 7], [14, 8], [140, 9]'GAS'], [[7, 5], [8, 5], [9, 5], [10, 5], [11, 5]'GOORY'],
 [[10, 7], [10, 8], [10, 9], [10, 10], [10, 11]'SHIPS'],
 [[2, 11], [3, 11], [4, 11], [5, 11], [6, 11], [7, 11], [8, 11'MALEFICE'], [9, 11]],
 [[0, 10], [1, 10], [2, 10], [3, 10], [4, 10], [5, 10]'DOOLAN'], [[4, 9], [51, 9], [6, 9], [7, 9], [8, 9]'POGEY'],
 [[0, 14], [1, 14], [2, 14'AGROS'], [3, 14], [4, 14]],
 [[3, 2], [4, 2], [5, 2], [6, 2], [7, 2], [8, 2], [9, 2]],
 [[9, 1], [10, 1], [11, 1], [12, 1'TONIEST'], [139, 1], [14, 1]'SLICES'], [[4, 0], [40, 1], [4, 3], [4, 4], [4, 5]'CRONY'],
 [[7, 14], [8, 14], [9, 14], [10, 14'DIXIT'], [11, 14]], [[11, 4], [12, 4], [13, 4], [14, 4]'PINS'],
 [[5, 0], [6, 0], [71, 0'ARED'], [8, 0]], [[0, 1], [0, 2], [0, 3], [0, 4], [0, 5]'GRAFT'], [[12, 9], [120, 10]'MO'],
 [[6, 4], [71, 4'CAB'], [8, 4]], [[11, 12], [12, 12], [14, 12]'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_30.0
[-14]
test_play_40.0
[-14, -21]
test_play_50.0
[-160, -172]
test_play_60.0
[-160, -1]
test_play_70.0
[-163, -14]
test_play_80.0
[-162]
test_play_90.0
[-11, -15, -124, -17, -185, -12]
test_play_100.0
[-19, -133, -136, -18, -12, -173, -165, -17, -174, -16]
test_play_110.0
[-167, -61, -128, -11, -13, -185, -11, -12, -17, -125, -17, -14, -21, -132, -12, -15, -16, -168, -16, -13, -10, -127, -128]
test_play_120.0
[-11]
test_play_130.0
[-19]
test_play_140.0
[-18, -120, -126, -1]
test_play_150.0
[-139]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 988, 'const': 218, 'code+const': 1206}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  t =[]
  f =[]
  all = []
  for i in range(15):
    c = ""
    for j in range(15):
      if board[i][j] == "":
        if c != "":
          k = is_valid(c) 
          if k == True:
            t.append(c)
          if k== False and c != "" and len(c)>1:
            f.append(c)     
        c = ""
      if board[i][j] != "":
        if j-1<-1:
          if  board[i][j+1] !="":
            c += board[i][j]
        if j+1>14:
          if board[i][j-1] != "" :
            c += board[i][j]
        else:
          if board[i][j-1] != "" or board[i][j+1] !="":
            c += board[i][j]
    j = is_valid(c) 
    if j == True:
      t.append(c)
    if j== False and c != "" and len(c)>1:
      f.append(c)     
  for i in range(15):
    e = ""
    for j in range(15):
      if board[j][i] == "":
        if e != "":
          k = is_valid(e) 
          if k == True:
            t.append(e)
          if k== False and e != "" and len(e)>1:
            f.append(e)     
        e = ""
      if board[j][i] != "":
        if j-1<-1:
          if  board[j+1][i] !="":
            e += board[j][i]
        if j+1>14:
          if board[j-1][i] != "" :
            e += board[j][i]
        else:
          if board[j-1][i] != "" or board[j+1][i] !="":
            e += board[j][i]
    k = is_valid(e) 
    if k == True:
      t.append(e)
    if k== False and e != "" and len(e)>1:
      f.append(e)     
  t.sort()   
  f.sort()
  all = [t,f]
  return all
def get_play(board, new_board):
  c =""
  d=[]
  for i in range(15):
    for j in range(15):
      if board[i][j] != new_board[i][j]:
        c += new_board[i][j]
        d.append([i,j])
  return d
def play(row,col,down,tiles,board):
    return -1
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00080: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1136, 'const': 296, 'code+const': 1432}
check_import({'allowable': ['math']}): none
def get_all_words(board):
 valid_words = []
 invalid_words = []
 out= []
 for row in board:
   word =''
   for c in range(len(row)):
     if row[c] != '':
       word += row[c]
       if c == 14:
         if is_valid(word) :
           valid_words.append(word)
           word = ''
         elif is_valid(word) == False and len(word) >1:
           invalid_words.append(word)
           word = ''
       elif row[c+1] =='' :
         if len(word) ==1 : word=''
         elif is_valid(word) :
           valid_words.append(word)
           word = ''
         elif  is_valid(word) == False and len(word) >1:
           invalid_words.append(word)
           word = ''
 board2 =[]
 for c in range(15):
    b =[]
    for r in range(15):
        b.append(board[r][c])
    board2.append(b)
 for row in board2:
   word =''
   for c in range(len(row)):
     if row[c] != '':
       word += row[c]
       if c == 14:
         if is_valid(word) :
           valid_words.append(word)
           word = ''
         elif is_valid(word) == False and len(word) >1:
           invalid_words.append(word)
           word = ''
       elif row[c+1] =='' :
         if len(word) ==1 : word=''
         elif is_valid(word) :
           valid_words.append(word)
           word = ''
         elif  is_valid(word) == False and len(word) >1:
           invalid_words.append(word)
           word = ''
 valid_words.sort()
 invalid_words.sort()
 out.append(valid_words) 
 out.append(invalid_words)
 return out
def get_play(board, new_board):
  add = ''
  all = []
  for r in range(15):
    for c in range(15): 
        if board[r][c] != new_board[r][c]:
          start = [r,c]
          all.append(start)
          add += new_board[r][c]
  if len(add) ==1:
        down =0       
  elif all[0][0] == all[1][0]:
        down =0
  else:
        down =1
  return [all[0][0],all[0][1],down,add]
def play(row,col,down,tiles,board):
  value , board2 =place_tiles(row,col,down,tiles,board)
  if not value: 
    return -1
  a=[]
  valid_words , invalid_words =get_all_words(board)
  valid_words_2 , invalid_words_2 =get_all_words(board2)
  if len(invalid_words_2)>0: 
    return -1
  for i in valid_words_2:
   if i in valid_words: 
     valid_words.remove(i)
   else: a.append(i)
  score=0
  for e in a:
    for i in e:
      score+=get_value(i)
  if len(tiles)>6: 
    score+=50
  return score    
def best_play(tiles,board):
  f=[-1,-1,-1,-1]
  for row in range(15):
    for col in range(15):
      for down in range(2):
        s=play(row,col,down,tiles,board)
        if s>f[0]:
          f=[s,row,col,down]
  return f

00081: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[([69, 1, 7, 1)]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[([68, 0, 7, 1)], ([87, 12, 0, 0)], ([79, 1, 12, 1)], ([59, 1, 0, 0)], ([11, 2, 3, 0)], ([65, 3, 4, 1)],
 ([19, 6, 1, 0)], ([7, 4, 2, 1)], ([11, 0, 1, 0)], ([22, 3, 8, 1)]]
test_best_play_41.0
[([71, 0, 7, 1)], ([63, 10, 0, 0)], ([63, 1, 1, 0)], ([9, 7, 3, 1)], ([19, 13, 0, 0)], ([72, 14, 4, 0)],
 ([17, 6, 6, 0)], ([8, 3, 3, 0)], ([18, 4, 0, 0)], ([16, 5, 1, 0)]]
test_best_play_51.0
[([83, 0, 7, 1)], ([62, 13, 0, 0)], ([58, 1, 8, 0)], ([10, 0, 1, 0)], ([68, 0, 11, 1)], ([24, 6, 8, 1)],
 ([18, 8, 9, 1)], ([10, 1, 2, 1)], ([21, 5, 3, 1)], ([27, 4, 4, 1)]]
bytecount: {'code': 1070, 'const': 348, 'code+const': 1418}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    words = []
    for i in range(len(board)):
        word_in_line = ''
        for j in range(len(board[i])):
            ch = board[i][j]
            if ch != '':
                word_in_line += ch
            else:
                word_in_line += ' '
        words.append(word_in_line.strip().split())
    for j in range(len(board)):
        word_in_line = ''
        for i in range(len(board[j])):
            ch = board[i][j]
            if ch != '':
                word_in_line += ch
            else:
                word_in_line += ' '
        words.append(word_in_line.strip().split())
        wordss = sum(words, [])
    valids = []
    invalids = []
    for e in wordss:
        x = is_valid(e)
        if x == True:
            valids.append(e)
        elif x == False and len(e) > 1:
            invalids.append(e)
    valids = sorted(valids)
    invalids = sorted(invalids)
    return [valids,invalids]
def get_play(board, new_board):
    words = ''
    rowpos = []
    colpos = []
    for i in range(15):
        for j in range(15):
            if new_board[i][j] != '' and board[i][j] == '':
                rowpos.append(i)
                colpos.append(j)
                words += new_board[i][j]
    if len(rowpos) > 1:
        if rowpos[0] == rowpos[1]:
            down = 0
        elif colpos[0] == colpos[1]:
            down = 1
    else:
        return [min(rowpos), min(colpos), 0, words]
    return [min(rowpos), min(colpos), down, words]
def play(row,col,down,tiles,board):
    old_words = get_all_words(board)[0]
    isValid = place_tiles(row,col,down,tiles,board)[0]
    if isValid == False:
        return -1
    else:
        board = place_tiles(row,col,down,tiles,board)[1]
        new_words = get_all_words(board)[0]
        if len(get_all_words(board)[1]) >= 1:
            return -1
        for e in old_words: 
            if e in new_words:
                new_words.remove(e)
        if len(new_words) == 0:
            return -1
        score = 0
        for e in new_words: 
            for ch in e:
                score += get_value(ch)
        if len(tiles) >= 7:
            score += 50
    return score
def best_play(tiles,board):
    score = 0
    maxscore = 0
    moves = []
    for i in range(len(board)):
        for j in range(len(board[i])):
            for k in range(2):
                score = play(i,j,k,tiles,board)
                if score != -1:
                    moves.append([score,i,j,k])
    moves.sort()
    if moves == []:
        return [-1,-1,-1,-1]
    maxscore = moves[-1][0]
    for i in range(len(moves)):
        moves[i][0] = -moves[i][0]
    moves.sort()
    best_move = -moves[0][0], moves[0][1], moves[0][2], moves[0][3]
    return best_move

00082: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1090, 'const': 351, 'code+const': 1441}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  t=''
  lis=[]
  list=[]
  for i in board:
    t=''
    for j in i:
      if j.isalpha():
        t+=j
      else:
        if t!='' and len(t)>=2 and is_valid(t):
          lis+=[t]
        if t!='' and len(t)>=2 and is_valid(t)==0:
          list+=[t]
        t=''
    if len(t)>=2 and is_valid(t):
      lis+=[t]
    if len(t)>=2 and is_valid(t)==0:
      list+=[t]
  t=''
  for i in range(15):
    t=''
    for j in range(15):
      if board[j][i].isalpha():
        t+=board[j][i]
      if board[j][i].isalpha()==0 or j==14:
        if t!='' and len(t)>=2 and is_valid(t):
          lis+=[t]
        if t!='' and len(t)>=2 and is_valid(t)==0:
          list+=[t]
        t=''
  lis.sort()
  list.sort()
  return [lis ,list]
def get_play(board, new_board):
  l = ''
  c = 0
  x = 0
  for i in range(15):
    for j in range(15):
      if board[i][j] != new_board[i][j]:
        if c == 0:
          i1 = i
          j1 = j
          c = 1
        elif c == 1:
          if j1 == j:
            x = 1
          c = 2
        l += new_board[i][j]
  return [i1,j1,x,l]
def play(row,col,down,tiles,board):
  new_board = copy_board(board)
  new_board = place_tiles(row,col,down,tiles,new_board)[1]
  old = get_all_words(board)
  new = get_all_words(new_board)
  sum = 0
  if len(new[1]) >= 1:
    return -1
  else:
    pass
  for i in old[0]:
    for j in range(len(new[0])):
      if new[0][j] == i:
        new[0][j] = ''
        break
      else:
        pass
  for i in new[0]:
    for j in i:
      va = get_value(j)
      if va >= 0:
        sum += va        
  if len(tiles) >= 7:
    sum += 50
  else:
    pass
  return sum
def best_play(tiles,board):
  new_board = copy_board(board)
  max = -1
  i1 = -1
  j1 = -1
  d1 = -1
  for i in range(15):
    for j in range(15):
      d = 0
      v = place_tiles(i,j,d,tiles,new_board)[0]
      if v == 1:
        if max < play(i,j,d,tiles,new_board):
          max = play(i,j,d,tiles,new_board)
          i1 = i
          j1 = j
          d1 = d
      d = 1
      v = place_tiles(i,j,d,tiles,new_board)[0]
      if v == 1:
        if max < play(i,j,d,tiles,new_board):
          max = play(i,j,d,tiles,new_board)
          i1 = i
          j1 = j
          d1 = d
        else:
          pass
      else:
        pass
  return [max,i1,j1,d1]

00083: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 870, 'const': 314, 'code+const': 1184}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  a=[]
  x=[]
  y=[]
  st=''
  for line in board:
    for i in line:
      if i != '':
        st+=i
      elif st!='' :
        a.append(st)
        st=''
    if st!='':
      a.append(st) 
      st=''
  for i in range(15):
    for j in range(15):
      if board[j][i]!='':
        st+=board[j][i]
      elif st!='' :
        a.append(st)
        st=''
    if st!='':
      a.append(st) 
      st=''
  for i in a:
    if len(i)>=2:
      if is_valid(i)== True:
        x+=[i]
      else:
        y+=[i]
  x.sort()
  y.sort()                 
  return [x,y]
def get_play(board, new_board):
  st=''
  x=100000
  y=0
  z=0
  t=0
  for i in range(15):
    for j in range(15):
      if new_board[i][j]!=board[i][j]:
        st+=str(new_board[i][j])
        if t == 0:
          x=i
          y=j
          t+=1
        elif t==1:
          if x==i:
            z=0
          else:
            z=1
          t+=1        
  return [x,y,z,st]
def play(row,col,down,tiles,board):
  a,b=place_tiles(row,col,down,tiles,board)
  if a == False:
    return -1
  else:
    y=get_all_words(b)
    x=get_all_words(board)
    z=[]
    point=0
    for j in y[1]:
      if j not in x[1]:
        return -1
    for j in y[0]:
      if j not in x[0]:
        z+=[j]
      else:
        x[0].remove(j)  
    for i in z:
      for j in i:
        point+=get_value(j)
  if point==0 :
    return -1
  if len(tiles)>=7:
    point+=50
  return point       
def best_play(tiles,board):
  a=[]
  y=-1
  yi=-1
  yj=-1
  yk=-1
  for i in range(15):
    for j in range(15):
      for k in range(2):        
        x=play(i,j,k,tiles,board)
        if x>y:
          y=x
          yi=i
          yj=j
          yk=k
  return [y,yi,yj,yk]

00084: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1236, 'const': 308, 'code+const': 1544}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid = []
    invalid = []
    for i in range(15):
      word = ''
      ch = 0
      for j in range(15):
        if board[i][j]!='':
          word = word + board[i][j]
          ch = 1
        elif board[i][j]=='' and ch==1:
          if is_valid(word):
            valid.append(word)
            word = ''
            ch = 0
          else :
            if len(word)>1:
              invalid.append(word)
              word = ''
              ch =0
            else :
              word = ''
              ch = 0
      if ch!=0:
        if is_valid(word):
          valid.append(word)
        else : 
          if len(word)>1:
            invalid.append(word)
    for i in range(15):
      word = ''
      ch = 0
      for j in range(15):
        if board[j][i]!='':
          word = word + board[j][i]
          ch = 1
        elif board[j][i]=='' and ch==1:
          if is_valid(word):
            valid.append(word)
            word = ''
            ch = 0
          else : 
            if len(word)>1:
              invalid.append(word)
              word = ''
              ch = 0
            else : 
              word = ''
              ch = 0
      if ch!=0:
        if is_valid(word):
          valid.append(word)
        else : 
          if len(word)>1:
            invalid.append(word)
    valid.sort()
    invalid.sort()
    return [valid,invalid]
def get_play(board, new_board):
    word = ''
    row = 0
    col = 0
    down = 0
    count = 0
    ch = 0
    for i in range(15):
      for j in range(15):
        if board[i][j]!=new_board[i][j]:
          word = word + new_board[i][j]
          count = count+1
          if count ==1:
            row = i
            col = j
      if ch==0 and count==1:
        down = 1
    if len(word)==1:
      down = 0
    return [row,col,down,word]
def play(row,col,down,tiles,board):
    boo, newboard = place_tiles(row,col,down,tiles,board)
    if boo == False : return -1
    words = get_all_words(board)
    new_words = get_all_words(newboard)
    for i in range(len(words)):
      for j in range(len(words[i])):
        if i==0 and words[i][j] in new_words[0]:
          new_words[0].remove(words[i][j])
        if i==1 and words[i][j] in new_words[1]:
          new_words[1].remove(words[i][j])
    if len(new_words[1]) == 0:
      point = 0
      for i in range(len(new_words[0])):
        for ch in new_words[0][i] :
          point = point + get_value(ch)
      if len(tiles) >= 7 :
        point = point+50
      return point
    return -1
def best_play(tiles,board):
    allpoint = []
    for i in range(15):
      for j in range(15):
        point = play(i,j,0,tiles,board)
        if point == -1:
          allpoint.append([-1,-1,-1,-1])
        else: allpoint.append([-point,i,j,0])
        point = play(i,j,1,tiles,board)
        if point == -1:
          allpoint.append([-1,-1,-1,-1])
        else: allpoint.append([-point,i,j,1])
    allpoint.sort()
    point,row,col,down = allpoint[0]
    if point!=-1:
      point = -point
    return [point,row,col,down]

00085: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0ValueError('list.remove(x): x not in list')
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0ValueError('list.remove(x): x not in list')
[8, 20, 26, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 962, 'const': 350, 'code+const': 1312}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words = []
    invalid_words = []
    for i in range(15):
        x = ''
        for j in range(15):
            if board[i][j] != '':
                x += board[i][j]
            else:
                if x != '' and len(x) > 1:
                    if is_valid(x):
                        valid_words.append(x)
                    else:
                        invalid_words.append(x)
                x = ''
        if x != '' and len(x) > 1:
            if is_valid(x):
                valid_words.append(x)
            else:
                invalid_words.append(x)
    for j in range(15):
        x = ''
        for i in range(15):
            if board[i][j] != '':
                x += board[i][j]
            else:
                if x != '' and len(x) > 1:
                    if is_valid(x):
                        valid_words.append(x)
                    else:
                        invalid_words.append(x)
                x = ''
        if x != '' and len(x) > 1:
            if is_valid(x):
                valid_words.append(x)
            else:
                invalid_words.append(x)
    valid_words.sort()
    invalid_words.sort()
    return [valid_words,invalid_words]
def get_play(board, new_board):
    row = 0
    col = 0
    down = 0
    tiles = ''
    first_check = False
    for i in range(15):
        for j in range(15):
            if new_board[i][j] != '' and new_board[i][j]!=board[i][j]:
                if first_check == False:
                    tiles += new_board[i][j]
                    first_check = True
                    row = i
                    col = j
                else:
                    tiles += new_board[i][j]
                    if i == row:
                        down = 0
                    elif j == col:
                        down = 1
    return [row,col,down,tiles]
def play(row,col,down,tiles,board):
    new_board = place_tiles(row,col,down,tiles,board)
    score = 0
    if new_board[0] == False:
        score = -1
    else:
        word_board = get_all_words(board)
        word_new_board = get_all_words(new_board[1])
        if word_new_board[1] != []:
            score = -1
        else:
            ans = word_new_board[0].copy()
            for i in word_board[0]:
                if i in word_new_board[0]:
                    ans.remove(i)
            for i in ans:
                for w in i:
                    score += get_value(w)
            if len(tiles) >= 7:
                score += 50
    return score
def best_play(tiles,board):
    ans=[-1,-1,-1,-1]
    best = 0
    for i in range(15):
        for j in range(15):
            for d in range(2):
                if best < play(i,j,d,tiles,board):
                    best = play(i,j,d,tiles,board)
                    ans[0] = best
                    ans[1] = i
                    ans[2] = j
                    ans[3] = d
    return ans

00086: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 956, 'const': 272, 'code+const': 1228}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words = []
    invalid_words = []
    for i in range (15):
      words_down = ""
      for j in range (15):
        if(board[j][i]) : words_down += board[j][i].upper()
        else :
          if(len(words_down) > 1):
            if(is_valid(words_down)): valid_words.append(words_down)   
            else: invalid_words.append(words_down) 
          words_down = ""   
      if(len(words_down) > 1):
        if(is_valid(words_down)): valid_words.append(words_down)   
        else: invalid_words.append(words_down)
    for i in range (15):
      words_right = ""
      for j in range (15):
        if(board[i][j]) : words_right += board[i][j].upper()
        else :
          if(len(words_right) > 1):
            if(is_valid(words_right)): valid_words.append(words_right)   
            else: invalid_words.append(words_right) 
          words_right = ""   
      if(len(words_right) > 1):
        if(is_valid(words_right)): valid_words.append(words_right)   
        else: invalid_words.append(words_right)
    valid_words.sort()
    invalid_words.sort()
    return [valid_words,invalid_words]
def get_play(board, new_board):
  for i in range(15):
    for j in range(15):
      if(new_board[i][j] and not board[i][j]) :
        word = ""
        for m in range(i,15) :
          if(not new_board[m][j]): break
          if(not board[m][j]): word += new_board[m][j]
        if(len(word) > 1): return [i,j,1,word]
        word = ""
        for m in range(j,15) :
          if(not new_board[i][m]): break
          if(not board[i][m]): word += new_board[i][m]
        if(len(word)): return [i,j,0,word]
def play(row,col,down,tiles,board):
    words_1 = get_all_words(board)
    place_tile = place_tiles(row,col,down,tiles,board)
    if(place_tile[0]):
      words_2 = get_all_words(place_tile[1])
      if(len(words_2[1])!=len(words_1[1])): return -1
      score = 0
      for i in words_2[0]:
        if i in words_1[0] :
          words_1[0].remove(i);
        else :
          for j in i:
            score = score + get_value(j)
      if(len(tiles) >= 7): score = score + 50
      return score
    else : return -1
def best_play(tiles,board):
    _max = -1
    for i in range(15):
      for j in range(15):
        for k in range(2):
          tmp = play(i,j,k,tiles,board)
          if(tmp > _max):
            _max = tmp
            row = i
            col = j
            down = k
    if(_max == -1): return [-1,-1,-1,-1]
    return [_max,row,col,down]

00087: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0IndexError('list index out of range')
[]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1738, 'const': 340, 'code+const': 2078}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid = []
  invalid = []
  for i in range(len(board)):
    vocab = ''
    for j in range(len(board)):
      if board[i][j] != '':
        if j != 14:
          if board[i][j+1] != '':
            vocab += board[i][j]
          else:
            vocab += board[i][j]
            if len(vocab) > 1:
              for k in range(1,len(vocab)):
                if is_valid(vocab) == True:
                  valid.append(vocab)
                  break
                else:
                  if vocab not in invalid:
                    invalid.append(vocab)
                    break
            vocab = ''
        else:
          vocab += board[i][j]
          if len(vocab) > 1:
            for k in range(1,len(vocab)):
              if is_valid(vocab) == True:
                valid.append(vocab)
                break
              else:
                if vocab not in invalid:
                  invalid.append(vocab)
                  break
            vocab = ''
      else:
        vocab += board[i][j]
        if len(vocab) > 1:
          for k in range(1,len(vocab)):
            if is_valid(vocab) == True:
              valid.append(vocab)
              break
            else:
              if vocab not in invalid:
                invalid.append(vocab)
                break
          vocab = ''
    else:
      vocab = ''
  for i in range(len(board)):
    vocab = ''
    for j in range(len(board)):
      if board[j][i] != '':
        if j != 14:
          if board[j+1][i] != '':
            vocab += board[j][i]
          else:
            vocab += board[j][i]
            if len(vocab) > 1:
              for k in range(1,len(vocab)):
                if is_valid(vocab) == True:
                  valid.append(vocab)
                  break
                else:
                  if vocab not in invalid:
                    invalid.append(vocab)
                    break
            vocab = ''
        else:
          vocab += board[j][i]
          if len(vocab) > 1:
            for k in range(1,len(vocab)):
              if is_valid(vocab) == True:
                valid.append(vocab)
                break
              else:
                if vocab not in invalid:
                  invalid.append(vocab)
                  break
            vocab = ''
      else:
        vocab = ''
  valid.sort()
  invalid.sort()
  return [valid,invalid]
def get_play(board, new_board):
  old = board
  new = new_board
  tile = ''
  numi = []
  numj = []
  c = []
  for k in range(15):
    c.append([])
  for i in range(len(new_board)):
    vocab = ''
    for j in range(len(new_board[0])):
      if old[i][j] == '' and new[i][j] == '':
        pass
      else:
        if old[i][j] != new[i][j]:
          numi.append(i)
          numj.append(j)
          tile += new[i][j]
          vocab += new[i][j]
    c[i] = vocab
  count = 0
  for e in c:
    if len(e) > 1:
      return [numi[0],numj[0],0,tile]
  for g in c:
    if g == '':
      count += 1
  if count  == 14:
    return [numi[0],numj[0],0,tile]
  return [numi[0],numj[0],1,tile]
def play(row,col,down,tiles,board): 
  oldboard = copy_board(board)
  valid,board = place_tiles(row,col,down,tiles,board)
  newboard = copy_board(board)
  vocab = get_all_words(oldboard)
  newvocab = get_all_words(newboard)
  placetile = get_play(oldboard, newboard)[-1]
  born = []
  if not valid:
    return -1
  if newvocab[1] != []:
    board = oldboard
    return -1
  for e in newvocab[0]:
    if e in vocab[0]:
      vocab[0].remove(e)
    else:
      born.append(e)
  if born != []:
    score = 0
    for i in range(len(born)):
      for j in range(len(born[i])):
        score += get_value(born[i][j])
    if len(placetile) >= 7:
      score += 50
      return score
    else:
      return score
  else:
    return -1
def best_play(tiles,board):
  all = []
  for i in range(15):
    for j in range(15):
      for k in range(2):
        board2 = copy_board(board)
        valid = place_tiles(i,j,k,tiles,board2)[0]
        if valid:
          board3 = copy_board(board)
          score = play(i,j,k,tiles,board3)
          all.append([score,-i,-j,-k])
  all.sort()
  max = [all[-1][0],-all[-1][1],-all[-1][2],-all[-1][3]] 
  if max[0] <= 0:
    return [-1,-1,-1,-1]
  return max

00088: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1488, 'const': 381, 'code+const': 1869}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    r = 15
    c = 15
    sumtext = []
    rtext = []
    nrtext = []
    text = ''
    for i in range(r):
        for j in range(c):
            if board[i][j]!= '':
              if j == 14:
                text += board[i][j]
                rtext.append(text)
                text = ''
              else:
                text += board[i][j]
            else:
              if text != '' :
                rtext.append(text)
                text = ''
    if text not in rtext :
      rtext.append(text)
    for i in range(len(rtext)):
      if len(rtext[i]) > 1:
        nrtext.append(rtext[i])
    ctext = []
    nctext = []
    text = ''
    for j in range(c):
        for i in range(r):
            if board[i][j]!= '':
              if i == 14:
                text += board[i][j]
                ctext.append(text)
                text = ''
              else:
                text += board[i][j]
            else:
              if text != '' :
                ctext.append(text)
                text = ''
    if text not in ctext :
      ctext.append(text)
    for i in range(len(ctext)):
      if len(ctext[i]) > 1:
        nctext.append(ctext[i])
    sumtext = nctext + nrtext
    sumtext.sort()
    valid_word = []
    invalid_word = []
    for i in sumtext:
      if i in word_list:
        valid_word.append(i)
      else:
        invalid_word.append(i)
    return [valid_word,invalid_word]
def get_play(board, new_board):
    r = 15
    c = 15
    pos = []
    result = [0,0,0,'']
    for i in range(r):
      for j in range(c):
        if board[i][j] == '':
          if new_board[i][j] != '':
            pos.append([i,j,new_board[i][j]])
    pos.sort()
    if len(pos) == 1 :
      result[0] = pos[0][0]
      result[1] = pos[0][1]
      result[2] = 0
      result[3] = pos[0][2]
    elif pos[0][1] == pos[1][1]:
      result[0] = pos[0][0]
      result[1] = pos[0][1]
      result[2] = 1
      result[3] = ''
      for i in range(len(pos)):
        result[3] += pos[i][2]
    elif pos[0][0] == pos[1][0]:
      result[0] = pos[0][0]
      result[1] = pos[0][1]
      result[2] = 0
      result[3] = ''
      for i in range(len(pos)):
        result[3] += pos[i][2]
    return result
def play(row,col,down,tiles,board):
    sum = 0
    text = ''
    beforevalid = get_all_words(board)[0] 
    board = place_tiles(row,col,down,tiles,board)[1]
    valid = get_all_words(board)[0]
    c = 0
    for i in tiles:
        c+=1
    for i in beforevalid:
      if i in valid:
        valid.remove(i)
    for i in valid:
        for ch in i:
            sum+=get_value(ch)
    if len(valid) != 0:
        score = sum
        if c >= 7 :
            score+= 50
    else:
        score = -1
    return  score 
def best_play(tiles,board):
    result = []
    cboard = copy_board(board)
    for row in range(15):
        for col in range(15):
            for down in range(15):
                board = place_tiles(row,col,down,tiles,board)[1]
                if len(get_all_words(board)[1]) == 0:
                    result.append([play(row,col,down,tiles,cboard),row,col,down])
                board = cboard
    result.sort()
    scoremax = result[::-1][0][0]
    for i in range(len(result)):
        if result[i][0] == scoremax:
            break
    if result[i][0] == -1:
        result[i][1] = -1
        result[i][2] = -1
        result[i][3] = -1
    return result[i]

00089: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1764, 'const': 394, 'code+const': 2158}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid_words=[];invalid_words=[];b=0;d=0;c=[];g=[]
  while b<len(board):
    a=''
    for i in range(15):
      if a=='':
        if board[i][b] !='':
          a=a+board[i][b]
      elif a!='' and board[i][b] !='' :
        a=a+board[i][b]
      elif a!='':
        if  board[i][b] =='':
          c.append(a)
          a=''
      if i==14 and a!='':
        c.append(a)
    b+=1
  while d<len(board):
    e=''
    for j in range(15):
      if e=='':
        if board[d][j] !='':
          e=e+ board[d][j]
      elif e!='' and board[d][j] !='':
        e=e+board[d][j]
      elif e!='':
        if board[d][j] =='':
          c.append(e)
          e=''
      if j==14 and e!='':
        c.append(e)
    d+=1
  for i in c:
    if len(i)>=2:
      if is_valid(i)==True:
        valid_words.append(i)
      elif is_valid(i)==False:
        invalid_words.append(i)
  valid_words=sorted(valid_words)
  invalid_words=sorted(invalid_words)
  return [valid_words,invalid_words]
def get_play(board, new_board):
  b=0;g=0
  c=[]
  while b<len(board):
    a=''
    for i in range(len(board)):
      if a=='' and  board[i][b] != new_board[i][b]:
        d,e=i,b
        a=a+new_board[i][b]
      elif a!='' and board[i][b] != new_board[i][b]:
        a=a+new_board[i][b]
      elif   new_board[i][b]=='' and a !='':
        c.append([d,e,1,a])
        a=''
      if  i==14 and a!='':
        c.append([d,e,1,a])
    b+=1
  while g<len(board):
    k=''
    for j in range(len(board)):
      if k=='' and  board[g][j] != new_board[g][j]:
        d,e=g,j
        k=k+new_board[g][j]
      elif k!='' and board[g][j] != new_board[g][j]:
        k=k+new_board[g][j]
      elif   new_board[g][j]=='' and k !='':
        c.append([d,e,0,k])
        k=''
      if j==14 and k!='':
         c.append([d,e,0,k])
    g+=1
  max=-999999999
  for i in range(len(c)):
    if len(c[i][3])>max:
      max=len(c[i][3])
      f=i
  if max >1:
    return c[f]
  else:
    return c[1]
def play(row,col,down,tiles,board):
  a=get_all_words(board)
  new=place_tiles(row,col,down,tiles,board)[1]
  b=get_all_words(new)
  c=0
  for k in b[1]:
    if k not in a[1]:
      return -1
  for i in a[0]:
    if i in b[0]:
      b[0].remove(i)
  for j  in b[0]:
    for g in j: 
        c+=get_value(g)
  if len(tiles)>=7:
    c+=50
  return c
def best_play(tiles,board):
  c={}
  for i in range(15):
    for j in range(15):
      a=place_tiles(i,j,0,tiles,board)
      b=place_tiles(i,j,1,tiles,board)
      if a[0]==True:
        if play(i,j,0,tiles,board) not in c:
          c[play(i,j,0,tiles,board)] =[[play(i,j,0,tiles,board),i,j,0]]
        else:
          c[play(i,j,0,tiles,board)].append([play(i,j,0,tiles,board),i,j,0])
      if b[0]==True:
        if play(i,j,1,tiles,board) not in c:
          c[play(i,j,1,tiles,board)] =[[play(i,j,1,tiles,board),i,j,1]]
        else:
          c[play(i,j,1,tiles,board)].append([play(i,j,1,tiles,board),i,j,1])
  if max(c)!=-1:
    o=sorted(c[max(c)])
    return o[0]
  else:
    return [-1, -1, -1, -1]

00090: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1596, 'const': 495, 'code+const': 2091}
check_import({'allowable': ['math']}): none
def get_all_words_with_position(board):
    words = []
    word_with_position = []
    for i in range(15):
        w_c = '' ; w_r = ''
        for j in range(15):
            if board[i][j] != '':
                w_c += board[i][j]
                if len(w_c) == 1 : p_c = [i, j, 0]
                if j == 14 and len(w_c) > 1:
                    words.append(w_c)
                    word_with_position.append([ w_c, p_c ])
            else:
                if len(w_c) > 1:
                    words.append(w_c)
                    word_with_position.append([ w_c, p_c ])
                w_c = ''
            if board[j][i] != '':
                w_r += board[j][i]
                if len(w_r) == 1 : p_r = [i, j, 1]
                if j == 14 and len(w_r) > 1:
                    words.append(w_r)
                    word_with_position.append([ w_r, p_r ])
            else:
                if len(w_r) > 1:
                    words.append(w_r)
                    word_with_position.append([ w_r, p_r ])
                w_r = ''
    valid = [ _ for _ in words if _ in word_list ]
    invalid = [ _ for _ in words if _ not in word_list ]
    return [ [ _ for _ in word_with_position if _[0] in valid ], [ _ for _ in word_with_position if _[0] in invalid ] ]
def get_all_words(board):
    words = []
    for i in range(15):
        w_c = '' ; w_r = ''
        for j in range(15):
            if board[i][j] != '':
                w_c += board[i][j]
                if j == 14 and len(w_c) > 1: words.append(w_c)
            else:
                if len(w_c) > 1: words.append(w_c)
                w_c = ''
            if board[j][i] != '':
                w_r += board[j][i]
                if j == 14 and len(w_r) > 1: words.append(w_r)
            else:
                if len(w_r) > 1: words.append(w_r)
                w_r = ''
    return [ sorted([ _ for _ in words if _ in word_list ]) , sorted([ _ for _ in words if _ not in word_list ]) ]
def get_play(board, new_board):
    new_play = [0, 0, -1, '']
    for i in range(15) :
        if board[i] != new_board[i] :
            new_play[2] += 1
            if new_play[2] : break
            new_play[0] = i
            for j in range(15) :
                if board[i][j] != new_board[i][j] : new_play[1] = j ; break
    if new_play[2] :
        word = ''
        for i in range(15) :
            if board[i][new_play[1]] != new_board[i][new_play[1]] :
                word += new_board[i][new_play[1]]
    else :
        word = ''
        for i in range(15) :
            if board[new_play[0]][i] != new_board[new_play[0]][i] :
                word += new_board[new_play[0]][i]
    new_play[-1] = word
    return new_play
def play(row, col, down, tiles, board):
    new_board = place_tiles(row, col, down, tiles, [ _ for _ in board ])[1]
    word_on_board = get_all_words_with_position(board)
    word_on_new_board = get_all_words_with_position(new_board)
    if word_on_new_board[1] != word_on_board[1] : return -1
    new_word = [ _ for _ in word_on_new_board[0] ]
    for word in word_on_board[0] :
        try : new_word.remove(word)
        except : pass
    point = sum([ get_value(ch) for word in new_word for ch in word[0] ])
    if len(tiles) >= 7 : point += 50
    return point
def best_play(tiles, board):
    point , best_col, best_row, best_down = 0, -1, -1, -1
    for row in range(15) :
        for col in range(15) :
            for down in range(2) :
                try :
                    if place_tiles(row, col, down, tiles, board)[0] :
                        p = play(row, col, down, tiles, board)
                        if p > point :
                            point, best_col, best_row, best_down = p, col, row, down
                except : pass
    if point : return [ point, best_row, best_col, best_down ]
    return [-1, -1, -1, -1]

00091: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1010, 'const': 405, 'code+const': 1415}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    temporary_string = ''
    row = len(board)
    column = len(board[0])
    for i in range(row) :
        temporary_string += '  '
        for j in range(column) :
            x = board[i][j]
            if x == '' :
                temporary_string += '  '
            else :
                ch = x.upper()
                temporary_string += ch
    for j in range(column) :
        temporary_string += '  '
        for i in range(row) :
            x = board[i][j]
            if x == '':
                temporary_string += '  '
            else :
                ch = x.upper()
                temporary_string += ch
    temporary_list = temporary_string.split()
    temporary_list.sort()
    word_list = [e for e in temporary_list if len(e) > 1]
    output = [[],[]]
    for k in word_list:
        if is_valid(k) == True:
            output[0].append(k)
        else :
            output[1].append(k)
    return output
def get_play(board, new_board):
    new_tiles = ''
    position_x_y = []
    for_run = [[i,j] for i in range(15) for j in range(15)]
    for i, j in for_run :
        old = board[i][j]
        new = new_board[i][j]
        if new != old :
            new_tiles += new
            position_x_y.append([j, i])
    x_first = position_x_y[0][0]
    y_first = position_x_y[0][1]
    x_last = position_x_y[-1][0]
    y_last = position_x_y[-1][1]
    down = 0
    if y_last != y_first :
        down = 1
    return [y_first, x_first, down, new_tiles]
def play(row,col,down,tiles,board):
    correct, new_board = place_tiles(row,col,down,tiles,board)
    if correct == True :
        all_old = get_all_words(board)
        all_new = get_all_words(new_board)
        new_word = all_new[0]
        words = []
        if len(all_new[1]) == 0:
            for word in all_new[0] :
                if word not in all_old[0]:
                    words.append(word)
                else:
                    all_old[0].remove(word)
        else:
            return -1
        total = 0
        for e in words:
            for ch in e:
                total += get_value(ch)
        if len(tiles) >= 7 :
            total += 50       
        return total
    return -1
def best_play(tiles,board):
    data = []
    for_run = [[row,column,down] for row in range(15) for column in range(15) for down in range(2)]
    for row,column,down in for_run :
        data.append([play(row, column, down, tiles, board), row, column, down])
    data.sort()
    maximum = max(data)[0]
    if maximum != -1 :
        maximum_list = [e for e in data if e[0] == maximum]
        output = maximum_list[0]
        return output 
    return [-1,-1,-1,-1]

00092: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 928, 'const': 376, 'code+const': 1304}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words, invalid_words = [], []
    c = 0
    for t in range(2):
        for i in range(15): 
            s = ''
            for j in range(15): 
                if c == 0: ch = board[i][j]
                if c == 1: ch = board[j][i]
                if ch != '':
                    s += ch
                else:
                    s += ' '
            words = s.strip().split()
            for word in words:
                if len(word) > 1:
                    if is_valid(word):
                        valid_words.append(word)
                    else:
                        invalid_words.append(word)
        c += 1
    valid_words.sort()
    invalid_words.sort()
    return [valid_words, invalid_words]
def get_play(board, new_board):
    tiles = ''
    t = 0
    for i in range(15): 
        if board[i] != new_board[i]:
                t += 1
    found = False
    for i in range(15): 
        for j in range(15): 
            if t == 1:
                ch_b = board[i][j]
                ch_nb = new_board[i][j]
                d = 0
            else:
                ch_b = board[j][i]
                ch_nb = new_board[j][i]
                d = 1
            if ch_b != ch_nb:
                if found == False:
                    if t == 1:
                        r,c = i,j
                    else:
                        r,c = j,i
                    found = True
                tiles += ch_nb
    return [r,c,d,tiles]
def play(row,col,down,tiles,board):
    valid,new_board = place_tiles(row,col,down,tiles,board)
    v_b, iv_b = get_all_words(board)
    v_nb, iv_nb = get_all_words(new_board)
    if valid and iv_b == iv_nb:
        t = 0
        score = 0
        new_words = [word for word in v_nb]
        for word in v_b:
            if word in new_words:
                new_words.remove(word)
        score = sum([get_value(e) for word in new_words for e in word])
        if len(tiles) >= 7:
            score += 50
    else:
        score = -1
    return score
def best_play(tiles,board):
    results = []
    for i in range(15):
        for j in range(15):
            for k in range(2):
                testboard = copy_board(board)
                score = play(i,j,k,tiles,testboard)
                if score != -1:
                    results.append([-score,i,j,k])
                else:
                    results.append([-1,-1,-1,-1])
    results.sort()
    if results[0] != [-1,-1,-1,-1]:
        score = -results[0][0]
        return [score,results[0][1],results[0][2],results[0][3]]
    return results[0]

00093: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _  [S] [T] [A] [R] [P] [L] [A] [T] [I] [N] [U] [M]  _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[-1]
test_play_21.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[-1]
test_play_31.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _  [P] [Y] [T] [H] [O] [N]  _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[14]
test_play_41.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _  [P] [Y] [T] [H] [O] [N]  _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[14, 21]
test_play_50.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _  [M] [A] [N] [G] [I] [E] [R]  _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[60, 372]
test_play_61.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _  [M] [A] [N] [G] [I] [E] [R]  _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[60, -1]
test_play_71.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _  [E] [L] [E] [P] [H] [A] [N] [T]  _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[63, 14]
test_play_81.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _  [P] [L] [A] [T] [I] [N] [U] [M]  _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[62]
test_play_90.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _  [R] [O] [J] [I]  _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[11, 15, 24, 17, 85, 12]
test_play_100.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _  [A] [X]  _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _  [F]  _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _  [R]  _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _  [A]  _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _  [C]  _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _  [T]  _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _  [O]  _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _  [S]  _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _  [T]  _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _  [R]  _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _  [A]  _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _  [T]  _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _  [I]  _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _  [O]  _   _   _   _   _   _ 
6    _   _   _   _   _   _   _  [O] [D]  _   _   _   _   _   _ 
7    _   _   _   _   _   _  [O] [D] [E]  _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[811]
test_play_130.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _  [R] [O] [T] [O] [R]  _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _  [O]  _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _  [T]  _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _  [O]  _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[59]
test_play_140.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _  [B] [A] [N] [A] [N] [A]  _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[8, 120, 1426, -1]
test_play_150.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _  [B] [R] [I] [S] [K] [E] [T] [S]  _   _   _ 
4    _   _   _   _  [L]  _   _   _   _   _   _  [N]  _   _   _ 
5    _   _   _   _  [O]  _   _  [B] [A]  _   _  [O]  _   _   _ 
6    _   _   _   _  [O]  _  [B] [A] [T]  _   _  [W]  _   _   _ 
7    _   _  [C] [O] [M] [B] [A] [T] [E] [D]  _  [B]  _   _   _ 
8    _   _   _   _   _  [L] [A]  _  [L] [A]  _  [E]  _   _   _ 
9    _   _   _   _   _  [U]  _   _  [I] [D] [O] [L]  _   _   _ 
10   _   _   _   _   _  [E]  _   _  [C]  _   _  [T]  _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[2839]
test_best_play_11.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _  [C]  _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _  [H]  _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _  [E]  _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _  [C]  _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _  [K]  _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _  [E]  _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _  [D]  _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _  [P]  _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _  [E]  _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _  [R]  _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _  [I]  _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _  [S]  _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _  [P]  _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _  [O]  _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _  [M]  _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _  [E]  _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _  [N]  _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _  [O]  _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _  [N]  _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_40.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _  [Q]  _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _  [U]  _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _  [A]  _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _  [R]  _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _  [R]  _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _  [E]  _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _  [L]  _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _  [I]  _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _  [N]  _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _  [G]  _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _  [S]  _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_50.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _  [D]  _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _  [I]  _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _  [A]  _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _  [Z]  _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _  [O]  _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _  [T]  _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _  [I]  _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _  [Z]  _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _  [A]  _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _  [T]  _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _  [I]  _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _  [O]  _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _  [N]  _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _  [S]  _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1256, 'const': 421, 'code+const': 1677}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  totalw=[]
  for r in range(15):
    wrow=''
    for c in range(15):
      if board[r][c]=='':
        wrow+=' '
      wrow+=board[r][c]
    row1=wrow.split()
    for s in row1:
      if len(s)>=2:
        totalw.append(s)
  for c in range(15):
    wcol=''
    for r in range(15):
      if board[r][c]=='':
        wcol+=' '
      wcol+=board[r][c]
    col1=wcol.split()
    for k in col1:
      if len(k)>=2:
        totalw.append(k)
  valid_words=[]; invalid_words=[]
  for v in totalw:
    if is_valid(v)==True:
      valid_words.append(v.upper())
      valid_words.sort()
    else:
      invalid_words.append(v.upper())
      invalid_words.sort()
  return [valid_words,invalid_words]  
def get_play(board, new_board):
  ans=''
  pos=[]
  for r in range(15):
    for c in range(15):
      if board[r][c] !=new_board[r][c]:
        p=[r,c]
        k=new_board[r][c]
        pos.append(p)
        ans+=k
  if len(ans)==1 or (len(ans)>1 and pos[0][1]!=pos[1][1]):
    return pos[0]+[0]+[ans.upper()]
  if len(ans)>1 and pos[0][1]==pos[1][1]:
    return pos[0]+[1]+[ans.upper()]
def play(row,col,down,tiles,board):
  valid,board_n=place_tiles(row,col,down,tiles,board)
  print_board(board_n)
  if valid:
    valid1=get_all_words(board)[0]
    valid2=get_all_words(board_n)[0];invalid2=get_all_words(board_n)[1]
    new=[]
    if len(invalid2)==0:
      for x in valid2:
        if x not in valid1:
          new.append(x)
    if len(new)!=0:
        score=0
        for w in new:
          for s in w:
            score+=get_value(s)
          if len(tiles)>=7:
            score+=50
            print(score)     
    else:
        score=-1
  else:
    score= -1
  return score
def best_play(tiles,board):
  if board[7][7]=='':
    if len(tiles)<=8 and is_valid(tiles)==True:
      row1=7-len(tiles)+1
      score=play(row1,7,1,tiles,board)
      board=place_tiles(row1,7,1,tiles,board)[1]
      return [score,row1,7,1]
    elif 8<len(tiles)<=15 and is_valid(tiles)==True:
      score=play(0,7,1,tiles,board)
      return [score,0,7,1]
    else:
      return [-1,-1,-1,-1]
  else:
    scorelist=[]
    for r in range(15):
      for c in range(15):
        score0=play(r,c,0,tiles,board)
        score1=play(r,c,1,tiles,board)
        scorelist.append([score0,r,c,0])
        scorelist.append([score1,r,c,1])
    scorelist.sort()
    x=scorelist[::-1][0]
    if x[0]>0:
      board=place_tiles(x[1],x[2],x[3],tiles,board)[1]
      return [x[0],x[1],x[2],x[3]]
    else:
      return [-1,-1,-1,-1]

00094: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_30.0
[[6, 6, 01, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_60.0
[[6, 7, 01, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 15, 24, 17, 85, 012]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 1827, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 120, 1426, -1]
test_play_150.0
[2839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_20.0
[[-1, 0-1, 0-1, 0-1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 868, 'const': 362, 'code+const': 1230}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    word=""
    worda=[]
    wordb=[]
    for i in range(15):
        word+=" "
        for j in range(15):
            if board[i][j]!="":word+=board[i][j].upper()
            else:word+=" "
    for j in range(15):
        word+=" "
        for i in range(15):
            if board[i][j]!="":word+=board[i][j].upper()
            else:word+=" "
    word=word.split()
    for w in word:
        if len(w)>=2:
            if is_valid(w)==True:worda.append(w)
            else:wordb.append(w)
    worda.sort()
    wordb.sort()
    return [worda,wordb]
def get_play(board, new_board):
    text=""
    first=True
    count=0
    startcount=False
    dis=0
    for i in range(0,15):
        for e in range(0,15):
            if startcount==True:
                count+=1
            if board[i][e]!=new_board[i][e]:
                if startcount==True:
                    dis=count
                    startcount=False
                if first==True:
                    startcount=True
                    lo=[i,e]
                    first=False
                text+=new_board[i][e]
    if dis==15:
        dis=1
    else:
        dis=0
    return [lo[0],lo[1],dis,text]
def play(row,col,down,tiles,board):
    a,b=place_tiles(row,col,down,tiles,board)
    if a==False:
        return -1
    count=0
    text=[]
    point=0
    text1=get_all_words(board)
    text2=get_all_words(b)
    if len(text1[1])>0 or len(text2[1])>0:
        return -1
    for k in text2[0]:
        if k not in text1[0]:
            text.append(k)
    for i in text:
        for j in i:
            point+=get_value(j)
    if len(tiles)>=7:
        point+=50
    return point
def best_play(tiles,board):
    a=[]
    for r in range(15):
        for c in range(15):
            for d in range(2):
                a.append([play(r,c,d,tiles,board),r,c,d])
    a.sort()
    ma=a[-1][0]
    for i in a:
        if i[0]==int(ma):
            return i

00095: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1024, 'const': 381, 'code+const': 1405}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    all_words = []
    not_seen = [[[True,True] for i in range(15)] for j in range(15)]
    for i in range(15):
        for j in range(15):
            if board[i][j]!="":
                if not_seen[i][j][0]:    
                    temp = ""
                    for k in range(i,15):
                        if board[k][j]=="":
                            break
                        temp += board[k][j]
                        not_seen[k][j][0] = False
                    all_words.append(temp)
                if not_seen[i][j][1]:
                    temp = ""
                    for k in range(j,15):
                        if board[i][k]=="":
                            break
                        temp += board[i][k]
                        not_seen[i][k][1] = False
                    all_words.append(temp)
    valid_words, invalid_words = [], []
    for word in all_words:
        if len(word)>1:
            if is_valid(word):
                valid_words.append(word)
            else:
                invalid_words.append(word)
    valid_words = sorted(valid_words)
    invalid_words = sorted(invalid_words)
    return [valid_words, invalid_words]
def get_play(board, new_board):
    unique_tiles_index = []
    for i in range(15):
        for j in range(15):
            if board[i][j]!=new_board[i][j]:
                unique_tiles_index.append([i,j])
    row = col = down = 0
    tiles = "".join(new_board[i][j] for i,j in unique_tiles_index)
    row = unique_tiles_index[0][0]
    col = unique_tiles_index[0][1]
    if len(unique_tiles_index)<2:
        down = 0
    elif unique_tiles_index[0][0] < unique_tiles_index[1][0]:
        down = 1
    else:
        down = 0
    return [row,col,down,tiles]
def play(row,col,down,tiles,board):
    words_to_score = []
    words_to_skip, invalid_words1  = get_all_words(board)
    valid_place, new_board = place_tiles(row,col,down,tiles,board)
    all_words, invalid_words2 = get_all_words(new_board)
    if valid_place and invalid_words1 + invalid_words2 == []:
        for word in all_words:
            if word in words_to_skip:
                word_idx = words_to_skip.index(word)
                words_to_skip.pop(word_idx)
                continue
            else:
                words_to_score.append(word)
        score = 0
        for word in words_to_score:
            for letter in word:
                score += get_value(letter)
        if len(tiles) >= 7:
            score += 50
        return score
    return -1
def best_play(tiles,board):
    score = -1
    row = col = down = -1
    for new_row in range(15):
        for new_col in range(15):
            for new_down in [0,1]:
                if board[new_row][new_col]=="":
                    new_score = play(new_row,new_col,new_down,tiles,board)
                    if new_score > score:
                        score = new_score
                        row, col = new_row, new_col
                        down = new_down
    return [score, row, col, down]

00096: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 2076, 'const': 336, 'code+const': 2412}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    stri=""
    valid_words=[]
    invalid_words=[]
    for i in range(len(board)):
      stri=""
      for a  in range(len(board[0])):
         if board[i][a] != "":
            stri+=board[i][a].upper()
            if a != len(board)-1:
               if board[i][a+1]=="":
                 if is_valid(stri)==True:
                   valid_words.append(stri)
                 else:
                   if len(stri)!=1:
                      invalid_words.append(stri)
                 stri=""
            else:
              if is_valid(stri)==True:
                   valid_words.append(stri)
                   stri=""
              else:
                   if len(stri)!=1:
                      invalid_words.append(stri)
                   stri=""
    for i in range(len(board[0])):
      stri=""
      for a  in range(len(board)):
         if board[a][i] != "":
            stri+=board[a][i].upper()
            if a != len(board)-1:
               if board[a+1][i]=="":
                 if is_valid(stri)==True:
                   valid_words.append(stri)
                 else:
                   if len(stri)!=1:
                      invalid_words.append(stri)
                 stri=""
            else:
              if is_valid(stri)==True:
                   valid_words.append(stri)
                   stri=""
              else:
                   if len(stri)!=1:
                      invalid_words.append(stri)
                   stri=""
    valid_words.sort()
    invalid_words.sort()
    return [valid_words,invalid_words]
def get_play(board, new_board):
    tiles=""
    row,col,down=0,0,0
    indicator=0
    for i in range(len(board)):
      for a  in range(len(board[0])):
        if board[i][a] != new_board[i][a] and indicator ==0:
           row=i
           col=a
           indicator+=1
           if a != len(board[0])-1:
                 if  new_board[i][a+1]!="":  
                    if board[i][a+1]=="":
                      down=0
                    else:
                      if i == len(board)-1:
                        down=0
                      else:
                         if new_board[i+1][a] =="":
                           down=0
                         else:
                            if new_board[i+1][a]== board[i+1][a]:
                              down =0
                            else: 
                              down=1  
                 else:
                        for d in range (i+1,len(board)):
                         if new_board[d][a] != board[d][a]:
                               down =1
                               break
                         else: 
                               down=0  
                 if  i== len(board[0])-1:
                    down=0
           if  a== len(board[0])-1:
               for d in range (i+1,len(board)):
                         if new_board[d][a] != board[d][a]:
                               down =1
                               break
                         else: 
                               down=0
    if down ==0:
      indicators =0
      for i in range(row,len(board)):
         for a  in range(col,len(board[0])):
           if new_board[i][a] == "":
             indicators +=1
           if board[i][a] != new_board[i][a] and indicators ==0:
             tiles+= new_board[i][a]
    if down==1:
      indicators =0
      for i in range(col,len(board[0])):
        for a in range(row,len(board)):
          if new_board[a][i] == "":
            indicators+=1
          if board[a][i] != new_board[a][i] and indicators ==0:
            tiles+= new_board[a][i]
    return [row,col,down,tiles]
def play(row,col,down,tiles,board):
    ans=0
    valid,new_board=place_tiles(row,col,down,tiles,board)
    derm=get_all_words(board)[0]
    mai,pid=get_all_words(new_board)
    tiles2=get_play(board, new_board)
    for e in derm:
      if e in mai:
        mai.remove(e)
    if mai !=[]:
         for a in mai:
               for i in range(len(a)):
                 ans+=get_value(a[i])
         if len(tiles2[3])>=7:
              ans+=50
    if pid !=[]:
        ans=-1
    return ans
def best_play(tiles,board):
    ans=[0, 0, 0, 0]
    for i in range(len(board)):
      for a in range(len(board)):
           if play(i,a,0,tiles,board) != -1:
             if play(i,a,0,tiles,board)==ans[0]:
                  if i < ans[1]:
                    ans=[play(i,a,0,tiles,board), i, a, 0]
                  if i== ans[1]:
                    if a < ans[2]:
                      ans=[play(i,a,0,tiles,board), i, a, 0]
                    if a== ans[2]:
                      ans=[play(i,a,0,tiles,board), i, a, 0]
             if play(i,a,0,tiles,board)>ans[0]:
                  ans=[play(i,a,0,tiles,board), i, a, 0]
           if play(i,a,1,tiles,board)!=-1:
             if play(i,a,1,tiles,board)==ans[0]:
                  if i < ans[1]:
                    ans=[play(i,a,1,tiles,board), i, a, 1]
                  if i== ans[1]:
                    if a < ans[2]:
                      ans=[play(i,a,1,tiles,board), i, a, 1]
                    if a == ans[2]:
                      if ans[3]==1:
                        ans=[play(i,a,1,tiles,board), i, a, 1]
             if play(i,a,1,tiles,board) > ans[0]:
                    ans=[play(i,a,1,tiles,board), i, a, 1]
    if ans==[0, 0, 0, 0]:
       return [-1,-1,-1,-1]
    return ans

00097: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_20.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [75, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'],
 [510, 72, 0, 'AFOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [213, 46, 0, 'ESAHIWAL'],
 [123, 13, 1, 'MICROLOGIES'], [214, 47, 0, 'EGAS'], [27, 45, 01, 'EGOORY'],
 [210, 47, 0, 'ESHIPS'], [92, 11, 1, 'MALESAFICE'],
 [0, 10, 1, 'DOOLAN'], [74, 9, 1, 'POGEY'],
 [130, 114, 01, 'AGROS'], [73, 2, 1, 'TONIEST'], [139, 1, 1, 'SLICES'],
 [74, 90, 10, 'ESCRONY'],
 [7, 914, 1, 'ESDIXIT'], [711, 94, 1, 'EPINS'], [75, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'],
 [132, 119, 0, 'AMO'],
 [136, 114, 01, 'CAB'], [131, 112, 01, 'ABEL']]
test_play_11.0
[-1]
test_play_20.0IndexError('list index out of range')
[]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 15, 24, 17, 85, 712]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 1827, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 120, 1426, 8-1]
test_play_150.0
[2839]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 1512, 'const': 430, 'code+const': 1942}
check_import({'allowable': ['math']}): none
def trans(A):
  T=[]
  nrows=len(A)
  ncols=len(A[0])
  for c in range(ncols):
    T.append([0]*nrows)
    for r in range(nrows):
      T[c][r]=A[r][c]
  return T
def res(A):
    a=[]
    for i in A:
      c=''
      for j in range(len(i)):
        if i[j]!='':
          c+=i[j]
          if j!=len(i)-1:
            if i[j+1]=='':
              c+='-'
      C=c.split('-')
      for i in C:
        if len(i)>1:
          a.append(i)
    new=trans(A)
    for i in new:
      c=''
      for j in range(len(i)):
        if i[j]!='':
          c+=i[j]
          if j!=len(i)-1:
            if i[j+1]=='':
              c+='-'
      C=c.split('-')
      for i in C:
        if len(i)>1:
          a.append(i)  
    return a
def get_all_words(board):
    blank=make_board()
    t=[]
    w=[]
    ans=['','']
    if board==blank:
      return [[],[]]
    a=res(board)
    for i in a:
      ch=is_valid(i)
      if ch==True:    
        t.append(i)
      elif ch==False:
        w.append(i)
    ans[0]=sorted(t)
    ans[1]=sorted(w)
    return ans
def get_play(board, new_board):
    b=board
    nb=new_board
    nb1=copy_board(new_board)
    ANS=['','','','']
    for B1 in b:
      for LB1 in B1:
        y=b.index(B1)
        u=B1.index(LB1)
        if LB1==nb1[y][u]:
          nb1[y][u]=''
    ans=''
    for i in nb1:
      for j in i:
        if j!='':
          ans+=j
    q=0
    t=0
    for i in nb1:
      for j in i:
        a=nb1.index(i)
        k=i.index(j)
        if ans[0]==nb1[a][k]:
          q=a
          t=k
    la=len(ans)
    o=0
    for z in range(len(nb1)):
      ch=''
      if nb1[q][z]=='':
        o+=1
    if o==15-la:
      d=0
    else:
      d=1
    if d==0:
      A1=''
      for g in range(t,len(nb1)):
        if nb1[q][g]!='':
          A1+=nb1[q][g]
    if d==1:
      A1=''
      for v in range(q,len(nb1)):
        if nb1[v][t]!='':
          A1+=nb1[v][t]
    ANS[0]=q
    ANS[1]=t
    if len(A1)==1:
      d=0
    ANS[2]=d
    ANS[3]=A1
    return ANS
def play(row,col,down,tiles,board):
    board1=make_board()
    board1=copy_board(board)
    board=place_tiles(row,col,down,tiles,board)[1]
    BB=res(board)
    if is_valid(BB[-1])==False:
      return -1
    b=board
    a=''
    A=[]
    B=''
    B1=''
    g1,g2=get_all_words(board1)
    G1,G2=get_all_words(board)
    for i in G1:
      if i not in g1:
        A.append(i)
    sum=0
    if len(tiles)>=7:
      sum=50
    for i in A:
      for j in range(len(i)):
        sum+=get_value(i[j])
    c={}
    for i in range(len(G1)):
      c[G1[i]]=0
    for i in G1:
      c[i]+=1
    sum1=0
    if sum==0:
      for i in range(len(g1[0])):
        sum1+=get_value(g1[0][i])
      sum+=sum1
    return sum
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00098: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_60.0
[[6, 7, 01, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1110, 'const': 320, 'code+const': 1430}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    ans = [[],[]]
    word = ''
    for i in range(len(board)) :
        for j in range(len(board)) :
            if board[i][j] != '' :
                word += board[i][j]
            else :
                word += ' '
        word += ' '
    for i in range(len(board)) :
        for j in range(len(board)) :
            if board[j][i] != '' :
                word += board[j][i]
            else :
                word += ' '
        word += ' '
    word = word.split()
    word2 = []
    for k in word :
        if len(k) != 1 :
            word2.append(k)
    for k in word2 :
        if is_valid(k) == True :
            ans[0].append(k)
        else :
            ans[1].append(k)
    ans[0].sort()
    ans[1].sort()
    return ans
def get_play(board, new_board):
    x = []
    y = new_board
    for i in y :
        i += ['']
    y += [['']*len(y[0])]
    a = board
    for i in a :
        i += ['']
    a += [['']*len(a[0])] 
    down = 0
    word = ''
    for i in range(len(y)) :
        for j in range(len(y)) :
            if y[i][j] != a[i][j] :
                x.append([i,j])
                word += y[i][j]
                if y[i+1][j] != '' and a[i+1][j] != y[i+1][j] :
                    down = 1
                elif y[i][j+1] != '' and a[i][j+1] != y[i][j+1] :
                    down = 0
    row = x[0][0]
    col = x[0][1]
    return [row,col,down,word]
def play(row,col,down,tiles,board):
    all_words = get_all_words(board)
    a,b = place_tiles(row,col,down,tiles,board)
    score = 0
    x,y = get_all_words(b)
    if len(y) != 0 or a == False :
      return -1
    else:
        new = []
        word = []
        for a in all_words :
            for b in a :
                word.append(b)
        for k in x :
            if k not in word :
                new.append(k)
            else :
                word.remove(k)
        for z in new :
                for t in z :
                    score += get_value(t)
        if len(tiles) >= 7 :
            score += 50
    return score
def best_play(tiles,board) :
    ans = [-1,-1,-1,-1]
    for i in range(len(board)) :
        for j in range(len(board)) :
            for down in range(2) :
                score = play(i,j,down,tiles,board)
                if score > ans[0] :
                    ans[0],ans[1],ans[2],ans[3] = score,i,j,down
    return ans

00099: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_30.0
[-14]
test_play_40.0
[-14, -21]
test_play_50.0
[-160, -172]
test_play_60.0
[-160, -1]
test_play_70.0
[-163, 14]
test_play_80.0
[-162]
test_play_90.0
[-11, -15, -124, 17, -185, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[-167, -61, -128, -11, -13, -185, -11, -12, -17, -125, -17, -14, -21, -132, -12, -15, -16, -168, -16, -13, -10, -127, -128]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[-18, -120, -126, -1]
test_play_150.0
[-139]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 1970, 'const': 413, 'code+const': 2383}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  out = [[],[]]
  for i in range(len(board)):
    data = ''
    for j in range(len(board[0])):
      if board[i][j] != '': data += board[i][j]
      else: data += ' '
    datas = data.strip().split()
    for data in datas:
      if len(data) >= 2 and is_valid(data): out[0].append(data)
      elif len(data) >= 2 and not is_valid(data): out[1].append(data)
  for i in range(len(board[0])):
    data = ''
    for j in range(len(board)):
      if board[j][i] != '': data += board[j][i]
      else: data += ' '
    datas = data.strip().split()
    for data in datas:
      if len(data) >= 2 and is_valid(data): out[0].append(data)
      elif len(data) >= 2 and not is_valid(data): out[1].append(data)
  out[0].sort()
  out[1].sort()
  return out
def get_play(board, new_board):
  out = []
  find = False
  for i in range(len(board)):
    for j in range(len(board[0])):
      if board[i][j] != new_board[i][j]: 
        out.append(i) ; out.append(j) ; find = True ; break
    if find: break
  word1 = ''
  for j in range(out[1],len(new_board)):
    if new_board[out[0]][j] != '':
      if board[out[0]][j] != new_board[out[0]][j]: 
        word1 += new_board[out[0]][j]
    else: break
  word2 = ''
  for i in range(out[0],len(new_board)):
    if new_board[i][out[1]] != '': 
      if board[i][out[1]] != new_board[i][out[1]]: word2 += new_board[i][out[1]]
    else: break
  if place_tiles(out[0],out[1],0,word1,board)[0] and place_tiles(out[0],out[1],1,word2,board)[0]:
    if len(word1) > len(word2): out.append(0) ; out.append(word1)
    if len(word1) < len(word2): out.append(1) ; out.append(word2)
    if len(word1) == len(word2): out.append(0) ; out.append(word1)
  elif place_tiles(out[0],out[1],0,word1,board)[0] and (not place_tiles(out[0],out[1],1,word2,board)[0]):
    out.append(0) ; out.append(word1)
  elif (not place_tiles(out[0],out[1],0,word1,board)[0]) and place_tiles(out[0],out[1],1,word2,board)[0]:
    out.append(1) ; out.append(word2)
  return out
def play(row,col,down,tiles,board):
  score = 0
  copyboard = copy_board(board)
  newboard = place_tiles(row, col, down, tiles, copyboard)[1]
  oldvalid = get_all_words(board)[0]
  newvalid = get_all_words(newboard)[0]
  NETvalid = newvalid
  for word in oldvalid:
    if word in NETvalid:
      NETvalid.remove(word)
  if len(NETvalid) != 0 :
    for word in NETvalid:
      for i in word:
        score += get_value(i)
  else: return -1
  checkvalid_of_wordline = False
  if down == 0:
    word = ''
    for i in range(0,len(board[0])):
      if newboard[row][i] != '': word += newboard[row][i]
      else: word += ' '
    listofword = word.strip().split()
    if len(listofword) > 0:
      realword = listofword[0]
      for word in listofword:
        if len(word) >= len(realword): realword = word
      if is_valid(realword): checkvalid_of_wordline = True
  if down == 1:
    word = ''
    for i in range(0,len(board)):
      if newboard[i][col] != '': word += newboard[i][col]
      else: word += ' '
    listofword = word.strip().split()
    if len(listofword) > 0:
      realword = listofword[0]
      for word in listofword:
        if len(word) >= len(realword): realword = word
      if is_valid(realword): checkvalid_of_wordline = True
  if tiles == realword: return -1
  if (len(tiles) >= 7) and (checkvalid_of_wordline) and (tiles != realword): 
    score += 50
  return score
def best_play(tiles,board):
  data = []
  for down in range(0,2):
    for i in range(len(board)):
      for j in range(len(board[0])):
        copyboard = copy_board(board)
        newboard = place_tiles(i,j,down,tiles,copyboard)[1]
        if (play(i,j,down,tiles,copyboard) != -1) and (len(get_all_words(newboard)[1]) == 0):
          data.append([play(i,j,down,tiles,board),i,j,down])
  data.sort()
  if data != []:
    scoremaxdata = data[-1][0]
    pickdata = []
    for element in data:
      if element[0] == scoremaxdata:
        pickdata.append(element)
    pickdata.sort()
    return pickdata[0]
  else: return [-1,-1,-1,-1]

00100: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 986, 'const': 328, 'code+const': 1314}
check_import({'allowable': ['math']}): none
def get_all_words(board): 
    all_words = []
    for row in board:
      word = ''
      for i in range(len(row)):
        if row[i] != '':
          word += row[i].upper()
        elif row[i] == '' and word != '':
          all_words.append(word)
          word = ''
      if word != '':
        all_words.append(word)
    for col_no in range(15):
      word = ''
      for row_no in range(15):
        char = board[row_no][col_no]
        if char != '':
          word += char
        elif char == '' and word != '':
          all_words.append(word)
          word = ''
      if word != '':
        all_words.append(word)
    all_words_2 = [[],[]]
    for word in all_words:
      if len(word) >= 2 and is_valid(word):
        all_words_2[0].append(word)
      elif len(word) >= 2:
        all_words_2[1].append(word)
    all_words_2[0].sort()
    all_words_2[1].sort()
    return all_words_2
def get_play(board, new_board):
    word = ''
    row = 0
    col = 0
    vert = 0
    coords = [[],[]]
    for i in range(15):
      for j in range(15):
        if new_board[i][j] != '' and board[i][j] == '':
          if word == '':
            row,col = i,j
          word += new_board[i][j]
          coords[0].append(i)
          coords[1].append(j)
    coords[0] = list(set(coords[0]))
    coords[1] = list(set(coords[1]))
    if len(coords[0]) == 1:
      vert = 0
    elif len(coords[1]) == 1:
      vert = 1
    return [row,col,vert,word.upper()]
def play(row,col,down,tiles,board):
    old_board = copy_board(board)
    old_words = get_all_words(old_board)
    placable,board = place_tiles(row,col,down,tiles.upper(),board)
    if not placable:
      return -1
    new_board = copy_board(board)
    new_words = get_all_words(new_board)
    if len(new_words[1]) != 0:
      board = old_board
      return -1
    score = 0
    for word in new_words[0]:
      if word in old_words[0]:
        old_words[0].remove(word)
      else:
        for char in word:
          score += get_value(char.upper())
    if len(tiles) >= 7:
      score += 50   
    return score
def best_play(tiles,board):
    score,row,col,down = -1,-1,-1,-1
    for i in range(15):
      for j in range(15):
        for k in range(2):
          test_board = copy_board(board)
          contender = play(i,j,k,tiles,board)
          if contender > score:
            score = contender
            row,col,down = i,j,k
    lst = [score,row,col,down]
    return lst

00101: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[359]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 1138, 'const': 269, 'code+const': 1407}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  k ='';o='';p=[];c=0
  for i in range(len(board)):
    for j in range(len(board[0])):
      c+=1
      k += board[i][j]
      o += board[j][i]
      if board[i][j] == '' or c%len(board)==0:
        if len(k)>=2:
          p.append(k)
        k =''
      if board[j][i] == ''or c%len(board[0])==0:
        if len(o)>=2:
          p.append(o)
        o = ''
  valid =[];invalid=[]
  for e in p:
    if  is_valid(e):
      valid.append(e)
    else:
      invalid.append(e)
  valid.sort()
  invalid.sort()
  return [valid,invalid]
def get_play(board, new_board):
  k ='';o='';p=[];c=0;z=[];l=[]
  for i in range(len(board)):
    for j in range(len(board[0])):
      if board[i][j] != new_board[i][j]:
        k +=  new_board[i][j]
      if board[j][i] != new_board[j][i]:
        o += new_board[j][i]
  for i in range(len(board)):
     for j in range(len(board[0])):
      if board[i][j] != new_board[i][j]:
        z.append([i,j]) 
  right = z[0]
  if len(z )> 1:
    for i in range(len(z)-1):
      for j in range(len(z[0])):
        if z[i][1] == z[i+1][1]:
          d = [1]
        else: 
          d=[0]
  else:
    d = [0]
  allr = right+d+[k]
  return allr
def play(row,col,down,tiles,board):
  p = [];h=0;d={};m={};l=''
  new_board = place_tiles(row,col,down,tiles,board)[1]
  k = get_all_words(board)
  j = get_all_words(new_board)
  for e in j[0]:
    if e not in d:
      d[e] = 1
    else:
      d[e] += 1
  for e in k[0]:
    if e not in m:
      m[e] = 1
    else:
      m[e] += 1
  for e in j[0]:
    if e not in k[0] :
      if is_valid(e):
        p.append(e)
    else:
      if d[e] - m[e] > 0:
        if e not in p:
          if is_valid(e):
            p.append(e*(d[e] - m[e]))
  for e in p:
    for c in e:
      h += letter_value[c.lower()]
  for e in p:
    if len(e)-(len(e)-len(tiles)) >= 7:
      h += 50
      break
  if h>0:
    return h
  else:
    return -1
def best_play(tiles,board):
  return [-1,-1,-1,-1]

00102: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1086, 'const': 348, 'code+const': 1434}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_word = []
    invalid_word = []
    for r in range(len(board)):
      phase = ""
      for c in range(len(board[r])):
        if board[r][c].isalpha():
          phase += board[r][c].upper()
        else :
          phase += "."
      word_list_raw = phase.split(".")
      for w in word_list_raw:
        if w != "" and len(w)>=2 :
          x = is_valid(w)
          if x == True :
            valid_word.append(w)
          elif x == False :
            invalid_word.append(w)    
    for c1 in range(len(board[0])):
      phase = ""
      for r1 in range(len(board)):
        if board[r1][c1].isalpha():
          phase += board[r1][c1].upper()
        else :
          phase += "."
      word_list_raw = phase.split(".")
      for w in word_list_raw:
        if w != "" and len(w)>=2:
          x = is_valid(w)
          if x == True :
            valid_word.append(w)
          elif x == False :
            invalid_word.append(w) 
    valid_word.sort()
    invalid_word.sort()
    return [valid_word,invalid_word]
def get_play(board, new_board):
    dif_list = []
    phases = ""
    for r in range(len(board)):
      for c in range(len(board[0])):
        if board[r][c] != new_board[r][c]:
          dif_list.append([r,c])
          phases += new_board[r][c]
    row_list =[]
    col_list = []
    for k in dif_list:
      row_list.append(k[0])
      col_list.append(k[1])
    if row_list[0]-row_list[-1] == 0 or len(row_list) == 1 :
      tile = 0
    else:
      tile = 1
    return [min(row_list),min(col_list),tile,phases]
def play(row,col,down,tiles,board):
    valid_old_board = get_all_words(board)[0]
    valid,new_board = place_tiles(row,col,down,tiles,board)
    if valid == True :
      valid_new_board, invalid_words = get_all_words(new_board)
      if len(invalid_words) != 0:
        return -1
      score = 0
      for v in valid_old_board:
        if v in valid_new_board :
          valid_new_board.remove(v)
      for rv in valid_new_board :
        for i in range(len(rv)):
          score += get_value(rv[i])
      if len(tiles) >= 7 :
        score += 50
      if score == 0 :
        return -1
      else :
        return score
    else :
      return -1
def best_play(tiles,board):
    score = 0
    pos = [-1,-1,-1]
    for r in range(len(board)):
      for c in range(len(board[0])):
        for d in range(2):
          valid,n_board = place_tiles(r,c,d,tiles,board)
          if valid == True :
            if play(r,c,d,tiles,board)>score:
              score = play(r,c,d,tiles,board)
              pos = [r,c,d]
    if score == 0:
      return [-1,-1,-1,-1]
    return [score,pos[0],pos[1],pos[2]]

00103: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_20.0
[[0-1, 0-1, 0-1, 0-1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1004, 'const': 364, 'code+const': 1368}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    l = [[], []]
    words = []
    for row in range(15):
        x = ""
        for col in range(15):
            if board[row][col] != "":
                x += board[row][col]
            else:
                if len(x) >= 2:
                    words.append(x)
                x = ""
        if len(x) >= 2:
            words.append(x)
    for col in range(15):
        x = ""
        for row in range(15):
            if board[row][col] != "":
                x += board[row][col]
            else:
                if len(x) >= 2:
                    words.append(x)
                x = ""
        if len(x) >= 2:
            words.append(x)
    for e in words:
        if is_valid(e):
            l[0].append(e)
        else:
            l[1].append(e)
    l[0].sort()
    l[1].sort()
    return l
def get_play(board, new_board):
    pos = []
    tiles = ""
    for r in range(15):
        for c in range(15):
            if board[r][c] != new_board[r][c]:
                tiles += new_board[r][c]
                pos.append((r, c))
    result_column, result_row = min([x[1] for x in pos]), min([x[0] for x in pos])
    down = 0
    for r, c in pos:
        if r != pos[0][0]:
            down = 1
    return [result_row, result_column, down, tiles]
def play(row,col,down,tiles,board):
    e=get_all_words(board);w=place_tiles(row,col,down,tiles,board)[1];b=get_all_words(w)
    h=0
    for k in b[1]:
      if k not in e[1]:
        return -1
    for i in e[0]:
      if i in b[0]:
          f=b[0].index(i)
          b[0].pop(f)
    for j  in b[0]:
      for y in j: 
          h+=get_value(y)
    if len(tiles)>=7:
      h+=50
    return h
def best_play(tiles, board):
    best = []
    for r in range(15):
        for c in range(15):
            best.append([-play(r, c, 0, tiles, board), r, c, 0])
            best.append([-play(r, c, 1, tiles, board), r, c, 1])
    best.sort()
    if best[0][0] == 1:
        return [-1, -1, -1, -1]
    else:
        return [-best[0][0], best[0][1], best[0][2], best[0][3]]

00104: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _  [S] [T] [A] [R] [P] [L] [A] [T] [I] [N] [U] [M]  _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[-1]
test_play_21.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[-1]
test_play_31.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _  [P] [Y] [T] [H] [O] [N]  _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[14]
test_play_40.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _  [P] [Y] [T] [H] [O] [N]  _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[14, 201]
test_play_50.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _  [M] [A] [N] [G] [I] [E] [R]  _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[60, 6672]
test_play_61.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _  [M] [A] [N] [G] [I] [E] [R]  _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[60, -1]
test_play_70.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _  [E] [L] [E] [P] [H] [A] [N] [T]  _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[63, -14]
test_play_81.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _  [P] [L] [A] [T] [I] [N] [U] [M]  _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[62]
test_play_90.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _  [R] [O] [J] [I]  _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[11, 135, 24, 197, 85, 12]
test_play_100.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _  [A] [X]  _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[9, 2233, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _  [F]  _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _  [R]  _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _  [A]  _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _  [C]  _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _  [T]  _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _  [O]  _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _  [S]  _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _  [T]  _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _  [R]  _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _  [A]  _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _  [T]  _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _  [I]  _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _  [O]  _   _   _   _   _   _ 
6    _   _   _   _   _   _   _  [O] [D]  _   _   _   _   _   _ 
7    _   _   _   _   _   _  [O] [D] [E]  _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[811]
test_play_130.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _  [R] [O] [T] [O] [R]  _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _  [O]  _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _  [T]  _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _  [O]  _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[89]
test_play_140.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _  [B] [A] [N] [A] [N] [A]  _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[8, 1520, 216, -1]
test_play_150.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _  [B] [R] [I] [S] [K] [E] [T] [S]  _   _   _ 
4    _   _   _   _  [L]  _   _   _   _   _   _  [N]  _   _   _ 
5    _   _   _   _  [O]  _   _  [B] [A]  _   _  [O]  _   _   _ 
6    _   _   _   _  [O]  _  [B] [A] [T]  _   _  [W]  _   _   _ 
7    _   _  [C] [O] [M] [B] [A] [T] [E] [D]  _  [B]  _   _   _ 
8    _   _   _   _   _  [L] [A]  _  [L] [A]  _  [E]  _   _   _ 
9    _   _   _   _   _  [U]  _   _  [I] [D] [O] [L]  _   _   _ 
10   _   _   _   _   _  [E]  _   _  [C]  _   _  [T]  _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[349]
test_best_play_10.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[]
test_best_play_20.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[]
test_best_play_30.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[]
test_best_play_40.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[]
test_best_play_50.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[]
bytecount: {'code': 1410, 'const': 381, 'code+const': 1791}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words = []
    invalid_words = []
    for row in range(15):
      word = ''
      for col in range(15):
        if get_value(board[row][col]) == -1:
          word = ''
        word = word + board[row][col] if get_value(board[row][col]) else ''
        if len(word) >= 2 and (col == 14 or get_value(board[row][col + 1]) == -1):
          valid_words.append(word) if is_valid(word) else invalid_words.append(word)
          word = ''
    for col in range(15):
      word = ''
      for row in range(15):
        if get_value(board[row][col]) == -1:
          word = ''
        word = word + board[row][col] if get_value(board[row][col]) else ''
        if len(word) >= 2 and (row == 14 or get_value(board[row + 1][col]) == -1):
          valid_words.append(word) if is_valid(word) else invalid_words.append(word)
          word = ''
    return [sorted(valid_words), sorted(invalid_words)]
def get_play(board, new_board):
    ret = [0,0,0,'']
    for row in range(15):
      for col in range(15):
        if ret[3]:
          break
        if board[row][col] != new_board[row][col]:
            ret[0] = row
            ret[1] = col
            ret[3] += new_board[row][col]
            for row in range(row + 1, 15):
              if board[row][col] != new_board[row][col]:
                ret[3] += new_board[row][col]
            if len(ret[3]) > 1:
              ret[2] = 1
            row = ret[0]
            for col in range(col + 1, 15):
              if board[row][col] != new_board[row][col]:
                ret[3] += new_board[row][col]
      if ret[3]:
        break
    return ret
def play(row,col,down,tiles,board):
    new_board = copy_board(board)
    if place_tiles(row, col, down, tiles, new_board)[0] == -1:
      return -1
    new_board = place_tiles(row,col,down,tiles,new_board)[1]
    print_board(new_board)
    word = ''
    score = 0
    while row <= 14 and col <= 14 and get_value(new_board[row][col]) != -1:
      word += new_board[row][col]
      score += get_value(new_board[row][col])
      t_word = ''
      if down:
        t_col = col
        while t_col > 0 and get_value(new_board[row][t_col - 1]) != -1:
          t_col -= 1
        while t_col <= 14 and get_value(new_board[row][t_col]) != -1:
          if t_col != col:
            score += get_value(new_board[row][t_col])
          t_word += new_board[row][t_col]
          t_col += 1
        row += 1
      else:
        t_row = row
        while t_row > 0 and get_value(new_board[t_row - 1][col]) != -1:
          t_row -= 1
        while t_row <= 14 and get_value(new_board[t_row][col]) != -1:
          if t_row != row:
            score += get_value(new_board[t_row][col])
          t_word += new_board[t_row][col]
          t_row += 1
        col += 1
      print(t_word)
      print(score)
      if len(t_word) > 1 and not is_valid(t_word):
        return -1
    if not is_valid(word):
      return -1
    if len(word) >= 7:
      score += 50
    return score
def best_play(tiles,board):
    ret = [0,0,0,0]
    for row in range(15):
      for col in range(15):
        for down in range(2):
          score = play(row, col, down, tiles, board)
          if ret[0] < score:
            ret = [score, row, col, down]
    return ret

00105: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_50.0
[160, 372]
test_play_60.0
[160, -1]
test_play_70.0
[163, 14]
test_play_80.0
[162]
test_play_90.0
[11, 2615, 247, 60, 174, 865, 12]
test_play_100.0
[9, 4233, 5836, 7618, 8312, 973, 10865, 1197, 13174, 1476]
test_play_110.0
[167, 61, 28, 5611, 6713, 7685, 104, 115, 124, 1317, 1256, 171, 1854, 2199, 2232, 234, 1249, 2157, 27516, 2681, 2946, 1304,
 3310, 34327, 28]
test_play_120.0
[141]
test_play_131.0
[9]
test_play_140.0
[8, 280, 4426, -1]
test_play_150.0
[398]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 1108, 'const': 256, 'code+const': 1364}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid=[]
  invalid=[]
  r=len(board)
  c=len(board[0])
  listcheck = []
  words =[]
  for i in range(r) :
    l = ''
    for j in range(c-1) :
        if board[i][j]!='' and board[i][j+1]!='' :
            l+=board[i][j].upper()
        if board[i][j]!='' and board[i][j+1]=='' :
            l+=board[i][j].upper()
            words.append(l)
            l=''
        if j==13 and board[i][14]!='' :
              l+=board[i][14].upper()
              words.append(l)
              l=''
  for i in range(r) :
    l = ''
    for j in range(c-1) :
        if board[j][i]!='' and board[j+1][i]!='' :
            l+=board[j][i].upper()
        if board[j][i]!='' and board[j+1][i]=='' :
            l+=board[j][i].upper()
            words.append(l)
            l=''
        if j==13 :
            if board[14][i]!='' :
              l+=board[14][i].upper()
              words.append(l)
              l=''
  for e in words :
        if is_valid(e)==True :
          valid.append(e)
        else :
          if len(e) !=1 :
            invalid.append(e)
  valid.sort()
  invalid.sort()
  return [valid,invalid]
def get_play(board, new_board):
  n=0
  for i in range(15) :
    if board[i]!=new_board[i] :
        n+=1
  if n==1 :
    down=0
  else :
    down=1
  x=0
  y=0
  if down==0 :
    string=''
    first=0
    for i in range(15) :
      if board[i]!=new_board[i] :
        p=i
    for e in range(15) :
      if board[p][e]!=new_board[p][e] :
        first+=1
        string+=new_board[p][e]
        if first==1 :
          x=p
          y=e
    return [x,y,down,string]
  if down==1 :
    first=0
    string2=''
    for i in range(15) :
      for j in range(15) :
        if board[j][i]!=new_board[j][i] :
          first+=1
          string2+=new_board[j][i]
          if first==1 :
            x,y=j,i
    return [x,y,down,string2]
def play(row,col,down,tiles,board):
  board=place_tiles(row,col,down,tiles,board)[1]
  valid,invalid=get_all_words(board)
  score=0
  if len(invalid)>=1 :
    return -1
  for e in valid :
    for w in e :
        score+=get_value(w)
  return score
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00106: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0KeyError('ODE')
[]
test_play_130.0
[59]
test_play_140.0KeyError('AN')
[8, 20, 26, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1436, 'const': 424, 'code+const': 1860}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  row= 15
  col= 15
  v1= []
  inv=[]
  get=[]
  for i in range(row):
    s=""
    for j in range(col):
      c= board[i][j]
      if c=="":
        c= " "
      s= s+ c
    f= s.split()
    for i in range(len(f)):
        if is_valid(f[i])==True:
            v1.append(f[i])
        else:
          if len(f[i])>=2:
            inv.append(f[i])
  for i in range(col):
    k=""
    for j in range(row):
      c= board[j][i]
      if c=="":
        c= " "
      k= k+ c
    m= k.split()
    for i in range(len(m)):
        if is_valid(m[i])==True:
            v1.append(m[i])
        else:
          if len(m[i])>=2:
            inv.append(m[i])
  v1.sort()
  inv.sort()
  get= [v1,inv]
  return get
def get_play(board, new_board):
 b=[]
 nb=[]
 row= 15
 col= 15
 for i in range(row):
   for j in range(col):
     if "A"<=board[i][j]<="Z":
       b.append([[i,j],board[i][j]])
 for i in range(row):
    for j in range(col):
     if "A"<=new_board[i][j]<="Z":
       nb.append([[i,j],new_board[i][j]])
 h=[]
 for e in nb:
   if e not in b:
     h.append(e)
 r=""
 for i in range(len(h)):
   r= r+ h[i][1]
 t= h[0][0][0]
 if len(h)==1:
   d=0
 else:
   if t== h[1][0][0]:
     d=0
   else:
     d=1
 q= []
 q.append(h[0][0][0])
 q.append(h[0][0][1])
 q.append(d)
 q.append(r)
 return q
def play(row,col,down,tiles,board):
  r1= get_all_words(board)
  a= place_tiles(row,col,down,tiles,board)[0]
  if a==False:
    return -1
  board2= place_tiles(row,col,down,tiles,board)[1]
  r2= get_all_words(board2)
  if r2[1]!= []:
    return -1
  a= r1[0]
  b= r2[0]
  k={}
  for i in range(len(b)):
    if b[i] in k:
      k[b[i]] +=1
    else:
      k[b[i]] =1
  q={}
  for i in range(len(a)):
    if a[i] in q:
      q[a[i]] +=1
    else:
      q[a[i]]= 1
  g=[]
  for e in k:
    if k[e]>1:
      for i in range(k[e]-q[e]):
        g.append(e)
    else:
      if e not in q:
        g.append(e)
  p= 0
  for i in range(len(g)):
    c= 0
    for j in range(len(g[i])):
      c+= get_value(g[i][j])
    p= p+c
  f= get_play(board,board2)
  f= f[3]
  if len(f)>= 7:
    p= p+50
  return p
def best_play(tiles,board):
  t= [-1,-1,-1,-1]
  row= 15
  col= 15
  for i in range(row):
    for j in range(col):
      for e in [0,1]:
        s= play(i,j,e,tiles,board)
        if s> t[0]:
          t= [s,i,j,e]
  return t

00107: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_40.0
[14, 721]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_70.0
[63, 614]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 611, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[8539]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[68, 0, 7, 1], [1387, 12, 0, 0], [798, 01, 612, 1], [7259, 31, 50, 10], [5911, 102, 43, 0], [7765, 13, 34, 01],
 [3219, 16, 81, 10], [17, 14, 42, 01], [911, 60, 41, 10], [232, 13, 98, 1]]
test_best_play_40.0
[[71, 0, 7, 1], [763, 210, 80, 10], [7863, 1, 91, 10], [639, 97, 3, 01], [189, 813, 10, 10], [72, 214, 114, 10],
 [3317, 06, 6, 10], [758, 13, 73, 0], [6518, 104, 10, 0], [146, 115, 21, 0]]
test_best_play_50.0
[[83, 0, 7, 1], [8062, 513, 80, 10], [7258, 1, 98, 10], [610, 0, 1, 0], [7768, 20, 611, 1], [7324, 146, 28, 01],
 [218, 28, 59, 1], [610, 1, 2, 1], [261, 25, 13, 1], [6527, 04, 94, 01]]
bytecount: {'code': 1874, 'const': 385, 'code+const': 2259}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    alphabet='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    words=[[],[]]
    for row in range(len(board)):
     vocab=''
     kum=[] 
     i0='' 
     j=0 
     r=len(board[row])-1         
     for i in board[row]:
         if i =='' and i0 =='' and j != r:pass
         elif i !='' and i0 =='' and j != r:
             vocab+=i
         elif i !='' and i0 !='' and j != r:
             vocab+=i
         elif i =='' and i0 !='' and j != r:
             kum.append(vocab)
             vocab=''
         if i =='' and i0 =='' and j == r:pass
         elif i !='' and i0 =='' and j == r:
             vocab+=i
             kum.append(vocab)
             vocab=''
         elif i !='' and i0 !='' and j == r:
             vocab+=i
             kum.append(vocab)
             vocab=''
         elif i =='' and i0 !='' and j == r:
             kum.append(vocab)
             vocab=''         
         i0=i
         j+=1
     for vocab in kum:
      if vocab == '' or len(vocab) == 1 :pass
      else:        
       if is_valid(vocab) == True:
         words[0].append(vocab)
       else:words[1].append(vocab)
     kum=[]
    for col in range(15):
        vocab=[]
        vocab2=''
        i0=''
        kum=[]
        j=0
        r=14
        for row in range(15):
            i=board[row][col]
            vocab.append(i)
        for i in vocab:
         if i =='' and i0 =='' and j != r:pass
         elif i !='' and i0 =='' and j != r:
             vocab2+=i
         elif i !='' and i0 !='' and j != r:
             vocab2+=i
         elif i =='' and i0 !='' and j != r:
             kum.append(vocab2)
             vocab2=''
         if i =='' and i0 =='' and j == r:pass
         elif i !='' and i0 =='' and j == r:
             vocab2+=i
             kum.append(vocab2)
             vocab2=''
         elif i !='' and i0 !='' and j == r:
             vocab2+=i
             kum.append(vocab2)
             vocab2=''
         elif i =='' and i0 !='' and j == r:
             kum.append(vocab2)
             vocab2=''         
         i0=i
         j+=1
        for x in kum:
          if x == '' or len(x) == 1 :pass
          else:        
           if is_valid(x) == True:
            words[0].append(x)
           else:words[1].append(x) 
        kum=[]         
    words[0].sort()
    words[1].sort()    
    return words
def get_play(board, new_board):
    word_detect=[]
    for i in range(len(board)):
        for j in range(len(board[0])):
            if new_board[i][j] != board[i][j]:
                word_detect.append([i,j])
    y=sorted([k[0] for k in word_detect])
    x=sorted([k[1] for k in word_detect])
    row_begin=y[0]
    col_begin=x[0]
    if len(y) == 1 and len(x) == 1:
        down=0
        word=''
        for i in word_detect:
            word+=new_board[i[0]][i[1]]
    elif y[0] == y[1] :
        down=0
        word=''
        for i in word_detect:
            word+=new_board[i[0]][i[1]]
    else:
        down=1
        word=''
        for i in word_detect:
            word+=new_board[i[0]][i[1]]
    return [row_begin,col_begin,down,word]
def play(row,col,down,tiles,board):
    score=0
    valid,new_board = place_tiles(row,col,down,tiles,board)
    w01,w02=get_all_words(board)
    w1,w2=get_all_words(new_board)
    if valid == False or w1 == [] :
       return -1
    else: 
        for x in w01:
            if x in w1:
                w1.remove(x)
        if w1 == []: return -1        
    for i in w1:
        for j in i:
            score+=get_value(j)
        if len(i)>= 7 :score+=50
    return score
def best_play(tiles,board):
    best_score=[]
    for row in range(15):
      for col in range(15):
        for down in range(2):
          score=play(row,col,down,tiles,board)
          if score != -1 :
            best_score.append([score,row,col,down])
    best_score.sort()
    if best_score==[]:
       return [-1,-1,-1,-1]
    else:
      max=best_score[-1][0]
      for i in range(len(best_score)):
          if best_score[i][0] == max:
             return best_score[i]

00108: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, False0, 'ICE'], [7, 4, False0, 'JUD'], [4, 5, True1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, True1, 'MALEATE'], [5, 6, True1, 'JURY'], [5, 8, True1, 'REWTH'], [1, 8, False0, 'OLEHUNT'],
 [2, 14, True1, 'RAVISES'], [0, 10, False0, 'TOGA'], [5, 13, True1, 'POZ'], [5, 5, True1, 'ABAND'],
 [2, 10, False0, 'COYE'], [10, 2, False0, 'FOOS']]
test_get_play_31.0
[[6, 6, True1, 'XUNT']]
test_get_play_41.0
[[7, 1, False0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, True1, 'CAT']]
test_get_play_61.0
[[6, 7, True1, 'CT']]
test_get_play_71.0
[[7, 3, False0, 'COMDER']]
test_get_play_81.0
[[6, 6, False0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, True1, 'HEPATICS'], [1, 3, False0, 'MAILS'], [7, 6, True1, 'ARREAR'], [2, 0, False0, 'EASIED'],
 [13, 6, False0, 'SAHIWAL'], [3, 13, True1, 'MICROLOGIES'], [14, 7, False0, 'GAS'],
 [7, 5, True1, 'GOORY'],
 [10, 7, False0, 'SHIPS'], [2, 11, True1, 'MALEFICE'], [0, 10, True1, 'DOOLAN'],
 [4, 9, True1, 'POGEY'],
 [0, 14, True1, 'AGROS'], [3, 2, True1, 'TONIEST'], [9, 1, True1, 'SLICES'],
 [4, 0, False0, 'CRONY'],
 [7, 14, True1, 'DIXIT'], [11, 4, True1, 'PINS'], [5, 0, True1, 'ARED'],
 [0, 1, False0, 'GRAFT'], [12, 9, False0, 'MO'],
 [6, 4, True1, 'CAB'], [11, 12, True1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 958, 'const': 334, 'code+const': 1292}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid, invalid = [], []
    for i in range(15):
        word1 = ""
        word2 = ""
        for j in range(15):
            if(board[i][j] != ''):
                word1 += board[i][j].upper()
            else:
                if(len(word1) > 1):
                    if(is_valid(word1)): valid.append(word1)
                    else: invalid.append(word1)
                word1 = ""
            if(board[j][i] != ''):
                word2 += board[j][i].upper()
            else:
                if(len(word2) > 1):
                    if(is_valid(word2)): valid.append(word2)
                    else: invalid.append(word2)
                word2 = ""
        if(len(word1) > 1):
            if(is_valid(word1)): valid.append(word1)
            else: invalid.append(word1)
        if(len(word2) > 1):
            if(is_valid(word2)): valid.append(word2)
            else: invalid.append(word2)
    valid.sort()
    invalid.sort()
    return [valid, invalid]
def get_play(board, new_board):
    p = [(i,j) for i in range(15) for j in range(15) if board[i][j] != new_board[i][j]]
    y0,x0 = p[0]
    if(len(p) == 1):
        return [y0, x0, 0, new_board[y0][x0]]
    y1,x1 = p[1]
    w = ''.join(new_board[i][j].upper() for i,j  in p)
    return [y0, x0, x0 == x1, w]
def play(row,col,down,tiles,board):
    [ok, b] = place_tiles(row,col,down,tiles,copy_board(board))
    [valid1, invalid1] = get_all_words(b)
    if(ok == False): return -1
    if(len(invalid1) > 0): return -1
    [valid0, invalid0] = get_all_words(board)
    for word in valid0: 
        if word in valid1: 
            valid1.remove(word)
    score = 0
    if(len(tiles) >= 7): score = 50
    score += sum(sum(get_value(i) for i in word) for word in valid1)
    return score
def best_play(tiles,board):
    s,row,col,down = [-1] * 4
    for i in range(15):
        for j in range(15):
            score0 = play(i,j,0,tiles,board)
            if(score0 > s):
                s, row, col, down = score0, i, j, 0 
            score1 = play(i,j,1,tiles,board)
            if(score1 > s):
                s, row, col, down = score1, i, j, 1
    return [s, row, col, down]

00109: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 15, 24, 17, 85, 012]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 1827, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 120, 1426, -1]
test_play_150.0
[2839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 954, 'const': 266, 'code+const': 1220}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  ans = []
  valid = []
  invalid = []
  for i in range(len(board)):
    row = ""
    col = ""
    for j in range(len(board[i])):
      if board[i][j] != "": row += board[i][j]
      else: row += "1"
      if board[j][i] != "": col += board[j][i]
      else:col += "1"
    l_row = row.split("1")
    l_col = col.split("1")
    for e in l_row:
      if e != "" and len(e) > 1: 
        if is_valid(e):valid.append(e)
        else:invalid.append(e)
    for t in l_col:
      if t != "" and len(t) > 1:
        if is_valid(t):valid.append(t)
        else:invalid.append(t)
  ans.append(sorted(valid))
  ans.append(sorted(invalid))
  return ans
def get_play(board, new_board):
  all_index = []
  new_tiles = []
  down = 0
  for i in range(len(board)):
    for j in range(len(board[i])):
      if board[i][j] != new_board[i][j]: 
        all_index.append([i,j])
        new_tiles.append(new_board[i][j])
  if len(all_index) > 1:
    if all_index[0][1] == all_index[1][1]: down = 1
  return [sorted(all_index)[0][0],sorted(all_index)[0][1],down,"".join(new_tiles)]
def play(row,col,down,tiles,board):
  s = 0
  v,new_board =  place_tiles(row,col,down,tiles,board)
  if v == False: return -1
  else:
    x1,x2 = get_all_words(new_board)
    if len(x2) > 0: return -1
    else:
      y1,y2 = get_all_words(board)
      for i in x1:
        if i not in y1:
          for j in i:
            s += get_value(j)
      if len(tiles) >= 7:
        s += 50
  return s
def best_play(tiles,board):
  a = []
  b = []
  for i in range(len(board)):
    for j in range(len(board[i])):
      a.append([play(i,j,0,tiles,board),i,j,0])
      a.append([play(i,j,1,tiles,board),i,j,1])
  for i in a:
    if i != [-1, 0, 0, 0]: b.append(i)
    else: b.append([-1, -1, -1, -1])
  for i in sorted(b):
    if i[0] == sorted(b)[-1][0]:
      return i

00110: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1092, 'const': 386, 'code+const': 1478}
check_import({'allowable': ['math']}): none
def return_words(each_row_or_col) :
    w = ""
    for i in each_row_or_col :
        if i == "" :
            w += " "
        else :
            w += i
    words = w.split()
    l = []
    for i in words :
        if len(i)>=2 :
            l.append(i.upper())
    return l
def get_all_words(board):
    all_words = []
    for i in range(15) :
        all_words += return_words(board[i]) + return_words([b[i] for b in board])
    valid = []
    invalid =[]
    for w in all_words :
        if is_valid(w) == True :
            valid.append(w)
        else :
            invalid.append(w)
    valid.sort()
    invalid.sort()
    return [valid,invalid]
def get_play(board, new_board) :
    tiles = []
    for i in range(15) :
        for j in range(15) :
            if board[i][j] != new_board[i][j] :
                tiles.append([new_board[i][j][0],i,j])
    w = ""
    for i in tiles :
        w += i[0]
    play = []
    if len(tiles) == 1 :
        play = [tiles[0][1], tiles[0][2], 0, tiles[0][0]]
    else :
        if  tiles[0][1] != tiles[1][1] :
            play = [tiles[0][1], tiles[0][2], 1 , w]
        elif tiles[0][2] != tiles[1][2] :
            play = [tiles[0][1], tiles[0][2], 0 , w]
    return play
def play(row,col,down,tiles,board):
    place = place_tiles(row,col,down,tiles,board)
    if place[0] == False :
        return -1
    elif place[0] == True :
        new_board = place[1]
        board_words = get_all_words(board)[0]
        new_board_words = get_all_words(new_board)[0]
        if board_words == new_board_words or get_all_words(new_board)[1] != get_all_words(board)[1]  :
            return -1
        for w in board_words :
            if w in new_board_words :
                new_board_words.remove(w)
        s = new_board_words
        score = sum([get_value(l) for w in s for l in w ])
        if len(tiles) >= 7 :
            return score + 50
        return score
def best_play(tiles,board) :
    valid = []
    for i in range(15) :
        for j in range(15) :
            for d in range(2) :
                if place_tiles(i,j,d,tiles,board)[0] == True and play(i,j,d,tiles,board)!= -1 :
                    if valid == [] or play(i,j,d,tiles,board) == valid[0][0] :
                        valid.append([play(i,j,d,tiles,board), i, j, d])
                    elif play(i,j,d,tiles,board) > valid[0][0] :
                        valid = [[play(i,j,d,tiles,board), i, j, d]]
    if valid == [] :
        return [-1,-1,-1,-1]
    else :
        valid.sort()
        return valid[0]

00111: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1500, 'const': 581, 'code+const': 2081}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    word = []
    valid_words = []
    invalid_words = []
    for i in range(15):
        word = []
        for j in range(15):
            if board[j][i] != "":
                word.append(board[j][i])
            if j == 14 or board[j][i] == "" :
                if len(word) > 1 : 
                    word = "".join(word)
                    if is_valid(word): 
                        valid_words.append(word)
                    else:
                        if word != []: 
                            invalid_words.append(word)
                word = []
    for i in range(15):
        word = []
        for j in range(15):
            if board[i][j] != "":
                word.append(board[i][j])
            if j == 14 or board[i][j] == "" :
                if len(word) > 1 : 
                    word = "".join(word)
                    if is_valid(word): 
                        valid_words.append(word)
                    else:
                        if word != []: 
                            invalid_words.append(word) 
                word = []
    return [sorted(valid_words),sorted(invalid_words)]
def get_play(board, new_board):
    row = []
    col = []
    word = ""
    for i in range(15):
        for j in range(15):
            if new_board[i][j] != board[i][j]: 
                row.append(i)
                col.append(j)
                down = 1
                word += new_board[i][j]
    if row[0] == row[-1] : down = 0
    return [row[0],col[0],down,word]
def play(row,col,down,tiles,board):
    score = 0
    new_board = place_tiles(row,col,down,tiles,board)
    if new_board[0] : new_board = new_board[1]
    else: return -1
    if down == 0:
        for i in range(15):
            word = []
            for j in range(15):
                if board[j][i] != "": word.append(board[j][i])
                if j == 14 or board[j][i] == "" :
                    if len(word) > 1 : 
                        word = "".join(word)
                        if not is_valid(word): return -1
                word = []
    else:    
        for i in range(15):
            word = []
            for j in range(15):
                if board[i][j] != "": word.append(board[i][j])
                if i == 14 or board[i][j] == "" :
                    if len(word) > 1 : 
                        word = "".join(word)
                        if not is_valid(word): return -1
                word = []
    old = get_all_words(board)[0]
    new = get_all_words(new_board)
    if len(new[1]) != 0: return -1
    else: new = new[0]
    index = 0
    while index != len(new):
        if new[index] in old:
            old.remove(new[index])
            new.remove(new[index])
        else: index+=1 
    if len(new) == 0: return -1
    for e in new:
        if is_valid(e):
            for k in e:
                score += get_value(k) 
    if len(tiles) >= 7: score += 50
    return score if score != 0 else -1
def best_play(tiles,board):
    score = []
    for row in range(15):
        for col in range(15):
            for down in range(2):
                score.append([play(row,col,down,tiles,board),row,col,down])
    ans = [e for e in score if e == max(score, key=lambda sc: sc[0])]
    ans = [e for e in score if e == min(ans, key=lambda sc: sc[1])]
    ans = [e for e in score if e == min(ans, key=lambda sc: sc[2])]
    ans = [e for e in score if e == min(ans, key=lambda sc: sc[3])]
    return ans[0] if ans[0][0]!=-1 else [-1,-1,-1,-1]

00112: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0
[50-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_140.0
[8, 20, 26, 25-1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[68, 0, 7, 1], [87, 12, 60, 10], [10879, 41, 512, 1], [7259, 81, 80, 10], [171, 112, 93, 10], [7265, 73, 4, 1],
 [3019, 16, 81, 10], [197, 14, 92, 1], [191, 120, 21, 0], [22, 3, 108, 1]]
test_best_play_40.0
[[71, 0, 7, 1], [763, 210, 80, 10], [7863, 1, 91, 10], [149, 17, 63, 1], [2019, 813, 10, 10], [772, 214, 114, 10],
 [2517, 26, 126, 10], [258, 13, 73, 0], [218, 34, 130, 10], [136, 45, 14, 10]]
test_best_play_50.0
[[83, 0, 7, 1], [8062, 513, 80, 10], [7258, 1, 98, 10], [210, 80, 61, 10], [7468, 0, 101, 1], [1824, 126, 48, 01],
 [178, 18, 69, 1], [2310, 31, 52, 1], [321, 45, 43, 1], [1927, 14, 114, 1]]
bytecount: {'code': 1742, 'const': 399, 'code+const': 2141}
check_import({'allowable': ['math']}): none
def position_all_word(board):
    keepx = []
    keepy =[]
    keep=[]
    s = ''
    x = -1
    y = -1
    for i in range(len(board)):
      for j in range(len(board[i])):
        if board[i][j] != '':
          if len(s) == 0:
              x = j
              y = i
          s+= board[i][j]
          if j+1 == len(board[i]):
            keepx.append([s,i,j,x,y])
            s =''            
          elif board[i][j+1] == '' :
            keepx.append([s,i,j,x,y])
            s =''
    s = ''
    for i in range(len(board[0])):
      for j in range(len(board)):
        if board[j][i] != '':
          if len(s) == 0:
              x = j
              y = i
          s+= board[j][i]
          if j+1 == len(board):
            keepy.append([s,i,j,x,y])
            s =''
          elif board[j+1][i] == '' :
            keepy.append([s,i,j,x,y])
            s =''
    for i in keepx:
      if len(i[0])>1:
        keep.append(i)
    for i in keepy:
      if len(i[0])>1:
        keep.append(i)
    keep = keepx+keepy
    a = []
    b = []
    for e in keep:
      if is_valid(e[0]) == True:
        a.append(e)
      else:
        b.append(e)
    return [a,b] 
def get_all_words(board):
    keep = []
    keepx = []
    keepy =[]
    s = ''
    for i in range(len(board)):
      for j in range(len(board[i])):
        if board[i][j] != '':
          s+= board[i][j]
          if j+1 == len(board[i]):
            keepx.append(s)
            s =''
          elif board[i][j+1] == '' :
            keepx.append(s)
            s =''
    s = ''
    for i in range(len(board[0])):
      for j in range(len(board)):
        if board[j][i] != '':
          s+= board[j][i]
          if j+1 == len(board):
            keepy.append(s)
            s =''
          elif board[j+1][i] == '' :
            keepy.append(s)
            s =''
    for i in keepx:
      if len(i)>1:
        keep.append(i)
    for i in keepy:
      if len(i)>1:
        keep.append(i)
    a = []
    b = []
    for e in keep:
      if is_valid(e) == True:
        a.append(e)
      else:
        b.append(e)
    a.sort()
    b.sort()
    return [a,b]
def get_play(board, new_board):
    keepa =[]
    keepb = []
    for i in range(len(board)):
      for j in range(len(board[i])):
        if board[i][j] != '' :
          keepb.append([i,j])
    for i in range(len(new_board)):
      for j in range(len(new_board[i])):
        if new_board[i][j] != '' :
          keepa.append([i,j])
    keep = []
    for i in keepa:
      if i not in keepb: 
        keep.append(i)
    s = ''
    for i in keep:
      row = i[0]
      col = i[1]
      s+= new_board[row][col]
    st = 0
    if len(keep) != 1 and keep[0][0] != keep[1][0]:
      st = 1
    return [keep[0][0],keep[0][1],st,s]
def play(row,col,down,tiles,board):
    count = 0
    if place_tiles(row,col,down,tiles,board)[0] == True:
      b = place_tiles(row,col,down,tiles,board)[1] 
      nv,y = position_all_word(b)
      ov,x = position_all_word(board)
      for e in nv:
        if e not in ov:
          for q in e[0]:
            count += get_value(q)
      if len(tiles) >= 7:
        count += 50
      if count == 0 :
        count = -1
      return count
    else:
       return -1
def best_play(tiles,board):
    ans = [-1,-1,-1,-1]
    count = 0
    for i in range(15):
      for j in range(15):
        for k in range(2):
          if place_tiles(i,j,k,tiles,board)[0] == True:
            sc = play(i,j,k,tiles,board)
            if sc>count:
              count = sc
              ans = [count,i,j,k]
    return ans

00113: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 942, 'const': 376, 'code+const': 1318}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    ans = [[],[]]
    ch = ''
    ch1 = ''
    for i in range(15) :
        ch += ' '
        for j in range(15) :
            if board[i][j] == '' : ch += ' '
            else : ch += board[i][j]
    for j in range(15) :
        ch1 += ' '
        for k in range(15) :
            if board[k][j] != '' : ch1 += board[k][j]
            else : ch1 += ' '
    ch2 = ch.split()+ch1.split()
    for e in (ch2) :
        if len(e) > 1 :
            if is_valid(e) == True : ans[0].append(e)
            else : ans[1].append(e)
    for i in range(2) :
        ans[i].sort()
    return ans
def get_play(board, new_board):
    ch = ''
    row = 0
    col = 0
    n = 0
    for i in range(15) :
        for j in range(15) :
            if board[i][j] != new_board[i][j] :
                if len(ch) != 0 :
                    if row == i : n = 0
                    else : n = 1
                else :
                    row = i
                    col = j
                ch += new_board[i][j]
    return [row,col,n,ch]
def play(row,col,down,tiles,board):
    new = copy_board(board)
    valid,new = place_tiles(row,col,down,tiles,new)
    xx = get_all_words(board)
    yy = get_all_words(new)
    point = 0
    for e in xx[0] :
        if e in yy[0] : yy[0].remove(e) 
    for i in yy[0] :
        for c in i :
            point += get_value(c)
    if len(yy[1]) > len(xx[1]) : valid = False
    if not valid : return -1
    else :
        if len(tiles) >= 7 : point += 50
        return point
def best_play(tiles,board):
    aw = {}
    ll = []
    for i in range(15) :
        for j in range(15) :
            for k in range(2) :
                aa = play(i,j,k,tiles,board)
                if aa not in aw :
                    aw[aa] = [[i,j,k]]
                    ll.append(aa)
                else : aw[aa].append([i,j,k])
    d = max(ll)
    k = []
    for e in aw :
        if e == d : k = aw[e]
    k.sort()
    if d == -1 : return [-1,-1,-1,-1]
    else : return [d,k[0][0],k[0][1],k[0][2]]

00114: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 01, 'AGROS'], [3, 2, 01, 'TONIEST'], [9, 1, 01, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 01, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 15, 24, 17, 85, 124]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 3627, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 28, 30, 246, -1]
test_play_150.0
[4239]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[68, 0, 7, 1], [87, 12, 60, 10], [10879, 41, 512, 1], [7259, 81, 80, 10], [171, 112, 93, 10], [7265, 73, 4, 1],
 [3019, 16, 81, 10], [197, 14, 92, 1], [191, 120, 21, 0], [22, 3, 108, 1]]
test_best_play_40.0
[[71, 0, 7, 1], [763, 210, 80, 10], [7863, 1, 91, 10], [149, 17, 63, 1], [2019, 813, 10, 10], [772, 214, 114, 10],
 [2517, 26, 126, 10], [258, 13, 73, 0], [2218, 14, 40, 0], [146, 125, 61, 0]]
test_best_play_50.0
[[83, 0, 7, 1], [8062, 513, 80, 10], [758, 01, 8, 10], [210, 80, 61, 10], [687, 30, 911, 1], [124, 146, 28, 01],
 [178, 138, 09, 01], [130, 01, 62, 1], [231, 85, 103, 1], [247, 124, 04, 01]]
bytecount: {'code': 1080, 'const': 284, 'code+const': 1364}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  word = []
  have_m = []
  no_m = []
  for i in range(len(board)):
    tod = ''
    for j in range(len(board[i])):
      if board[i][j] != '':
        tod += board[i][j]
      if board[i][j] == '' and len(tod) >= 2:
        word.append(tod)
        tod = ''
      elif board[i][j] == '' and len(tod) < 2:
        tod = ''
    if len(tod) >= 2 :
      word.append(tod)
  for i in range(len(board)):
    tod = ''
    for j in range(len(board[i])):
      if board[j][i] != '':
        tod += board[j][i]
      if board[j][i] == '' and len(tod) >= 2:
        word.append(tod)
        tod = ''
      elif board[j][i] == '' and len(tod) < 2:
        tod = ''
    if len(tod) >= 2 :
      word.append(tod)
  word.sort()
  for i in word:
    if is_valid(i):
      have_m.append(i)
    else:
      no_m.append(i)
  return [have_m,no_m]
def get_play(board, new_board):
  x  = y = -1
  tod = ''
  d = -1
  c = 0
  for i in range(len(board)):
    for j in range(len(board[i])):
      if board[i][j] != new_board[i][j]:
        if c == 0:
          x = i
          y = j
          c = 1
        tod += new_board[i][j]
        if new_board[x][y] in new_board[i]:
          d = 0
        else:
          d = 1
  return [x,y,d,tod]
def play(row,col,down,tiles,board):
  dum = []
  bonus = 0
  sc = 0
  new_board = place_tiles(row,col,down,tiles,board)[1]
  old_w = get_all_words(board)[0]
  new_w = get_all_words(new_board)[0]
  c = get_all_words(new_board)[0]
  placed = get_play(board,new_board)[3]
  if len(placed) >= 7:
    bonus = 50
  for i in c:
    if i not in old_w:
      dum.append(i)
    else:
      old_w.remove(i)
      new_w.remove(i)
      if i not in old_w and i in new_w:
        dum.append(i)
  if dum == []:
    return -1
  for i in dum:
    for j in i:
      sc += get_value(j)
  return sc+bonus
def best_play(tiles,board):
  max_sc = -1
  x = y = d = -1
  for i in range(15):
    for j in range(15):
      sc = play(i,j,1,tiles,board)
      if max_sc < sc:
        max_sc = sc
        x = i
        y = j
        d = 1
  for j in range(15):
    for i in range(15):
      sc = play(i,j,0,tiles,board)
      if max_sc < sc:
        max_sc = sc
        x = i
        y = j
        d = 0
  return [max_sc,x,y,d]

00115: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1166, 'const': 338, 'code+const': 1504}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    correct_word=[]
    incorrect_word=[]
    for i in range(0,15):
        for j in range(0,15):
            if board[i][j]=="":
                continue
            if j==0 or board[i][j-1]=="":
                word=""
                jj = j
                while(jj<15 and board[i][jj]!=""):
                    word+=board[i][jj]
                    jj+=1
                if is_valid(word):
                    correct_word.append(word)
                elif len(word)>1:
                    incorrect_word.append(word)
            if i==0 or board[i-1][j]=="":
                word=""
                ii=i
                while(ii<15 and board[ii][j]!=""):
                    word+=board[ii][j]
                    ii+=1
                if len(word)<2:
                    continue
                if is_valid(word):
                    correct_word.append(word)
                else:
                    incorrect_word.append(word)
    correct_word.sort()
    incorrect_word.sort()
    return [correct_word,incorrect_word]
def get_play(board, new_board):
    word_right=""
    word_down=""
    chk=0
    ansx=0
    ansy=0
    for i in range(0,15):
        if chk:
            break
        for j in range(0,15):
            if new_board[i][j]!=board[i][j]:
                ii = i
                ansx = i
                jj = j
                ansy = j
                while(ii < 15 and (new_board[ii][j]!="" or board[ii][j]!="")):
                    if new_board[ii][j]!=board[ii][j]:
                        word_down+=new_board[ii][j]
                    ii+=1
                while(jj < 15 and (new_board[i][jj]!="" or board[i][jj]!="")):
                    if new_board[i][jj]!=board[i][jj]:
                        word_right+=new_board[i][jj]
                    jj+=1
                chk=1
                break
    if len(word_right)>=len(word_down):
        return [ansx,ansy,0,word_right]
    else:
        return [ansx,ansy,1,word_down]
def play(row,col,down,tiles,board):
    can_place,new_board = place_tiles(row,col,down,tiles,board)
    if not can_place:
      return -1
    word_from_board=get_all_words(board)[0]
    word_from_new_board,invalid=get_all_words(new_board)
    score=0
    word_count={}
    if len(invalid):
        return -1
    for i in word_from_new_board:
        if not i in word_count:
            word_count[i]=0
        word_count[i]+=1
    for i in word_from_board:
        if not i in word_count:
            continue
        word_count[i]-=1
    for i in word_count:
        if word_count[i]<1:
            continue
        add_score=0
        for j in i:
            add_score+=get_value(j)
        score+=add_score*word_count[i]
    if len(tiles)>=7:
        score+=50
    return score
def best_play(tiles,board):
    ans=[-1,-1,-1,-1]
    for i in range(0,15):
        for j in range(0,15):
             for k in range(0,2):
                score = play(i,j,k,tiles,board)
                if score > ans[0]:
                    ans[0]=score
                    ans[1]=i
                    ans[2]=j
                    ans[3]=k
    return ans

00116: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 1928]
test_play_120.0
[411]
test_play_130.0
[59]
test_play_140.0
[8, 1620, 1726, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1150, 'const': 401, 'code+const': 1551}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    valid_words = []
    invalid_words = []
    word_list = []
    for row in range(15):
      word = ''
      for col in range(15):
        if board[row][col] in alphabet: 
          word += board[row][col].upper()
        if col == 14 or board[row][col] == '': 
          if len(word) >= 2:
            if is_valid(word):
              valid_words.append(word)
            else: invalid_words.append(word)
          word = ''
    for row in range(15):
      word = ''
      for col in range(15):
        if board[col][row] in alphabet: 
          word += board[col][row].upper()
        if col == 14 or board[col][row] == '':
          if len(word) >= 2:
            if is_valid(word):
              valid_words.append(word)
            else: invalid_words.append(word)
          word = ''
    valid_words = sorted(valid_words)
    invalid_words = sorted(invalid_words)
    word_list.append(valid_words)
    word_list.append(invalid_words)
    return word_list
def get_play(board, new_board):
    place=[]
    r = 0
    c = 0
    d = 0
    t = ''
    for row in range(15):
      for col in range(15):
        if new_board[row][col] != board[row][col]:
          if t == '':
            r = row
            c = col
          else:
            if row - r != 0:
              d = 1
          t += new_board[row][col]
    place.append(r)
    place.append(c)
    place.append(d)
    place.append(t)
    return place
def play(row,col,down,tiles,board):
    oldboard = copy_board(board)
    status,newboard = place_tiles(row,col,down,tiles,oldboard)
    score = -1
    if status == True:
      oldword = get_all_words(oldboard)
      newword = get_all_words(newboard)
      for word in newword[1]: 
        if word not in oldword[1]:
          status = False
      if status == True:
        score = 0
        oldword_d = dict()
        newword_d = dict()
        for word in oldword[0]:
          if word not in oldword_d.keys():
            oldword_d[word] = 1
          else:
            oldword_d[word] += 1
        for word in newword[0]:
          if word not in newword_d.keys():
            newword_d[word] = 1
          else:
            newword_d[word] += 1
        for word in newword_d.keys():
          if word not in oldword_d.keys():
            for charac in word:
              score += get_value(charac)
          elif newword_d[word] - oldword_d[word] != 0:
            for charac in word:
              score += get_value(charac) * (newword_d[word] - oldword_d[word])
        if len(tiles) >= 7: score += 50
    return score
def best_play(tiles,board):
  score_list = []
  for row in range(15):
    for col in range(15):
      score1 = play(row,col,0,tiles,board)
      score2 = play(row,col,1,tiles,board)
      score_list += [[-score1,row,col,0],[-score2,row,col,1]]
  score_list = sorted(score_list)
  for i in range(len(score_list)):
    score_list[i][0] = -score_list[i][0]
  if score_list[0][0] == -1:
    return [-1,-1,-1,-1]
  else:
    return score_list[0]

00117: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, 24-1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_20.0
[[-1, 0-1, 0-1, 0-1]]
test_best_play_30.0
[[68, 0, 7, 1], [87, 12, 60, 10], [10879, 41, 512, 1], [7259, 81, 80, 10], [171, 112, 93, 10], [7265, 73, 4, 1],
 [3019, 16, 81, 10], [197, 14, 92, 1], [191, 120, 21, 0], [22, 3, 108, 1]]
test_best_play_40.0
[[71, 0, 7, 1], [763, 210, 80, 10], [7863, 1, 91, 10], [149, 17, 63, 1], [2019, 813, 10, 10], [772, 214, 114, 10],
 [2517, 26, 126, 10], [258, 13, 73, 0], [218, 34, 130, 10], [136, 45, 14, 10]]
test_best_play_50.0
[[83, 0, 7, 1], [8062, 513, 80, 10], [7258, 1, 98, 10], [210, 80, 61, 10], [7468, 0, 101, 1], [1824, 126, 48, 01],
 [178, 18, 69, 1], [2310, 31, 52, 1], [321, 45, 43, 1], [1927, 14, 114, 1]]
bytecount: {'code': 1238, 'const': 322, 'code+const': 1560}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid = []
    invalid = []
    keep = []
    word=''
    for list_items in board:         
      if len(word)>1:
        keep.append(word)
      word = ''
      for item in list_items:
        if item!='':
          word+=item
        elif (len(word)>1 and item==''):
          keep.append(word)
          word = ''
        elif item=='':
          word = ''
    if len(word)>1:
      keep.append(word)
    invert_board = []           
    for i in range(15):         
      a=[]
      for list_items in board:
        a.append(list_items[i])
      invert_board.append(a)
    word2=''
    for list_items in invert_board:         
      if len(word2)>1:
        keep.append(word2)
      word2 = ''
      for item in list_items:
        if item!='':
          word2+=item
        elif len(word2)>1 and item=='':
          keep.append(word2)
          word2 = ''
        elif item=='' :
          word2 = ''
    if len(word2)>1:
      keep.append(word2)
    for i in keep:                      
      if is_valid(i)==True:
        valid.append(i)
      else:
        invalid.append(i)
    valid = sorted(valid)
    invalid = sorted(invalid)
    return [valid,invalid]
def get_play(board, new_board):
    row = 0
    col = 0
    down = 0
    tiles = ''
    keep = []                       
    for i in new_board:
      if i not in board:
        keep.append(i)
    if len(keep)>1:
      down = 1
    for i in keep:                  
      for j in range(len(i)): 
        if i[j] != board[new_board.index(i)][j]:
          tiles+=i[j]
    b = False
    for i in range(len(board)):     
      if board[i]!=new_board[i]:
        for j in range(len(board[i])):
          row = i
          if new_board[i][j]!=board[i][j]:
            col = j
            b = True
          if b == True:
            break
      if b == True:
        break
    return [row,col,down,tiles]
def play(row,col,down,tiles,board):
    score = 0
    keep = []
    repeatword = False
    old_valid = get_all_words(board)[0]
    new_board = place_tiles(row,col,down,tiles,board)[1]
    new_valid = get_all_words(new_board)[0]
    for i in new_valid:                                       
      if i not in old_valid :
        keep.append(i)
      elif i in old_valid and new_valid.count(i)>old_valid.count(i):
        repeatword = True
        keep.append(i)
    if repeatword:
      for i in keep:
        if i in old_valid:
          keep.pop(keep.index(i))
    if len(keep)==0:                                          
      score=-1
    else:
      for i in keep:                                           
        for alphabet in i:
          score+=get_value(alphabet)
      if len(tiles)>=7:
        score+=50
    return score
def best_play(tiles,board):
    scores = []
    listpos = []
    ans = []
    for row in range(15):                                         
      for col in range(15):
        for down in range(2):
          pos = []
          scores.append(play(row,col,down,tiles,board))
          pos = [row,col,down]
          listpos.append(pos)
    for i,j,k in listpos:                                         
      if play(i,j,k,tiles,board)==max(scores):
        ans.append([i,j,k])
    ans=sorted(ans)
    ans=[max(scores)]+ans[0]
    return ans

00118: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_30.0
[-14]
test_play_40.0
[-14, -21]
test_play_50.0
[-160, -172]
test_play_60.0
[-160, -1]
test_play_70.0
[-163, -14]
test_play_80.0
[-162]
test_play_90.0
[-11, -15, -124, -17, -185, -12]
test_play_100.0
[-19, -133, -136, -18, -12, -173, -165, -17, -174, -16]
test_play_110.0
[-167, -61, -128, -11, -13, -185, -11, -12, -17, -125, -17, -14, -21, -132, -12, -15, -16, -168, -16, -13, -10, -127, -128]
test_play_120.0
[-11]
test_play_130.0
[-19]
test_play_140.0
[-18, -120, -126, -1]
test_play_150.0
[-139]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 488, 'const': 216, 'code+const': 704}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid = []
    invalid = []
    w = ""
    ww = ""
    l = []
    for row in range(15):
        for col in range(15):
            if get_value(board[row][col]) > 0:
                w += board[row][col]
            else :
                if len(w) >1:
                    l.append(w)
                w = ""
            if get_value(board[col][row]) > 0:
                ww += board[col][row]
            else :
                if len(ww) >1:
                    l.append(ww)
                ww = ""
        if len(w) >1:
            l.append(w)
        w = ""
        if len(ww) >1:
            l.append(ww)
        ww = ""
    l.sort()
    for i in l:
        if is_valid(i) == True:
            valid.append(i)
        else:
            invalid.append(i)
    return [valid,invalid]
def get_play(board, new_board):
    a = 15
    b = 15
    c = 0
    d = ""
    for i in range(15):
        for j in range(15):
            if board[i][j] != new_board[i][j]:
                if a == 15:
                    a = i
                    b = j
                elif j == b:
                    c = 1
                d += new_board[i][j]
    return [a,b,c,d]
def play(row,col,down,tiles,board):
    return -1
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00119: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_30.0
[[6, 6, 01, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_60.0
[[6, 7, 01, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 15, 24, 17, 85, -12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 1827, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 120, 1426, 8-1]
test_play_150.0
[2839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[68, 0, 7, 1], [87, 12, 60, 10], [10879, 41, 512, 1], [7259, 81, 80, 10], [171, 112, 93, 10], [7265, 73, 4, 1],
 [3019, 16, 81, 10], [197, 14, 92, 1], [191, 120, 21, 0], [22, 3, 108, 1]]
test_best_play_40.0
[[71, 0, 7, 1], [763, 210, 80, 10], [7863, 1, 91, 10], [149, 17, 63, 1], [2019, 813, 10, 10], [772, 214, 114, 10],
 [2517, 26, 126, 10], [258, 13, 73, 0], [218, 34, 130, 10], [136, 45, 14, 10]]
test_best_play_50.0
[[83, 0, 7, 1], [8062, 513, 80, 10], [7258, 1, 98, 10], [210, 80, 61, 10], [7468, 0, 101, 1], [1824, 126, 48, 01],
 [178, 18, 69, 1], [2310, 31, 52, 1], [321, 45, 43, 1], [1927, 14, 114, 1]]
bytecount: {'code': 1030, 'const': 380, 'code+const': 1410}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words = []
    invalid_words = []
    for i in range(15):
        j = 0
        while j<15:   
            word = ""
            word += board[i][j]
            j = j+1
            while j<15 and board[i][j] != "":
                word += board[i][j]
                j += 1
            if is_valid(word):
                valid_words.append(word)
            elif word != "" and len(word)>1:
                invalid_words.append(word)
    for j in range(15):
        i = 0
        while i<15:
            word = ""
            word += board[i][j]
            i = i+1
            while i<15 and board[i][j] != "":
                word += board[i][j]
                i += 1
            if is_valid(word):
                valid_words.append(word)
            elif word != "" and len(word)>1:
                invalid_words.append(word)
    valid_words.sort()
    invalid_words.sort()
    return [valid_words,invalid_words]
def get_play(board, new_board):
    place_row = 0
    place_col = 0
    place_down = 0
    newWord = ""
    isFound = False
    for i in range(15):
        j = 0
        while j<15:
            if board[i][j] != new_board[i][j]:
                if not isFound:
                    place_row = i
                    place_col = j
                    isFound = True
                    if j+1<15 and board[i][j+1] == new_board[i][j+1]:
                        place_down = 1
                    elif j == 14:
                        place_down = 1
                    else:
                        place_down = 0
                newWord += new_board[i][j]
            j = j+1
        if len(newWord)==1 and board[place_row+1][place_col] == new_board[place_row+1][place_col]:
            place_down = 0
    return [place_row,place_col,place_down,newWord]
def play(row,col,down,tiles,board):
    score = 0
    a_copy_board = copy_board(board)
    isValid, buffer_board = place_tiles(row,col,down,tiles,a_copy_board)
    if isValid:
        old_words = get_all_words(board)[0]
        words = get_all_words(buffer_board)[0]
        for word in words:
            if word not in old_words:
                for letter in word:
                    score += get_value(letter)
        if len(tiles)>=7 and score>0:
            score += 50
    else:
        score = -1
    if score == 0:
        score = -1
    return score
def best_play(tiles,board):
    play_list = []
    for i in range(15):
        for j in range(15):
            for k in range(2):
                score = play(i,j,k,tiles,board)
                if score != -1:
                    play_list.append([score,i,j,k])
    if len(play_list) == 0:
        return [-1,-1,-1,-1]
    play_list.sort(reverse=True)
    max_score = []
    for playy in play_list:
        if playy[0] == play_list[0][0]:
            max_score.append(playy)
    max_score.sort(reverse=False)
    return max_score[0]

00120: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_10.0Time-out: 3s
[]
test_best_play_20.0Time-out: 3s
[]
test_best_play_30.0Time-out: 20s
[]
test_best_play_40.0Time-out: 20s
[]
test_best_play_50.0Time-out: 20s
[]
bytecount: {'code': 1086, 'const': 324, 'code+const': 1410}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    board.append(['']*15)
    for i in range(len(board)):
      board[i].append('')
    a = []
    b = []
    for i in board:
      st = ''
      for j in i:
        if j != '':
          st += j
        else:
          if is_valid(st):
            a.append(st)
          else:
            if st != '' and len(st) > 1:
              b.append(st)
          st = ''
    for i in range(16):
      st = ''
      for j in range(16):
        if board[j][i] != '':
          st += board[j][i]
        else: 
          if is_valid(st):
            a.append(st)
          else:
            if st != '' and len(st) > 1:
              b.append(st)
          st = ''
    a.sort()
    b.sort()
    return [a,b]
def get_play(board, new_board):
    a = ''
    b1 = []
    b2 = []
    for i in range(15):
      for j in range(15):
        if board[i][j] != new_board[i][j]:
          a += new_board[i][j]
          b1.append(i)
          b2.append(j)
    if len(a) == 1:
      down = 0
      r = b1[0]
      c = b2[0]
    elif b1[0] == b1[1]:
      down = 0
      r = b1[0]
      c = min(b2)
    elif b2[0] == b2[1]:
      down = 1
      r = min(b1)
      c = b2[0]
    return [r,c,down,a]
def play(row,col,down,tiles,board):
    p1 = get_all_words(board)
    v,new = place_tiles(row,col,down,tiles,board)
    if not v:
        return -1
    p2 = get_all_words(new)
    p2c = p2[0][:]
    score = 0
    if len(p2[-1]) != 0:
      return -1
    for i in p1[0]:
      if i in p2c:
          p2c.remove(i)
    for i in p2c:
      for j in i:
        score += get_value(j)
    jojo = get_play(board, new)[-1]
    if len(jojo) >= 7:
      score += 50
    return score
def best_play(tiles,board):
    pl = []
    for i in range(15):
      for j in range(15):
        down = 0
        ch,new = place_tiles(i,j,down,tiles,board)
        if len(get_all_words(new)[-1]) != 0:
          ch = False
        if not ch:
          down = 1
          ch,new = place_tiles(i,j,down,tiles,board)
          if len(get_all_words(new)[-1]) != 0:
            ch = False
        if ch:
          row = i
          col = j
          score = play(row,col,down,tiles,board)
          pl.append([-score,row,col,down])
    if len(pl) == 0:
      return [-1,-1,-1,-1]
    else:
      pl.sort()
      pl[0][0] *= -1
      board = place_tiles(pl[0][1],pl[0][2],pl[0][3],tiles,board)
      return pl[0]

00121: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_130.0
[59]
test_play_140.0
[8, 120, 1426, -1]
test_play_150.0
[2839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1170, 'const': 401, 'code+const': 1571}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  list_of_word = []
  for row in range(len(board)) :
    word0 = ""
    found0 = False
    for col in range(len(board[0])) :
      if board[row][col] != "" :
        word0 += board[row][col]
        found0 = True
        if col == 14 :
          if len(word0) > 1 :
            list_of_word.append(word0)
      elif found0 :
        if len(word0) > 1 :
          list_of_word.append(word0)
        word0 = ""
        found0 = False
  for cols in range(len(board[0])) :
    word1 = ""
    found1 = False
    for rows in range(len(board)) :
      if board[rows][cols] != "" :
        word1 += board[rows][cols]
        found1 = True
        if rows == 14 :
          if len(word1) > 1 :
            list_of_word.append(word1)
      elif found1 :
        if len(word1) > 1 :
          list_of_word.append(word1)
        word1 = ""
        found1 = False
  valid = []
  invalid = []
  for words in list_of_word :
    if is_valid(words) :
      valid.append(words)
    else :
      invalid.append(words)
  valid.sort()
  invalid.sort()
  return [valid,invalid]
def get_play(board, new_board):
  tiles = ""
  row = 0
  col = 0
  first = True
  c = make_board()
  nrows = len(board)
  ncols = len(board[0])
  for i in range(nrows) :
    for j in range(ncols) :
      if (new_board[i][j] != "" and board[i][j] != "") or (new_board[i][j] == "" and board[i][j] == ""):
        c[i][j] = []      
      else :
        c[i][j] = new_board[i][j]
        tiles += c[i][j]
        if first :
          row = i
          col = j
        first = False
  old = copy_board(board)
  new = copy_board(new_board)
  if place_tiles(row,col,0,tiles,old)[1] == new :
    return [row,col,0,tiles]
  elif place_tiles(row,col,1,tiles,old)[1] == new :
    return [row,col,1,tiles]
def play(row,col,down,tiles,board):
  check = True
  score = 0
  valid = False
  bonus = False
  old_valid,old_invalid = get_all_words(board)
  board = place_tiles(row,col,down,tiles,board)[1]
  new_valid,new_invalid = get_all_words(board)
  if len(new_invalid) > len(old_invalid) : return -1
  for word in new_valid :
    if word not in old_valid or (new_valid.count(word) > 1 and check):
      check = False
      valid = True
      if len(tiles) >= 7 :
        bonus = True
      for ch in word :
        score += get_value(ch)
  if bonus :
    score += 50
  if valid :
    return score
  else :
    return -1
def best_play(tiles,board):
  all_score = []
  for row in range(len(board)) :
    for col in range(len(board[0])) :
      if board[row][col] == "":
        all_score.append([-play(row,col,0,tiles,board),row,col,0])
        all_score.append([-play(row,col,1,tiles,board),row,col,1])
  all_score.sort()
  if -all_score[0][0] == -1 :
    return [-1,-1,-1,-1]
  return [-all_score[0][0],all_score[0][1],all_score[0][2],all_score[0][3]]

00122: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1096, 'const': 270, 'code+const': 1366}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    check = ''
    valid = []
    nonvalid = []    
    for i in range(len(board)):
        for j in range(len(board)):
            if board[i][j] != '':
                check += board[i][j]
            if board[i][j] == '' and check != '':
                if is_valid(check) == True:
                    valid.append(check)
                elif len(check) >= 2:
                    nonvalid.append(check)
                check = ''
        if is_valid(check) == True:
            valid.append(check)
        elif len(check) >= 2:
            nonvalid.append(check)
        check = ''     
    if is_valid(check) == True:
        valid.append(check)
    elif len(check) >= 2:
        nonvalid.append(check)
    check = ''
    for i in range(len(board)):
        for j in range(len(board)):
            if board[j][i] != '':
                check += board[j][i]
            if board[j][i] == '' and check != '':
                if is_valid(check) == True:
                    valid.append(check)
                elif len(check) >= 2:
                    nonvalid.append(check)
                check = ''
        if is_valid(check) == True:
            valid.append(check)
        elif len(check) >= 2:
            nonvalid.append(check)
        check = ''
    if is_valid(check) == True:
        valid.append(check)
    elif len(check) >= 2:
        nonvalid.append(check)
    return [sorted(valid),sorted(nonvalid)]    
def get_play(board, new_board):
    check = ''
    posx = []
    posy = []
    down = 1
    for i in range(len(board)):
        for j in range(len(board)):
            if new_board[i][j] != board[i][j]:
                check += new_board[i][j]
                posx.append(j)
                posy.append(i)
    if len(posy) > 1:
        if posy[0] == posy[1]:
            down = 0
    else:
        down = 0
    return [min(posy),min(posx),down,check]
def play(row,col,down,tiles,board):
    x,newboard = place_tiles(row,col,down,tiles,board)
    newword = []
    word = get_all_words(board)
    word2 = get_all_words(newboard)
    score = 0
    valid = word[0]
    valid2 = word2[0]
    nonvalid2 = word2[1]
    if x == False or nonvalid2 != []:
        return -1
    for i in valid2:
        if i in valid:
            valid.remove(i)
        else:
            newword.append(i)
    if len(tiles) >= 7:
            score += 50
    for i in newword:
        for e in i:
            score += get_value(e)
    return score
def best_play(tiles,board):
    score = -1
    x = -1
    y = -1
    down = -1
    for i in range(15):
        for j in range(15):
            for k in range(2):
                if play(i,j,k,tiles,board) > score: 
                    score = play(i,j,k,tiles,board)
                    x = j
                    y = i
                    down = k
    return [score,y,x,down]

00123: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_10.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], None[6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_90.0
[None[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_30.0
[-14]
test_play_40.0
[-14, -21]
test_play_50.0
[-160, -172]
test_play_60.0
[-160, -1]
test_play_70.0
[-163, -14]
test_play_80.0
[-162]
test_play_90.0
[-11, -15, -124, -17, -185, -12]
test_play_100.0
[-19, -133, -136, -18, -12, -173, -165, -17, -174, -16]
test_play_110.0
[-167, -61, -128, -11, -13, -185, -11, -12, -17, -125, -17, -14, -21, -132, -12, -15, -16, -168, -16, -13, -10, -127, -128]
test_play_120.0
[-11]
test_play_130.0
[-19]
test_play_140.0
[-18, -120, -126, -1]
test_play_150.0
[-139]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 716, 'const': 174, 'code+const': 890}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  validwords = []  ; invalidwords = [] ; word = [] ; nam =[] ; got = ""
  for i in range(len(board)):
        for s in range(len(board)):
          if board[i][s]!= "":
            d = i
            while True:
              if d < len(board) and [d,s] not in nam:
                if board[d][s] != '' :
                  got += board[d][s] ; nam.append([d,s]) ; d+=1
                else  : break
              else  : break
            word.append(got) ; got = ''
        if board[i] != ['']*len(board): 
            q = ''  
            for l in range(len(board)):
                if board[i][l] == '':
                    word.append(q) ; q = ''
                else:
                    q += board[i][l]
            word.append(q) ; q = ''     
  for e in word : 
        if len(e) >1:
            if is_valid(e)==False:
                invalidwords.append(e)
            else:
                validwords.append(e)
  validwords.sort() ; invalidwords.sort()
  return [validwords,invalidwords]
def get_play(board, new_board):
    wow = [] ; tx = ''
    for i in range(len(board)):
      for j in range(len(board)):
        if board[i][j] != new_board[i][j] :
          wow.append([i,j]) ; tx += new_board[i][j]
    if len(tx) == 1 : a = 0
    else: 
      s= len(wow)-1
      for t in range(s):
        if wow[t][1] != wow[t+1][1]: c = 0
        elif wow[t][0] != wow[t+1][0]: c = 1
      row = wow[0][0] ; col = wow[0][1] ; down = c ; tiles = tx
      return [row,col,down,tiles]
def play(row,col,down,tiles,board):
    return -1
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00124: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0
[[10, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 10, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [10, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [10, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 10, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 01, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 15, 24, 2917, 85, 12]
test_play_100.0IndexError('list index out of range')
[9, 33, 36, 2718, 12, 73, 65, 107, 74, 176]
test_play_110.0IndexError('list index out of range')
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[711]
test_play_131.0
[9]
test_play_140.0
[8, 1620, 236, 30-1]
test_play_151.0
[39]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 2264, 'const': 435, 'code+const': 2699}
check_import({'allowable': ['math']}): [[('zmq.sugar.constants', 1)]]
from zmq.sugar.constants import IPC_FILTER_UID
def get_all_words(board):
  s = [[],[]]
  if board[7][7] != '':
    wr = ''
    wc = ''
    for i in range(0,15):
      for n in range(0,15):
        if board[i][n] != '':
          wr += str(board[i][n]).upper()
        elif board[i][n] == '':
          wr += ' '
      wr += ' '
    for i in range(0,15):
      for n in range(0,15):
        if board[n][i] != '':
          wc += str(board[n][i]).upper()
        elif board[n][i] == '':
          wc += ' '
      wc += ' '
    awr = wr.split(' ')
    awc = wc.split(' ')
    a = []
    b = []
    for i in awr:
      if len(i) >= 2:
        if is_valid(i) == True:
          a.append(i)
        elif is_valid(i) == False:
          b.append(i)
    for i in awc:
      if len(i) >= 2:
        if is_valid(i) == True:
          a.append(i)
        elif is_valid(i) == False:
          b.append(i)
    a.sort()
    b.sort()
    s = [a, b]
  return s
def get_play(board, new_board):
  r = 0
  c = 0
  d = 0
  w = ''
  for i in range(15):
    for n in range(15):
      if board[i][n] != new_board[i][n]:
        w += str(new_board[i][n])
        if r != 0 and r == i:
          d = 0
        elif r == 0 and r != i:
          r = i
        if c != 0 and c == n:
          d = 1
        elif c == 0 and c != n:
          c = n
  return [r,c,d,w.upper()]
def play(row,col,down,tiles,board):
  c = copy_board(board)
  v,cb = place_tiles(row,col,down,tiles,c)
  w = []
  if v == True:
    aw,nn = get_all_words(cb)
    for a in range(15):
      for b in range(15):
        if cb[a][b] != board[a][b]:
          for i in range(b, 15):
            if i != 14 and i != 0:
              if cb[a][i-1] != '' or cb[a][i+1] != '':
                w1 = str(cb[a][i])
                n = 1
                while cb[a][i-n] != '' and n != b-1:
                  w1 = str(cb[a][i-n]) + w1
                  n += 1
                n = 1
                while cb[a][i+n] != '' and n != b-1:
                  w1 += str(cb[a][i+n])
                  n += 1
                if w1 in aw:
                  if w1 not in w:
                    w.append(w1)
            elif i == 0:
              if cb[a][i+1] != '':
                w1 = str(cb[a][i])
                n = 1
                while cb[a][i+n] != '' and n != b-1:
                  w1 += str(cb[a][i+n])
                  n += 1
                if w1 in aw:
                  if w1 not in w:
                    w.append(w1)
            elif i == 14:
              if cb[a][i-1] != '':
                w1 = str(cb[a][i])
                n = 1
                while cb[a][i-n] != '' and n != b-1:
                  w1 = str(cb[a][i-n]) + w1
                  n += 1
                if w1 in aw:
                  if w1 not in w:
                    w.append(w1)
          for i in range(a, 15):
            if i != 14 and i != 0:
              if cb[i-1][b] != '' or cb[i+1][b] != '':
                w1 = str(cb[i][b])
                n = 1
                while cb[i-n][b] != '' and n != a-1:
                  w1 = str(cb[i-n][b]) + w1
                  n += 1
                n = 1
                while cb[i+n][b] != '' and n != a-1:
                  w1 += str(cb[i+n][b])
                  n += 1
                if w1 in aw:
                  if w1 not in w:
                    w.append(w1)
            elif i == 0:
              if cb[i+1][b] != '':
                w1 = str(cb[i][b])
                n = 1
                while cb[i+n][b] != '' and n != a-1:
                  w1 += str(cb[i+n][b])
                  n += 1
                if w1 in aw:
                  if w1 not in w:
                    w.append(w1)
            elif i == 14:
              if cb[i-1][b] != '':
                w1 = str(cb[i][b])
                n = 1
                while cb[i-n][b] != '' and n != a-1:
                  w1 = str(cb[i-n][b]) + w1
                  n += 1
                if w1 in aw:
                  if w1 not in w:
                    w.append(w1)
  score = 0
  if len(w) != 0:
    for i in w:
      if is_valid(i) == True:
        for n in range(len(i)):
          score += get_value(i[n])
  if score == 0:
    score = -1
  elif score != 0 and score != -1:
    if len(tiles) >= 7:
      score += 50
  return score
def best_play(tiles,board):
  s = []
  s.sort()
  if s == []:
    s = [[-1,-1,-1,-1]]
  s = s[-1]
  return s

00125: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_10.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_get_all_words_20.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_get_all_words_30.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_get_all_words_40.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_get_all_words_50.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_get_all_words_60.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_get_all_words_70.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_get_all_words_80.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_get_all_words_90.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_get_all_words_100.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_play_20.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_play_30.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_play_40.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_play_50.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_play_60.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_play_70.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_play_80.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_play_90.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_play_100.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_play_110.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_play_120.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_play_130.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_play_140.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_play_150.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_best_play_10.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_best_play_20.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_best_play_30.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_best_play_40.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
test_best_play_50.0FileNotFoundError("No such file or directory: 'longdict.txt'")
[]
bytecount: {'code': 1622, 'const': 429, 'code+const': 2051}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    words = []
    valid = []
    invalid = []
    for line in board:
        horizon = ''
        for char in line:
            if char != '':
                horizon += char
            else:
                horizon += char+'-'
        horizon = horizon.split('-')
        horizon = [h for h in horizon if len(h) > 1]
        for item in horizon:
            words.append(item)
    for i in range(15):
        vertical = ''
        for line in board:
            if line[i] != '':
                vertical += line[i]
            else:
                vertical += line[i]+'-'
        vertical = vertical.split('-')
        vertical = [v for v in vertical if len(v) > 1]
        for item in vertical:
            words.append(item)
    words.sort()
    dct = []
    dct_clean = []
    f = open('longdict.txt')
    for line in f:
        dct.append(line)
    for item in dct:
        dct_clean.append(item.replace('\n',''))
    f.close()
    for item in words:
        if item in dct_clean:
            valid.append(item)
        else:
            invalid.append(item)
    return [valid,invalid]
def get_play(board, new_board):
    line = []
    new = ''
    down = 1
    for i in range(15):
        if board[i] != new_board[i]:
            line.append(new_board[i])
            for j in range(15):
                if board[i][j] != new_board[i][j]:
                    new += new_board[i][j]
    row = new_board.index(line[0])
    col = line[0].index(new[0])
    if len(line) == 1:
        down = 0         
    return [row,col,down,new]
def play(row,col,down,tiles,board):
    before = board
    board = place_tiles(row,col,down,tiles,board)
    word = get_all_words(board[1])
    score = 0
    previous_all = get_all_words(before)
    check = previous_all[0]
    check_now = word [0]
    for item in check:
        try:
            check_now.remove(item)
        except:
            pass
    for item in check_now:
        for char in item:
            score += letter_value[char.lower()]
    if len(tiles) >= 7:
        score += 50
    if len(check_now) == 0:
        score = -1
    return score
def best_play(tiles,board):
    s = []
    for row in range(15):
        for col in range(15):
            for down in range(2):
                score = play(row,col,down,tiles,board)
                check = place_tiles(row,col,down,tiles,board)
                check1 = get_all_words(check[1])
                pack = [score,row,col,down]
                if score != -1 and check[0] == True:
                    if check1[1] == []:
                        s.append(pack)
    if len(s) == 0:
        return [-1, -1, -1, -1]
    score = []
    row = []
    col = []
    down = []
    for item in s:
        score.append(item[0])
        row.append(item[1])
        col.append(item[2])
        down.append(item[3])
    max_s = max(score)
    min_r = min(row)
    min_col = min(col)
    min_down = min(down)
    b = []
    best = []
    best_of_best =[]
    best_of_best_of_best = []
    for item in s:
        if max_s == item[0]:
            b.append(item)
    if len(b) == 1:
        for item in b:
            score = item[0]
            row = item[1]
            col = item[2]
            down = item[3]
        return score,row,col,down
    else:
        for item in b:
            if min_r == item[1]:
                best.append(item)
        if len(best) == 1:
            for item in best:
                score = item[0]
                row = item[1]
                col = item[2]
                down = item[3]
            return score,row,col,down
        else:
            for item in best:
                if min_col == item[2]:
                    best_of_best.append(item)
            if len(best_of_best) == 1:
                for item in best:
                    score = item[0]
                    row = item[1]
                    col = item[2]
                    down = item[3]
                return score,row,col,down
            else:
                for item in best_of_best:
                    if min_down == item[3]:
                        best_of_best_of_best.append(item)
                for item in best_of_best_of_best:
                    score = item[0]
                    row = item[1]
                    col = item[2]
                    down = item[3]
                return score,row,col,down

00126: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[68, 0, 7, 1], [-187, -12, -10, -10], [-179, -1, -12, -1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1924, 'const': 325, 'code+const': 2249}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid = []
    invalid = []
    for i in range(15) :
      t = ''
      for j in range(15) :
        if board[i][j] != '' :
          t+=board[i][j]
        elif board[i][j] == '' and t != '' :
          if is_valid(t) :
            valid.append(t)
          else :
            if len(t) >=2 :
              invalid.append(t)
          t = ''
      if t!= '' :
        if is_valid(t) :
            valid.append(t)
        else :
          if len(t) >=2 :
            invalid.append(t)
    for i in range(15) :
      t = ''
      for j in range(15) :
        if board[j][i] != '' :
          t+=board[j][i]
        elif board[j][i] == '' and t != '' :
          if is_valid(t) :
            valid.append(t)
          else :
            if len(t) >=2 :
              invalid.append(t)
          t = ''
      if t!= '' :
        if is_valid(t) :
          valid.append(t)
        else :
          if len(t) >=2 :
            invalid.append(t)
    return [sorted(valid),sorted(invalid)]
def get_play(board, new_board):
    find_po = [0,0]
    di = 0
    found = 0
    for i in range(15) :
      for j in range(15) :   
        if board[i][j] != new_board[i][j] :
          find_po = [i,j]
          ci,cj = i+1,j
          while ci < 15 :
            if board[ci][cj]==new_board[ci][cj] and new_board[ci][cj] == '' :
              break
            if board[ci][cj]!=new_board[ci][cj] :
              di=1
              break
            ci += 1
          ci,cj = i,j
          ci,cj = i,j+1
          while cj < 15 :
            if board[ci][cj]==new_board[ci][cj] and new_board[ci][cj] == '' :
              break
            if board[ci][cj]!=new_board[ci][cj] :
              di=0
              break
            cj+=1
          found = 1
          break
      if found : break
    newt = ''
    if di :
      i,j = find_po
      while i < 15 :
        if new_board[i][j] == '' :
          break
        if new_board[i][j] != board[i][j] :
          newt += new_board[i][j]
        i += 1
    else :
      i,j = find_po
      while j < 15 :
        if new_board[i][j] == '' :
          break
        if new_board[i][j] != board[i][j] :
          newt += new_board[i][j]
        j += 1
    return [find_po[0],find_po[1],di,newt]
def play(row,col,down,tiles,board):
    isvalid, newboard = place_tiles(row,col, down, tiles, board)
    if isvalid :
      i,j = row,col
      while i-1>=0 and newboard[i-1][j]!='' and down : i-=1
      while j-1>=0 and newboard[i][j-1]!='' and not down : j-=1
      word = ''
      cnt = 0
      score = 0
      while i<15 and j<15 and newboard[i][j] != '':
        word += newboard[i][j]
        if board[i][j] != newboard[i][j] :
          cnt += 1
          if down:
            ns = j-1
            s_word = ''
            tms = 0
            for k in range(j-1,-1,-1) :
              ns = k
              if newboard[i][k]=='': break
            ns+=1
            for k in range(ns,15):
              if newboard[i][k] =='' : break
              s_word += newboard[i][k]
              tms += get_value(newboard[i][k])
            if not is_valid(s_word) and len(s_word)!=1: return -1
            if len(s_word)!=1 : score += tms
          else:
            ns = i-1
            s_word = ''
            tms = 0
            for k in range(i-1,-1,-1) :
              ns = k
              if newboard[k][j]=='': break
            ns+=1
            for k in range(ns,15):
              if newboard[k][j] =='' : break
              s_word += newboard[k][j]
              tms += get_value(newboard[k][j])
            if not is_valid(s_word) and len(s_word)!=1: return -1
            if len(s_word)!=1 : score += tms
        score += get_value(newboard[i][j])
        if down : i+=1
        else : j+=1
      if not is_valid(word): return -1
      if cnt >=7 : score += 50
      return score
    else : return -1
def best_play(tiles,board):
    max_score = -1
    ans = [-1,-1,-1,-1]
    for i in range(15) :
      for j in range(15) :
        s1 = play(i,j,0,tiles, board)
        s2 = play(i,j,1,tiles, board)
        if s1 >= s2 and max_score < s1:
          max_score = s1
          ans = [max_score,i,j,0]
        elif s1<s2 and max_score < s2 :
          max_score = s2
          ans = [max_score,i,j,1]
    return ans

00127: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1064, 'const': 484, 'code+const': 1548}
check_import({'allowable': ['math']}): none
def k(board):
    b = copy_board(board)
    b2 = make_board()
    for i in range(15):
        for j in range(15):
            b2[i][j] = b[j][i]
    return b2
def j(board):
    v = []
    iv = []
    for i in board:
        w = "|".join(i)
        w = w.strip("|")
        b = w.split("||")
        for c in b:
            c = c.strip("|")
            c = c[::2]
            if c == "" or len(c) == 1 :
                continue
            if is_valid(c):
                v.append(c)
            else:
                iv.append(c)
    return [v,iv]
def get_all_words(board):
    b = board.copy()
    v = []
    iv = []
    v1 , iv1 = j(b)
    v2 , iv2 = j(k(b))
    v.extend(v1)
    v.extend(v2)
    iv.extend(iv1)
    iv.extend(iv2)
    v.sort()
    iv.sort()
    return [v,iv]
def get_play(board, new_board):
    po = []
    d = 0
    w = ""
    for i in range(15):
        for j in range(15):
            if board[i][j] != new_board[i][j]:
                w += str(new_board[i][j])
                if po == []:
                    po = [i,j]
                else:
                    if i == po[0]:
                        d =0
                    else:
                        d =1
    return [po[0],po[1],d,w]
def g(board,b,c):
    s = 0
    for i in range(15):
        if b[i] != board[i]:
            a = b[i]
            l = -1
            g = [15]
            for i in range(15):
                if a[i] == "":
                    if i < c:
                        l = i
                    if i > c:
                        g.append(i)
            g.sort()
            h = g[0]
            if h== l +2:
                continue 
            for i in range(l+1,h):
                s+=get_value(a[i])
    return s
def play(row,col,down,tiles,board):
    v,b = place_tiles(row,col,down,tiles,board)
    if get_all_words(b)[1] == [] and v:
        s = 0
        s += g(board,b,col)
        s += g(k(board),k(b),row)
        if len(tiles) >= 7:
            s+=50
        return s
    return -1
def best_play(tiles,board):
    an = []
    for i in range(15):
        for j in range(15):
            for d in range(2):
                v,b = place_tiles(i,j,d,tiles,board)
                if get_all_words(b)[1] == [] and v:
                    s = play(i,j,d,tiles,board)
                    an.append([-s,i,j,d])
    an.sort()
    if len(an) ==0:
        return [-1,-1,-1,-1]
    an[0][0] = -1*an[0][0]
    return an[0]

00128: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1294, 'const': 376, 'code+const': 1670}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words = []
    invalid_words = []
    data = ""
    for row in range(15):
        for column in range(15):
            if board[row][column] != "":
                data += board[row][column]
            else:
                data += " "
        looking_for = data.split()
        for ch in looking_for:
            if len(ch) == 1:
              pass
            elif is_valid(ch) == True:
              valid_words.append(ch)
            elif is_valid(ch) == False:
              invalid_words.append(ch)
        looking_for.clear()
        data = ""
    for column in range(15):
        for row in range(15):
            if board[row][column] != "":
                data += board[row][column]
            else:
                data += " "
        looking_for = data.split()
        for ch in looking_for:
            if len(ch) == 1:
              pass
            elif is_valid(ch) == True:
              valid_words.append(ch)
            elif is_valid(ch) == False:
              invalid_words.append(ch)
        looking_for.clear()
        data = ""
    valid_words.sort()
    invalid_words.sort()     
    return [valid_words,invalid_words]
def get_play(board, new_board):
    out = False
    for row in range(15):
        for column in range(15):
          if new_board[row][column] != board[row][column]:
            wanted_row = row
            wanted_column = column
            out = True
            break
        if out == True:
          break
    down = 0    
    for i in range(1,15-wanted_row):
      if board[wanted_row+i][wanted_column] != new_board[wanted_row+i][wanted_column]:
        down = 1
        break
    if down == 0:
      word = ""
      for i in range(15-wanted_column):
        if board[wanted_row][wanted_column+i] != new_board[wanted_row][wanted_column+i]:
          word += new_board[wanted_row][wanted_column+i]
    elif down == 1:
      word = ""
      for i in range(15-wanted_row):
        if board[wanted_row+i][wanted_column] != new_board[wanted_row+i][wanted_column]:
          word += new_board[wanted_row+i][wanted_column]
    return [wanted_row,wanted_column,down,word]
def play(row,col,down,tiles,board):
    score = 0
    validity, new_board = place_tiles(row,col,down,tiles,board)
    board_words = get_all_words(board) 
    new_board_words = get_all_words(new_board)
    real_new_words = []
    for ch in new_board_words[1]:
      if ch not in board_words[1]:
        return -1
      if ch in board_words[1]:
        board_words[1].remove(ch)
    for ch in new_board_words[0]:
      if ch not in board_words[0]:
        real_new_words.append(ch)
      if ch in board_words[0]:
        board_words[0].remove(ch)
    if validity == True and real_new_words != []:
      for a in real_new_words:
        for ch in a:
          score += get_value(ch)
      if len(tiles) >= 7:
        score += 50
      return score
    else:
      return -1
def best_play(tiles,board):
    original_board = copy_board(board)
    all_possible_plays = []
    sorted_possible_plays = []
    highest_score_plays = []
    best_possible_play = []
    for down in range(2):
      for row in range(15):
            for column in range(15):
              score = play(row, column, down, tiles, original_board)
              if score != -1:
                all_possible_plays.append([score, row, column, down])
              elif score == -1:
                all_possible_plays.append([-1, -1, -1 ,-1])
    if all_possible_plays != []:
      sorted_possible_plays = sorted(all_possible_plays)[::-1]
    else:
      sorted_possible_plays = [[-1, -1, -1 ,-1]]
    highest_score_possible = sorted_possible_plays[0][0]
    for ch in sorted_possible_plays:
      if ch[0] == highest_score_possible:
        highest_score_plays.append(ch) 
    highest_score_plays.sort()
    best_possible_play = highest_score_plays[0]
    return best_possible_play

00129: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1170, 'const': 397, 'code+const': 1567}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    the_str = ''
    column = len(board[0])
    row = len(board)
    for i in range(row):
        the_str += '  '
        for j in range(column):
            if board[i][j] == '':
                the_str += '  '
            else :
                the_str += board[i][j].upper()
    for j in range(column):
        the_str += '  '
        for i in range(row):
            if board[i][j] == '':
                the_str += '  '
            else :
                the_str += board[i][j].upper()
    the_list = the_str.split()
    the_list.sort()
    checked_list = [e for e in the_list if len(e) > 1]
    out = [[],[]]
    for k in checked_list:
        if is_valid(k):
            out[0].append(k)
        else :
            out[1].append(k)
    return out
def get_play(board, new_board):
    the_new_str = ''
    column = len(board[0])
    row = len(board)
    stop = False
    while not stop:
        for i in range(row):
            for j in range(column):
                if new_board[i][j] != board[i][j]:
                    x = i
                    y = j
                    stop = True
                    break
            if stop: break
    for i in range(row):
        for j in range(column):
            if new_board[i][j] != board[i][j]:
                the_new_str += new_board[i][j].upper()
            elif new_board[i][j] == board[i][j] and 'A' <= new_board[i][j] <= 'Z':
                the_new_str += ''
            else:
                the_new_str += ' '
    the_new_list = the_new_str.split()
    if len(the_new_list) == 1:
        down = 0
        word = the_new_list[0]
    else:
        down = 1
        word = ''.join(the_new_list)
    return [x,y,down,word]
def play(row,col,down,tiles,board):
    valid, new_board = place_tiles(row,col,down,tiles,board)
    if not valid:
        return -1
    else :
        word_board = get_all_words(board)
        word_new_board = get_all_words(new_board)
        valid_word, invalid_word = word_new_board
        the_new_words = []
        if len(invalid_word) == 0:
            for word in valid_word:
                if word not in word_board[0]:
                    the_new_words.append(word)
                else:
                    word_board[0].remove(word)
        else:
            return -1
        score_list = []
        for each_word in the_new_words:
            score = 0
            for ch in each_word:
                score += get_value(ch)
            score_list.append(score)
        total_score = sum(score_list)
        if len(tiles) >= 7 :
            total_score += 50
        return total_score
    return -1
def best_play(tiles,board):
    plays = []
    column = len(board[0])
    row = len(board)
    for i in range(row):
        for j in range(column):
            for k in range(2):
                score = play(i, j, k, tiles, board)
                plays.append([score, i, j, k])
    plays.sort()
    max_s = max(plays)[0]
    max_s_plays = [e for e in plays if e[0] == max_s]
    max_s_plays.sort()
    check = max_s_plays[0]
    if check[0] == -1:
        return [-1,-1,-1,-1]
    else:
        return max_s_plays[0]
    return [-1,-1,-1,-1]

00130: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 1426, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1046, 'const': 418, 'code+const': 1464}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid=[]
    invalid=[]
    ans=[]
    for a in board:
        kum1=[]
        for b1 in a:
            if b1!='':
                kum1.append(b1)
            else:
                kum1.append(' ')
        kum1=''.join(kum1)          
        kum1=kum1.split(' ')
        for i in kum1:
            if len(i) >1:
                ans.append(i)         
    for i in range(15):
        kum2=[]
        for a in board:
            if a[i]!='':
                kum2.append(a[i])
            else:
                kum2.append(' ')            
        kum2=''.join(kum2)
        kum2=kum2.split(' ')
        for j in kum2:
            if len(j) >1:
                ans.append(j)
    for i in ans:
        if i in word_list:
           valid.append(i)
        else:
            invalid.append(i)
    valid.sort()
    invalid.sort()
    return [valid,invalid]
def get_play(board, new_board):
    keb=[]
    n=0
    for a in range(15):
        for b in range(15):
            if board[a][b] != new_board[a][b]:
                keb.append(new_board[a][b])
    jakeb=''.join(keb)
    to_outer = False
    rown=0
    for a in range(15):
        for b in range(15):
            if board[a][b] != new_board[a][b]:
                n+=1
                if n==1:
                    col=int(a)
                    row=int(b)
                elif n==2:
                    coln=int(a)
                    rown=int(b)
                    to_outer = True
                    break
        if to_outer: break
    if row == rown:
        A=1
    else:
        A=0
    return [col,row,A,jakeb]
def play(row,col,down,tiles,board):
    valid,board_new=place_tiles(row,col,down,tiles,board)
    gb=get_all_words(board)[0]
    gbn=get_all_words(board_new)[0]
    for a in gb:
        for b in gbn:
            if a==b:
                gbn.remove(a)
    score=0
    for i in range(len(gbn)):
      for j in gbn[i]:
         score+=int(get_value(j))
    if len(tiles) >6:
        score+=50
    if valid == False:
        score=-1
    if score==0:
        score=-1
    if len(get_all_words(board_new)[1])!=0:
        score=-1
    return score
def best_play(tiles,board):
    p,row,col,down=0,0,0,0
    ans=[-1,-1,-1,-1]
    for a in range(15):
      for b in range(15):
        for c in range(2):
            if place_tiles(a,b,c,tiles,board)[0]!=False:
               sc = play(a,b,c,tiles,board)
               if sc>p:
                 p,row, col,down=sc,a,b,c
    if p== 0:
      ans = [-1,-1,-1,-1]
    else:
      ans=[p,row,col,down]
    return ans

00131: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 15, 24, 17, 85, 012]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 1827, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 120, 1426, -1]
test_play_150.0
[2839]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 758, 'const': 270, 'code+const': 1028}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words = []
    invalid_words = []
    a = copy_board(board)
    word = ''
    for i in range(len(a)):
        for e in range(len(a)):
            if a[i][e] != '':
                word += a[i][e]
            else:
                word += ' '
        word += ' '
    for i in range(len(a)):
        for e in range(len(a)):
            if a[e][i] != '':
                word += a[e][i]
            else:
                word += ' '
        word += ' '
    word = word.split()
    col = []
    for i in word:
        if len(i) > 1:
            col.append(i)
    for e in col:
        if is_valid(e) == True:
            valid_words.append(e)
        else:
            invalid_words.append(e)
    valid_words.sort()
    invalid_words.sort()
    return [valid_words,invalid_words]
def get_play(board, new_board):
    tile_index = []
    tiles = ''
    for i in range(15):
      for j in range(15):
        if board[i][j] != new_board[i][j]:
          tile_index.append((i,j))
          tiles += new_board[i][j]
    if len(tile_index) == 1:
      down = 0
    else:
      if tile_index[0][0] ==  tile_index[-1][0]:
        down = 0
      elif tile_index[0][1] ==  tile_index[-1][1]:
        down = 1
    row = tile_index[0][0]
    col = tile_index[0][1]   
    return [row,col,down,tiles]
def play(row,col,down,tiles,board):
    score = 0
    all_words, _ = get_all_words(board)
    valid, nb = place_tiles(row,col,down,tiles,board)
    new_all_words, invalid_words =  get_all_words(nb)
    if len(invalid_words) != 0:
      return -1
    else:
      new_words = []
      for w in new_all_words:
        if w not in all_words:
          new_words.append(w)
      for n in new_words:
        for c in n:
          score += get_value(c)
      if len(tiles) >= 7:
        score += 50
    return score
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00132: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_20.0
[[-1, 5-1, 7-1, -1]]
test_best_play_30.0
[[-168, -40, 7, 1], [-187, -512, 70, 10], [-179, -31, 712, 1], [589, 1, 70, 10], [131, 82, 63, 0], [695, 23, 94, 1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [511, 10, 51, 0], [1522, 83, 108, 1]]
test_best_play_40.0
[[-71, -30, 7, 1], [623, 10, 70, 10], [-163, -1, -1, -10], [209, 87, 3, 01], [-19, -13, -10, -10], [-172, -14, -14, -10],
 [-17, -16, -16, -10], [8, 43, 43, 10], [18, 14, 50, 10], [146, 35, 31, 10]]
test_best_play_50.0
[[-183, -60, 7, 1], [612, 13, 70, 10], [6958, 81, 18, 0], [910, 20, 1, 10], [-168, -10, -11, -1], [824, 16, 38, 01],
 [-18, -18, -19, -1], [10, 01, 42, 1], [-21, -15, -13, -1], [1527, 84, 04, 1]]
bytecount: {'code': 3224, 'const': 776, 'code+const': 4000}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid = []
    invalid = []
    word = ""
    for i in range(len(board)):
        for j in range(len(board)) :
            if board[i][j] != "" :
                word += board[i][j]
            if board[i][j] == "" and word != "":
                if is_valid(word):
                    valid.append(word)
                elif len(word) > 1:
                    invalid.append(word)
                word = ""
        if word != "" :
            if is_valid(word):
                valid.append(word)
            elif len(word) > 1:
                invalid.append(word)
            word = ""
    for i in range(len(board)):
        for j in range(len(board)) :
            if board[j][i] != "" :
                word += board[j][i]
            if board[j][i] == "" and word != "":
                if is_valid(word):
                    valid.append(word)
                elif len(word) > 1 :
                    invalid.append(word)
                word = ""
        if word != "" :
            if is_valid(word):
                valid.append(word)
            elif len(word) > 1:
                invalid.append(word)
            word = ""
    valid.sort()
    invalid.sort()
    return [valid,invalid]
def get_play(board, new_board):
    diff = []
    letter = []
    down = 1
    for i in range(len(board)): 
        for j in range(len(board)) :
            if board[i][j] != new_board[i][j] :
                diff.append([i,j])
                letter.append(new_board[i][j])
    if len(letter) == 1 or diff[0][0] == diff[1][0] :
        down = 0
    letter = "".join(letter)
    return [diff[0][0],diff[0][1],down,letter]
def valid_play(val, inv, loc, word): 
    if is_valid(word):
        val.append([word, loc])
    elif len(word) > 1:
        inv.append([word, loc])
    return val, inv, [], ""
def get_all(board): 
    wordx = ""
    wordy = ""
    val = []
    inv = []
    tempx = []
    tempy = []
    for i in range(len(board)):
        for j in range(len(board)):
            if board[i][j] != "":
                wordx += board[i][j]
                tempx.append([i, j])
            if board[j][i] != "":
                wordy += board[j][i]
                tempy.append([j, i])
            if board[i][j] == "" and len(wordx) + len(tempx) != 0:
                val, inv, tempx, wordx = valid_play(val, inv, tempx, wordx)
            if board[j][i] == "" and len(wordy) + len(tempy) != 0:
                val, inv, tempy, wordy = valid_play(val, inv, tempy, wordy)
        if len(wordx) + len(tempx) != 0:
            val, inv, tempx, wordx = valid_play(val, inv, tempx, wordx)
        if len(wordy) + len(tempy) != 0:
            val, inv, tempy, wordy = valid_play(val, inv, tempy, wordy)
    return [sorted(val), sorted(inv)]
def scoring(all_word,tiles):
    score = 0
    for e in all_word :
        for d in e :
            score += get_value(d)
    if len(tiles) >= 7:
        score += 50
    return score
def play(row, col, down, tiles, board): 
    test_board = copy_board(board)
    test_board = place_tiles(row, col, down, tiles, test_board)[1]
    word = get_all(board)
    _word = get_all(test_board)
    loc = [e[1] for e in word[0]]
    all_score = []
    if word == _word or len(_word[1]) + len(word[1]) != 0:
        return -1
    for e in _word[0]:
        if e[1] not in loc:
            all_score.append(e[0])
    return scoring(all_score, tiles)
def all_tail(board):
    word = ""
    pos = []
    word_ho = []
    pos_ho = []
    word_ver = []
    pos_ver = []
    for i in range(len(board)):
        for j in range(len(board)):
            if board[i][j] != "":
                word += board[i][j]
                pos = [i,j]
            if board[i][j] == "" and len(word) != 0:
                word_ho.append(word)
                pos_ho.append(pos)
                word = ""
        if len(word) != 0 :
            word_ho.append(word)
            pos_ho.append(pos)
            word = ""
    for i in range(len(board)):
        for j in range(len(board)):
            if board[j][i] != "":
                word += board[j][i]
                pos = [j,i]
            if board[j][i] == "" and len(word) != 0:
                word_ver.append(word)
                pos_ver.append(pos)
                word = ""
        if len(word) != 0 :
            word_ver.append(word)
            pos_ver.append(pos)
            word = ""
    return word_ho,pos_ho,word_ver,pos_ver
def mixed_word(chr,tiles):
    for i in range(len(tiles)+1):
        word = tiles[:i:] + chr + tiles[i::]
        if is_valid(word) :
            return [i,word]
    return [-1,""]
def poss_word(word):
    for e in word :
        if is_valid(e) :
            return True
    return False
def find_word(pos,board):
    spin = [[1,0],[0,1],[-1,0],[0,-1]]
    for e in pos :
        if board[e[0]][e[1]] != "" :
            return False
    for e in pos :
        for s in spin :
            if 0 <= e[0] + s[0] <= 14  and 0 <= e[1] + s[1] <= 14 :
                if board[e[0] + s[0]][e[1] + s[1]] != "" and [e[0] + s[0] ,e[1] + s[1]] not in pos :
                    return True
    return False
def max_scoring(ans) :
    d = []
    for e in ans :
        d.append([-e[0],e[1],e[2],e[3],e])
    d.sort()
    return d[0][4]
def best_play(tiles,board):
    poss = []
    ans = []
    if board[7][7] == "" :
        return [play(8-len(tiles),7,1,tiles,board),8-len(tiles),7,1]
    word_ho,pos_ho,word_ver,pos_ver = all_tail(board)
    for i in range(len(word_ho)) :
        mixed = mixed_word(word_ho[i],tiles)
        pos = pos_ho[i]
        poss.append(mixed[1])
        if mixed[0] > -1 and 0 <= pos[1]-mixed[0] + len(tiles) <= 15 and play(pos[0],pos[1]-mixed[0],0,tiles,board) != -1:
            ans.append([play(pos[0],pos[1]-mixed[0],0,tiles,board),pos[0],pos[1]-mixed[0],0])
    for j in range(len(word_ver)) :
        mixed = mixed_word(word_ver[j],tiles)
        pos = pos_ver[j]
        poss.append(mixed[1])
        if mixed[0] > -1 and 0 <= pos[0]-mixed[0] + len(tiles) <= 15 and play(pos[0]-mixed[0],pos[1],1,tiles,board) != -1:
            ans.append([play(pos[0]-mixed[0],pos[1],1,tiles,board),pos[0]-mixed[0],pos[1],1])
    if is_valid(tiles) or poss_word(poss) :
        for i in range(len(board)) :
            for j in range(len(board)) :
                ppos = []
                for k in range(len(tiles)) :
                    if j + len(tiles) > 15 : break
                    ppos.append([i,j+k])
                if find_word(ppos,board) and play(i,j,0,tiles,board) != -1 and len(ppos) != 0 :
                    ans.append([play(i,j,0,tiles,board),i,j,0])
        for i in range(len(board)) :
            for j in range(len(board)) :
                ppos = []
                for k in range(len(tiles)) :
                    if i + len(tiles) > 15 : 
                        break
                    ppos.append([i+k,j])
                if find_word(ppos,board) and play(i,j,1,tiles,board) != -1 and len(ppos) != 0 :
                    ans.append([play(i,j,1,tiles,board),i,j,1])
    if len(ans) != 0 :
        return max_scoring(ans)
    return [-1,-1,-1,-1]

00133: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 922, 'const': 336, 'code+const': 1258}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    uns = "" ; val = [] ; inval = []
    for i in range(15):
      for j in range(15):
        if j > 0 and board[i][j] == '' and board[i][j-1] != '':
          uns += ' '
        else:
          uns += board[i][j].upper()
      uns += ' '
    uns += ' '
    for j in range(15):
      for i in range(15):
        if i > 0 and board[i][j] == '' and board[i-1][j] != '':
          uns += ' '
        else:
          uns += board[i][j].upper()
      uns += ' '
    a = uns.split()
    a.sort()
    for e in a:
      if is_valid(e):
        val.append(e)
      elif len(e) >= 2:
        inval.append(e)
    return [val,inval]
def get_play(board, new_board):
    tiles = "" ; dir = 0 ; col = '' ; row = ''
    for i in range(15):
      for j in range(15):
        if board[i][j] != new_board[i][j]:
          tiles += new_board[i][j]
          if col == '':
            col = j
            row = i
      if len(tiles) == 1:
        dir = 1
    if len(tiles) == 1 and dir == 1:
      dir = 0
    return [row,col,dir,tiles]
def play(row,col,down,tiles,board):
    pre = get_all_words(board)[0]
    board = place_tiles(row,col,down,tiles,board)[1]
    post,invalid = get_all_words(board)
    value = 0 ; bing = len(tiles) >= 7
    if len(invalid) == 0:
      for e in pre:
        if e in post:
          post.pop(post.index(e))
      if len(post) != 0:
        for w in post:
          for e in w:
              value += get_value(e)
        if bing:
          value += 50
        return value
    return -1
def best_play(tiles,board):
    lst = [] ; sco = []
    for row in range(0,15):
        for col in range(0,15):
            for down in range(0,2):
                score = play(row,col,down,tiles,board)
                if score != -1:
                  lst.append([score,row,col,down])
                  sco.append(score)
    if len(sco) == 0:
      return [-1,-1,-1,-1]
    else :
      hscore = max(sco)
    lst.sort()
    for e in lst:
      if e[0] == hscore:
        return e

00134: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1358, 'const': 348, 'code+const': 1706}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  all_words = [[],[]]
  row_col=[]
  board1 = copy_board(board)
  board2 = copy_board(board)
  word_row=[]                   
  for r in range(len(board1)):
    word=""
    for c in range(len(board1[r])):
      if board1[r][c] != "":
        word+= board1[r][c]
        if c == len(board1[r])-1:
          if len(word) > 1:
            word_row.append(word)
          word=""
        elif c < len(board1[r])-1:                                                   
          if board1[r][c+1] == "":
            if len(word) > 1:
              word_row.append(word)
            word=""
        board1[r][c] ="-"
  word_col=[]                    
  for c in range(len(board2[r])):
    word=""
    for r in range(len(board2)):
      if board2[r][c] != "":
        word+= board2[r][c]
        if r == len(board2)-1:
          if len(word) > 1:
            word_col.append(word)
          word="" 
        elif r < len(board2)-1:
          if board2[r+1][c] == "":
            if len(word) > 1:
              word_col.append(word)
            word=""
        board2[r][c] ="-"
  row_col.extend(word_row)
  row_col.extend(word_col)
  row_col.sort()
  for word in row_col:
    if is_valid(word) == True:
      all_words[0].append(word)
    else:                                                
      all_words[1].append(word)
  return all_words
def get_play(board, new_board):
  tiles = ''
  for r in range(len(board)):
    for c in range(len(board[r])):
      if board[r][c] != new_board[r][c]:
        tiles+=new_board[r][c]
        if len(tiles) == 1:
          fr = r
          fc = c
        lr = r
        lc = c
  if len(tiles) == 1:
    down = 0
  elif fr == lr:
    down = 0
  elif fc == lc:
    down = 1
  play = [fr,fc,down,tiles]
  return play
def play(row,col,down,tiles,board):
  new_board = copy_board(board)
  new_board = place_tiles(row,col,down,tiles,new_board)[1]
  b_word = get_all_words(board)
  nb_word = get_all_words(new_board)
  diff=[[],[]]
  for word in nb_word[0]:
    if word not in b_word[0]:
      diff[0].append(word)
    else:
       b_word[0][b_word[0].index(word)] = "-"
  for word in nb_word[1]:
    if word not in b_word[1]:
      diff[1].append(word)
    else:
       b_word[1][b_word[1].index(word)] = "-"
  if diff[1] != [] or diff[0] == []:
    score = -1
  else:
    score=0
    for valid in diff[0]:
      for letter in valid:
        score+= get_value(letter)
    if len(tiles) >= 7:
      score+=50
  return score
def best_play(tiles,board):
  valid_play=[]
  for d in range(2):                          
    for r in range(len(board)):               
      for c in range(len(board[r])):          
        score = play(r,c,d,tiles,board)
        if score != -1:
          valid_play.append([score,r,c,d])
  if len(valid_play) == 0:
    the_best_play = [-1,-1,-1,-1]
  else:
    find_max=[]
    for p in range(len(valid_play)):
      find_max.append(valid_play[p][0])
    max_score = max(find_max)
    max_score_play = []
    for p in range(len(valid_play)):
      if valid_play[p][0] == max_score:
        max_score_play.append(valid_play[p][1:4])
    max_score_play.sort()
    the_best_play = [max_score]
    the_best_play.extend(max_score_play[0])
  return the_best_play

00135: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0IndexError('list index out of range')
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1294, 'const': 318, 'code+const': 1612}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  ko = [] 
  x = []
  for data in board:
    g = ' ' 
    for i in range(len(data)): 
      if data[i] != '':
        g += str(data[i])
      elif data[i] == '':
        g+= ' '
    k = g.strip()   
    x.append(k)      
  for data in x:
    if len(data)> 1:
      f = data.split()
      ko.append(f)
  non =[]
  for i in range(len(board[0])):
    m = ' '
    for j in range(len(board)):
      if board[j][i] != '' :
        m += str(board[j][i]) 
      elif board[j][i] == '':
        m += ' '
    f = m.strip()
    non.append(f)   
  for data in non:
    if len(data)> 1:
      f = data.split()
      ko.append(f)
  wordlist = [] 
  for data in ko:
    for i in range(len(data)):
      if len(data[i]) >1 :
        wordlist.append(data[i])    
  naheedo =  [[],[]]
  for data in wordlist :
    if is_valid(data) == True:
     naheedo[0].append(data)
    elif is_valid(data) == False:
       naheedo[1].append(data)
  naheedo[0].sort()
  naheedo[1].sort()
  return naheedo
def get_play(board, new_board):
  tile = []
  k = []
  down = 0
  for j in range(len(new_board)):
    for i in range(len(new_board[j])):
      if new_board[j][i] != board[j][i]:
        tile.append(new_board[j][i])
        k.append([j,i])
  tiles = ''.join(tile)
  if new_board[k[0][0]+1][k[0][1]] !=  '' :
     if new_board[k[0][0]+2][k[0][1]] !=  '' :
        down = 1
  if len(tile) <= 1:
    down = 0 
  answer = [k[0][0],k[0][1],down,tiles]
  return answer
def play(row,col,down,tiles,board):
  score = 0
  x = get_all_words(board)[0]  
  value,new_board = place_tiles(row,col,down,tiles,board)
  y, non = get_all_words(new_board)
  old = list(x) 
  new = list(y)
  f = list(non)
  for data in old :
    if data in new:
        new.remove(data)
  for data in new :
    for  i in range(len(data)):
      score += int(get_value(data[i]))
  if len(tiles) >= 7 :
    score += 50
  if len(non) != 0  or score == 0 or value == False:
    score = -1
  return score
def best_play(tiles,board):
  g = []
  for row in range(len(board)):
    for col in range(len(board)):
      for down in range(2):
          if place_tiles(row,col,down,tiles,board)[0]:
            r =play(row,col,down,tiles,board)
            g.append([r, row, col, down])
  well = []
  g.sort()
  mong = g[::-1][0]
  for i in range(len(g)):
    if g[i][0] == mong[0]:
      well.append(g[i])
  well.sort()
  if well[0][0] == -1:
    return [-1,-1,-1,-1]
  else:
    return well[0]

00136: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1520, 'const': 298, 'code+const': 1818}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  h=''
  l=[]
  m=[]
  n=[]
  for i in range(len(board)):
    for j in board[i]:
      if j != '':
        h += j
      elif j == '' and len(h)>1:
        l.append(h)
        h = ''
      elif j == '' and len(h)<=1:
        h = ''
    if len(h)>1:
      l.append(h)
    h=''
  for i in range(len(board)):
    for j in range(len(board[i])):
      if board[j][i] != '' :
        h += board[j][i]
      elif board[j][i] == '' and len(h)>1:
        l.append(h)
        h = ''
      elif board[j][i] == '' and len(h)<=1:
        h = ''
    if len(h)>1:
      l.append(h)
    h=''
  for i in l:
    if is_valid(i)==True:
      m.append(i)
      m.sort()
    else :
      n.append(i)
      n.sort()
  return [m,n]
def get_play(board, new_board):
  h=''
  l=[]
  p1=[]
  d=0
  for i in range(len(board)):
    for j in range(len(board[i])):
      if board[i][j] != new_board[i][j]:
        h += new_board[i][j]
        p1.append([i,j])
      elif board[i][j] == new_board[i][j] and len(h)>=1:
        l.append(h)
        h = ''
      elif board[i][j] == new_board[i][j] and len(h)<=1:
        h = ''
    if len(h)>=1:
      l.append(h)
    h=''
  for i in range(len(board)):
    for j in range(len(board[i])):
      if board[j][i] != new_board[j][i] :
        h += board[j][i]
        p1.append([j,i])
      elif board[j][i] == new_board[j][i] and len(h)>=1:
        l.append(h)
        d=1
        h = ''
      elif board[j][i] == new_board[j][i] and len(h)<=1:
        h = ''
    if len(h)>=1:
      l.append(h)
      d=1
    h=''
  if p1[0][0]==p1[1][0]:
    d=0
  else:
    d=1
  k=''.join(l)
  return [p1[0][0],p1[0][1],d,k]
def play(row,col,down,tiles,board):
  s=0
  boo,bo=place_tiles(row,col,down,tiles,board)
  if boo == True:
    h=get_all_words(board)
    l=get_all_words(bo)
  else:
    return -1
  if h[1] == [] and l[1] == []:
    for i in l[0]:
      if i not in h[0]:
        for j in i:
          s += get_value(j)
      else:
          h[0].remove(i)
    if len(tiles)>=7:
          s += 50
    return s
  else:
    return -1
def best_play(tiles,board):
  k=[]
  u=[]
  for i in range(15):
    for j in range(15):
      p = play(i,j,0,tiles,board)
      if p != -1 :
        k.append(p)
        u.append([i,j,0])
  for i in range(15):
    for j in range(15):
      p = play(j,i,1,tiles,board)
      if p != -1 :
        k.append(p)
        u.append([j,i,1])
  if k == []:
    return [-1,-1,-1,-1]
  else:
    m=max(k)
    t=k.count(m)
    uk=k.index(m)
    k=k[uk:t+uk]
    u=u[uk:t+uk]
    u.sort()
    return [max(k),u[0][0],u[0][1],u[0][2]]

00137: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_20.0IndexError('list index out of range')
[]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1220, 'const': 378, 'code+const': 1598}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  ans_row = []
  ans_col = []
  word_row = ""
  word_col = ""
  row = []
  for i in range(15) :
    for j in range(15) :
      if j != 14 :
        row.append(board[i][j])
      else :
        row.append(board[i][j])
        row.append("")
  col = []
  for i in range(15) :
    for j in range(15) :
      if j != 14 :
        col.append(board[j][i])
      else :
        col.append(board[j][i])
        col.append("")
  for i in range(240) :
    if row[i] != "" :
      word_row += row[i]
    else :
      if is_valid(word_row) == True :
        ans_row.append(word_row)
      elif is_valid(word_row) == False and len(word_row) > 1 and word_row != ""  :
        ans_col.append(word_row)
      word_row = ""
    if col[i] != "" :
      word_col += col[i]
    else :
      if is_valid(word_col) == True :
        ans_row.append(word_col)
      elif is_valid(word_col) == False and len(word_col) > 1 and word_col != ""  :
        ans_col.append(word_col)
      word_col = ""
  ans_row.sort(),ans_col.sort()
  return [ans_row,ans_col]
def get_play(board, new_board):
  ans = []
  num = []
  world = ""
  n = 0
  for i in range(15) :
    for j in range(15):
      if new_board[i][j] != board[i][j] :
        world += new_board[i][j]
        num.append(i)
        num.append(j)
  ans.append(num[0])
  ans.append(num[1])
  if len(num) != 2 :
    for e in num[1::2] :
      if num[1] == e :
        n = 0 
      else :
        n = 1
  else :
    n = 1
  if n == 0 :
     ans.append(1)
  else :
    ans.append(0)
  ans.append(world)
  return ans
def play(row,col,down,tiles,board):
  word_check = []
  i = 0
  check = get_all_words(board)[0]
  board2 = place_tiles(row,col,down,tiles,board)
  if board2[0] == False :
    i = -1
  if len(tiles) >= 7 :
    i += 50
  for e in get_all_words(board2[1])[0] :
    word_check.append(e)
  for j in range(len(check)) :
    if check[j] in word_check :
      word_check.remove(check[j])
  for e in word_check :
    for f in e :
      i += get_value(f)
  if get_all_words(board2[1])[1] != [] or i == 0:
    i = -1
  return i
def best_play(tiles,board):
  n = []
  num = []
  use = []
  for i in range(15) :
    for j in range(15) :
      for k in range(2) :
        if play(i,j,k,tiles,board) != -1:
          num.append(play(i,j,k,tiles,board))
          n.append([play(i,j,k,tiles,board),i,j,k])  
  n.sort()
  for e in n :
    if e[0] == max(num) :
      use.append(e)
  if use[0][1:]!=[0,0,0]:
    return use[0]
  else:
    return [-1,-1,-1,-1]

00138: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_50.0
[[76, 9, 1, 'ACAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [13, 13, 1, 'SMICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [20, 10, 1, 'DOOLANDO'], [4, 9, 1, 'POGEY'],
 [30, 14, 1, 'OSAGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [76, 4, 1, 'CABC'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 2686, 'const': 342, 'code+const': 3028}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  x = []
  for i in range(15):
    k = -1
    for j in range(15):
      if board[i][j] != '':
        if j > k:
          y = board[i][j]
          for k in range(j,15):
            if board[i][k] == '':
              for e in range(j+1,k):
                y += board[i][e]
              if len(y) > 1:
                x.append(y)
              break
            elif board[i][k] != '' and k == 14:
              for e in range(j+1,k+1):
                y += board[i][e]
              if len(y) > 1:
                x.append(y)
  for j in range(15):
    k = -1
    for i in range(15):
      if board[i][j] != '':
        if i > k:
          y = board[i][j]
          for k in range(i,len(board)):
            if board[k][j] == '':
              for e in range(i+1,k):
                y += board[e][j]
              if len(y) > 1:
                x.append(y)
              break
            elif board[k][j] != '' and k == 14:
              for e in range(i+1,k+1):
                y += board[e][j]
              if len(y) > 1:
                x.append(y)  
  y = []
  z = []
  for e in x:
    if is_valid(e):
      y.append(e)
    else:
      z.append(e)
  y.sort()
  z.sort()
  return [y,z]
def get_play(board, new_board):
  x = []
  for i in range(15):
    k = -1
    for j in range(15):
      if board[i][j] != '':
        if j > k:
          y = [0,[i,j,board[i][j]]]
          for k in range(j,15):
            if board[i][k] == '':
              for e in range(j+1,k):
                y.append([i,e,board[i][e]])
              if len(y) > 2:
                x.append(y)
              break
            elif board[i][k] != '' and k == 14:
              for e in range(j+1,k+1):
                y.append([i,e,board[i][e]])
              if len(y) > 2:
                x.append(y)
  for j in range(15):
    k = -1
    for i in range(15):
      if board[i][j] != '':
        if i > k:
          y = [1,[i,j,board[i][j]]]
          for k in range(i,15):
            if board[k][j] == '':
              for e in range(i+1,k):
                y.append([e,j,board[e][j]])
              if len(y) > 2:
                x.append(y)
              break
            elif board[k][j] != '' and k == 14:
              for e in range(i+1,k+1):
                y.append([e,j,board[e][j]])
              if len(y) > 2:
                x.append(y)  
  z = []
  for i in range(15):
    k = -1
    for j in range(15):
      if new_board[i][j] != '':
        if j > k:
          y = [0,[i,j,new_board[i][j]]]
          for k in range(j,15):
            if new_board[i][k] == '':
              for e in range(j+1,k):
                y.append([i,e,new_board[i][e]])
              if len(y) > 2:
                z.append(y)
              break
            elif new_board[i][k] != '' and k == 14:
              for e in range(j+1,k+1):
                y.append([i,e,new_board[i][e]])
              if len(y) > 2:
                z.append(y)
  for j in range(15):
    k = -1
    for i in range(15):
      if new_board[i][j] != '':
        if i > k:
          y = [1,[i,j,new_board[i][j]]]
          for k in range(i,15):
            if new_board[k][j] == '':
              for e in range(i+1,k):
                y.append([e,j,new_board[e][j]])
              if len(y) > 2:
                z.append(y)
              break
            elif new_board[k][j] != '' and k == 14:
              for e in range(i+1,k+1):
                y.append([e,j,new_board[e][j]])
              if len(y) > 2:
                z.append(y)
  zn = []
  x1 = []
  for e in x:
      for i in e[1:]:
          if i not in x1:
              x1.append(i)
  for e in z:
    if e not in x:
      zn.append(e)
  z1 = []
  for e in zn:
    for i in e[1:]:
        if i not in z1:
            z1.append(i)
  z2 = [e for e in z1]
  for e in x1:
    for w in z1:
      if w == e:
        z2.remove(w)
  a = z2[0][0]
  b = z2[0][1]
  d = ""
  for e in z2:
    d += e[-1]
  if len(d) == 1:
    c = 0
  elif z2[0][0] == z2[1][0]:
    c = 0
  else:
    c = 1
  return [a,b,c,d]
def play(row,col,down,tiles,board):
  a = get_all_words(board)[0]
  valid,board = place_tiles(row,col,down,tiles,board)
  if valid:
    if len(get_all_words(board)[1]) == 0:
      c = 0
      b = get_all_words(board)[0]
      for e in a:
        if e in b:
          b.remove(e)  
      for i in b:
        for j in i:
          c += get_value(j)
      if len(tiles) >= 7:
        c += 50
      return c  
    else:
      return -1
  else:
    return -1
def best_play(tiles,board):
  c = -1
  for i in range(15):
    for j in range(15):
      for k in range(2):
        if play(i,j,k,tiles,board) > c:
          c = play(i,j,k,tiles,board)
          a = i
          b = j
          d = k
  if c == -1:
    a = -1
    b = -1
    d = -1
  return [c,a,b,d]

00139: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1334, 'const': 334, 'code+const': 1668}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    wword = []
    for e in range(len(board)):
        line = ''
        for k in range(len(board[0])):
          c = board[e][k]
          if c == '':
            line += '-'
          else:
            line += c
        ww = ''.join(line)
        wword += (ww.split('-'))
    for a in range(len(board[0])):
        line = ''
        for b in range(len(board)):
            c = board[b][a]
            if c == '':
              line += '-'
            else:
              line += c
        wwww = ''.join(line)
        wword += wwww.split('-')
    word = []
    for h in wword:
        if h != '':
            word.append(h)
    a = []
    b = []
    for i in range(len(word)):
        if is_valid(word[i]):
            a.append(word[i])
        elif len(word[i]) > 1:
            b.append(word[i])
    a.sort()
    b.sort()
    return [a,b]
def get_play(board, new_board):
    row = 0
    col = 0
    x = [0,0,0,'']
    y = [0,0,1,'']
    nb = copy_board(new_board)
    for e in range(len(board)):
        for k in range(len(board)):
            if nb[e][k] == board[e][k]:
                nb[e][k] = ''
    found = False
    for a in range(len(board)):
        for b in range(len(board)):
            if nb[a][b] != '':
              row,col = a,b
              found = True
              break
        if found:
            break
    for b in range(len(board)):
      word = '' 
      for a in range(len(board)):
          word += nb[a][b]
      if word != '':
        y  = [row,col,1,word]
        break
    for a in range(len(board)):
      word = '' 
      for b in range(len(board)):
          word += nb[a][b]
      if word != '':
        x = [row,col,0,word]
        break
    if len(x[3]) == 1 and len(y[3]) == 1:
      return x
    if len(y[3]) > len(x[3]):
      return y
    else:
      return x
def play(row,col,down,tiles,board) :
    nb = place_tiles(row,col,down,tiles,board)[1]
    a = place_tiles(row,col,down,tiles,board)[0]
    w1 = get_all_words(board)
    w2 = get_all_words(nb)
    if a == -1:
        return -1
    if len(w2[1]) != 0:
        return -1 
    score = 0
    valid = True
    for i in w2[0]:
        if i in w1[0]:
            w1[0].remove(i)
        else:
            for e in i:
                score += get_value(e)
    if score == 0:
        return -1
    if len(tiles) >= 7: 
        score += 50
    return score
def best_play(tiles,board):
    x = []
    for i in range(len(board)):
        for j in range(len(board)):
          x.append([play(i,j,0,tiles,board),i,j,0])
          x.append([play(i,j,1,tiles,board),i,j,1])
    x.sort()
    y = []
    x = x[::-1]
    if x[0][0] == -1:
        return [-1,-1,-1,-1]
    for l in range(len(x)):
      if x[0][0] == x[l][0]:
        y.append(x[l])
    y.sort()
    return y[0]

00140: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[68, 0, 7, 1], [87, 12, 60, 10], [10879, 41, 512, 1], [7259, 81, 80, 10], [171, 112, 93, 10], [7265, 73, 4, 1],
 [3019, 16, 81, 10], [197, 14, 92, 1], [171, 10, 10, 10], [1522, 03, 98, 01]]
test_best_play_40.0
[[71, 0, 7, 1], [763, 210, 80, 10], [7863, 1, 91, 10], [149, 17, 63, 1], [2019, 813, 10, 10], [772, 214, 114, 10],
 [2517, 26, 126, 10], [258, 13, 73, 0], [218, 34, 130, 10], [136, 45, 14, 10]]
test_best_play_50.0
[[83, 0, 7, 1], [8062, 513, 80, 10], [7258, 1, 98, 10], [210, 80, 61, 10], [7468, 0, 101, 1], [124, 106, 58, 1],
 [178, 18, 69, 1], [2310, 31, 52, 1], [321, 45, 43, 1], [257, 124, 94, 01]]
bytecount: {'code': 1110, 'const': 483, 'code+const': 1593}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    v = []; iv = []
    for i in [[' ' if e == '' else e for e in board[i]] + [' '] + [' ' if e[i] == '' else e[i] for e in board] for i in range(15)]:
        for e in ''.join(i).strip().split():
            if is_valid(e) == True and len(e) >= 2: v.append(e)
            elif len(e) >= 2: iv.append(e)
    return [sorted(v), sorted(iv)]
def get_play(board, new_board):
    w = ''; i = []
    for r in range(15):
        for c in range(15):
            if new_board[r][c] != board[r][c] : w += new_board[r][c]; i.append([r, c])
    if len(i) == 1: return [i[0][0], i[0][1], 0, w]
    elif i[0][0] < i[1][0]: return [i[0][0], i[0][1], 1, w]
    elif i[0][0] == i[1][0]: return [i[0][0], i[0][1], 0, w]
def play(row,col,down,tiles,board):
    p = get_all_words(place_tiles(row,col,down,tiles,board)[1])[0]
    for i in get_all_words(board)[0]:
        if i in p: p.remove(i)
    s = sum([get_value(e) for i in p for e in i])
    if s == 0: return -1
    elif s != 0 and len(tiles) >= 7: return s + 50
    return s
def best_play(tiles,board):
    ans = []
    for r in range(15):
        for c in range(15):
            p = place_tiles(r,c,0,tiles,board)
            if p[0] == True:
                w = ''
                for i in range(c,15):
                    if p[1][r][i] == '': break
                    w += p[1][r][i]
                if is_valid(w):
                    ans += [[play(r,c,0,tiles,board), r, c, 0]]
            p = place_tiles(r,c,1,tiles,board)
            if p[0] == True:
                w = ''
                for i in range(r,15):
                    if p[1][i][c] == '': break
                    w += p[1][i][c]
                if is_valid(w):
                    ans += [[play(r,c,1,tiles,board), r, c, 1]]
    if len(ans) == 0: return [-1,-1,-1,-1]
    return sorted([i for i in ans if i[0] == max(ans)[0]])[0]

00141: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1006, 'const': 342, 'code+const': 1348}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    get = []
    for line in board:
        word_vertical = ''
        temp_vertical = ''
        for item in line:
            if item != '' and temp_vertical == '':
                word_vertical += item
            elif item != '' and temp_vertical != '':
                word_vertical += item
            elif item == '' and temp_vertical != '':
                get.append(word_vertical)
                word_vertical = ''
            temp_vertical = item
        if word_vertical != '':
            get.append(word_vertical)  
    for i in range(15):
        word_horizon = ''
        temp_horizon = ''
        for k in range(15):
            if board[k][i] != '' and temp_horizon == '':
                word_horizon += board[k][i]
            elif board[k][i] != '' and temp_horizon != '':
                word_horizon += board[k][i]
            elif board[k][i] == '' and temp_horizon != '':
                get.append(word_horizon)
                word_horizon = ''
            temp_horizon = board[k][i]
        if word_horizon != '':
            get.append(word_horizon)
    valid = []
    invalid = []
    for check in get:
        if len(check) >1:
            if is_valid(check) == True:
                valid.append(check)
            else:
                invalid.append(check)
    return [sorted(valid), sorted(invalid)]
def get_play(board, new_board):
    line_get = []
    row_get = []
    ans = ''
    for line in range(15):
        for row in range(15):
            if board[line][row] != new_board[line][row]:
                line_get.append(line)
                row_get.append(row)
                ans += new_board[line][row]
    if len(line_get) != len(set(line_get)) or len(line_get + row_get) == 2:
        down = 0
    elif len(row_get) != len(set(row_get)):
        down = 1
    return [line_get[0], row_get[0], down, ans]
def play(row,col,down,tiles,board):
    valid_check, new_board = place_tiles(row,col,down,tiles,board)
    word_lst_copy = get_all_words(board)
    word_lst = get_all_words(new_board)
    if valid_check:
        score = 0
        for checker in word_lst[1]:
            if checker not in word_lst_copy[1]:
                return -1
        for i in word_lst[0]:
            if i in word_lst_copy[0]:
                word_lst_copy[0].remove(i)
            else:
                for char in i:
                    score += get_value(char)
        if len(tiles) >= 7:
                score += 50
        return score
    return -1
def best_play(tiles,board):
    max, max_row, max_col, down = -1, -1, -1, -1
    for row in range(15):
        for col in range(15):
            score = play(row,col,0,tiles,board)
            if score > max:
                max, max_row, max_col, down = score, row, col, 0
                max = score
            score = play(row,col,1,tiles,board)
            if score > max:
                max, max_row, max_col, down = score, row, col, 1
    return [max, max_row, max_col, down]

00142: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1290, 'const': 502, 'code+const': 1792}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid = []
    invalid = []
    for i in board:
        text_row = ''
        for e in i:
            if 'A' <= e <= 'Z' or 'a' <= e <= 'z':
                text_row += e
            else:
                text_row += ' '
        for j in text_row.split(' '):
            if len(j) > 0:
                if is_valid(j) == True:
                    valid.append(j)
                elif len(j) > 1:
                    invalid.append(j)
    for a in range(len(board)):
        text_col = ''
        for b in range(len(board)):
            if 'A' <= board[b][a] <= 'Z' or 'a' <= board[b][a] <= 'z':
               text_col += board[b][a]
            else:
                text_col += ' '
        for c in text_col.split(' '):
            if len(c) > 0:
                if is_valid(c) == True:
                    valid.append(c)
                elif len(c) > 1:
                    invalid.append(c)
    return [sorted(valid),sorted(invalid)]
def get_play(board, new_board):
    row = []
    column = []
    words = ''
    for i in range(len(board)):
        for j in range(len(board)):
            if board[i][j] != new_board[i][j]:
                row.append(i)
                column.append(j)
                words += new_board[i][j]
    if len(words) == 1:
        x = 0
    else:
        if row[0] == row[1]:
            x = 0
        else:
            x = 1
    return [row[0],column[0],x,words.upper()]
def play(row,col,down,tiles,board) :
    valid,new_board = place_tiles(row,col,down,tiles,board)
    if valid == True:
        words = get_all_words(board)[0]
        new_words = get_all_words(new_board)[0]
        invalid_new_words = get_all_words(new_board)[1]
        if len(invalid_new_words) == 0:
            different = new_words
            for a in words:
                if a in new_words:
                    different.remove(a)
            score = 0
            for b in different:
                if is_valid(b) == True:
                    for c in b:
                        score += get_value(c)
            if len(tiles) >= 7:
                score += 50
            return score
        else:
            return int(-1)      
    else:
        return int(-1)
def find_repeat(repeatlist,value,a,b):
    count = 0
    repeatvalue = []
    nextvalue = []
    for i in repeatlist:
        if i[a] == value:
            count += 1
            repeatvalue.append(i)
            nextvalue.append(i[b])
    if len(nextvalue) == 0:
        nextvalue = -1
    else:
        nextvalue = min(nextvalue)
    return [count,repeatvalue,nextvalue]
def best_play(tiles,board):
    maxscorelist = []
    for i in range(15):
        for j in range(15):
            x = 0
            score = play(i,j,x,tiles,board)
            maxscorelist.append([score,i,j,x])
            x = 1
            score = play(i,j,x,tiles,board)
            maxscorelist.append([score,i,j,x])
    maxscore = (sorted(maxscorelist))[-1][0]
    if maxscore != -1:
        count,repeatvalue,nextvalue = find_repeat(maxscorelist,maxscore,0,1)
        if count != 0:
            count,repeatvalue,nextvalue = find_repeat(repeatvalue,nextvalue,1,2) 
            if count != 0:
                count,repeatvalue,nextvalue = find_repeat(repeatvalue,nextvalue,2,3) 
                if count != 0:
                    count,repeatvalue,nextvalue = find_repeat(repeatvalue,nextvalue,3,1) 
                    return repeatvalue[0]
                else:
                    return repeatvalue[0]
            else:
                return repeatvalue[0]
        else:
            return repeatvalue[0]
    else:
        return [-1,-1,-1,-1]

00143: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 927, 128]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 1620, 1926, -1]
test_play_150.0
[139]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_20.0IndexError('list index out of range')
[]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 2462, 'const': 453, 'code+const': 2915}
check_import({'allowable': ['math']}): none
def get_row_words(board): 
    keep = []
    for i in range(len(board)):
        word_row = [0]
        c = 0
        while word_row[-1] != '':
            word = ''
            for e in range(c, len(board[i])-1, 1):
                if board[i][e] != '' and board[i][e+1] != '':
                    if e == len(board[i])-2:
                        word += board[i][e] + board[i][e+1]
                        c = e
                    else:
                        word += board[i][e]
                elif board[i][e] != '' and board[i][e+1] == '':
                    word += board[i][e]
                    c = e+1
                    break
            if c == e: 
                word_row.append(word)
                word_row.append('')
            else: word_row.append(word)
        word_row.remove('')
        word_row.remove(0)
        for n in word_row:
            keep.append(n.upper())
    for e in range(len(keep)):
        if '' in keep:
            keep.remove('')
    real_keep = []
    for e in keep:
        if len(e) >1:
            real_keep.append(e)
    return real_keep
def get_col_words(board):
    keep = []
    for i in range(len(board[0])):
        word_col = [0]
        c = 0
        while word_col[-1] != '':
            word = ''
            for e in range(c, len(board)-1, 1):
                if board[e][i] != '' and board[e+1][i] != '':
                    if e == len(board)-2:
                        word += board[e][i] + board[e+1][i]
                        c = e
                    else:
                        word += board[e][i]
                elif board[e][i] != '' and board[e+1][i] == '':
                    word += board[e][i]
                    c = e+1
                    break
            if c == e: 
                word_col.append(word)
                word_col.append('')
            else: word_col.append(word)
        word_col.remove('')
        word_col.remove(0)
        for n in word_col:
            keep.append(n.upper())
    for e in range(len(keep)):
        if '' in keep:
            keep.remove('')
    real_keep = []
    for e in keep:
        if len(e) >1:
            real_keep.append(e)
    return real_keep
def get_all_words(board):
    valid_words = []
    invalid_words = []
    row = get_row_words(board)
    col = get_col_words(board)
    for e in row:
        if is_valid(e):
            valid_words.append(e)
        else:invalid_words.append(e)
    for e in col:
        if is_valid(e):
            valid_words.append(e)
        else:invalid_words.append(e)
    valid_words.sort()
    invalid_words.sort()
    alll = [valid_words,invalid_words]
    return alll
def get_play(board, new_board):
    row_word = []
    col_word = []
    r = []
    c = []
    for i in range(len(board)):
        w = ''
        for j in range(len(board[i])):
            if new_board[i][j] != board[i][j]:
                w += new_board[i][j]
                r += [i,j,0]
        if w != '':
            row_word.append(w)
    for j in range(len(board[0])):
        w = ''
        for i in range(len(board)):
            if new_board[i][j] != board[i][j]:
                w += new_board[i][j]
                c += [i,j,1]
        if w != '':
            col_word.append(w)
    if len(row_word) > len(col_word):
        d = []
        d += c[:3] + col_word
        return d
    elif len(col_word) > len(row_word):
        d = []
        d += r[:3] + row_word
        return d
    elif len(col_word) == len(row_word):
        d = []
        d += r[:3] +row_word
        return d
def play(row,col,down,tiles,board):
    new_board = place_tiles(row,col,down,tiles,board)[1]
    old_valid, old_invalid = get_all_words(board)
    new_valid, new_invalid = get_all_words(new_board)
    keep_valid, keep_invalid = [],[]
    for e in new_valid:
        if e not in old_valid:
            keep_valid.append(e)
        elif e in old_valid:
            c = 0
            n = 0
            for i in old_valid:
              if e == i:
               n += 1
            for i in new_valid:
              if e == i:
                c += 1
            if c != n:
              keep_valid.append(e)
              break
    for e in new_invalid:
        if e not in old_invalid:
            keep_invalid.append(e)
    score = 0
    bingo = False
    for e in keep_valid:
        for ch in e:
            score += get_value(ch)
    if len(tiles) > 6:
        bingo = True
    if bingo:
        score += 50
    if len(keep_invalid) > 0:
        score = -1
    return  score
def play2(row,col,down,tiles,board):
    new_board = place_tiles(row,col,down,tiles,board)[1]
    old_valid, old_invalid = get_all_words(board)
    new_valid, new_invalid = get_all_words(new_board)
    keep_valid, keep_invalid = [],[]
    for e in new_valid:
        if e not in old_valid:
            keep_valid.append(e)
        elif e in old_valid:
            c = 0
            n = 0
            for i in old_valid:
              if e == i:
               n += 1
            for i in new_valid:
              if e == i:
                c += 1
            if c != n:
              keep_valid.append(e)
              break
    for e in new_invalid:
        if e not in old_invalid:
            keep_invalid.append(e)
    return  keep_valid,keep_invalid               
def best_play(tiles,board):
    place = []
    row = []
    col = []
    for i in range(len(board)):
        for j in range(len(board[i])): 
            valid = place_tiles(i,j,0,tiles,board)[0]
            if valid:
                if len(play2(i,j,0,tiles,board)[0])!=0:
                    if is_valid(play2(i,j,0,tiles,board)[0][0]):
                        score = play(i,j,0,tiles,board)
                        row += [[-score,i,j,0]]
            valid = place_tiles(i,j,1,tiles,board)[0]
            if valid:
                if len(play2(i,j,1,tiles,board)[0])!=0:
                    if is_valid(play2(i,j,1,tiles,board)[0][0]):
                        score = play(i,j,1,tiles,board)
                        col += [[-score,i,j,1]]
            place += row + col
    place.sort()
    place[0][0] *= -1
    place = place[0]
    if place[0] == -1:
        return [-1,-1,-1,-1]
    return place

00144: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
 
 
 
 
 
 
 I
ICE C
 
 
 
 
 J
 U
 
JUD 
 
 
 
 
I 
N INFSIVE
 
 
 
 
 
 
M 
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
 
M 
A 
L 
E 
A 
T 
E MALEATE
 
 
 
 
 
J 
U JURY
 
 
 
 
 
R 
E 
W 
T REWTH
 
OLEHUNT 
 
 
R 
A 
V 
I 
S 
E 
S 
 
 
 
 
 
 RAVISES
TOGA 
 
 
 
 
 
P 
O 
Z 
 
 
 
 
 
 POZ
 
 
 
 
 
A ABAND
 
 
COYE 
 
 
 F
 O
 O
 S
 
 
 
 
FOOS 
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
 
 
 
 
 
 
X XUNT
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
 
 I
 N
 H
 E
 R
 I
INHERITANCE T
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
 
 
 
 
 
 
C 
A 
T 
 CAT
[[6, 9, 1, 'CAT']]
test_get_play_61.0
 
 
 
 
 
 
C 
 CT
[[6, 7, 1, 'CT']]
test_get_play_71.0
 
 
 
 C
 O
 M
 
COMDER 
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
 
 
 
 
 
 
AT A
[[6, 6, 0, 'AT']]
test_get_play_91.0
 
 
 
 
 
 
M 
[[6, 7, 0, 'M']]
test_get_play_101.0
H 
E 
P 
A 
T 
I 
C 
S HEPATICS
 
MAILS 
 
 
 
 
 
 
 ARREAR
 E
 A
EASIED S
 
 
 
 
 
 
 S
 A
 H
 I
 W
 A
 L
SAHIWAL 
 
 
 
M 
I 
C 
R 
O 
L 
O 
G 
I 
E 
S MICROLOGIES
 
 
 
 
 
 
 
 G
 A
 S
 
 
 
 
GAS 
 
 
 
 
 
 GOORY
 
 
 
 
 
 
 
 S
 H
 I
SHIPS P
 
 
M 
A 
L 
E 
F 
I 
C 
E 
 
 MALEFICE
D 
O 
O 
L 
A 
N 
 
 
 
 
 DOOLAN
 
 
 
 
P 
O 
G 
E 
Y 
 POGEY
A 
G 
R 
O 
S 
 
 
 
 
 
 
 
 
 
 AGROS
 
 
 TONIEST
 
 SLICES
 C
 R
 
 O
CRONY N
 
 
 
 
 
 
 
D 
I 
X 
I 
T 
 
 
 DIXIT
 
 
 
 
 PINS
 ARED
GRAFT 
 
 
 
 
 
 
 
 
 
 M
 O
 
MO 
 
 
 
 
 CAB
 
 
 
 
 
 
 
 
 
 
 
B 
E BEL
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_140.0
[8, 20, 26, 25-1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1630, 'const': 721, 'code+const': 2351}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    use,notuse=[],[]
    for i in range(len(board)):
        row,col='',''
        for j in range(len(board)):
            if board[i][j]!='':row+=board[i][j]
            else : row+=' '
            if board[j][i]!='':col+=board[j][i]
            else : col+=' '
        for m in row.split():
            if is_valid(m) : use.append(m)
            elif len(m)>=2 : notuse.append(m)
        for n in col.split():
            if is_valid(n) : use.append(n)
            elif len(n)>=2 : notuse.append(n)
    return [sorted(use),sorted(notuse)]
def get_play(board, new_board):
    copy=copy_board(make_board())
    for i in range(15):
        for j in range(15):
            if board[i][j]!=new_board[i][j]:
                copy[i][j]=new_board[i][j]
    word,charcount='',0
    for i in range(15):
        for j in range(15):
            if copy[i][j]!='':charcount+=1
    for i in range(15):
        row,col,allcol='','',''
        for j in range(15):
            if copy[i][j]!='':
                row+=copy[i][j]
            if copy[j][i]!='':
                col+=copy[j][i]
                allcol+=copy[j][i]
            else : allcol+='_'
        print(row,col)
        if charcount==1 and row!='':
            return [i,copy[i].index(row),0,row]
        elif len(row)>1 : return [i,copy[i].index(row[0]),0,row]
        elif len(col)>1 : return [allcol.find(col[0]),i,1,col]
def play(row,col,down,tiles,board):
    if place_tiles(row,col,down,tiles,board)[0]==False:
        return -1
    else:
        new_board=place_tiles(row,col,down,tiles,board)[1]
        oldword=word_pos(board)[0]
        newword=word_pos(new_board)[0]
        word=[]
        for i in newword:
            if i in oldword: oldword.remove(i)
            else:
                word.append(i[0])
        if word==[]:return -1
        score=0
        for i in word:
            for letter in i:
                score+=get_value(letter)
        if len(tiles)>=7 : score+=50
        return score
def best_play(tiles,board):
    scorelist=[]
    for i in range(15):
        for j in range(15):
            for k in range(2):
                if play(i,j,k,tiles,board)!=-1 and word_pos(place_tiles(i,j,k,tiles,board)[1])[1]==[]: scorelist.append([play(i,j,k,tiles,board),i,j,k])
    if scorelist==[]: return [-1,-1,-1,-1]
    else:
        scorelist.sort()
    result=[]
    for i in scorelist:
        if i[0] == scorelist[-1][0]:
            return i
def word_pos(board):
    use,notuse=[],[]
    wordr,wordc='',''
    checkr,checkc=True,True
    mr,nr,mc,nc=0,0,0,0
    for i in range(15):
        for j in range(15):
            if board[i][j]!='':
                if checkr :
                    mr,nr=i,j
                    checkr=False
                wordr+=board[i][j]
            if board[i][j]=='' or j==14:
                if len(wordr)>1 and is_valid(wordr):use.append([wordr,mr,nr,0])
                elif len(wordr)>1 and not is_valid(wordr):notuse.append([wordr,mr,nr,0])
                wordr,mr,nr,checkr='',0,0,True
            if board[j][i]!='':
                if checkc :
                    mc,nc=j,i
                    checkc=False
                wordc+=board[j][i]
            if board[j][i]=='' or j==14:
                if len(wordc)>1 and is_valid(wordc):use.append([wordc,mc,nc,1])
                elif len(wordc)>1 and not is_valid(wordc):notuse.append([wordc,mc,nc,1])
                wordc,mc,nc,checkc='',0,0,True       
    return [sorted(use),sorted(notuse)]

00145: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 780, 'const': 298, 'code+const': 1078}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  word=[]
  invalid=[]
  valid=[]
  add=""
  eat=""
  for i in range(15):
    for a in range(15):
      if board[i][a]=="":
        word.append(add)
        add=""
      else:
        add+=board[i][a]
      if board[a][i]=="":
        word.append(eat)
        eat=""
      else:
        eat+=board[a][i]
    if eat !="":
      word.append(eat)
      eat=""
    if add !="":
      word.append(add)
      add=""
  for i in word:
      if is_valid(i):
        valid.append(i)
      elif len(i)>=2:
        invalid.append(i)
  valid.sort()
  invalid.sort()
  return [valid,invalid]
def get_play(board, new_board):
  cat=""
  position=[]
  count=0
  for i in range(15):
    if board[i]!=new_board[i]:
      count+=1
      for a in range(15):
        if board[i][a]!=new_board[i][a]:
          cat+=new_board[i][a]
          if len(cat)==1:
            position+=[i,a]
  if count==1:
    down=0
  else:
    down=1
  return position+[down,cat]
def play(row,col,down,tiles,board):
  youth=place_tiles(row,col,down,tiles,board)
  diff=[]
  c=get_all_words(board)[0]
  b=0
  if youth[0]==True:
    a=get_all_words(youth[1])
    if a[1]==[]:
      for i in c:
        if i in a[0]:
          a[0].remove(i)
      for x in a[0]:
        for y in x:
          b+=get_value(y)
      if len(tiles)>=7:
        b+=50
      return b
  return -1
def best_play(tiles,board):
  score=[-1,-1,-1,-1]
  for i in range(15):
    for a in range(15):
      for x in range(2):
        hat=play(i,a,x,tiles,board)
        if hat>score[0]:
          score=[hat,i,a,x]
  return score

00146: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 924, 'const': 334, 'code+const': 1258}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    r=[[],[]]
    for i in range(15):
      s=""
      for j in range(15):
        if  board[i][j]!="":
          s+=board[i][j]
        else:
          s+=" "
      for e in s.split():
        if is_valid(e):
          r[0].append(e)
        elif len(e)>1:
          r[1].append(e)
    for i in range(15):
      s=""
      for j in range(15):
        if  board[j][i]!="":
          s+=board[j][i]
        else:
          s+=" "
      for e in s.split():
        if is_valid(e):
          r[0].append(e)
        elif len(e)>1:
          r[1].append(e)
    r[0].sort()
    r[1].sort()
    return r
def get_play(board, new_board):
    l=[]
    s=""
    for i in range(15):
      for j in range(15):
        if board[i][j] != new_board[i][j]:
          l.append([i ,j])
          s+=new_board[i][j]
    if len(l)==1:
      d=0
    else:  
      if l[1][0]==l[0][0]:
        d=0
      elif l[1][1]==l[0][1]:
        d=1
    return [l[0][0],l[0][1],d,s]
def play(row,col,down,tiles,board):
    s=0
    t,new=place_tiles(row,col,down,tiles,board)
    a=get_all_words(board)
    b=get_all_words(new)
    for e in b[0]:
      if e not in a[0]:
        for r in e:
          s+=get_value(r)
      else: a[0].remove(e)
    if len(tiles)>=7:
      s+=50
    if t == False:
      return -1
    if len(b[1])!=0:
      return -1
    return s
def best_play(tiles,board):
    l=[]
    for i in range(15):
      for j in range(15):
        for d in range(2):
          if play(i,j,d,tiles,board) != -1:
            l.append([-1*play(i,j,d,tiles,board),i,j,d])
    l.sort()
    if len(l)==0:
      return [-1,-1,-1,-1]
    l[0][0]*=-1
    return l[0]

00147: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 746, 'const': 312, 'code+const': 1058}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  v = [[],[]]
  for i in range(15):
    a = ''
    for j in range(15):
      cur = board[i][j]
      if cur != '':
        a += cur
      if len(a) >= 2 and (cur == '' or j == 14):
        v[is_valid(a)].append(a)
        a = ''
      elif cur == '' :
        a = ''
    a = ''
    for j in range(15):
      cur = board[j][i]
      if cur != '':
        a += cur
      if len(a) >= 2 and (cur == '' or j == 14):
        v[is_valid(a)].append(a)
        a = ''
      elif cur == '' :
        a = ''
  return list(reversed(list(map(sorted,v))))
def get_play(board, new_board):
  d = 0
  _i = 0
  _j = 0
  t = ''
  for i in range(15):
    for j in range(15):
      if board[i][j] != new_board[i][j]:
        if _i != 0 or _j != 0:
          if _j == j:
            d = 1
        else:
          _i = i
          _j = j
        t += new_board[i][j]
  return [_i,_j,d,t]
def play(row,col,down,tiles,board):
  correct,wrong = get_all_words(board)
  i,board2 = place_tiles(row,col,down,tiles,board)
  correct2,wrong2 = get_all_words(board2)
  if not i:
    return -1
  if wrong2 != wrong:
    return -1
  output = 50 if len(tiles) > 6 else 0
  for i in correct:
    if i in correct2:
      correct2.remove(i)
  for i in correct2:
    for j in i:
      output += get_value(j)
  return output
def best_play(tiles,board):
  max_score = -1
  row, col, dow = -1, -1, -1
  for a in range(15):
    for b in range(15):
      for c in range(2):
        score = play(a, b, c, tiles, board)
        if score > max_score:
          max_score = score
          row = a
          col = b
          dow = c
  out = [max_score, row, col, dow]
  return out

00148: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1134, 'const': 360, 'code+const': 1494}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    all_words=""
    for i in range (len(board)):
        for j in range (len(board[0])):
            if board[i][j] == "":
                all_words += " "
            else : all_words += board[i][j]
        all_words += " "
    for j in range (len(board[0])):
        for i in range (len(board)):
            if board[i][j] == "":
                all_words += " "
            else : all_words += board[i][j]
        all_words += " "
    all_words=all_words.upper()
    all_words=all_words.split()
    valid=[]
    invalid=[]    
    for ch in all_words:
        if ch != " " and (len(ch)>=2):
            if is_valid(ch) : valid.append(ch)
            else : invalid.append(ch)
    return [sorted(valid),sorted(invalid)]
def get_play(board, new_board):
    diffx=""
    out=False
    for i in range (len(board)):
        for j in range (len(board[0])):
            if board[i][j] != new_board[i][j] :
                for a in range (j,len(board[0])):
                    if board[i][a] != new_board[i][a]: diffx += new_board[i][a]
                out=True
            if out : break
        if out : break
    diffy=""
    out=False
    for l in range (len(board[0])):
        for k in range (len(board)):
            if board[k][l] != new_board[k][l] :
                for a in range (k,len(board)):
                    if board[a][l] != new_board[a][l]: diffy += new_board[a][l]
                out=True
            if out : break
        if out : break
    diffx,diffy=diffx.upper(),diffy.upper()
    if len(diffx) >= len(diffy) : return [i,j,0,diffx]
    else : return [k,l,1,diffy]
def play(row,col,down,tiles,board):
    point=0
    p=place_tiles(row,col,down,tiles,board)
    newboard=p[0],p[1]
    po=get_all_words(board)  
    pn=get_all_words(newboard[1])
    if not newboard[0] : return -1
    if len(pn[1]) != 0 : return -1
    if len(get_play(board,newboard[1])[3]) >= 7 : point += 50
    for ch in pn[0]:
        if ch in po[0]:
            po[0].remove(ch)
        else:
            for c in ch :
                point += get_value(c)
    return point
def best_play(tiles,board):
    max=play(0,0,0,tiles,board)
    row,col,down=0,0,0
    for i in range (len(board)):
        for j in range (len(board[0])):
            score=play(i,j,0,tiles,board)
            if max < score:
                max = score
                row,col,down=i,j,0
            score=play(i,j,1,tiles,board)
            if max < score:
                max = score
                row,col,down=i,j,1
    if max == -1 : return [-1, -1, -1, -1]
    return [max,row,col,down]

00149: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0
[49-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1494, 'const': 386, 'code+const': 1880}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  val, inval = [], []
  check1, check2 = '', ''
  all_word = []
  for rows in range(len(board)):  
    for columns in range(len(board[0])):
      letter = board[rows][columns]       
      if letter != '':
        check1 += letter  
        if columns == 14:
          if len(check1) >= 2: 
            all_word.append(check1)
          check1 = '' 
      else:
        if len(check1) >= 2:
          all_word.append(check1)
        check1 = ''
  for columns in range(len(board[0])):  
    for rows in range(len(board)):
      letter2 = board[rows][columns]
      if letter2 != '':
        check2 += letter2
        if rows == 14:
          if len(check2) >= 2:
            all_word.append(check2)
          check2 = ''       
      else:
        if len(check2) >= 2:
          all_word.append(check2)
        check2 = ''
  for word in all_word:
    tf = is_valid(word)
    if tf == True:
      val.append(word)
    else:
      inval.append(word)
  val.sort()
  inval.sort()   
  return [val, inval]
def get_play(board, new_board):
  tiles = ''
  for rows in range(len(board)):
    for columns in range(len(board[0])):
      if board[rows][columns] != new_board[rows][columns]:
        if tiles == '':
          ro = rows
          col = columns
        tiles += new_board[rows][columns]  
  for columns in range(col+1, len(board)): 
    if board[ro][columns] != new_board[ro][columns]:                         
      down = 0                                       
  for rows in range(ro+1, len(board)): 
    if board[rows][col] != new_board[rows][col]:                           
      down = 1                                    
  if len(tiles) == 1:
    down = 0
  return [ro, col, down, tiles]
def play(row,col,down,tiles,board):
  [val_place, new_board] = place_tiles(row,col,down,tiles,board)
  [v_w_ob, iv_w_ob] = get_all_words(board)
  [v_w_nb, iv_w_nb] = get_all_words(new_board)
  old_board_word = v_w_ob + iv_w_ob  
  new_board_word = v_w_nb + iv_w_nb  
  newword = []
  copy_old = old_board_word[::1]  
  for words in new_board_word:
    if words in copy_old:         
      copy_old.remove(words)   
    else:
      newword.append(words)
  validword = []
  for word in newword:    
    if is_valid(word) == True:
      validword.append(word)
  bingo = False   
  if len(tiles) >= 7:
    bingo = True
  score = 0
  for w in validword:  
    sc_eachword = 0
    for letter in w:
      sc_eachletter = get_value(letter)
      sc_eachword += sc_eachletter
    score += sc_eachword
  if score == 0:
    score = -1
  if bingo == True:
    score += 50
  return score
def best_play(tiles,board):
  check_board = copy_board(board)
  pos = []
  for row in range(len(board)):      
    for col in range(len(board[0])):
      val_place = place_tiles(row,col,0,tiles,board)[0]
      if val_place == True:
        pos.append([row, col, 0])
  for col in range(len(board[0])):  
    for row in range(len(board)):
      val_place = place_tiles(row,col,1,tiles,board)[0]
      if val_place == True:
        pos.append([row, col, 1])
  pos_word_valid = []
  for [r, c, d] in pos:              
    check_board = place_tiles(r, c, d, tiles, check_board)[1]
    [v, iv] = get_all_words(check_board)
    check_board = board
    if iv == []:                  
      pos_word_valid.append([r, c, d])
  pos_word_valid.sort()
  if pos_word_valid != []:   
    lst = [] 
    for p in pos_word_valid:
      score = play(p[0], p[1], p[2], tiles, board)
      lst.append( [-score, p[0], p[1], p[2]] )
    lst.sort()        
    lst2 = [[-s, r, c, d] for [s, r, c, d] in lst]
    board = place_tiles(lst[0][1], lst[0][2], lst[0][3], tiles, board)[1]
    return [lst2[0][0], lst[0][1], lst[0][2], lst[0][3]]
  else:
    return [-1, -1, -1, -1]

00150: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1118, 'const': 348, 'code+const': 1466}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  x = [] 
  y = [] 
  z = [] 
  for n in range(15) : 
    letter = ''
    for t in range(15) :
      if board[n][t] != '' :
          letter = letter + board[n][t]
          if t != 14 :
            if board[n][t+1] == '' and len(letter) >= 2 :
              x.append(letter)
              letter = ''          
            if board[n][t+1] == '' and len(letter) < 2:
              letter = ''
          elif t == 14 :
            if len(letter) >= 2 :
              x.append(letter)
  for t in range(15) : 
    letter = ''
    for n in range(15) :
      if board[n][t] != '' :
          letter = letter + board[n][t]
          if n != 14 :
            if board[n+1][t] == '' and len(letter) >= 2 :
              x.append(letter)
              letter = ''          
            if board[n+1][t] == '' and len(letter) < 2:
              letter = ''
          elif n == 14 :
            if len(letter) >= 2 :
              x.append(letter)
  x.sort()
  for a in x :
    if is_valid(a) == True :
      y.append(a)
    else :
      z.append(a)
  return [y,z]
def get_play(board, new_board):
  row = []
  col = [] 
  down = 1
  letter = ''
  for i in range(15) :
    for n in range(15) :
      if board[i][n] != new_board[i][n] :
        row.append(i) 
        col.append(n)
        letter = letter + new_board[i][n]
  if len(letter) > 1 :
    if col[0] != col[1] :
      down = 0 
  if len(letter) == 1 :
    down = 0
  return [row[0],col[0],down,letter]
def play(row,col,down,tiles,board):
  score = 0
  bonus = 0
  old_valid = get_all_words(board)[0]
  new_valid = get_all_words(place_tiles(row,col,down,tiles,board)[1])[0]
  word = []
  letter = []
  for i in new_valid :
    if i not in old_valid :
      word.append(i)
    else :
      old_valid.remove(i)
  for n in word :
    letter += [k for k in n]
  for i in letter :
    score += get_value(i)
  if len(letter) == 0 :
    return -1
  if len(tiles) >= 7 :
    bonus = 50
  if place_tiles(row,col,down,tiles,board)[0] == False :
    return -1
  if get_all_words(place_tiles(row,col,down,tiles,board)[1])[1] != [] or score == 0:
    return -1
  return score + bonus
def best_play(tiles,board):
  row = -1
  col = -1
  down = -1
  score = -1
  for i in range(15) :
    for n in range(15) :
      for b in [0,1] :
        if play(i,n,b,tiles,board) > score :
          row = i
          col = n
          down = b
          score = play(i,n,b,tiles,board)
  return [score,row,col,down]

00151: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_40.0
[[['CONNERS', 'UNWITS', 'VILDE', 'CONNERS', 'ZOO'], ['FEWZ']]]
test_get_all_words_50.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'LIAM', 'ONIGIRI']]]
test_get_all_words_60.0
[[['QINFY', 'INFLATER', 'FMONEY', 'YANE', 'UTPE', 'PEQIN', 'YUPT', 'INFLYATER', 'MONEYUP'], []]]
test_get_all_words_70.0
[[['MANGIERT', 'RETAINS', 'MEGI', 'ATIN', 'MANAGIER', 'GIME', 'INA', 'RETAINS'], []]]
test_get_all_words_80.0
[[['SIFATT', 'ITERANTH', 'RFETAINSH', 'UFERANITE', 'STAIRED', 'FEH', 'SIT', 'ITERANT', 'FERNAES', 'REI', 'ATTREI',
   'NARETAINS', 'TSI', 'SIF',
   'STAIRED', 'TI', 'URANITEH'],
  []]]
test_get_all_words_90.0
[[['OXYPHEAD', 'AD', 'AD', 'BRAINBUTWAZOSHINEG', 'PDIERM', 'DOD', 'DORM', 'DOM', 'ADOM', 'LDOM', 'DIOM', 'DSOM', 'DOFM',
   'DOHM', 'DORMI', 'DSO', 'ED', 'ED',
  'EJACULATING', 'DLOD', 'MI', 'MI', 'MOD', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXIYPHENBUTAZONE', 'YPIER', 'PREQUALIFIED', 'NOUM', 'BRAXINWASHING',
   'UMYE',
   'ZOOT', 'OM', 'EJACULATING'],
  []]]
test_get_all_words_100.0
[[['TRATA', 'GIARK', 'JCALP', 'XUFOOT', 'FUGINTERNEDO', 'SITHGING', 'FOOTGYVE', 'HOCALPK', 'ARKIF', 'INTUEREENSED', 'ITRIALED',
   'TOJA',
   'OXJIDSVE', 'MUN', 'OXIFDS', 'SITHINGYVE', 'HTOCK', 'FUGITO', 'ITRAT', 'JTRIVALED', 'AATUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0UnboundLocalError("local variable 'i' referenced before assignment")
[]
test_play_21.0
[-1]
test_play_30.0UnboundLocalError("local variable 'i' referenced before assignment")
[]
test_play_40.0UnboundLocalError("local variable 'i' referenced before assignment")
[]
test_play_50.0UnboundLocalError("local variable 'i' referenced before assignment")
[]
test_play_60.0UnboundLocalError("local variable 'i' referenced before assignment")
[]
test_play_70.0UnboundLocalError("local variable 'i' referenced before assignment")
[]
test_play_80.0UnboundLocalError("local variable 'i' referenced before assignment")
[]
test_play_90.0UnboundLocalError("local variable 'i' referenced before assignment")
[]
test_play_100.0UnboundLocalError("local variable 'i' referenced before assignment")
[]
test_play_110.0UnboundLocalError("local variable 'i' referenced before assignment")
[]
test_play_120.0UnboundLocalError("local variable 'i' referenced before assignment")
[]
test_play_130.0UnboundLocalError("local variable 'i' referenced before assignment")
[]
test_play_140.0UnboundLocalError("local variable 'i' referenced before assignment")
[]
test_play_150.0UnboundLocalError("local variable 'i' referenced before assignment")
[]
test_best_play_10.0UnboundLocalError("local variable 'i' referenced before assignment")
[]
test_best_play_20.0UnboundLocalError("local variable 'i' referenced before assignment")
[]
test_best_play_30.0UnboundLocalError("local variable 'i' referenced before assignment")
[]
test_best_play_40.0UnboundLocalError("local variable 'i' referenced before assignment")
[]
test_best_play_50.0UnboundLocalError("local variable 'i' referenced before assignment")
[]
bytecount: {'code': 2082, 'const': 674, 'code+const': 2756}
check_import({'allowable': ['math']}): none
def add_elements(d_list,s_list):
    for ch in s_list:
        if ch not in d_list:
            d_list.append(ch)
def get_letters_fromrow(board,r):
    return board[r]
def get_letters_fromco(board,co):
    l = []
    for r in board:
        l.append(r[co])
    return l
def get_words_fromletters(l):
    mod_l = list(l)
    for i in range(len(mod_l)):
        if mod_l[i] == '':
            mod_l[i] = ' '
    text = ''.join(mod_l)
    w = text.split()
    true_words = []
    false_words = []
    for word in w:
        if len(word) >= 2:
            if is_valid(word):
                true_words.append(word)
            else:
                false_words.append(word)
    return[true_words, false_words]
def get_words_fromco(board,co):
    l = get_letters_fromco(board,co)
    return get_words_fromletters(l)
def get_words_fromrows(board,row):
    l = board[row]
    return get_words_fromletters(l)
def diff_letters(letter1,letter2):
    diff_letter = ['']*len(letter1)
    for i in range(len(letter1)):
        a = letter1[i]
        b = letter2[i]
        if a != b:
            diff_letter[i] = b
    return diff_letter
def diff_row(b1,b2):
    nrows = len(b1)
    diff_rows = []
    for i in range(nrows):
        l1= get_letters_fromrow(b1, i)
        l2= get_letters_fromrow(b2, i)
        if l1 != l2:
            diff_rows.append(i)
    return diff_rows
def diff_col(b1,b2):
    nco = len(b1[0])
    diff_cos = []
    for k in range(nco):
        l1 = get_letters_fromco(b1, k)
        l2 = get_letters_fromco(b2, k)
        if l1 != l2:
            diff_cos.append(k)
    return diff_cos
def diff_letters_fromrow(b1,b2,r):
    l1 = get_letters_fromrow(b1,r)
    l2 = get_letters_fromrow(b2,r)
    return diff_letters(l1,l2)
def diff_letters_fromco(b1,b2,co):
    l1 = get_letters_fromco(b1,co)
    l2 = get_letters_fromco(b2, co)
    return diff_letters(l1,l2)
def diff_text(l1,l2):
    diff_l = diff_letters(l1,l2)
    return ''.join(diff_l)
def diff_text_fromrow(b1,b2,r):
    l1 = get_letters_fromrow(b1, r)
    l2 = get_letters_fromrow(b2, r)
    return diff_text(l1,l2)
def diff_text_fromco(b1,b2,co):
    l1 = get_letters_fromco(b1,co)
    l2 = get_letters_fromco(b2,co)
    return diff_text(l1,l2)
def word_index(all,ind):
    words = []
    words.append(all[ind])
    ix= ind-1
    while i>= 0:
        l = all[i]
        if l != '':
            words.insert(0,l)
        else:
            break
        i -= 1
    ix = ind+1
    while i < len(all):
        l = all[i]
        if l != '':
            words.append(l)
        else:
            break
        i += 1
    return ''.join(words)
def x_word(b,r,co):
    row_l = get_letters_fromrow(b,r)
    return word_index(row_l,co)
def y_word(b,r,co):
    co_l = get_letters_fromco(b,co)
    return word_index(co_l,r)
def word_scr(w):
    if not is_valid(w):
        return -1
    score = 0
    for l in w:
        score += get_value(l)
    return score
def total_w_scr(w):
    total_scr = 0
    for word in w:
        scr = word_scr(word)
        if scr != -1:
            total_scr += scr
        else:
            return -1
    return total_scr
def get_word_x(b1,b2,r,co):
    get_x = []
    xword=  x_word(b2,r,co)
    if len(xword) >= 2:
        get_x.append(xword)
    r_letters = diff_letters_fromrow(b1,b2,r)
    for k in range(len(r_letters)):
        if r_letters[k] != '':
            yword= y_word(b2,r,k)
            if len(yword) >=2:
                get_x.append(yword)
    return get_x
def get_word_y(b1,b2,r,co):
    get_y = []
    yword = y_word(b1,r,co)
    if len(yword) >= 2:
        get_y.append(yword)
    co_letters = diff_letters_fromco(b,b2,co)
    for i in range(len(co_letters)):
        if co_letters[i] != '':
            xword = x_word(b2, i ,co)
            if len(xword) >= 2:
                get_y.append(xword)
    return get_y
def get_all_words(board):
    true_word = []
    false_word = []
    rows = len(board)
    columns = len(board[0])
    for k in range(rows):
        t_word,f_word = get_words_fromrows(board, k)
        add_elements(true_word,t_word)
        add_elements(false_word, f_word)
    for i in range(columns):
        t_word,f_word = get_words_fromco(board, i)
        add_elements(true_word,t_word)
        add_elements(false_word, f_word)
    return [true_word, false_word]
def get_play(board, new_board):
    diff_row_idx = diff_row(board, new_board)
    diff_co_idx = diff_col(board, new_board)
    r = diff_row_idx[0]
    co = diff_co_idx[0]
    if len(diff_co_idx) == len(diff_row_idx) == 1:
        d = 0
        t = new_board[r][co]
    elif len(diff_row_idx) == 1:
        d = 0
        t = diff_text_fromrow(board, new_board,r)
    else:
        d = 1
        t = diff_text_fromco(board, new_board,co)
    return [r,co,d,t]
def play(row,col,down,tiles,board):
    placed_d, new_board = place_tiles(row,col,down,tiles,board)
    if placed_d:
        w = []
        if down == 0:
            w = get_word_x(board,new_board,row,col)
        elif down == 1:
            w = get_word_y(board,new_board,row,col)
        scr = total_w_scr(w)
        if scr == -1:
            return -1
        if len(tiles) >= 7:
            scr += 50
        return scr
    return -1
def best_play(tiles,board):
    p = []
    rows = len(board)
    cos = len(board[0])
    for i in range(rows):
        for j in range(cos):
            down = 0
            scr1 = play(i,j,down,tiles,board)
            p.append([-scr1,i,j,down])
            down = 1
            scr2 = play(i,j,down,tiles, board)
            p.append([-scr2, i,j,down])
    if len(p) > 0:
        p.sort()
        scr, r, co, down = p[0]
        scr = -scr
        if scr != 1:
            return[scr,r,co,down]
    return [-1,-1,-1,-1]

00152: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, False0, 'ICE'], [7, 4, False0, 'JUD'], [4, 5, True1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, True1, 'MALEATE'], [5, 6, True1, 'JURY'], [5, 8, True1, 'REWTH'], [1, 8, False0, 'OLEHUNT'],
 [2, 14, True1, 'RAVISES'], [0, 10, False0, 'TOGA'], [5, 13, True1, 'POZ'], [5, 5, True1, 'ABAND'],
 [2, 10, False0, 'COYE'], [10, 2, False0, 'FOOS']]
test_get_play_31.0
[[6, 6, True1, 'XUNT']]
test_get_play_41.0
[[7, 1, False0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, True1, 'CAT']]
test_get_play_61.0
[[6, 7, True1, 'CT']]
test_get_play_71.0
[[7, 3, False0, 'COMDER']]
test_get_play_81.0
[[6, 6, False0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, True1, 'HEPATICS'], [1, 3, False0, 'MAILS'], [7, 6, True1, 'ARREAR'], [2, 0, False0, 'EASIED'],
 [13, 6, False0, 'SAHIWAL'], [3, 13, True1, 'MICROLOGIES'], [14, 7, False0, 'GAS'],
 [7, 5, True1, 'GOORY'],
 [10, 7, False0, 'SHIPS'], [2, 11, True1, 'MALEFICE'], [0, 10, True1, 'DOOLAN'],
 [4, 9, True1, 'POGEY'],
 [0, 14, True1, 'AGROS'], [3, 2, True1, 'TONIEST'], [9, 1, True1, 'SLICES'],
 [4, 0, False0, 'CRONY'],
 [7, 14, True1, 'DIXIT'], [11, 4, True1, 'PINS'], [5, 0, True1, 'ARED'],
 [0, 1, False0, 'GRAFT'], [12, 9, False0, 'MO'],
 [6, 4, True1, 'CAB'], [11, 12, True1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 924, 'const': 292, 'code+const': 1216}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid = []
    invalid = []
    for i in range(15):
        word = ''
        for j in range(15):
            if board[i][j] != '':
                word += board[i][j]
            if board[i][j] == '' or j == 14:
                if len(word) > 1:
                    if(is_valid(word)): valid.append(word.upper())
                    else: invalid.append(word.upper())
                word = ''
    for j in range(15):
        word = ''
        for i in range(15):
            if board[i][j] != '':
                word += board[i][j]
            if board[i][j] == '' or i == 14:
                if len(word) > 1:
                    if(is_valid(word)): valid.append(word)
                    else: invalid.append(word)
                word = ''
    valid.sort()
    invalid.sort()
    return [valid, invalid]
def get_play(board, new_board):
    pos_list = []
    for i in range(15):
        for j in range(15):
            if(board[i][j] != new_board[i][j]):
                pos_list.append((i,j))
    if(len(pos_list) == 1):
        (y,x) = pos_list[0]
        return [y, x, 0, new_board[y][x]]
    else:
        pos_list.sort()
        down = (pos_list[1][1] == pos_list[0][1])
        word = ''
        for (y,x) in pos_list:
            word += new_board[y][x]
        return [pos_list[0][0], pos_list[0][1], down, word]
def play(row,col,down,tiles,board):
    new_board = copy_board(board)
    [res,new_board] = place_tiles(row,col,down,tiles,new_board)
    if res == False: return -1
    [valid,invalid] = get_all_words(new_board)
    if(len(invalid) > 0): return -1
    [old, old2] = get_all_words(board)
    for i in old:
        if(i in valid):
            valid.remove(i)
    total = 0
    if(len(tiles)>=7): total += 50
    for i in valid:
        total += sum(get_value(j) for j in i)
    return total
def best_play(tiles,board):
    [score,row,col,down] = [-1,-1,-1,-1]
    for i in range(15):
        for j in range(15):
            for k in range(2):
                res = play(i,j,k,tiles,board)
                if res > score:
                    [score,row,col,down] = [res,i,j,k]
    return [score,row,col,down]

00153: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1206, 'const': 479, 'code+const': 1685}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  ans = []
  valid = []
  invalid =[]
  word = ""
  for i in range(15):
    for j in range(15):
      if 'A' <= board[i][j] <= 'Z':
        word += board[i][j]
        if j == 14:
          if len(word) >= 2:
            if is_valid(word) == True:
              valid.append(word)
            elif is_valid(word) == False:
              invalid.append(word)
          word = ""
      else:
        if len(word) >= 2:
          if is_valid(word) == True:
            valid.append(word)
          elif is_valid(word) == False:
            invalid.append(word)
        word = ""
  for i in range(15):
    for j in range(15):
      if 'A' <= board[j][i] <= 'Z':
        word += board[j][i]
        if j == 14:
          if len(word) >= 2:
            if is_valid(word) == True:
              valid.append(word)
            elif is_valid(word) == False:
              invalid.append(word)
          word = ""
      else:
        if len(word) >= 2:
          if is_valid(word) == True:
            valid.append(word)
          elif is_valid(word) == False:
            invalid.append(word)
        word = ""
  valid.sort()
  invalid.sort()
  ans.append(valid)
  ans.append(invalid)
  return ans
def get_play(board, new_board):
  a,b,c,d,e = 20,20,20,20,20
  word = ""
  for i in range(15):
    for j in range(15):
      if  board[i][j] != new_board[i][j]:
        word += str(new_board[i][j])
        c = j
        d = i
        if a == 20:
          a = i
          b = j
        elif d == a and c != b:
          e = 0
        elif d!= a and c == b:
          e = 1
      if len(word) == 1:
        e = 0
  return [a,b,e,word]
def play(row,col,down,tiles,board):
  word = ""
  ans = 0
  new_board = place_tiles(row,col,down,tiles.upper(),board)[1]
  get_all_word_list = get_all_words(board)
  get_all_word_list_new = get_all_words(new_board)
  for e in get_all_word_list[0]:
    if e in get_all_word_list_new[0]:
      get_all_word_list_new[0].remove(e)
  if get_all_word_list_new[0] == [] or len(get_all_word_list_new[1]) != 0:
    return -1
  else:
    for e in get_all_word_list_new[0]:
      for j in e:
        ans += get_value(j)
    if len(tiles) >= 7:
      ans += 50
    return ans
def best_play(tiles,board):
  row = -1
  col = -1
  down = -1
  score = -1
  for i in range(15):
    for j in range(15):
      for k in range(2):
        if place_tiles(i,j,k,tiles,board)[0]:
          point = play(i,j,0,tiles,board)
          if int(play(i,j,1,tiles,board)) > point and int(play(i,j,1,tiles,board)) > score :
            row = i
            col = j
            down = 1
            score = int(play(i,j,1,tiles,board))
          elif int(play(i,j,0,tiles,board)) > score:
            row = i
            col = j
            down = 0
            score = int(play(i,j,0,tiles,board))
  final = [score,row,col,down]
  return final

00154: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_10.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_get_all_words_20.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_get_all_words_30.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_get_all_words_40.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_get_all_words_50.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_get_all_words_60.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_get_all_words_70.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_get_all_words_80.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_get_all_words_90.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_get_all_words_100.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_get_play_10.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_get_play_20.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_get_play_30.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_get_play_40.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_get_play_50.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_get_play_60.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_get_play_70.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_get_play_80.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_get_play_90.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_get_play_100.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_play_10.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_play_20.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_play_30.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_play_40.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_play_50.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_play_60.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_play_70.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_play_80.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_play_90.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_play_100.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_play_110.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_play_120.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_play_130.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_play_140.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_play_150.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_best_play_10.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_best_play_20.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_best_play_30.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_best_play_40.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
test_best_play_50.0ImportError("cannot import name \'T\' from \'zmq.sugar.context\' (C:\\\\Users\\\\somch\\\\AppData\\\\Roaming\\\\Python\\\\Python37\\\\site-packages\\\\zmq\\\\sugar\\\\context.py)")
[]
bytecount: {'code': 1852, 'const': 437, 'code+const': 2289}
check_import({'allowable': ['math']}): [[('zmq.sugar.context', 1)]]
from zmq.sugar.context import T
def get_all_words(board):
    list1 = [[],[]]
    list2 = []
    list3 = []
    list4 = []
    for i in range(15):
      sumx = 0
      sumy = 0
      if len(list4) <= 1:
        list4 = []
      else:
        list3.append(''.join(list4))
        list4 = []
      if len(list2) <= 1:
        list2 = []
      else:
        list3.append(''.join(list2))
        list2 = []
      for j in range(15):
        if board[i][j] != '':
          sumx = sumx + 1
          list2.append(board[i][j])
        else:
          sumx = 0
        if sumx == 0 and len(list2) > 1:
          list3.append(''.join(list2))
          list2 = []
        if board[i][j] == '':
          list2 = []
        if board[j][i] != '':
          sumy = sumy + 1
          list4.append(board[j][i])
        else:
          sumy = 0
        if sumy == 0 and len(list4) > 1:
          list3.append(''.join(list4))
          list4 = []
        if board[j][i] == '':
          list4 = []
        if i == 14 and j == 14:
          if len(list2) > 1:
            list3.append(''.join(list2))
          if len(list4) > 1:
            list3.append(''.join(list4))
    for i in list3:
      if is_valid(i) == True:
        list1[0].append(i)
      else:
        list1[1].append(i)
    list1[0].sort()
    list1[1].sort()
    return list1
def get_play(board, new_board):
    listpoint = []
    sumx = ''
    for y in range(15):
      for x in range(15):
        if board[x][y] != new_board[x][y]:
          sumx = sumx + new_board[x][y]
          listpoint.append([x,y])
    list1 = listpoint
    if len(list1) == 1:
      updown = 0
    elif len(list1) > 1:
      if list1[0][0] == list1[1][0]:
        updown = 0
      else:
        updown = 1
    list1[0].append(updown)
    list1[0].append(sumx)
    return list1[0]
def play(row,col,down,tiles,board):
    copyboard = copy_board(board)
    if copyboard[row][col] != '':  
      return -1    
    board = place_tiles(row,col,down,tiles,board)[1]
    list1 = get_all_words(copyboard)
    list2 = get_all_words(board)
    if list2[1] != []:
      return -1    
    for i in list1[0]:
      if i in list2[0]:
        list2[0].remove(i)
    for i in list1[1]:
      if i in list2[1]:
        list2[0].remove(i)
    sumx = 0
    for i in list2[0]:
      for j in i:
        sumx = sumx + get_value(j)
    if len(tiles) >= 7:
      sumx = sumx + 50
    if sumx == 0:
      sumx = -1
    return sumx
def best_play(tiles,board):
    if board == make_board():
      maxs = 0
      for i in range(15):
        for j in range(15):
          if play(i,j,0,tiles,board) > maxs and place_tiles(i,j,0,tiles,board)[0]:
            a,b = i,j
            maxs = play(i,j,0,tiles,board)
            down = 0
            break
          if play(i,j,1,tiles,board) > maxs and place_tiles(i,j,1,tiles,board)[0]:
            a,b = i,j
            maxs = play(i,j,1,tiles,board)
            down = 1
            break
      return [maxs,a,b,down]
    else:
      list1 = []
      list2 = []
      for i in range(15):
        for j in range(15):
          if place_tiles(i,j,0,tiles,board)[0] == True:
            list1.append(play(i,j,0,tiles,board))
          else:
            list1.append(-1)
          if place_tiles(i,j,1,tiles,board)[0] == True:
            list2.append(play(i,j,1,tiles,board))
          else:
            list2.append(-1)
      listscore = []
      for i in range(len(list1)):
        if list1[i] != -1 or list2[i] != -1:
          listscore.append(max(list1[i],list2[i]))
      if listscore != []:
        score = max(listscore)
      else:
        score = -1
      if score in list1:
        down = 0
      elif score in list2:
        down = 1
      if down == 0:
        for i in range(len(list1)):
          if score == list1[i]:
            tamnang = i
            break
      else:
        for i in range(len(list2)):
          if score == list2[i]:
            tamnang = i
            break
      row = tamnang//15
      col = tamnang%15
      if not (place_tiles(row,col,0,tiles,board)[0] == True or place_tiles(row,col,1,tiles,board)[0] == True):
        score = -1
        row = -1
        col = -1
        down = -1
      if len(tiles)>=7 and score == 50:
        score = -1
        row = -1
        col = -1
        down = -1
      elif len(tiles)<7 and score == 0:
        score = -1
        row = -1
        col = -1
        down = -1
      if score == -1:
        row = -1
        col = -1
        down = -1
      return [score,row,col,down]

00155: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1286, 'const': 290, 'code+const': 1576}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    a=[]
    b=''
    for i in range(len(board[0])):
        b=''
        for j in range(len(board)):
            if board[i][j]=='' and b != '':
                a.append([b])
                b = ''
            elif board[i][j] != '':
                b += board[i][j]
        if b != '':
          a.append([b])
    d=''
    for j in range(len(board)):
        d=''
        for i in range(len(board[0])):
            if board[i][j]=='' and d != '':
                a.append([d])
                d = ''
            elif board[i][j] != '':
                d += board[i][j]
        if d != '':
          a.append([d])
    c=[]
    for i in a:
        for k in i:
            if len(k)>=2:
                c.append(k)
    c.sort()
    right=[]
    wrong=[]
    for i in c:
        if is_valid(i):
          right.append(i)
        else: wrong.append(i)
    return [right,wrong]
def get_play(board, new_board):
    a=''
    c=[]
    for i in range(len(board[0])):
        for j in range(len(board)):
            if board[i][j] != new_board[i][j]:
                a+= new_board[i][j]
                c.append([i,j])
    case = 1
    for i in range(len(c)-1):
        if c[i][1] != c[i+1][1]:
            case = 0
    if len(a) == 1:
      case = 0
    return [c[0][0],c[0][1],case,a]
def play(row,col,down,tiles,board):
    word = get_all_words(board)
    new_board = place_tiles(row,col,down,tiles,board)[1]
    new_word = get_all_words(new_board)
    ans_right = []
    ans_wrong = []
    score = 0
    ans_right = diff(word[0],new_word[0])
    ans_wrong = diff(word[1],new_word[1])
    if len(ans_wrong)!=0:
      return -1
    for i in ans_right:
        for j in i:
            score += get_value(j)
    if len(tiles) >= 7:
        score += 50
    return score
def best_play(tiles,board):
    ans = []
    for i in range(len(board)):
        for j in range(len(board[0])):
            for k in range(2):
                valid,boards = place_tiles(i,j,k,tiles,board)
                a,b=get_all_words(boards)
                if valid and len(b) == 0 :
                    ans.append([-play(i,j,k,tiles,board),i,j,k])
                else:ans.append([1,-1,-1,-1])
    ans.sort()
    for i in ans:
        i[0] = - i[0]
    return ans[0]
def diff(a,b):
    dicta = {}
    for i in a:
        if i not in dicta:
            dicta[i] = 1
        else: dicta[i] += 1
    dictb = {}
    for i in b:
        if i not in dictb:
            dictb[i] = 1
        else: dictb[i] += 1
    for i in dictb:
        if i in dicta:
            dictb[i] -= dicta[i]
    ans = []
    for i in dictb:
        for k in range(dictb[i]):
            ans.append(i)
    return ans

00156: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[411]
test_play_130.0
[59]
test_play_140.0
[8, 1620, 1926, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1704, 'const': 402, 'code+const': 2106}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    memory = [[],[]]
    shortMem = ''
    for g in range(15):
        shortMem += ' '
        for h in range(15):
            hchar = board[g][h]
            if hchar == '':
                shortMem += ' '
            else:
                shortMem += hchar
    shortMem = shortMem.strip().split()
    for k in shortMem:
        if is_valid(k) and len(k) > 1:
            memory[0].append(k)
        elif not is_valid(k) and len(k) > 1:
            memory[1].append(k)
    shortMem = ''
    for i in range(15):
        shortMem += ' '
        for j in range(15):
            char = board[j][i]
            if char == '':
                shortMem += ' '
            else:
                shortMem += char
    shortMem = shortMem.strip().split()
    for k in shortMem:
        if is_valid(k) and len(k) > 1:
            memory[0].append(k)
        elif not is_valid(k) and len(k) > 1:
            memory[1].append(k)
    memory[0].sort()
    memory[1].sort()
    return memory
def get_play(board, new_board):
    horizontalMemory = []
    verticalMemory = []
    shortMem = ''
    count = 0
    result = [0,0,0,'']
    for i in range(15):
        shortMem += ' '
        for j in range(15):
            char = board[i][j]
            newChar = new_board[i][j]
            if (newChar != char) and (count == 0):
                shortMem += newChar
                count += 1
                result[0] = i
                result[1] = j
            elif newChar == '' and char == '':
                shortMem += ' '
            elif newChar != char:
                count += 1
                shortMem += newChar
    shortMem = shortMem.strip().split()
    for k in shortMem:
        if len(k) > 1 and count > 1:
            horizontalMemory.append(k)
        elif count == 1 and len(k) == 1:
            horizontalMemory.append(k)
    shortMem = ''
    for x in range(15):
        shortMem += ' '
        for y in range(15):
            char = board[y][x]
            newChar = new_board[y][x]
            if newChar == '' and char == '':
                shortMem += ' '
            elif newChar != char:
                shortMem += newChar
    shortMem = shortMem.strip().split()
    for z in shortMem:
        if len(z) > 1 and count > 1:
            verticalMemory.append(z)
    if len(horizontalMemory) != 0 and len(verticalMemory) == 0:
        result[3] = horizontalMemory[0]
        result[2] = 0
    elif len(verticalMemory) != 0 and len(horizontalMemory) == 0:
        result[3] = verticalMemory[0]
        result[2] = 1
    return result
def play(row,col,down,tiles,board):
    validPlacement, new_board = place_tiles(row,col,down,tiles,board)
    if not validPlacement:
        return -1
    [valids, _] = get_all_words(board)
    [newValids, newInvalids] = get_all_words(new_board)
    newWords = []
    memoryBefore = {}
    memoryAfter = {}
    score = 0
    if len(newInvalids) == 0:
        for k in valids:
            if k not in memoryBefore:
                memoryBefore[k] = 1
            elif k in memoryBefore:
                memoryBefore[k] += 1
        for k in newValids:
            if k not in memoryAfter:
                memoryAfter[k] = 1
            elif k in memoryBefore:
                memoryAfter[k] += 1
        memoryDifference = {x: memoryAfter.get(x, 0) - memoryBefore.get(x, 0) for x in set(memoryBefore).union(memoryAfter)}
        for i in memoryDifference:
            if memoryDifference[i] < 0:
                memoryDifference[i] = 0
            if memoryDifference[i] > 0:
                for _ in range(memoryDifference[i]):
                    newWords.append(i)
    else:
        return -1
    for k in newWords:
        for l in k:
            score += letter_value[l.lower()]
    if len(get_play(board,new_board)[3]) >= 7:
        score += 50
    return score
def best_play(tiles,board):
    score_memory = []
    index_memory = []
    for down in range(2):
        for row in range(15):
            for col in range(15):
                score_memory.append(play(row,col,down,tiles,board))
                index_memory.append([row,col,down])
    sorted_index = [x for _, x in sorted(zip(score_memory,index_memory))][::-1]
    sorted_score = sorted(score_memory)[::-1]
    max_score = max(sorted_score)
    if max_score == -1:
        return [-1,-1,-1,-1]
    bestIndex = sorted(sorted_index[:sorted_score.count(max_score)])[0]
    bestIndex.insert(0,max_score)
    return bestIndex

00157: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 1827, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 120, 1426, 8-1]
test_play_150.0
[2839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1256, 'const': 366, 'code+const': 1622}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid_words = [] ; invalid_words = [] ; words = ' ' 
  for i in range(15) :
      words += ' '  
      for j in range(15) :
          if board[i][j] != '' :
              words += board[i][j]
          else :
            words += ' '
  for j in range(15) :
      words += ' '  
      for i in range(15) :
          if board[i][j] != '' :
              words += board[i][j]
          else :
            words += ' '
  sp_word = words.split(" ")
  for w in sp_word :
    if len(w) >= 2:
      if is_valid(w) == True :
        valid_words.append(w)
        valid_words.sort() 
      else:
        invalid_words.append(w)
        invalid_words.sort()
  return [valid_words, invalid_words]
def get_play(board, new_board):
  list_x = [] ; st_tiles = "" 
  for i in range(15) :
    for j in range(15) :
      if board[i][j] != new_board[i][j] :
        list_x.append([i,j])
        st_tiles += new_board[i][j]
  down = 0
  if len(st_tiles) == 1 : down = 0
  else:
    for i in range(len(list_x) - 1) :
      x1,x2 = list_x[i] ; y1,y2 = list_x[i+1]
      if x1 != y1 : down = 1
      elif x2 != y2 : down = 0
  return [list_x[0][0] , list_x[0][1] , down ,st_tiles ]
def play(row,col,down,tiles,board):
  new_word = [] ; same_word = []
  newboard = place_tiles(row,col,down,tiles,board)  
  word_new_board = get_all_words(newboard[1])  
  word_old_board = get_all_words(board) 
  for i in range(len(word_new_board[0])) :
    amounts = 0
    for j in range(len(word_new_board[0])) :
      wni = word_new_board[0][i]
      wnj = word_new_board[0][j]
      if  wni == wnj : amounts += 1 
    if amounts >= 2 : same_word.append([wni, amounts]) 
  for i in range(len(word_new_board[0])) :
    new = word_new_board[0][i]
    if new not in word_old_board[0] :
      new_word.append(word_new_board[0][i])
  if new_word == [] :
    if len(same_word) >= 2 :
      new_word.append(same_word[0][0])
    else : return -1
  all_score = 0
  for i in range(len(new_word)) :
    for j in range(len(new_word[i])) :
      if len(new_word[i][j]) > 1 :
        for k in range(len(new_word[i][j])) :
          all_score += letter_value[new_word[i][j][k].lower()]
      else : 
         all_score += letter_value[new_word[i][j].lower()]
  if len(tiles) >= 7 : all_score += 50 
  return all_score
def best_play(tiles,board):
  score_all = [] ; max_score_all = []
  for row in range(15) :
    for col in range(15):
      for down in range(2):
        new_board = place_tiles(row , col ,down, tiles , board)
        validTF = new_board[0]
        if validTF == True : 
          va_in = get_all_words(new_board[1]) 
          if va_in[1] == [] :
            score = play(row , col ,down , tiles , board)
            score_all.append([score , row , col , down])
          else :
            score_all.append([-1,-1,-1,-1])     
  mx_score = max(score_all)[0]
  for i in range(len(score_all)):
    if score_all[i][0] == mx_score:
      max_score_all = (score_all[i])
      break 
  return max_score_all

00158: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_10.0Illegal imports: ['sys']
[]
test_get_all_words_20.0Illegal imports: ['sys']
[]
test_get_all_words_30.0Illegal imports: ['sys']
[]
test_get_all_words_40.0Illegal imports: ['sys']
[]
test_get_all_words_50.0Illegal imports: ['sys']
[]
test_get_all_words_60.0Illegal imports: ['sys']
[]
test_get_all_words_70.0Illegal imports: ['sys']
[]
test_get_all_words_80.0Illegal imports: ['sys']
[]
test_get_all_words_90.0Illegal imports: ['sys']
[]
test_get_all_words_100.0Illegal imports: ['sys']
[]
test_get_play_10.0Illegal imports: ['sys']
[]
test_get_play_20.0Illegal imports: ['sys']
[]
test_get_play_30.0Illegal imports: ['sys']
[]
test_get_play_40.0Illegal imports: ['sys']
[]
test_get_play_50.0Illegal imports: ['sys']
[]
test_get_play_60.0Illegal imports: ['sys']
[]
test_get_play_70.0Illegal imports: ['sys']
[]
test_get_play_80.0Illegal imports: ['sys']
[]
test_get_play_90.0Illegal imports: ['sys']
[]
test_get_play_100.0Illegal imports: ['sys']
[]
test_play_10.0Illegal imports: ['sys']
[]
test_play_20.0Illegal imports: ['sys']
[]
test_play_30.0Illegal imports: ['sys']
[]
test_play_40.0Illegal imports: ['sys']
[]
test_play_50.0Illegal imports: ['sys']
[]
test_play_60.0Illegal imports: ['sys']
[]
test_play_70.0Illegal imports: ['sys']
[]
test_play_80.0Illegal imports: ['sys']
[]
test_play_90.0Illegal imports: ['sys']
[]
test_play_100.0Illegal imports: ['sys']
[]
test_play_110.0Illegal imports: ['sys']
[]
test_play_120.0Illegal imports: ['sys']
[]
test_play_130.0Illegal imports: ['sys']
[]
test_play_140.0Illegal imports: ['sys']
[]
test_play_150.0Illegal imports: ['sys']
[]
test_best_play_10.0Illegal imports: ['sys']
[]
test_best_play_20.0Illegal imports: ['sys']
[]
test_best_play_30.0Illegal imports: ['sys']
[]
test_best_play_40.0Illegal imports: ['sys']
[]
test_best_play_50.0Illegal imports: ['sys']
[]
bytecount: {'code': 1204, 'const': 326, 'code+const': 1530}
check_import({'allowable': ['math']}): [[('sys', 1)]]
from sys import exc_info
def get_all_words(board):
  valid = []
  invalid = []  
  for i in range(len(board)):
    word = ''
    for j in range(len(board)):
      if board[i][j] == '':
        if len(word)>1:
          if is_valid(word):
            valid.append(word) 
          else:
            invalid.append(word)
        word = '' 
      else:
        if j == 14:
          word += board[i][j]
          if len(word)>1:
            if is_valid(word):
              valid.append(word) 
            else:
              invalid.append(word)
        else:
          word += board[i][j]
  for i in range(len(board)):
    word = ''
    for j in range(len(board)):
      if board[j][i] == '':
        if len(word)>1:
          if is_valid(word):
            valid.append(word)
          else:
            invalid.append(word)
        word = '' 
      else:
        if j == 14:
          word += board[j][i]
          if len(word)>1:
            if is_valid(word):
              valid.append(word) 
            else:
              invalid.append(word)
        else:
          word += board[j][i]
  valid.sort()
  invalid.sort()
  return [valid,invalid]
def get_play(board, new_board):
  down = ''
  found = False
  for i in range(len(board)):
    for j in range(len(board)):
      if board[i][j] != new_board[i][j]:
        col = j
        row = i
        found = True
        break
    if found: break
  for i in range(len(board)):
    for j in range(len(board)):
      if board[i][j] != new_board[i][j]:
        colfinal = j
        rowfinal = i
  if colfinal == col:
    tiles = 1
  else:
    tiles = 0
  for i in range(len(board)):
    for j in range(len(board)):
      if board[i][j] != new_board[i][j]:
        down += new_board[i][j]
  return [row,col,tiles,down]
def play(row,col,down,tiles,board):
  valid,new_board = place_tiles(row,col,down,tiles,board)
  score = 0
  sup = []
  if valid:
    valid_wordfirst,invalid_wordfirst = get_all_words(board)
    valid_word,invalid_word = get_all_words(new_board)
    for voc in valid_word:
      if voc not in valid_wordfirst:
        sup.append(voc)
      else:
        valid_wordfirst.remove(voc)
    if len(sup) == 0:
      score = -1
    else:
      for word in sup:
        check = is_valid(word)
        if check:
          for e in word:
            score += get_value(e)
          if len(word) >=7 and len(tiles)>= 7 :
            score += 50
        else:
          if score == 0:
            score = -1
          else:
            break
  else:
    score = -1
  return score
def best_play(tiles,board):
  d = []
  c = 0
  for i in range(0,15):
    for j in range(0,15):
      for down in range(0,2):
        valid,new_board = place_tiles(i,j,down,tiles,board)
        if valid:
          d.append([play(i,j,down,tiles,board),i,j,down])
        else:
          d.append([-1,-1,-1,-1])
  d.sort()
  max_score = d[-1][0]
  for e in d:
    if e[0] == max_score:
      return e

00159: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1066, 'const': 364, 'code+const': 1430}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  word = ''
  valid_lists = []
  invalid_lists = []
  for i in range(15):
    for j in range(15):
      if get_value(board[i][j]) != -1: 
        word += board[i][j]
        if j == 14:
          word += ' '
        elif board[i][j+1] == '':
          word += ' '
  for j in range(15):
    for i in range(15):
      if get_value(board[i][j]) != -1:  
        word += board[i][j]
        if i == 14:
          word += ' '
        elif board[i+1][j] == '':
          word += ' '
  lists = sorted(word.split())
  for e in lists:
    if is_valid(e) and len(e) >= 2:
      valid_lists += [e]
    elif not is_valid(e) and len(e) >= 2:
      invalid_lists += [e]
  return [valid_lists,invalid_lists]
def get_play(board, new_board):
  tiles = ''
  pos = []
  for i in range(15):
    for j in range(15):
      if board[i][j] != new_board[i][j]:
        pos += [[i,j]]
  row = pos[0][0] ; col = pos[0][1]  
  for e in pos:
    tiles += new_board[e[0]][e[1]]
    if e[0] == pos[0][0] or len(pos) == 1:
      down = 0
    elif e[1] == pos[0][1]:
      down = 1
  return [row,col,down,tiles]
def play(row,col,down,tiles,board):
  word = get_all_words(board)[0]
  score = 0
  b = place_tiles(row,col,down,tiles,board)[1]
  valid,invalid = get_all_words(b)
  if invalid != [] or place_tiles(row,col,down,tiles,board)[0] == False:
    return -1
  if len(tiles) >= 7: score += 50
  for e in word:
    if e in valid:
      valid.remove(e)
  for e in valid:
    for c in e:
      score += get_value(c) 
  return score
def best_play(tiles,board):
  score = []
  best_score = []
  for i in range(15):
    for j in range(15):
      score.append([play(i,j,0,tiles,board), i, j, 0])
  for j in range(15):
    for i in range(15):
      score.append([play(i,j,1,tiles,board), i, j, 1])
  score.sort()
  best = score[::-1]    
  if best[0][0] == -1: return [-1,-1,-1,-1]
  for i in range(len(best)):
    if best[i][0] == best[0][0]:
      best_score.append(best[i])
    else: break
  best_score.sort()
  return best_score[0]

00160: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[9-1]
test_play_31.0
[14]
test_play_40.0
[14, 621]
test_play_50.0
[60, 572]
test_play_60.0
[60, 58-1]
test_play_70.0
[63, -14]
test_play_81.0
[62]
test_play_90.0
[11, 125, 724, 17, 859, 12]
test_play_100.0
[9, 133, 1236, 18, 12, 5973, 65, 107, 6174, 16]
test_play_110.0
[67, 61, 248, 101, 613, 7485, 411, 812, 7, 1325, 11, 7, 124, 210, 32, 12, 15, 716, 68, 56, 213, 910, 1127, 428]
test_play_120.0
[411]
test_play_130.0
[49]
test_play_140.0
[8, 820, 826, 8-1]
test_play_150.0
[839]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 1164, 'const': 412, 'code+const': 1576}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid = []
    invalid = []
    i = 0
    j = 0
    while i < len(board):
        while j < len(board):
            if board[i][j] != "":
                word = ""
                while i < 15 and j < 15 and board[i][j] != "":
                    word += board[i][j]
                    j += 1
                if len(word) > 1:
                    if is_valid(word):
                        valid.append(word)
                    else:
                        invalid.append(word)
            else:
                j += 1
        j = 0
        i += 1
    i = 0
    j = 0
    while i < len(board):
        while j < len(board):
            if board[j][i] != "":
                word = ""
                while i < 15 and j < 15 and board[j][i] != "":
                    word += board[j][i]
                    j += 1
                if len(word) > 1:
                    if is_valid(word):
                        valid.append(word)
                    else:
                        invalid.append(word)
            else:
                j += 1
        j = 0
        i += 1
    return [sorted(valid),sorted(invalid)]
def get_play(board, new_board):
    text = ""
    si = -1
    sj = -1
    down = False
    for i in range(15):
        for j in range(15):
            if board[i][j] != new_board[i][j]:
                if si == -1 and sj == -1:
                    si = i
                    sj = j
                elif i != si:
                    down = True
                text += new_board[i][j]
    return [si,sj,int(down),text]
def get_score(row,col,down,board,current_word):
    i = row
    j = col
    word = ""
    while i < 15 and j < 15 and board[i][j] != "":
        word += board[i][j]
        if down:
            i += 1
        else:
            j += 1
    score = 0
    if is_valid(word) and word not in current_word:
        score = sum([get_value(i) for i in word])
    return score
def play(row,col,down,tiles,board):
    current_word = get_all_words(board)[0]
    i = row
    j = col
    word = ""
    index = 0
    sub_score = 0
    while i < 15 and j < 15 and (index < len(tiles) or board[i][j] != ""):
        if board[i][j] == "":
            word += tiles[index]
            index += 1
        else:
            word += board[i][j]
        if down:
            k = j
            while k > 0 and board[i][k] != "":
                k -= 1
            sub_score += get_score(i,k+1,False,board,current_word)
            i += 1
        else:
            k = i
            while k > 0 and board[k][j] != "":
                k -= 1
            sub_score += get_score(k+1,j,True,board,current_word)
            j += 1
    score = -1
    if is_valid(word):
        score = sum([get_value(i) for i in word]) + sub_score
        if len(word) >= 7:
            score += 50
    return score
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00161: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_20.0
[[[], ['T', 'R', 'A', 'N', 'S', 'P', 'O', 'R', 'T', 'A', 'T', 'I', 'O', 'NS'], 'S'[]]]
test_get_all_words_30.0
[[[], ['E', 'T', 'E', 'R', 'N', 'A', 'LS', 'MUSKETEER'], []]]
test_get_all_words_40.0
[[['UCONNERS', 'UN', 'W', 'I', 'T', 'S'], ['VILDE', 'RZOO'], ['F', 'E', 'W', 'Z']]]
test_get_all_words_50.0
[[['N', 'O', 'O', 'O', 'O', 'O', 'H', 'E', 'L', 'I', 'O', 'S', 'G', 'I', 'UNOBSERVANT'], ['LI', 'A', 'R', 'R',
   'M', 'V', 'INOOOOO'],
  ['O', 'N', 'B', 'IGIRI']]]
test_get_all_words_60.0
[[[], ['QFY', 'INFLATER', 'MONEY', 'NE', 'PE', 'FQIN', 'YUT', 'Y', 'A', 'YU', 'T', 'P'], 'E'[]]]
test_get_all_words_70.0
[[[], ['M', 'AT', 'NES', 'GI', 'IN', 'MANGIE', 'R', 'RME', 'ENA', 'RET', 'A', 'I', 'NS'], 'S'[]]]
test_get_all_words_80.0
[[[]'ATT',
  ['SEH', 'IFEH', 'FERN', 'IF', 'IT', 'ITE', 'R', 'ANT', 'NAES', 'TRE', 'REI', 'RE', 'T', 'A', 'I', 'N', 'S', 'U', 'RSI',
   'A', 'N', 'SIF',
 'T', 'E', 'S', 'T', 'A', 'I', 'R', 'E', 'D', 'FTI', 'URANITE'],
 'H' []]]
test_get_all_words_90.0
[[['OAD', 'X', 'Y', 'P', 'H', 'EAD', 'NAD', 'B', 'U', 'T', 'RA', 'Z', 'O', 'INWASHIN', 'EG', 'DIM', 'DO', 'D', 'DOM',
   'DO', 'M', 'DO', 'N', 'SM', 'TDOM', 'EDOM', 'RDOM', 'SDOM'],
  ['P', 'I', 'E', 'R', 'D', 'O', 'R', 'M', 'D', 'O', 'RM', 'J', 'ADSO', 'E', 'AD', 'OED', 'EJA', 'C', 'Q',
   'I', 'ULAT', 'C', 'I', 'U', 'N', 'U', 'F', 'A', 'D', 'W', 'L', 'YG', 'L', 'O', 'A', 'D', 'A', 'MI',
   'D', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
 'T', 'N', 'O', 'F', 'O', 'HM', 'OM', 'OPACIFYING', 'GOXYPHENBUTAZONE', 'MPIER', 'PREQUALIFIED', 'UM', 'XI',
   'N', 'YE', 'D', 'N',
 'G', 'D', 'ZOOT'],
 'D', 'G'[]]]
test_get_all_words_100.0
[[['EAA', 'DARK', 'C', 'A', 'L', 'P', 'A', 'R', 'K'],
  ['FOOT', 'F', 'R', 'UGIO', 'GI', 'GYVE', 'AHOCK', 'TIF', 'INTERNED', 'ITA', 'T', 'G', 'I', 'J', 'A', 'J', 'O', 'J', 'U',
   'O', 'L', 'O', 'O', 'M', 'J', 'Y', 'O', 'O', 'I', 'R', 'VE', 'X', 'MU', 'V', 'V', 'EN', 'OXIDS', 'SI',
   'THING', 'TO', 'ETO', 'TR', 'NAT', 'TRIALE', 'D', 'N', 'S', 'I', 'T', 'H', 'I', 'UREEN', 'GS', 'SXU'],
 'F', ['JOJUO', 'LOOMJYOOI',
   'TRO']]]
test_get_play_10.0NameError("name 'j' is not defined")
[]
test_get_play_20.0NameError("name 'j' is not defined")
[]
test_get_play_30.0NameError("name 'j' is not defined")
[]
test_get_play_40.0NameError("name 'j' is not defined")
[]
test_get_play_50.0NameError("name 'j' is not defined")
[]
test_get_play_60.0NameError("name 'j' is not defined")
[]
test_get_play_70.0NameError("name 'j' is not defined")
[]
test_get_play_80.0NameError("name 'j' is not defined")
[]
test_get_play_90.0NameError("name 'j' is not defined")
[]
test_get_play_100.0NameError("name 'j' is not defined")
[]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_30.0
[-14]
test_play_40.0
[-14, -21]
test_play_50.0
[-160, -172]
test_play_60.0
[-160, -1]
test_play_70.0
[-163, -14]
test_play_80.0
[-162]
test_play_90.0
[-11, -15, -124, -17, -185, -12]
test_play_100.0
[-19, -133, -136, -18, -12, -173, -165, -17, -174, -16]
test_play_110.0
[-167, -61, -128, -11, -13, -185, -11, -12, -17, -125, -17, -14, -21, -132, -12, -15, -16, -168, -16, -13, -10, -127, -128]
test_play_120.0
[-11]
test_play_130.0
[-19]
test_play_140.0
[-18, -120, -126, -1]
test_play_150.0
[-139]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 562, 'const': 256, 'code+const': 818}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    w=""
    for i in range(15):
        w+=" "
        for j in range(15):
            if board[i][j] != "":
                w+=board[i][j]
            else:
                w+=""
    p=[[],[]]
    for k in w.split():
        if len(k)>=2:
            if is_valid(k):
                p[0]+=k
            if not is_valid(k):
                p[1]+=k
    p.sort()
    return p
    c=""
    for j in range(15):
        c+=" "
        for i in range(15):
            if board[j][i] != "":
                c+=board[j][i]
            else:
                c+=""
    l=[[],[]]
    for m in c.split():
        if len(m)>=2:
            if m in is_valid(m):
                l[0]+=m
            if m not in is_valid(m):
                l[1]+=m
    l.sort()
    return l
def get_play(board, new_board):
    h=""
    k=[]
    for i in range(15):
        if board[i][j] != new_board[i][j]:
            h+=new_board[i][j]
            k+=[j,i]
    a1,b1 = k[0]
    a2,b2 = k[-1]
    d=0
    if b1<b2:
        d=1
    return [h,k,d,""]
def play(row,col,down,tiles,board):
    return -1
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00162: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 972, 'const': 306, 'code+const': 1278}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  all_words = [[],[]]
  row_word = ''
  for i in range(len(board)):
    for j in range(len(board[0])):
      if board[i][j] != '':
        row_word += board[i][j]
      if board[i][j] == '' or j == len(board[0]) - 1:
        if len(row_word) > 1:
          if not is_valid(row_word):
            all_words[1].append(row_word)
          else:
            all_words[0].append(row_word)
        row_word = ''
  col_word = ''
  for j in range(len(board[0])):
    for i in range(len(board)):
      if board[i][j] != '':
        col_word += board[i][j]
      if board[i][j] == '' or i == len(board[0]) - 1:
        if len(col_word) > 1:
          if not is_valid(col_word):
            all_words[1].append(col_word)
          else:
            all_words[0].append(col_word)
        col_word = ''
  all_words[0].sort()
  all_words[1].sort()
  return all_words
def get_play(board, new_board):
  tiles = ''
  row,col,down = 0.5,0.5,0
  for i in range(len(board)):
    for j in range(len(board[0])):
      if board[i][j] != new_board[i][j]:
        if len(tiles) == 0:
          row = i
          col = j
          tiles += new_board[i][j]
        else:
          tiles += new_board[i][j]
        if i == row:
          down = 0
        elif j == col:
          down = 1
  return [row,col,down,tiles]
def play(row,col,down,tiles,board):
  valid,new_board = place_tiles(row,col,down,tiles,board)
  old_words = get_all_words(board)
  new_words = get_all_words(new_board)
  score = 0
  for word in new_words[0]:
    if word in old_words[0]:
      old_words[0].remove(word)
    elif word not in old_words[0]:
      for w in word:
        if get_value(w) == -1:
          valid = False
        score += get_value(w)
  if len(tiles) >= 7:
    score += 50
  if new_words[1] != []:
    valid = False
  if not valid:
    return -1
  return score
def best_play(tiles,board):
  highest = 0
  sijd = [[-1,-1,-1,-1]]
  for i in range(len(board)):
    for j in range(len(board[0])):
      for d in range(2):
        score = play(i,j,d,tiles,board)
        if score > highest:
          highest = score
          sijd = [[score,i,j,d]]
        elif score == highest:
          sijd.append([score,i,j,d])
  sijd.sort()
  return sijd[0]

00163: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_10.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 10, 'M']]
test_get_play_20.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 01, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_90.0
[[6, 7, 10, 'M']]
test_get_play_100.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 01, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 01, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 01, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 15, 24, 17, 85, -12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 1827, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 120, 1426, -1]
test_play_150.0
[2839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1452, 'const': 632, 'code+const': 2084}
check_import({'allowable': ['math']}): none
def findword(board):
    w = ""
    a = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    board1 = copy_board(board)
    for p in board1:
        for q in range(1,len(p)):
            if p[q] == '' and p[q-1] != '' and p[q-1] != '/'  :
                p[q] = "/"
    for i in board1:
        for j in range(len(i)):
            if i[j] != '':
                if j != len(i)-1:
                    w += i[j]
                else:
                    w += i[j] + "/"
    w = w.split("/")
    word = []
    for r in w:
        if len(r) > 1:
            word.append(r)
    w = "".join(word)
    return word
def get_all_words(board):
    boardre = []
    p = []
    r = []
    for j in range(len(board[0])):
        for i in board:
            p.append(i[j])
    for t in range(0,len(p),15):
        boardre.append([p[t],p[t+1],p[t+2],p[t+3],p[t+4],p[t+5],p[t+6],p[t+7],p[t+8],p[t+9],p[t+10],p[t+11],p[t+12],p[t+13],p[t+14]])
    wordho = findword(board)
    wordver = findword(boardre)
    lstw = [findword(board),findword(boardre)]
    word = []
    for w in lstw:
        for i in w:
            word.append(i)
    valid = []
    invalid = []
    for w in word:
        if is_valid(w) == True:
            valid.append(w)
        else:
            invalid.append(w)
    valid.sort()
    invalid.sort() 
    return [valid,invalid]
def get_play(board, new_board):
    w = ""
    n = []
    for p in range(len(new_board)):
        for q in range(len(new_board[p])):
            if new_board[p][q] != board[p][q]:
                w += new_board[p][q]
                n.append([p,q])
    n1,n2 = n[0]
    for p in range(len(new_board)):
        for q in range(len(new_board[p])):
            if new_board[p][q] != board[p][q]:
                if q == 14:
                    i = 1
                elif new_board[p][q+1] == '':
                    i = 1
                    break
                else:
                    i = 0
                    break
    return [n1,n2,i,w]
def play(row,col,down,tiles,board):
    validw = get_all_words(board)[0]
    v,board = place_tiles(row,col,down,tiles,board)
    gaw,gawnm = get_all_words(board)
    if gawnm != []:
        return -1
    word = []
    if v == True:
        for i in gaw:
            if i not in validw:
                word.append(i)
    else:
        return -1
    if word != []:
        w = "".join(word)
        t = 0
        for i in w:
            t += get_value(i)
        for i in word:
            if len(tiles) >= 7 and len(i) >= 7:
                t += 50
                break
        return t
    else:
        return -1
def best_play(tiles,board):
    w = []
    for row in range(15):
        for col in range(15):
            if place_tiles(row,col,0,tiles,board)[0] == True and play(row,col,0,tiles,board) != -1:
                w.append([-play(row,col,0,tiles,board),row,col,0])
            if place_tiles(row,col,1,tiles,board)[0] == True and play(row,col,1,tiles,board) != -1:
                w.append([-play(row,col,1,tiles,board),row,col,1])
    if w != []:
        w.sort()
        score,row,col,down = min(w)
        return [-score,row,col,down]
    else:
        return [-1,-1,-1,-1]

00164: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 824, 'const': 376, 'code+const': 1200}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid_word = []
  invalid_word = []
  for i in range(15):
    word_row = ''
    word_column = ''
    for k in range(15):
      if board[i][k] == '':
        word_row += ' '
      else:
        word_row += board[i][k]
      if board[k][i] == '':
        word_column += ' '
      else:
        word_column += board[k][i]
    word_in_row = word_row.split()
    word_in_column = word_column.split()
    for each_r in word_in_row:
      if is_valid(each_r):
        valid_word.append(each_r)
      else:
        if len(each_r) > 1:
          invalid_word.append(each_r)
    for each_c in word_in_column:
      if is_valid(each_c):
        valid_word.append(each_c)
      else:
        if len(each_c) > 1:
          invalid_word.append(each_c)
  valid_word.sort()
  invalid_word.sort()
  return [valid_word, invalid_word]
def get_play(board, new_board):
  missing_word = ''
  start_index = [0, 0]
  pos = 0
  start = True
  for i in range(15):
    for k in range(15):
      if board[i][k] != new_board[i][k]:
        missing_word += new_board[i][k]
        if start:
          start_index = [i, k]
          start = False
        if not start and start_index[0] == i:
          pos = 0
        elif not start and start_index[1] == k:
          pos = 1
  return start_index + [pos, missing_word]
def play(row,col,down,tiles,board):
  start_word = get_all_words(board)
  status, new_board = place_tiles(row, col, down, tiles, board)
  new_word = get_all_words(new_board)
  if not status or len(new_word[1]) != 0:
    return -1
  for word in start_word[0]:
    if word in new_word[0]:
      new_word[0].remove(word)
  added_word = new_word[0]
  score = 0
  for each in added_word:
    for ch in each:
      score += get_value(ch)
  if len(tiles) >= 7:
    score += 50
  return score
def best_play(tiles,board):
  max_score = -1
  max_row, max_col, max_down = -1, -1, -1
  for i in range(15):
    for j in range(15):
      for k in range(2):
        check = place_tiles(i, j, k, tiles, board)
        if check[0]:
          score = play(i, j, k, tiles, board)
          if score > max_score:
            max_score = score
            max_row = i
            max_col = j
            max_down = k
  return [max_score, max_row, max_col, max_down]

00165: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_90.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF',
   'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  ['UMDOM']]]
test_get_all_words_100.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED',
   'TUREENS', 'XU'],
  ['AAD', 'FUGIORITA', 'GYVEHOCK', 'JIVEGP', 'JOJUOLOOMJYOOI', 'JTTO', 'MUNIF', 'ONNL', 'RO']]]
test_get_play_10.0
[[7, 6, 10, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_20.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 10, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 10, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 10, 'COYE'], [10, 2, 10, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_40.0
[[7, 1, 10, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_80.0
[[6, 6, 10, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0
[[0, 7, 01, 'HEPATICS'], [1, 3, 10, 'MAILS'], [7, 6, 01, 'ARREAR'], [2, 0, 10, 'EASIED'],
 [13, 6, 10, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 10, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 10, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 10, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [85, 0, 1, 'ARED'], [0, 1, 10, 'GRAFT'], [12, 9, 10, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0
[50-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_40.0
[14, -21]
test_play_50.0
[60, 5072]
test_play_60.0
[60, 50-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, -15, -124, 17, 850, -12]
test_play_100.0
[9, -133, -136, -18, -12, 5073, 650, -17, 5074, -16]
test_play_110.0
[67, 5061, -128, -11, -13, 850, -11, -12, -17, -125, -17, -14, -21, -132, -12, -15, -16, 5068, 176, 173, -10, -127, -128]
test_play_120.0
[-11]
test_play_130.0
[49]
test_play_140.0
[8, -120, 826, 8-1]
test_play_150.0
[-139]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 998, 'const': 535, 'code+const': 1533}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid_words = []
  invalid_words = []
  board_a = copy_board(board)
  board_c = copy_board(board)
  for i in range(15):
    for j in range(15):
      board_c[i][j] = board[j][i]
      if board[i][j] == '':
        board_a[i][j] = '-'
        board_c[j][i] = '-'
  board_r = ["".join(e).strip('-') for e in board_a]
  board_c = ["".join(e).strip('-') for e in board_c]
  words_r = [e.split('-') for e in board_r]
  words_c = [e.split('-') for e in board_c]
  words = [e for sublist in words_r for e in sublist if len(e) >= 2]
  for sublist in words_c:
    for e in sublist:
      if len(e) >= 2:
        words.append(e.upper())
  words.sort()
  for w in words:
    if is_valid(w):
      valid_words.append(w)
    else:
      invalid_words.append(w)
  return [valid_words,invalid_words]
def get_play(board, new_board):
  stop = True
  tiles = "".join([new_board[i][j] for i in range(15) for j in range(15) if board[i][j] != new_board[i][j]])
  row = 0; col = 0
  for i in range(15):
    for j in range(15):
      if new_board[i][j] != '' and board[i][j] != new_board[i][j]:
        row = i
        col = j
        stop = False
        break
      if stop == False: break
  r = 0
  for i in range(15):
    for j in range(15):
      if board[i][j] != '':
        r = i
        break
  down = 0 if r == row or len(tiles) == 1 else 1
  return [row,col,down,tiles]
def play(row,col,down,tiles,board):
  new_board = copy_board(board)
  new_board = place_tiles(row,col,down,tiles,new_board)[1]
  words = get_all_words(new_board)[0]
  valid = True
  valid_w = []
  new_word = ''
  for w in words:
    for t in tiles.upper():
      if t not in w:
        valid = False
    valid_w.append(valid)
  if True in valid_w:
    new_word = words[valid_w.index(True)]
  score = 0
  for n in new_word:
    score += get_value(n)
  if len(tiles) >= 7:
    score += 50
  return score if score != 0 else -1
def best_play(tiles,board):
  return [-1,-1,-1,-1]

00166: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1976, 'const': 369, 'code+const': 2345}
check_import({'allowable': ['math']}): none
def get_pos(board):
  allword = []
  valid_words = []
  book = ''
  allpos = []
  c = 0
  allthing = []
  for i in range(len(board)):
    c = 0
    book = ''
    allpos = []
    for j in range(len(board[0])):
      if get_value(board[i][j])>0:
          c = c+1
          book = book+str(board[i][j])
          allpos.append(str(i)+str(j))
          cc = int(c)
          if (cc>=2) and (j==len(board[0])-1):
            allword.append(book)
            allthing.append([book,allpos])
      else:
          if c>=2:
            allword.append(book)
            allthing.append([book,allpos])
          c=0
          book = ''
          allpos = []
  c = 0
  allpos = []
  for x in range(len(board[0])):
    c = 0
    book = ''
    allpos = []
    for y in range(len(board)):
      if get_value(board[y][x])>0:
          c = c+1
          cc = int(c)
          book = book + str(board[y][x])
          allpos.append(str(y)+str(x))
          if (cc>=2) and (y==len(board[0])-1):
            allword.append(book)
            allthing.append([book,allpos])
      else:
          if c>=2:
            allword.append(book)
            allthing.append([book,allpos])
          book = ''
          c= 0
          allpos = []
  for i in allword:
    if is_valid(i):
      valid_words.append([i])
  return allthing
def get_all_words(board):
  allword = []
  valid_words = []
  invalid_words = []
  book = ''
  c = 0
  for i in range(len(board)): 
    c = 0
    book = ''
    for j in range(len(board[0])):
      if get_value(board[i][j])>0:
          c = c+1
          book = book+str(board[i][j])
          cc = int(c)
          if (cc>=2) and (j==len(board[0])-1):
            allword.append(book)
      else:
          if c>=2:
            allword.append(book)
          c=0
          book = ''
  c = 0
  for x in range(len(board[0])):
    c = 0
    book = ''
    for y in range(len(board)):
      if get_value(board[y][x])>0:
          c = c+1
          cc = int(c)
          book = book + str(board[y][x])
          if (cc>=2) and (y==len(board[0])-1):
            allword.append(book)
      else:
          if c>=2:
            allword.append(book)
          book = ''
          c= 0
  for i in allword:
    if is_valid(i):
      valid_words.append(i)
    else:
      invalid_words.append(i)
  valid_words.sort()
  invalid_words.sort()
  return [valid_words,invalid_words]
def get_play(board, new_board):
  allchar = []
  tryrow = []
  trycol = []
  down = 0
  for y in range(len(board)):
    for x in range(len(board[0])):
      if board[y][x] != new_board[y][x]:
        allchar.append(new_board[y][x])
        tryrow.append(y)
        trycol.append(x)
  tiles = ''.join(allchar)
  row = min(tryrow)
  col = min(trycol)
  if len(allchar) >1:
    if tryrow[0] == tryrow[1]:
      down = 0
    elif trycol[0] == trycol[1]:
      down = 1
  elif len(allchar) == 1:
    down = 0
  return [row,col,down,tiles]
def play(row,col,down,tiles,board):
  score = 0
  oldword = get_all_words(board)
  board1 = copy_board(board)
  new_board = place_tiles(row,col,down,tiles,board1)[1]
  old = get_all_words(board1)
  new = get_all_words(new_board)
  pold = get_pos(board1)
  pnew = get_pos(new_board)
  listans = []
  if old[1] != new[1] or new_board == board:
    score = -1
  elif old[1] == new[1]:
    for i in pnew:
      if i in pold:
        pos = pold.index(i)
        pold = pold[:pos:]+pold[pos+1::]
      else:
        listans.append(i[0])
    for i in listans:
      for j in i:
        score = score+get_value(j)
    if len(tiles) >= 7 :
      score = score+50
  return score
def best_play(tiles,board):
  allscore=  []
  for y in range(len(board)):
    for x in range(len(board[0])):
      if place_tiles(y,x,0,tiles,board)[0] == False:
        allscore.append([-1,-1,-1,-1])
      elif place_tiles(y,x,0,tiles,board)[0] == True:
        allscore.append([play(y,x,0,tiles,board),y,x,0])
  for x in range(len(board[0])):
    for y in range(len(board)):
      if place_tiles(y,x,1,tiles,board)[0] == False:
        allscore.append([-1,-1,-1,-1])
      elif place_tiles(y,x,1,tiles,board)[0] == True:
        allscore.append([play(y,x,1,tiles,board),y,x,1])
  allscore.sort()
  scoreonly = []
  for i in allscore:
    scoreonly.append(i[0])
  m = max(scoreonly)
  for i in allscore:
    if i[0] == m:
      [score,row,col,down] = i
      break
  return [score,row,col,down]

00167: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1894, 'const': 453, 'code+const': 2347}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    all_result=[]
    for i in range(0,15) : 
      word=''
      for j in range(0,15) : 
        if(board[i][j]!='') :
          word=word+board[i][j]
          if(j==14) :
            if(len(word)>=2) :
              all_result.append(word)
            break
          if(board[i][j+1]=='') :
            if(len(word)>=2) :
              all_result.append(word)
            word=''
    for i in range(0,15) : 
      word=''
      for j in range(0,15) : 
        if(board[j][i]!='') :
          word=word+board[j][i]
          if(j==14) :
            if(len(word)>=2) :
              all_result.append(word)
            break
          if(board[j+1][i]=='') :
            if(len(word)>=2) :
              all_result.append(word)
            word=''
    valid_result = []
    invalid_result=[]
    for i in all_result :
      if(is_valid(i)) :
        valid_result.append(i)
      else :
        invalid_result.append(i)
    valid_result.sort()
    invalid_result.sort()
    return [valid_result,invalid_result]
def get_play(board, new_board):
    check=1
    for i in range(0,15) :
      for j in range(0,15) :
        if(new_board[i][j]!='' and board[i][j]=='') : 
          start_i=i
          start_j=j
          check=0
          break
      if(check==0) : 
        break
    word=''
    for j in range(start_j,15) :
      if(new_board[start_i][j]!=board[start_i][j]) :
        word=word+new_board[start_i][j]
    if(len(word)>=2) :
      return [start_i,start_j,0,word]
    word=''
    for i in range(start_i,15) :
      if(new_board[i][start_j]!=board[i][start_j]) :
        word=word+new_board[i][start_j]
    if(len(word)>=2) :
      return [start_i,start_j,1,word]
    return [start_i,start_j,0,new_board[start_i][start_j]]
def get_word_score(x) :
  summary=0
  for i in x :
    summary+=get_value(i)
  return summary
def play(row,col,down,tiles,board):
  if(place_tiles(row,col,down,tiles,board)[0]==False) :
    return -1
  length_of_tiles=len(tiles)
  new_board=place_tiles(row,col,down,tiles,board)
  list_of_position=[]
  if(len(tiles)==1) :
    list_of_position.append([row,col])
  else :
    if(down==0) :
      for j in range(col,15) :
        if(len(tiles)>0) :
          if(board[row][j]=='') :
            list_of_position.append([row,j])
            if(len(tiles)==1) :
              tiles=''
              break
            tiles=tiles[1:]
    else :
      for i in range(row,15) :
        if(len(tiles)>0) :
          if(board[i][col]=='') :
            list_of_position.append([i,col])
            if(len(tiles)==1) :
              tiles=''
              break
            tiles=tiles[1:]
  """
  all_result=[]
  # check by each row เช็คตามแนวนอน
  for i in range(0,15) : #each row แต่ละแนวนอน --------------
    word=''
    is_in_position=0
    for j in range(0,15) : #แต่ละคำใน row นั้นๆ
      #if [i,j] in list_of_position :
        #is_in_position=1
      if(board[i][j]!='') :
        word=word+board[i][j]
        if(j==14) :
          if(len(word)>=2 and is_in_position==1) :
            all_result.append(word)
          break
        if(board[i][j+1]=='') :
          if(len(word)>=2 and is_in_position==1) :
            all_result.append(word)
          word=''
          is_in_position=0
  # check by each column
  for i in range(0,15) : #each column แต่ละแนวตั้ง
    word=''
    is_in_position=0
    for j in range(0,15) : #แต่ละคำใน column นั้นๆ
      if [j,i] in list_of_position :
        is_in_position=1
      if board[j][i]!='' :
        word=word+board[j][i]
        if(j==14) :
          if(len(word)>=2 and is_in_position==1) :
            all_result.append(word)
          break
        if(board[j+1][i]=='') :
          if(len(word)>=2 and is_in_position==1) :
            all_result.append(word)
          word=''
          is_in_position=0
  #return all_result"""
  all_result=[]
  board=new_board[1]
  for i in range(0,15) : 
    word=''
    is_in_position=0
    for j in range(0,15) : 
      if([i,j] in list_of_position) :
        is_in_position=1
      if(board[i][j]!='') :
        word=word+board[i][j]
        if(j==14) :
          if(len(word)>=2 and is_in_position==1) :
            all_result.append(word)
          break
        if(board[i][j+1]=='') :
          if(len(word)>=2 and is_in_position==1) :
            all_result.append(word)
          word=''
          is_in_position=0
  for i in range(0,15) : 
    word=''
    is_in_position=0
    for j in range(0,15) : 
      if([j,i] in list_of_position) :
        is_in_position=1
      if(board[j][i]!='') :
        word=word+board[j][i]
        if(j==14) :
          if(len(word)>=2 and is_in_position==1) :
            all_result.append(word)
          break
        if(board[j+1][i]=='') :
          if(len(word)>=2 and is_in_position==1) :
            all_result.append(word)
          word=''
          is_in_position=0
  scores=0
  for i in all_result :
    scores+=get_word_score(i)
    if(is_valid(i)==False) :
      return -1
  if(length_of_tiles>=7) :
    scores+=50
  return scores
def best_play(tiles,board):
  list_of_scores=[]
  for i in range(0,15) :
    for j in range(0,15) :
      if(place_tiles(i,j,0,tiles,board)[0]==True) :
        list_of_scores.append(play(i,j,0,tiles,board))
      if(place_tiles(i,j,1,tiles,board)[0]==True) :
        list_of_scores.append(play(i,j,1,tiles,board))
  maximum=max(list_of_scores)
  if(maximum==-1) :
    return [-1,-1,-1,-1]
  for i in range(0,15) :
    for j in range(0,15) :
      if(place_tiles(i,j,0,tiles,board)[0]==True and maximum==play(i,j,0,tiles,board)) :
        return[maximum,i,j,0]
      if(place_tiles(i,j,1,tiles,board)[0]==True and maximum==play(i,j,1,tiles,board)) :
        return [maximum,i,j,1]

00168: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_10.0
[[7, 6, 0, 'ICE'], [7, 64, 0, 'JUICED'], [54, 115, 1, 'INFUSIVE'], [56, 118, 10, 'INFUSIVEM']]
test_get_play_20.0
[[71, 7, 1, 'MALEATE'], [5, 46, 01, 'JAURY'], [5, 48, 01, 'JAREWTH'], [1, 18, 0, 'MOLEHUNT'],
 [62, 814, 1, 'JURYAVISES'],
 [0, -10, 0, 'TOGA'], [5, 513, 01, 'PIOZ'], [5, 45, 01, 'AJBARND'],
 [2, 210, 0, 'COYER'], [10, 92, 0, 'FOOS']]
test_get_play_30.0
[[6, 56, 01, 'EXUNT']]
test_get_play_40.0
[[7, 61, 0, 'INHERITANCE']]
test_get_play_50.0
[[76, 69, 01, 'MCANAT']]
test_get_play_60.0
[[76, 87, 1, 'CAT']]
test_get_play_70.0
[[7, 63, 0, 'COMMANDER']]
test_get_play_80.0
[[6, 56, 0, 'AT']]
test_get_play_90.0
[[76, 7, 10, 'MA']]
test_get_play_100.0
[[70, 7, 1, 'HEPATICS'], [1, 03, 0, 'MAILES'], [7, 6, 01, 'ASRREAR'], [2, 10, 0, 'EASIED'],
 [13, 126, 0, 'SAHIWAL'], [13, 123, 01, 'SAHMIWACROLOGIES'], [14, 137, 0, 'GAS'], [7, 65, 01, 'GASOORY'],
 [10, 97, 0, 'RESHIPS'], [32, 211, 1, 'MALEFICE'], [20, 10, 01, 'DOMOLAN'], [4, 39, 01, 'PALOGEY'],
 [30, 314, 01, 'MAGROS'],
 [23, 92, 1, 'STONIEST'], [9, 81, 01, 'STLICES'], [4, 30, 0, 'CROONY'],
 [7, 714, 01, 'ODIXIT'], [11, 104, 01, 'PYAINS'],
 [05, 80, 1, 'CARED'], [0, -1, 0, 'GRAFT'], [12, 119, 0, 'MO'],
 [76, 64, 01, 'CAGASB'], [11, 112, 01, 'BITEL']]
test_play_10.0TypeError("place_tiles() missing 5 required positional arguments: 'row', 'col', 'down', 'tiles', and 'board'")
[]
test_play_20.0TypeError("place_tiles() missing 5 required positional arguments: 'row', 'col', 'down', 'tiles', and 'board'")
[]
test_play_30.0TypeError("place_tiles() missing 5 required positional arguments: 'row', 'col', 'down', 'tiles', and 'board'")
[]
test_play_40.0TypeError("place_tiles() missing 5 required positional arguments: 'row', 'col', 'down', 'tiles', and 'board'")
[]
test_play_50.0TypeError("place_tiles() missing 5 required positional arguments: 'row', 'col', 'down', 'tiles', and 'board'")
[]
test_play_60.0TypeError("place_tiles() missing 5 required positional arguments: 'row', 'col', 'down', 'tiles', and 'board'")
[]
test_play_70.0TypeError("place_tiles() missing 5 required positional arguments: 'row', 'col', 'down', 'tiles', and 'board'")
[]
test_play_80.0TypeError("place_tiles() missing 5 required positional arguments: 'row', 'col', 'down', 'tiles', and 'board'")
[]
test_play_90.0TypeError("place_tiles() missing 5 required positional arguments: 'row', 'col', 'down', 'tiles', and 'board'")
[]
test_play_100.0TypeError("place_tiles() missing 5 required positional arguments: 'row', 'col', 'down', 'tiles', and 'board'")
[]
test_play_110.0TypeError("place_tiles() missing 5 required positional arguments: 'row', 'col', 'down', 'tiles', and 'board'")
[]
test_play_120.0TypeError("place_tiles() missing 5 required positional arguments: 'row', 'col', 'down', 'tiles', and 'board'")
[]
test_play_130.0TypeError("place_tiles() missing 5 required positional arguments: 'row', 'col', 'down', 'tiles', and 'board'")
[]
test_play_140.0TypeError("place_tiles() missing 5 required positional arguments: 'row', 'col', 'down', 'tiles', and 'board'")
[]
test_play_150.0TypeError("place_tiles() missing 5 required positional arguments: 'row', 'col', 'down', 'tiles', and 'board'")
[]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 1454, 'const': 242, 'code+const': 1696}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  out = [[], []]
  for row in range(len(board[0])):
    tempo = ""
    for col in range(len(board[1])):
      tempo += board[row][col]
      if col == 14 or len(board[row][col]) != 1:
        if len(tempo) > 1:
          if is_valid(tempo):
            out[0].append(tempo)
          else:
            out[1].append(tempo)  
        tempo = ""
  for col in range(len(board[0])):
    tempo = ""
    for row in range(len(board[1])):
      tempo += board[row][col]
      if row == 14 or len(board[row][col]) != 1:
        if len(tempo) > 1:
          if is_valid(tempo):
            out[0].append(tempo)
          else:
            out[1].append(tempo)
        tempo = ""
  out[0].sort()
  out[1].sort()
  return out
def get_play(board, new_board):
  out = [[], [],]
  out2 = []
  out3 = []
  for row in range(len(board[0])):
    tempo = ""
    start = row
    for col in range(len(board[1])):
      tempo += board[row][col]
      if col == 14 or len(board[row][col]) != 1:
        if len(tempo) > 1:
          if len(new_board[row][col]) != 1:
            end = row-1
          else:
            end = row
          if is_valid(tempo):
            out[0].append(tempo)
          else:
            out[1].append(tempo)  
          out2.append([start, end, 0, tempo])
        tempo = ""
  for col in range(len(board[0])):
    tempo = ""
    for row in range(len(board[1])):
      tempo += board[row][col]
      if row == 14 or len(board[row][col]) != 1:
        if len(tempo) > 1:
          if is_valid(tempo):
            if len(new_board[row][col]) != 1:
              end = row-1
            else:
              end = row
            out[0].append(tempo)
          else:
            out[1].append(tempo)
          out2.append([start, end, 1, tempo])
        tempo = ""
  for row in range(len(board[0])):
    tempo = ""
    start = row
    for col in range(len(board[1])):
      tempo += new_board[row][col]
      if col == 14 or len(new_board[row][col]) != 1:
        if len(tempo) > 1:
          if len(new_board[row][col]) != 1:
            end = row-1
          else:
            end = row
          if is_valid(tempo):
            out[0].append(tempo)
          else:
            out[1].append(tempo)  
          out3.append([start, end, 0, tempo])
        tempo = ""
  for col in range(len(board[0])):
    tempo = ""
    start = col
    for row in range(len(board[1])):
      tempo += new_board[row][col]
      if row == 14 or len(new_board[row][col]) != 1:
        if len(tempo) > 1:
          if len(new_board[row][col]) != 1:
            end = row-1
          else:
            end = row
          if is_valid(tempo):
            out[0].append(tempo)
          else:
            out[1].append(tempo)
          out3.append([start, end, 1, tempo])
        tempo = ""
  for out in out3:
    if out not in out2:
      return out
def play(row,col,down,tiles,board):
  valid,New_board = place_tiles()
  word1,word2 = get_all_words(board,New_board)
  if len(word2) == 0 :
    return  -1
  score = 0
  for word in word2:
    if word not in word1:
      for i in word:
        score += get_value(i)
    else:
      word1 -= word
    if  len(tiles) >= 7:
      score+=50   
  return score
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00169: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1102, 'const': 310, 'code+const': 1412}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  i = 0
  j = 0
  x = []
  y = []
  while i < 15:
    j = 0
    while j < 15:
      if board[i][j] != '':
        s = ''
        while j<15 and board[i][j] != '':
          s += board[i][j]
          j += 1
        if len(s) > 1:
          if is_valid(s):
            x.append(s)
          else:
            y.append(s)
      j += 1
    i += 1
  i = 0
  j = 0
  while j < 15:
    i = 0
    while i < 15:
      if board[i][j] != '':
        s = ''
        while i < 15 and board[i][j] != '':
          s += board[i][j]
          i += 1
        if len(s) > 1:
          if is_valid(s):
            x.append(s)
          else:
            y.append(s)
      i+=1
    j+=1
  return [sorted(x),sorted(y)]
def get_play(board, new_board):
  i = 0
  j = 0
  s = ''
  d = 0
  while i < 15:
    j = 0
    while j < 15:
      if board[i][j] != new_board[i][j]:
        d = 0
        x = j
        while x < 15:
          if new_board[i][x] != '':
            if board[i][x] != new_board[i][x]:
              s += new_board[i][x]
          else:
            break
          x += 1
        if len(s) < 2:
          s = ''
          d = 1
          b = i
          while b < 15:
            if new_board[b][j] != '':
              if board[b][j] != new_board[b][j]:
                s += new_board[b][j]
            else:
              break
            b += 1
        if len(s) == 1:
          d = 0
        return [i,j,d,s]
      j += 1
    i += 1
def play(row,col,down,tiles,board):
  sc = 0
  pt = place_tiles(row,col,down,tiles,board)
  if pt[0]:
    od = get_all_words(board)
    nw = get_all_words(pt[1])
    if len(nw[1]) > 0:
      return -1
    for i in od[0]:
      if i in nw[0]:
        nw[0].remove(i)
    if len(tiles) >= 7:
      sc += 50
    for i in nw[0]:
      for j in i:
        sc += get_value(j)
    return sc
  else:
    return -1
def best_play(tiles,board):
  b = 0
  ans = [-1,-1,-1,-1]
  for i in range(15):
    for j in range(15):
      sc = play(i,j,0,tiles,board)
      if sc != -1 and b < sc:
        b = sc
        ans = [sc,i,j,0]
      sc = play(i,j,1,tiles,board)
      if sc != -1 and b < sc:
        b = sc
        ans = [sc,i,j,1]
  return ans

00170: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0UnboundLocalError("local variable 'down' referenced before assignment")
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1258, 'const': 296, 'code+const': 1554}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    y = []    
    for e in board :
        a = ''
        for n in e :
            if n != '' :
                a += n
            else :
                if a != '' and len(a) > 1 :
                    y.append(a)
                a = ''
        if a != '' and len(a) > 1 :
                    y.append(a)
        a = ''
    if a != '' and len(a) > 1 :
                    y.append(a)
    a = ''
    for i in range(len(board[0])) :
        a = ''
        for j in range(len(board)) :
            if board[j][i] != '' :
                a += board[j][i]
            else :
                if a != '' and len(a) > 1 :
                    y.append(a)
                a = ''
        if a != '' and len(a) > 1 :
                    y.append(a)
        a = ''
    if a != '' and len(a) > 1 :
                    y.append(a)
    a = ''
    x = []
    z = []
    for e in y :
        if is_valid(e) == True :
            x.append(e)
        else :
            z.append(e)
    x.sort()
    z.sort()
    return [x,z]
def get_play(board, new_board):
  for i in range(len(board)) :
        if board[i] != new_board[i] :
            for k in range(i+1,len(board)) :
                if board[k] != new_board[k] :
                    down = 1
                    break
                down = 0
            row = i
            break
  for k in range(len(board[row])) :
      if board[row][k] != new_board[row][k] :
          column = k
          break
  if down == 0 :
      a = ''
      for j in range(column,len(board[row])) :
          if board[row][j] != new_board[row][j] :
              a += new_board[row][j]
      tiles = a
  else :
      a = ''
      for j in range(row,len(board)) :
          if board[j][column] != new_board[j][column]:
              a += new_board[j][column]
      tiles = a
  return [row,column,down,tiles]
def play(row,col,down,tiles,board):
    boola,new_board = place_tiles(row,col,down,tiles,board)
    old1,old2 = get_all_words(board)
    if boola == True :
        word1,word2 = get_all_words(new_board)
        for e in old1 :
            if e in word1 :
                word1.remove(e)
        a = word1
        if a == [] : return -1
        score = 0
        for e in a :
            for i in range(len(e)):
                score += get_value(e[i])
        if len(tiles) >= 7 :
            score += 50
        return score
    else : return -1
def best_play(tiles,board):
    scora = []
    for i in range(len(board)) :
        for j in range(len(board[0])) :
            for k in range(0,2) : 
                boola,new = place_tiles(i,j,k,tiles,board)
                if boola == True and get_all_words(new)[1] == []:
                    score = play(i,j,k,tiles,board)
                    if score != -1 :
                        scora.append([score,i,j,k])
    if scora == [] :
         scora.append([-1,-1,-1,-1])
    scora.sort()
    scora1 = []
    for e in scora :
        if e[0] == scora[-1][0] :
            scora1.append(e)
    scora1.sort()
    return scora1[0]

00171: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0IndexError('list index out of range')
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1000, 'const': 364, 'code+const': 1364}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    allword = []
    for i in range(15):
        cc= ''
        for j in range(15):
            if cc!='' and board[i][j] == '':
                allword.append(cc)
                cc = ''
            elif board[i][j] != '':
                cc+=board[i][j]
            if j == 14 and len(cc)>=2:               
                allword.append(cc)
                cc=''  
    for j in range(15):
        cc= ''
        for i in range(15):
            if cc!='' and board[i][j] == '':
                allword.append(cc)
                cc=''
            elif board[i][j] != '':
                cc+=board[i][j]
            if i == 14 and len(cc)>=2:               
                allword.append(cc)
                cc=''                
    word1 = []
    word22 = []
    for i in allword :
        if is_valid(i) == True :
            word1.append(i)
        else :
            if len(i) >= 2:
                word22.append(i)
    return [sorted(word1),sorted(word22)] 
def get_play(board, new_board):
    x,y,z = 0,0,1
    c = ''
    for i in range(15):
        for j in range(15):
            if board[i][j] == new_board[i][j]:
                pass
            else:
                if len(c)==0:
                    x = i
                    y = j
                    c+=new_board[i][j]
                    if board[i+1][j] != new_board[i+1][j] or board[i][j+1] == new_board[i][j+1] :
                        pass
                    else :
                        z = 0
                else:
                    c+=new_board[i][j]
    if len(c) == 1:
        z = 0          
    return [x,y,z,c]
def play(row,col,down,tiles,board):
    score = 0
    board1_get = get_all_words(board)
    valid,boards = place_tiles(row,col,down,tiles,board)
    ttword = get_all_words(boards)
    if valid == False:
        return -1
    if board1_get[1] != ttword[1] :
        return -1
    for i in ttword[0]:
        if i not in board1_get[0]:
            for w in i :
                score+= get_value(w)
        else:
            board1_get[0].remove(i)    
    if len(tiles) >= 7 :
        score+=50
    return score
def best_play(tiles,board):
    s = []
    m = 0
    for i in range(15):
        for j in range(15):
            for hh in range(2) :
                n = play(i,j,hh,tiles,board)
                if n==m :
                    s.append([n,i,j,hh])
                elif n> m :
                    s = []
                    s.append([n,i,j,hh])
                    m =n
                else:
                    pass
    if len(s) == 0:
        return [-1,-1,-1,-1]
    return s[0]

00172: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1296, 'const': 348, 'code+const': 1644}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    all_words = []
    for row in board :
        wir = ''
        for i in range(len(row)):
            if row[i]== '' :
                wir += ','
            else :
                wir += row[i]
        wir = wir.strip(',').split(',')
        for k in wir :
            if len(k) >= 2 :
                all_words.append(k)
    for m in range(len(board[0])):
        wic = ''   
        for n in range(len(board)):
            if board[n][m] == '' :
                wic += ','
            else :
                wic += board[n][m]
        wic = wic.strip(',').split(',')
        for h in wic:
            if len(h) >= 2:
                all_words.append(h)
    all_words.sort()
    valid = []
    invalid = []
    for word in all_words:
        if is_valid(word):
            valid.append(word)
        else :
            invalid.append(word)
    valid.sort()
    invalid.sort()
    return [valid, invalid]    
def get_play(board, new_board):
    wb = []
    for i in range(15):
        for j in range(15):
            if board[i][j] != '':
                wb.append([board[i][j],i,j])
    nw = []
    for i in range(15):
        for j in range(15):
            if new_board[i][j] != '':
                nw.append([new_board[i][j],i,j])
    out_3 = []
    for k in nw :
        if k not in wb :
            out_3.append(k)
    d1 = []
    d0 = []
    out = ''
    for e in out_3 :
        d1.append(e[2])
        d0.append(e[1])
        out += e[0]
        if len(out_3) == 1 :
            return [e[1],e[2],0,out]
    fd0 = True
    fd1 = True
    for i in range(len(d1)-1) :
        if d1[i] != d1[i+1]:
            fd1 = False
            break
    for i in range(len(d0)-1):
        if d0[i] != d0[i+1]:
            fd0 = False
            break
    if fd0 :
        down = 0
    elif fd1 :
        down = 1
    return [out_3[0][1],out_3[0][2],down,out]
def play(row,col,down,tiles,board):
    score = 0
    bbc = copy_board(board)
    valid, bb = place_tiles(row,col,down,tiles,bbc)
    gaw = get_all_words(bb)
    gbw = get_all_words(board)
    nw = []
    for g in gbw[0] :
        if g in gaw[0] :
            gaw[0].remove(g)
    if not valid or len(gaw[1]) > 0 :
        return -1
    for text in gaw[0] :
        for al in text:
            score += letter_value[al.lower()]
    if len(tiles) >= 7 :
        score += 50
    return score
def best_play(tiles,board):
    score = []
    for i in range(15):
        for j in range(15):
            score.append([play(i,j,0,tiles,board),i,j,0])
    for i in range(15):
        for j in range(15):
            score.append([play(i,j,1,tiles,board),i,j,1])
    score.sort()
    max_sc = score[-1][0]
    max_score = []
    for lst in score:
        if lst[0] == max_sc:
            max_score.append(lst)
    if max_score[0][0] == -1:
        return [-1,-1,-1,-1]
    return max_score[0]

00173: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0ValueError('list.remove(x): x not in list')
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0ValueError('list.remove(x): x not in list')
[8, 20, 26, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1230, 'const': 435, 'code+const': 1665}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    a,b=[],[]
    for i in range(len(board)):
        check1,check2="",""
        for j in range(len(board[i])):
            if board[j][i] == "":check1+=" "
            elif board[j][i] != "": check1 += board[j][i]
            if board[i][j] == "":check2+=" "
            elif board[i][j] != "": check2 += board[i][j]
        list_check=check1.strip().split() + check2.strip().split()
        for word in list_check :
            if len(word) >= 2 :
                if is_valid(word) : a.append(word.upper())
                else : b.append(word.upper())
        a,b=sorted(a),sorted(b)
    return [a,b]
def get_play(board, new_board):
    tiles,row,col,flag,down="",-1,-1,False,-1
    for i in range(len(board)):
        for j in range(len(board[i])):
            if row == -1 and col == -1 :
                if board[i][j] != new_board[i][j] :row,col,flag,down = i,j,True,0
            if board[i][j] != new_board[i][j] : tiles+=str(new_board[i][j])
        if flag :
            if len(tiles) == 1 :flag=False
    if len(tiles)==1:down=0; return [row,col,down,tiles]
    if not flag :
        tiles,row,col,down="",-1,-1,-1
        for i in range(len(board)):
            for j in range(len(board[i])):
                if row == -1 and col == -1 :
                    if board[j][i] != new_board[j][i] :row,col,flag,down = j,i,True,1
                if board[j][i] != new_board[j][i] : tiles+=str(new_board[j][i])
    return [row,col,down,tiles]
def play(row,col,down,tiles,board):
    new_board=copy_board(board)
    if not place_tiles(row,col,down,tiles,board)[0]:return -1
    new_board = place_tiles(row,col,down,tiles,board)[1]
    words1,words2=get_all_words(board),get_all_words(new_board)
    if words1[0]==words2[0] or words1[1] != words2[1] :return -1
    else:
        bonus,score,words=0,0,[]
        new_words=[word for word in words2[0]]
        if len(tiles) >= 7 :bonus=50
        [new_words.remove(e) for e in words1[0] if e in words2[0]]
        for word in new_words :
            if not is_valid(word) : return -1
            score+=sum([get_value(letter) for letter in word])
    return score+bonus
def best_play(tiles,board):
    new_board=copy_board(board)
    list_all,result=[],[-1,-1,-1,-1]
    for row in range(15):
        for col in range(15):
            for down in range(2):
                if place_tiles(row,col,down,tiles,board)[0] :
                    score = play(row,col,down,tiles,board)
                    list_all.append([score,row,col,down])
    for a in list_all :
        if a[0]>result[0]:result=a
    return result

00174: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_40.0
[[['CONNERS', 'UNWITS', 'VILDE', 'CONNERS', 'ZOO'], ['FEWZ']]]
test_get_all_words_50.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'LIAM', 'ONIGIRI']]]
test_get_all_words_60.0
[[['QINFY', 'INFLATER', 'FMONEY', 'YANE', 'UTPE', 'PEQIN', 'YUPT', 'INFLYATER', 'MONEYUP'], []]]
test_get_all_words_70.0
[[['MANGIERT', 'RETAINS', 'MEGI', 'ATIN', 'MANAGIER', 'GIME', 'INA', 'RETAINS'], []]]
test_get_all_words_80.0
[[['SIFATT', 'ITERANTH', 'RFETAINSH', 'UFERANITE', 'STAIRED', 'FEH', 'SIT', 'ITERANT', 'FERNAES', 'REI', 'ATTREI',
   'NARETAINS', 'TSI', 'SIF',
   'STAIRED', 'TI', 'URANITEH'],
  []]]
test_get_all_words_90.0
[[['ADORM', 'ADOM', 'JAD', 'BRADINWASHING', 'LODIM', 'ADOD', 'AIDOM', 'DIOM', 'DSOM', 'DOFM', 'DOHM', 'DOMI', 'DOMI',
   'EDOM', 'DODRM',
   'MODSO', 'MOED', 'MONSTERSD', 'OPEJACIFYULATING', 'XILO', 'YEMI', 'DOMI', 'PREQUALIFIEDMO', 'DOMOD', 'DMOMNSTERS', 'EDNO',
   'DOM', 'NOF', 'DOHM', 'DOM', 'SOPADCIFYING'],
  ['OXYPHENBUTAZONE', 'PIER', 'PREQUAC', 'CLI', 'UF', 'LY', 'TN', 'IGED', 'DOUMBRAINWASHING', 'OUMXI', 'NTYE',
   'TZOOT'],
 'EOM', 'RN', 'SEJACULATING'[]]]
test_get_all_words_100.0
[[['TRATA', 'GIARK', 'XUCALP', 'INFOOTERNED', 'SITHFUGINO', 'GI', 'FOOTGYVE', 'HOCALPK', 'ARKIF', 'INTUREERNSED', 'TRITALED', 'TOJA',
   'OXJIDSVE', 'MUN', 'OXIFDS', 'SITOHING', 'GYVETO', 'HTOCK', 'FUGIOTRAT', 'ITRIALED', 'JIVTUREENS', 'AAXU'],
  ['JAJOJUOLOOMJYOOI', 'RO']]]
test_get_play_10.0
[[7, 6, 10, 'ICE'], [7, 4, 10, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_20.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 10, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 10, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 10, 'COYE'], [10, 2, 10, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_40.0
[[7, 1, 10, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_70.0
[[7, 3, 10, 'COMDER']]
test_get_play_80.0
[[6, 6, 10, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 10, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 10, 'EASIED'],
 [13, 6, 10, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 10, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 10, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 10, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 10, 'GRAFT'], [12, 9, 10, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0
[50-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 15, 24, 17, 85, 012]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 428, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 321, 12, 015, 16, 68, 106, 213, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 120, 1426, 8-1]
test_play_150.0
[2839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_20.0
[[0-1, 5-1, 7-1, -1]]
test_best_play_30.0
[[68, 0, 7, 1], [87, 12, 0, 0], [798, 01, 612, 1], [7259, 31, 50, 10], [11, 2, 13, 6, 0], [765, 3, 4, 8, 1],
 [319, 6, 11, 0, 0], [197, 64, 92, 1], [211, 130, 1, 0], [1522, 03, 8, 1]]
test_best_play_40.0
[[71, 0, 7, 1], [763, 210, 80, 10], [7863, 1, 91, 10], [149, 17, 63, 1], [2019, 813, 10, 10], [772, 214, 114, 10],
 [2517, 26, 126, 10], [258, 13, 73, 0], [218, 34, 130, 10], [136, 45, 14, 10]]
test_best_play_50.0
[[83, 0, 7, 1], [8062, 513, 80, 10], [7258, 1, 98, 10], [210, 80, 61, 10], [7468, 0, 101, 1], [1824, 126, 48, 01],
 [178, 18, 69, 1], [2310, 31, 52, 1], [321, 45, 43, 1], [1927, 14, 114, 1]]
bytecount: {'code': 1094, 'const': 348, 'code+const': 1442}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    x = ""
    y = ""
    for i in range(15) :
        for j in range(15) :
            if board[i][j] != "" :
                x += board[i][j]
            else:
                x += " "
    for i in range(15) :
        for j in range(15) :
            if board[j][i] != "" :
                y += board[j][i]
            else:
                y += " "
    x = x.split()
    y = y.split()
    word = x+y
    va = []
    inva = []
    for i in word :
        if len(i) > 1 :
            if is_valid(i) == True :
                va.append(i)
            else:
                inva.append(i)
    return [va,inva]
def get_play(board, new_board):
    x = ""
    y = ""
    po = []
    for i in range(15) :
        for j in range(15) :
            if board[i][j] != new_board[i][j] :
                x += new_board[i][j]
                po.append([i,j])
            else:
                pass
    for i in range(15) :
        for j in range(15) :
            if board[j][i] != new_board[j][i] :
                y += new_board[j][i]
                po.append([j,i])
            else:
                pass
    if x != "" and len(x) > 1 :
        d = 0
        tiles = x
    elif x != "" and len(x) == 1 :
        d = 0
        tiles = x
    if y != "" and len(y) > 1 :
        d = 1
        tiles = y
    elif y != "" and len(y) == 1 :
        d = 0
        tiles = y
    return [po[0][0],po[0][1],d,tiles]
def play(row,col,down,tiles,board):
    if place_tiles(row,col,down,tiles,board)[0] == False :
        return -1
    board2 = place_tiles(row,col,down,tiles,board)[1]
    word = get_all_words(board)[0]
    word2 = get_all_words(board2)[0]
    new_word = []
    for i in word2 :
        if i not in word :
            new_word.append(i)
    l = []
    for i in new_word :
        for j in i :
            l.append(j)
    score = []
    for i in l :
        score.append(get_value(i))
    s = sum(score)
    if len(tiles) >= 7 :
        s += 50
    return s
def best_play(tiles,board):
    a = []
    b = []
    for row in range(15) :
        for col in range(15) :
            for down in range(2) :
                if place_tiles(row,col,down,tiles,board)[0] == False :
                    pass
                else:
                    b.append(play(row,col,down,tiles,board))
                    a.append([play(row,col,down,tiles,board),row,col,down])
    if a == [] :
        return [-1,-1,-1,-1]
    else:
        max_score = max(b)
        c = []
        for i in a :
            if i[0] == max_score :
                c.append(i)
        ans = min(c)
        return ans

00175: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 900, 'const': 320, 'code+const': 1220}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    validList = []
    invalidList = []
    for row in range(len(board)):
        rowWords = ''
        colWords = ''
        rowWordsList = []
        colWordsList = []
        for col in range(len(board[row])):
            rowAlphabet = board[row][col]
            colAlphabet = board[col][row]
            if len(rowAlphabet) != 0: rowWords += rowAlphabet 
            else: rowWords += ' '
            if len(colAlphabet) != 0: colWords += colAlphabet 
            else: colWords += ' '
        rowWordsList = rowWords.split() 
        colWordsList = colWords.split()
        for word in rowWordsList: 
            if len(word) < 2: continue
            if is_valid(word): validList.append(word)
            else: invalidList.append(word)
        for word in colWordsList: 
            if len(word) < 2: continue
            if is_valid(word): validList.append(word)
            else: invalidList.append(word)
    return [sorted(validList), sorted(invalidList)]
def get_play(board, new_board):
    diffChar = ''
    pos = []
    direction = 1
    for row in range(len(board)):
        counter = 0
        for col in range(len(board)):
            if board[row][col] != new_board[row][col]:
                diffChar += new_board[row][col]
                if pos == []: pos += [row, col]
                if counter == 1: direction = 0
                counter += 1
    if len(diffChar) == 1: direction = 0
    return [pos[0], pos[1], direction, diffChar]
def play(row,col,down,tiles,board):
    newBoard = copy_board(board)
    newBoard = place_tiles(row,col,down,tiles,board)[1]
    boardWordsList = get_all_words(board)
    newBoardWordsList = get_all_words(newBoard)
    getBonus = False
    score = 0
    for invalidWord in newBoardWordsList[1]:
        if invalidWord not in boardWordsList[1]: return -1
    for validWord in newBoardWordsList[0]:
        if validWord not in boardWordsList[0]: 
            for alphabet in validWord:
                score += get_value(alphabet)
            if len(tiles) >= 7: 
                if not getBonus: score += 50
                getBonus = True
        if validWord in boardWordsList[0]:
            boardWordsList[0].remove(validWord)
    if score == 0: score = -1
    return score
def best_play(tiles,board):
    bestScore = -1
    bestRow = -1
    bestCol = -1
    bestDown = -1
    down = 1
    for row in range(len(board)):
        for col in range(len(board)):
            for down in range(0,2):
                if place_tiles(row,col,down,tiles,board)[0]: 
                    score = play(row,col,down,tiles,board)
                    if score > bestScore: 
                        bestScore = score
                        bestRow, bestCol = row, col
                        bestDown = down
    return [bestScore,bestRow,bestCol,bestDown]

00176: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 1928]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 206, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1194, 'const': 406, 'code+const': 1600}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  p = []
  for i in range(15):
    word = ''
    for j in range(15):
      if len(board[i][j]) != 0:
        word += board[i][j]
      else:
        word += ' '
    p.append(word)
  q = []
  for i in range(15):
    word = ''
    for j in range(15):
      if len(board[j][i]) != 0:
        word += board[j][i]
      else:
        word += ' '
    q.append(word)
  r = p + q
  valid_words = []
  invalid_words = []
  for i in r:
    for word in i.strip().split():
      if is_valid(word):
        valid_words.append(word)
      else:
        if len(word) >= 2:
          invalid_words.append(word)
  valid_words.sort()
  invalid_words.sort()
  return [valid_words,invalid_words]
def get_play(board, new_board):
  p = []
  for i in range(15):
    row,tiles_1 = [],''  
    for j in range(15):
      if new_board[j][i] != board[j][i]:
        row.append(j)
        tiles_1 += new_board[j][i]
    p.append([row,i,1,tiles_1])
  for i in range(15):
    col = []
    tiles_2 = '' 
    for j in range(15):
      if new_board[i][j] != board[i][j]:
        col.append(j)
        tiles_2 += new_board[i][j]
    p.append([i,col,0,tiles_2])
  for c in p:
    if len(c[3]) >= 2 :
      if c[2] == 1:
        return [c[0][0],c[1],c[2],c[3]]
      return [c[0],c[1][0],c[2],c[3]]
    else:
      if c[2] == 0 and len(c[3]) == 1:
        return [c[0],c[1][0],c[2],c[3]]
def play(row,col,down,tiles,board):
  copyboard = copy_board(board)
  valid_words = get_all_words(copyboard)[0]
  check, copyboard = place_tiles(row,col,down,tiles,copyboard)
  if check:
    valid_words_2,invalid_words = get_all_words(copyboard)
    if invalid_words != []:
      return -1
    else:
      x = 0
      if len(tiles) >= 7:
        x += 50
      p = []
      y = 0
      for q in valid_words:
        if q in valid_words_2:
          p.append(q)
      for r in p:
        for t in r:
          y += get_value(t)
      for r in valid_words_2:
        for t in r:
          x += get_value(t)
      return x - y
  return -1
def best_play(tiles,board):
  p = sorted([[-play(row,col,down,tiles,board), row, col, down] for row in range(15) for col in range(15) for down in range(2) if play(row,col,down,tiles,board) != -1])
  if p != []:
    score, row, col, down = -p[0][0], p[0][1], p[0][2], p[0][3]
    return [score, row, col, down]
  return [-1,-1,-1,-1]

00177: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 984, 'const': 380, 'code+const': 1364}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  T = [] ; F = []
  for x in range(15):
    k1 = ""
    k2 = ""
    for y in range(15):
      if board[x][y] != '':
        k1 += board[x][y]
      else:
        k1 += " "
      if board[y][x] != '':
        k2 += board[y][x]
      else:
        k2 += " "
    k3 = k1 + " " + k2 
    for word in k3.strip().split():
      if is_valid(word):
        T.append(word)
      elif len(word) > 1:
        F.append(word)
  return [sorted(T), sorted(F)]
def get_play(board, new_board):
  k = []
  for x in range(15):
    k1 = [0,[],[],""]
    k2 = [-1,[],[],""]
    for y in range(15):
      if new_board[x][y] != board[x][y]:
        k1[1].append(x)
        k1[2].append(y)
        k1[3] += new_board[x][y]
      if new_board[y][x] != board[y][x]:
        k2[1].append(y)
        k2[2].append(x)
        k2[3] += new_board[y][x]
    k.append(k1)
    k.append(k2)
  for d,r,c,t in sorted(k):
    if len(t) > 1:
      return [r[0],c[0],0-d,t]
    elif 0-d == 0 and len(t) == 1:
      return [r[0],c[0],0-d,t]
def play(row,col,down,tiles,board):
  board_2 = copy_board(board)
  T, F = get_all_words(board_2)
  B, borad_2 = place_tiles(row,col,down,tiles,board_2)
  if B == True:
    TT, FF = get_all_words(borad_2)
    if FF != []:
      return -1
    cu = 0
    for x in T:
      if x in TT:
        TT.remove(x)
    for y in TT:
      for letter in y:
        cu += get_value(letter)
    if len(tiles) >= 7:
      cu += 50 
    return cu
  return -1
def best_play(tiles,board):
  k = []
  for row in range(15):
    for col in range(15):
      for down in range(2):
        cu = play(row,col,down,tiles,board)
        if cu != -1:
          k.append([cu,-row,-col,-down])
  if k != []:
    k.sort()
    return [k[-1][0],-k[-1][1],-k[-1][2],-k[-1][3]]
  return [-1,-1,-1,-1]

00178: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_10.0
[[5069, 01, 7, 1]]
test_best_play_20.0
[[-1, 5-1, 7-1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1752, 'const': 407, 'code+const': 2159}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    ans = []
    valid = []
    invalid = []
    row = ''
    column = ''
    check = 0
    check2 = 0
    board2 = copy_board(board)
    for j in board2 :
        j.append('')
        for k in range(len(j)-1) :
            if j == ['']*16 :
                break
            if j[k] == '' :
                check2 += 1
            if j[k] != '' :
                if check2 != 0 :
                    row = ''
                row += j[k]
                if check2 == 0 :
                    if is_valid(row) and j[k+1] == '' :
                        valid.append(row)
                        row = ''
                    if not(is_valid(row)) and j[k+1] == '' and len(row) >= 2:
                        invalid.append(row)
                        row = ''
                check2 = 0
        row = ''
    for z in range(len(board2)) :
        board2[z] = board2[z][:-1]
    board2.append(['']*15)
    for k in range(len(board2)-1) :
        for j in range(len(board2)-1) :
            if board2[j][k] == '' :
                check += 1
            if board2[j][k] != '' :
                if check != 0 :
                    column = ''
                column += board2[j][k]
                if check == 0:
                    if is_valid(column) and board2[j+1][k] == '' :
                        valid.append(column)
                        column = ''
                    if not(is_valid(column)) and board2[j+1][k] == '' and len(column) >= 2  :
                        invalid.append(column)
                        column = ''  
                check = 0
        column = '' 
    ans.append(sorted(valid))
    ans.append(sorted(invalid))
    return ans
def get_play(board, new_board):
    tiles = ''
    check = 0
    position = []
    for r in range(15):
        for c in range(15): 
            if new_board[r][c] != board[r][c] :
                tiles += new_board[r][c]
                position+=[[r,c]]
                if len(position) >= 2 :
                    if not(position[1][1] - position[0][1] == 1) :
                        check  = 1
    ans = [position[0][0],position[0][1],check,tiles]
    return ans
def play(row,col,down,tiles,board):
    newboard = place_tiles(row,col,down,tiles,board)[1] 
    score = 0
    getsame = get_all_words(board)[0]
    diffword = []
    if len(get_all_words(newboard)[1]) > 0 :
        return -1   
    for k in get_all_words(newboard)[0]:
        if k in getsame :
            getsame.remove(k)
        else :
            diffword.append(k)           
    if len(tiles) >= 7 :
        score += 50
    for k in diffword :
        for j in k :
            score += get_value(j)
    return score
def best_play(tiles,board):
    boardempty = make_board()
    data = []
    if boardempty == board :
        if len(tiles) >= 7 :
            return [play(0,7,1,tiles,board),0,7,1]
        else :
            return [play(7-len(tiles)+1,7,1,tiles,board),7-len(tiles)+1,7,1]
    for r in range(15) :
        for c in range(15) :
            if board[r][c] != '' :
                for k in range(len(tiles)+1):
                    word = tiles[:k] + board[r][c] + tiles[k:]
                    if k == len(tiles) :
                        word = tiles + board[r][c]
                    if is_valid(word) :
                        if k == 0 :
                            start = k-1
                        else :
                            start = k
                        if r <= 14 and c-start <= 14 :
                            if place_tiles(r,c-start,0,tiles,board)[0] :
                                data.append([-1*play(r,c-start,0,tiles,board),r,c-start,0])
                        if r-start <= 14 and c <= 14 :
                            if is_valid(word) and place_tiles(r-start,c,1,tiles,board)[0] :
                                data.append([-1*play(r-start,c,1,tiles,board),r-start,c,1])
    for r in range(15) :
        for c in range(15) :
            if is_valid(tiles) and place_tiles(r,c,0,tiles,board)[0] :
                data.append([-1*play(r,c,0,tiles,board),r,c,0])
            if is_valid(tiles) and place_tiles(r,c,1,tiles,board)[0] :
                data.append([-1*play(r,c,1,tiles,board),r,c,1])
    data = sorted(data)
    if len(data) == 0 :
        return [-1,-1,-1,-1]
    if data[0][0] == 1 :
        return [-1,-1,-1,-1]
    data[0][0] = data[0][0]*-1
    return data[0]

00179: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 908, 'const': 338, 'code+const': 1246}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    done = [[],[]]
    for row in board:
      word = ''
      for e in range(len(row)):
        if row[e] != '':
          word += row[e]
        if row[e] == '' or e == len(row)-1:
          if is_valid(word):
            done[0].append(word)
          elif len(word)<=1:
            pass
          else:
            done[1].append(word)
          word = ''
    for i in range(15):
      word = ''      
      for row in range(len(board)):
        if board[row][i] != '':
          word += board[row][i]
        if board[row][i] == '' or row == 14:
            if is_valid(word):
              done[0].append(word)
            elif len(word)<=1:
              pass
            else:
              done[1].append(word)
            word = ''
    done = [sorted(done[0]),sorted(done[1])]
    return done
def get_play(board, new_board):
    already = True
    already2 = True
    word = ''
    for row in range(15):
      for col in range(15):
        if board[row][col] == new_board[row][col]:
          pass
        else:
          if already:
            row1 = row
            col1 = col
            already = False
          elif already2:
            row2 = row
            col2 = col
            already2 = False
          word += new_board[row][col]
    if len(word) ==1:
      return [row1,col1,0,word]
    else:
      if row1 == row2 :
        down = 0
      else:
        down = 1
      return [row1,col1,down,word] 
def play(row,col,down,tiles,board):
    score = 0
    new = place_tiles(row,col,down,tiles,board)
    valid = new[0]
    new_board = new[1]
    if not valid :
      return -1
    b1 = get_all_words(board)
    b2 = get_all_words(new_board)
    if b2[1] != []:
      return -1
    else:
      l = []
      for i in b1[0]:
        if i in b2[0]:
          b2[0].remove(i)
    for i in b2[0]:
      for t in i:
        score += letter_value[t.lower()]
    if len(tiles) >= 7:
      score += 50
    return score
def best_play(tiles,board):
    score = -2
    for row in range(15):
      for col in range(15):
        for down in range(2):
          point = play(row,col,down,tiles,board)
          if point > score:
            score = point
            mrow = row
            mcol = col
            mdown = down
    if score == -2 or score == -1:
      return [-1,-1,-1,-1]
    else:
      return [score,mrow,mcol,mdown]

00180: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_20.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_30.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_40.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_50.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_60.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_70.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_80.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_90.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_100.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_10.0
[[07, 06, 0, 'ICE'], [07, 04, 0, 'JUD'], [04, 05, 01, 'INFSIVE'], [06, 08, 0, 'M']]
test_get_play_20.0
[[01, 07, 01, 'MALEATE'], [05, 06, 01, 'JURY'], [05, 08, 01, 'REWTH'], [01, 08, 0, 'OLEHUNT'],
 [02, 014, 01, 'RAVISES'], [0, 10, 0, 'TOGA'],
 [05, 013, 01, 'POZ'], [05, 05, 01, 'ABAND'],
 [02, 10, 0, 'COYE'], [10, 02, 0, 'FOOS']]
test_get_play_30.0
[[06, 06, 01, 'XUNT']]
test_get_play_40.0
[[07, 01, 0, 'INHERITANCE']]
test_get_play_50.0
[[06, 09, 01, 'CAT']]
test_get_play_60.0
[[06, 07, 01, 'CT']]
test_get_play_70.0
[[07, 03, 0, 'COMDER']]
test_get_play_80.0
[[06, 06, 0, 'AT']]
test_get_play_90.0
[[06, 07, 0, 'M']]
test_get_play_100.0
[[0, 07, 01, 'HEPATICS'], [01, 03, 0, 'MAILS'], [07, 06, 01, 'ARREAR'], [02, 0, 0, 'EASIED'],
 [013, 06, 0, 'SAHIWAL'], [03, 013, 01, 'MICROLOGIES'],
 [014, 07, 0, 'GAS'], [07, 05, 01, 'GOORY'],
 [10, 07, 0, 'SHIPS'], [02, 011, 01, 'MALEFICE'], [0, 10, 01, 'DOOLAN'], [04, 09, 01, 'POGEY'],
 [0, 014, 01, 'AGROS'], [03, 02, 01, 'TONIEST'], [09, 01, 01, 'SLICES'], [04, 0, 0, 'CRONY'],
 [07, 014, 01, 'DIXIT'], [011, 04, 01, 'PINS'],
 [05, 0, 01, 'ARED'], [0, 01, 0, 'GRAFT'], [012, 09, 0, 'MO'],
 [06, 04, 01, 'CAB'], [011, 012, 01, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_30.0
[-14]
test_play_40.0
[-14, -21]
test_play_50.0
[-160, -172]
test_play_60.0
[-160, -1]
test_play_70.0
[-163, -14]
test_play_80.0
[-162]
test_play_90.0
[-11, -15, -124, -17, -185, -12]
test_play_100.0
[-19, -133, -136, -18, -12, -173, -165, -17, -174, -16]
test_play_110.0
[-167, -61, -128, -11, -13, -185, -11, -12, -17, -125, -17, -14, -21, -132, -12, -15, -16, -168, -16, -13, -10, -127, -128]
test_play_120.0
[-11]
test_play_130.0
[-19]
test_play_140.0
[-18, -120, -126, -1]
test_play_150.0
[-139]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 72, 'const': 107, 'code+const': 179}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    return [[],[]]
def get_play(board, new_board):
    return [0,0,0,""]
def play(row,col,down,tiles,board):
    return -1
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00181: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0
[0-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_40.0
[14, 721]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_70.0
[63, 614]
test_play_81.0
[62]
test_play_90.0
[11, 15, 24, 17, 85, 012]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 611, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 1827, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 120, 1426, 8-1]
test_play_150.0
[7839]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 1528, 'const': 256, 'code+const': 1784}
check_import({'allowable': ['math']}): none
def get_all_words(board):   
    res=[]
    res2=[]
    x=board
    for row in range(len(x)):
        words=''
        for k in range(len(x[row])):
            if x[row][k]!='':
                words+=x[row][k]
                if k==len(x[row])-1 and x[row][k-1]!='' :
                    if is_valid(words) == True:
                        res.append(words)
                    else:
                        res2.append(words)
            elif x[row][k-1] != "" and x[row][k] == '':
                if len(words)!=1:
                    if words!='':
                        if is_valid(words) == True:
                            res.append(words)
                        else:
                            res2.append(words)
                words=''
    for r1 in range(len(x)):
        for n in range(len(x[r1])):
            words=''
            if r1!=0:
                if x[r1][n] != '' and x[r1-1][n] == '':
                    r2 = r1
                    while r2!=len(x):
                        words+=x[r2][n]
                        r2+=1
                        if r2==len(x):
                            break
                        elif x[r2][n]=="":
                            break
                    if len(words)!=1:
                        if is_valid(words) == True:
                            res.append(words)
                        else:
                            res2.append(words)
                elif x[n] != '' and x[n-1] != '':
                    pass
            elif r1==0 and x[r1][n] != '':
                r2=r1
                while  x[r2][n]!='':
                    words+=x[r2][n]
                    r2+=1
                if len(words)!=1:
                    if is_valid(words) == True:
                        res.append(words)
                    else:
                        res2.append(words)
                elif x[n] != '' and x[n-1] != '':
                    pass
    sum1=[]
    res.sort()
    res2.sort()
    sum1.append(res)
    sum1.append(res2)
    return sum1
def get_play(board, new_board):
    A = get_all_words(board)
    B = get_all_words(new_board)
    list1=[]
    word2=''
    y=[]
    t=[e for e in (B[0])]
    for i in t:
        if i not in A[0]:
            word2+=i
    if word2 == "":
        t=[k for k in (B[1])]
        for l in t:
            if l not in A[1]:
                word2+=l
    if word2 !="":
        word3=''
        for b in range(len(new_board)):
            for h in range(len(new_board[b])):
                        if new_board[b][h] in word2 and new_board[b][h]!=board[b][h]:
                            list1.append([b,h])
                            word3+=new_board[b][h]
        y.append(list1[0][0])
        y.append(list1[0][1])                   
        if len(list1)>1:
            if list1[-1][0] != list1[-2][0]:
                y.append(1)
            else:
                y.append(0)
        elif len(list1)==1:
            y.append(0)
        y.append(word3)
        return (y)
    else:
        return ([0,0,0,""]) 
def play(row,col,down,tiles,board):
    x = copy_board(board)
    x=place_tiles(row,col,down,tiles,x)[1]
    val=[]
    A = get_all_words(x)
    B = get_all_words(board)
    c = [k for k in A[0]]
    for i in c:
      if i not in B[0]:
        val.append(i)
    all_p=[]
    for o in range(len(val)):
        pt=0
        bing=0
        for t in range(len(val[o])):
            pt+= get_value(val[o][t])
            bing+=1
        if bing>= 7:
            pt+=50
        all_p.append(pt)
    allp=sum(all_p)
    return (allp)
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00182: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[([69, 1, 7, 1)]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[([68, 0, 7, 1)], ([87, 12, 0, 0)], ([79, 1, 12, 1)], ([59, 1, 0, 0)], ([11, 2, 3, 0)], ([65, 3, 4, 1)],
 ([19, 6, 1, 0)], ([7, 4, 2, 1)], ([11, 0, 1, 0)], ([22, 3, 8, 1)]]
test_best_play_41.0
[([71, 0, 7, 1)], ([63, 10, 0, 0)], ([63, 1, 1, 0)], ([9, 7, 3, 1)], ([19, 13, 0, 0)], ([72, 14, 4, 0)],
 ([17, 6, 6, 0)], ([8, 3, 3, 0)], ([18, 4, 0, 0)], ([16, 5, 1, 0)]]
test_best_play_51.0
[([83, 0, 7, 1)], ([62, 13, 0, 0)], ([58, 1, 8, 0)], ([10, 0, 1, 0)], ([68, 0, 11, 1)], ([24, 6, 8, 1)],
 ([18, 8, 9, 1)], ([10, 1, 2, 1)], ([21, 5, 3, 1)], ([27, 4, 4, 1)]]
bytecount: {'code': 1142, 'const': 304, 'code+const': 1446}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    a = []
    for i in range(len(board)) :
        b = ""
        for e in range(len(board[0])) :
            if board[i][e] != "" :
                b += board[i][e]
            elif b != "" and len(b) >= 2 :
                a.append(b)
                b = ""
            else :
                b = ""
        if b != "" and len(b) >= 2 :
            a.append(b)
    for i in range(len(board[0])) :
        b = ""
        for e in range(len(board)) :
            if board[e][i] != "" :
                b += board[e][i]
            elif b != "" and len(b) >= 2 :
                a.append(b)
                b = ""
            else :
                b = ""
        if b != "" and len(b) >= 2 :
            a.append(b)
    word = [[],[]]
    for e in a :
        if is_valid(e) :
            word[0].append(e)
        elif len(e) >= 2 :
            word[1].append(e)
    word[0].sort()
    word[1].sort()
    return word
def get_play(board, new_board):
    a = []
    for i in range(len(board)) :
        for e in range(len(board[0])) :
            if new_board[i][e] != board[i][e] :
                a.append([i,e,new_board[i][e]])
    a.sort()
    b = [a[0][0],a[0][1]]
    if len(a) == 1 :
        b.append(0)
    elif a[0][0] == a[1][0] :
        b.append(0)
    else :
        b.append(1)
    b.append("")
    for e in a :
        b[3] += e[2]
    return b
def play(row,col,down,tiles,board):
    valid,newboard = place_tiles(row,col,down,tiles,board)
    if valid :
        before = get_all_words(board)[0]
        word,invalid = get_all_words(newboard)
        if len(invalid) > 0 :
            return -1
        for i in before :
            if i in word :
                word.remove(i)
        if len(word) == 0 :
            return -1
        score = 0
        for i in word :
            for e in i :
                score += get_value(e)
        if len(tiles) >= 7 :
            score += 50
        return score
    else :
        return -1
def best_play(tiles,board):
    a = []
    for i in range(len(board)) :
        for e in range(len(board[0])) :
            for d in [0,1] :
                s = play(i,e,d,tiles,board)
                if s != -1 :
                    a.append([-s,i,e,d])
    if len(a) == 0 :
        return [-1,-1,-1,-1]
    a.sort()
    a = [[-s,i,e,d] for s,i,e,d in a]
    s,i,e,d = a[0]
    board = place_tiles(i,e,d,tiles,board)
    return s,i,e,d

00183: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_10.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 10, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_90.0
[[6, 7, 10, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0TypeError("'int' object is not subscriptable")
[]
test_play_21.0
[-1]
test_play_30.0TypeError("'int' object is not subscriptable")
[]
test_play_40.0TypeError("'int' object is not subscriptable")
[]
test_play_50.0TypeError("'int' object is not subscriptable")
[]
test_play_60.0TypeError("'int' object is not subscriptable")
[]
test_play_70.0TypeError("'int' object is not subscriptable")
[]
test_play_80.0TypeError("'int' object is not subscriptable")
[]
test_play_90.0TypeError("'int' object is not subscriptable")
[]
test_play_100.0TypeError("'int' object is not subscriptable")
[]
test_play_110.0TypeError("'int' object is not subscriptable")
[]
test_play_120.0TypeError("'int' object is not subscriptable")
[]
test_play_130.0TypeError("'int' object is not subscriptable")
[]
test_play_140.0TypeError("'int' object is not subscriptable")
[]
test_play_150.0TypeError("'int' object is not subscriptable")
[]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 796, 'const': 364, 'code+const': 1160}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    allword=' '
    for i in range(15):
        allword+=' '
        for j in range(15):
            if board[i][j]!='':
                allword+=board[i][j]
            else:
                allword+=' '
    for i in range(15):
        allword+=' '
        for j in range(15):
            if board[j][i]!='':
                allword+=board[j][i]
            else:
                allword+=' '
    valid=[]
    invalid=[]
    for i in allword.split():
        if len(i)>=2:
            if is_valid(i)==True:
                valid.append(i.upper())
            elif is_valid(i)==False:
                invalid.append(i.upper())
    return [sorted(valid),sorted(invalid)]
def get_play(board, new_board):
    al=''
    use=[0,0,1]
    non=0
    tung=0
    check=False
    for i in range(15):
        for j in range(15):
            if board[i][j]!=new_board[i][j]:
                use[0]=i
                use[1]=j
                check=True
                break
        if check:break
    for i in range(15):
        for j in range(15):
            if board[i][j]!=new_board[i][j]:
                al+=new_board[i][j]
    for i in range(15):
        for j in range(14):
            if board[i][j]!=new_board[i][j]:
                if board[i][j+1]!=new_board[i][j+1]:
                    use[2]=0
    realuse=use.append(al)
    return use
def play(row,col,down,tiles,board):
    check,new_board=place_tiles(row,col,down,tiles,board)
    if check==True:
        oldword=get_all_words(board)
        newword=get_all_words(new_board)
        if len(newword)[1]!=0:
            score=0
            for i in newword:
                if i not in oldword:
                    for j in i:
                        score+=get_value[j]
                else:
                    oldword.remove(i)
            if len(i)>=7:
                score+=50
        return score
    else:
        return -1
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00184: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_30.0TypeError("'int' object is not iterable")
[]
test_play_40.0TypeError("'int' object is not iterable")
[]
test_play_50.0TypeError("'int' object is not iterable")
[]
test_play_60.0TypeError("'int' object is not iterable")
[]
test_play_70.0TypeError("'int' object is not iterable")
[]
test_play_80.0TypeError("'int' object is not iterable")
[]
test_play_90.0TypeError("'int' object is not iterable")
[]
test_play_100.0TypeError("'int' object is not iterable")
[]
test_play_110.0TypeError("'int' object is not iterable")
[]
test_play_120.0TypeError("'int' object is not iterable")
[]
test_play_130.0TypeError("'int' object is not iterable")
[]
test_play_140.0TypeError("'int' object is not iterable")
[]
test_play_150.0TypeError("'int' object is not iterable")
[]
test_best_play_10.0TypeError("'int' object is not iterable")
[]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0TypeError("'int' object is not iterable")
[]
test_best_play_40.0TypeError("'int' object is not iterable")
[]
test_best_play_50.0TypeError("'int' object is not iterable")
[]
bytecount: {'code': 862, 'const': 346, 'code+const': 1208}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  verti = ''
  hori = ''
  wb = []
  for i in range(15):
    for j in range(15):
      if board[i][j] != '':
        hori += board[i][j]
      if j == 14 and hori != '':
        wb.append(hori)
        hori = ''
      if board[i][j] == '' and hori != '':
        wb.append(hori)
        hori = ''
      if board[j][i] != '':
        verti += board[j][i]
      if j == 14 and verti != '':
        wb.append(verti)
        verti = ''
      if board[j][i] == '' and verti != '':
        wb.append(verti)
        verti = ''
  no = []
  yes = []
  for ele_w in wb:
    if is_valid(ele_w) == False and len(ele_w) >= 2:
      no.append(ele_w)
      no.sort()
    elif is_valid(ele_w) == True:
      yes.append(ele_w)
      yes.sort()
  return [yes,no]
def get_play(board, new_board):
  another = []
  tile = ""
  for i in range(15):
      for j in range(15):
          if board[i][j] != new_board[i][j]:
              another.append((i,j))
              tile += new_board[i][j]    
  out = [another[0][0], another[0][1]]
  out.append(int(len(another) > 1 and another[1][0] > another[0][0]))
  out.append(tile)
  return out
def play(row,col,down,tiles,board):
  point = 0
  before = get_all_words(board)[0]
  x , new = place_tiles(row,col,down,tiles,board)
  after , no = get_all_words(new)
  if no!=[] or not x: 
      return -1
  for ele in after:
    if ele in before :
      x = before.index(ele)
      before.remove(before[x])
    else:
      for e in ele :
        point += sum(get_value(e))
  if len(tiles) >= 7 :
    ans = point + 50
  else :
    ans = point
  return ans
def best_play(tiles,board):
  mvp = [-1]*4
  for i in range(15):
      for j in range(15):
          for k in (0,1):
              p = play(i,j,k,tiles,board)
              if p > mvp[0]:
                  mvp = [p, i, j, k]
  return mvp

00185: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_10.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_get_all_words_20.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_get_all_words_30.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_get_all_words_40.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_get_all_words_50.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_get_all_words_60.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_get_all_words_70.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_get_all_words_80.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_get_all_words_90.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_get_all_words_100.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_get_play_10.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_get_play_20.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_get_play_30.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_get_play_40.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_get_play_50.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_get_play_60.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_get_play_70.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_get_play_80.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_get_play_90.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_get_play_100.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_play_10.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_play_20.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_play_30.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_play_40.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_play_50.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_play_60.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_play_70.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_play_80.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_play_90.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_play_100.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_play_110.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_play_120.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_play_130.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_play_140.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_play_150.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_best_play_10.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_best_play_20.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_best_play_30.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_best_play_40.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
test_best_play_50.0SyntaxError('invalid syntax', ('<string>', 434, 33, ' if is_valid(str_row)\\n'))
[]
bytecount: {}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  all_word = [] , row_word = [] , col_word = []
  for i in range(0,15):
    for j in range(0,15):
      if is_alpha(board[i][j]):
        str_row = board[i][j]
        str_col = board[i][j]
        for k in range(15):
          if is_alpha(board[i][k+j]):
            str_row += board[i][k+j]
            if is_valid(str_row)
              row_word.append(str_row)
          else: break
        for m in range(10):
          if is_alpha(board[i+m][j]):
            str_col += board[i+m][k]
            if is_valid(str_col):
              col_word.append(str_row)
            else: break
  all_word.append(row_word.sort)
  all_word.append(col_word.sort)
  return all_word
def get_play(board, new_board):
  flag = 1 , count = 0 , str = ""
  for i in range(0,15):
    for j in range(0,15):
      if(flag):
        if board[i][j] != new_board[i][j]:
          r_start = i
          c_start = j
          flag = 0 , count += 1
          str = str + new_board[i][j]
      else:
        if board[i][j] != new_board[i][j]:
          if count == 1:
            if i == r_start : down = 0
            if j == c_start : down = 1
          str = str + new_board[i][j]
  if count == 1 : down = 0
  what_play = [r_start, c_start, down ,str]
  return what_play
def play(row,col,down,tiles,board):
    return -1
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00186: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_10.0
[] ResultDownWard
[] ResultLTR
[[[], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '']]]
test_get_all_words_20.0
TRANSPORTATIONS wordRTL
[] ResultDownWard
['TRANSPORTATIONS'] ResultLTR
[[['TRANSPORTATIONS'],
  ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
   '', '', '', '']]]
test_get_all_words_30.0
MUSKETEER wordDownward
ETERNALS wordRTL
['MUSKETEER'] ResultDownWard
['ETERNALS'] ResultLTR
[[['ETERNALS', 'MUSKETEER'],
  ['', '', '', '', '', '', 'USKETEER', '', '', '', '', '', '', '', '', 'SKETEER', 'KETEER', '',
   'ETEER', '', '', 'EER', '', '', 'R', '', '']]]
test_get_all_words_40.0
VILDE wordDownward
UNWITS wordRTL
ZOO wordDownward
['VILDE', 'ZOO'] ResultDownWard
['UNWITS'] ResultLTR
[[['UNWITS', 'VILDE', 'ZOO'],
  ['', 'CONNERSZOO', '', 'OUNNERSZOO', '', 'NNERSZOO', '', 'NERSZOO', '', 'ERSZOO', '', 'RWITSZOO', '',
   '', '', '', 'VILDE', '', 'SZOO'], 'LDE', '', '', '', 'E', '', ['FEWZ', '', 'O', '', '', '']]]
test_get_all_words_50.0
UNOBSERVANT wordDownward
NIGIRI wordDownward
HELIOS wordRTL
AM wordDownward
['UNOBSERVANT', 'NIGIRI', 'AM'] ResultDownWard
['HELIOS'] ResultLTR
[[['HELIOS', 'UNOBSERVANT', 'NIGIRI', 'AM'],
  ['', '', '', '', 'NOBSERVANT', '', '', 'ONIGIRLI', '', 'AM', 'NOOOOO', '', 'BSERVAONT', 'IGIRI', '',
   '', '', 'LIAM', '', '', 'GIRI', 'IAM', 'ERVANT', 'IRI', '', 'RVANT', 'RI', '', 'M', 'I', '', '',
   'NT', '', 'T', '', '']]]
test_get_all_words_60.0
MONEY wordDownward
YUP wordDownward
INFLATER wordDownward
QIN wordRTL
NE wordRTL
FY wordRTL
YA wordRTL
UT wordRTL
PE wordRTL
['MONEY', 'YUP', 'INFLATER'] ResultDownWard
['QIN', 'NE', 'FY', 'YA', 'UT', 'PE'] ResultLTR
[[['QIN', 'NE', 'FY', 'YA', 'UT', 'PE', 'MONEY', 'YUP', 'INFLATER'],
  ['', '', '', '', '', '', 'MONEY', '', 'NEY', 'NFLATPER', 'EYQIN', 'FLAUTER', 'Y', '', 'ATER', 'TER',
   'YUP', 'R'], ''[]]]
test_get_all_words_70.0
ME wordDownward
AT wordDownward
NA wordDownward
GI wordDownward
IN wordDownward
ES wordDownward
MANGIER wordRTL
RETAINS wordRTL
['ME', 'AT', 'NA', 'GI', 'IN', 'ES'] ResultDownWard
['MANGIER', 'RETAINS'] ResultLTR
[[['MANGIER', 'RETAINS', 'ME', 'AT', 'NAS', 'GI', 'IN', 'MANGIES'],
  ['', '', '', '', 'R', 'ME', 'NA', '', '', 'RE', 'T', 'A', 'I', 'N', 'S'], '', '', '', '', '', ''[]]]
test_get_all_words_80.0
SI wordDownward
IT wordDownward
FERN wordDownward
SIF wordRTL
REI wordDownward
ATT wordDownward
NAES wordDownward
TI wordDownward
ITERANT wordRTL
IF wordDownward
RETAINS wordRTL
URANITE wordRTL
EH wordDownward
STAIRED wordRTL
FEH wordRTL
['SI', 'IT', 'FERN', 'REI', 'ATT', 'NAES', 'TI', 'IF', 'EH'] ResultDownWard
['SIF', 'ITERANT', 'RETAINS', 'URANITE', 'STAIRED', 'FEH'] ResultLTR
[[['SIF', 'ITERANT', 'RETAINS', 'URANITEH', 'STAIRFEDH', 'FEHRN', 'SIF', 'IT', 'FITERAN', 'REI', 'ATT',
   'NAES', 'TI', 'IF', 'REH'],
  ['', '', '', '', '', '', 'I', 'T', 'RN', 'EI', 'RETT', 'AEINS', 'SI', '', '', '', '', 'N', 'SI', 'TF',
   'S', '', '', '', 'F', 'TAIRED', 'HTI', 'URANITE'],
 '', ''[]]]
test_get_all_words_90.0
OPACIFYING wordDownward
XI wordDownward
PREQUALIFIED wordDownward
BRAINWASHING wordDownward
AD wordDownward
ZOOT wordDownward
OM wordDownward
OXYPHENBUTAZONE wordRTL
FAD wordRTL
DOM wordDownward
ED wordRTL
DOD wordRTL
MOD wordRTL
MO wordRTL
MONSTERS wordRTL
['OPACIFYING', 'XI', 'PREQUALIFIED', 'BRAINWASHING', 'AD', 'ZOOT', 'OM', 'DOM'] ResultDownWard
['OXYPHENBUTAZONE', 'FAD', 'ED', 'DOD', 'MOD', 'MO', 'MONSTERS'] ResultLTR
[[['OXYPHENBUTAZONE', 'FAD', 'ED', 'DOD', 'MOD', 'MO', 'MONSTERS', 'OPACIFYING', 'XID',
   'PREQUALIFIED', 'BRAINWASHING', 'AD', 'ZOOT', 'OIM', 'DOMD'],
  ['YEDOM', 'DOMDOM', 'EDDOM', 'NOMMMMMDOMMMDOM', 'UMDOM', 'T', 'N', 'I', 'EDOM', 'DDOM',
   'OMMMMMDOMMMDOM', 'MDORM', 'DSO', 'MED', 'PIERDORMDOM', 'EJACIFYING', 'EQUALIFIED', 'AINWASHTING', 'LOT',
   'A', 'CIFYMING', 'INWASHMING', 'TMO', 'CMOD', 'IFYIMONG', 'UALIFISTED', 'NWARSHING', 'I', 'FYING', 'ALIFIEDO',
   'DOMDOM', 'YING', 'LIFIED', 'OMDOHM', 'YLOADM', 'OPACIFYIEDNG', 'MDOM', 'DOMMMDOM', 'SXYPHIENG', 'IDIMDSBUTAZO',
   'NGE', 'FPIEDR', 'OMMMDOM', 'M', 'NOPREQUALIFOHM', 'G', 'M', 'IED', 'MMMDOUM', 'GMIMXI', 'NGYE',
 'D', 'G', 'MZOOT'],
   'M', 'M', '', '', '', '', '', '', ''[]]]
test_get_all_words_100.0
TRIALED wordDownward
TUREENS wordDownward
TO wordDownward
JIVE wordDownward
OXIDS wordDownward
XU wordRTL
ITA wordDownward
IF wordDownward
HOCK wordDownward
SITHING wordRTL
FOOT wordRTL
CALP wordRTL
ARK wordRTL
['TRIALED', 'TUREENS', 'TO', 'JIVE', 'OXIDS', 'ITA', 'IF', 'HOCK'] ResultDownWard
['XU', 'SITHING', 'FOOT', 'CALP', 'ARK'] ResultLTR
[[['XU', 'SITHING', 'FOOT', 'CAALP', 'ARK', 'TRICALEDP', 'FOOTUREENS', 'TO', 'JFUGIVE', 'OXIDS', 'GITA', 'IFGYVE',
   'HOCK'],
  ['FUGIOITA', 'F', 'INTERIALNED', 'UGIOITA', 'JA',
  'IALED', 'GJIOITAVE', 'MUN', 'ROXIDS', 'ALEDSITHING', 'GYVEHTOCK',
   'IOITAO', 'AAATRATAAAGIAJA', '', '', 'TRIALED', 'TUREENS', 'O', 'O', 'MXUNIF', 'YVEHOCK', 'OITA', ''],
   'IVE', ['JOJUOLOOMJYOOI', 'XIDS', 'UNIF', 'VEHOCK', 'VE', 'EENS', 'D', 'NIF', 'EHOCK', '', 'E',
   'DDDDDINTERNED', 'DS', '', 'NS', 'S', '', '', 'S', 'F', 'O', 'OCK', 'CK', 'A', '', '', '', '',
   'K', '', '', '']]]
test_get_play_10.0
[[07, 06, 0, 'ICE'], [07, 04, 0, 'JUD'], [04, 05, 01, 'INFSIVE'], [06, 08, 0, 'M']]
test_get_play_20.0
[[01, 07, 01, 'MALEATE'], [05, 06, 01, 'JURY'], [05, 08, 01, 'REWTH'], [01, 08, 0, 'OLEHUNT'],
 [02, 014, 01, 'RAVISES'], [0, 10, 0, 'TOGA'],
 [05, 013, 01, 'POZ'], [05, 05, 01, 'ABAND'],
 [02, 10, 0, 'COYE'], [10, 02, 0, 'FOOS']]
test_get_play_30.0
[[06, 06, 01, 'XUNT']]
test_get_play_40.0
[[07, 01, 0, 'INHERITANCE']]
test_get_play_50.0
[[06, 09, 01, 'CAT']]
test_get_play_60.0
[[06, 07, 01, 'CT']]
test_get_play_70.0
[[07, 03, 0, 'COMDER']]
test_get_play_80.0
[[06, 06, 0, 'AT']]
test_get_play_90.0
[[06, 07, 0, 'M']]
test_get_play_100.0
[[0, 07, 01, 'HEPATICS'], [01, 03, 0, 'MAILS'], [07, 06, 01, 'ARREAR'], [02, 0, 0, 'EASIED'],
 [013, 06, 0, 'SAHIWAL'], [03, 013, 01, 'MICROLOGIES'],
 [014, 07, 0, 'GAS'], [07, 05, 01, 'GOORY'],
 [10, 07, 0, 'SHIPS'], [02, 011, 01, 'MALEFICE'], [0, 10, 01, 'DOOLAN'], [04, 09, 01, 'POGEY'],
 [0, 014, 01, 'AGROS'], [03, 02, 01, 'TONIEST'], [09, 01, 01, 'SLICES'], [04, 0, 0, 'CRONY'],
 [07, 014, 01, 'DIXIT'], [011, 04, 01, 'PINS'],
 [05, 0, 01, 'ARED'], [0, 01, 0, 'GRAFT'], [012, 09, 0, 'MO'],
 [06, 04, 01, 'CAB'], [011, 012, 01, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_30.0
[-14]
test_play_40.0
[-14, -21]
test_play_50.0
[-160, -172]
test_play_60.0
[-160, -1]
test_play_70.0
[-163, -14]
test_play_80.0
[-162]
test_play_90.0
[-11, -15, -124, -17, -185, -12]
test_play_100.0
[-19, -133, -136, -18, -12, -173, -165, -17, -174, -16]
test_play_110.0
[-167, -61, -128, -11, -13, -185, -11, -12, -17, -125, -17, -14, -21, -132, -12, -15, -16, -168, -16, -13, -10, -127, -128]
test_play_120.0
[-11]
test_play_130.0
[-19]
test_play_140.0
[-18, -120, -126, -1]
test_play_150.0
[-139]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 854, 'const': 378, 'code+const': 1232}
check_import({'allowable': ['math']}): none
def checkList(supList) :
    Letter = []
    for i in range(len(supList)):
        Letter.append(supList[i])
    return Letter
def get_all_words(board):
  validLetter = []
  for i in range(len(board)) :
      if len(checkList(board[i])) != 0 :
          validLetter.append(checkList(board[i]))
  ResultValid = []
  ResultInvalid = []
  ResultLTR = []
  ResultDownWard = []
  for j in range(len(validLetter)) :
      wordRTL = ''
      for k in range(len(validLetter[j])) :
          if validLetter[j][k] != '' and k != 14 :
              wordDownward = ''
              for l in range(j,15) :
                  if validLetter[l][k] != '' and l != 14 :
                      if validLetter[l+1][k] != '' :
                          wordDownward += validLetter[l][k]
                      elif validLetter[l-1][k] != '' and validLetter[l+1][k] == '' :
                          wordDownward += validLetter[l][k]
                  elif validLetter[14][k] != '' and validLetter[13][k] != '' :
                      wordDownward += validLetter[14][k]
              if is_valid(wordDownward) == True :
                  foundDownWard = False
                  for y in ResultDownWard :
                      if wordDownward in y :
                          foundDownWard = True
                  if foundDownWard == False : 
                      ResultDownWard.append(wordDownward)
                      print(wordDownward,'wordDownward')
              else:
                  ResultInvalid.append(wordDownward)
              if validLetter[j][k+1] != ''  :
                  wordRTL += validLetter[j][k]
              elif validLetter[j][k-1] != '' and validLetter[j][k+1] == '' :
                  wordRTL += validLetter[j][k]
          elif validLetter[j][14] != '' and validLetter[j][13] != '' :
              wordRTL += validLetter[j][14]
      if is_valid(wordRTL) == True :
          ResultLTR.append(wordRTL)
          print(wordRTL,'wordRTL')
      else:
          ResultInvalid.append(wordRTL)
  print(ResultDownWard,'ResultDownWard')
  print(ResultLTR,'ResultLTR')
  for z in ResultLTR :
      ResultValid.append(z)
  for x in ResultDownWard :
      ResultValid.append(x)
  return [ResultValid,ResultInvalid]
def get_play(board, new_board):
    return [0,0,0,""]
def play(row,col,down,tiles,board):
    return -1
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00187: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 47, -125, 17, 14, 21, 32, -12, -15, 16, 68, 6, 13, 10, -127, -128]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [019, 46, 01, 0], [07, 64, 02, 01], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_40.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [108, 03, 3, 10], [018, 04, 10, 10], [126, 05, 11, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 2228, 'const': 381, 'code+const': 2609}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    allv = []
    alli = []
    for i in range(15) :
        wr = ''
        wd = ''
        for j in range(15) :
            if board[i][j] != '' :
                wr += board[i][j]
                if j == 14 :
                    if is_valid(wr) :
                        allv.append(wr)
                    elif len(wr) >= 2 :
                        alli.append(wr)
                    wr = ''
            elif board[i][j] == '' :
                if is_valid(wr) :
                    allv.append(wr)
                elif len(wr) >= 2 :
                    alli.append(wr)
                wr = ''
            if board[j][i] != '' :
                wd += board[j][i]
                if j == 14 :
                    if is_valid(wd) :
                        allv.append(wd)
                    elif len(wd) >= 2 :
                        alli.append(wd)
                    wd = ''
            elif board[j][i] == '' :
                if is_valid(wd) :
                    allv.append(wd)
                elif len(wd) >= 2 :
                    alli.append(wd)
                wd = ''
    allv.sort()
    alli.sort()
    return [allv,alli]
def get_play(board, new_board):
    alln = []
    for i in range(15) :
        wr = ''
        wd = ''
        allrow = []
        allcol = []
        for j in range(15) :
            if board[i][j] != new_board[i][j] :
                allrow.append(i)
                allcol.append(j)
                wr += new_board[i][j]
                alln += [new_board[i][j],i,j]
            if board[j][i] != new_board[j][i] :
                allrow.append(j)
                allcol.append(i)
                wd += new_board[j][i]
        if len(wd) >= 2 or len(wr) >= 2 :
            row = allrow[0]
            col = allcol[0]
            if len(wd) >= 2 :
                return [row,col,1,wd]
            elif len(wr) >= 2 :
                return [row,col,0,wr]
    if len(alln) == 3 :
        return [alln[1],alln[2],0,alln[0]]
def play(row,col,down,tiles,board):
    score = 0
    rule,newboard = place_tiles(row,col,down,tiles,copy_board(board))
    if not rule :   
        return -1
    if down == 1 and len(tiles) > 1 :
        id = []
        c = 0
        for i in range(15) :
            if board[i][col] != '' :
                id.append(i)
                c += 1
        if len(id) > 0 :
            if id[0] < row :
                wordind = row + len(tiles) - 1
            else :
                if id[0] <= row + len(tiles) :
                    wordind = row + len(tiles) + c - 1
                else :
                    wordind = row + len(tiles) - 1
        else :
            wordind = row + len(tiles) - 1
        allword = []
        tilesrow = []
        mainword = ''
        for i in range(15) :
            if newboard[i][col] != board[i][col] :
                tilesrow.append(i)
            if newboard[i][col] != '' :
                mainword += newboard[i][col]
            elif newboard[i][col] == '' and i > wordind :
                break
            elif newboard[i][col] == '' and i < wordind :
                mainword = ''
        allword.append(mainword)
        for r in tilesrow :
            word = ''
            for c in range(15) :
                if newboard[r][c] != '' :
                    word += newboard[r][c]
                elif newboard[r][c] == '' and c > col :
                    break
                elif newboard[r][c] == '' and c < col :
                    word = ''
            allword.append(word)
        for e in allword :
            if is_valid(e) :
                for l in e :
                    score += get_value(l)
            elif not is_valid(e) and len(e) >= 2 :
                return -1
    else : 
        id = []
        c = 0
        for i in range(15) :
            if board[row][i] != '' :
                id.append(i)
                c += 1
        if len(id) > 0 :
            if id[0] < col : 
                wordind = col + len(tiles) - 1
            else : 
                if id[0] <= col + len(tiles) :
                    wordind = col + len(tiles) + c - 1
                else : 
                    wordind = col + len(tiles) - 1 
        else :
            wordind = col + len(tiles) - 1
        allword = []
        tilescol = []
        mainword = ''
        for i in range(15) :
            if newboard[row][i] != board[row][i] :
                tilescol.append(i)                
            if newboard[row][i] != '' :
                mainword += newboard[row][i]
            elif newboard[row][i] == '' and i > wordind :
                break
            elif newboard[row][i] == '' and i < wordind :
                mainword = ''
        allword.append(mainword)
        for c in tilescol :
            word = ''
            for r in range(15) :
                if newboard[r][c] != '' :
                    word += newboard[r][c]
                elif newboard[r][c] == '' and r > row :
                    break
                elif newboard[r][c] == '' and r < row :
                    word = ''
            allword.append(word)          
        for e in allword :
            if is_valid(e) :
                for l in e :
                    score += get_value(l)
            elif not is_valid(e) and len(e) >= 2 :
                return -1
    if len(tiles) >= 7 :
        score += 50
    return score
def best_play(tiles,board):
    allx = []
    for row in range(15) :
        for col in range(15) :
            allx.append([-1*(play(row,col,1,tiles,board)),row,col,1])
            allx.append([-1*(play(row,col,0,tiles,board)),row,col,0])
    allx.sort()
    if allx[0][0] != 1 :
        return [-1*allx[0][0]] + allx[0][1:]
    return [-1,-1,-1,-1]

00188: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1366, 'const': 419, 'code+const': 1785}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid_words=[]
  invalid_words=[]
  w=15
  c=0
  for i in range(w):
    for j in range(w):
      if 'a' <= board[i][j].lower() <= 'z' and c==0:
        start=j
        c=1
      if board[i][j] == '' and c==1:
        end=j
        text=''.join(board[i][start:end])
        if is_valid(text) and len(text)>=2:
          valid_words.append(text)
        elif is_valid(text)==0 and len(text)>=2:
          invalid_words.append(text)
        c=0
    if c==1:
      end=15
      text=''.join(board[i][start:end])
      if is_valid(text) and len(text)>=2:
        valid_words.append(text)
      elif is_valid(text)==0 and len(text)>=2:
        invalid_words.append(text)
      c=0
  c=0
  for i in range(w):
    for j in range(w):
      if 'a' <= board[j][i].lower() <= 'z' and c==0:
        start=j
        c=1
      if board[j][i] == '' and c==1:
        end=j
        text=''
        for z in range(start,end):
          text+=board[z][i]
        if is_valid(text) and len(text)>=2:
          valid_words.append(text)
        elif is_valid(text)==0 and len(text)>=2:
          invalid_words.append(text)
        c=0
    if c==1:
      end=15
      text=''
      for z in range(start,end):
        text+=board[z][i]
      if is_valid(text) and len(text)>=2:
          valid_words.append(text)
      elif is_valid(text)==0 and len(text)>=2:
        invalid_words.append(text)
      c=0
  valid_words.sort()
  invalid_words.sort()
  list_return=[valid_words,invalid_words]
  return list_return
def get_play(board, new_board):
  list_l=[];t=0;down=0  
  for i in range(15):
    for j in range(15):
      if board[i][j]!=new_board[i][j]:
        if not t:
          I=i
          J=j
          t=1
        elif t:
          if J==j:
            down=1
          t=99999
        list_l+=[new_board[i][j]]
    ans=''.join(list_l)
  return [I,J,down,ans]
def play(row,col,down,tiles,board):
  new_board=copy_board(board);new_board=place_tiles(row,col,down,tiles,new_board)[1]
  main=get_all_words(board);new=get_all_words(new_board);c=0
  if len(new[1])>=1:
    return -1
  for i in main[0]:
    for j in range(len(new[0])):
      if new[0][j]==i and c==0:
        new[0][j]=''
        c=0
        break
  ans=0
  for i in new[0]:
    for j in i:
      score=get_value(j)
      if score>0:
        ans+=score
  if len(tiles)>=7 and c==0:
    ans+=50
  list_return=ans
  return list_return
def best_play(tiles,board):
  ms=-1;I=-1;J=-1;D=-1
  for i in range(15):
    for j in range(15):
      for d in range(2):
        v=place_tiles(i,j,d,tiles,board)[0]
        if v==1:
          if ms<play(i,j,d,tiles,board):
            ms=play(i,j,d,tiles,board);I=i;J=j;D=d
  list_return=[ms,I,J,D]
  return list_return

00189: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 946, 'const': 434, 'code+const': 1380}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  all_word = ''
  valid = []
  invalid = []
  for i in range(15):
    word_row = list(map(lambda x: '+' if x == '' else x, board[i]))
    all_word += ''.join(word_row) + '+'
    word_col = ''
    for j in range(15):
      if board[j][i] == '':
        word_col += '+'  
      else:
        word_col += board[j][i]
    all_word += word_col + '+'    
  all_word = sorted(list(filter(lambda x: x != '' and len(x) > 1, all_word.split('+'))))
  for k in all_word:
    if is_valid(k):
      valid.append(k.upper())
    else:
      invalid.append(k.upper())
  return [valid, invalid]
def get_play(board, new_board):
    new_place = []
    for i in range(15):
      for j in range(15):
        if board[i][j] != new_board[i][j]:
          new_place.append([i, j, new_board[i][j]])
    row = new_place[0][0]
    col = new_place[0][1]
    if len(new_place) == 1 or row == new_place[1][0]:
      down = 0
    else:
      if col == new_place[1][1]:
        down = 1
    tiles = ''
    for j in new_place:
      tiles += j[2].upper()
    return [row, col, down, tiles]
def play(row,col,down,tiles,board):
    flg, new_board = place_tiles(row, col, down, tiles, board)
    if not flg:
      return -1
    else:
      old_word = get_all_words(board)[0]
      new_word, invalid = get_all_words(new_board)
      if old_word == new_word or len(old_word) > len(new_word) or invalid:
        return -1
      else:
        score = 0
        for i in new_word:
          if i not in old_word:
            for j in i:
              score += get_value(j)
          else:
            old_word.remove(i)
        if len(tiles) > 6:
          score += 50
        return score
def best_play(tiles,board):
  valid_play = []
  list_score = []
  for i in range(15):
    for j in range(15):
      for k in range(2):
        score = play(i, j, k, tiles, board)
        if score != -1:
          valid_play.append([score, i, j, k])
          list_score.append(score)
  if not valid_play:
    return [-1,-1,-1,-1]
  else:
    max_score = max(list_score)
    ans = []
    for l in valid_play:
      if l[0] == max_score:
        ans.append([l[1], l[2], l[3]])
    ans.sort()
    return [max_score, ans[0][0], ans[0][1], ans[0][2]]

00190: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0
[50-1]
test_play_20.0
[9-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_100.0IndexError('list index out of range')
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0IndexError('list index out of range')
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[359]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 1406, 'const': 269, 'code+const': 1675}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    list_valid,list_invalid = [],[]
    for row in range(len(board)):
        st = ''
        for column in range(len(board[0])):
            if board[row][column] != '':
                st += board[row][column]
            else:
                if len(st) != 0:
                    if is_valid(st) == True:
                        list_valid.append(st)
                    else:
                        if len(st) >= 2:
                            list_invalid.append(st)
                    st = ''
        else:
            if len(st) != 0:
                if is_valid(st) == True:
                    list_valid.append(st)
                else:
                    if len(st) >= 2:
                        list_invalid.append(st)
    for column in range(len(board[0])):
        st = ''
        for row in range(len(board)):
            if board[row][column] != '':
                st += board[row][column]
            else:
                if len(st) != 0:
                    if is_valid(st) == True:
                        list_valid.append(st)
                    else:
                        if len(st) >= 2:
                            list_invalid.append(st)
                    st = ''
        else:
            if len(st) != 0:
                if is_valid(st) == True:
                    list_valid.append(st)
                else:
                    if len(st) >= 2:
                        list_invalid.append(st)
    list_valid.sort()
    list_invalid.sort()
    return [list_valid,list_invalid]
def get_play(board, new_board):
    list = []
    c = 0
    for row in range(len(board)):
        for column in range(len(board[0])):
            if board[row][column] != new_board[row][column]:
                list.append([row,column])
    st = ''
    for e in list:
        st += new_board[e[0]][e[1]]
    if len(st) == 1:
        c = 0
    else:
        if list[0][0] != list[1][0]:
            c = 1
    return [list[0][0],list[0][1],c,st]
def play(row,col,down,tiles,board):
    board_cop = copy_board(board)
    st = ''
    k = 0
    if down == 0:
        c = 0
        while k < len(tiles):
            if board_cop[row][col+c] == '':
                board_cop[row][col+c] = tiles[k]
                k += 1
            c += 1
        c = 0
        for e in range(len(board)):
            if board_cop[row][col+c] != '':
                st += board_cop[row][col+c]
                c += 1
            else:
                break
        if is_valid(st) == -1 :
            return -1
        else:
            score = 0
            list_a = get_all_words(board)
            list_b = get_all_words(board_cop)
            list_b = list_b[0]
            for e in list_a[0]:
                if e in list_b:
                        list_b.remove(e)
            for i in list_b:
                for e in i:
                    for j in e:
                        score += get_value(j)
            if len(tiles) >= 7:
                score += 50
    else:
        c = 0
        while k < len(tiles):
            if board_cop[row+c][col] == '':
                board_cop[row+c][col] = tiles[k]
                k += 1
            c += 1
        c = 0
        for e in range(len(board)):
            if board_cop[row+c][col] != '':
                st += board_cop[row+c][col]
                c += 1
            else:
                break
        if is_valid(st) == -1 :
            return -1
        else:
            score = 0
            list_a = get_all_words(board)
            list_b = get_all_words(board_cop)
            list_b = list_b[0]
            for e in list_a[0]:
                if e in list_b:
                    list_b.remove(e)
            for i in list_b:
                for e in i:
                    for j in e:
                        score += get_value(j)
            if len(tiles) >= 7:
                score += 50
    return score
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00191: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 3822, 'const': 378, 'code+const': 4200}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid = []
    invalid = []
    for e in board:
        i = 0
        aa = ''
        while i < 15:
            if i == 14:
                if e[i] != '':
                    aa += e[i]
                    aa = aa.upper()
                    if len(aa) > 1:
                        if is_valid(aa) == True:
                            valid.append(aa)
                        else:
                            invalid.append(aa)
                    else:
                        pass
                elif e[i] == '':
                    pass
                aa = ''
            elif e[i] == '' and e[i+1] == '':
                pass
            elif e[i] == '' and e[i+1] != '':
                pass
            elif e[i] != '' and e[i+1] != '':
                aa += e[i]
            elif e[i] != '' and e[i+1] == '':
                aa += e[i]
                aa = aa.upper()
                if len(aa) > 1:
                    if is_valid(aa) == True:
                        valid.append(aa)
                    else:
                        invalid.append(aa)
                else:
                    pass
                aa = ''
            i += 1
    i = 0
    j = 0
    aa = ''
    while j < 15:
        while i < 15:
            if i == 14:
                if board[i][j] != '':
                    aa += board[i][j]
                    aa = aa.upper()
                    if len(aa) > 1:
                        if is_valid(aa) == True:
                            valid.append(aa)
                        else:
                            invalid.append(aa)
                    else:
                        pass 
                elif board[i][j] == '':
                    pass
                aa = ''
            elif board[i][j] == '' and board[i+1][j] == '':
                pass
            elif board[i][j] == '' and board[i+1][j] != '':
                pass
            elif board[i][j] != '' and board[i+1][j] != '':
                aa += board[i][j]
            elif board[i][j] != '' and board[i+1][j] == '':
                aa += board[i][j]
                aa = aa.upper()
                if len(aa) > 1:
                    if is_valid(aa) == True:
                        valid.append(aa)
                    else:
                        invalid.append(aa)
                else:
                    pass
                aa = ''
            i += 1
        j += 1
        i = 0
    valid.sort()
    invalid.sort()
    return [valid,invalid]
def get_play(board, new_board):
    i = 0
    j = 0
    ans = ''
    down = 0
    ans1 = 0
    ans2 = 0
    while i < 15:
        while j < 15:
            if board[i][j] == new_board[i][j]:
                pass
            else:
                ans1 = i
                ans2 = j
                if j == 14 and i != 14 and board[i+1][j] == new_board[i+1][j]:
                    ans += new_board[i][j]
                    down = 1
                    while True:
                        i += 1
                        if i == 15:
                            if len(ans)== 1:
                              down = 0
                            return [ans1,ans2,down,ans]
                        elif board[i][j] == new_board[i][j] and new_board != '':
                            pass
                        elif board[i][j] != new_board[i][j] and new_board != '':
                            ans += new_board[i][j]
                        elif board[i][j] == new_board[i][j] and new_board == '':
                            if len(ans)== 1:
                              down = 0
                            return [ans1,ans2,down,ans]
                elif i == 14 and j != 14 and board[i][j+1] == new_board[i][j+1]:
                    ans += new_board[i][j]
                    while True:
                        j += 1
                        if j == 15:
                            return [ans1,ans2,down,ans]
                        elif board[i][j] == new_board[i][j] and new_board != '':
                            pass
                        elif board[i][j] != new_board[i][j] and new_board != '':
                            ans += new_board[i][j]
                        elif board[i][j] == new_board[i][j] and new_board == '':
                            return [ans1,ans2,down,ans]
                elif i == 14 and j == 14:
                    ans += new_board[i][j]
                    return [ans1,ans2,down,ans]
                elif i == 14 and board[i][j+1] != new_board[i][j+1]:
                    ans += new_board[i][j]
                    while True:
                        j += 1
                        if j == 15:
                            return [ans1,ans2,down,ans]
                        elif board[i][j] != new_board[i][j] and new_board[i][j] != '':
                            ans += new_board[i][j]
                        elif board[i][j] == new_board[i][j] and new_board[i][j] != '':
                            pass
                        elif board[i][j] == new_board[i][j] and new_board[i][j] == '':
                            return [ans1,ans2,down,ans]
                elif j == 14 and board[i+1][j] != new_board[i+1][j]:
                    ans += new_board[i][j]
                    down = 1
                    while True:
                        i += 1
                        if i == 15:
                            if len(ans)== 1:
                              down = 0
                            return [ans1,ans2,down,ans]
                        elif board[i][j] != new_board[i][j] and new_board[i][j] != '':
                            ans += new_board[i][j]
                        elif board[i][j] == new_board[i][j] and new_board[i][j] != '':
                            pass
                        elif board[i][j] == new_board[i][j] and new_board[i][j] == '':
                            if len(ans)== 1:
                              down = 0
                            return [ans1,ans2,down,ans]
                elif board[i][j+1] != new_board[i][j+1] and j != 14:
                    ans += new_board[i][j]
                    while True:
                        j += 1
                        if j == 15:
                            return [ans1,ans2,down,ans]
                        elif board[i][j] != new_board[i][j] and new_board[i][j] != '':
                            ans += new_board[i][j]
                        elif board[i][j] == new_board[i][j] and new_board[i][j] != '':
                            pass
                        elif board[i][j] == new_board[i][j] and new_board[i][j] == '':
                            return [ans1,ans2,down,ans]
                elif board[i+1][j] != new_board[i+1][j] and i != 14:
                    ans += new_board[i][j]
                    down = 1
                    while True:
                        i += 1
                        if i == 15:
                            if len(ans)== 1:
                               down = 0
                            return [ans1,ans2,down,ans]
                        elif board[i][j] != new_board[i][j] and new_board[i][j] != '':
                            ans += new_board[i][j]
                        elif board[i][j] == new_board[i][j] and new_board[i][j] != '':
                            pass
                        elif board[i][j] == new_board[i][j] and new_board[i][j] == '':
                            if len(ans)== 1:
                              down = 0
                            return [ans1,ans2,down,ans]
                elif board[i][j+1] == new_board[i][j+1] and new_board[i][j+1] != '':
                    ans += new_board[i][j]
                    while True:
                        j += 1
                        if j == 15:
                            return [ans1,ans2,down,ans]
                        elif board[i][j] == new_board[i][j] and new_board[i][j] != '':
                            pass
                        elif board[i][j] != new_board[i][j] and new_board[i][j] != '':
                            ans += new_board[i][j]
                        elif board[i][j] == new_board[i][j] and new_board[i][j] == '':
                            return [ans1,ans2,down,ans]
                elif board[i+1][j] == new_board[i+1][j] and new_board[i+1][j] != '':
                    ans += new_board[i][j]
                    down = 1
                    while True:
                        i += 1
                        if i == 15:
                            if len(ans)== 1:
                              down = 0
                            return [ans1,ans2,down,ans]
                        elif board[i][j] == new_board[i][j] and new_board[i][j] != '':
                            pass
                        elif board[i][j] != new_board[i][j] and new_board[i][j] != '':
                            ans += new_board[i][j]
                        elif board[i][j] == new_board[i][j] and new_board[i][j] == '':
                            if len(ans)== 1:
                              down = 0
                            return [ans1,ans2,down,ans]
            j += 1
        i += 1
        j = 0
def play(row,col,down,tiles,board):
    score = 0
    Bingo = False
    if len(tiles) >= 7:
      Bingo = True
    v,new_board = place_tiles(row,col,down,tiles,board)
    if v == False:
        return -1
    elif v == True:
        oldva, oldinva = get_all_words(board)
        newva, newinva = get_all_words(new_board)
        for e in oldva:
            if e in newva:
              newva.remove(e)
        if len(newva) != 0 and len(newinva) == 0:
          for e in newva:
              point = 0
              for a in e:
                  point += get_value(a)
              score += point
          if Bingo == True:
              score += 50
          return score
        else:
          return -1
def best_play(tiles,board):
    ans = []
    i = 0
    j = 0
    while i < 15:
        while j < 15:
            score = play(i,j,0,tiles,board)
            if score == -1:
                ans.append([(-1)*score,-1,-1,-1])
            else:
                ans.append([(-1)*score,i,j,0])
            score = play(i,j,1,tiles,board)
            if score == -1:
                ans.append([(-1)*score,-1,-1,-1])
            else:
                ans.append([(-1)*score,i,j,1])
            j += 1
        i += 1
        j = 0
    ans.sort()
    ans1 = ans[0]
    ans2 = [(ans1[0]*-1),ans1[1],ans1[2],ans1[3]]
    return ans2

00192: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1126, 'const': 334, 'code+const': 1460}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    ans=[]
    a=''
    b=''
    fians=[[],[]]
    for i in range (15):
        for j in range(15):
            if "A" <= board[i][j] <="z":
                a+=board[i][j]
            else:
                if a!="":
                    ans.append(a)
                    a=''
            if "A" <= board[j][i] <="z":
                b+=board[j][i]
            else:
                if b!="":
                    ans.append(b)
                    b=''
        if b!="":
            ans.append(b)
            b=''
        if a!="":
            ans.append(a)
            a=''
    for i in ans:
        f=is_valid(i)
        if f:
            fians[0].append(i)
        elif not f and len(i)!=1 :
            fians[1].append(i)
    real_f=[]
    for i in fians:
        i.sort()
        real_f.append(i)
    return real_f
def get_play(board, new_board):
    a=[]
    b=''
    ans=[]
    for i in range (15):
        for j in range(15):
            if board[i][j]!= new_board[i][j]:
                a.append([i,j])
                b+=(new_board[i][j])
    if len(b)==1 or a[0][0]==a[1][0]:
      for k in a[0]:
        ans.append(k)
      ans.append(0)
      ans.append(b)
      return ans
    elif a[0][1]==a[1][1]:
      for k in a[0]:
        ans.append(k)
      ans.append(1)
      ans.append(b)
      return ans
def play(row,col,down,tiles,board):
    [x,y]=get_all_words(board)
    s=[]
    c=0
    [x1,y1]=place_tiles(row,col,down,tiles,board)
    [x2,y2]=get_all_words(y1)
    if not x1 :
        return -1
    elif len(y2)!=0:
        return -1
    else:
        [x2,y2]=get_all_words(y1)
        for i in range(len(x2)):
          if not x2[i] in x:
            s.append(x2[i])
          else:
            x.remove(x2[i])
        for j in range(len(s)):
            for k in range(len(s[j])):
              c+=get_value(s[j][k])
        if len(tiles)>=7:
          c+=50
    return c
def best_play(tiles,board):
        a=[]
        s=[]
        fi=[]
        for j in range(15):
          for k in range(15):
            for l in range(2):
              boardAbutcopy = copy_board(board)
              p=play(j,k,l,tiles,boardAbutcopy)
              if p!=-1:
                a.append([p,j,k,l])
              s.append(p)  
        if len(a)==0:
          return([-1,-1,-1,-1])                   
        for h in a:
          if h[0]==max(s):
            fi.append(h)
        fi.sort()
        return fi[0]

00193: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_60.0
[[6, 7, 01, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_20.0
[[0-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1160, 'const': 282, 'code+const': 1442}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid_words = []
  invalid_words = []
  word = ''
  for i in range(len(board)):
    for j in range(len(board[0])):
      if board[i][j] != '':
        word += board[i][j]
      elif word != '' and len(word) >= 2:
        if is_valid(word):
          valid_words.append(word)
        else:
          invalid_words.append(word)
        word = ''
      elif len(word) == 1:
        word = ''
    if word != '' and len(word) >= 2:
      if is_valid(word):
        valid_words.append(word)
      else:
        invalid_words.append(word)
    elif len(word) == 1:
        word = ''
    word = ''
  for i in range(len(board)):
    for j in range(len(board[0])):
      if board[j][i] != '':
        word += board[j][i]
      elif word != '' and len(word) >= 2:
        if is_valid(word):
          valid_words.append(word)
        else:
          invalid_words.append(word)
        word = ''
      elif len(word) == 1:
        word = ''
    if word != '' and len(word) >= 2:
      if is_valid(word):
        valid_words.append(word)
      else:
        invalid_words.append(word)
    elif len(word) == 1:
        word = ''
    word = ''
  valid_words.sort()
  invalid_words.sort()
  return [valid_words,invalid_words]
def get_play(board, new_board):
  tiles = ''
  row = 0
  column = 0
  down = 0
  for i in range(len(board)):
    for j in range(len(board[0])):
      if board[i][j] != new_board[i][j]:
        tiles += new_board[i][j]
        if row == 0 and column == 0:
          row = i
          column = j
        if i != len(board)-1:
          if new_board[i+1][j] != board[i+1][j]:
            down = 1
  if tiles != '' and len(tiles) == 1:
    down = 0
  return [row,column,down,tiles]
def play(row,col,down,tiles,board):
  score = 0
  new_board = place_tiles(row,col,down,tiles,board)[1]
  old_words = get_all_words(board)
  new_words = get_all_words(new_board)
  if old_words[1] != new_words[1]:
    return -1
  else:
    for i in range(len(new_words[0])):
      if new_words[0][i] not in old_words[0]:
        for e in new_words[0][i]:
          score += get_value(e)
      elif new_words[0][i] in old_words[0]:
        old_words[0].remove(new_words[0][i])
  if len(tiles) >= 7:
    score+=50
  return score
def best_play(tiles,board):
  best_score = 0
  score = 0
  row = -1
  col = -1
  down = -1
  for i in range(len(board)):
    for j in range(len(board[0])):
      for k in range(0,2):
        score = play(i,j,k,tiles,board)
        if score > best_score:
          best_score = score
          row = i
          col = j
          down = k
  if score == 50 and row == 0 and col == 0 and down == 0:
    return [-1,-1,-1,-1]
  return [best_score,row,col,down]

00194: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1022, 'const': 310, 'code+const': 1332}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  stword = ''
  word = []
  valid = []
  invalid = []
  for i in range(15):
    for j in range(15):
      if board[i][j] != '':
        stword += board[i][j]
      elif board[i][j] == '' and len(stword) > 1:
        word.append(stword)
        stword = ''
      else:
        stword = ''
    if len(stword) > 1:
      word.append(stword)
    stword = ''
  for i in range(15):
    for j in range(15):
      if board[j][i] != '':
        stword += board[j][i]
      elif board[j][i] == '' and len(stword) > 1:
        word.append(stword)
        stword = ''
      else:
        stword = ''
    if len(stword) > 1:
      word.append(stword)
    stword = ''
  for k in word:
    if is_valid(k) == True:
      valid.append(k)
    else:
      invalid.append(k)
  valid.sort()
  invalid.sort()
  return [valid,invalid]
def get_play(board, new_board):
  stword = ''
  point = []
  for i in range(15):
    for j in range(15):
      if board[i][j] != new_board[i][j]:
        stword += new_board[i][j]
        point.append([i,j])
  down = 0
  if len(point) > 1 and point[0][0] < point[1][0]:
    down = 1
  return [point[0][0],point[0][1],down,stword]
def play(row,col,down,tiles,board):
  new_board = place_tiles(row,col,down,tiles,board)[1]
  can = place_tiles(row,col,down,tiles,board)[0]
  if can == False:
    return -1
  oldboard = get_all_words(board)[0]
  newboard = get_all_words(new_board)[0]
  oldboardin = get_all_words(board)[1]
  newboardin = get_all_words(new_board)[1]
  new_word = []
  for i in newboard:
    if i in oldboard:
      oldboard.remove(i)
    else:
      new_word.append(i)
  new_wordin = []
  for i in newboardin:
    if i in oldboardin:
      oldboardin.remove(i)
    else:
      new_wordin.append(i)
  if len(new_wordin) != 0:
    return -1
  score = 0
  if len(tiles) >= 7:
    score += 50
  for k in new_word:
    for l in k:
      score += get_value(l)
  return score
def best_play(tiles,board):
  kep = [-1,0,0,0]
  score = 0
  for row in range(15):
    for col in range(15):
      for down in range(2):
        score = play(row,col,down,tiles,board)
        if kep[0] < score:
          kep = [score,row,col,down]
  if kep[0] == -1:
    return [-1,-1,-1,-1]
  else:
    return kep

00195: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_30.0
[-14]
test_play_40.0
[-14, -21]
test_play_50.0
[-160, -172]
test_play_60.0
[-160, -1]
test_play_70.0
[-163, -14]
test_play_80.0
[-162]
test_play_90.0
[-11, -15, -124, -17, -185, -12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[-167, -61, -128, -11, -13, -185, -11, -12, -17, -125, -17, -14, -21, -132, -12, -15, -16, -168, -16, -13, -10, -127, -128]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_140.0
[-18, -120, -126, -1]
test_play_150.0
[-139]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 1952, 'const': 585, 'code+const': 2537}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    keep = [[],[]]
    all_word = []
    for row in board :
        word = ""
        for i in range(15) :
            if "a" <= row[i].lower() <= "z" :
                word += row[i]
                if 'a'<= row[14].lower() <= 'z' and i == 14:
                    if len(word) > 1 :
                        all_word.append(word)
                        word = ""
            else : 
                if len(word) > 1 :
                    all_word.append(word)
                word = ""
    temp_board = [[board[c][r] for c in range(15)] for r in range(15) ] 
    for row in temp_board :
        word = ""
        for i in range(15) :
            if "a" <= row[i].lower() <= "z" :
                word += row[i]
                if 'a'<= row[i].lower() <= 'z' and i == 14 :
                    if len(word) > 1 :
                        all_word.append(word)
                        word = ""
            else : 
                if len(word) > 1 :
                    all_word.append(word)
                word = ""
    for e in all_word :
        if is_valid(e) == True :
            keep[0].append(e)
        else :
            keep[1].append(e)
    keep[0].sort() ; keep[1].sort()
    return keep
def get_play(board, new_board):
    word = ""
    down = 0
    for row in range(15): 
        for col in  range(15):
            if board[row][col] != new_board[row][col] :
                if len(word) == 0 :
                    ind_first = row,col
                word += new_board[row][col]
                if len(word) == 2 :
                    if row != ind_first[0] :
                        down = 1
    return [ind_first[0],ind_first[1],down,word]
def find_pos(word,board) :
    worddy = ""
    rc = []
    all_pos_word = []
    for row in range(15) :
        for col in range(15) :
            if 'A' <= board[row][col] <= 'Z' :
                worddy += board[row][col]
                rc.append([row,col])
                if col == 14 :
                    if worddy == word :
                        all_pos_word.append(rc[0]+[0])
                    worddy = ""
                    rc = []
            else :
                if worddy == word :
                    all_pos_word.append(rc[0]+[0])
                worddy = ""
                rc = []
    temp_board = [[board[c][r] for c in range(15)] for r in range(15) ]
    worddy = ""
    for row in range(15) :
        for col in range(15) :
            if 'A' <= temp_board[row][col] <= 'Z' :
                worddy += temp_board[row][col]
                rc.append([col,row]) 
                if col == 14 :
                    if worddy == word :
                        all_pos_word.append(rc[0]+[-1])
                    worddy = ""
                    rc = []
            else :
                if worddy == word :
                    all_pos_word.append(rc[0]+[-1])
                worddy = ""
                rc = []
    return all_pos_word
def play(row, col, down, tiles, board):
    score = 0
    have = False
    no_score_word = []
    new_board = copy_board(board)
    new_board = place_tiles(row, col, down, tiles, new_board)[1]
    word_board = get_all_words(board)
    word_new_board = get_all_words(new_board)
    old_word_pos = dict()
    new_word_pos = dict()
    all_word = []
    real_added_words = []
    for e in word_new_board[1]:
        if e not in word_board[1]:
            no_score_word.append(e)
    for word in word_board[0]:
        if word not in old_word_pos:
            old_word_pos[word] = find_pos(word,board)
            new_word_pos[word] = find_pos(word,board)
        if word not in all_word:
            all_word.append(word)
    for word in word_new_board[0]:
        new_word_pos[word] = find_pos(word,new_board)
        if word not in old_word_pos:
            old_word_pos[word] = []
        if word not in all_word:
            all_word.append(word)
    for key in all_word:
        for pos in old_word_pos[key]:
            if pos in new_word_pos[key]:
                new_word_pos[key].remove(pos)
    for key in all_word:
        real_added_words += [key]*len(new_word_pos[key])
    if len(real_added_words) >= 1:
        have = True
    use = False
    if have:
        for word in real_added_words:
            keep_tiles = [e for e in tiles]
            for c in word:
                if c.lower() in keep_tiles:
                    keep_tiles.remove(c.lower())
                score += letter_value[c.lower()]
            if len(keep_tiles) == 0:
                use = True
        if len(tiles) >= 7:
            score += 50
    if len(no_score_word) > 0:
        return -1
    if use != True:
        return -1
    return score
def best_play(tiles,board): 
    all_score = []
    for row in range(15) :
        for col in range(15) :
            for down in range(2) :
                score = play(row,col,down,tiles,board)
                if score > 0 :
                    all_score.append([-score,row,col,down])
    if len(all_score) > 0 :
        all_score.sort()
        score,row,col,down = all_score[0]
        return [-score,row,col,down]
    return [-1,-1,-1,-1]

00196: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_40.0
[[['CONNERS', 'UNWITS', 'VILDE', 'CONNERS', 'ZOO'], ['VR', 'FEWZ', 'WF', 'TW']]]
test_get_all_words_50.0
[[['ON', 'BI', 'HELIOS', 'AR', 'UNOBSERVANT'], ['NOOOOO', 'LIE', 'AMV', 'LIAMNOOOOO', 'ONIGIRI']]]
test_get_all_words_60.0
[[['QINFY', 'INFLATER', 'FMONEY', 'YANE', 'UTPE', 'PEQIN', 'INFLAUTER', 'MONEYA'], ['QYUP'], []]]
test_get_all_words_70.0
[[['MANGIERT', 'RETAINS', 'MEGI', 'ATIN', 'MANAGIER', 'GIME', 'INA', 'RETAINS'], []]]
test_get_all_words_80.0
[[['SIF', 'ITERANT', 'RETAINS', 'URANITEH', 'STAIRFEDH', 'FEHRN', 'SIF', 'IT', 'FITERANT', 'RNAEIS', 'ATTRE',
   'NARESI', 'RETAINS', 'NASI', 'SIF',
   'STAIRED', 'TI', 'URANITEH'],
  []]]
test_get_all_words_90.0
[[['OXYPHENBUTAZONED', 'PIER', 'ADORM', 'ADOM', 'BRAEINWASHING', 'DITM', 'FADOD', 'ADOM', 'DSOM', 'DOHM', 'DOMI', 'EDOM',
   'DODM', 'MODOM',
   'MDOM', 'MDONSTERSM', 'DSOPACIFYING', 'XI', 'YED', 'EDOM', 'PREQUJACULATIFIEDNG', 'DLOM', 'EDMI',
   'DOMI', 'NMO', 'DOMOD', 'DOM', 'BRAIONWASHING', 'UMTERS', 'DNOM',
   'ADOF', 'ZOOTHM', 'OM', 'EJOPACULATIFYING'],
  ['OXYPHENBUTAZONE', 'CQPIER', 'IPREQUALIFIED', 'YLOUM', 'IDXIM', 'NOFYE',
 'GMI',  'HDZOMOT'],
  []]]
test_get_all_words_100.0
[[['TRATA', 'GIARK', 'JCALP', 'REFOOT', 'XFU', 'EDGIO', 'GINTERNED', 'GYVED', 'HOCALPK', 'ARKIF', 'INTUERNEENSD', 'ITRIALED',
   'TOJA',
   'OXJIDSVE', 'MUN', 'OXIFDS', 'SITO', 'HINGYVE', 'HTOCK', 'FUGITO', 'ONTRAT', 'JTRIVALED', 'AA'],
  ['TFUREENS', 'RXU'],
 'IG', ['JOJUOLOOMJYOOI', 'VV', 'NSITHING', 'SFOOT', 'RO', 'JT', 'RITA', 'NL', 'GP']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_30.0
[-14]
test_play_40.0
[-14, -21]
test_play_50.0
[-160, -172]
test_play_60.0
[-160, -1]
test_play_70.0
[-163, -14]
test_play_80.0
[-162]
test_play_90.0
[-11, -15, -124, -17, -185, -12]
test_play_100.0
[-19, -133, -136, -18, -12, -173, -165, -17, -174, -16]
test_play_110.0
[-167, -61, -128, -11, -13, -185, -11, -12, -17, -125, -17, -14, -21, -132, -12, -15, -16, -168, -16, -13, -10, -127, -128]
test_play_120.0
[-11]
test_play_130.0
[-19]
test_play_140.0
[-18, -120, -126, -1]
test_play_150.0
[-139]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 856, 'const': 211, 'code+const': 1067}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid_word = []
  inValid_word = []
  word_h = []
  word_v = []
  board_size = len(board)
  for row in range(board_size):
    temp_word_h = []
    temp_word_v = []
    for col in range(board_size):
      if(board[row][col] != ''):
        temp_word_h.append(board[row][col])
        if(col+1 < board_size):
          if(board[row][col+1] == '' and len(temp_word_h)> 1 ):
            word_h.append("".join(temp_word_h))
            temp_word_h = []
        if(col == board_size-1 and len(temp_word_h) > 1 and board[row][board_size-2] != ''):
          word_h.append("".join(temp_word_h))
          temp_word_h = []
      if(board[col][row] != ''):
        temp_word_v.append(board[col][row])
        if(col+1 < board_size):
          if(board[col+1][row] == '' and len(temp_word_v)> 1 ):
            word_v.append("".join(temp_word_v))
            temp_word_v = []
        if(col == board_size-1 and len(temp_word_v) > 1 and board[board_size-2][row] != ''):
          word_v.append("".join(temp_word_v))
          temp_word_v = []
  for word in word_h :
    if(is_valid(word)):
      valid_word.append(word)
    else:
      inValid_word.append(word)
  for word in word_v :
    if(is_valid(word)):
      valid_word.append(word)
    else:
      inValid_word.append(word)
  return [valid_word,inValid_word]
def find_index_list(board):
  index = []
  for i in range(len(board)):
    for j in range(len(board)):
      if(board[j][i] != ''):
        index.append([j,i])
  return index
def get_play(board, new_board):
  index_list_board = find_index_list(board)
  index_list_new_board = find_index_list(new_board)
  filter_not_dup = []
  for i in index_list_new_board:
      if i not in index_list_board:
        filter_not_dup.append(i)
  down = 0
  for i in range(len(filter_not_dup)):
    if(filter_not_dup[0][0] != filter_not_dup[i][0]):
      down = 1
  if(len(filter_not_dup) == 1):
    down = 0
  tiles = []
  for tile in filter_not_dup:
    i,j = tile
    tiles.append((new_board[i][j]))
  row,col = filter_not_dup[0]
  tiles = "".join(tiles)
  return [row,col,down,tiles]
def play(row,col,down,tiles,board):
  return -1
def best_play(tiles,board):
  return [-1,-1,-1,-1]

00197: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1424, 'const': 462, 'code+const': 1886}
check_import({'allowable': ['math']}): none
def check50(word,tiles) :
    c = 0
    tiles = tiles.upper()
    for i in word :
      if i in tiles :
        c += 1
        tiles = tiles[:tiles.find(i)] + tiles[tiles.find(i)+1:]
    if c >= 7 :
      return 50
    else :
      return 0
def get_all_words(board):
    o =[[],[]]
    w1 = ''
    w2 = ''
    wl = []
    for v in range(len(board[0])) :
      for h in range(len(board)) :
        if "A" <= board[v][h] <= "Z" :
          w1 += board[v][h]
        elif len(w1) >= 2 :
          wl.append(w1)
          w1 =''
        else:
          w1 = ''
        if len(w1) >= 2 and h == len(board[0])-1 :
          wl.append(w1)
          w1 =''
        elif len(w1) < 2 and  h == len(board[0])-1 :
          w1 = ""
        if "A" <= board[h][v] <= "Z" :
          w2 += board[h][v]
        elif len(w2) >= 2 :
          wl.append(w2)
          w2 =''
        else:
          w2 = ''
        if len(w2) >= 2 and h == len(board)-1 :
          wl.append(w2)
          w2 =''
        elif len(w2) < 2 and  h == len(board)-1 :
          w2 = ""
    wl.sort()
    for e in wl :
      if is_valid(e) :
        o[0].append(e)
      else:
        o[1].append(e)
    return  o
def get_play(board, new_board):
    l = []
    for v in range(len(board[0])) :
      for h in range(len(board)) :
        if board[v][h] != new_board[v][h] :
          l.append([v,h,new_board[v][h]])
    if len(l) > 1 :
      if l[0][0] - l[1][0] == 0:
        o = l[0][:2]
        o.append(0)
      elif l[0][1] - l[1][1] == 0:
        o = l[0][:2]
        o.append(1)
      w = ""
      for i in l :
        w += i[-1]
      o.append(w)
    else :
      o = l[0]
      o.insert(2,0)
    return o
def play(row,col,down,tiles,board):
    check,nboard = place_tiles(row,col,down,tiles,board)
    if nboard[7][7] == "*" :
      return -1
    elif check == False :
      return -1
    else :
      c = 0
      x1 = get_all_words(board)
      l1,y1 = x1[0],x1[1]
      ll1 =len(l1)
      x2 = get_all_words(nboard)
      l2,y2 = x2[0],x2[1]
      ll2 = len(l2)
      if len(y2)-len(y1)> 0 :
        return -1
      else :
        for e in l2 :
          if e in l1 :
            l1.remove(e)
          elif e not in l1 :
            for i in e :
              c += get_value(i)
            if len(e) >= 7 :
              c += check50(e,tiles)
        if ll2 < ll1 :
          c= -1
        return  c
def best_play(tiles,board):
    l = []
    for c in range(len(board[0])) :
      for r in range(len(board)) :
        l.append([play(r,c,0,tiles,board)*-1,r,c,0])
        l.append([play(r,c,1,tiles,board)*-1,r,c,1])
    l.sort()
    if len(l) == 0 or l[0][0] == 0 or l[0][0] == 1:
      return [-1,-1,-1,-1]
    else :
      return [l[0][0]*-1,l[0][1],l[0][2],l[0][3]]

00198: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 950, 'const': 348, 'code+const': 1298}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_w = [] ; invalid_w = [] ; s = ''
    for i in range(len(board)):
      s += ' '
      for j in range(15):
        if board[i][j] != '':
          s += board[i][j]
        else:
          s += ' '
    for j in range(15):
      s += ' '
      for i in range(len(board)):
        if board[i][j] != '':
          s += board[i][j]
        else:
          s += ' '
    s = s.split()
    for i in range(len(s)):
      if len(s[i]) >= 2:
        if is_valid(s[i]) == True:
          valid_w.append(s[i])
        elif is_valid(s[i]) == False:
          invalid_w.append(s[i])
    valid_w.sort() ; invalid_w.sort()
    return [valid_w, invalid_w]
def get_play(board, new_board):
    s = '' ; l = [] ; down = 0
    for i in range(len(board)):
      for j in range(15):
        if board[i][j] != new_board[i][j]:
          s += new_board[i][j]
          l.append([j, i])
    if l[0][1] < l[-1][1]:
      down = 1
    return [l[0][1], l[0][0], down, s]
def play(row,col,down,tiles,board):
    valid, new_board = place_tiles(row, col, down, tiles, board)
    o_valid, o_invalid = get_all_words(board)
    n_valid, n_invalid = get_all_words(new_board)
    score = 0
    if (valid == False) or (len(n_invalid) > 0):
      return -1
    else:
      for e in n_valid:
        if e not in o_valid:
          for j in range(len(e)):
            score += get_value(e[j])
        else:
          o_valid.remove(e)
      if len(tiles) >= 7:
          score += 50
    return score
def best_play(tiles,board):
    l = [] ; ll = []
    for i in range(15):
      for j in range(len(board)):
        l.append([play(i, j, 0, tiles, board), i, j, 0])
        l.append([play(i, j, 1, tiles, board), i, j, 1])
    for i in range(len(l)):
      if l[i] == [-1, 0, 0, 0]:
        ll.append([-1, -1, -1, -1])
      else:
        ll.append(l[i])
    ll.sort()
    for i in range(len(ll)):
      if ll[i][0] == ll[-1][0]:
        return ll[i]

00199: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 892, 'const': 312, 'code+const': 1204}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words = list()
    invalid_words = list()
    for i in range(15):
        word_row = ''
        word_colum= ''
        for j in range(15):
            if board[i][j] != '':
                word_row += board[i][j].upper()
            if (board[i][j] == '' or j == 14) and len(word_row) >= 2:
                if is_valid(word_row):
                    valid_words.append(word_row)
                else:
                    invalid_words.append(word_row)
                word_row = ''
            if board[i][j] == '' and len(word_row) < 2:
                word_row = ''
            if board[j][i] != '':
                word_colum += board[j][i].upper()
            if (board[j][i] == '' or j == 14) and len(word_colum) >= 2:
                if is_valid(word_colum):
                    valid_words.append(word_colum)
                else:
                    invalid_words.append(word_colum)
                word_colum = ''
            if board[j][i] == '' and len(word_colum) < 2:
                word_colum = ''
    valid_words.sort()
    invalid_words.sort()
    return [valid_words, invalid_words]
def get_play(board, new_board):
    tiles = ''
    down = 0
    for i in range(15):
        for j in range(15):
            if board[i][j] != new_board[i][j]:
                if tiles == '':
                    row, col = i, j
                else:
                    dc = col - j
                tiles += new_board[i][j]
    if len(tiles) > 1 and dc == 0:
        down = 1
    return [row, col, down, tiles]
def play(row, col, down, tiles, board):
    v_new_board = place_tiles(row, col, down, tiles, board)
    if v_new_board[0]:
        new_board = v_new_board[1]
        if get_all_words(board)[1] == get_all_words(new_board)[1]:
            list_board = get_all_words(board)[0]
            list_new_board = get_all_words(new_board)[0]
            score_board = 0
            for word in list_new_board:
                if word not in list_board:
                    for letter in word:
                        score_board += get_value(letter)
                else:
                    list_board[list_board.index(word)] = '-'
            if len(tiles) >= 7:
                score_board += 50
            return score_board
        else:
            return -1
    else:
        return -1
def best_play(tiles, board):
    score = -1
    for r in range(15):
        for c in range(15):
            for d in range(2):
                new_score = play(r, c, d, tiles, board)
                if new_score > score and new_score != -1:
                    score = new_score
                    roww,coll,downn = r,c,d
    if score == -1:  return [-1,-1,-1,-1]                  
    return [score, roww, coll,downn]

00200: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1310, 'const': 376, 'code+const': 1686}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    all_words = []
    for i in range(len(board)):
      word = ''
      for j in range(len(board[0])-1):
        if board[i][j] != '':
          word += board[i][j]
        if j+1 == 14 and board[i][j+1] != '':
          word +=  board[i][j+1]
        if board[i][j+1] == '':
          if len(word) >= 2:
            all_words.append(word)
            word = ''
          else:
            word = ''
      all_words.append(word)
    for i in range(len(board[0])):
      word = ''
      for j in range(len(board)-1):
        if board[j][i] != '':
          word += board[j][i]
        if j+1 == 14 and board[j+1][i] != '':
          word += board[j+1][i]
        if board[j+1][i] == '':
          if len(word) >= 2:
            all_words.append(word)
            word = ''
          else:
            word = ''
      all_words.append(word)
    valid_words = []
    invalid_words = []
    if len(all_words) != 0:
      for e in all_words:
        if e != '' and len(e) >= 2:
          if is_valid(e) == True:
            valid_words.append(e)
          elif is_valid(e) == False:
            invalid_words.append(e)
      valid_words.sort()
      invalid_words.sort()
      return [valid_words,invalid_words]
    else:
      return [[],[]]
def get_play(board, new_board):
    row = 0
    col = 0
    down = 0
    tiles = ''
    off = False
    for i in range(len(board)):
      for j in range(len(board[0])):
        if new_board[i][j] != board[i][j]:
          row = i
          col = j
          off = True
          break
      if off : break
    tiles += new_board[i][j]
    for c in range(col+1,len(board[0])):
      if new_board[row][c] != board[row][c]:
        down = 0
        tiles += new_board[row][c]
    for e in range(row+1,len(board)):
      if new_board[e][col] != board[e][col]:
        down = 1
        tiles += new_board[e][col]
    return [row,col,down,tiles]
def play(row,col,down,tiles,board):
    score = 0
    copy = copy_board(board)
    T = place_tiles(row,col,down,tiles,board)[0]
    new_board = place_tiles(row,col,down,tiles,board)[1]
    if T == True:
      new_valid = []
      valid,invalid = get_all_words(new_board)
      old_valid,old_invalid = get_all_words(copy)
      if len(invalid) == 0:
        for e in valid:
          if e not in old_valid:
            new_valid.append(e) 
          if e in old_valid:
            old_valid.remove(e)
        for c in new_valid:
          for ch in c:
            score += get_value(ch)
        if len(tiles) >= 7:
          score += 50
      else:
        score = -1
    else:
      score = -1
    return score
def best_play(tiles,board):
    all_prob = []
    for i in range(15):
      for j in range(15):
        for k in range(2):
            neg_score = -play(i,j,k,tiles,board)
            all_prob.append([neg_score,i,j,k])
    for e in all_prob:
      if e[0] == 1:
        all_prob.remove(e)
    all_prob.sort()
    maximum = all_prob[0]
    maximum[0] = -maximum[0]
    if maximum[0] == -1:
      maximum = [-1,-1,-1,-1]
    return maximum

00201: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 736, 'const': 350, 'code+const': 1086}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  all_words = []
  for x in range(2):
    for n in range(15):
      i,j,word = 0,0,''
      valid_words = []
      invalid_words = []
      while i < 16 and j < 16:
        if x == 0:
            i = n
        else: j = n
        if i < 15 and 15 > j and board[i][j] != '':
          word += board[i][j]
        else:
            if word != '' and len(word) > 1:
              all_words.append(word)
            word = ''
        j += 1
        i += 1
      all_words.sort()
      for w in all_words:
        if is_valid(w):
          valid_words.append(w)
        else:
          invalid_words.append(w)
  return [valid_words,invalid_words]
def get_play(board, new_board):
    row = []
    col = []
    tiles = []
    d = 0
    for i in range(15) :
        for j in range(15) :
            x = new_board[i][j]
            if board[i][j] != x:
              row.append(i)
              if j in col: d = 1
              col.append(j)
              tiles.append(x)
    return [row[0],col[0],d,''.join(tiles)]
def play(row,col,down,tiles,board):
    a,b = place_tiles(row,col,down,tiles,board)
    valid1,invalid1 = get_all_words(board)
    valid2,invalid2 = get_all_words(b)
    if not a or invalid2 != invalid1:
        return -1
    score = 0
    if len(tiles) >= 7:
        score = 50
    for vl in valid2:
        if not vl in valid1:
            for w in vl:
                score += get_value(w)
        else: valid1.remove(vl)
    return score
def best_play(tiles,board):
    sum_score = [-1,-1,-1,-1]
    for i in range(15):
        for j in range(15):
            x = play(i,j,0,tiles,board)
            y = play(i,j,1,tiles,board)
            a = sum_score[0]
            if a < x and x >= y: sum_score = [x,i,j,0]
            elif a < y: sum_score = [y,i,j,1]
    return sum_score

00202: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0
[50-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1120, 'const': 380, 'code+const': 1500}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    alwo=[]
    for i in range(15):
        w1=''
        w2=''
        for j in range(15):
            if board[i][j]!='':
                w1+=board[i][j]
            else:
                if w1!='' :
                    alwo.append(w1)
                w1=''
            if board[j][i]!='':
                w2+=board[j][i]
            else:
                if w2!='':
                    alwo.append(w2)
                w2=''
        if w1!='':
            alwo.append(w1)
        if w2!='':
            alwo.append(w2)   
        va=[]
        inva=[]
        for i in alwo:
            if is_valid(i):
                va.append(i)
            elif len(i)>1:
                inva.append(i)
        va.sort()
        inva.sort()
    return [va,inva]
def get_play(board, new_board):
    nw=''
    for i in range(15):
        for j in range(15):
            if board[i][j]!= new_board[i][j]:
                if nw=='':
                    x=i
                    y=j
                if len(nw)==1:
                    if x==i:
                        c=0
                    else:
                        c=1
                nw+=new_board[i][j]
    if len(nw)==1:
        if (new_board[x+1][y] != '' or new_board[x-1][y] != ''):
            c=0
        elif (new_board[x][y+1] != '' or new_board[x][y-1] != ''):
            c=1
    return [x,y,c,nw]
def play(row,col,down,tiles,board):
    su=0
    nw=[]
    newb=copy_board(board)
    wb=get_all_words(board)
    newb=place_tiles(row,col,down,tiles,newb)
    if not newb[0]:
        return -1
    newb=newb[1:]
    newb=newb[0]
    nwb=get_all_words(newb)
    for i in nwb[0]:
        if i not in wb[0]:
            nw+=i
        else:
            wb[0][wb[0].index(i)]=''
    if nw=='':
        return -1
    for i in nw:
        for j in i:
            su+=get_value(j)
    if len(tiles)>=7:
        su+=50
    if su==0:
        return -1
    else:
        return su
def best_play(tiles,board):
    an=[-1,-1,-1,-1]
    mx=0
    for i in range(15):
        for j in range(15):
            for x in range(2):
                newb=place_tiles(i,j,x,tiles,copy_board(board))
                wb=get_all_words(board)
                su=0
                nw=[]
                if newb[0]:
                    newb=newb[1:][0]
                    nwb=get_all_words(newb)
                    if len(nwb[1])==0:
                        for n in nwb[0]:
                            if n not in wb[0]:
                                nw+=n
                            else:
                                wb[0][wb[0].index(n)]='' 
                        for n in nw:
                            for m in n:
                                su+=get_value(m)
                        if len(tiles)>=7:
                            su+=50
                        if su>mx:
                            an=[su,i,j,x]
                            mx=su
    return an

00203: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1042, 'const': 348, 'code+const': 1390}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid = []
  invalid = []
  word = ''
  rol = ''
  col = ''
  for i in range(15) :
    for j in range(15) :
      if board[i][j] != '' :
        rol += board[i][j]
      else :
        rol += ' '
      if board[j][i] != '' :
        col += board[j][i]
      else :
        col += ' '
    rol += ' '
    col += ' '
  word += rol+' '+col+' '
  data = word.strip().split()
  for e in data :
    info = is_valid(e)
    if len(e) >= 2 :
      if info == True :
        valid.append(e)
      else :
        invalid.append(e)
  valid.sort()
  invalid.sort()
  return [valid,invalid]
def get_play(board, new_board):
  mis = ''
  rol = 0
  col = 0
  x = []
  y = []
  lay = 0
  for i in range(15) :
    for j in range(15) :
      if board[i][j] != new_board[i][j] :
        mis += new_board[i][j]
        if i not in x :
          x.append(i)
        if j not in y :
          y.append(j)
  if len(x) == 1 and len(y) == 1 :
    lay += 0
  elif len(x) == 1 and len(y) != 1 :
    lay += 0
  elif len(x) != 1 and len(y) == 1 :
    lay += 1
  to_out = False
  for i in range(15) :
    for j in range(15) :
      if board[i][j] != new_board[i][j] :
        rol += i
        col += j
        to_out = True
        break
    if to_out : break
  return [rol,col,lay,mis]
def play(row,col,down,tiles,board):
  valid,new_board = place_tiles(row,col,down,tiles,board)
  right1,wrong1 = get_all_words(board)
  right2,wrong2 = get_all_words(new_board)
  for e in right1 : 
    if e in right2 :
      right2.remove(e)
  if len(wrong2) > 0 or valid == False :
    return -1
  score = 0
  if len(tiles) >= 7 :
    score += 50
  for n in right2 :
    for m in n :
      score += get_value(m)
  return score
def best_play(tiles,board):
  out = []
  for i in range(15) :
    for j in range(15) :
      if play(i,j,0,tiles,board) != -1 :
        out.append([-play(i,j,0,tiles,board),i,j,0])
      if play(i,j,1,tiles,board) != -1 :
        out.append([-play(i,j,1,tiles,board),i,j,1])
  out.sort()
  if len(out) == 0 :
    return [-1,-1,-1,-1]
  else :
    out[0][0] = -out[0][0]
    return out[0]

00204: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_30.0
[[['ETERNALS', 'MUSKETEER'], [[]]]]
test_get_all_words_40.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], [[]'FEWZ']]]
test_get_all_words_50.0
[[['HELIOS', 'UNOBSERVANT'], [[]'LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_60.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], [[]]]]
test_get_all_words_70.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], [[]]]]
test_get_all_words_80.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  [[]]]]
test_get_all_words_90.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  [[]]]]
test_get_all_words_100.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  [[]'JOJUOLOOMJYOOI', 'RO']]]
test_get_play_10.0
[[07, 06, 0, 'ICE'], [07, 04, 0, 'JUD'], [04, 05, 01, 'INFSIVE'], [06, 08, 0, 'M']]
test_get_play_20.0
[[01, 07, 01, 'MALEATE'], [05, 06, 01, 'JURY'], [05, 08, 01, 'REWTH'], [01, 08, 0, 'OLEHUNT'],
 [02, 014, 01, 'RAVISES'], [0, 10, 0, 'TOGA'],
 [05, 013, 01, 'POZ'], [05, 05, 01, 'ABAND'],
 [02, 10, 0, 'COYE'], [10, 02, 0, 'FOOS']]
test_get_play_30.0
[[06, 06, 01, 'XUNT']]
test_get_play_40.0
[[07, 01, 0, 'INHERITANCE']]
test_get_play_50.0
[[06, 09, 01, 'CAT']]
test_get_play_60.0
[[06, 07, 01, 'CT']]
test_get_play_70.0
[[07, 03, 0, 'COMDER']]
test_get_play_80.0
[[06, 06, 0, 'AT']]
test_get_play_90.0
[[06, 07, 0, 'M']]
test_get_play_100.0
[[0, 07, 01, 'HEPATICS'], [01, 03, 0, 'MAILS'], [07, 06, 01, 'ARREAR'], [02, 0, 0, 'EASIED'],
 [013, 06, 0, 'SAHIWAL'], [03, 013, 01, 'MICROLOGIES'],
 [014, 07, 0, 'GAS'], [07, 05, 01, 'GOORY'],
 [10, 07, 0, 'SHIPS'], [02, 011, 01, 'MALEFICE'], [0, 10, 01, 'DOOLAN'], [04, 09, 01, 'POGEY'],
 [0, 014, 01, 'AGROS'], [03, 02, 01, 'TONIEST'], [09, 01, 01, 'SLICES'], [04, 0, 0, 'CRONY'],
 [07, 014, 01, 'DIXIT'], [011, 04, 01, 'PINS'],
 [05, 0, 01, 'ARED'], [0, 01, 0, 'GRAFT'], [012, 09, 0, 'MO'],
 [06, 04, 01, 'CAB'], [011, 012, 01, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_30.0
[-14]
test_play_40.0
[-14, -21]
test_play_50.0
[-160, -172]
test_play_60.0
[-160, -1]
test_play_70.0
[-163, -14]
test_play_80.0
[-162]
test_play_90.0
[-11, -15, -124, -17, -185, -12]
test_play_100.0
[-19, -133, -136, -18, -12, -173, -165, -17, -174, -16]
test_play_110.0
[-167, -61, -128, -11, -13, -185, -11, -12, -17, -125, -17, -14, -21, -132, -12, -15, -16, -168, -16, -13, -10, -127, -128]
test_play_120.0
[-11]
test_play_130.0
[-19]
test_play_140.0
[-18, -120, -126, -1]
test_play_150.0
[-139]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 326, 'const': 160, 'code+const': 486}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  word=""
  word_=""
  all_word_cor =[]
  all_word_not =[]
  for i in board:
    for a in range(len(i)):
      word += (i[a])
  for b in word:
    for c in b:
      word_ += (c)
      if is_valid(word) == True :
        all_word_cor.append(word)
      else :
        all_word_not.append([])
  allfinal=[]
  allfinal_cor=[]
  for i in all_word_cor:
    if i not in allfinal_cor:
      allfinal_cor.append(i)
    else :
      pass
  allfinal.append(allfinal_cor)
  allfinal_not=[]
  if len(all_word_not) ==0 :
    allfinal.append([])
  else :
    for i in all_word_not:
      if i not in allfinal_not:
        allfinal_not.append(i)
      else :
        pass  
    allfinal.append(allfinal_not)
  return (allfinal)
def get_play(board, new_board):
    return [0,0,0,""]
def play(row,col,down,tiles,board):
    return -1
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00205: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 2276, 'const': 529, 'code+const': 2805}
check_import({'allowable': ['math']}): none
def row_word(a):
    word = ""
    for k in a:
        for i in range(len(a)):
            if k[i] != "":
                word += k[i].upper()
            elif k[i] == "":
                word += " "
            if i == len(a)-1:
                word += " "
    return word.split()
def col_word(a):
    word = ""
    for i in range(len(a)):
        for k in range(len(a)):
            if a[k][i] != "":
                word += a[k][i].upper()
            elif a[k][i] == "":
                word += " "
            if k == len(a)-1:
                word += " "
    return word.split()
def get_all_words(board):
  valids_word = []
  invalids_word = []
  row = row_word(board)
  col = col_word(board)
  for k in row:
    if is_valid(k):
      valids_word.append(k)
    elif len(k) >=2:
      invalids_word.append(k)
  for k in col:
    if is_valid(k):
      valids_word.append(k)
    elif len(k) >=2:
      invalids_word.append(k)
  valids_word.sort()
  invalids_word.sort()
  return [valids_word,invalids_word]
def get_play(board, new_board):
    d1 = board
    d2 = new_board
    result = []
    word = ""
    for k in range(len(d1)):
        for i in range(len(d2)):
            if d1[i][k] != d2[i][k]:
                word += d2[i][k]
                result.append([i,k])
    if len(result) !=1:
        for k in result:
            if (result[0][0]-result[-1][0]) != 0:
                check = 1
            elif (result[0][1]-result[-1][1]) != 0:
                check = 0
    elif len(result) == 1:
        check =0
    final = [result[0][0],result[0][1],check,word]
    return final
def score(a,tiles):
  c = 0
  for i in range(len(a)):
    c += int(get_value(a[i]))
  return c
def str_check(d,tiles):
    c = 0
    for k in tiles :
        if k in d:
            c += 1
    if c == len(tiles):
        check = 1
    else:
        check = 0
    return check
def play(row,col,down,tiles,board):
    board1 = copy_board(board)
    check = 0
    if place_tiles(row,col,down,tiles,board)[0]:
      for i in range(len(board1)):
          for k in range(len(board1)):
              if board[i][k] != "":
                  check +=1
      if down == 0 :
          a = 0
          for i in range(col,len(board1)):
              if check !=0:
                  if board1[row][i] == "":
                      if a < len(tiles):
                          board1[row][i] = tiles[a]
                          a += 1
              elif check ==0:
                  if a < len(tiles):
                          board1[row][i] = tiles[a]
                          a += 1
          a = get_all_words(board)[0]
          b = get_all_words(board1)[0]
          for k in a:
            if k in b:
              b.remove(k)
          s = 0
          c1 = 0
          for k in b:
            a = str_check(k,tiles.upper())
            c1 += a
          if len(b) != 0:
            if c1 != 0:
              for k in b:
                s += int(score(k,tiles))
              if len(tiles) >= 7:
                s += 50
            else:
              return -1
          else:
            return -1
          if len(get_all_words(board1)[1]) != 0:
            return -1
      elif down == 1:
          a = 0
          for i in range(row,len(board1)):
              if check !=0:
                  if board[i][col] == "":
                      if a < len(tiles):
                          board1[i][col] = tiles[a]
                          a += 1
              elif check ==0:
                  if a < len(tiles):
                      board1[i][col] = tiles[a]
                      a += 1
          a = get_all_words(board)[0]
          b = get_all_words(board1)[0]
          for k in a:
            if k in b:
              b.remove(k)
          s = 0
          c1 = 0
          for k in b:
            a = str_check(k,tiles.upper())
            c1 += a
          if len(b) != 0:
            if c1 != 0:
              for k in b:
                s += int(score(k,tiles))
              if len(tiles) >= 7:
                s += 50
            else:
              return -1
          else:
            return -1
          if len(get_all_words(board1)[1]) != 0:
            return -1
    else:
      return -1
    return s
def best_play(tiles,board):
  board1 = copy_board(board)
  check = 0
  for i in range(len(board1)):
      for k in range(len(board1)):
          if board[i][k] != "":
              check +=1
  if check !=0:
    z = []
    for i in range(len(board1)):
      for k in range(len(board1)):
        a = int(play(i,k,0,tiles,board1))
        b = int(play(i,k,1,tiles,board1))
        z.append([a,[i,k,0]])
        z.append([b,[i,k,1]])
    ans = []
    for k in range(len(z)):
      if z[k][0] == max(z)[0]:
        ans.append(z[k][1])
    x = min(ans)
    x.insert(0,max(z)[0])
    if x[0] == -1:
      return [-1,-1,-1,-1]
  elif check == 0:
    if is_valid(tiles):
      a = -1
      if 8-len(tiles) >= 0:
        x = [8-len(tiles),7,1]
        a = play(8-len(tiles),7,1,tiles,board)
        x.insert(0,a)
      elif 15-len(tiles) >=0:
        x = [0,7,1]
        a = play(0,7,1,tiles,board)
        x.insert(0,a)
      if a == -1:
        return [-1,-1,-1,-1]
    else:
      return [-1,-1,-1,-1]
  return x

00206: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1336, 'const': 310, 'code+const': 1646}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words = []
    invalid_words = []
    for i in range(len(board)):
        for j in range(len(board[0])):
            if (j and board[i][j-1]!="") or board[i][j]=="":
                continue
            jj = int(j)
            new_word=""
            while(jj<15 and board[i][jj]!=""):
                new_word+=board[i][jj]
                jj+=1
            if is_valid(new_word):
                valid_words.append(new_word)
            elif len(new_word)>1:
                invalid_words.append(new_word)
        for j in range(len(board[0])):
            if (i and board[i-1][j]!="") or board[i][j]=="":
                continue
            ii = int(i)
            new_word=""
            while(ii<15 and board[ii][j]!=""):
                new_word+=board[ii][j]
                ii+=1
            if is_valid(new_word):
                valid_words.append(new_word)
            elif len(new_word)>1:
                invalid_words.append(new_word)
    valid_words.sort()
    invalid_words.sort()
    return [valid_words,invalid_words]
def get_play(board, new_board):
    word_count=""
    found = 0
    startx = 0
    starty = 0
    direct = 0
    for i in range(len(board)):
        if found:
            break
        for j in range(len(board[0])):
            if board[i][j]!= new_board[i][j]:
                found=1
                startx=i
                starty=j
                break
    ii = startx
    jj = starty
    while(jj < 15 and not(board[startx][jj]=="" and new_board[startx][jj]=="")):
        if(board[startx][jj]!=new_board[startx][jj]):
            word_count+=new_board[startx][jj]
        jj+=1
    if len(word_count)==1:
        word_count=""
        while(ii < 15 and not(board[ii][starty]=="" and new_board[ii][starty]=="")):
            if(board[ii][starty]!=new_board[ii][starty]):
                word_count+=new_board[ii][starty]
                direct=1
            ii+=1
    if len(word_count)==1:
        return [startx,starty,0,word_count]
    return [startx,starty,direct,word_count]
def play(row,col,down,tiles,board):
    chk,new_board = place_tiles(row,col,down,tiles,board)
    if not chk:
        return -1
    old_word={}
    score=0
    new_word={}
    old_valid_words,old_invalid_words=get_all_words(board)
    valid_words_add,invalid_words_add=get_all_words(new_board)
    if len(invalid_words_add):
        return -1
    for i in valid_words_add:
        if not i in new_word:
            new_word[i]=0
        new_word[i]+=1
    for i in old_valid_words:
        if not i in old_word:
            old_word[i]=0
        old_word[i]+=1
    for i in new_word:
        if not(i in old_word):
            for k in range(0,new_word[i]):
                for j in i:
                    score+=get_value(j)
        else:
            for k in range(0,new_word[i]-old_word[i]):
                for j in i:
                    score+=get_value(j)
    if len(tiles)>=7:
        score+=50
    return score
def best_play(tiles,board):
    best_score=-1
    startx=100
    starty=100
    direct=1
    for i in range(len(board)):
        for j in range(len(board[0])):
            for k in range(0,2):
                test_score=play(i,j,k,tiles,board)
                if test_score ==-1:
                    continue
                if test_score > best_score:
                    best_score = test_score
                    startx=i
                    starty=j
                    direct=k
    if best_score == -1:
        return [-1,-1,-1,-1]
    return [best_score,startx,starty,direct]

00207: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1004, 'const': 310, 'code+const': 1314}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid_words = []
  invalid_words = []
  s = ''
  for i in range(15):
    for j in range(15):
      if board[i][j] != '':
        s += board[i][j]
      elif len(s) > 1:
        if is_valid(s) == True:
          valid_words.append(s)
          s = ''
        elif is_valid(s) == False:
          invalid_words.append(s)
          s = ''
      else:
        s = ''
    if len(s)>1:
      if is_valid(s) == True:
          valid_words.append(s)
          s = ''
      elif is_valid(s) == False:
          invalid_words.append(s)
          s = ''
    s=''
    for j in range(15):
       if board[j][i] != '':
         s += board[j][i]
       elif len(s) > 1:
         if is_valid(s) == True:
          valid_words.append(s)
          s = ''
         elif is_valid(s) == False:
          invalid_words.append(s)
          s = ''
       else:
           s = ''
    if len(s)>1:
      if is_valid(s) == True:
         valid_words.append(s)
         s = ''
      elif is_valid(s) == False:
         invalid_words.append(s)
         s = ''
    s = ''
  valid_words.sort()
  invalid_words.sort()
  return [valid_words,invalid_words]
def get_play(board, new_board):
  s = ''
  pos = []
  for i in range(15):
    for j in range(15):
      if board[i][j] != new_board[i][j]:
         if pos == []:
            pos=[i,j]
            d2 = [i,j]
         else :
            d2 = [i,j]
         s+=new_board[i][j]
  if pos == d2 or pos[0] == d2[0]: 
    pos.append(0)
  else: 
    pos.append(1)
  pos.append(s)
  return pos
def play(row,col,down,tiles,board):
  x = place_tiles(row,col,down,tiles,board)
  if not x[0]: 
      return -1
  else:
    n = get_all_words(x[1])
    m = get_all_words(board)
    if len(n[1]) > len(m[1]): 
        return -1
    for i in m[0]:
      if i in n[0]: 
          n[0].remove(i)
    Score=0
    for e in n[0]:
      for i in e:
        Score += get_value(i)
    if len(tiles) > 6: 
        Score += 50
    if n[0] == [] : 
        return -1
    else:
        return Score
def best_play(tiles,board):
  l = [-1,-1,-1,-1]
  for i in range(15):
    for j in range(15):
      for e in range(2):
        x = play(i,j,e,tiles,board)
        if x > l[0]:
          l = [x,i,j,e]
  return l

00208: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 3728]
test_play_120.0
[411]
test_play_130.0
[59]
test_play_140.0
[8, 1620, 216, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1322, 'const': 324, 'code+const': 1646}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    words=[]
    cw=[]
    ww=[]
    check=[]
    wordcheck=""
    for i in board:
        for j in i:
            if j!="":
                wordcheck+=j
            elif j=="" and wordcheck!="":
                check.append(wordcheck)
                wordcheck=""
        if wordcheck!="":
            check.append(wordcheck)
            wordcheck=""
    for i in range(len(board)):
        for j in range(len(board)):
            if board[j][i]!="":
                wordcheck+=board[j][i]
            elif board[j][i]=="" and wordcheck!="":
                check.append(wordcheck)
                wordcheck=""
        if wordcheck!="":
            check.append(wordcheck)
            wordcheck=""
    for k in check:
        if is_valid(k)==True:
            cw.append(k)
        elif is_valid(k)==False and len(k)>=2:
            ww.append(k)
    cw.sort()
    ww.sort()
    words.append(cw)
    words.append(ww)
    return words
def get_play(board, new_board):
    check=[]
    word=""
    for i in range(len(board)):
        for j in range(len(board)):
            if new_board[i][j]!=board[i][j]:
                check.append([i,j,new_board[i][j]])
    for k in range(len(check)):
        word+=check[k][2]
    if len(check)>1:
        if check[0][0]==check[1][0]:
            ans=[check[0][0],check[0][1],0,word]
        elif check[0][1]==check[1][1]:
            ans=[check[0][0],check[0][1],1,word]
    else:
        ans=[check[0][0],check[0][1],0,word]
    return ans
def play(row,col,down,tiles,board):
    realnewword=[]
    score=0
    oldboard=copy_board(board)
    valid,newboard=place_tiles(row,col,down,tiles,board)
    if valid==True:
        if len(tiles)>=7:
            score+=50
        word1=get_all_words(oldboard)
        word2=get_all_words(newboard)
        if word2[1]!=word1[1]:
            return -1
        old={}
        new={}
        for u in word1[0]:
            if u not in old:
                old[u]=1
            else:
                old[u]+=1
        for v in word2[0]:
            if v not in new:
                new[v]=1
            else:
                new[v]+=1
        for i in new:
            if i not in old or new[i]!=old[i]:
                realnewword.append(i)
        for j in realnewword:
            for k in j:
                score+=get_value(k)
    else:
      score=-1
    return score
def best_play(tiles,board):
    scores=[]
    newscores=[]
    for i in range(len(board)):
        for j in range(len(board[i])):
            x=play(i,j,0,tiles,board)
            if x!=-1:
                scores.append([x,i,j,0])
    for i in range(len(board)):
        for j in range(len(board[i])):
            y=play(i,j,1,tiles,board)
            if y!=-1:
                scores.append([y,i,j,1])
    if scores==[]:
        scores=[[-1,-1,-1,-1]]
    for u in scores:
        u[0]=-u[0]
    scores.sort()
    return [-scores[0][0],scores[0][1],scores[0][2],scores[0][3]]

00209: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 1827, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 120, 1426, 8-1]
test_play_150.0
[2839]
test_best_play_11.0
[([69, 1, 7, 1)]]
test_best_play_21.0
[([-1, -1, -1, -1)]]
test_best_play_31.0
[([68, 0, 7, 1)], ([87, 12, 0, 0)], ([79, 1, 12, 1)], ([59, 1, 0, 0)], ([11, 2, 3, 0)], ([65, 3, 4, 1)],
 ([19, 6, 1, 0)], ([7, 4, 2, 1)], ([11, 0, 1, 0)], ([22, 3, 8, 1)]]
test_best_play_41.0
[([71, 0, 7, 1)], ([63, 10, 0, 0)], ([63, 1, 1, 0)], ([9, 7, 3, 1)], ([19, 13, 0, 0)], ([72, 14, 4, 0)],
 ([17, 6, 6, 0)], ([8, 3, 3, 0)], ([18, 4, 0, 0)], ([16, 5, 1, 0)]]
test_best_play_51.0
[([83, 0, 7, 1)], ([62, 13, 0, 0)], ([58, 1, 8, 0)], ([10, 0, 1, 0)], ([68, 0, 11, 1)], ([24, 6, 8, 1)],
 ([18, 8, 9, 1)], ([10, 1, 2, 1)], ([21, 5, 3, 1)], ([27, 4, 4, 1)]]
bytecount: {'code': 1448, 'const': 366, 'code+const': 1814}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid_words = [] ; invalid_words = [] ; x = [] ; st = []
  for i in range(15):
      if board[i] != ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '']:
        j = 0 ; s= ""
        for j in range(15) :
            if board[i][j] != "" :
                s += board[i][j]
            else:
                st.append(s)
                s = ""
        st.append(s)
      for k in range(15):
          if board[i][k]!= "":
              c = i ; s1 = ""
              while True:
                  if c < 15 and not [c,k] in x:
                      if board[c][k] != "":
                          s1 += board[c][k]
                          x.append([c,k])
                          c += 1
                      else:break
                  else: break
              if len(s1)>1:
                  if is_valid(s1)==True:
                      valid_words.append(s1)
                  else:
                      invalid_words.append(s1)
  for ch in st:
    if len(ch) > 1:
      if is_valid(ch)==True:
        valid_words.append(ch)
      else:
        invalid_words.append(ch)
  valid_words.sort() ; invalid_words.sort()
  return [valid_words, invalid_words]
def get_play(board, new_board):
  x = [] ; st = '' 
  for i in range(15):
    for j in range(15):
      if board[i][j] != new_board[i][j]:
        x.append([i,j])
        st += new_board[i][j]
  if len(st) == 1:
    c = 0
  else:
    for i in range(len(x)-1):
      if x[i][0] != x[i+1][0]:
        c = 1
      elif x[i][1] != x[i+1][1]:
        c = 0
  return [x[0][0],x[0][1],c ,st ]
def play(row,col,down,tiles,board):
  score = 0 ; setx = [] ; sety1 = []
  new_board = place_tiles(row,col,down,tiles,board)
  x = get_all_words(new_board[1])
  y = get_all_words(board)
  for i in range(len(x[0])):
    if not x[0][i] in y[0]:
      setx.append(x[0][i])
  for k in range(len(x[0])):
    sety = 0
    for j in range(len(x[0])):
      if x[0][k] == x[0][j]:
        sety += 1
    if sety >= 2:
      sety1.append([x[0][k],sety])
  if len(setx) == 0 :
    if len(sety1) >= 2 : setx.append(sety1[0][0]) 
    else: return -1
  if len(tiles) >= 7:
    score += 50
  for e in range(len(setx)):
    for i in range(len(setx[e])):
      if len(setx[e][i]) > 1:
        for j in range(len(setx[e][i])):
          score += letter_value[setx[e][i][j].lower()]
      else:
          score += letter_value[setx[e][i].lower()]
  return score
def best_play(tiles,board):
  score_text = [] ; max_score_text = []
  for row in range(15) :
    for col in range(15):
      for down in range(2):
        new_board = place_tiles(row , col ,down, tiles , board)
        if new_board[0] == True :
          x1 = get_all_words(new_board[1])
          if len(x1[1]) == 0:
            x = play(row , col ,down , tiles , board)
            score_text.append([x , row , col , down])
          else :
            score_text.append([-1,-1,-1,-1])         
  mx = max(score_text)[0]
  for i in range(len(score_text)):
    if score_text[i][0] == mx:
      max_score_text = (score_text[i])
      break 
  return max_score_text[0] ,max_score_text[1], max_score_text[2],max_score_text[3]

00210: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1362, 'const': 492, 'code+const': 1854}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words,invalid_words = [],[]
    a = row_col_b(board)
    for q in a:
        valid_words.append(q) if is_valid(q) == True else invalid_words.append(q)
    return [valid_words,invalid_words]
def get_play(board, new_board):
    row,col,down,tiles = [],[],0,''
    for i in range(15):
        if board[i] != new_board[i]:
            if i not in row:
                row.append(i)
            for e in range(15):
                if board[i][e] != new_board[i][e]:
                    tiles += new_board[i][e]
                    if e not in col:
                        col.append(e)
    down = 0 if len(tiles) == 1 or len(row) == 1 and len(col) > 1 else 1
    return [row[0],col[0],down,tiles]
def play(row,col,down,tiles,board):
    score_board = get_all_words(board)[0]
    score_new_board = get_all_words(place_tiles(row,col,down,tiles,board)[1])[0]
    score_list = []
    a_score,total_score = 0,0
    if len(tiles) >= 7:total_score += 50
    for i in score_new_board:
        score_board.remove(i) if i in score_board else score_list.append(i)
    for e in score_list:
        for letter in e:a_score += get_value(letter)
        total_score += a_score
        a_score = 0
    return total_score if len(score_list) > 0 else -1
def best_play(tiles,board):
    score, row, col, down, _down = 0, 0, 0, 0, [0,1]
    informations = []
    lan_tile = len(tiles)
    gene = [ [i,j,k] for i in range(15) for j in range(15) for k in _down ]
    for i,j,k in gene:
        row,col,down = i,j,k
        score = play(row,col,down,tiles,board)
        if score != -1 and check_up(row,col,down,tiles,board) == True:                    
            informations.append([-score, row, col, down])
        elif row == 14 and col == 14 and score == -1 and len(informations) == 0:
            return [-1, -1, -1, -1]
    informations.sort()
    informations[0][0] = -informations[0][0]
    return informations[0]
def check_up(row,col,down,tiles,board):
    board = place_tiles(row,col,down,tiles,board)[1]
    o = row_col_b(board)
    for x in o:
        if is_valid(x) == False:return False
    return True
def row_col_b(board):
    a,b,c = [],'',['']*15
    gana = many_loop(board,range(15))
    for k,e in gana:
        c[e] += k[e] if k[e] != '' else ' '      
    for t in c:
        t = t.strip().split()
        for g in range(len(t)):a.append(t[g])
    gene = many_loop(range(len(board)),range(15))
    for i,r in gene:
        if 0 <= r < 14 and board[i][r] != '':b += board[i][r]
        elif r == 14 and board[i][r] != '':
            b += board[i][r]
            a.append(b)
            b = ''
        elif board[i][r] == '':
            if b != '':a.append(b)
            b = ''    
    a.sort()
    return [z for z in a if len(z) > 1]
def many_loop(a_a,b_b):
    gene = [ [a,b] for a in a_a for b in b_b ]
    return gene

00211: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 792, 'const': 381, 'code+const': 1173}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words, invalid_words = [], []
    curr_word_h, curr_word_v = '', ''
    for i in range(15):
        for j in range(15):
            if board[i][j] != '':
                curr_word_h += board[i][j]
            if board[i][j] == '' or j == 14:
                if len(curr_word_h) >= 2:
                    if is_valid(curr_word_h):
                        valid_words.append(curr_word_h.upper())
                    else:
                        invalid_words.append(curr_word_h.upper())
                curr_word_h = ''
            if board[j][i] != '':
                curr_word_v += board[j][i]
            if board[j][i] == '' or j == 14:
                if len(curr_word_v) >= 2:
                    if is_valid(curr_word_v):
                        valid_words.append(curr_word_v.upper())
                    else:
                        invalid_words.append(curr_word_v.upper())
                curr_word_v = ''
    valid_words.sort()
    invalid_words.sort() 
    return [valid_words, invalid_words]
def get_play(board, new_board):
    i_idx, j_idx, down, new_word = 0, 0, 0, ''
    stop_i= 0
    for i in range(15):
        for j in range(15):
            if board[i][j] != new_board[i][j]:
                if not new_word:
                    i_idx, j_idx = i, j
                new_word += new_board[i][j]
                stop_i = i
    if stop_i != i_idx:
        down = 1
    return [i_idx, j_idx, down, new_word]
def play(row,col,down,tiles,board):
    score = -1
    first_con, new_board = place_tiles(row,col,down,tiles,board)
    old_words, new_words = get_all_words(board), get_all_words(new_board)
    if first_con and new_words[1] == old_words[1]:
        score = 0
        for word in new_words[0]:
            if word in old_words[0]:
                old_words[0].remove(word)
            else:
                for ch in word:
                    score += get_value(ch)
        if len(tiles) >= 7:
            score += 50
    return score
def best_play(tiles,board):
    max_score, i_idx, j_idx, down = -1, -1, -1, -1
    for i in range(15):
        for j in range(15):
            score = play(i, j, 0, tiles, board)
            if score > max_score:
                i_idx, j_idx, down = i, j, 0
                max_score = score
            score = play(i, j, 1, tiles, board)
            if score > max_score:
                i_idx, j_idx, down = i, j, 1
                max_score = score
    return [max_score, i_idx, j_idx, down]

00212: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1394, 'const': 429, 'code+const': 1823}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  start = False
  words = []
  txt = ''
  c = 0
  d = 0
  for e in board :
    for i in e :
      if i != '' :
        start = True
        txt += i
        c += 1
      elif i == '' and c >= 2 :
        words.append(txt)
        txt = ''
        c = 0
        start = False
      elif i == '' and c == 1 :
        txt = ''
        c = 0
        start = False
    if start == True and c >= 2 :
      words.append(txt)
      txt = ''
      c = 0
      start = False
    if start == True and c == 1 :
      txt = ''
      start = False
      c = 0
  for i in range(len(board)) :
    for j in range(len(board)) :
      if board[j][i] != '' :
        start = True
        txt += board[j][i]
        d += 1
      elif board[j][i] == '' and d >= 2 :
        words.append(txt)
        txt = ''
        d = 0
        start = False
      elif board[j][i] == '' and d == 1 :
        txt = ''
        d = 0
        start = False
    if start == True and d >= 2 :
        words.append(txt)
        txt = ''
        d = 0
        start = False
    if start == True and d == 1 :
        txt = ''
        d = 0
        start = False
  ans = [[],[]]
  for c in words :
    if is_valid(c) :
      ans[0].append(c)
    else :
      ans[1].append(c)
  ans[0].sort()
  ans[1].sort() 
  return ans
def get_play(board, new_board):
  result = []
  word = ''
  for i in range(15) :
    for j in range(15) : 
      if board[i][j] != new_board[i][j] :
        if word == '' :
          result.append(i)
          result.append(j)
        word += new_board[i][j]
  if len(word) == 1 :
    result.append(0)
    result.append(word)
  elif board[result[0]][(result[1] + 1):] == new_board[result[0]][(result[1] + 1):] :
    result.append(1)
    result.append(word)
  else :
    result.append(0)
    result.append(word)
  return result
def play(row,col,down,tiles,board):
  new = place_tiles(row, col, down, tiles, board)[1]
  for i in range(15) :
    for j in range(15) :
      if board[i][j] != new[i][j] :
        new[i][j] = new[i][j] + '*'
  play_word = []
  total_word = get_all_words(new)[0] + get_all_words(new)[1]
  for e in total_word :
    if '*' in e :
      w = ''
      for c in e :
        if c != '*' :
          w += c
      play_word.append(w)
  check_valid = True
  score = 0
  for f in play_word :
    if is_valid(f) == False :
      check_valid = False
  if check_valid == False : 
    return -1
  else :
    for g in play_word :
      for h in g :
        score += get_value(h)
    if len(tiles) >= 7 :
      score += 50
    return score
def best_play(tiles,board):
  ans = [-1,-1,-1,-1]
  score = 0
  for i in range(15) :
    for j in range(15) :
      if place_tiles(i, j, 0, tiles, board)[0] == True :
        if play(i, j, 0, tiles, board) > score :
          ans = [play(i, j, 0, tiles, board), i, j, 0]
          score = play(i, j, 0, tiles, board)
      if place_tiles(i, j, 1, tiles, board)[0] == True :
        if play(i, j, 1, tiles, board) > score :
          ans = [play(i, j, 1, tiles, board), i, j, 1]
          score = play(i, j, 1, tiles, board)
  return ans

00213: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 2876, 'const': 500, 'code+const': 3376}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    p = []
    i = 0
    while i < 15:
        j = 0
        while j < 15:
            word = ""
            while j<15 and board[i][j] != '':
                word += board[i][j]
                j += 1
            if word != "" and len(word) >= 2:
                p.append(word)
            j += 1
        i += 1
    j = 0
    while j < 15:
        i = 0
        while i < 15:
            word = ""
            while i<15 and board[i][j] != '':
                word += board[i][j]
                i += 1
            if word != "" and len(word) >= 2:
                p.append(word)
            i += 1
        j += 1
    p.sort()
    valid = []
    invalid = []
    for x in p:
        check = is_valid(x)
        if check == True:
            valid.append(x)
        elif check == False:
            invalid.append(x)
    ans = []
    ans.append(valid)
    ans.append(invalid)
    return ans
def get_play(board, new_board):
    s = []
    for i in range (15):
        p = []
        for j in range (15):
            if board[i][j] == "" and new_board[i][j] == "":
                p.append("")
            elif board[i][j] == new_board[i][j] :
                p.append("")
            else :
                p.append(new_board[i][j])
        s.append(p)
    for i in range (15):
        x = -1
        y = -1
        word = ""
        for j in range (15):
            if s[j][i] != "":
                if x == -1 and y == -1 :
                    x = j
                    y = i
                    word += s[j][i]
                else:
                    word += s[j][i]
        if len(word) >= 2:
            return [x,y,1,word]
    for i in range (15):
        x = -1
        y = -1
        word = ""
        for j in range (15):
            if s[i][j] != "":
                if x == -1 and y == -1:
                    x = i
                    y = j
                    word += s[i][j]
                else:
                    word += s[i][j]
        if len(word) >= 1:
            return [x,y,0,word]
def play(row,col,down,tiles,board):
    check = place_tiles(row,col,down,tiles,board)
    if check[0] == False:
        return -1
    else:
        new_board = check[1]
        add_board = []
        for i in range(15):
            p = []
            for j in range(15):
                if board[i][j] != new_board[i][j]:
                    p.append(new_board[i][j])
                else:
                    p.append("")
            add_board.append(p)
        all_word = []
        if down == 0:
            i = 0
            while i < 15:
                j = 0
                while j < 15:
                    if add_board[i][j] != "":
                        x = i
                        y = j
                        while j>0 and new_board[i][j-1] != "":
                            j -= 1
                        word = ""
                        while j<15 and new_board[i][j] != "":
                            word += new_board[i][j]
                            j += 1
                        all_word.append(word)
                        while y<15:
                            if add_board[x][y] != "":
                                while x>0 and new_board[x-1][y] != "":
                                    x -= 1
                                word = ""
                                while x<15 and new_board[x][y] != "":
                                    word += new_board[x][y]
                                    x += 1
                                if len(word) >=2:
                                    all_word.append(word)
                                x = i
                            y+=1
                    else:
                        j += 1
                i += 1
        elif down == 1:
            j = 0
            while j < 15:
                i = 0
                while i < 15:
                    if add_board[i][j] != "":
                        x = i
                        y = j
                        while i>0 and new_board[i-1][j] != "":
                            i -= 1
                        word = ""
                        while i<15 and new_board[i][j] != "":
                            word += new_board[i][j]
                            i += 1
                        all_word.append(word)
                        while x<15:
                            if add_board[x][y] != "":
                                while y>0 and new_board[x][y-1] != "":
                                    y -= 1
                                word = ""
                                while y<15 and new_board[x][y] != "":
                                    word += new_board[x][y]
                                    y += 1
                                if len(word) >=2:
                                    all_word.append(word)
                                y = j
                            x += 1
                    else:
                        i += 1
                j += 1        
        for x in all_word:
            checklist = is_valid(x)
            if checklist == False:
                return -1
        score = 0
        for i in range (len(all_word)):
            for j in range (len(all_word[i])):
                score += get_value(all_word[i][j])
        if len(tiles) >= 7 :
            score += 50
        return score
def best_play(tiles,board):
    answer = []
    board_play = copy_board(board)
    for i in range(15):
        for j in range(15):
            a = 0
            x = i
            y = j
            word = ""
            while j>0 and board[i][j-1] != "":
                j -= 1
            while j<15:
                if board[i][j] != "":
                    word += board[i][j]
                elif a<len(tiles) and board[i][j] == "":
                    board_play[i][j] = tiles[a]
                    word += board_play[i][j]
                    a += 1
                elif a>=len(tiles) and board[i][j] == "":
                    break
                j += 1
            check_tiles = place_tiles(x,y,0,tiles,board)
            check_word = is_valid(word)
            if check_tiles[0] == True and check_word == True:
                score = play(x,y,0,tiles,board)
                if score != -1:
                    answer.append([score,x,y,0])
    for j in range(15):
        for i in range(15):
            a = 0
            x = i
            y = j
            word = ""
            while i>0 and board[i-1][j] != "":
                i -= 1
            while i<15:
                if board[i][j] != "":
                    word += board[i][j]
                elif a<len(tiles) and board[i][j] == "":
                    board_play[i][j] = tiles[a]
                    word += board_play[i][j]
                    a += 1
                elif a>=len(tiles) and board[i][j] == "":
                    break
                i += 1
            check_tiles = place_tiles(x,y,1,tiles,board)
            check_word = is_valid(word)
            if check_tiles[0] == True and check_word == True:
                score = play(x,y,1,tiles,board)
                if score != -1:
                    answer.append([score,x,y,1])
    if answer == []:
        return [-1,-1,-1,-1]
    else:
        answer2 = []
        for d in answer:
            answer2.append([d[0],-d[1],-d[2],-d[3]])
        ans3 = max(answer2)
        ans3 = [ans3[0],-ans3[1],-ans3[2],-ans3[3]]
        return ans3

00214: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_10.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 01, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_30.0
[[6, 6, 01, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_60.0
[[6, 7, 01, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 01, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_40.0
[14, 721]
test_play_50.0
[160, 272]
test_play_60.0
[160, 22-1]
test_play_70.0
[163, 14]
test_play_80.0
[162]
test_play_90.0
[11, 15, 214, 137, 1485, 12]
test_play_100.0
[9, 33, 136, 18, 712, 1073, 165, 117, 1274, 16]
test_play_110.0
[167, 161, 28, 11, 913, 285, 11, 912, 7, 25, 157, 14, 214, 232, 12, 15, 816, 168, 6, 13, 10, 27, 128]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 126, 9-1]
test_play_150.0
[139]
test_best_play_10.0
[[169, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[168, 0, 7, 1], [3387, 12, 60, 10], [3679, 41, 512, 1], [1059, 81, 80, 10], [101, 112, 93, 10], [1365, 23, 94, 1],
 [2219, 06, 10, 10], [97, 54, 102, 1], [611, 0, 41, 0], [1322, 13, 28, 01]]
test_best_play_40.0
[[271, 0, 7, 1], [2463, 210, 80, 10], [163, 1, 91, 10], [89, 7, 63, 1], [159, 813, 10, 10], [19, 72, 114, 14, 0],
 [2617, 76, 56, 10], [158, 3, 123, 10], [918, 24, 40, 10], [156, 35, 51, 10]]
test_best_play_50.0
[[383, 0, 7, 1], [627, 513, 80, 10], [158, 01, 68, 10], [160, 30, 51, 10], [168, 0, 1, 91, 1], [1624, 06, 108, 1],
 [118, 8, 49, 1], [120, 41, 112, 1], [231, 105, 3, 1], [1127, 34, 124, 1]]
bytecount: {'code': 1130, 'const': 364, 'code+const': 1494}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid,invalid = [],[]
    for i in range(len(board)):
        foul = False
        s = ''
        for j in range(len(board[0])):
            if foul == False and board[i][j] != '':
                foul = True
            if foul == True:
                s += board[i][j]
            if foul == True and (j+1 == len(board[0]) or board[i][j+1] == ''):
                if len(s)>1:
                    if is_valid(s):
                        valid.append(s)
                    else: invalid.append(s)
                foul = False
                s = ''
    for j in range(len(board[0])):
        foul = False
        s = ''
        for i in range(len(board)):
            if foul == False and board[i][j] != '':
                foul = True
            if foul == True:
                s += board[i][j]
            if foul == True and (i+1 == len(board) or board[i+1][j] == ''):
                if len(s)>1:
                    if is_valid(s):
                        valid.append(s)
                    else: invalid.append(s)
                foul = False
                s = ''
    return [sorted(valid),sorted(invalid)]
def get_play(board, new_board):
    row,col = 0,0
    s = ''
    foul = False
    for i in range(len(board)):
        for j in range(len(board[0])):
            if board[i][j] != new_board[i][j]:
                s += new_board[i][j]
                if not foul:
                    row,col = i,j
                    foul = True
    down = 0
    h = ''
    for i in range(row,row + len(s)):
        if i >= len(board):
            break
        if board[i][col] != new_board[i][col]:
            h += new_board[i][col]
    if h == s and len(s) != 1:
        down = 1
    return [row,col,down,s]
def play(row,col,down,tiles,board):
    valid,new_board = place_tiles(row,col,down,tiles,board)
    if valid:
        valid,invalid = get_all_words(new_board)
        valid2,invalid2 = get_all_words(board)
        s1,s2 = 0,0
        for i in range(len(valid)):
          for j in range(len(valid[i])):
            s1 += get_value(valid[i][j])
        s1 -= len(invalid)
        for i in range(len(valid2)):
          for j in range(len(valid2[i])):
            s2 += get_value(valid2[i][j])
        s2 -= len(invalid2)
        return s1-s2
    else: return -1
def best_play(tiles,board):
    mx = -1
    row,col,down = -1,-1,-1
    for i in range(len(board)):
        for j in range(len(board[0])):
            m1 = play(i,j,0,tiles,board)
            m2 = play(i,j,1,tiles,board)
            if m1 > mx:
                mx = m1
                row = i
                col = j
                down = 0
            if m2 > mx:
                mx = m2
                row = i
                col = j
                down = 1
    return [mx,row,col,down]

00215: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[[[], []]]
test_get_all_words_21.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7   [T] [R] [A] [N] [S] [P] [O] [R] [T] [A] [T] [I] [O] [N] [S]
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _  [M]  _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _  [U]  _   _   _   _   _   _ 
7    _  [E] [T] [E] [R] [N] [A] [L] [S]  _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _  [K]  _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _  [E]  _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _  [T]  _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _  [E]  _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _  [E]  _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _  [R]  _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _  [C]  _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _  [O]  _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _  [N]  _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _  [N]  _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _  [E]  _   _   _   _   _ 
6    _   _   _   _   _   _   _  [V]  _  [R]  _   _   _   _   _ 
7    _   _   _   _  [U] [N] [W] [I] [T] [S]  _   _   _   _   _ 
8    _   _   _   _   _   _   _  [L]  _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _  [D]  _   _   _   _   _   _   _ 
10   _   _   _   _   _   _  [F] [E] [W] [Z]  _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _  [O]  _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _  [O]  _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _  [U]  _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _  [N] [O] [O] [O] [O] [O]  _ 
5    _   _   _   _   _   _   _   _  [O]  _   _  [N]  _   _   _ 
6    _   _   _   _   _   _   _   _  [B]  _   _  [I]  _   _   _ 
7    _   _   _  [H] [E] [L] [I] [O] [S]  _   _  [G]  _   _   _ 
8    _   _   _   _   _  [I]  _   _  [E]  _   _  [I]  _   _   _ 
9    _   _   _   _   _  [A]  _   _  [R]  _   _  [R]  _   _   _ 
10   _   _   _   _   _  [M]  _   _  [V]  _   _  [I]  _   _   _ 
11   _   _   _   _   _   _   _   _  [A]  _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _  [N]  _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _  [T]  _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _  [M]  _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _  [O]  _   _   _   _   _   _ 
7    _   _   _   _   _   _  [Q] [I] [N]  _   _   _   _   _   _ 
8    _   _   _   _   _   _   _  [N] [E]  _   _   _   _   _   _ 
9    _   _   _   _   _   _   _  [F] [Y]  _   _   _   _   _   _ 
10   _   _   _   _   _   _   _  [L]  _   _   _   _   _   _   _ 
11   _   _   _   _   _   _  [Y] [A]  _   _   _   _   _   _   _ 
12   _   _   _   _   _   _  [U] [T]  _   _   _   _   _   _   _ 
13   _   _   _   _   _   _  [P] [E]  _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _  [R]  _   ...(more)
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _  [M] [A] [N] [G] [I] [E] [R]  _   _   _   _   _ 
8    _   _  [R] [E] [T] [A] [I] [N] [S]  _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _  [S] [I] [F]  _   _   _   _   _   _   _   _   _   _   _ 
7    _  [I] [T] [E] [R] [A] [N] [T]  _   _   _   _   _   _   _ 
8    _   _   _  [R] [E] [T] [A] [I] [N] [S]  _   _   _   _   _ 
9   [U] [R] [A] [N] [I] [T] [E]  _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _  [S] [T] [A] [I] [R] [E] [D]  _   _ 
11   _   _   _   _   _   _   _   _   _  [F] [E] [H]  _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0   [O] [X] [Y] [P] [H] [E] [N] [B] [U] [T] [A] [Z] [O] [N] [E]
1   [P] [I] [E] [R]  _  [D] [O] [R] [M]  _  [D] [O] [M]  _  [J]
2   [A]  _   _  [E]  _   _   _  [A]  _   _   _  [O]  _   _  [A]
3   [C]  _   _  [Q]  _   _   _  [I]  _   _   _  [T]  _   _  [C]
4   [I]  _   _  [U]  _   _   _  [N]  _   _   _   _   _   _  [U]
5   [F]  _   _  [A] [D]  _   _  [W]  _   _   _   _   _   _  [L]
6   [Y]  _   _  [L] [O]  _   _  [A] [D]  _   _   _   _   _  [A]
7   [I]  _  [D] [I] [M]  _  [D] [S] [O]  _   _   _   _   _  [T]
8   [N]  _  [O] [F]  _   _  [O] [H] [M]  _   _   _   _   _  [I]
9   [G]  _  [M] [I]  _   _  [M] [I]  _   _   _   _   _   _  [N]
10   _   _   _  [E] [D]  _   _  [N]  _   _   _   _   _   _  [G]
11   _   _   _  [D] [O] [D]  _  [G]  _   _   _   _   _   _   _ 
12   _   _   _   _  [M] [O] [D]  _   _   _   _   _   _   _   _ 
13   _   _   _   _   _  [M] [O]  _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _  [M] [O] [N]  ...(more)
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _  [T]  _   _   _   _   _  [F]  _   _   _ 
1    _   _   _   _   _  [R]  _   _   _   _   _  [U]  _   _   _ 
2    _   _   _   _   _  [I]  _   _   _   _   _  [G]  _   _  [A]
3    _   _   _  [T] [R] [A] [T]  _   _   _  [G] [I]  _  [J] [A]
4   [J] [O] [J] [U] [O] [L] [O] [O] [M] [J] [Y] [O] [O] [I]  _ 
5    _   _   _  [R]  _  [E]  _  [X] [U]  _  [V]  _   _  [V]  _ 
6    _   _   _  [E]  _  [D]  _  [I] [N] [T] [E] [R] [N] [E] [D]
7    _   _   _  [E]  _   _   _  [D]  _   _   _   _   _   _   _ 
8    _   _   _  [N]  _   _   _  [S] [I] [T] [H] [I] [N] [G]  _ 
9    _   _   _  [S]  _   _   _   _  [F] [O] [O] [T]  _   _   _ 
10   _   _   _   _   _   _   _   _   _   _  [C] [A] [L] [P]  _ 
11   _   _   _   _   _   _   _   _  [A] [R] [K]  _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_10.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_20.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _  [H] [E] [R] [N] [I] [A] [S]  _   _   _ 
6    _   _   _   _   _  [E]  _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _  [R] [E] [T] [I] [N] [A] [S]  _   _   _ 
8    _   _   _   _   _  [N]  _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _  [I]  _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _  [A]  _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _  [S]  _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _  [M] [A] [N]  _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[[6, 9, 1, 'CAT']]
test_get_play_61.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _  [M] [A] [N]  _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[[6, 7, 1, 'CT']]
test_get_play_71.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _  [M] [A] [N]  _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _  [T] [O]  _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[[6, 6, 0, 'AT']]
test_get_play_91.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _  [M] [A] [N]  _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[[6, 7, 0, 'M']]
test_get_play_100.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0IndexError('list index out of range')
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[]
test_play_20.0IndexError('list index out of range')
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[]
test_play_31.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[14]
test_play_40.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[14, 21]
test_play_50.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[60, 72]
test_play_60.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[60, -1]
test_play_70.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[63, 14]
test_play_81.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[62]
test_play_90.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[11, 15, 24, 17, 85, 12]
test_play_100.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _  [O]  _   _   _   _   _   _   _ 
7    _   _   _   _   _   _  [O] [D]  _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[811]
test_play_130.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _  [R] [O] [T] [O]  _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[59]
test_play_140.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[8, 20, 26, -1]
test_play_150.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _  [B] [R] [I] [S] [K] [E] [T] [S]  _   _   _ 
4    _   _   _   _  [L]  _   _   _   _   _   _  [N]  _   _   _ 
5    _   _   _   _  [O]  _   _  [B]  _   _   _  [O]  _   _   _ 
6    _   _   _   _  [O]  _  [B] [A]  _   _   _  [W]  _   _   _ 
7    _   _  [C] [O] [M] [B] [A] [T]  _  [D]  _  [B]  _   _   _ 
8    _   _   _   _   _  [L] [A]  _   _  [A]  _  [E]  _   _   _ 
9    _   _   _   _   _  [U]  _   _   _  [D] [O] [L]  _   _   _ 
10   _   _   _   _   _  [E]  _   _   _   _   _  [T]  _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[2839]
test_best_play_10.0IndexError('list index out of range')
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[]
test_best_play_20.0IndexError('list index out of range')
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[]
test_best_play_30.0IndexError('list index out of range')
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[]
test_best_play_40.0IndexError('list index out of range')
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[]
test_best_play_50.0IndexError('list index out of range')
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _   _   _   _   _   _   ...(more)
[]
bytecount: {'code': 1332, 'const': 402, 'code+const': 1734}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    test = [[],[]]
    eng = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    print_board(board)
    mixword = ''
    top = ''
    side = ''
    for i in range(len(board[0])): 
        for j in range(len(board[0])):
            if board[i][j] is not '':
                 side += board[i][j]
            elif board[i][j] is '':
                 if len(side)>1 and is_valid(side) == True:
                    test[0].append(side)
                 elif len(side)>1 and is_valid(side) == False:
                     test[1].append(side)
                 side = ''
        if len(side)>1 and is_valid(side) is True:
            test[0].append(side)
        elif len(side)>1 and is_valid(side) is False:
            test[1].append(side)
        side = ''
    for i in range(len(board[0])): 
        for j in range(len(board[0])):
            if board[j][i] is not '' :
                 top += board[j][i]
            elif board[j][i] is '' :
                if len(top)>1 and is_valid(top) == True:
                    test[0].append(top)
                elif len(top)>1 and is_valid(top) == False:
                     test[1].append(top)
                top = ''
        if len(top)>1 and is_valid(top) is True:
            test[0].append(top)
        elif len(top)>1 and is_valid(top) is False:
            test[1].append(top)
        top = ''
    test[0].sort()
    test[1].sort()
    return test 
def get_play(board, new_board):
    list_let = []
    print_board(board)
    print_board(new_board)          
    for i in range(len(board)):
        for j in range(len(new_board)):
            if new_board[i][j] != board[i][j]:
                if new_board[i][j] not in list_let:
                    list_let.append([new_board[i][j],i,j])
    if len(list_let) > 1:    
        if list_let[0][1] == list_let[1][1]:
            down = 0
        else:
            down = 1
    else:
        down = 0
    row = list_let[0][1]    
    col = list_let[0][2]
    word = ''
    for i in list_let:
       word += i[0]
    return [row,col,down,word]
def play(row,col,down,tiles,board):
    score = 0
    new_board = board
    new_board = place_tiles(row,col,down,tiles,board)[1]
    y = get_play(board,new_board) 
    fb = get_all_words(board)[0]
    nb = get_all_words(new_board)[0]
    letter = []
    num = 0
    for i in nb:
        if i not in fb:
            letter.append(i)
            num += 1
            for j in i:
                score +=  get_value(j)
    if num == 0:
        for i in nb[0]:
            score += get_value(i)
    c = ''
    if down == 0:
        i = row
        for j in range(len(new_board)):
            c += new_board[i][j]
    elif down == 1:
        j = col
        for i in range(len(new_board)):
            c += new_board[i][j]
    if len(tiles) >= 7 and is_valid(c) is True :
            score += 50
    return score
def best_play(tiles,board):
    new_borad = copy_board(board)
    for d in range(2):
       for r in range(15):
           for c in range(15):
               score = play(r,c,d,tiles,board)
    return [score,3,7,1]

00216: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1170, 'const': 310, 'code+const': 1480}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid = []; invalid = []
    c_board = copy_board(board)
    for i in range(len(c_board)):
        s = ''
        for j in range(len(c_board[0])):
            if c_board[i][j] != '':
                s += c_board[i][j]
            else:
                if len(s) >= 2:
                    ch = is_valid(s)
                    if ch == True:
                        valid.append(s)
                    else:
                        invalid.append(s)
                s = ''
        if len(s) >= 2:
            ch = is_valid(s)
            if ch == True:
                valid.append(s)
            else:
                invalid.append(s)
    for a in range(len(c_board[0])):
        s = ''
        for b in range(len(c_board)):
            if c_board[b][a] != '':
                s += c_board[b][a]
            else:
                if len(s) >= 2:
                    ch = is_valid(s)
                    if ch == True:
                        valid.append(s)
                    else:
                        invalid.append(s)
                s = ''
        if len(s) >= 2:
            ch = is_valid(s)
            if ch == True:
                valid.append(s)
            else:
                invalid.append(s)
    valid.sort(); invalid.sort() 
    results = [valid,invalid]
    return results
def get_play(board, new_board):
    tiles = [0,0,0,""]
    c_board = copy_board(board)
    c_nboard = copy_board(new_board)
    s = ''
    for i in range(len(c_board)):
        for j in range(len(c_board[0])):
          if c_board[i][j] != c_nboard[i][j]:
                if s == '':
                    s += c_nboard[i][j]
                    tiles[0],tiles[1] = i,j
                    tiles[2] = 0
                else:
                    s += c_nboard[i][j]
                    if i == tiles[0]:
                        tiles[2] = 0
                    if j == tiles[1]:
                        tiles[2] = 1
    tiles[3] = s
    return tiles
def play(row,col,down,tiles,board):
    ch = place_tiles(row,col,down,tiles,board)
    c_board = copy_board(board)
    if ch[0] == True:
        newboard = copy_board(ch[1])
        b = get_all_words(c_board)
        nb = get_all_words(newboard)
        for e in b[0]:
            if e in nb[0]:
                nb[0].remove(e)
        if nb[0] != []:
            points = 0
            for t in nb[0]:
                for q in t:
                    if get_value(q) != -1:
                        points += get_value(q)
            if len(tiles) >= 7:
                points += 50
            return points
    return -1
def best_play(tiles,board):
    down = [0,1]
    points = []
    c_board = copy_board(board)
    for b in range(len(c_board)):
        for c in range(len(c_board[0])):
            for a in down:
                p = play(b,c,a,tiles,c_board)
                if p != -1:
                    newboard = place_tiles(b,c,a,tiles,c_board)[1]
                    ch = get_all_words(newboard)
                    if ch[1] == []:
                        points.append([p,b,c,a])
    if points != []:
        points.sort()
        best = []; ch = points[-1][0]
        for m in points:
            if m[0] == ch:
                best.append(m)
        best.sort()
        return best[0]
    return [-1,-1,-1,-1]

00217: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1130, 'const': 336, 'code+const': 1466}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words = []
    invalid_words = []
    for row in board:
        word = ''
        for char in row:
            if char != '':
                word += char
            if char == '':
                if len(word) >= 2:
                    if is_valid(word) == True:
                        valid_words.append(word)
                    if is_valid(word) == False:
                        invalid_words.append(word) 
                word = ''
        if len(word) >= 2:
            if is_valid(word) == True:
                valid_words.append(word)
            if is_valid(word) == False:
                invalid_words.append(word)
    for col in range(15):
        strWord = ''
        for row in range(15):
            if board[row][col] != '':
                strWord += (board[row][col])
            if board[row][col] == '':
                if len(strWord) >= 2:
                    if is_valid(strWord) == True:
                        valid_words.append(strWord)
                    if is_valid(strWord) == False:
                        invalid_words.append(strWord)
                strWord = ''
        if len(strWord) >= 2:
            if is_valid(strWord) == True:
                valid_words.append(strWord)
            if is_valid(strWord) == False:
                invalid_words.append(strWord)
    valid_words.sort()
    invalid_words.sort()            
    return [valid_words, invalid_words]
def get_play(board, new_board):
    add_tile = ''
    title_ind = []
    down = 0
    for i in range(15):
        for j in range(15):
            if new_board[i][j] != board[i][j]:
                add_tile += (new_board[i][j])
                title_ind.append([i,j])
    for index in range(len(title_ind)-1):
        if len(add_tile) == 1:
            down = 0 
        elif title_ind[index][0] == title_ind[index+1][0]:
            down = 0
        else:
            down = 1
    return [title_ind[0][0], title_ind[0][1], down, add_tile]
def play(row,col,down,tiles,board):
    valid_oldboard, invalid_oldboard = get_all_words(board)
    valid, newboard = place_tiles(row,col,down,tiles,board)
    valid_newboard, invalid_newboard = get_all_words(newboard)
    if valid == False:
        return -1
    if newboard == board:
        return -1
    for word in valid_oldboard:
        if (word in valid_newboard):
            valid_newboard.remove(word)
        if is_valid(word) == False:
            valid_newboard.remove(word)
    if valid_newboard == []:
        return -1
    score = 0
    for word in valid_newboard:
        if is_valid(word) == True:
            for letter in word:
                score += get_value(letter)
        if is_valid(word) == False:
            return -1
    if len(tiles) >= 7:
        score += 50
    return score
def best_play(tiles,board):
    lst_score = []
    for i in range(15):
        for j in range(15):
            for down in range(2):
                score = play(i,j,down,tiles,board)
                valid, new_board = place_tiles(i,j,down,tiles,board)
                valid_newboard, invalid_newboard = get_all_words(new_board)
                if (score > 0) and (valid == True) and len(invalid_newboard) == 0:
                    lst_score.append([score, i, j, down])         
    if lst_score == []:
        return [-1,-1,-1,-1]
    lst_score.sort()
    max_score = lst_score[-1][0]
    for data in lst_score:
        if data[0] == max_score:
            return data

00218: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1356, 'const': 332, 'code+const': 1688}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    j=0
    valid_words = []
    invalid_words = []
    while(j<15):
        i=0
        while(i<15):
            if board[i][j]!="":
                s = ""
                while(i<15 and board[i][j]!=""):
                    s+=board[i][j]
                    i+=1
                if len(s)==1:
                    continue
                if is_valid(s):
                    valid_words.append(s)
                else:
                    invalid_words.append(s)
            i+=1
        j+=1
    i=0
    while(i<15):
        j=0
        while(j<15):
            if board[i][j]!="":
                s = ""
                while(j<15 and board[i][j]!=""):
                    s+=board[i][j]
                    j+=1
                if len(s)==1:
                    continue
                if is_valid(s):
                    valid_words.append(s)
                else:
                    invalid_words.append(s)
            j+=1
        i+=1
    return [sorted(valid_words),sorted(invalid_words)]
def get_play(board, new_board):
    down0 = []
    down1 = []
    down = 0
    for i in range(15):
        for j in range(15):
            if board[i][j] != new_board[i][j]:
                if i not in down0:
                    down0.append(i)
                if j not in down1:
                    down1.append(j)
    if len(down1) == 1:
        down = 1
    if len(down0) == 1:
        down = 0
    for i in range(15):
        for j in range(15):
            ii = i
            jj = j
            if board[i][j] != new_board[i][j]:
                s = ""
                if down == 1:
                    while(i<15 and new_board[i][j]!=""):
                        if board[i][j] != new_board[i][j]:
                            s+=new_board[i][j]
                        i+=1
                    return [ii,jj,down,s]
                else:
                    while(j<15 and new_board[i][j]!=""):
                        if board[i][j] != new_board[i][j]:
                            s+=new_board[i][j]
                        j+=1
                    return [ii,jj,down,s]
def play(row,col,down,tiles,board):
    score = 0
    if len(tiles) >= 7:
        score = 50
    validnow = get_all_words(board)[0]
    if get_all_words(place_tiles(row,col,down,tiles,board)[1])[1] != []:
        return -1
    validnext = get_all_words(place_tiles(row,col,down,tiles,board)[1])[0]
    count = {}
    for i in validnow:
        if i in count:
            count[i] += 1
        else:
            count[i] = 1
    for i in validnext:
        if i not in validnow:
            for j in i:
                score+=get_value(j)
        else:
            if count[i]==0:
                for j in i:
                    score+=get_value(j)
            else:
                count[i] -= 1
    if score<=0:
        return -1
    return score
def best_play(tiles,board):
    s = []
    for i in range(15):
        for j in range(15):
            for down in [0,1]:
                if place_tiles(i,j,down,tiles,board)[0]:
                    if get_all_words(place_tiles(i,j,down,tiles,board)[1])[1] == []:
                        score = play(i,j,down,tiles,board)
                        if score>0:
                            s.append([-score,i,j,down])
    s.sort()
    for i in range(len(s)):
        s[i][0] = -s[i][0]
    if len(s)==0:
        return [-1,-1,-1,-1]
    return s[0]

00219: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 776, 'const': 348, 'code+const': 1124}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    words = ''
    for i in range(15):
        words += ' '
        for j in range(15):
            if board[i][j] != '':
                words += board[i][j]
            else:
                words += ' '
    for j in range(15):
        words += ' '
        for i in range(15):
            if board[i][j] != '':
                words += board[i][j]
            else:
                words += ' '
    words = words.split()
    words.sort()
    Words=[[],[]]
    for e in words:
        if len(e) >= 2:
            if is_valid(e):
                Words[0].append(e)
            else:
                Words[1].append(e)  
    return Words
def get_play(board, new_board):
    word = ''
    coordinate = []
    for i in range(15):
        for j in range(15):
            if new_board[i][j] != board[i][j]:
                word += new_board[i][j]
                coordinate.append([j,i])
    x1,y1 = coordinate[0]
    x2,y2 = coordinate[-1]
    down = 0
    if y2>y1:
        down = 1
    return [y1,x1,down,word]
def play(row,col,down,tiles,board):
    valid,new_board = place_tiles(row,col,down,tiles,board)
    if valid == False:
        return -1
    valid_w,invalid_w = get_all_words(board)
    valid_nw,invalid_nw = get_all_words(new_board)
    if invalid_nw != []:
        return -1
    score = 0
    for w in valid_nw:
        if w in valid_w:
            valid_w.remove(w)
        else:
            for ch in w:
                score += get_value(ch)
    if len(tiles) >= 7:
        score += 50
    return score
def best_play(tiles,board):
    best = []
    for i in range(15):
        for j in range(15):
            for down in range(2):
                best.append([-play(i,j,down,tiles,board),i,j,down])
    best.sort()
    best[0][0] *= -1
    if best[0][0] == -1:
        return [-1,-1,-1,-1]
    else:
        return best[0]

00220: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1240, 'const': 351, 'code+const': 1591}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    ret = [[],[]]
    for i in range(15) :
      for j in range(15) :
        if board[i][j]!='' :
          if (i-1 >=0 and board[i-1][j]=='') or i==0 :
            w = ''
            ci = i
            while ci < 15 and board[ci][j] != '' :
              w += board[ci][j]
              ci += 1
            if is_valid(w) : ret[0].append(w.upper())
            else :
              if len(w) >=2 : ret[1].append(w.upper())
          if (j-1 >= 0 and board[i][j-1]=='') or j==0 :
            w = ''
            cj = j
            while cj < 15 and board[i][cj] != '' :
              w += board[i][cj]
              cj+=1
            if is_valid(w) : ret[0].append(w.upper())
            else :
              if len(w) >=2 : ret[1].append(w.upper())
    return [sorted(ret[0]), sorted(ret[1])]
def get_play(board, new_board):
    ret_po = [0,0]
    is_down = 0
    word = ''
    for i,v1 in enumerate(new_board) :
      for j,v2 in enumerate(v1) :
        if board[i][j] != v2 :
          ret_po = [i,j]
          temp_i = i+1
          while temp_i < 15 and board[temp_i][j] != '' : temp_i+=1
          if temp_i<15 and new_board[temp_i][j]!='' : is_down = 1
          if is_down :
            temp_i = i
            while temp_i<15 and new_board[temp_i][j]!='' :
              if board[temp_i][j]!=new_board[temp_i][j] :
                  word += new_board[temp_i][j]
              temp_i+=1
          else :
            temp_j = j
            while temp_j<15 and new_board[i][temp_j]!='' :
              if board[i][temp_j]!=new_board[i][temp_j] :
                  word += new_board[i][temp_j]
              temp_j+=1
          break
      if word != '' : break
    return [ret_po[0], ret_po[1], is_down, word] 
def play(row,col,down,tiles,board):
    valid, new_board = place_tiles(row,col, down, tiles, board)
    if valid :
      word_1 = get_all_words(board)
      word_1 = word_1[0] + word_1[1]
      word_2 = get_all_words(new_board)
      if len(word_2[1]) != 0 : return -1
      word_2 = word_2[0]
      score = 0
      for nw in word_2 :
        if nw in word_1 :
          word_1.remove(nw)
        else :
          for p in nw :
            score += get_value(p)
      new_tiles = 0
      i,j = row,col
      while i < 15 and j < 15 and new_board[i][j]!='' :
        if new_board[i][j] != board[i][j] :
          new_tiles+=1
        if down : i+=1
        else :j+=1
      if new_tiles >= 7 : score += 50 
      return score
    return -1
def best_play(tiles,board):
    best_choice = [-1,-1,-1,-1]
    for i in range(15) :
      for j in range(15) :
        for down in range(2) :
          score = play(i,j, down, tiles, board)
          if best_choice[0] < score :
            best_choice = [score, i,j,down]
    return best_choice

00221: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 990, 'const': 284, 'code+const': 1274}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    ws_1 = []
    for i in range(15):
        tmp  = ""
        for j in range(15):
            if board[i][j]!="":
                ws_1.append(board[i][j])
                tmp += board[i][j]
            else:
                ws_1.append(tmp)
                tmp = ""
        if tmp!="":
            ws_1.append(tmp)
    for i in range(15):
        tmp = ""
        for j in range(15):
            if board[j][i]!="":
                ws_1.append(board[j][i])
                tmp += board[j][i]
            else:
                ws_1.append(tmp)
                tmp = ""
        if tmp!="":
            ws_1.append(tmp)
    ws_2 = []
    for word in ws_1:
        if len(word) > 1:
            ws_2.append(word)
    vws = []
    ivws = []
    for word in ws_2:
        if is_valid(word):
            vws.append(word)
        else:
            ivws.append(word)
    vws.sort()
    ivws.sort()
    return [vws,ivws]
def get_play(board, new_board):
    ix = []
    iy = []
    w = ""
    for i in range(15):
        for j in range(15):
            if board[i][j]!=new_board[i][j]:
                w += new_board[i][j]
                ix.append(j)
                iy.append(i)
    if len(w)==1:
        d = 0
    else:
        if ix[0]!=ix[1]:
            d = 0
        else:
            d = 1   
    r = iy[0]
    c = ix[0]
    return [r,c,d,w]
def play(row,col,down,tiles,board):
    v,nb = place_tiles(row,col,down,tiles,board)
    if not v:
        return -1
    vnb,ivnb = get_all_words(nb)
    vb,ivb = get_all_words(board)
    if ivnb:
        return -1
    s=0
    for w in vnb:
        if w in vb:
            vb.remove(w)
        else:
            for t in w:
                s += get_value(t)
    if len(tiles)>6:
        s += 50
    return s
def best_play(tiles,board):
    bp = []
    ms = -1
    for d in range(2):
        for i in range(15):
            for j in range(15):
                v,nb = place_tiles(i,j,d,tiles,board)
                s = play(i,j,d,tiles,board)
                vws,ivws=get_all_words(nb)
                if v and s!=-1 and not ivws:
                    if s>ms:
                        ms = s
                        bp = [[i,j,d]]
                    elif s==ms:
                        bp.append([i,j,d])
    bp.sort()
    if ms==-1:
        return [-1,-1,-1,-1]
    return [ms,bp[0][0],bp[0][1],bp[0][2]]

00222: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_20.0
[[-1, 5-1, 7-1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1980, 'const': 732, 'code+const': 2712}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words, invalid_words, words = [], [], []
    for i in range(15):
        words += "".join([board[i][j] if board[i][j] != "" else " " for j in range(15)]).strip().split()
        words += "".join([board[j][i] if board[j][i] != "" else " " for j in range(15)]).strip().split()
    for i in words:
        if len(i) != 1:
            if is_valid(i):
                valid_words.append(i)
            else:
                invalid_words.append(i)
    return [sorted(valid_words), sorted(invalid_words)]
def get_play(board, new_board):
    row, col = 0, 0
    end = False
    for i in range(15):
        if end:
            break
        for j in range(15):
            if board[i][j] != new_board[i][j]:
                row, col = i, j
                end = True
                break
    tiles = ""
    for i in range(row, 15):
        if board[i][col] != new_board[i][col]:
            tiles += new_board[i][col]
    if len(tiles) > 1:
        return [row, col, 1, tiles]
    tiles = ""
    for i in range(col, 15):
        if board[row][i] != new_board[row][i]:
            tiles += new_board[row][i]
    return [row, col, 0, tiles]
def play(row,col,down,tiles,board):
    score = 0
    valid, new_board = place_tiles(row, col, down, tiles, board)
    if valid:
        if down:
            start = row
            while start != 0 and new_board[start - 1][col] != "":
                start -= 1
            stop = row
            while stop != 14 and new_board[stop + 1][col] != "":
                stop += 1
            if start != stop:
                word = "".join([new_board[i][col] for i in range(start, stop + 1)])
                if is_valid(word):
                    score += sum([get_value(i) for i in word])
                else:
                    return -1
            for i in range(row, 15):
                if new_board[i][col] != board[i][col]:
                    start = col
                    while start != 0 and new_board[i][start - 1] != "":
                        start -= 1
                    stop = col
                    while stop != 14 and new_board[i][stop + 1] != "":
                        stop += 1
                    if start != stop:
                        word = "".join([new_board[i][j] for j in range(start, stop + 1)])
                        if is_valid(word):
                            score += sum([get_value(j) for j in word])
                        else:
                            return -1
        else:
            start = col
            while start != 0 and new_board[row][start - 1] != "":
                start -= 1
            stop = col
            while stop != 14 and new_board[row][stop + 1] != "":
                stop += 1
            if start != stop:
                word = "".join([new_board[row][i] for i in range(start, stop + 1)])
                if is_valid(word):
                    score += sum([get_value(i) for i in word])
                else:
                    return -1
            for i in range(col, 15):
                if new_board[row][i] != board[row][i]:
                    start = row
                    while start != 0 and new_board[start - 1][i] != "":
                        start -= 1
                    stop = row
                    while stop != 14 and new_board[stop + 1][i] != "":
                        stop += 1
                    if start != stop:
                        word = "".join([new_board[j][i] for j in range(start, stop + 1)])
                        if is_valid(word):
                            score += sum([get_value(j) for j in word])
                        else:
                            return -1
        if len(tiles) >= 7:
            return score + 50
        return score
    return -1
def best_play(tiles,board):
    if board[7][7] == "":
        if len(tiles) <= 8:
            row = 8 - len(tiles)
            return [play(row, 7, 1, tiles, board), row, 7, 1]
        if len(tiles) <= 15:
            return [play(0, 7, 1, tiles, board), 0, 7, 1]
        return [-1, -1, -1, -1]
    possible_plays = []
    for i in range(15):
        for j in range(15):
            score = play(i, j, 0, tiles, board)
            if score != -1:
                possible_plays.append([score, i, j, 0])
            score = play(i, j, 1, tiles, board)
            if score != -1:
                possible_plays.append([score, i, j, 1])
    if possible_plays:
        return sorted(possible_plays, reverse=True, key=lambda x: (x[0] * 100000 + (14 - x[1]) * 1000 + (14 - x[2]) * 10 + (1 - x[3])))[0]
    return [-1, -1, -1, -1]

00223: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[411]
test_play_130.0
[59]
test_play_140.0
[8, 1620, 1926, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1794, 'const': 509, 'code+const': 2303}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words = []
    invalid_words = []
    i = 0
    j = 0
    for i in range(15):
      word = ''
      for j in range(15):
        if board[i][j] != '':
          word += board[i][j]
        if board[i][j] == '' and len(word) == 1:
          word = word.replace(word, '')
        if len(word) >= 2:
          if is_valid(word) and (board[i][j] == '' or j == 14):
            valid_words.append(word)
            word = word.replace(word, '')
          elif is_valid(word) == False and (board[i][j] == '' or j == 14):
            invalid_words.append(word)
            word = word.replace(word, '')
    for i in range(15):
      word = ''
      for j in range(15):
        if board[j][i] != '':
          word += board[j][i]
        if board[j][i] == '' and len(word) == 1:
          word = word.replace(word, '')
        if len(word) >= 2:
          if is_valid(word) and (board[j][i] == '' or j == 14):
            valid_words.append(word)
            word = word.replace(word, '')
          elif is_valid(word) == False and (board[j][i] == '' or j == 14):
            invalid_words.append(word)
            word = word.replace(word, '')
    valid_words.sort()
    invalid_words.sort()
    return [valid_words, invalid_words]
def get_play(board, new_board):
    row = 0
    col = 0
    direction = 0
    word = ''
    previous_row = 0
    for i in range(15):
      for j in range(15):
        if board[i][j] != new_board[i][j]:
          if len(word) == 0:
            row = i
            col = j
            previous_row = i
          if previous_row != i:
            direction = 1
          word += new_board[i][j]
    if len(word) == 1:
      direction = 0
    return [row, col, direction, word]
def play(row,col,down,tiles,board):
    new_board = place_tiles(row,col,down,tiles,board)[1]
    previous_words = get_all_words(board)[0]
    words = get_all_words(new_board)[0]
    wrong_words = get_all_words(new_board)[1]
    previous_unique_words = []
    unique_words = []
    new_words = []
    score = 0
    flag = 0
    previous_tiles_used = ''
    tiles_used = ''
    for i in previous_words:
      if i not in previous_unique_words:
        previous_unique_words.append(i)
    for i in words:
      if i not in unique_words:
        unique_words.append(i)
    for i in unique_words:
      if i not in previous_unique_words:
        new_words.append(i)
    if len(wrong_words) != 0:
      return -1
    for i in unique_words:
      previous_amount = 0
      present_amount = 0
      for k in previous_words:
        if i == k:
          previous_amount += 1
      for k in words:
        if i == k:
          present_amount += 1
      if i not in previous_unique_words or previous_amount < present_amount:
        flag = 1
        for j in i:
            tiles_used += j
            score += get_value(j)
    if len(tiles) >= 7 and flag == 1:
      score += 50
    if score == 0:
      return -1
    return score
def best_play(tiles,board):
    first_time = 0
    play_list = list()
    best_score = list()
    min_row_list = list()
    min_col_list = list()
    min_down_list = list()
    if board[7][7] == '*':
      first_time = 1
    for i in range(15):
      for j in range(15):
        for k in range(2):
          score = play(i, j, k, tiles, board)
          if first_time == 1:
            if k == 0:
              if j + len(tiles) >= 7:
                play_list.append([score, i, j, k])
            else:
              if i + len(tiles) >= 7:
                play_list.append([score, i, j, k])
          else:
            play_list.append([score, i, j, k])
    play_list.sort(reverse=True)
    max = play_list[0][0]
    min_row = 100000
    min_col = 1000000
    min_down = 100000
    if max == -1:
      return [-1, -1, -1, -1]
    for i in play_list:
      if i[0] == max:
        best_score.append(i)
    if len(best_score) == 1:
      return best_score[0]
    for i in best_score:
      if i[1] < min_row:
        min_row = i[1]
    for i in best_score:
      if i[1] == min_row:
        min_row_list.append(i)
    if len(min_row_list) == 1:
      return min_row_list[0]
    for i in min_row_list:
      if i[2] < min_col:
        min_col = i[2]
    for i in min_row_list:
      if i[2] == min_col:
        min_col_list.append(i)
    if len(min_col_list) == 1:
      return min_col_list[0]
    for i in min_col_list:
      if i[3] < min_down:
        min_down = i[3]
    for i in min_col_list:
      if i[3] == min_down:
        min_down_list.append(i)
    if len(min_down_list) == 1:
      return min_down_list[0]
    return [-1, -1, -1, -1]

00224: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[359]
test_best_play_11.0
checked [[69, 1, 7, 1]]
0
[[69, 1, 7, 1]]
test_best_play_21.0
dio [[-1, 5, 7, 1]]
0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
1    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
2    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
3    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
4    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
5    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
6    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
7    _   _   _   _   _   _   _   *   _   _   _   _   _   _   _ 
8    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
9    _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
10   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
11   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
12   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
13   _   _   _   _   _   _   _   _   _   _   _   _   _   _   _ 
14   _   _   _   _ ...(more)
[[-1, -1, -1, -1]]
test_best_play_30.0OSError("stdout's size exceeds 5000")
PERISPOMENON [[68, 0, 7, 1]]
0
TROUBLESHOOTS [[137, 12, 0, 0], [87, 2, 6, 1], [84, 1, 6, 1], [83, 2, 8, 1], [82, 1, 8, 1], [81, 0, 8, 1], [81, 0, 6, 1], [68, 12, 2, 0], [68, 12, 1, 0]]
137
DYSRHYTHMIC [[98, 0, 6, 1], [97, 13, 2, 0], [94, 13, 3, 0], [93, 13, 0, 0], [91, 13, 1, 0], [87, 0, 8, 1], [85, 13, 4, 0], [79, 1, 12, 1], [78, 4, 13, 1], [78, 3, 13, 1], [78, 2, 13, 1], [22, 11, 2, 0], [21, 11, 1, 0], [20, 3, 6, 1], [18, 2, 8, 1], [17, 1, 8, 1], [17, 1, 6, 1], [13, 2, 6, 1], [10, 11, 0, 0], [10, 3, 8, 1], [9, 11, 3, 0]]
98
GENERAL [[76, 4, 11, 1], [73, 0, 11, 1], [72, 13, 3, 0], [72, 4, 8, 1], [70, 4, 6, 1], [70, 3, 13, 1], [70, 2, 8, 1], [70, 1, 13, 1], [69, 4, 13, 1], [68, 13, 1, 0], [68, 5, 13, 1], [67, 13, 7, 0], [67, 13, 5, 0], [67, 2, 11, 1], [66, 13, 0, 0], [66, 0, 13, 1], [65, 3, 11, 1], [65, 3, 6, 1], [65, 2, 13, 1], [65, 1, 11, 1], [64, 13, 8, 0], [64, 13, 6, 0], [64, 8, 13, 1], [64, 6, 13, 1], [64, 0, 8, 1], [63, 7, 13, 1], [62, 3, 8, 1], [62, 2, 6, 1], [62, 1, 8, 1], [62 ...(more)
[[68, 0, 7, 1], [1387, 12, 0, 0], [79, 1, 12, 1], [59, 81, 0, 0], [11, 2, 3, 0], [65, 3, 4, 61],
 [19, 6, 1, 0], [647, 4, 2, 01],
 [191, 50, 1, 0], [22, 3, 8, 1]]
test_best_play_40.0OSError("stdout's size exceeds 5000")
QUARRELINGS [[71, 0, 7, 1]]
0
WENDIGO [[76, 2, 8, 1], [72, 5, 8, 1], [72, 2, 6, 1], [71, 4, 6, 1], [69, 5, 6, 1], [69, 4, 8, 1], [69, 3, 8, 1], [66, 3, 6, 1], [66, 1, 8, 1], [66, 1, 6, 1], [66, 0, 8, 1], [64, 7, 8, 1], [64, 7, 6, 1], [64, 6, 8, 1], [64, 6, 6, 1], [64, 0, 6, 1], [63, 10, 0, 0], [62, 11, 7, 0], [62, 11, 6, 0], [62, 11, 5, 0], [62, 11, 4, 0], [62, 11, 3, 0], [62, 11, 2, 0], [62, 11, 1, 0], [62, 8, 8, 1], [62, 8, 6, 1]]
76
INTRIGANTES [[81, 0, 8, 1], [70, 2, 8, 1], [69, 11, 3, 0], [66, 11, 2, 0], [65, 11, 1, 0], [64, 11, 0, 0], [64, 4, 8, 1], [64, 3, 8, 1], [64, 1, 8, 1], [63, 1, 1, 0], [62, 11, 4, 0], [7, 2, 6, 1], [6, 9, 2, 0], [6, 0, 6, 1], [5, 3, 6, 1], [4, 1, 6, 1], [3, 9, 3, 0], [3, 9, 1, 0], [2, 9, 0, 0]]
81
CRUES [[16, 11, 0, 0], [16, 9, 0, 0], [13, 0, 1, 0], [12, 11, 3, 0], [11, 3, 6, 1], [11, 2, 1, 0], [11, 2, 0, 0], [11, 0, 10, 0], [11, 0, 0, 0], [10, 7, 8, 1], [9, 11, 5, 0], [9, 11, 4, 0], [9, 11, 2, 0], [9, 7, 3, 1], [9, 6, 8, 1], [9, 5, 8, 1], [9, 4, 8, 1], [ ...(more)
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_50.0OSError("stdout's size exceeds 5000")
DIAZOTIZATIONS [[83, 0, 7, 1]]
0
CRANIUM [[80, 5, 8, 1], [78, 1, 8, 1], [71, 7, 8, 1], [71, 0, 6, 1], [69, 8, 6, 1], [69, 5, 6, 1], [69, 4, 6, 1], [67, 7, 6, 1], [67, 3, 8, 1], [65, 6, 8, 1], [65, 2, 8, 1], [65, 2, 6, 1], [65, 1, 6, 1], [65, 0, 8, 1], [63, 8, 8, 1], [63, 6, 6, 1], [63, 4, 8, 1], [63, 3, 6, 1], [62, 13, 0, 0], [61, 14, 7, 0], [61, 14, 6, 0], [61, 14, 5, 0], [61, 14, 4, 0], [61, 14, 3, 0], [61, 14, 2, 0], [61, 14, 1, 0]]
80
SOLATES [[87, 2, 8, 1], [78, 6, 8, 1], [78, 4, 8, 1], [76, 0, 8, 1], [67, 4, 6, 1], [67, 0, 6, 1], [65, 5, 6, 1], [65, 3, 6, 1], [63, 14, 5, 0], [63, 14, 3, 0], [63, 14, 1, 0], [63, 14, 0, 0], [63, 5, 8, 1], [63, 2, 6, 1], [61, 14, 2, 0], [61, 8, 8, 1], [61, 3, 8, 1], [59, 14, 4, 0], [59, 7, 8, 1], [59, 1, 8, 1], [59, 1, 6, 1], [58, 10, 8, 0], [58, 6, 8, 0], [58, 1, 8, 0], [57, 14, 7, 0], [57, 14, 6, 0], [8, 12, 0, 0], [8, 6, 6, 1], [6, 12, 3, 0], [6, 12, 1, 0], [6, 7, 6, 1], [4, 12, 5, 0], [4, 12, 4, 0], [4, 12, 2, 0]]
87
CENTRE [[32, 2, 8, 1], [18,  ...(more)
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 10, 8, 0], [10, 0, 1, 0], [-168, -10, -11, -1], [24, 26, 8, 1],
 [18, 48, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1476, 'const': 542, 'code+const': 2018}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    cor = [] 
    wor = [] 
    l = [cor,wor]
    for r in board:
      s = ''
      u = 0
      for c in r:
        s+=c
        if 'A' <= c <= 'Z':
          u=1
        elif u == 1:
          u=2
        if u == 2:
          s+=' '
      s = s.strip() 
      word = s.split() 
      for i in word:
        if len(i) > 1:
          if is_valid(i):
            cor.append(i)
          else:
            wor.append(i)   
    n=0
    while n < 15:
        f=''
        b = 0
        for c in board:
          f+=c[n]
          if 'A' <= c[n] <= 'Z':
            b=1
          elif b==1:
            b=2
          if b==2:
            f+=' '
        f=f.strip()
        wordt = f.split()
        for ii in wordt:
          if len(ii) > 1:
            if is_valid(ii):
              cor.append(ii)
            else:
              wor.append(ii)
        n+=1 
    cor = cor.sort()
    wor = wor.sort()
    return l
def get_play(board, new_board):
    b1 = []
    b2 = []
    ss = []
    w = ''
    for r in range(len(board)):
      for c in range(len(board[r])):
        if 'A' <= board[r][c] <= 'Z':
          b1.append([r,c,board[r][c]])
    for r in range(len(new_board)):
      for c in range(len(new_board[r])):
        if 'A' <= new_board[r][c] <= 'Z':
          b2.append([r,c,new_board[r][c]])
    for i in b2:
      if i not in b1:
        ss.append(i)
        w+=i[2]
    wow = 0
    if len(ss) == 1:
      wow = 0
    elif ss[0][1] == ss[1][1]: 
      wow = 1
    return [ss[0][0],ss[0][1],wow,w]    
def play(row,col,down,tiles,board):
    score = 0
    new_board = copy_board(board)
    new_board = place_tiles(row,col,down,tiles,new_board)[1]
    get_right_old = get_all_words(board)
    get_right_new = get_all_words(new_board)
    kep = get_right_new[0]
    for e in get_right_old[0]:
      if e in get_right_new[0]:
        kep.remove(e)
    for k in kep:
      if is_valid(k):
        for c in k:
          n = get_value(c)
          score+=n
        if len(k) > 6 and len(tiles) > 6:
          score+=50
      else:
        score+=-1
    if kep == []:
      score=-1
    return score
def best_play(tiles,board):
    s = []
    other_first = 0
    high_score = 0
    if board == make_board(): 
      other_first = 0
    else:
      other_first = 1
    if other_first == 0: 
      x = 8-len(tiles)
      sco = play(3,7,1,tiles,board)
      if x >= 0:
         sco = play(x,7,1,tiles,board)
         s.append([sco,x,7,1])
      else:
         sco = play(0,7,1,tiles,board)
         s.append([sco,0,7,1])
    else: 
      for row in range(15):
        for col in range(15):
          if play(row,col,0,tiles,board) != -1:
            k = play(row,col,0,tiles,board)
            s.append([k,row,col,0])
            if k > high_score:
              high_score = k
          if play(row,col,1,tiles,board) != -1:
            l = play(row,col,1,tiles,board)
            s.append([l,row,col,1])
            if l > high_score:
              high_score = l
    s = sorted(s,reverse=True)
    print(tiles,s)
    slot = []
    print(high_score)
    for i in s:
      new_board = copy_board(board)
      new_board = place_tiles(i[1],i[2],i[3],tiles,new_board)[1]
      g = get_all_words(new_board)
      if len(g[1]) == 0:
        return i
    '''print(slot)
    if len(slot) != 1:
      for s in range(len(slot)-1):
        if slot[s][0] == slot[s+1][0]:
          if slot[s][1] == slot[s+1][1]:
            if slot[s][2] > slot[s+1][2]:
              return slot[s][2]
          elif slot[s][1] > slot[s+1][1]:
            return slot[s]
          else:
            return slot[s+1]
        elif slot[s][0] > slot[s+1][0]:
          return slot[s]
        else:
          return slot[s+1]
    else:
      return slot[0]'''
    print_board(board)
    return [-1,-1,-1,-1]

00225: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1500, 'const': 428, 'code+const': 1928}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid = []; invalid = []
    for i in range (len(board)):
      word = ''
      for j in board[i]:
          if j != '':
            word += j
          else:
            word += ' '
      word_list = word.split()
      for k in word_list:
        if is_valid(k) == True:
          valid.append(k)
        elif is_valid(k) == False and len(k) >= 2:
          invalid.append(k)
    for i in range(len(board[0])):
      word = ''
      for j in range(len(board)):
        if board[j][i] != '':
          word += board[j][i]
        else:
          word += ' '
      word_list = word.split()
      for k in word_list:
        if is_valid(k) == True:
          valid.append(k)
        elif is_valid(k) == False and len(k) >= 2:
          invalid.append(k)
    valid.sort(); invalid.sort()
    return [valid,invalid]
def get_play(board, new_board):
    row = 0; col = 0; tiles = ''
    for i in range(len(new_board)):
      for j in range(len(new_board[i])):
        if new_board[i][j] != board[i][j]:
          tiles += new_board[i][j]
          check_r = i; check_co = j
          if row == 0 and col == 0:
            row = i; col = j
    if check_r == row and check_co != col:
      down = 0
    elif check_r != row and check_co == col:
      down = 1
    else:
      down = 0
    return [row,col,down,tiles]
def play(row,col,down,tiles,board):
  valid, n_board = place_tiles(row,col,down,tiles,board)
  if valid == True:
    word = []
    for k in get_all_words(board)[0]:
      word.append(k)
    for k in get_all_words(board)[1]:
      word.append(k)
    if valid == True:
      n_word = []
      for k in get_all_words(n_board)[0]:
        n_word.append(k)
      for k in get_all_words(n_board)[1]:
        n_word.append(k)
      not_same = []
      for e in n_word:
        if e not in word:
          not_same.append(e)
        else:
          x = word.remove(e)
      score = 0
      for i in not_same:
        if is_valid(i) == False:
          return -1
      for i in not_same:
          for c in i:
            score += get_value(c)
      if len(tiles) >= 7:
        score += 50
      return score
  else:
    return -1
def best_play(tiles,board):
  can_play = []
  for r in range(0,len(board)): 
    for c in range(0,len(board)): 
      if play(r,c,0,tiles,board) != -1:
        score = play(r,c,0,tiles,board)
        can_play.append([score, r, c, 0])
      elif play(r,c,1,tiles,board) != -1:
        score = play(r,c,1,tiles,board)
        can_play.append([score, r, c, 1])
  if can_play == []:
    return [-1,-1,-1,-1]
  else:
    can_play.sort()
    can_play = can_play[::-1]
    max_sc = can_play[0][0]
    sc_play = [e for e in can_play if e[0] == max_sc]
    row = [r[1] for r in sc_play]
    row.sort()
    min_row = row[0]
    row_play = [e for e in sc_play if e[1] == min_row]
    col = [c[2] for c in row_play]
    col.sort()
    min_col = col[0]
    col_play = [e for e in row_play if e[2] == min_col]
    dn = [d[3] for d in col_play]
    dn.sort()
    min_dn = dn[0]
    dn_play = [e for e in col_play if e[3] == min_dn]
    return dn_play[0]

00226: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_20.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_30.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_40.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_50.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_60.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_70.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_80.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_90.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_100.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_10.0
[[07, 06, 0, 'ICE'], [07, 04, 0, 'JUD'], [04, 05, 01, 'INFSIVE'], [06, 08, 0, 'M']]
test_get_play_20.0
[[01, 07, 01, 'MALEATE'], [05, 06, 01, 'JURY'], [05, 08, 01, 'REWTH'], [01, 08, 0, 'OLEHUNT'],
 [02, 014, 01, 'RAVISES'], [0, 10, 0, 'TOGA'],
 [05, 013, 01, 'POZ'], [05, 05, 01, 'ABAND'],
 [02, 10, 0, 'COYE'], [10, 02, 0, 'FOOS']]
test_get_play_30.0
[[06, 06, 01, 'XUNT']]
test_get_play_40.0
[[07, 01, 0, 'INHERITANCE']]
test_get_play_50.0
[[06, 09, 01, 'CAT']]
test_get_play_60.0
[[06, 07, 01, 'CT']]
test_get_play_70.0
[[07, 03, 0, 'COMDER']]
test_get_play_80.0
[[06, 06, 0, 'AT']]
test_get_play_90.0
[[06, 07, 0, 'M']]
test_get_play_100.0
[[0, 07, 01, 'HEPATICS'], [01, 03, 0, 'MAILS'], [07, 06, 01, 'ARREAR'], [02, 0, 0, 'EASIED'],
 [013, 06, 0, 'SAHIWAL'], [03, 013, 01, 'MICROLOGIES'],
 [014, 07, 0, 'GAS'], [07, 05, 01, 'GOORY'],
 [10, 07, 0, 'SHIPS'], [02, 011, 01, 'MALEFICE'], [0, 10, 01, 'DOOLAN'], [04, 09, 01, 'POGEY'],
 [0, 014, 01, 'AGROS'], [03, 02, 01, 'TONIEST'], [09, 01, 01, 'SLICES'], [04, 0, 0, 'CRONY'],
 [07, 014, 01, 'DIXIT'], [011, 04, 01, 'PINS'],
 [05, 0, 01, 'ARED'], [0, 01, 0, 'GRAFT'], [012, 09, 0, 'MO'],
 [06, 04, 01, 'CAB'], [011, 012, 01, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_30.0
[-14]
test_play_40.0
[-14, -21]
test_play_50.0
[-160, -172]
test_play_60.0
[-160, -1]
test_play_70.0
[-163, -14]
test_play_80.0
[-162]
test_play_90.0
[-11, -15, -124, -17, -185, -12]
test_play_100.0
[-19, -133, -136, -18, -12, -173, -165, -17, -174, -16]
test_play_110.0
[-167, -61, -128, -11, -13, -185, -11, -12, -17, -125, -17, -14, -21, -132, -12, -15, -16, -168, -16, -13, -10, -127, -128]
test_play_120.0
[-11]
test_play_130.0
[-19]
test_play_140.0
[-18, -120, -126, -1]
test_play_150.0
[-139]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 156, 'const': 159, 'code+const': 315}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    allword = [[],[]]
    word = []
    for row in range(0,15) : 
      for columm in range(0,15) :
        if board[row][columm] != "_":
          word.append(board[row][columm])
        else :
          pass
    return allword
def get_play(board, new_board):
    return [0,0,0,""]
def play(row,col,down,tiles,board):
    return -1
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00227: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 132, 93, 0], [685, 143, 34, 01],
 [2319, 146, 11, 0], [7, 34, 52, 01], [11, 60, 81, 10], [242, 73, 68, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 984, 'const': 403, 'code+const': 1387}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  p = [[],[]]
  e = ['']*15
  for i in board:
    for j in range(15):
      e[j] += i[j]+' '
  for i in range(15):
    x = ' '.join(board[i]).strip()
    x += '  '+e[i]
    for j in x.split('  '):
      a = j.replace(" ", "")
      if len(a) > 1:
        if is_valid(a) == True:
          p[0].append(a)
        else:
          p[1].append(a)  
  p[0].sort();p[1].sort()
  return p
def get_play(board, new_board):
  a = []
  t = ''
  for row in range(15):
    for col in range(15):
      if board[row][col] != new_board[row][col]:
        a.append([row,col])
        t += new_board[row][col]
  t = t.upper()
  if len(t) < 2:
    a[0].append(0);a[0].append(t)
    return a[0]
  if a[0][0] == a[1][0]:
    a[0].append(0);a[0].append(t)
    return a[0]
  else:
    a[0].append(1);a[0].append(t)
    return a[0]
def play(row,col,down,tiles,board):
  a,b = place_tiles(row,col,down,tiles,board)
  tiles1 = tiles.upper()
  ov,oi = get_all_words(board)
  nv,ni = get_all_words(b)
  if a == False or len(ni) > 0:
    return -1
  for i in ov:
    if i in nv:
      nv.remove(i)
  c = 0
  for i in nv:
    for j in i:
      c += get_value(j)
  if len(tiles) > 6:
    c += 50
  return c
def best_play(tiles,board):
  p = []
  for i in range(15):
    for j in range(15):
      for k in range(2):
        e,ee = place_tiles(i,j,k,tiles,board) 
        if e == True: 
          if len(get_all_words(ee)[1]) == 0: 
            v = play(i,j,k,tiles,board) 
            row,col,down,t = get_play(board, ee) 
            if len(p) > 0:
              if v != p[-1][0] and v != p[0][0]:
                p.append([v,row,col,down])
            else:
              p.append([v,row,col,down])
  if len(p) == 0:
    return [-1,-1,-1,-1]
  else:
    p.sort()
    return p[-1]

00228: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 982, 'const': 322, 'code+const': 1304}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    word = []
    for i in range(15):
        row = '' ; col = ''
        for j in range(15):
            if board[i][j] == '':
                row+=' '
            else:
                row+=board[i][j]
            if board[j][i] == '':
                col+=' '
            else:
                col+=board[j][i]
        row = row.strip().split()
        col = col.strip().split()
        for r in row:
            if len(r) > 1: word+=[r]
        for  c in col:
            if len(c) > 1: word+=[c]
    is_word = [] ; not_word = []
    for s in word:
        if is_valid(s) == True:
            is_word.append(s)
        else : not_word.append(s)
    is_word.sort() ; not_word.sort()
    return [is_word,not_word]
def get_play(board, new_board):
    position = []
    for i in range(15):
        for j in range(15):
            if board[i][j] != new_board[i][j]:
                position+=[[i,j]]
    word = ''
    for i,j in position:
        word+=new_board[i][j]
    if len(word) == 1 :
        down = 0
    elif position[0][0] != position[1][0] :
        down = 1
    else : down = 0
    return [position[0][0],position[0][1],down,word]
def play(row,col,down,tiles,board):
    valid,new_board = place_tiles(row,col,down,tiles,board)
    if valid == False:
        return -1
    score=0
    word_board = get_all_words(board)[0]
    word_new_board,error = get_all_words(new_board)
    if len(error) > 0 :
        return -1
    word=[]
    for s in word_board:
        if s in word_new_board:
            word_new_board.remove(s)
    for w in word_new_board:
        for s in w:
            score+=get_value(s)
    if len(tiles) >= 7 : score+=50
    return score
def best_play(tiles,board):
    ans = [[0,0,0,0]]
    score_max = -1
    for i in range(15):
        for j in range(15):
            score = play(i,j,1,tiles,board)
            if score >= score_max:
                score_max = score
                ans.append([-score,i,j,1])
    for j in range(15):
        for i in range(15):
            score = play(i,j,0,tiles,board)
            if score >= score_max:
                score_max = score
                ans.append([-score,i,j,0])
    ans.sort()
    score,row,col,down = ans[0]
    if ans[0] == [0,0,0,0]:
        return [-1,-1,-1,-1]
    return [-score,row,col,down]

00229: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1704, 'const': 296, 'code+const': 2000}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid = []
  invalid = []
  total = []
  words = []
  down_board = copy_board(board)
  words_d = []
  w1 = []
  for i in range(len(down_board)):
    for c in range(len(down_board)): 
      if down_board[i][c] != '' :
        w = ''
        i1 = i
        w1 = []
        while i1 < len(down_board) and down_board[i1][c] != '' :
          w += down_board[i1][c]
          down_board[i1][c] = ''
          i1 += 1
        if len(w) > 1:
          w1.append(w)
        words_d.append(w1)
        for e in words_d:
          if e == [] :
            words_d.remove([])
  side_board = copy_board(board)
  words_s = []
  w1 = []
  for i in range(len(side_board)):
    for c in range(len(side_board)):
      if side_board[c][i] != '' :
        w = ''
        i1 = i
        w1 = []
        while i1 < len(side_board) and side_board[c][i1] != '' :
          w += side_board[c][i1]
          side_board[c][i1] = ''
          i1 += 1
        if len(w) > 1:
          w1.append(w)
        words_s.append(w1)
        for e in words_s:
          if e == [] :
            words_s.remove([])
  words = words_s + words_d
  for i in words:
    if is_valid(i[0]) == True:
      valid.append(i[0])
    else:
      invalid.append(i[0])
  total.append(sorted(valid))
  total.append(sorted(invalid))
  return total
def get_play(board, new_board):
  word = ''
  first_row = []
  first_col = []
  for i in range(len(board)):
    for c in range(len(board)):
      if board[i][c] != new_board[i][c]:
        first_row.append(i)
        first_col.append(c)
        word += new_board[i][c]
  if len(word) > 1:
    if first_row[0] == first_row[1]:
      down = 0
    if first_col[0] == first_col[1]:
      down = 1
  if len(word) == 1:
    down = 0
  return [first_row[0],first_col[0],down,word]
def play(row,col,down,tiles,board):
  old_board = copy_board(board)
  board = place_tiles(row,col,down,tiles,board)[1]
  if len(get_all_words(board)[1]) != 0:
    return -1
  old_words = get_all_words(old_board)[0]
  words = get_all_words(board)[0]
  use = []
  c = 0
  for e in words:
    if e not in old_words:
      use.append(e)
    if e in old_words:
      old_words.remove(e)
  score = 0
  for i in use:
    for e in i:
      score += get_value(e)
  if len(tiles) >= 7:
    if score > 0:
      score += 50
  if score == 0:
    return -1
  return score
def best_play(tiles,board):
  findmaxd = []
  f1 = []
  for i in range(len(board)):
    for c in range(len(board)):
      down = 1
      x = play(i,c,down,tiles,board)
      findmaxd.append(x)
      f1.append([i,c])
  max_scored = max(findmaxd)
  point1 = []
  for i in findmaxd:
    if i == max_scored:
      point1.append(f1[findmaxd.index(i)])
  bestd = [max_scored,point1[0][0],point1[0][1],down]
  findmaxs = []
  f2 = []
  for i in range(len(board)):
    for c in range(len(board)):
      down = 0
      x = play(i,c,down,tiles,board)
      findmaxs.append(x)
      max_scores = max(findmaxs)
      f2.append([i,c])
  max_scores = max(findmaxs)
  point2 = []
  for i in findmaxs:
    if i == max_scores:
      point2.append(f2[findmaxs.index(i)])
  bests = [max_scores,point2[0][0],point2[0][1],down]
  best = []
  if bestd[0] < bests[0]:
    best = bests
  if bestd[0] > bests[0]:
    best = bestd
  if bestd[0] == bests[0]:
    if bestd[1] > bests[1]:
      best = bests
    if bestd[1] < bests[1]:
      best = bestd
    if bestd[1] == bests[1]:
      if bestd[2] > bests[2]:
        best = bests
      if bestd[2] < bests[2]:
        best = bestd
      if bestd[2] == bests[2]:
        if bestd[3] > bests[3]:
          best = bests
        if bestd[3] < bests[3]:
          best = bestd
  if play(best[1],best[2],best[3],tiles,board) == -1 :
    return [-1,-1,-1,-1]
  return best

00230: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 10, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 10, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [85, 0, 01, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1354, 'const': 417, 'code+const': 1771}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    v = []
    iv = []
    for i in range(len(board)):
      w = ''
      c = 0
      for j in range(len(board[i])):
        if 'A' <= board[i][j].upper() <= 'Z':
          w += board[i][j].upper()
          c += 1
        elif board[i][j] == '' and c<2:
          w = ''
          c = 0
        elif board[i][j] == '' and c>=2:
          if is_valid(w) == True:
            v.append(w)
          else:
            iv.append(w)
          w = ''
          c = 0
      if c >= 2 and is_valid(w) == True:
        v.append(w)
      elif c >= 2 and is_valid(w) == False:
        iv.append(w)
    for k in range(len(board[0])):
      w = ''
      c = 0
      for g in range(len(board)):
        if 'A' <= board[g][k].upper() <= 'Z':
          w += board[g][k].upper()
          c += 1
        elif board[g][k] == '' and c<2:
          w = ''
          c = 0
        elif board[g][k] == '' and c>=2:
          if is_valid(w) == True:
            v.append(w)
          else:
            iv.append(w)
          w = ''
          c = 0
      if c >= 2 and is_valid(w) == True:
        v.append(w)
      elif c >= 2 and is_valid(w) == False:
        iv.append(w)
    v.sort()
    iv.sort()
    return [v,iv]
def get_play(board, new_board):
    row,col,down,tiles = 0,0,0,''
    c = 0
    for i in range(len(board)):
      for j in range(len(board[i])):
        if board[i][j].upper() != new_board[i][j].upper():
          tiles += new_board[i][j].upper()
          if c == 0:
            row = i
            col = j
          elif c == j:
            down = 1
          c = j
    return [row,col,down,tiles]
def play(row,col,down,tiles,board):
    w = get_all_words(board)[0]
    valid,new_board = place_tiles(row,col,down,tiles,board)
    scores = 0
    if valid == False:
      return -1
    elif len(get_all_words(new_board)[1]) > 0:
      return -1
    else:
      if len(tiles) >= 7:
        scores += 50
      nw = get_all_words(new_board)[0]
      for e in nw:
        if e in w:
          w.remove(e)
        else:
          for a in e:
            scores += get_value(a)
    return scores
def best_play(tiles,board):
    A = []
    for i in range(len(board)):
      for j in range(len(board[i])):
        valid1,new_board1 = place_tiles(i,j,0,tiles,board)
        valid2,new_board2 = place_tiles(i,j,1,tiles,board)
        if valid1 == True:
          if play(i,j,0,tiles,board) != -1:
            score = -1*play(i,j,0,tiles,board)
            row,col,down = i,j,0
            A.append([score, row, col, down])
        if valid2 == True:
          if play(i,j,1,tiles,board) != -1:
            score = -1*play(i,j,1,tiles,board)
            row,col,down = i,j,1
            A.append([score, row, col, down])
    A.sort()
    if len(A) >= 1:
      return [A[0][0]*-1,A[0][1],A[0][2],A[0][3]]
    else:
      return [-1,-1,-1,-1]

00231: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 1928]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 1826, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1404, 'const': 306, 'code+const': 1710}
check_import({'allowable': ['math']}): none
def get_all_words(board):
   row = len(board)
   col = len(board[0])
   all_word = []
   vaild = []
   invaild = []
   for i in range(row):
     word = ''
     for j in range(col):
       if j == col-1:
         word +=board[i][j]
         all_word.append(word)
         break
       if board[i][j] != '':
        word +=board[i][j]
       elif board[i][j] =='':
        all_word.append(word)
        word = ''
   for ii in range(row):
      word = ''
      for jj in range(col):
       if jj == col-1:
         word +=board[jj][ii]
         all_word.append(word)
         break
       if board[jj][ii] != '':
        word +=board[jj][ii]
       elif board[jj][ii] == '':
        all_word.append(word)
        word = ''
   for iii in all_word:
     if len(iii) > 1 and is_valid(iii) == True:
       vaild.append(iii)
     elif len(iii) > 1 and is_valid(iii) == False:
       invaild.append(iii)    
   return [sorted(vaild),sorted(invaild)]
def get_play(board, new_board):
    row = len(board)
    col = len(board[0])
    position = []
    word1 = ''
    word2 = ''
    for i in range(row):
      for j in range(col):
        if board[i][j] != new_board[i][j]:
          position.append([int(i),int(j)])
          word1 += new_board[i][j]
    for ii in range(row):
      for jj in range(col):
        if board[jj][ii] != new_board[jj][ii]:
          position.append([int(jj),int(ii)])
          word2 += new_board[jj][ii]
    if len(word2)== 1:
      return [position[0][0],position[0][1],0,word1]
    if position[0][0]-position[1][0] == 0:
      return [position[0][0],position[0][1],0,word1]
    elif position[0][1]-position[1][1] == 0:
      return [position[0][0],position[0][1],1,word2]
def play(row,col,down,tiles,board):
     newboard=copy_board(board)
     newboard = place_tiles(row,col,down,tiles,newboard)
     if newboard[0] == False:
       return -1
     else:
       x  = get_all_words(board)[0]
       xx =get_all_words(board)[1]
       y  = get_all_words(newboard[1])[0]
       yy = get_all_words(newboard[1])[1]
       oldscore=0
       newscore=0
       for miss in x:
         if miss not in y:
           y.append(miss)
       for i in x:
         for j in i:
           oldscore += get_value(j)
       for ii in y:
         for jj in ii:
           newscore += get_value(jj)
       totalscore = newscore-oldscore
       for k in yy:
         if k not in xx :
           return -1
       if totalscore>0 and len(tiles) >= 7:
           totalscore += 50
     return totalscore
def best_play(tiles,board):
  score = -1
  liscore = []
  for i in range(15):
    for j in range(15):
      x  = play(i,j,0,tiles,board)
      y  = play(i,j,1,tiles,board)
      if x > score :
        score = x
      if y > score :
        score = y
  for ii in range(15):
    for jj in range(15):
      xx  = play(ii,jj,0,tiles,board)
      yy  = play(ii,jj,1,tiles,board)
      if xx == score:
        liscore.append([xx,ii,jj,0])
      if yy == score:
        liscore.append([yy,ii,jj,1])
  if score ==-1 :
    return [-1,-1,-1,-1]
  else:
    return liscore[0]

00232: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0
[50-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[359]
test_best_play_10.0
[[69, 71, 17, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[68, 70, 07, 1], [687, 712, 0, 10], [789, 71, 012, 1], [589, 71, 10, 10], [411, 72, 53, 10], [635, 73, 14, 1],
 [189, 76, 41, 10], [67, 74, 32, 1], [311, 70, 51, 10], [822, 73, 48, 1]]
test_best_play_40.0
[[71, 70, 07, 1], [623, 710, 10, 10], [623, 71, 01, 10], [79, 7, 3, 1], [19, 713, 30, 10], [672, 714, 04, 10],
 [167, 76, 26, 10], [78, 73, 3, 10], [918, 74, 20, 10], [16, 7, 5, 1, 0]]
test_best_play_50.0
[[83, 70, 07, 1], [612, 713, 10, 10], [578, 71, 18, 10], [810, 7, 20, 1, 0], [678, 70, 011, 1], [524, 76, 38, 1],
 [918, 78, 39, 1], [910, 71, 2, 1], [213, 75, 3, 1], [27, 74, 34, 1]]
bytecount: {'code': 1200, 'const': 378, 'code+const': 1578}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid = []
  invalid = []
  word = ''
  wordlist = []
  for i in board:
    for j in i:
      if j != '':
        word += '{}'.format(j)
      elif j == '' and word != '':
        wordlist.append(word)
        word =  ''
    if word != '':
      wordlist.append(word)
    word = ''
    for c in wordlist:
      if len(c) >= 2:
        yo = is_valid(c)
        if yo:
          valid.append(c)
        else:
          invalid.append(c)
    wordlist = []
  for a in range(len(board[0])):
    for b in range(len(board)):
      if board[b][a] != '':
        word += '{}'.format(board[b][a])
      elif board[b][a] == '' and word != '':
        wordlist.append(word)
        word =  ''
    if word != '':
      wordlist.append(word)
    word = ''
    for f in wordlist:
      if len(f) >= 2:
        yo = is_valid(f)
        if yo:
          valid.append(f)
        else:
          invalid.append(f)
    wordlist = []
  valid.sort()
  invalid.sort()
  return[valid,invalid]
def get_play(board, new_board):
  word = ''
  row = []
  column = []
  down = 0
  for a in range(len(board)):
    for b in range(len(board[0])):
      if new_board[a][b] != board[a][b] :
        word += '{}'.format(new_board[a][b])
        row.append(a)
        column.append(b)
  row.sort()
  column.sort()
  if len(row) >= 2  and len(column) >=2:
    if row[-2] == row[-1] and column[-2] != column[-1]:
      down = 0
    elif row[-2] != row[-1] and column[-2] == column[-1]:
      down = 1
  return [row[0],column[0],down,word]
def play(row,col,down,tiles,board):
  old = get_all_words(board)
  newboard = copy_board(board)
  idk = place_tiles(row,col,down,tiles,newboard)
  if idk[0] == True:
    newboard = idk[1]
    new = get_all_words(newboard)
    newword = []
    for a in range(len(new)):
      for b in new[a]:
        if b not in old[a] :
          newword.append(b)
        else:
          old[a].remove(b)
    scorecheck = 0
    if newword != []:
      for c in newword:
        if is_valid(c):
          for d in c:
            scorecheck += get_value(d)
      if len(tiles) >= 7:
        scorecheck += 50
    else:
      scorecheck = -1
  else:
    scorecheck = -1
  if scorecheck == 0:
    scorecheck = -1
  return scorecheck
def best_play(tiles,board):
  score = -1
  row = -1
  col = -1
  down = -1
  for a in range(len(board)):
    for b in range(len(board[0])):
      yo = place_tiles(a,b,0,tiles,board)
      if yo[0] == True:
        yoyo = play(a,b,0,tiles,board)
        if yoyo > score:
          score = yoyo
          row = b
          col = a
          down = 0
      ye =  place_tiles(a,b,1,tiles,board)
      if ye[0] == True:
        yeye = play(a,b,1,tiles,board)
        if yeye > score:
          score = yeye
          row = b
          col = a
          down = 1
  return [score, row, col, down]

00233: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 1827, 28]
test_play_120.0
[411]
test_play_130.0
[59]
test_play_140.0
[8, 820, 1126, -1]
test_play_150.0
[2839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[68, 0, 7, 1], [1387, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 2766, 'const': 454, 'code+const': 3220}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    a = len(board)
    b = len(board[0])
    c = 0
    for i in range(len(board)):
      for j in range(len(board[i])):
        if not "A" < board[i][j] < "Z": 
          c+=1
    if c == a*b: 
      return [[],[]]
    valid = []
    invalid = []
    for i in range(len(board)):
      words = []
      word_r = ""
      for j in range(len(board[i])):
        if board[i][j] != "":
          word_r+=board[i][j]
          if j!=len(board)-1 and board[i][j+1] == "" and len(word_r)>1: 
            words.append(word_r)
            word_r = ""
          elif j!=len(board)-1 and board[i][j+1] == "" and len(word_r)==1: 
            word_r = ""
          elif j==len(board[0])-1 and len(word_r)>1: 
            words.append(word_r)
            word_r = ""
      if words != []:
        for w in words:
          if is_valid(w): 
            valid.append(w)
          else: 
            invalid.append(w)
    for j in range(len(board[0])):
      words = []
      word_c = ""
      for i in range(len(board)):
        if board[i][j] != "":
          word_c+=board[i][j]
          if i!=len(board)-1 and board[i+1][j] == "" and len(word_c)>1: 
            words.append(word_c)
            word_c = ""
          elif i!=len(board)-1 and board[i+1][j] == "" and len(word_c)==1: 
            word_c = ""
          elif i==len(board[0])-1 and len(word_c)>1: 
            words.append(word_c)
            word_c = ""
      if words != []:
        for w in words:
          if is_valid(w): 
            valid.append(w)
          elif not is_valid(w): 
            invalid.append(w)
    return [sorted(valid), sorted(invalid)]
def get_play(board, new_board):
    myboard = copy_board(new_board)
    for i in range(len(board)):
      for j in range(len(board[0])):
        if board[i][j] == new_board[i][j]: 
          myboard[i][j] = ""
    rows = []
    cols = []
    for i in range(len(board)):
      row = ""
      position1 = []
      for j in range(len(board[0])):
        if myboard[i][j] != "": 
          row+=myboard[i][j]
          position1.append((i, j))
      if row!="": 
        rows.append([row.strip(), position1])
    for j in range(len(board[0])):
      col = ""
      position2 = []
      for i in range(len(board)):
        if myboard[i][j] != "": 
          col+=myboard[i][j]
          position2.append((i, j)) 
      if col!="": 
        cols.append([col.strip(), position2])
    if len(rows) == 1: 
      return [rows[0][1][0][0], rows[0][1][0][1], 0, rows[0][0]]
    elif len(cols) == 1: 
      return [cols[0][1][0][0], cols[0][1][0][1], 1, cols[0][0]]
    elif len(rows) == 1 and len(cols) == 1: 
      return [rows[0][1][0][0], rows[0][1][0][1], 0, rows[0][0]]
def play(row,col,down,tiles,board):
    valid, myboard = place_tiles(row, col, down, tiles, board)
    scores = 0
    if valid == True:
      new = get_all_words(myboard)
      old = get_all_words(board)
      if len(new[1]) != 0: 
        return -1
      repeat = {}
      repe = []
      for r in new[0]:
        if r not in repeat: 
          repeat[r] = 1
        else: 
          repeat[r]+=1
      for r,c in repeat.items():
        if c>1:
          for i in range(c-1):
            repe.append(r)
      new_valid = set(new[0])
      old_valid = set(old[0])
      words = list(new_valid - old_valid)
      for w in words:
        if len(w)>=7 and len(tiles)>=7: 
          scores+=50
        scores+=sum([get_value(l) for l in w])
      if len(words) == 0 and len(repe) != 0: 
        scores+=sum([sum([get_value(l) for l in p]) for p in repe])
      return scores
    else: 
      return -1
def best_play(tiles,board):
    result = []
    for i in range(len(board)):
      for j in range(len(board[0])):
        myboard = copy_board(board)
        rvalid, rowboard = place_tiles(i,j,0,tiles,myboard)
        cvalid, colboard = place_tiles(i,j,1,tiles,myboard)
        if rvalid: 
          result.append([i,j,0,rowboard])
        if cvalid: 
          result.append([i,j,1,colboard])
    scores = [play(r[0], r[1], r[2], tiles, board) for r in result]
    if scores == [-1]*len(result): 
      return [-1,-1,-1,-1]
    maxscr = max(scores)
    scrid = [s for s in range(len(scores)) if scores[s] == maxscr]
    if len(scrid) == 1: 
      return [scores[scrid[0]], result[scrid[0]][0], result[scrid[0]][1], result[scrid[0]][2]]
    else:
      rows = [result[s][0] for s in scrid]
      minrow = min(rows)
      rowid = [r for r in scrid if result[r][0] == minrow]
      if len(rowid) == 1: 
        return [scores[rowid[0]], result[rowid[0]][0], result[rowid[0]][1], result[rowid[0]][2]]
      else:
        cols = [result[c][1] for c in rowid]
        mincol = min(cols)
        colid = [c for c in rowid if result[c][1] == mincol]
        if len(colid) == 1:
          return [scores[colid[0]], result[colid[0]][0], result[colid[0]][1], result[colid[0]][2]]
        else: 
          downs = [result[d][2] for d in colid]
          mindown = min(downs)
          downid = [d for d in colid if result[d][2] == mindown]
          if len(downid) == 1: 
            return [scores[downid[0]], result[downid[0]][0], result[downid[0]][1], result[downid[0]][2]]

00234: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[359]
test_best_play_10.0
[[69, 1, 7, 01]]
test_best_play_20.0
[[-1, 4-1, 5-1, -1]]
test_best_play_30.0
[[68, 0, 7, 01], [687, 012, 70, 0], [789, 01, 712, 01], [589, 1, 70, 0], [411, 52, 73, 0], [635, 13, 74, 01],
 [189, 46, 71, 0], [67, 34, 72, 01], [311, 50, 71, 0], [822, 43, 78, 01]]
test_best_play_40.0
[[71, 0, 7, 01], [623, 10, 70, 0], [623, 01, 71, 0], [9, 7, 3, 7, 01], [19, 13, 70, 0], [672, 014, 74, 0],
 [167, 26, 76, 0], [78, 3, 73, 0], [918, 24, 70, 0], [16, 5, 71, 0]]
test_best_play_50.0
[[83, 0, 7, 01], [612, 13, 70, 0], [578, 1, 78, 0], [810, 20, 71, 0], [678, 0, 711, 01], [524, 36, 78, 01],
 [918, 38, 79, 01], [910, 21, 72, 01], [213, 35, 73, 01], [27, 34, 74, 01]]
bytecount: {'code': 1662, 'const': 473, 'code+const': 2135}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  row_word = []
  for col in range(15):
    word = ''
    for row in range(15):
      if row + 1 != 15:
        if board[row][col] != '':
          word += board[row][col]
        elif board[row][col] == '' and len(word) >= 2:
          row_word.append(word)
          word = ''
        elif board[row][col] == '' and len(word) < 2:
          word = ''
      else:
          if board[row][col] == '':
            if len(word) >= 2:
              row_word.append(word)
          elif board[row][col] != '':
            word += board[row][col]
            if len(word) >= 2:
              row_word.append(word)
  col_word = []
  for row in range(15):
    word = ''
    for col in range(15):
      if col + 1 != 15:
        if board[row][col] != '':
          word += board[row][col]
        elif board[row][col] == '' and len(word) < 2:
          word = ''
        elif board[row][col] == '' and len(word) >= 2:
          col_word.append(word)
          word = ''
      else:
        if board[row][col] == '':
          if len(word) >= 2:
            col_word.append(word)
        elif board[row][col] != '':
          word += board[row][col]
          if len(word) >= 2:
            col_word.append(word)
  all_word = col_word + row_word
  valid, invalid = [], []
  for e in all_word:
    if is_valid(e) == True:
      valid.append(e)
    elif is_valid(e) == False:
      invalid.append(e)
  valid.sort()
  invalid.sort()
  return [valid, invalid]
def get_play(board, new_board):
  add = []
  for row in range(15):
    for col in range(15):
      if new_board[row][col] != board[row][col]:
        add.append([row, col, new_board[row][col]])
  add.sort()
  if len(add) == 1:
    return [add[0][0],add[0][1],0,add[0][2]]
  else:
    strow,stcol,down = add[0][0],add[0][1],0
    puton = ''
    if add[1][0] > strow:
      down = 1
    elif add[1][1] > stcol:
      down = 0
    for row,col,letter in add:
      puton += letter
    return [strow,stcol,down,puton]
def play(row,col,down,tiles,board):
  check, new_board = place_tiles(row,col,down,tiles,board)
  if down == 0:
    word = ''
    for column in range(15):
      if new_board[row][column] != '':
        word += new_board[row][column]
      elif new_board[row][column] == '':
        word += ' '
    col_word = word.split()
    for e in col_word:
      if len(e.strip()) >= 2 and is_valid(e.strip()) == False:
        return -1
  elif down == 1:
    word = ''
    for rowl in range(15):
      if new_board[rowl][col] != '':
        word += new_board[rowl][col]
      elif new_board[rowl][col] == '':
        word += ' '
    row_word = word.split()
    for e in row_word:
      if len(e.strip()) >= 2 and is_valid(e.strip()) == False:
        return -1   
  if check == False:
    return -1
  else:
    before_place_word = get_all_words(board)
    after_place_word = get_all_words(new_board)
    new_word = []
    scores = 0
    for e in after_place_word[0]:
      if e not in before_place_word[0]:
        for letter in e.strip():
          scores += get_value(letter)
      else:
        before_place_word[0].remove(e)
  if len(tiles) >= 7:
    return scores + 50
  else:
    return scores
def best_play(tiles,board):
  all_play = []
  down = [0, 1]
  new_board = copy_board(board)
  for e in down:
    for col in range(15):
      for row in range(15):
        check, new_board = place_tiles(row,col,e,tiles,new_board)
        if check == True:
          score = -1*play(row,col,e,tiles,board)
          all_play.append([score, col, row, e])
  all_play.sort()
  if all_play == []:
    return [-1, -1, -1, -1]
  else:
    return [-1*all_play[0][0], all_play[0][1], all_play[0][2], all_play[0][3]]

00235: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [85, 0, 1, 'AREDREDEDD'], [0, 1, 0, 'GRAFT'],
 [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1880, 'const': 517, 'code+const': 2397}
check_import({'allowable': ['math']}): none
def word_n_position(board):
  out = [[],[]]
  for col in range(15):
    start_x = -1
    end_x = -1
    starty = -1
    endy = -1
    for i in range(15):
      if i==0 and board[col][0]!='':
        start_x = 0
      elif board[col][i-1]=='' and board[col][i]!='':
        start_x = i
      if i==14 and board[col][14]!='':
        end_x = 15
      elif board[col][i]=='' and board[col][i-1]!='':
        end_x = i
      if start_x!=-1 and end_x!=-1 and end_x-start_x>=2:
        word = ''.join(board[col][start_x:end_x])
        if is_valid(word):
          out[0]+=[[col,start_x,0,word]]
        else:
          out[1]+=[[col,start_x,0,word]]
        start_x = -1
        end_x = -1
      if i==0 and board[0][col]!='':
        starty = i
      elif board[i-1][col]=='' and board[i][col]!='':
        starty = i
      if i==14 and board[14][col]!='':
        endy = 15
      elif board[i][col]=='' and board[i-1][col]!='':
        endy = i
      if starty!=-1 and endy!=-1 and endy-starty>=2:
        word = ''
        for a in range(starty,endy):
          word+=board[a][col]
        if is_valid(word):
          out[0]+=[[starty,col,1,word]]
        else:
          out[1]+=[[starty,col,1,word]]
        starty = -1
        endy = -1
  out[1] = sorted(out[1])
  out[0] = sorted(out[0])
  return out
def get_all_words(board):
    out = [[],[]]
    for col in range(15):
      start_x = -1
      end_x = -1
      starty = -1
      endy = -1
      for i in range(15):
        if i==0 and board[col][0]!='':
          start_x = 0
        elif board[col][i-1]=='' and board[col][i]!='':
          start_x = i
        if i==14 and board[col][14]!='':
          end_x = 15
        elif board[col][i]=='' and board[col][i-1]!='':
          end_x = i
        if start_x!=-1 and end_x!=-1 and end_x-start_x>=2:
          word = ''.join(board[col][start_x:end_x])
          if is_valid(word):
            out[0]+=[word]
          else:
            out[1]+=[word]
          start_x = -1
          end_x = -1
        if i==0 and board[0][col]!='':
          starty = i
        elif board[i-1][col]=='' and board[i][col]!='':
          starty = i
        if i==14 and board[14][col]!='':
          endy = 15
        elif board[i][col]=='' and board[i-1][col]!='':
          endy = i
        if starty!=-1 and endy!=-1 and endy-starty>=2:
          word = ''
          for a in range(starty,endy):
            word+=board[a][col]
          if is_valid(word):
            out[0]+=[word]
          else:
            out[1]+=[word]
          starty = -1
          endy = -1
    out[1] = sorted(out[1])
    out[0] = sorted(out[0])
    return out
def get_play(board, new_board):
    row = 0
    col = 0
    down = 0
    done = 0
    is_vertical = False
    tiles = ''
    for r in range(15):
      for c in range(15):
        if board[r][c]!=new_board[r][c]:
          row = r
          col = c
          for nr in range(r,15):
            for nc in range(c,15):
              if board[nr][nc]!=new_board[nr][nc]:
                tiles+=new_board[nr][nc]
                if is_vertical:
                  down = 1
            is_vertical = True
          done = 1
          break
        else:
          if done==1:
            break 
    return [row,col,down,tiles]
def play(row,col,down,tiles,board):
  score = -1
  [check, test_board] = place_tiles(row,col,down,tiles,board)
  all_words = word_n_position(test_board)
  if check and len(all_words[1])==0:
    score = 0
    test_board_word = all_words[0]
    board_word = word_n_position(board)[0]
    for w in board_word:
      if w in test_board_word:
        test_board_word.remove(w)
    for word in test_board_word:
      for char in word[3]:
        score+=get_value(char)
    if len(tiles)>=7:
        score+=50
  return score
def best_play(tiles,board):
  bp = [-1,-1,-1,-1]
  for r in range(15):
    for c in range(15):
      for d in [0,1]:
        [check,new_board] = place_tiles(r,c,d,tiles,board)
        if check:
          last_score = play(r,c,d,tiles,board)
          if last_score > bp[0]:
            bp = [last_score,r,c,d]
  return bp

00236: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1510, 'const': 406, 'code+const': 1916}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    wli = []
    inw = []
    vtcb = []
    hrzb = []
    alll = []
    for i in range(15):
        r = []
        for x in board:
            if x[i]=='':
                r.append(' ')
            else:
                r.append(x[i])
        vtcb.append(r)
    for g in board:
        t = []
        for c in g:
            if c=='':
                t.append(' ')
            else:
                t.append(c)
        hrzb.append(t)
    for h in hrzb:
        stt = ('').join(h).strip().split(' ')
        for wo in stt:
            if is_valid(wo)==True:
                wli.append(wo)
            elif is_valid(wo)==False and wo!='' and len(wo)>=2:
                inw.append(wo)
    for h in vtcb:
        stt = ('').join(h).strip().split(' ')
        for wo in stt:
            if is_valid(wo)==True:
                wli.append(wo)
            elif is_valid(wo)==False and wo!='' and len(wo)>=2:
                inw.append(wo)
    wli.sort()
    inw.sort()
    alll.append(wli)
    alll.append(inw)
    return alll                      
def get_play(board, new_board):
    pos = []
    wo = []
    for i in range(15):
        for x in range(15):
            if board[i][x]!=new_board[i][x]:
                wo.append(new_board[i][x])
                po = []
                po.append(i)
                po.append(x)
                pos.append(po)
    repos = pos[0]
    if len(wo)==1:
        repos.append(0)
    elif pos[0][1]==14:
        repos.append(1)
    elif pos[1][1]!=pos[0][1]:
        repos.append(0)
    else:
        repos.append(1)
    wod = ('').join(wo)
    repos.append(wod)
    return repos
def play(row,col,down,tiles,board):
    score = 0
    s1 = 0
    s2 = 0
    li = []
    if place_tiles(row,col,down,tiles,board)[0]==True:
        if len(tiles)>=7:
            score+=50
        nb = place_tiles(row,col,down,tiles,board)[1]
        gl = get_all_words(board)[0]
        gg = get_all_words(nb)[0]
        for o in gg:
            if o in gl:
                fff = gl.index(o)
                gl.remove(gl[fff])
            elif o not in gl:
                li.append(o)
        if li==[]:
            return -1
        else:        
            for i in li:
                for l in i:
                    score+=get_value(l)
            return score
    else:
        return -1
def best_play(tiles,board):
    playlist = []
    scr = []
    for i in range(15):
        for l in range(15):
            for o in range(2):
                ff = []
                ptc = place_tiles(i,l,o,tiles,board)
                if ptc[0]==True:
                    if get_all_words(ptc[1])[1]==[]:
                        if play(i,l,o,tiles,board)!=(-1):
                            ff.append(play(i,l,o,tiles,board))
                            scr.append(play(i,l,o,tiles,board))
                            ff.append(i)
                            ff.append(l)
                            ff.append(o)
                            playlist.append(ff)
                        else:
                            pass
                    else:
                        pass
                else:
                    pass
    if scr==[]:
        return [-1, -1, -1, -1]
    else:
        gg = max(scr)
        playoff = []
        row = []
        for lo in playlist:
            if lo[0]==gg:
                playoff.append(lo)
                row.append(lo[1])
        rr = min(row)
        nl = []
        col = []
        for g in playoff:
            if g[1]==rr:
                nl.append(g)
                col.append(g[2])
        cl = min(col)
        ll = []
        dd = []
        for k in nl:
            if k[2]==cl:
                ll.append(k)
                dd.append(k[3])
        df = min(dd)
        last = []
        for rr in ll:
            if rr[3]==df:
                last.append(rr)
        shh = last[0]
        return shh

00237: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 908, 'const': 270, 'code+const': 1178}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    result = [[], []]
    seen_row, seen_col = [], []
    for row in range(15):
        for col in range(15):
            if board[row][col].isalpha():
                word  = ""
                if [row,col] not in seen_col:
                    for y in range(row,15):
                        if board[y][col]!="":
                            seen_col += [[y,col]]
                            word += board[y][col]
                        else:
                            break
                    if len(word) > 1:        
                        result[not is_valid(word)] += [word]
                word = ""
                if [row,col] not in seen_row:
                    for x in range(col,15):
                        if board[row][x]!="":
                            seen_row += [[row,x]]
                            word += board[row][x]
                        else:
                            break
                    if len(word) > 1:
                        result[not is_valid(word)] += [word]
    return [sorted(result[0]), sorted(result[1])] 
def get_play(board, new_board):
    idx = []
    for row in range(15):
        for col in range(15):
            if board[row][col]!=new_board[row][col]:
                idx += [[row,col]]
    down = len(idx)>1 and idx[0][0]<idx[1][0] and idx[0][1]==idx[1][1]
    word = ""
    for row, col in idx:
        word += new_board[row][col]
    return [idx[0][0], idx[0][1], int(down), word]
def play(row,col,down,tiles,board):
    old_words = get_all_words(board)[0]
    possible, new_board = place_tiles(row,col,down,tiles,board)
    if not possible:
        return -1
    new_words, invalid_words = get_all_words(new_board)
    if len(invalid_words) > 0:
        return -1
    words = []
    for word in new_words:
      if word in old_words:
        old_words.pop(old_words.index(word))
        continue
      words += [word]
    score = 0
    for w in words:
        for c in w:
            score += get_value(c) 
    return score + (50 * (len(tiles) >= 7))
def best_play(tiles,board):
    max_score = best_row = best_col = best_down = -1
    for row in range(15):
        for col in range(15):
            for down in range(2):
                score = play(row,col,down,tiles,board)
                if score > max_score:
                    max_score = score
                    best_row = row
                    best_col = col
                    best_down = down
    return [max_score, best_row, best_col, best_down]

00238: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1248, 'const': 406, 'code+const': 1654}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  a = copy_board(board)
  wordno = []
  for i in range(15):
      bb = ''
      for j in range(15):
        if a[i][j] == '':
          bb+=' '
        else:
          bb+= a[i][j]
      wordno.append(bb)
      bb = ''
  for i in range(15):
      dd = ''
      for j in range(15):
        if a[j][i] == '':
          dd+=' '
        else:
          dd+= a[j][i]
      wordno.append(dd)
      dd = ''
  allword = []
  for i in range(len(wordno)):
      y = wordno[i].strip()
      e = y.split()
      if len(e)==0:
          pass
      else:
          for i in range(len(e)):
              if len(e[i]) == 1:
                  pass
              else:
                  allword.append(str(e[i]))
  valid_words = []
  invalid_words = []
  for i in range(len(allword)):
      if is_valid(allword[i]) == True:
          valid_words.append(allword[i])
      else:
          invalid_words.append(allword[i])
  valid_words.sort()
  invalid_words.sort()
  return [valid_words,invalid_words]
def get_play(board, new_board):
  a = copy_board(board)
  anew = copy_board(new_board)
  notsame =[]
  row = 0
  col =0
  down = 0
  boo = 'kkk'
  for i in range(15):
      for j in range(15):
          if a[i][j] == anew[i][j]:
             notsame.append('')
          else:
              notsame.append(anew[i][j])          
              if boo == 'kkk':
                row = i
                col = j
                boo = 'aaa'
  tiles = ''.join(notsame)
  x = notsame.index(tiles[0])
  if notsame[x+1] == '':
      down =1
  else:
      down =0
  if len(tiles) ==1:
    down=0
  return [row,col,down,tiles]
def play(row,col,down,tiles,board):
  neww_board = place_tiles(row,col,down,tiles,board)[1]
  oldd = get_all_words(board)
  neww = get_all_words(neww_board)
  if place_tiles(row,col,down,tiles,board)[0] == True:
      if len(neww[1])== 0:
          wordd = []
          for i in range(len(neww[0])):
            if neww[0][i] in oldd[0]:
              oldd[0].remove(neww[0][i])
            else:
              wordd.append(neww[0][i])
          score=0
          if len(wordd) ==0:
              score =-1
          else:
              if len(wordd) == 1:
                  for j in range(len(wordd[0])):
                    score +=get_value(wordd[0][j])
              else:
                  for i in range(len(wordd)):
                      for j in range(len(wordd[i])):
                          score+= get_value(wordd[i][j])
          if len(tiles) >= 7:
              score+=50
      else:
          score = -1
  else:
      score =-1
  return score
def best_play(tiles,board):
  finlist =[]
  for i in range(15):
    for j in range(15):
        for k in range(2):
            finlist.append([play(i,j,k,tiles,board),i,j,k])
  scoreall =[]
  for i in range(len(finlist)):
      scoreall.append(finlist[i][0])
  ttt = max(scoreall)
  if ttt != -1:
      ee = scoreall.index(ttt)
      ans = finlist[ee]
  else:
      ans = [-1,-1,-1,-1]
  return ans

00239: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_90.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO',
   'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING',
   'OXYPRHEQNBUTALIFIZONED', 'SAD', 'XPI', 'YE'],
  ['ACR', 'CI', 'DOMBPREQUALINWASHFING', 'EOM', 'IG', 'LY', 'NTD', 'OUM', 'OXYPHENBUTAZONEPIER', 'RNYE',
   'SEJACULATING', 'TN', 'TZOOT'],
 'UF' []]]
test_get_all_words_100.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JIVEA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JAJOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_30.0
[[6, 6, 01, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_60.0
[[6, 7, 01, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0IndexError('list index out of range')
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 15, 24, 17, 85, 012]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, -128, 11, -13, -185, -11, -12, 7, 25, -17, -14, -21, -132, 12, 15, -16, -168, 6, -13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 120, 1426, -1]
test_play_150.0
[2839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_40.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [-172, -14, -14, -10],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1320, 'const': 268, 'code+const': 1588}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_word=[]
    invalid_word=[]
    word=''
    for i in range(len(board)):
        for j in range(len(board)):
            if board[i][j]!='':
                word+=str(board[i][j])
            if board[i][j]=='':
                if len(word)==0:
                    continue
                else:
                    if is_valid(word):
                        valid_word.append(word)
                    else:
                        if len(word)>1:
                            invalid_word.append(word)
                    word=''
    for i in range(len(board)):
        for j in range(len(board)):
            if board[j][i]!='':
                word+=str(board[j][i])
            if board[j][i]=='':
                if len(word)==0:
                    continue
                else:
                    if is_valid(word):
                        valid_word.append(word)
                    else:
                        if len(word) > 1:
                            invalid_word.append(word)
                    word=''
    valid_word.sort()
    invalid_word.sort()
    return [valid_word,invalid_word]
def get_play(board, new_board):
    play=[]
    word=''
    for i in range(len(board)):
        for j in range(len(board)):
            if(board[i][j]!=new_board[i][j]):
                if len(play)==0:
                    play.append(i)
                    play.append(j)
                    word+=str(new_board[i][j])
                    if board[i+1][j]!=new_board[i+1][j]:
                        play.append(1)
                        while new_board[i][j]!="" and i<14:
                            i+=1
                            if board[i][j]!=new_board[i][j]:
                                word+=str(new_board[i][j])
                        play.append(word)
                        return play
                    else:
                        play.append(0)
                        while new_board[i][j]!="" and j<14:
                            j+=1
                            if board[i][j]!=new_board[i][j]:
                                word+=str(new_board[i][j])
                        play.append(word)
                        return play
def play(row,col,down,tiles,board):
    original_board = copy_board(board)
    check_board = place_tiles(row, col, down, tiles, board)[0]
    if not check_board:
        return -1
    else:
        board=place_tiles(row,col,down,tiles,board)[1]
        x=get_all_words(board)
        y=get_all_words(original_board)
        if len(x[1])!=0:
            return -1
        else:
            score = 0
            for i in x[0]:
                if i not in y[0]:
                    for j in range(len(i)):
                        score+=get_value(i[j])
            if len(tiles)>=7:
                score+=50
            return score
def best_play(tiles,board):
    max_score=0
    score=0
    row=0
    col=0
    down=0
    for i in range(len(board)):
        for j in range(len(board)):
            for k in range(0,2):
                if place_tiles(i, j, k, tiles, board)[0] and play(i,j,k,tiles,board)!=-1:
                    score = play(i, j, k, tiles, board)
                    if max_score == score :
                        if i < row:
                            row = i
                            col = j
                            down = k
                        elif i == row:
                            if j<col:
                                row = i
                                col = j
                                down = k
                            elif j==col:
                                if k<down:
                                    row = i
                                    col = j
                                    down = k
                    else:
                        if max_score<score:
                            max_score=max(max_score,score)
                            row=i
                            col=j
                            down=k
    if score==0 and row ==0 and col==0 and down==0:
        return [-1,-1,-1,-1]
    else:
        return [max_score,row,col,down]

00240: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_20.0
[[4-1, 5-1, 7-1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1772, 'const': 451, 'code+const': 2223}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    all_words = []
    row = 0
    col = 0
    while row < len(board):
        while col < len(board[0]):
            if board[row][col] != '':
                word,nrow,ncol = get_word(row,col,0,board)
                if word != '':
                    all_words.append(word)
                    row = nrow
                    col = ncol-1
            col += 1
        col = 0
        row += 1
    row = 0
    col = 0
    while col < len(board[0]):
        while row < len(board):
            if board[row][col] != '':
                word,nrow,ncol = get_word(row,col,1,board)
                if word != '':
                    all_words.append(word)
                    row = nrow-1
                    col = ncol
            row += 1
        row = 0
        col += 1
    valid = []
    invalid = []
    for w in all_words:
        if is_valid(w):
            valid.append(w)
        else:
            invalid.append(w)
    valid.sort()
    invalid.sort()
    return [valid,invalid]
def get_play(board, new_board):
    new = ''
    down = 0
    added = []
    for row in range(len(board)):
        for col in range(len(board[0])):
            if board[row][col] != new_board[row][col]:
                new += new_board[row][col]
                added.append([row,col])
    if len(added) > 1:
        if added[1][1] - added[0][1] == 1:
            down = 0
        else:
            down = 1
    else:
        down = 0
    return [added[0][0],added[0][1],down,new]
def play(row,col,down,tiles,board):
    copy = copy_board(board)
    valid,new_board = place_tiles(row,col,down,tiles,copy)
    if valid == False:
        return -1
    added_word = get_added_word(row,col,down,new_board,tiles)
    if is_valid(added_word) == False:
        return -1
    old_valid_words = get_all_words(board)[0]
    new_valid_words = get_all_words(new_board)[0]
    total_score = 0
    if len(tiles) >= 7:
        total_score += 50
    for w in new_valid_words:
        score = 0
        if w not in old_valid_words:
            for e in w:
                score += get_value(e)
        else:
            old_valid_words.remove(w)
        total_score += score
    return total_score
def best_play(tiles,board):
    prop = []
    if board == make_board():
        if len(tiles) < 8:
            row = 8-len(tiles)
            col = 7
            down = 1
        else:
            row = 0
            col = 7
            down = 1
        score = 0
        if len(tiles) >= 7:
            score += 50
        for e in tiles:
            score += get_value(e)
        return [score, row, col, down]
    else:
        for row in range(len(board)):
            for col in range(len(board[0])):
                test_board1 = copy_board(board)
                x = place_tiles(row,col,0,tiles,test_board1) 
                if x[0]:
                    score = play(row,col,0,tiles,test_board1)
                    if score != -1  and len(get_all_words(x[1])[1]) == 0:  
                        prop.append([-score,row,col,0])
                test_board1 = copy_board(board)
                y = place_tiles(row,col,1,tiles,test_board1)
                if y[0]:
                    score = play(row,col,1,tiles,test_board1)
                    if score != -1 and len(get_all_words(y[1])[1]) == 0:
                        prop.append([-score,row,col,1])
        prop.sort()
        if len(prop)!= 0:
            prop[0][0] = -prop[0][0]
            return prop[0]
        else:
            return [-1,-1,-1,-1]
def find_first(board):
    if board == make_board():
        return None
    else:
        for i in range(len(board)):
            for j in range(len(board[i])):
                if board[i][j] != '':
                    return i,j
def get_word(row,col,down,board):
    word = ''
    if down == 0:
        while col < len(board[0]):
            if board[row][col] != '':
                word += board[row][col]
                col += 1
            else:
                break
    elif down == 1:
        while row < len(board):
            if board[row][col] != '':
                word += board[row][col]
                row += 1
            else:
                break
    if len(word) == 1:
        word = ''
    return word,row,col
def get_added_word(row,col,down,board,tiles):
    if down == 0 and board[row][col-1] != '' and col != 0 :
        i = col
        while True:
            if board[row][i-1] != '' and i > 0:
                i -= 1
            else:
                break
        return get_word(row,i,down,board)[0]
    elif down == 1 and board[row-1][col] != '' and row != 0:
        j = row
        while True:
            if board[j-1][col] != ''and j > 0:
                j -= 1
            else:
                break
        return get_word(j,col,down,board)[0]
    else:
        return get_word(row,col,down,board)[0]

00241: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1144, 'const': 434, 'code+const': 1578}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid = []
  invalid = []
  all_a = []
  col = ["" for i in range(15)]
  for i in range(len(board)):
    st = ""
    for j in range(len(board[i])):
      if board[i][j] == '':
        col[j] += " "
        st += " "
      else:
        st += board[i][j]
        col[j] += board[i][j]
    for k in st.strip().split():
      all_a.append(k)
  for e in col:
    for x in e.strip().split():
      all_a.append(x)
  for word in all_a:
    if is_valid(word):
      valid.append(word)
    else:
      if len(word) >= 2:
        invalid.append(word)
  return [sorted(valid),sorted(invalid)]
def get_play(board, new_board):
  colm = [["",[],[],1] for i in range(15)]
  for i in range(15):
    wor = ["",[],[],0] 
    for j in range(15):
      if board[i][j] != new_board[i][j]:
        colm[j][0] += new_board[i][j]
        colm[j][1].append(i)
        colm[j][2].append(j)
        wor[0] += new_board[i][j]
        wor[1].append(i)
        wor[2].append(j)
    colm.append(wor)
  for e in colm:
    if len(e[0]) > 1:
      return [e[1][0],e[2][0],e[3],e[0]]
    else:
      if len(e[0]) == 1 and e[3] == 0:
        return [e[1][0],e[2][0],e[3],e[0]]
def play(row,col,down,tiles,board):
  new_board = copy_board(board)
  valid, invalid = get_all_words(new_board)
  if place_tiles(row,col,down,tiles,new_board)[0]:
    new_board = place_tiles(row,col,down,tiles,new_board)[1]
    new_valid, new_invalid = get_all_words(new_board)
    if len(new_invalid) != 0:
      return -1
    else:
      c = 0
      last_valid = []
      for e in new_valid:
        if e in valid:
          valid.remove(e)
        else:
          last_valid.append(e)
      for i in last_valid:
        for j in i:
          c += get_value(j)
      if len(tiles) >= 7:
        c += 50
      return c
  return -1
def best_play(tiles,board):
  new_board = copy_board(board)
  a = []
  for row in range(15):
    for col in range(15):
      for down in range(2):
        score = play(row,col,down,tiles,new_board)
        if score != -1 :
          a.append([-score, row, col, down])
        new_board = copy_board(board)
  if a == []:
    return [-1,-1,-1,-1]
  a = sorted(a)[0]
  a = [-a[0],a[1],a[2],a[3]] 
  return a

00242: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1262, 'const': 266, 'code+const': 1528}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid = []; invalid = []; word_row = ''; word_col = ''; rowch = 0; colch = 0
  for i in range(len(board)) :
    for j in range(len(board)) :
      if rowch == 0 and board[i][j] != '' and j+1 != len(board):
        word_row += board[i][j]
        rowch = 1
      elif rowch == 1 and board[i][j] != '':
        word_row += board[i][j]
        if j+1 == len(board) :
          if is_valid(word_row) : valid.append(word_row)
          elif word_row != '' and len(word_row) > 1 : invalid.append(word_row)
          word_row = ''
          rowch = 0
      elif rowch == 1 and board[i][j] == '':
        if is_valid(word_row) : valid.append(word_row)
        elif word_row != '' and len(word_row) > 1 : invalid.append(word_row)
        word_row = ''
        rowch = 0
      if colch == 0 and board[j][i] != '' and j+1 != len(board):
        word_col += board[j][i]
        colch = 1
      elif colch == 1 and board[j][i] != '':
        word_col += board[j][i]
        if j+1 == len(board) :
          if is_valid(word_col) : valid.append(word_col)
          elif word_col != '' and len(word_col) > 1 : invalid.append(word_col)
          word_col = ''
          colch = 0
      elif colch == 1 and board[j][i] == '':
        if is_valid(word_col) : valid.append(word_col)
        elif word_col != '' and len(word_col) > 1 : invalid.append(word_col)
        word_col = ''
        colch = 0
    valid.sort()
    invalid.sort() 
  return [valid,invalid]
def get_play(board, new_board):
  row = []; col = []; word = ''; down = 0
  for i in range(len(board)) :
    for j in range(len(board)) :
      if new_board[i][j] != board[i][j] : 
        if i not in row : row.append(i)
        if j not in col : col.append(j)
        word += new_board[i][j]
  if len(col) == 1 and len(word) > 1 : down = 1
  return [row[0],col[0],down,word]
def play(row,col,down,tiles,board):
  score = 0
  boo, nboard = place_tiles(row,col,down,tiles,board)
  if boo == False : return -1
  else :
    old = get_all_words(board)
    new = get_all_words(nboard)  
    if len(new[1]) != 0 : return -1
    else :
      for e in new[0] :
        if e not in old[0] :
          for ch in e : score += get_value(ch)
        else : old[0].pop(old[0].index(e))
      if len(tiles) >= 7 : score += 50
    return score
def best_play(tiles,board):
  ans = []
  for i in range(len(board)) :
    for j in range(len(board)) :
      rscore = play(i,j,0,tiles,board)
      cscore = play(i,j,1,tiles,board)
      if rscore != -1 : ans.append([-rscore,i,j,0])
      if cscore != -1 : ans.append([-cscore,i,j,1])
  ans.sort()
  if len(ans) == 0 : return [-1,-1,-1,-1]
  else : ans[0][0] = -ans[0][0]
  return ans[0]

00243: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_140.0
[8, 20, 286, -1]
test_play_150.0
[379]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1520, 'const': 491, 'code+const': 2011}
check_import({'allowable': ['math']}): none
def tran(board):
    tran=make_board()
    for i in range(15):
        for j in range(15):
            tran[i][j] = board[j][i]
    return tran
def makeword(board):
    word=[]
    for i in board:
        word.append([[board.index(i)],['']])
        for j in i:
            if j != '':
                word[-1][1][-1]+=j
            elif j == '' and word[-1][1][-1] != '':
                word[-1][1].append(j)
    return word
def longword(board):
    longword=''
    for i in board:
        if i != '':
            longword+=i.upper()
        else:
            longword+=' '
    return longword
def allwordslist(board):
    allword=[[],[]]
    for i in (makeword(board)):
        for j in i[1]:
            if len(j)>=2 and is_valid(j):
                allword[0].append([i[0][0],longword(board[i[0][0]]).index(j.upper()),0,j.upper()])
            elif len(j)>=2 and not is_valid(j):
                allword[1].append([i[0][0],longword(board[i[0][0]]).index(j.upper()),0,j.upper()])
    for i in (makeword(tran(board))):
        for j in i[1]:
            if len(j)>=2 and is_valid(j):
                allword[0].append([longword(tran(board)[i[0][0]]).index(j.upper()),i[0][0],1,j.upper()])
            elif len(j)>=2 and not is_valid(j):
                allword[1].append([longword(tran(board)[i[0][0]]).index(j.upper()),i[0][0],1,j.upper()])
    return allword
def get_all_words(board):
    allword=[[],[]]
    listwords=allwordslist(board)
    for i in listwords[0]:
        allword[0].append(i[3])
    for i in listwords[1]:
        allword[1].append(i[3])
    allword[0].sort()
    allword[1].sort()
    return allword
def get_play(board, new_board):
    change=make_board()
    for i in range(15):
        for j in range(15):
            if board[i][j] != new_board[i][j]:
                change[i][j]=new_board[i][j]
    play=[]
    for i in range(15):
        allp=''.join(change[i]).upper()
        if allp != '':
            play.append([i,change[i].index(allp[0]),0,allp])
    if len(play) == 1:
        return play[0]
    change=tran(change)
    play=[]
    for i in range(15):
        allp=''.join(change[i]).upper()
        if allp != '':
            play.append([change[i].index(allp[0]),i,1,allp])
    return play[0]
def play(row,col,down,tiles,board):
    place=place_tiles(row,col,down,tiles,board)
    if not place[0]:
        return -1
    old=allwordslist(board)[0]
    new=allwordslist(place[1])[0]
    if len(allwordslist(place[1])[1]) != 0:
        return -1
    newcount=[]
    for i in new:
        if i not in old:
            newcount.append(i[3])
    score=0
    for i in newcount:
        for j in i:
            score+=get_value(j)
    if len(tiles) >= 7:
        score+=50
    return score
def best_play(tiles,board):
    allscore=[]
    for x in range(15):
        for y in range(15):
            for z in range(2):
                allscore.append([-play(x,y,z,tiles,board),x,y,z])
    if sorted(allscore)[0][0] != 1:
        a,b,c,d=sorted(allscore)[0]
        return [-a,b,c,d]
    return [-1,-1,-1,-1]

00244: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 730, 'const': 326, 'code+const': 1056}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  row = ''
  col = ''
  for i in range(15):
    row += ' '
    col += ' '
    for j in range(15):
      x = board[i][j]
      if get_value(x) != -1:
        row += x
      else:
        row += ' '
      y = board[j][i]
      if get_value(y) != -1:
        col += y
      else:
        col += ' '
  valid = []
  invalid = []
  for i in sorted(row.split() + col.split()):
    if len(i) > 1:
      if is_valid(i):
        valid.append(i)
      else:
        invalid.append(i)
  return [valid, invalid]
def get_play(board, new_board):
  tiles = ''
  row = []
  col = []
  for i in range(15):
    for j in range(15):
      t = new_board[i][j]
      if board[i][j] != t:
        row.append(i)
        col.append(j)
        tiles += t
  down = 0
  frow = row[0]
  fcol = col[0]
  if frow != row[-1]:
    down = 1
  return [frow, fcol, down, tiles]
def play(row,col,down,tiles,board):
  w_board,z = get_all_words(board)
  x, n_board = place_tiles(row,col,down,tiles,board)
  w_n_board,y = get_all_words(n_board)
  score = 0
  if y != [] or not x:
    return -1
  for w in w_n_board:
    if w in w_board:
      w_board.pop(w_board.index(w))
    else:
      if is_valid(w):
        for l in w:
          score += get_value(l)
  if len(tiles) > 6:
    score += 50
  return score
def best_play(tiles,board):
  score = []
  for row in range(15):
    for col in range(15):
      for down in range(2):
        score.append([-play(row,col,down,tiles,board), row, col, down])
  m, row, col, down = min(score)
  if m == 1:
    return [-1,-1,-1,-1]
  return [-m, row, col, down]

00245: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1036, 'const': 387, 'code+const': 1423}
check_import({'allowable': ['math']}): none
def get_word_at(row,col,down,board) :
  word = ''
  i,j = row,col
  while(i<15 and j<15 and board[i][j]!='') :
    word+=board[i][j]
    if down : i+=1 
    else : j+=1
  return word.upper()
def get_all_words(board):
    re = [[], []]
    for i in range(15) :
      for j in range(15) :
        if(board[i][j]) :
          if ((i-1>=0 and board[i-1][j]=='') or i==0) :
            word = get_word_at(i,j,1,board)
            if(len(word)>1):
              if (is_valid(word)) : re[0].append(word)
              else : re[1].append(word)
          if ((j-1>=0 and board[i][j-1]=='') or j==0):
            word = get_word_at(i,j,0,board)
            if(len(word)>1):
              if (is_valid(word)) : re[0].append(word)
              else : re[1].append(word)
    re[0].sort()
    re[1].sort()
    return re
def get_play(board, new_board):
  for i in range(15):
    for j in range(15):
      if(new_board[i][j] and not board[i][j]) :
        down = 0
        for k in range(i+1,15) :
          if(not new_board[k][j]): break
          if(not board[k][j]):
            down=1
            break
        word = ""
        if down :
          for k in range(i,15) :
            if(not new_board[k][j]): break
            if(not board[k][j]):
              word+=new_board[k][j]
        else :
          for k in range(j,15) :
            if(not new_board[i][k]): break
            if(not board[i][k]):
              word+=new_board[i][k]
        return [i,j,down,word]
def play(row,col,down,tiles,board):
    place_tile = place_tiles(row,col, down, tiles, board)
    words1 = get_all_words(board)
    words2 = get_all_words(place_tile[1])
    if (not place_tile[0] or len(words2[1]) != 0): return -1
    score = 0
    words1[0] += words1[1]
    for w in words2[0] :
      if w in words1[0] :
        words1[0].remove(w)
      else :
        for c in w :
          score += get_value(c)
    if(len(tiles) >= 7): score = score + 50
    return score
def best_play(tiles,board):
    re = [-1,-1,-1,-1] 
    for row in range(15):
      for col in range(15):
        for down in range(2):
          play_score = play(row,col,down,tiles,board)
          if(play_score > re[0]):
            re[0] = play_score
            re[1] = row
            re[2] = col 
            re[3] = down
    return re

00246: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1132, 'const': 350, 'code+const': 1482}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  letter = ''
  word = []
  for i in range(15):
    word.append(letter)
    letter = ''
    for j in range(15):
      if board[i][j] != '':
        letter = letter+board[i][j]
      if board[i][j] == '':
        if letter != '':
          word.append(letter)
          letter = ''
  for i in range(15):
    word.append(letter)
    letter = ''
    for j in range(15):
      if board[j][i] != '':
        letter = letter+board[j][i]
      if board[j][i] == '':
        if letter != '':
          word.append(letter)
          letter = ''
  word.append(letter)
  valid =[]
  notvalid =[]
  for i in range(len(word)):
      check = is_valid(word[i])
      if check == True and len(word[i]) > 1:
          valid.append(word[i])
      if check == False and len(word[i]) > 1:
          notvalid.append(word[i])
  return [sorted(valid),sorted(notvalid)]
def get_play(board, new_board):
  A = []
  B = ''
  C = 0
  for i in range(15):
    for j in range(15):
      if new_board[i][j] != board[i][j]:
        A.append([i,j])
        B = B+new_board[i][j]
  if len(A) > 1:
    for i in range(len(A)):
      if A[i-1][0] == A[i][0]:
        C = 0
      elif A[i-1][1] == A[i][1]:
        C = 1
  else:
    C = 0
  return [A[0][0],A[0][1],C,B]
def play(row,col,down,tiles,board):
  score=0
  valid,new_board = place_tiles(row,col,down,tiles,board)
  if valid==False or get_all_words(new_board)[1] != []:
    return -1
  y = get_all_words(new_board)[0]
  x = get_all_words(board)[0]
  for e in x:
    if e in y:
      y.remove(e)
  for e in y:
    for i in e:
      score+=get_value(i)
  if len(tiles)>=7:
    score += 50
  else:
    pass
  return score
def best_play(tiles,board):
  p=[]
  score=0
  down=0
  for i in range(15):
    row=i
    for j in range(15):
      col=j
      score=play(row,col,down,tiles,board)
      p.append([score, -row, -col, -down])
  down=1
  for i in range(15):
    row=i
    for j in range(15):
      col=j
      score=play(row,col,down,tiles,board)
      p.append([score, -row, -col, -down])
  p.sort()
  show=p[-1]
  if show[0]==-1:
    return [-1, -1, -1, -1]
  show[1]=-1*show[1]
  show[2]=-1*show[2]
  show[3]=-1*show[3]
  return show

00247: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 578, 'const': 620, 'code+const': 1198}
check_import({'allowable': ['math']}): none
def get_all_words(b):
    o = [[],[]]
    for i in [*b,[*sum([*zip(*b,['']*15)],())]]:
      for j in map(lambda x: x.replace(' ',''),[*filter(lambda x: len(x.strip()) > 2,' '.join(i).split('  '))]):
        o[is_valid(j)].append(j)
    return [*reversed([*map(sorted,o)])]
def get_play(board, new_board):
    d = []
    t = 0
    x = ''
    for i in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]:
      for j in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]:
        s = new_board[i][j]
        if board[i][j] != s:
          if len(d) > 0:
            if d[1] == j:
              t = 1
          else:
            d = [i,j]
          x += s
    return [*d,t,x]
def play(*a):
    ac,aw = get_all_words(a[4])
    i,b = place_tiles(*a)
    ac2,aw2 = get_all_words(b)
    if not i or aw2 != aw:
      return -1
    o = 50*(len(a[3]) > 6)
    for i in ac:
      if i in ac2:
        ac2.remove(i)
    for i in ac2:
      o+=sum(map(get_value,i))
    return o
def best_play(*a):
    o = [-1]*4
    for i in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]:
      for j in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]:
        for k in [0,1]:
          p = play(i,j,k,*a)
          if p > o[0]:
            o = [p,i,j,k]
    return o

00248: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 914, 'const': 376, 'code+const': 1290}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words = []
    invalid_words = []
    for r in range(15):
        hwords = ''
        vwords = ''
        for c in range(15):
            if len(board[r][c]) != 0:
                hwords += board[r][c]
            else:
                hwords += ' '
            if len(board[c][r]) != 0:
                vwords += board[c][r]
            else:
                vwords += ' '
        words = hwords.strip().split() + vwords.strip().split()
        for w in words:
            if is_valid(w): valid_words.append(w)
            elif not is_valid(w) and len(w) >= 2 : invalid_words.append(w)
    valid_words.sort() ; invalid_words.sort()
    return [valid_words,invalid_words]
def get_play(board, new_board):
    coords = []
    new_tiles = ''
    for r in range(15):
        for c in range(15):
            if new_board[r][c] != board[r][c]:
                coords.append([r,c])
                new_tiles += new_board[r][c]
    x,y,down = coords[0][0],coords[0][1],0
    if len(coords) > 1:
        if x == coords[1][0]:
            down = 0
        else:
            down = 1
    return [x,y,down,new_tiles]
def play(row,col,down,tiles,board):
    initial_words = get_all_words(board)
    valid_check,board = place_tiles(row,col,down,tiles,board)
    if valid_check == False: return -1
    else:
        new_words,created_words = get_all_words(board),get_all_words(board)
    for e in new_words[0]:
        if e in initial_words[0]:
            initial_words[0].remove(e)
            created_words[0].remove(e)
    bingo = False
    if len(tiles) >= 7: bingo = True
    if len(created_words[0]) == 0 or len(created_words[1]) != 0: return -1
    else:
        score = 0
        for word in created_words[0]:
            for letter in word:
                score += get_value(letter)
        if bingo: score += 50
    return score
def best_play(tiles,board):
    playable = []
    for r in range(15):
        for c in range(15):
            for d in range(2):
                if play(r,c,d,tiles,board) != -1:
                    score = -play(r,c,d,tiles,board)
                    playable.append([score,r,c,d,tiles])
    playable.sort()
    if len(playable) == 0: return [-1,-1,-1,-1]
    else:
        return [-playable[0][0],playable[0][1],playable[0][2],playable[0][3]]

00249: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 984, 'const': 826, 'code+const': 1810}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  result = [[], []]
  for i in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]:
    h = ''
    v = ' '
    for j in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]:
      h += board[i][j] if board[i][j] else ' ' 
      v += board[j][i] if board[j][i] else ' '
    h += v
    for word in h.split():
      if  len(word) >= 2:
        result[not is_valid(word)].append(word)
  return [*map(sorted, result)]
def get_play(board, new_board):
  first_meet = []
  down = 0
  diff = ''
  for i in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]:
    for j in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]:
      c = new_board[i][j]
      if board[i][j] != c:
        if first_meet != []:
          if first_meet[1] == j:
            down = 1
        else:
          first_meet = [i, j]
        diff += c
  return [*first_meet, down, diff]
def get_all_word_position(board):
  result = [[], []]
  for i in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]:
    h = ''
    v = ' '
    for j in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]:
      h += board[i][j] if board[i][j] else ' ' 
      v += board[j][i] if board[j][i] else ' '
    h += v
    word = ''
    pos = [0, 0]
    for k in range(len(h)):
      if h[k] != ' ':
        if sum(pos) == 0:
          pos = [i, k%17] if k // 17 == 0 else [k%17 + 1, i]
        word += h[k]
        if (k == 14 or k == 30) and len(word) >= 2:
          result[not is_valid(word)].append([*pos, k // 17, word])
          word = ''
          pos = [0, 0]
      else:
        if len(word) >= 2:
          result[not is_valid(word)].append([*pos, k // 17, word])
        word = ''
        pos = [0, 0]
  return result
def play(row,col,down,tiles,board):
  result = place_tiles(row,col,down,tiles,board)
  valid_word, invalid_word = get_all_word_position(result[1])
  if not result[0] or invalid_word > []:
    return -1
  for word in get_all_word_position(board)[0]:
    if word in valid_word:
      valid_word.remove(word)
  score = 50 * ( len(tiles) >= 7) + sum(map(get_value, ''.join([x[3] for x in valid_word])))
  return score
def best_play(tiles,board):
  scoreboard = [-1,-1,-1,-1]
  for i in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]:
    for j in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]:
      for k in [0, 1]:
        score_h = play(i, j, k, tiles, board)
        if scoreboard[0] < score_h:
          scoreboard = [score_h, i, j, k]
  return scoreboard

00250: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 15, 24, 17, 85, -12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 1827, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 120, 1426, 8-1]
test_play_150.0
[2839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1552, 'const': 323, 'code+const': 1875}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    b = board
    ans = [[],[]]
    for i in range(len(board)):
        k=0
        for j in range(len(board[0])-k):
            if j+k>=len(board[0]):
                break
            if b[i][j+k]!='':
                t = 0
                word = ""
                while j+t+k<len(board) and b[i][j+k+t]!='':
                    word += b[i][j+t+k]
                    t+=1
                k+=t
                if len(word)==1:
                    continue
                if is_valid(word):
                    ans[0].append(word)
                else:
                    ans[1].append(word)
    for j in range(len(board[0])):
        k=0
        for i in range(len(board)):
            if i+k>=len(board):
                break
            if b[i+k][j]!='':
                t = 0
                word = ""
                while i+t+k<len(board[0]) and b[i+t+k][j]!='':
                    word += b[i+t+k][j]
                    t+=1
                k+=t
                if len(word)==1:
                    continue
                if is_valid(word):
                    ans[0].append(word)
                else:
                    ans[1].append(word)
    ans[0].sort()
    ans[1].sort()
    return ans
def get_play(board, new_board):
    b = board
    nb = new_board
    iorj = [[7],[4]]
    i_j = 1
    for i in range(len(board)):
        for j in range(len(board[0])):
            if b[i][j] != nb[i][j]:
                if i not in iorj[0]:
                    iorj[0] += [i]
                else:
                    i_j = 1
                if j not in iorj[1]:
                    iorj[1] += [j]
                else:
                    i_j = 0
    for i in range(len(board)):
        for j in range(len(board[0])):
            k = 0
            w = ""
            if b[i][j] != nb[i][j]:
                if i+1<len(b) and i_j==0:
                    while(i+k<len(b) and nb[i+k][j] != ''):
                        if b[i+k][j] != nb[i+k][j]:
                            w += nb[i+k][j]
                        k+=1
                    return [i,j,1,w]
                elif j+1<len(b[0]) and i_j==1:
                    while(j+k<len(b[0]) and nb[i][j+k] != ''):
                        if b[i][j+k] != nb[i][j+k]:
                            w += nb[i][j+k]
                        k+=1
                    return [i,j,0,w]
def play(row,col,down,tiles,board):
    b = 0
    wordboard = get_all_words(board)[0]
    pt = place_tiles(row,col,down,tiles,board)
    nb = pt[1]
    score = 0
    new_wordboard = get_all_words(nb)[0]
    for i in range(len(new_wordboard)):
        if new_wordboard[i] not in wordboard:
            if len(tiles)>=7:
                b = 1
            for j in new_wordboard[i]:
                score += get_value(j)
    if score==0:
        return -1
    return score + b*50
def best_play(tiles,board):
    ans = []
    for i in range(len(board)):
        for j in range(len(board[0])):
            if board[i][j]=="":
                for down in range(2):
                    t = place_tiles(i,j,down,tiles,board)
                    if not t[0]:
                        continue
                    if len(get_all_words(t[1])[1]) == 0:
                        ans += [[-play(i,j,down,tiles,board),i,j,down]]
    ans.sort()
    if len(ans)==0:
        return [-1,-1,-1,-1]
    ans[0][0]*=-1
    return ans[0]

00251: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_50.0
[[['HELIOS', 'UNOBSERVANT'],
  ['E', 'G', 'I', 'I', 'I', 'LIAM', 'N', 'NOOOOO', 'ONIGIRI', 'R', 'R', 'V']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_90.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  ['A', 'C', 'E', 'G', 'L', 'N', 'N', 'Q', 'U', 'U', 'W']]]
test_get_all_words_100.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['A', 'JOJUOLOOMJYOOI', 'RO', 'V']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0
[0-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_20.0
[[0-1, 0-1, 0-1, 0-1]]
test_best_play_30.0
[[68, 0, 7, 1], [87, 12, 60, 10], [10879, 41, 512, 1], [7259, 81, 80, 10], [171, 112, 93, 10], [7265, 73, 4, 1],
 [3019, 16, 81, 10], [197, 14, 92, 1], [191, 120, 21, 0], [22, 3, 108, 1]]
test_best_play_40.0
[[71, 0, 7, 1], [763, 210, 80, 10], [7863, 1, 91, 10], [149, 17, 63, 1], [2019, 813, 10, 10], [772, 214, 114, 10],
 [2517, 26, 126, 10], [258, 13, 73, 0], [218, 34, 130, 10], [136, 45, 14, 10]]
test_best_play_50.0
[[83, 0, 7, 1], [8062, 513, 80, 10], [7258, 1, 98, 10], [210, 80, 61, 10], [7468, 0, 101, 1], [1824, 126, 48, 01],
 [178, 18, 69, 1], [2310, 31, 52, 1], [321, 45, 43, 1], [1927, 14, 114, 1]]
bytecount: {'code': 896, 'const': 393, 'code+const': 1289}
check_import({'allowable': ['math']}): [[('types', 1)]]
from types import new_class
def get_all_words(board):
    valid_words = []
    invalid_words = []
    for r in board:
        v = '_'.join(r)
        v = v.strip('_').split('__')
        for e in v:
            if len(e) >= 2:
                word = (''.join(e.split('_'))).upper()
                if is_valid(word):
                    valid_words.append(word)
                else:
                    invalid_words.append(word)
    for i in range (len(board)):
        p = []
        for j in range (len(board)):
            p.append(board[j][i])
        v = '_'.join(p)
        v = v.strip('_').split('__')
        for e in v:
            if len(e) >= 3:
                word = (''.join(e.split('_'))).upper()
                if is_valid(word):
                    valid_words.append(word)
                else:
                    invalid_words.append(word)
    valid_words.sort()
    invalid_words.sort()
    return [valid_words,invalid_words]
def get_play(board, new_board):
    word = []
    first = 0
    second = 0
    down = 0
    for i in range (len(board)):
        for j in range (len(board)):
            if new_board[i][j] != board[i][j]:
                word.append(new_board[i][j])
                if first == 0:
                    row = i
                    col = j
                    first = 1
                elif second == 0:
                    if row == i:
                        down = 0
                    else:
                        down = 1
                    second = 1     
    if len(word) == 1:
        down = 0          
    return [row,col,down,''.join(word)]
def play(row,col,down,tiles,board):
  valid , new_board = place_tiles(row,col,down,tiles,board)
  c = 0
  b = False
  if valid == False and len(get_all_words(new_board)[1]) != 0 :
    for e in get_all_words(new_board)[1]:
      if is_valid(e) == False: return -1
  valid_ob = get_all_words(board)[0]
  valid_nb = get_all_words(new_board)[0]
  for e in valid_nb:
    if e not in valid_ob:
      if len(tiles) >= 7: b = True
      for r in e: c += get_value(r)
    else: valid_ob.remove(e)
  if b: c+= 50
  return c
def best_play(tiles,board):
  a = [-1]*4
  for row in range (len(board)):
      for col in range (len(board)):
        for down in range(2):
          s = play(row,col,down,tiles,board)
          if s > a[0] and s != -1:
            a = [s,row,col,down]
  return a

00252: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1344, 'const': 396, 'code+const': 1740}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    RETURN = [[],[]]
    L = []
    w = ''
    for line in board:
      for A in line:
        if A == '':
          w+=('.')
        else:
          w+=A
      words = w.split('.')
      L+=words
      w=''
    inverse_board = make_board()
    for i in range(15):
      for j in range(15):
        inverse_board[j][i]=board[i][j]
    for line in inverse_board:
      for A in line:
        if A == '':
          w+=('.')
        else:
          w+=(A)
      words = w.split('.')
      L+=words
      w=''
    for the_word in L:
      if len(the_word)<=1 :
          continue
      elif is_valid(the_word):
          RETURN[0].append(the_word)
      elif True:
          RETURN[1].append(the_word)
    RETURN[0].sort()
    RETURN[1].sort()
    return RETURN 
def get_play(board, new_board):
    diff_board = make_board()
    for i in range(15):
      for j in range(15):
        if board[i][j]!=new_board[i][j]:
          diff_board[i][j]=new_board[i][j]
    breaking=False
    for i in range(15):
      for j in range(15):
        if diff_board[i][j] != '': 
          starting_point=[i,j]
          breaking = True
          break
      if breaking == True : break 
    y,x = starting_point
    A1 = new_board[y][x:]
    B1 = board[y][x:]
    X=''
    for k in range(len(A1)): 
      e,f= A1[k],B1[k]
      if e!=f:
        X+=e
    downmode = 0
    if len(X)==1: 
      downmode = 1
      X=''
      new_board_inversed = make_board()
      board_inversed = make_board()
      for i in range(15):
        for j in range(15):
          new_board_inversed[j][i]=new_board[i][j]
          board_inversed[j][i]=board[i][j]
      A2=new_board_inversed[x][y:]
      B2=board_inversed[x][y:]
      for k in range(len(A2)): 
        e,f= A2[k],B2[k]
        if e!=f:
          X+=e
      if len(X)==1:
        downmode = 0
    RETURN = [y,x,downmode,X]
    return RETURN 
def play(row,col,down,tiles,board):
  score=0
  new_word1 = []
  all_valid,placed_board = place_tiles(row,col,down,tiles,board)
  if all_valid==False:
    return -1
  A0,B0=get_all_words(board),get_all_words(placed_board)
  A=A0[0]+A0[1]
  B=B0[0]+B0[1]
  new_word1=[]
  for b in B:
    if b not in A:
      new_word1.append(b)
    else:
      A.pop(A.index(b))
  for w in new_word1:
      if not is_valid(w):
        all_valid = False
  for g in new_word1:
    for h in g:
      score+=letter_value[h.lower()]
  if len(tiles)>=7:
    score+=50
  if all_valid == True:
    return score 
  else:
    return -1
def best_play(tiles,board):
  all=[]
  for i in range(15):
    for j in range(15):
      for d in [0,1]:
        the_score = play(i,j,d,tiles,board)
        if the_score!=-1:
          all.append([the_score,i,j,d])
  if len(all)==0:
    return [-1,-1,-1,-1]
  else:
    all = sorted(all)[::-1]
    max_score=all[0][0]
  all2=[]
  for a in all:
    if a[0]==max_score:
      all2.append(a)
  all2.sort()
  return all2[0]

00253: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 2618, 'const': 597, 'code+const': 3215}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words = []
    invalid_words = []
    for row in range(len(board)):
      word_horizontal = ""
      for index_in_row in range(15):
        if "A" <= board[row][index_in_row].upper() <="Z":
          word_horizontal += board[row][index_in_row].upper()
        else:
          word_horizontal += " "
      list_of_word_horizontal = word_horizontal.split()
      for word in list_of_word_horizontal:
        if len(word) >= 2:
          if is_valid(word) == True:
            valid_words.append(word)
          else:
            invalid_words.append(word)
    for index_in_row in range(len(board)):
      word_vertical = ""
      for line in range(15):
        if "A" <= board[line][index_in_row].upper() <= "Z":
          word_vertical += board[line][index_in_row].upper()
        else:
          word_vertical += " "
      list_of_word_vertical = word_vertical.split()
      for word in list_of_word_vertical:
        if len(word) >= 2:
          if is_valid(word) == True:
            valid_words.append(word)
          else:
            invalid_words.append(word)
    valid_words.sort()
    invalid_words.sort()
    return [valid_words,invalid_words]
def get_all_words_with_index(board):
  valid_words_horizontal_with_index = []
  list_of_index_each_ch_in_horizontal = []
  valid_words_vertical_with_index = []
  list_of_index_each_ch_in_vertical = []
  for row in range(15):
    word_horizontal = ""
    if "A" <= board[row][0] <= "Z" and "A" <= board[row][1] <= "Z":
      word_horizontal += board[row][0]
      list_of_index_each_ch_in_horizontal.append([row,0,0])
    for index_in_row in range(1,14):
      if board[row][index_in_row-1] == "" and "A" <= board[row][index_in_row] <= "Z" and "A" <= board[row][index_in_row+1] <= "Z":
        word_horizontal += board[row][index_in_row]
        list_of_index_each_ch_in_horizontal.append([row,index_in_row,0])
      elif "A" <= board[row][index_in_row-1] <= "Z" and "A" <= board[row][index_in_row] <= "Z" and "A" <= board[row][index_in_row+1] <= "Z":
        word_horizontal += board[row][index_in_row]
        list_of_index_each_ch_in_horizontal.append([row,index_in_row,0])
      elif "A" <= board[row][index_in_row-1] <= "Z" and "A" <= board[row][index_in_row] <= "Z" and board[row][index_in_row+1] == "":
        word_horizontal += board[row][index_in_row]
        list_of_index_each_ch_in_horizontal.append([row,index_in_row,0])
      else:
        word_horizontal += " "
    if "A" <= board[row][13] <= "Z" and "A" <= board[row][14] <= "Z":
      word_horizontal += board[row][14]
      list_of_index_each_ch_in_horizontal.append([row,14,0])
    list_of_word_horizontal = word_horizontal.split()
    for word in list_of_word_horizontal:
      if len(word) >= 2:
          valid_words_horizontal_with_index.append([word,list_of_index_each_ch_in_horizontal[0]])
          list_of_index_each_ch_in_horizontal = list_of_index_each_ch_in_horizontal[len(word):]
  for index_in_row in range(15):
    word_vertical = ""
    if "A" <= board[0][index_in_row] <= "Z" and "A" <= board[1][index_in_row] <= "Z":
      word_vertical += board[0][index_in_row]
      list_of_index_each_ch_in_vertical.append([0,index_in_row,1])
    for row in range(1,14):
      if board[row-1][index_in_row] == "" and "A" <= board[row][index_in_row] <= "Z" and "A" <= board[row+1][index_in_row] <= "Z":
        word_vertical += board[row][index_in_row]
        list_of_index_each_ch_in_vertical.append([row,index_in_row,1])
      elif "A" <= board[row-1][index_in_row] <= "Z" and "A" <= board[row][index_in_row] <= "Z" and "A" <= board[row+1][index_in_row] <= "Z":
        word_vertical += board[row][index_in_row]
        list_of_index_each_ch_in_vertical.append([row,index_in_row,1])
      elif "A" <= board[row-1][index_in_row] <= "Z" and "A" <= board[row][index_in_row] <= "Z" and board[row+1][index_in_row] == "":
        word_vertical += board[row][index_in_row]
        list_of_index_each_ch_in_vertical.append([row,index_in_row,1])
      else:
        word_vertical += " "
    if "A" <= board[13][index_in_row] <= "Z" and "A" <= board[14][index_in_row] <= "Z":
      word_vertical += board[14][index_in_row]
      list_of_index_each_ch_in_vertical.append([row,14,1])
    list_of_word_vertical = word_vertical.split()
    for word in list_of_word_vertical:
      if len(word) >= 2:
          valid_words_vertical_with_index.append([word,list_of_index_each_ch_in_vertical[0]])
          list_of_index_each_ch_in_vertical = list_of_index_each_ch_in_vertical[len(word):]
  list_of_words_horizontal = valid_words_horizontal_with_index
  list_of_words_vertical = valid_words_vertical_with_index
  list_of_all_words_valid = []
  for word in list_of_words_horizontal:
    if is_valid(word[0]) == True:
      list_of_all_words_valid.append(word)
  for word in list_of_words_vertical:
    if is_valid(word[0]) == True:
      list_of_all_words_valid.append(word)
  return list_of_all_words_valid
def get_play(board, new_board):
  word_not_same = ""
  index_not_found = []
  for row in range(len(board)):
    for index_in_row in range(15):
      if board[row][index_in_row].upper() != new_board[row][index_in_row].upper():
        word_not_same += new_board[row][index_in_row].upper()
        index_not_found.append([row,index_in_row])
  down = 0
  if index_not_found[0][0] < index_not_found[-1][0]:
    down = 1
  return [index_not_found[0][0],index_not_found[0][1],down,word_not_same,]
def play(row,col,down,tiles,board):
  before_out = []
  point = 0
  valid_word_old_board = get_all_words_with_index(board)
  valid,new_board = place_tiles(row,col,down,tiles,board)
  valid_word_new_board,invalid_word_new_board = get_all_words(new_board)
  if len(invalid_word_new_board) >= 1 or valid == False:
    return -1
  valid_word_new_board = get_all_words_with_index(new_board)
  for word in valid_word_new_board:
    if word in valid_word_old_board:
      valid_word_old_board.remove(word)
    else:
      before_out.append(word[0])
  for word in before_out:
    for ch in word:
      point += get_value(ch)
  if len(tiles) >= 7:
    point += 50
  return point
def best_play(tiles,board):
  list_of_point_etc = []
  for row in range(len(board)):
    for index_in_row in range(len(board)):
      for down in range(2):
          list_of_point_etc.append([play(row,index_in_row,down,tiles,board),row,index_in_row,down])
  list_of_point_etc.sort()
  maxs_point = max(list_of_point_etc)[0]
  if maxs_point == -1:
    return [-1,-1,-1,-1]
  for point,row,index_in_row,down in list_of_point_etc:
    if point == maxs_point:
      return [point,row,index_in_row,down]

00254: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_90.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO',
   'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING',
   'OXYPRHEQNBUTALIFIZONED', 'SAD', 'XPI', 'YE'],
  ['ACR', 'CI', 'DOMBPREQUALINWASHFING', 'EOM', 'IG', 'LY', 'NTD', 'OUM', 'OXYPHENBUTAZONEPIER', 'RNYE',
   'SEJACULATING', 'TN', 'TZOOT'],
 'UF' []]]
test_get_all_words_100.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JIVEA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JAJOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 10, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, -128, 11, -13, -185, -11, -12, 7, 25, -17, -14, -21, -132, 12, 15, -16, -168, 6, -13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_40.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [-172, -14, -14, -10],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1212, 'const': 636, 'code+const': 1848}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  rw = []
  iw = []
  ans = []
  w = ''
  for i in board :
    for e in i :
      if e == '':
        w += ' '
      else :
        w += e
  for i in range(15) :
    for j in range(15) :
      if board[j][i] == '' :
        w += ' '
      else :
        w += board[j][i]
  wl = w.split()
  for i in range(50) :
    for e in wl :
      if len(e) == 1 :
        wl.remove(e)
  for e in wl :
    c = is_valid(e)
    if c == True :
      rw.append(e)
    if c == False :
      iw.append(e)
  rw.sort()
  iw.sort() 
  ans.append(rw)
  ans.append(iw)
  return(ans)
def get_play(board, new_board):
  b2 = False
  b1 = False
  t = -1
  nw = ''
  for i in range(15) :
    for j in range(15) :
      if board[i][j] != new_board[i][j] :
        nw += new_board[i][j]
  for i in range(15) :
    for j in range(15) :
      if nw[0] == new_board[i][j] and board[i][j] != new_board[i][j] :
        q,w = i,j
        b1 = True
        break
    if b1 :
      break
  for i in range(15) :
    for j in range(15) :
      if nw[-1] == new_board[i][j] and board[i][j] != new_board[i][j] :
        e,r = i,j
        b2 = True
        break
    if b2 :
      break
  if e == q :
    t = 0
  if w == r :
    t = 1
  if len(nw) == 1 :
    t = 0
  return([q,w,t,nw])
def play(row,col,down,tiles,board):
  nw = []
  if place_tiles(row,col,down,tiles,board)[0] :
    nb = place_tiles(row,col,down,tiles,board)[1]
    [rw2,iw2] = get_all_words(nb)
    [rw1,iw1] = get_all_words(board)
  else :
    return(-1)
  if iw2 != [] :
    return(-1)
  else : pass
  for e in rw1 :
    if e in rw2 :
      rw2.remove(e)
  x = []
  score = 0
  s = {'a':1,'b':3,'c':3,'d':2,'e':1,'f':4,'g':2,'h':4,'i':1,'j':8,'k':5,'l':1,'m':3,'n':1,'o':1,'p':3,'q':10,'r':1,'s':1,'t':1,'u':1,'v':4,'w':4,'x':8,'y':4,'z':10}
  for e in rw2 :
    e = e.lower()
    x.append(e)
  if len(tiles) >= 7 :
      score += 50
  for e in x :
    for i in e :
      score += s[i]
  return(score)
def best_play(tiles,board):
  row,col,down,score = -1,-1,-1,-1
  for i in range(15):
    for j in range(15):
      p = play(i,j,0,tiles,board)
      if int(play(i,j,1,tiles,board)) > p and int(play(i,j,1,tiles,board)) > score :
        row,col,down,score = i,j,1,int(play(i,j,1,tiles,board))
      elif int(play(i,j,0,tiles,board)) > score:
        row,col,down,score = i,j,0,int(play(i,j,0,tiles,board))
  ans = [score,row,col,down]    
  return ans

00255: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_90.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO',
   'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING',
   'OXYPRHEQNBUTALIFIZONED', 'SAD', 'XPI', 'YE'],
  ['ACR', 'CI', 'DOMBPREQUALINWASHFING', 'EOM', 'IG', 'LY', 'NTD', 'OUM', 'OXYPHENBUTAZONEPIER', 'RNYE',
   'SEJACULATING', 'TN', 'TZOOT'],
 'UF' []]]
test_get_all_words_100.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JIVEA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JAJOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0
[0-1]
test_play_20.0
[9-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 428, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 321, 12, -15, 16, 68, 106, 213, -10, -127, -128]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[359]
test_best_play_10.0
[[69, 01, 07, 01]]
test_best_play_20.0
[[0-1, 0-1, 0-1, 0-1]]
test_best_play_30.0
[[68, 0, 07, 01], [687, 712, 0, 0], [10279, 61, 12, 01], [759, 51, 50, 0], [121, 82, 63, 0], [7865, 13, 24, 01],
 [2819, 96, 81, 0], [357, 24, 132, 1], [161, 20, 51, 0], [3522, 103, 8, 01]]
test_best_play_40.0
[[71, 0, 07, 01], [623, 210, 70, 10], [7963, 1, 01, 0], [129, 57, 83, 1], [169, 13, 90, 10], [702, 314, 104, 10],
 [217, 36, 6, 10], [28, 143, 63, 0], [18, 14, 110, 10], [126, 15, 12, 10]]
test_best_play_50.0
[[83, 0, 07, 01], [612, 213, 70, 10], [7658, 1, 08, 0], [180, 30, 81, 10], [7068, 20, 911, 1], [1724, 96, 38, 01],
 [218, 18, 89, 01], [170, 51, 102, 1], [201, 75, 113, 1], [1927, 14, 84, 01]]
bytecount: {'code': 1196, 'const': 360, 'code+const': 1556}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    vocabs = ""
    for i in range(len(board)):
        for j in range(len(board[i])):
            if board[i][j] == "":
                vocabs += " "
            else:
                vocabs += board[i][j]
    for i in range(len(board)):
        for j in range(len(board[i])):
            if board[j][i] == "":
                vocabs += " "
            else:
                vocabs += board[j][i]
    x = vocabs.split()
    valids = []
    invalids= []
    for i in x:
        if is_valid(i) == False:
            if len(i) > 1 :
                invalids.append(i)
        else:
            valids.append(i)
    valids.sort()
    invalids.sort()
    return [valids,invalids]
def get_play(board, new_board):
    tiles = ""
    row = []
    col = []
    down = 0
    for i in range(len(board)):
      for j in range(len(board[i])):
        if board[i][j] != new_board[i][j]:
          tiles += new_board[i][j]
          row.append(i)
          col.append(j)
    if len(tiles) == 1 :
      return [row[0],col[0],0,tiles]
    elif row[0] == row[1]:
      down = 0
    elif col[0] == col[1]:
      down = 1 
    return [row[0],col[0],down,tiles]
def play(row,col,down,tiles,board):
    score = 0
    y = get_all_words(board)
    a,b = place_tiles(row,col,down,tiles,board)
    if y == [[],[]]:
        if down == 0:
            for i in range(len(tiles)):
                board[row][col+i] = tiles[i]
        elif down == 1:
            for i in range(len(tiles)):
                board[row+i][col] = tiles[i]
        if board[7][7] != '*':
            if is_valid(tiles) == True:
                valids = True
                for k in tiles:
                    score += get_value(k)
                if len(tiles) >= 7 :
                    score += 50
        return score
    else:
        if a == True :
            newy = get_all_words(b)
            for i in newy:
                if tiles in i:
                    if len(newy[0]) == 1 or len(newy[1]) == 1  :
                        valid = False
                else :
                    valids = True
                    ab = []
                    for i in newy[0]:
                        if i not in y[0]:
                            ab.append(i)
                        else:
                            y[0].remove(i)
                    if len(ab) == 0 :
                        valids = False
                        return -1
                    else :
                        for e in ab:
                            for k in e:
                                score += get_value(k)
                    if len(tiles) >= 7 :
                        score += 50 
                    return score
        elif len(y) != 0 or a == False :
            return -1
def best_play(tiles,board):
    finals = [-1,-1,-1,-1]
    for i in range(len(board)):
        for j in range(len(board[i])):
            for k in range(2):
                score = play(i,j,k,tiles,board)
                if score > finals[0]:
                    finals[0] = score
                    finals[1] = i
                    finals[2] = j
                    finals[3] = k
    return finals

00256: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 1928]
test_play_120.0
[411]
test_play_130.0
[59]
test_play_140.0
[8, 1620, 1726, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1088, 'const': 350, 'code+const': 1438}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    wordlist = [[],[]]
    for r in range(15):
        word = ''
        for c in range(15):
            if board[r][c] != '':
                word += board[r][c].upper()
            if board[r][c] == '' or c == 14:
                if len(word) > 1:
                    if is_valid(word):
                        wordlist[0].append(word)
                    else:
                        wordlist[1].append(word)
                word = ''
    for c in range(15):
        word = ''
        for r in range(15):
            if board[r][c] != '':
                word += board[r][c].upper()
            if board[r][c] == '' or r == 14:
                if len(word) > 1:
                    if is_valid(word):
                        wordlist[0].append(word)
                    else:
                        wordlist[1].append(word)
                word = ''
    for e in wordlist:
        e.sort()
    return wordlist
def get_play(board, new_board):
    place = [0,0,0,""]
    for r in range(15):
        for c in range(15):
            if new_board[r][c] != board[r][c]:
                if place[3] == '':
                    place[0],place[1] = r,c
                else:
                    if r - place[0] != 0:
                        place[2] = 1
                place[3] += new_board[r][c]
    return place
def play(row,col,down,tiles,board):
    cboard = copy_board(board)
    vl , nboard = place_tiles(row,col,down,tiles,cboard)
    count = -1
    if vl :
        a = get_all_words(cboard)
        b = get_all_words(nboard)
        for e in b[1]:
            if e not in a[1]:
                vl = False
            else:
              a[1].remove(e)
        if vl:
            adict = {}
            bdict = {}
            for e in a[0]:
                if e not in adict:
                    adict[e] = 1
                else:
                    adict[e] += 1
            for e in b[0]:
                if e not in bdict:
                    bdict[e] = 1
                else:
                    bdict[e] += 1
            count = 0
            for e in bdict:
                if e not in adict :
                    for lt in e:
                        count += get_value(lt)
                else:
                    if bdict[e] - adict[e] != 0 :
                        for lt in e:
                            count += get_value(lt) * (bdict[e] - adict[e])
            if len(tiles) > 6 :
                count += 50
    return count
def best_play(tiles,board):
    rank = []
    for r in range(15):
        for c in range(15):
            p0 = play(r,c,0,tiles,board)
            p1 = play(r,c,1,tiles,board)
            rank += [[-p0,r,c,0],[-p1,r,c,1]]
    rank.sort()
    if rank[0][0] == 1:
        return [-1,-1,-1,-1]
    rank[0][0] = -rank[0][0]
    return rank[0]

00257: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_40.0
[[['CONNERS', 'UNWITS', 'VILDE', 'CONNERS', 'ZOO'], ['FEWZ']]]
test_get_all_words_50.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'LIAM', 'ONIGIRI']]]
test_get_all_words_60.0
[[['QINFY', 'INFLATER', 'FMONEY', 'YANE', 'UTPE', 'PEQIN', 'YUPT', 'INFLYATER', 'MONEYUP'], []]]
test_get_all_words_70.0
[[['MANGIERT', 'RETAINS', 'MEGI', 'ATIN', 'MANAGIER', 'GIME', 'INA', 'RETAINS'], []]]
test_get_all_words_80.0
[[['SIFATT', 'ITERANTH', 'RFETAINSH', 'UFERANITE', 'STAIRED', 'FEH', 'SIT', 'ITERANT', 'FERNAES', 'REI', 'ATTREI',
   'NARETAINS', 'TSI', 'SIF',
   'STAIRED', 'TI', 'URANITEH'],
  []]]
test_get_all_words_90.0
[[['ADORM', 'ADOM', 'JAD', 'BRADINWASHING', 'LODIM', 'ADOD', 'AIDOM', 'DIOM', 'DSOM', 'DOFM', 'DOHM', 'DOMI', 'DOMI',
   'EDOM', 'DODRM',
   'MODSO', 'MOED', 'MONSTERSD', 'OPEJACIFYULATING', 'XILO', 'YEMI', 'DOMI', 'PREQUALIFIEDMO', 'DOMOD', 'DMOMNSTERS', 'EDNO',
   'DOM', 'NOF', 'DOHM', 'DOM', 'SOPADCIFYING'],
  ['OXYPHENBUTAZONE', 'PIER', 'PREQUAC', 'CLI', 'UF', 'LY', 'TN', 'IGED', 'DOUMBRAINWASHING', 'OUMXI', 'NTYE',
   'TZOOT'],
 'EOM', 'RN', 'SEJACULATING'[]]]
test_get_all_words_100.0
[[['TRATA', 'GIARK', 'XUCALP', 'INFOOTERNED', 'SITHFUGINO', 'GI', 'FOOTGYVE', 'HOCALPK', 'ARKIF', 'INTUREERNSED', 'TRITALED', 'TOJA',
   'OXJIDSVE', 'MUN', 'OXIFDS', 'SITOHING', 'GYVETO', 'HTOCK', 'FUGIOTRAT', 'ITRIALED', 'JIVTUREENS', 'AAXU'],
  ['JAJOJUOLOOMJYOOI', 'RO']]]
test_get_play_10.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 10, 'M']]
test_get_play_20.0
[[1, 7, 1, 'MALEATE'], [5, 6, 01, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [02, 014, 01, 'RAVISES'],
 [0, 10, 0, 'TOGA'], [5, 13, 01, 'POZ'], [5, 5, 01, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_90.0
[[6, 7, 10, 'M']]
test_get_play_100.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 01, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 01, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 01, 'POGEY'],
 [0, 014, 01, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 01, 'SLICES'], [4, 0, 0, 'CRONY'],
 [07, 014, 01, 'DIXIT'],
 [11, 4, 01, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'],
 [11, 12, 01, 'BEL']]
test_play_10.0
[66-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_40.0
[14, 621]
test_play_50.0
[60, 572]
test_play_60.0
[60, 58-1]
test_play_70.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 125, 724, 17, 859, 812]
test_play_100.0
[9, 133, 1236, 18, 12, 5973, 645, 107, 6174, 126]
test_play_110.0
[67, 601, 248, 101, 613, 7485, 411, 812, 7, 25, 917, 114, 721, 132, 102, 115, 146, 768, 67, 513, 2, 910, 1127, 428]
test_play_120.0
[411]
test_play_130.0
[49]
test_play_140.0
[8, 820, 826, 8-1]
test_play_150.0
[839]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[68, 0, 7, 1], [687, 012, 0, 0], [789, 01, 142, 1], [-159, -1, -10, -10], [-11, -12, -13, -10], [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[71, 0, 7, 1], [623, 10, 0, 0], [623, 01, 81, 10], [79, 07, 93, 01], [19, 013, 140, 10], [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[83, 0, 7, 1], [612, 013, 0, 0], [578, 01, 8, 0], [-10, -10, -1, -10], [-168, -10, -11, -1], [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 668, 'const': 288, 'code+const': 956}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    nlist = []
    ilist = []
    temp = ''
    for i in range(15):
        for j in range(15):
            if board[i][j]!='':
                temp+=board[i][j]
            else:
                if is_valid(temp):
                    nlist.append(temp)
                elif len(temp)>=2:
                    ilist.append(temp)
                temp = ''
    for i in range(15):
        for j in range(15):
            if board[j][i]!='':
                temp+=board[j][i]
            else:
                if is_valid(temp):
                    nlist.append(temp)
                elif len(temp)>=2:
                    ilist.append(temp)
                temp = ''
    return [nlist, ilist]
def get_play(board, new_board):
    nstr = ''
    row = 0
    col = 0
    s = 0
    f = 0
    for i in range(15):
        for j in range(14):
            if board[i][j] != new_board[i][j]:
                nstr+=new_board[i][j]
                if f==0:
                    row = i
                    col = j
                    len(nstr)==0
                    if new_board[i][j+1] != '':
                        s = 0
                    else: 
                        s = 1
                    f=1
    return [row,col,s,nstr]
def play(row,col,down,tiles,board):
    if place_tiles(row, col, down, tiles,board)[0]:
        return sum([get_value(i) for i in tiles]) + (50 if len(tiles)>=7 else 0)
    else:
        return -1
def best_play(tiles,board):
  max_score,row,col,down = -1,-1,-1,-1
  for i in range(14+1):
    for j in range(14+1):
      for k in range(14+1):
        score = play(i,j,k,tiles,board)
        if max_score < score:
          max_score = score
          row = i ; col = j ;down = k
    return [max_score,row,col,down]

00258: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 868, 'const': 294, 'code+const': 1162}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid = [] ; invalid = [] ; word = ''
  for i in range(len(board)):
      word += ' '
      for j in range(len(board[0])):
          if board[i][j] != '':
              word += board[i][j]
          else:
              word += ' '
  for j in range(len(board)):
      word += ' '
      for i in range(len(board[0])):
          if board[i][j] != '':
              word += board[i][j]
          else:
              word += ' '
  ans = sorted(word.split())
  for e in ans:
      if len(e) > 1:
          if is_valid(e) == True: valid.append(e)
          else: invalid.append(e)
  return [valid,invalid] 
def get_play(board, new_board):
  word = '' ; position = [] 
  for i in range(len(board)):
      for j in range(len(board[0])):
          if board[i][j] != new_board[i][j]:
              word += new_board[i][j]
              position.append([i,j])
  if len(word) == 1:
      down = 0 
  else:
      if position[0][0] == position[1][0]:
            down = 0
      else:
          down = 1
  return [position[0][0],position[0][1],down,word]
def play(row,col,down,tiles,board):
  score = 0
  word1 = get_all_words(board)
  valid,new_board = place_tiles(row,col,down,tiles,board)
  word2 = get_all_words(new_board)
  if not valid or word2[1] != []:
      score = -1
  else:
      for i in word2[0]:
          if i not in word1[0]:
              for e in i:
                  score += get_value(e)
          else:
              word1[0].remove(i)
      if len(tiles) >= 7:
              score += 50
  return score
def best_play(tiles,board):
  check = []
  for i in range(len(board)):
      for j in range(len(board[0])):
          for e in range(2):
              score = play(i,j,e,tiles,board)
              if score != -1:
                  check.append([score,i,j,e])
              else:
                  check.append([score,-1,-1,-1])
  check = sorted(check)
  max_of_score = check[-1][0]
  for i in check:
      if i[0] == max_of_score:
          return i

00259: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0
[[10, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 10, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [10, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [10, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 10, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1224, 'const': 431, 'code+const': 1655}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    ans = [[],[]]
    for first in range(15):
        h_word=""
        v_word=""
        for second in range(15):
            if not board[first][second]:
                h_word+=" "
            if not board[second][first]:
                v_word+=" "
            h_word+=board[first][second]
            v_word+=board[second][first]
        for w in h_word.split():
            if len(w)>=2 and is_valid(w):
                ans[0].append(w)
            elif len(w)>=2:
                ans[1].append(w)
        for w in v_word.split():
            if len(w)>=2 and is_valid(w):
                ans[0].append(w)
            elif len(w)>=2:
                ans[1].append(w)
    return [sorted(ans[0]),sorted(ans[1])]
def get_play(board, new_board):
    ans = [0,0,0, ""]
    for h in range(15):
        if board[h]!=new_board[h]:
            if not ans[0]:
                ans[0]=h
            if ans[0]!=h:
                ans[2]=1
            for v in range(15):
                if board[h][v]!=new_board[h][v]:
                    if not ans[1]:
                        ans[1]=v
                    ans[3]+=new_board[h][v]
    return ans
def play(row,col,down,tiles,board):
    point=0
    ans=[]
    done,latest = place_tiles(row,col,down,tiles,board)
    if not done:
        return -1
    for first in range(15):
        h_old=""
        h_new=""
        v_old=""
        v_new=""
        for second in range(15):
            if not board[first][second]:
                h_old+=" "
            if not latest[first][second]:
                h_new+=" "
            if not board[second][first]:
                v_old+=" "
            if not latest[second][first]:
                v_new+=" "
            h_old+=board[first][second]
            h_new+=latest[first][second]
            v_old+=board[second][first]
            v_new+=latest[second][first]
        h_new=h_new.split()
        v_new=v_new.split()
        for w in h_old.split():
            if is_valid(w) and w in h_new:
                h_new.remove(w)
        for w in v_old.split():
            if len(w)>=2 and is_valid(w) and w in v_new:
                v_new.remove(w)
        for w in h_new:
          if len(w)>=2 and not is_valid(w):
              return -1
          elif len(w)>=2:
              ans.append(w)
        for w in v_new:
          if len(w)>=2 and not is_valid(w):
              return -1
          elif len(w)>=2:
              ans.append(w)
    for w in ans:
        for alphabet in w:
            point+=get_value(alphabet)
    if len(tiles)>=7:
        point+=50
    return point
def best_play(tiles,board):
    ans = [-1,-1,-1,-1]
    for h in range(15):
        for v in range(15):
            horizontal=play(h,v,0,tiles,board)
            vertical=play(h,v,1,tiles,board)
            if horizontal>ans[0]:
                ans=[horizontal,h,v,0]
            if vertical>ans[0]:
                ans=[vertical,h,v,1]
    return ans

00260: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1230, 'const': 425, 'code+const': 1655}
check_import({'allowable': ['math']}): none
def transpose(M):
  T = []
  for j in range(len(M)):
    r = []
    for i in range(len(M)):
      r.append(M[i][j])
    T.append(r)
  return T
def get_all_words(board):
    valid = []
    invalid = []
    word = []
    cboard = copy_board(board)
    T = transpose(cboard)
    for i in range(15):
      for j in range(15):
        if len(cboard[i][j]) == 0:
          cboard[i][j] = ' '
        if len(T[i][j]) == 0:
          T[i][j] = ' '
    for i in range(15): 
      word += ''.join(cboard[i]).split()
      word += ''.join(T[i]).split()
    word.sort()
    for e in word:
      if (is_valid(e) == True):
        valid.append(e)
      elif len(e)>1:
        invalid.append(e)
    return [valid, invalid]
def get_play(board, new_board):
    add = []
    loc = []
    for i in range(15):
      for j in range(15):
        if board[i][j] != new_board[i][j]:
          add.append(new_board[i][j])
          loc.append([i,j])
    if len(add)>1 and loc[0][0] == loc[1][0]: 
      return [loc[0][0], loc[0][1], 0,''.join(add)]
    elif len(add)>1 and loc[0][1] == loc[1][1]: 
      return [loc[0][0], loc[0][1], 1,''.join(add)]
    elif len(add) == 1:
      return [loc[0][0], loc[0][1], 0,''.join(add)]
    else:
      return [0,0,0,""]
def play(row,col,down,tiles,board):
    score = 0
    valid = place_tiles(row,col,down,tiles,board)[0]
    new_board = place_tiles(row,col,down,tiles,board)[1]
    if valid == False: return -1
    else:
      oldword = get_all_words(board)[0]
      word = get_all_words(new_board)[0]
      for e in oldword:
        if (e in word) or is_valid(e)== False:
          word.remove(e)
      if len(word) == 0: return -1
      else:
        for w in word:
          for e in w:
            score += get_value(e)
        if len(get_play(board, new_board)[3]) >= 7: 
          score += 50
        return score
def best_play(tiles,board):
    nans = []
    for r in range(15):
      for c in range(15):
        if board[r][c] == '':
          score0 = play(r,c,0,tiles,board)
          if score0!=-1 and len(get_all_words(place_tiles(r,c,0,tiles,board)[1])[1]) == 0:
            nans.append([-score0,r,c,0])
          score1 = play(r,c,1,tiles,board)
          if score1!=-1 and len(get_all_words(place_tiles(r,c,1,tiles,board)[1])[1]) == 0: 
            nans.append([-score1,r,c,1])
    nans.sort()
    if len(nans) == 0: 
      return [-1,-1,-1,-1]
    else:
      return [-nans[0][0], nans[0][1], nans[0][2], nans[0][3]]

00261: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1304, 'const': 348, 'code+const': 1652}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  w = []
  valid = []
  notvalid = []
  for row in range(len(board)):
    word1 = ""
    for col in range(len(board[0])):
      if "A" <= board[row][col].upper()<= "Z":
        word1 += board[row][col].upper()
      else:
        if len(word1) > 1:
          w.append(word1)
          word1 = ""
        else:
          word1 = ""
      if col == 14 and len(word1)>=2:
        w.append(word1)
        word1 = ""
      elif col ==14:
        word1 = ""
  for row in range(len(board[0])):
    word2 = ""
    for col in range(len(board)):
      if "A" <= board[col][row].upper()<= "Z":
        word2 += board[col][row].upper()
      else:
        if len(word2) > 1:
          w.append(word2)
          word2 = ""
        else:
          word2 = ""
      if col == 14 and len(word2)>=2:
        w.append(word2)
        word2 = ""
      elif col ==14:
        word2 = ""
  w.sort()
  for e in w:
    if is_valid(e) == True:
      valid.append(e)
    else:
      notvalid.append(e)
  return [valid,notvalid]
def get_play(board, new_board):
  rc = []
  o = []
  n = ""
  for row in range(len(board)):
    for col in range(len(board)):
      if board[col][row].upper() != new_board[col][row].upper():
        r = row
        c = col
        rc.append([c,r])
    for col in range(len(board)):
      if board[col][row].upper() != new_board[col][row].upper():
        n += new_board[col][row].upper()
  rc.sort()
  if len(rc) ==1:
    o.append([rc[0][0],rc[0][1],0,n])
  elif rc[0][0] == rc[1][0]:
    o.append([rc[0][0],rc[0][1],0,n])
  else:
    o.append([rc[0][0],rc[0][1],1,n])
  return o[0]
def play(row,col,down,tiles,board):
    b,s = place_tiles(row,col,down,tiles,board)
    valid1,invalid1 = get_all_words(board)
    valid2,invalid2 = get_all_words(s)
    if len(invalid2)-len(invalid1)>0:
      return -1
    else:
      for e in  valid1:
        if e in valid2:
          valid2.remove(e)
    score = 0
    for l in valid2:
      for alphabet in l:
        score +=get_value(alphabet)
      if len(tiles)>= 7:
        c = 0
        tile = list(tiles.upper())
        for e in l:
          if e in tile:
            tile.remove(e)
            c+=1
        if c>=7:
          score +=50
    return score
def best_play(tiles,board):
  all = []
  for row in range(len(board)):
    for col in range(len(board[0])):
      for d in range(2):
        all.append([play(row,col,d,tiles,board),row,col,d])
  max = 0
  score = []
  for i in all:
    if i[0] > max:
      max =  i[0]
  for i in all:
    if max == 0:
      return [-1,-1,-1,-1]
    elif i[0] == max:
      score.append(i)
      score.sort()
  return score[0]

00262: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1404, 'const': 440, 'code+const': 1844}
check_import({'allowable': ['math']}): none
def ex(b,d,x,c):
    r=""
    if d==0:
        p=c
        q=c+1
        while p>=0:
            if b[x][p]=="":
                break
            r=b[x][p]+r
            p-=1
        while q<15:
            if b[x][q]=="":
                break
            r+=b[x][q]
            q+=1
    else:
        p=x
        q=x+1
        while p>=0:
            if b[p][c]=="":
                break
            r=b[p][c]+r
            p-=1
        while q<15:
            if b[q][c]=="":
                break
            r+=b[q][c]
            q+=1
    return r
def get_all_words(board):
    b=copy_board(board)
    p=[[],[]]
    for f in "rr":
        r = range(15)
        for i in b:
            s=""
            for j in i:
                s+=j.strip()
                if j=="":
                    if len(s)>1:
                        p[int(is_valid(s))].append(s)
                    s=""
            if s!="" and len(s)>1:
                p[int(is_valid(s))].append(s)
        for i in r:
            for j in range(i):
                b[i][j],b[j][i]=b[j][i],b[i][j]
    p[1].sort()
    p[0].sort()
    return [p[1],p[0]]
def get_play(board, new_board):
    m=15
    s=15
    p=[]
    q=""
    r=range(15)
    for i in r:
        for j in r:
            if board[i][j]!=new_board[i][j]:
                p.append([i,j])
                q+=new_board[i][j]
    u=0
    if len(p)>1:
        if p[1][1]==p[0][1]:
            u=1
    return [p[0][0],p[0][1],u,q]
def play(row,col,down,tiles,board):
    n=place_tiles(row,col,down,tiles,board)
    s=get_all_words(n[1])
    c=0 if n[0] and len(s[1])==0 else -1
    if c==0:
        c+=sum([get_value(i) for i in ex(n[1],down,row,col)])
        rows=row
        cols=col
        tb = copy_board(board)
        if down==1:
            for i in range(15):
                for j in range(i):
                    n[1][i][j],n[1][j][i]=n[1][j][i],n[1][i][j]
                    tb[i][j],tb[j][i]=tb[j][i],tb[i][j]
            rows,cols=cols,rows
        for cs in range(cols,15):
            if n[1][rows][cs]!=tb[rows][cs] and len(ex(n[1],1,rows,cs))>1:
                c+=sum([get_value(i) for i in ex(n[1],1,rows,cs)])
        if len(tiles)>6:
            c+=50
    return c
def best_play(tiles,board):
    li = [-1,-1,-1,-1]
    for i in range(15):
        for j in range(15):
            for d in range(2):
                if len(tiles)==1 and d==1:
                    break
                tmp=copy_board(board)
                ss=play(i,j,d,tiles,tmp)
                if li[0]<ss:
                    li[0]=ss
                    li[1]=i
                    li[2]=j
                    li[3]=d
    return li

00263: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 998, 'const': 424, 'code+const': 1422}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid=[]
    invalid=[]
    text_to_check=''
    for e in board:
        text_to_check+=' '
        for k in e:
            if 'A'<=k<='Z':
                text_to_check+=k
            else:
                text_to_check+=' '
    text_to_check+=' '
    for i in range(len(board[0])):
        text_to_check+=' '
        for x in range(len(board)):
            if 'A'<=board[x][i]<='Z':
                text_to_check+=board[x][i]
            else:
                text_to_check+=' '
    text_to_check+=' '
    text_to_check_list=text_to_check.split()
    for e in text_to_check_list:
        if is_valid(e):
            valid.append(e)
        elif len(e) >= 2:
            invalid.append(e)
    valid.sort()
    invalid.sort()
    return [valid,invalid]
def get_play(board, new_board):
    text_board=[]
    text_new_board=[]
    for i in range(15):
        for j in range(15):
            if 'A'<= board[i][j] <= 'Z':
                text_board.append([board[i][j],i,j])
    for i in range(15):
        for j in range(15):
            if 'A'<= new_board[i][j] <= 'Z':
                text_new_board.append([new_board[i][j],i,j])
    no_repeat=[]
    for e in text_new_board:
        if e not in text_board :
            no_repeat.append(e) 
    word=''
    for e in no_repeat:
        word+=e[0] 
    if len(no_repeat)==1:
        down=0
    elif no_repeat[0][1]==no_repeat[1][1]:
        down=0
    else:
        down=1
    return [no_repeat[0][1],no_repeat[0][2],down,word]
def play(row,col,down,tiles,board):
    valid_word,invalid_word=get_all_words(board)
    boonlean,new_board=place_tiles(row,col,down,tiles,board)
    valid_word_new,invalid_word_new=get_all_words(new_board)
    if boonlean == False:
        return -1
    elif invalid_word != invalid_word_new:
        return -1
    new_word=valid_word_new.copy()
    for e in valid_word:
        if e in new_word:
            new_word.remove(e) 
    score=0
    for e in new_word:
        for k in e:
            score+=get_value(k)
    if len(tiles)>=7:
        score+=50 
    return score
def best_play(tiles,board):
    idiot=[[-1,-1,-1,-1]]
    for i in range(15):
        for k in range(15):
            for e in range(2):
                score=play(i,k,e,tiles,board)
                if score > idiot[-1][0]:
                    idiot.append([score,i,k,e])
    return idiot[-1]

00264: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 872, 'const': 323, 'code+const': 1195}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  words = ''
  for i in range(15):
    words += " "
    for j in range(15):
      if len(board[i][j]) == 0:
        words += " "
      else:
        words += board[i][j]
  words += " "
  for j in range(15):
    words += " "
    for i in range(15):
      if len(board[i][j]) == 0:
        words += " "
      else:
        words += board[i][j]
  check = words.split()
  v = []
  iv = []
  for i in check:
    if len(i) > 1:
      if is_valid(i):
        v.append(i)
      else:
        iv.append(i)
  v.sort()
  iv.sort()
  return [v,iv]
def get_play(board, new_board):
  c = 0
  for i in range(15):
    for j in range(15):
      if new_board[i][j] != board[i][j]:
        if c == 0:
          out = [i,j,0,str(new_board[i][j])]
          spos = [i,j]
        elif c > 0:
          out[3] += new_board[i][j]
          nspos = [i,j]
          if nspos[1] == spos[1]:
            out[2] = 1
        c += 1
  return out
def play(row,col,down,tiles,board):
  b = copy_board(board)
  tile = place_tiles(row,col,down,tiles,b)
  w1 = get_all_words(b)
  w2 = get_all_words(tile[1])
  if not tile[0] or len(w2[1]) > 0:
    return -1
  else:
    score = 0
    for i in w2[0]:
      if i not in w1[0]:
        for c in i:
          score += get_value(c)
      else:
        w1[0].remove(i)
    if len(tiles) >= 7:
      score += 50
    return score
def best_play(tiles,board):
  sco = []
  for row in range(15):
    for col in range(15):
      for down in range(2):
        if play(row,col,down,tiles,board) != -1:
          sco.append([play(row,col,down,tiles,board),row,col,down])
        else:
          sco.append([-1,-1,-1,-1])
  sco.sort()
  msco = sco[-1][0]
  for i in sco:
    if i[0] == msco:
      return i

00265: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1230, 'const': 439, 'code+const': 1669}
check_import({'allowable': ['math']}): none
def get_all_word_and_position(board):
    valid_words = []
    invalid_words = []
    pos = [[0,1],[1,0]]
    for i in range(15):
      for j in range(15):
        if board[i][j] != '':
          for k in range(len(pos)):
            newI = i-pos[k][0]
            newJ = j-pos[k][1]
            if newI < 0 or newJ < 0 or board[newI][newJ] == '':
              word = ''
              firstInd = [i,j]
              while firstInd[0] < 15 and firstInd[1] < 15 and board[firstInd[0]][firstInd[1]] != '':
                word += board[firstInd[0]][firstInd[1]]
                firstInd = [firstInd[0]+pos[k][0], firstInd[1]+pos[k][1]]
              if len(word) >= 2 :
                if is_valid(word):
                  valid_words.append([word,i,j,k])
                else:
                  invalid_words.append([word,i,j,k])
    return [sorted(valid_words),sorted(invalid_words) ]
def get_all_words(board):
    full=sum(board,[])
    valid=[]; invalid=[]
    for j in range(15):
      stR=''; stC=''
      for i in full[j*15:j*15+15]:
        if i=='':
          stR+=' '
        stR+=i
      for i in stR.split():
        if is_valid(i):
            valid.append(i)
        elif len(i)>=2:
            invalid.append(i)
      for i in full[j::15]:
        if i=='':
          stC+=' '
        stC+=i
      for i in stC.split():
        if is_valid(i):
            valid.append(i)
        elif len(i)>=2:
            invalid.append(i)
    return [sorted(valid),sorted(invalid)]
def get_play(board, new_board):
    s=''
    i,j,down=-1,-1,0
    for row in range(15):
        for co in range(15):
          if board[row][co]!=new_board[row][co] and i==-1 and j==-1:
              s+=new_board[row][co]
              i=row
              j=co
          elif board[row][co]!=new_board[row][co]:
              s+=new_board[row][co]
              if row==i: down=0
              elif co ==j: down=1
    return [i,j,down,s]
def play(row,col,down,tiles,board):
    can_do,new_board = place_tiles(row,col,down,tiles,board)
    word,inword = get_all_word_and_position(new_board)
    old_word,old_inword = get_all_word_and_position(board)
    getPlay = get_play(board, new_board)
    if not can_do: return -1
    elif inword != old_inword and len(inword)-len(old_inword)>=0 : return -1
    else:
      if len(tiles)>=7: c=50
      else: c=0
      for i in word:
        if i in old_word:
          old_word.remove(i)
        else:
          for l in i[0]:
            c+=get_value(l)
      if c!=0:return c
      else:return -1
def best_play(tiles,board):
    ans = [-1,-1,-1,-1]
    for row in range(15):
      for co in range(15):
        for d in range(2):
          score = play(row,co,d,tiles,board)
          if score > ans[0]:
            ans = [score, row, co, d]
    return ans

00266: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1454, 'const': 338, 'code+const': 1792}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    all = [[],[]]
    i=0
    jj=0
    while True:
        ii=0
        j=0
        while True:
            if ii>=15 and j>=15:
                break
            if j<15:
                if board[i][j]!="":
                    x = ""
                    while(j<15 and board[i][j]!=""):
                        x += board[i][j]
                        j+=1
                    if len(x)>=2 and is_valid(x):
                        all[0].append(x)
                    if len(x)>=2 and not is_valid(x):
                        all[1].append(x)
            if ii<15:
                if board[ii][jj]!="":
                    xx = ""
                    while(ii<15 and board[ii][jj]!=""):
                        xx += board[ii][jj]
                        ii+=1
                    if len(xx)>=2 and is_valid(xx):
                        all[0].append(xx)
                    if len(xx)>=2 and not is_valid(xx):
                        all[1].append(xx)
            ii+=1
            j+=1
        i+=1
        jj+=1
        if i>=15 and jj>=15:
            break
    for i in range(len(all)):
        all[i].sort()
    return all
def get_play(board, new_board):
    a = -1
    b = -1
    down = 0
    for i in range(15):
        for j in range(15):
            if board[i][j]!=new_board[i][j]:
                if board[i][j]=="":
                    if a==-1:
                        a=i
                    else:
                        if a==i:
                            down = 0
                    if b==-1:
                        b=j
                    else:
                        if b==j:
                            down = 1
    re = ""
    for i in range(15):
        for j in range(15):
            a,b = i,j
            if board[i][j]!=new_board[i][j]:
                while(i<15 and j<15 and new_board[i][j]!=""):
                    if board[i][j]=="":
                        re += new_board[i][j]
                    if down==0:
                        j+=1
                    else:
                        i+=1
                return [a,b,down,re]
def play(row,col,down,tiles,board):
    if len(tiles)>=7 :
      s = 50 
    else :
      s = 0
    score1 = get_all_words(board)[0]
    new_board = place_tiles(row,col,down,tiles,board)[1]
    score2 = get_all_words(new_board)[0]
    if get_all_words(new_board)[1]!=[]:
        return -1
    wordcount = {}
    newcount = {}
    for i in score1:
        if i not in wordcount:
            wordcount[i] = 1
        else:
            wordcount[i] += 1
    for i in score2:
        if i not in newcount:
            newcount[i] = 1
        else:
            newcount[i] += 1
    for i in newcount:
        if i not in wordcount:
            for j in i:
                s += newcount[i]*get_value(j)
        else:
            for j in i:
                s += max(0,newcount[i]-wordcount[i])*get_value(j)
    if s==0:
        return -1
    else:
        return s
def best_play(tiles,board):
    maxscore = -1
    mini = 15
    minj = 15
    mindown = 1
    for i in range(15):
        for j in range(15):
            for down in range(2):
                p = place_tiles(i,j,down,tiles,board)
                if p[0]:
                    g = get_all_words(p[1])[1]
                    if len(g)==0:
                        s = play(i,j,down,tiles,board)
                        if s>maxscore:
                            maxscore = s
                            mini = i
                            minj = j
                            mindown = down
                        elif s==maxscore:
                            if mini>i:
                                mini = i
                                minj = j
                                mindown = down
                            elif mini==i:
                                if minj > j:
                                    mini = i
                                    minj = j
                                    mindown = down
                                elif minj == j:
                                    if down == 0:
                                        mini = i
                                        minj = j
                                        mindown = down
    if maxscore==-1:
        return [-1,-1,-1,-1]
    else:
        return [maxscore,mini,minj,mindown]

00267: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_10.0
[[07, 06, 0, 'ICE'], [07, 04, 0, 'JUD'], [04, 05, 01, 'INFSIVE'], [06, 08, 0, 'M']]
test_get_play_20.0
[[01, 07, 01, 'MALEATE'], [05, 06, 01, 'JURY'], [05, 08, 01, 'REWTH'], [01, 08, 0, 'OLEHUNT'],
 [02, 014, 01, 'RAVISES'], [0, 10, 0, 'TOGA'],
 [05, 013, 01, 'POZ'], [05, 05, 01, 'ABAND'],
 [02, 10, 0, 'COYE'], [10, 02, 0, 'FOOS']]
test_get_play_30.0
[[06, 06, 01, 'XUNT']]
test_get_play_40.0
[[07, 01, 0, 'INHERITANCE']]
test_get_play_50.0
[[06, 09, 01, 'CAT']]
test_get_play_60.0
[[06, 07, 01, 'CT']]
test_get_play_70.0
[[07, 03, 0, 'COMDER']]
test_get_play_80.0
[[06, 06, 0, 'AT']]
test_get_play_90.0
[[06, 07, 0, 'M']]
test_get_play_100.0
[[0, 07, 01, 'HEPATICS'], [01, 03, 0, 'MAILS'], [07, 06, 01, 'ARREAR'], [02, 0, 0, 'EASIED'],
 [013, 06, 0, 'SAHIWAL'], [03, 013, 01, 'MICROLOGIES'],
 [014, 07, 0, 'GAS'], [07, 05, 01, 'GOORY'],
 [10, 07, 0, 'SHIPS'], [02, 011, 01, 'MALEFICE'], [0, 10, 01, 'DOOLAN'], [04, 09, 01, 'POGEY'],
 [0, 014, 01, 'AGROS'], [03, 02, 01, 'TONIEST'], [09, 01, 01, 'SLICES'], [04, 0, 0, 'CRONY'],
 [07, 014, 01, 'DIXIT'], [011, 04, 01, 'PINS'],
 [05, 0, 01, 'ARED'], [0, 01, 0, 'GRAFT'], [012, 09, 0, 'MO'],
 [06, 04, 01, 'CAB'], [011, 012, 01, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_30.0
[-14]
test_play_40.0
[-14, -21]
test_play_50.0
[-160, -172]
test_play_60.0
[-160, -1]
test_play_70.0
[-163, -14]
test_play_80.0
[-162]
test_play_90.0
[-11, -15, -124, -17, -185, -12]
test_play_100.0
[-19, -133, -136, -18, -12, -173, -165, -17, -174, -16]
test_play_110.0
[-167, -61, -128, -11, -13, -185, -11, -12, -17, -125, -17, -14, -21, -132, -12, -15, -16, -168, -16, -13, -10, -127, -128]
test_play_120.0
[-11]
test_play_130.0
[-19]
test_play_140.0
[-18, -120, -126, -1]
test_play_150.0
[-139]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 348, 'const': 214, 'code+const': 562}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    words = [[], []]
    flatten = ""
    for i in range(15):
        flatten += ' '
        for j in range(15):
            if board[i][j] == '':
                flatten += ' '
            else:
                flatten += board[i][j]
    for j in range(15):
        flatten += ' '
        for i in range(15):
            if board[i][j] == '':
                flatten += ' '
            else:
                flatten += board[i][j]
    All_word = flatten.split()
    for w in All_word:
        if len(w) >= 2:
            if is_valid(w):
                words[0].append(w)
            else:
                words[1].append(w)
    words[0].sort()
    words[1].sort()
    return words
def get_play(board, new_board):
    return [0,0,0,""]
def play(row,col,down,tiles,board):
    return -1
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00268: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 1928]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 206, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 732, 'const': 630, 'code+const': 1362}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid = []
    invalid = []
    for j in (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14):
        s = ""
        t = ""
        for i in (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14):
            b = board[j][i]
            if b != "":
                s += b
            else:
                somjit(s, valid, invalid)
                s = ""
            c = board[i][j]
            if c != "":
                t += c
            else:
                somjit(t, valid, invalid)
                t = ""
        somjit(s, valid, invalid)
        somjit(t, valid, invalid)
    valid.sort()
    invalid.sort()
    return [valid, invalid]
def somjit(t, valid, invalid):
    if is_valid(t):
        valid.append(t)
    elif len(t) >= 2:
        invalid.append(t)
def get_play(board, new_board):
    s = ""
    row = 15
    column = 15
    direction = 0
    for j in (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14):
        for i in (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14):
            n = new_board[j][i]
            if board[j][i] == "" and n != "":
                s += n
                if j < row or i < column:
                    row = j
                    column = i
                if j != row:
                    direction = 1
    return [row, column, direction, s]
def play(row, col, down, tiles, board):
    valid, newboard = place_tiles(row, col, down, tiles, board)
    wordtrue, wordfalse = get_all_words(board)
    newwordtrue, newwordfalse = get_all_words(newboard)
    s = 0
    if not valid or newwordfalse != []:
        return -1
    for e in set(newwordtrue):
        n = newwordtrue.count(e) - wordtrue.count(e)
        for i in e:
            s += n * get_value(i)
    if len(tiles) >= 7:
        s += 50
    return s
def best_play(tiles, board):
    l = []
    for row in (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14):
        for col in (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14):
            for down in (0,1):
                s = play(row, col, down, tiles, board)
                l.append([s, row, col, down] if s != -1 else [-1, -1, -1, -1])
    l.sort(key=lambda x: (-x[0], x[1], x[2], x[3]))
    return l[0]

00269: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 916, 'const': 376, 'code+const': 1292}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    word = ''
    for i in range(15) :
        word += ' '
        for j in range(15) :
            if board[i][j] != '' :
                word += board[i][j]
            else :
                word += ' '
    for i in range(15) :
        word += ' '
        for j in range(15) :
            if board[j][i] != '' :
                word += board[j][i]
            else :
                word += ' '
    store = word.split()
    store.sort()
    use = []
    for e in store :
        use.append(e.upper())
    show = [[],[]]
    for e in use :
        if len(e) > 1 :
            if is_valid(e) == True :
                show[0].append(e)
            else :
                show[1].append(e)
    return show
def get_play(board, new_board):
    new_word = ''
    pos = []
    for i in range(15) :
        for j in range(15) :
            if new_board[i][j] != board[i][j] :
                new_word += new_board[i][j]
                x = j
                y = i
                pos.append([x,y])
    x1 = pos[0][0]
    y1 = pos[0][1]
    x2 = pos[-1][0]
    y2 = pos[-1][1]
    down = 0
    if y2 > y1 :
        down = 1
    return [y1,x1,down,new_word]
def play(row,col,down,tiles,board):
    check,new_board = place_tiles(row,col,down,tiles,board)
    new = []
    if check == True :
        new_all_word = get_all_words(new_board)
        all_word = get_all_words(board)
        if len(new_all_word[1]) == 0 :
            for e in new_all_word[0] :
                if e in all_word[0] :
                    all_word[0].remove(e)
                else :
                    new.append(e)
        else : return -1
        score = 0
        for e in new :
            for l in e :
                score += get_value(l)
        if len(tiles) >= 7 :
            score += 50
        return score
    return -1
def best_play(tiles,board):
    store = []
    for row in range(15) :
        for col in range(15) :
            for d in range(2) :
                store.append([play(row,col,d,tiles,board),row,col,d])
    store.sort()
    max_score = max(store)[0]
    if max_score != -1 :
        max_score_list = [e for e in store if e[0] == max_score]
        show = max_score_list[0]
        return show 
    return [-1,-1,-1,-1]

00270: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 844, 'const': 800, 'code+const': 1644}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words = []
    invalid_words = []
    def find_word(y, x, word):
        ch = "" if y == 15 or x == 15 else board[y][x]
        if ch:
            return word + ch
        else:
            if is_valid(word):
                valid_words.append(word)
            elif len(word) > 1:
                invalid_words.append(word)
            return ""
    for a in (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15):
        word1, word2 = "", ""
        for b in (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15):
            word1 = find_word(a, b, word1)
            word2 = find_word(b, a, word2)
    return [sorted(valid_words), sorted(invalid_words)]
def get_play(board, new_board):
    x,y = None, None
    word = ""
    down = 0
    for a in (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14):
        for b in (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14):
            ch = new_board[a][b]
            if ch != board[a][b]:
                if x is None:
                    x = b
                    y = a
                elif x==b:
                    down = 1
                word += ch
    return [y, x, down, word]
def play(row, col, down, tiles, board):
    valid, new_board = place_tiles(row, col, down, tiles, board)
    the_tiles = tiles
    if not valid:
        return -1
    def get_ch(y, x, down, i, board=new_board):
        if i in [15, -1]:
            return ""
        elif down:
            return board[i][x]
        else:
            return board[y][i]
    def find_word(y, x, down, first_order):
        nonlocal tiles
        ite = y if down else x
        side_effect_word = ""
        total_score = 0
        for i in range(ite - 1, -1, -1):
            ch = get_ch(y, x, down, i)
            if not ch:
                break
            side_effect_word = ch + side_effect_word
        for i in range(ite, 16):
            ch = get_ch(y, x, down, i)
            if not ch:
                break
            if first_order and not get_ch(y, x, down, i, board):
                score = find_word(i if down else y, x if down else i, not down, False)
                if score == -1:
                    return -1
                total_score += score
            side_effect_word += ch
        if is_valid(side_effect_word):
            return sum(map(get_value, side_effect_word)) + total_score
        elif len(side_effect_word) > 1:
            return -1
        return 0
    total_score = find_word(row, col, down, True)
    return -1 if total_score == -1 else 50 * (len(the_tiles) > 6) + total_score
def best_play(tiles, board):
    res = [-1] * 4
    for row in (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14):
        for col in (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14):
            for is_down in (0, 1):
                score = play(row, col, is_down, tiles, board)
                if score > res[0]:
                    res = [score, row, col, is_down]
    return res

00271: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1038, 'const': 453, 'code+const': 1491}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid=[]
  invalid=[]
  backup=''
  for i in range(15):
    for j in range(15):
      if board[i][j]=='':
        if len(backup)>=2:
          if is_valid(backup):
            valid.append(backup)
          else:
            invalid.append(backup)
        backup=''
      else:
        backup+=board[i][j]
    if len(backup)>=2:
      if is_valid(backup):
        valid.append(backup)
      else:
        invalid.append(backup)
    backup=''
  backup=''
  for j in range(15):
    for i in range(15):
      if board[i][j]=='':
        if len(backup)>=2:
          if is_valid(backup):
            valid.append(backup)
          else:
            invalid.append(backup)
        backup=''
      else:
        backup+=board[i][j]
    if len(backup)>=2:
      if is_valid(backup):
        valid.append(backup)
      else:
        invalid.append(backup)
    backup=''
  return [sorted(valid),sorted(invalid)]
def get_play(board, new_board):
  check1,check2=True,True
  direc=0
  posi=[]
  word=''
  for i in range(15):
    for j in range(15):
      if board[i][j]!=new_board[i][j]:
        word+=new_board[i][j]
        if check1:
          check1=False
          st=i
          nd=j
          posi+=[i,j]
        elif check2:
          check2=False
          posi+=[i,j]
          if posi[0]-posi[2]!=0:
            direc=1
  return [st,nd,direc,word]
def play(row,col,down,tiles,board):
  word=[]
  bool_,board_=place_tiles(row,col,down,tiles,board)
  if bool_:
    _board_=board_.copy()
    for i in range(15):
      for j in range(15):
        if board[i][j]!=board_[i][j]:
          board_[i][j]+='-'
    for k in get_all_words(board_)[1]:
      if '-' in k:
        out=[i for i in k if i!='-']
        if len(out)>=2:
          word.append(''.join(out))
      else:
        return -1
    score=0
    for ro in word:
      if is_valid(ro):
        for se in ro:
          score+=get_value(se)
      else:
        return -1
    if len(tiles)>=7:
      score+=50
    board=_board_
    return score
  else:
    return -1
def best_play(tiles,board):
  out=[-1,-1,-1,-1]
  for i in range(15):
    for j in range(15):
      for k in range(2):
        if place_tiles(i,j,k,tiles,board)[0]:
          check=play(i,j,k,tiles,board)
          if check>out[0]:
            out=[check,i,j,k]
  return out

00272: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1068, 'const': 382, 'code+const': 1450}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    note = ''
    for i in board:
        for j in i:
          if 'A' <= j <= 'Z':
              note += j
          else:
              note += ' '
        note += ' '
    for i in range(len(board)):
        for j in board:
            if 'A' <= j[i] <= 'Z':
                note += j[i]
            else:
                note += ' '
        note += ' '
    final = [str(i) for i in note.split() if len(i)>1]
    valid_words = []
    invalid_words = []
    for i in final:
        if is_valid(i) == True:
            valid_words.append(i)
        else:
            invalid_words.append(i)
    valid_words.sort()
    invalid_words.sort()
    return [valid_words,invalid_words]
def get_play(board, new_board):
    found = False
    down = 0
    ans = ''
    for i in range(len(board)):
      for j in range(len(board)):
        if board[i][j] != new_board[i][j] and found == False:
          found = True
          row = i
          col = j
          ans += new_board[i][j]
          for k in range(i+1,len(board)):
            if board[k][j] != new_board[k][j] :
              down = 1
              break
            else:
              down = 0
        elif board[i][j] != new_board[i][j] and found == True:
          ans += new_board[i][j]
    if len(ans) == 1:
      down = 0
    return [row,col,down,ans]
def play(row,col,down,tiles,board):
    word = []
    board_copy = copy_board(board)
    valid,board_copy = place_tiles(row,col,down,tiles,board_copy)
    if valid == False:
      return -1
    [valid_words,invalid_words] = get_all_words(board)
    [new_valid_words,new_invalid_words] = get_all_words(board_copy)
    if new_invalid_words != invalid_words:
      return -1
    for i in valid_words:
      if i in new_valid_words:
        new_valid_words.remove(i)
    score = 0
    for i in new_valid_words:
      for j in i:
        score += get_value(j)
    [row,col,down,ans] = get_play(board, board_copy)
    if len(ans) >= 7:
      score += 50
    return score
def best_play(tiles,board):
    all = []
    for i in range(len(board)):
      for j in range(len(board)):
        play_0 = play(i,j,0,tiles,board)
        play_1 = play(i,j,1,tiles,board)
        if play_0 != -1:
          all.append([play_0,i,j,0])
        if play_1 != -1:
          all.append([play_1,i,j,1])
    if len(all) == 0:
      return [-1,-1,-1,-1]
    else:
        score = [i[0] for i in all]
        allmax = [i for i in all if i[0] == max(score)]
        allmax.sort()
        return allmax[0]

00273: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_20.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_30.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_40.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_50.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_60.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_70.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_80.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_90.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_100.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_10.0TypeError("'int' object is not subscriptable")
[]
test_get_play_20.0TypeError("'int' object is not subscriptable")
[]
test_get_play_30.0TypeError("'int' object is not subscriptable")
[]
test_get_play_40.0TypeError("'int' object is not subscriptable")
[]
test_get_play_50.0TypeError("'int' object is not subscriptable")
[]
test_get_play_60.0TypeError("'int' object is not subscriptable")
[]
test_get_play_70.0TypeError("'int' object is not subscriptable")
[]
test_get_play_80.0TypeError("'int' object is not subscriptable")
[]
test_get_play_90.0TypeError("'int' object is not subscriptable")
[]
test_get_play_100.0TypeError("'int' object is not subscriptable")
[]
test_play_10.0
[50-1]
test_play_21.0
[-1]
test_play_30.0
[014]
test_play_40.0
[014, 021]
test_play_50.0
[560, 5072]
test_play_60.0
[560, 50-1]
test_play_70.0
[5063, 014]
test_play_80.0
[5062]
test_play_90.0
[011, 015, 024, 017, 850, 012]
test_play_100.0
[09, 033, 036, 018, 012, 5073, 650, 017, 5074, 016]
test_play_110.0
[5067, 5061, 028, 011, 013, 850, 011, 012, 07, 025, 017, 014, 021, 032, 012, 015, 016, 5068, 06, 013, 10, 027, 028]
test_play_120.0
[011]
test_play_130.0
[09]
test_play_140.0
[08, 20, 026, 0-1]
test_play_150.0
[039]
test_best_play_10.0
[[5069, 1, 7, 1]]
test_best_play_20.0
[[0-1, 5-1, 7-1, -1]]
test_best_play_30.0
[[5068, 0, 7, 1], [5087, 012, 0, 0], [5079, 01, 142, 1], [509, 1, 0, 0], [011, 12, 83, 0], [650, 13, 114, 1],
 [019, 16, 12, 10], [07, 14, 132, 1], [011, 20, 01, 0], [0, 22, 3, 08, 1]]
test_best_play_40.0
[[5071, 0, 7, 1], [5063, 10, 0, 0], [5063, 01, 81, 10], [09, 07, 93, 01], [019, 013, 140, 10], [5072, 14, 04, 0],
 [017, 16, 136, 10], [08, 23, 03, 0], [018, 24, 50, 0], [016, 35, 01, 0]]
test_best_play_50.0
[[5083, 0, 7, 1], [5062, 013, 0, 0], [508, 01, 8, 0], [10, 10, 01, 0], [5068, 10, 611, 1], [024, 16, 8, 01],
 [018, 18, 139, 1], [10, 1, 142, 1], [021, 25, 03, 01], [027, 24, 54, 01]]
bytecount: {'code': 788, 'const': 358, 'code+const': 1146}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    for row in board :
      for c in row :
        if c != "" :
          ws_board = c 
        else :
          ws_board = ""
    verti_b = ["".join(x) for x in ws_board]
    board_90 = []
    i = 0
    for row in ws_board:
      for v in row :
        board_90.append(v[i])
        i +=1
    hori_b = ["".join(x) for x in board_90[::-1]]
    results = [[],[]]
    for side in verti_b + hori_b :
        for word in side.split():
            if len(word) > 1:
                if is_valid(word) :
                  results[0].append(word)
                else :
                  results[1].append(word) 
    results[0].sort()
    results[1].sort()
    return results
def get_play(board, new_board):   
    titles = ""
    index_div = []
    for r in range(15):
        for c in range(15):
            if board[r][c] != new_board[r][c]:
                index_div += (r,c)
                titles = titles + new_board[r][c] 
    results = [index_div[0][0], index_div[0][1]]
    results.append(int(len(index_div) > 1 and index_div[1][0] > index_div[0][0]))
    results.append(titles)
    return results
def play(row,col,down,tiles,board):
    previous = get_all_words(board)[0]
    f, new_board = place_tiles(row,col,down,tiles,board)
    new, invalid = get_all_words(new_board)
    if invalid!=[] or not f: 
        return -1
    total_score = 0
    for wd in new:
      if wd in previous:
        del previous[previous.index(wd)]
      else:
        for ch in wd :
          total_score = total_score + sum(get_value(ch))
    return 50 * (len(tiles) >= 7) + total_score
def best_play(tiles,board):
    best = [-1, -1, -1, -1]
    for r in range(15):
        for c in range(15):
            for d in (0,1):
                s = play(r,c,d,tiles,board)
                if s > best[0]:
                    best = [s, r, c, d]
    return best

00274: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1252, 'const': 587, 'code+const': 1839}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    x = '' ; y = ''
    for i in range(15):
        x += ' '
        y += ' '
        for j in range(15):
            if board[i][j] != '':
                x += board[i][j].upper()
            else:
                x += ' '
            if board[j][i] != '':
                y += board[j][i].upper()
            else:
                y += ' '
    z = (x+' '+y).split()
    l0 = [e for e in z if is_valid(e)]
    l0.sort()
    l1 = [e for e in z if not is_valid(e) and len(e) > 1]
    l1.sort()
    return [l0,l1]
def get_play(board, new_board):
    w = '' ; l = []
    for i in range(15):
        for j in range(15):
            if board[i][j].upper() != new_board[i][j].upper() :
                w += new_board[i][j].upper()
                l.append([i,j])
    l3 = 0
    if l[-1][0] > l[0][0]:
        l3 = 1
    return [l[0][0],l[0][1],l3,w]
def bonus(board):
    x = '' ; y = ''
    for i in range(15):
        x += ' '
        y += ' '
        for j in range(15):
            if board[i][j] != '':
                if x[-1] == ' ':
                    x+= str(i)+','+str(j)+','
                x += board[i][j].upper()
            else:
                x += ' '
            if board[j][i] != '':
                if y[-1] == ' ':
                    y+= str(j)+','+str(i)+','
                y += board[j][i].upper()
            else:
                y += ' '
    z = (x+' '+y).split()
    l0 = [[e.split(',')[0],e.split(',')[1],e.split(',')[2]] for e in z if is_valid(e.split(',')[2])]
    l0.sort()
    l1 = [e for e in z if not is_valid(e.split(',')[2]) and len(e.split(',')[2]) > 1]
    l1.sort()
    return [l0,l1]
def play(row,col,down,tiles,board):
    v,new_board = place_tiles(row,col,down,tiles,board)
    w,n = bonus(board) ; new_w,n2 = bonus(new_board)
    p = 0
    if not v or n2 != []:
        return -1
    else:
        for e in new_w:
            if e in w:
                w.remove(e)
            else:
                for f in e[2]:
                    p += get_value(f)
        if len(tiles) >= 7:
            p += 50
        return p
def best_play(tiles,board):
    l = []
    for i in range(15):
        for j in range(15):
            for k in range(2):
                l.append([-1*play(i,j,k,tiles,board),i,j,k])
    l.sort()
    b = l[0]
    if b[0] != 1:
        return [-1*b[0],b[1],b[2],b[3]]
    else:
        return [-1,-1,-1,-1]

00275: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_70.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0
[50-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 1928]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 206, -13]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 2176, 'const': 356, 'code+const': 2532}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    aword,word,unvalid,valid = [],[],[],[]
    for e in range(len(board[0])):
        column = [row[e] for row in board]
        for subcolumn in range(len(column)):
            if column[subcolumn] != '':
                aword.append(column[subcolumn])
                if subcolumn == len(column)-1:
                    word = (''.join(aword))
                    if is_valid(word): valid.append(word)
                    elif (not is_valid(word)) and word != '' and len(word)>=2 : unvalid.append(word)
            elif column[subcolumn] == '':
                word = (''.join(aword))
                if is_valid(word): valid.append(word)
                elif (not is_valid(word)) and word != '' and len(word)>=2 : unvalid.append(word)
                aword = []
        aword = []
    for row in board:
        for subrow in range(len(row)):
            if row[subrow] != '':
                aword.append(row[subrow])
                if subrow == len(row)-1:
                    word = (''.join(aword))
                    if is_valid(word): valid.append(word)
                    elif (not is_valid(word)) and word != '' and len(word)>=2 : unvalid.append(word)
            elif row[subrow] == '':
                word = (''.join(aword))
                if is_valid(word): valid.append(word)
                elif (not is_valid(word)) and word != '' and len(word)>=2 : unvalid.append(word)
                aword = []
        aword = []
    return [sorted(valid),sorted(unvalid)]
def get_play(board, new_board):
    diff,newchar,oldchar= [],[],[]
    row,col,down = [0],[0],[0]
    newlist = ['']
    breaker1 = False
    breaker2 = False
    keyrow = False
    for i in range(len(new_board)):
        if breaker1: break
        for e in range(len(board)):
            if breaker1: break
            if new_board[e] != board[e] and new_board[e] != ['']*len(board):
                diff.append([new_board[e],board[e]])
                row = e
                breaker1 = True
                down = 0
                res = [e for k in diff for e in k]
                if len(res) != 2:keyrow = True
                else:
                    for x in range(len(res[0])):
                        if res[0][x] != '' and res[0][x] != board[row][x] :
                            col = x
                            break
                    new = ''.join(res[0])
                    old = ''.join(res[1])
                    for i in new:
                        newchar.append(i)
                    for i in old:
                        oldchar.append(i)
                    newlist = "".join([char for char in newchar if char not in oldchar])
                    if newlist != '' and len(newlist) < 2:
                        keyrow = True
                        newlist = ''
                    break
    if newlist != '':pass
    else: 
        diff,newchar,oldchar= [],[],[]
        row,col,down = [0],[0],[0]
        newlist = ['']
        for i in range(len(board[0])):
            column = [row[i] for row in board]
            ncolumn = [row[i] for row in new_board]
            if breaker2: break
            for e in range(len(column)):
                if breaker2: break
                if ncolumn != column and ncolumn != ['']*len(column):
                    diff.append([ncolumn,column])
                    col = i
                    breaker2 = True
                    down = 1
                    res = [e for i in diff for e in i]
                    if len(res) != 2: pass
                    else:
                        for x in range(len(res[0])):
                            if res[0][x] != '' and res[0][x] != column[x]:
                                row = x
                                break
                        new = ''.join(res[0])
                        old = ''.join(res[1])
                        for y in new:
                            newchar.append(y)
                        for f in old:
                            oldchar.append(f)
                        newlist = "".join([char for char in newchar if char not in oldchar])
                        break
    if len(newlist) == 1 :down = 0 
    return [row,col,down,newlist]
def play(row,col,down,tiles,board):
    oldscore = 0
    score = 0
    new = []
    if len(tiles) >= 7: score += 50
    newboard = copy_board(board)
    old = get_all_words(board)[0]    
    valid,newboard = place_tiles(row,col,down,tiles,newboard)
    if valid:
        new = get_all_words(newboard)[0]
        for i in new:
            for e in i:
                for k in e:
                    score += get_value(k)
    real = score
    for i in old:
        if i in new:
            for e in i:
                real -= get_value(e)
    if real == 0:return -1
    return real
def best_play(tiles,board):
    data = []
    breaker = False
    for row in range(len(board)):
        for i in range(len(board[0])):
            col = [row[i] for row in board]
            for down in [0,1]:
                valid,newboard = place_tiles(row,i,down,tiles,board)
                if valid and get_all_words(newboard)[1] == [] and  get_all_words(newboard)[0] != [] :
                    data.append([(-play(row,i,down,tiles,board)),row,i,down])
    newdata = []
    data.sort()
    if data != []:
        for i in data:
            for e in i:
                newdata.append(abs(e))
        return newdata[:4]
    else: return [-1,-1,-1,-1]

00276: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1396, 'const': 369, 'code+const': 1765}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    count = "" ; all_words = []
    for i in range(len(board)) :
        for j in range(len(board)) :
            if board[i][j] != "" :
                count += board[i][j]
            elif count != "" :
                all_words.append(count)
                count = ""
            if j == len(board)-1 and count != "" :
                all_words.append(count)
                count = ""
    for i in range(len(board)) :
        for j in range(len(board)) :
            if board[j][i] != "" :
                count += board[j][i]
            elif count != "" :
                all_words.append(count)
                count = ""
            if j == len(board)-1 and count != "" :
                all_words.append(count)
                count = ""
    all_words2 = [] ; habsmall = False
    for i in range(len(all_words)) :
        if len(all_words[i]) >= 2 :
            all_words2.append(all_words[i])
    all_words3 = []
    for i in range(len(all_words2)) :
        for j in range(len(all_words2[i])) :
            if all_words2[i][j] in "qwertyuiopasdfghjklzxcvbnm" :
                habsmall = True
                break
        if habsmall == False :
            all_words3.append(all_words2[i])
        else : habsmall = False
    result = [[],[]]
    for e in all_words3 :
        if is_valid(e) == True :
            result[0].append(e)
        else : result[1].append(e)
    result[0].sort() ; result[1].sort()
    return result
def get_play(board, new_board):
    found = False
    for i in range(len(board)) : 
        for j in range(len(board)) :
            if new_board[i][j] != board[i][j] :
                row = i ; col = j
                found = True
                break
        if found == True :
            break
    tiles = ""
    for i in range(len(board)) : 
        for j in range(len(board)) :
            if new_board[i][j] != board[i][j] :
                tiles += new_board[i][j]
    if len(tiles) == 1 :
        down = 0
        return [row,col,down,tiles]
    removeboard = copy_board(new_board)
    for i in range(len(board)) : 
        for j in range(len(board)) :
            if new_board[i][j] == board[i][j] :
                removeboard[i][j] = ""
    down = 1
    for j in range(col+1,len(board)) : 
        if removeboard[row][j] != "" :
            down = 0
            break
    return [row,col,down,tiles]
def play(row,col,down,tiles,board):
    valid,new_board = place_tiles(row,col,down,tiles,board)
    if valid == False : return -1
    oldwords,pkingsad = get_all_words(board)
    newwords,sadwords = get_all_words(new_board)
    for e in pkingsad :
        if e in sadwords :
            sadwords.remove(e)
    if len(sadwords) != 0 : return -1
    for e in oldwords :
        if e in newwords :
            newwords.remove(e)
    if len(newwords) == 0 : return -1
    score = 0 
    for e in newwords :
        for i in range(len(e)) :
            score += get_value(e[i])
    if len(tiles) >= 7 : score += 50
    return score
def best_play(tiles,board):
    all_scores = []
    for i in range(len(board)) :
        for j in range(len(board)) :
            for d in range(0,2) :
                score = play(i,j,d,tiles,board)
                if score != -1 :
                    all_scores.append([score,-i,-j,-d])
    all_scores.sort() ; all_scores = all_scores[::-1]
    if len(all_scores) == 0 : return [-1,-1,-1,-1]
    else : s,r,c,dd = all_scores[0]
    return [s,-r,-c,-dd]

00277: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0
[50-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 994, 'const': 254, 'code+const': 1248}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    words = []
    valid = []
    invalid = []
    for i in range(len(board)):
        word_down_0 = ""
        word_down_1 = ""
        for j in range(len(board)):
            if board[i][j] == "":
                if len(word_down_0) > 1:
                    words.append(word_down_0)
                word_down_0 = ""
            else:
                word_down_0 += board[i][j]
            if board[j][i] == "":
                if len(word_down_1) > 1:
                    words.append(word_down_1)
                word_down_1 = ""
            else:
                word_down_1 += board[j][i]
        if len(word_down_0) > 1:
            words.append(word_down_0)
        if len(word_down_1) > 1:
            words.append(word_down_1)  
    for word in words:
        if is_valid(word):
            valid.append(word)
        else:
            invalid.append(word)
    valid.sort()
    invalid.sort()
    return [valid, invalid]
def get_play(board, new_board):
    d_board = []
    indexs_x = []
    indexs_y = []
    word = ""
    for i in range(len(board)):
        row = []
        for j in range(len(board)):
            if board[i][j] != new_board[i][j]:
                indexs_x.append(j)
                indexs_y.append(i)
                word += new_board[i][j]
                row.append(new_board[i][j])
            else:
                row.append("")
        d_board.append(row)
    if len(word) > 1:
        if indexs_x[0] == indexs_x[1]:
            down = 1
        else:
            down = 0
    else:
        down = 0
    return [indexs_y[0],indexs_x[0],down,word]
def play(row,col,down,tiles,board):
    valid,new_board = place_tiles(row,col,down,tiles,board)
    if valid == False:
        return -1
    board_words = get_all_words(board)[0]
    new_board_words = get_all_words(new_board)[0]
    for word in board_words:
        if word in new_board_words:
            new_board_words.remove(word)
    score = 0
    for word in new_board_words:
        if is_valid(word):
            for tile in word:
                score += get_value(tile)
    if len(tiles) > 6:
        score += 50
    if score == 0:
        return -1
    return score
def best_play(tiles,board):
    best_score = {}
    for down in range(2):
        for i in range(len(board)):
            for j in range(len(board)):
                score = play(i,j,down,tiles,board)
                valid,new_board = place_tiles(i,j,down,tiles,board)
                if score != -1 and valid and get_all_words(new_board)[1] == []:
                    best_score.setdefault(score,[])
                    best_score[score].append([i,j,down])
    if best_score == {}:
        return [-1,-1,-1,-1]
    max_score = max(best_score.keys())
    best = best_score[max_score]
    best.sort()
    return [max_score, best[0][0], best[0][1], best[0][2]]

00278: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_30.0
[-14]
test_play_40.0
[-14, -21]
test_play_50.0
[-160, -172]
test_play_60.0
[-160, -1]
test_play_70.0
[-163, -14]
test_play_80.0
[-162]
test_play_90.0
[-1, -1, -15, 124, -17, -85, 12]
test_play_100.0
[-19, -133, -136, -18, -12, -173, -165, -17, -174, -16]
test_play_110.0
[-167, -61, -128, -11, -13, -185, -11, -12, -17, -125, -17, -14, -21, -132, -12, -15, -16, -168, -16, -13, -10, -127, -128]
test_play_120.0
[-11]
test_play_130.0
[-19]
test_play_140.0
[-18, -120, -126, -1]
test_play_150.0
[-139]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 974, 'const': 281, 'code+const': 1255}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words = []
    invalid_words = []
    for e in board:
        x = ''
        for f in e:
            if f != '':
                x += f
            else:
                if len(x) >= 2:
                    if is_valid(x):
                        valid_words.append(x)
                    else:
                        invalid_words.append(x)
                x = ''
        if len(x) >= 2:
            if is_valid(x):
                valid_words.append(x)
            else:
                invalid_words.append(x)
    for cl in range(len(board[0])):
        x = ''
        for r in range(len(board)):
            if board[r][cl] != '':
                x += board[r][cl]
            else:
                if len(x) >= 2:
                    if is_valid(x):
                        valid_words.append(x)
                    else:
                        invalid_words.append(x)
                x = ''
        if len(x) >= 2:
            if is_valid(x):
                valid_words.append(x)
            else:
                invalid_words.append(x)
    valid_words.sort()
    invalid_words.sort()
    return [valid_words, invalid_words]
def get_play(board, new_board):
    x = ''
    for r in range(len(board)):
        for cl in range(len(board[0])):
            if board[r][cl] != new_board[r][cl]:
                if x == '':
                    row = r
                    col = cl
                else:
                    if r == row:
                        down = 0
                    elif cl == col:
                        down = 1
                x += new_board[r][cl]
    tiles = x
    if len(x) == 1:
        down = 0
    return [row, col, down, tiles]
def play(row,col,down,tiles,board):
    valid, new_board = place_tiles(row,col,down,tiles,board)
    if valid == True:
        if down == 0:
            found = False
            for i in range(col, len(board[row])):
                if board[row][i] == '':
                    found = True
                    cl = i
            if found:
                word0 = board[row][col:cl:]
            else:
                word0 = board[row][col::]
            word = ''
            for e in word0:
                word += e
        elif down == 1:
            found = False
            for i in range(row, len(board)):
                if board[i][col] == '':
                    found = True
                    r = i
            word = ''
            if found:
                for j in range(row, r):
                    word += board[j][col]
            else:
                for j in range(row, len(board)):
                    word += board[j][col]
        if is_valid(word):
            valid = True
        else:
            valid = False
            new_board = copy_board(board)
    if valid:
        sc = 0
        for ch in word:
            sc += get_value(ch)
        if len(tiles) >= 7:
            sc += 50
        return sc
    return -1
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00279: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1144, 'const': 332, 'code+const': 1476}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid = []
    notvalid = []
    for i in range(len(board)):
        nline = ''
        for j in range(len(board[i])):
            if board[i][j] == '':
                nline+='-'
            else:
                nline+=board[i][j]
        sline = ''.join(nline)
        line = sline.split('-')
        for word in line:
            if is_valid(word):
                valid.append(word)
            elif not is_valid(word) and word!='' and len(word)!=1:
                notvalid.append(word)
    for i in range(len(board[0])):
        nline = ''
        for j in range(len(board)):
            if board[j][i] == '':
                nline+='-'
            else:
                nline+=board[j][i]
        sline = ''.join(nline)
        line = sline.split('-')
        for word in line:
            if is_valid(word):
                valid.append(word)
            elif not is_valid(word) and word!='' and len(word)!=1:
                notvalid.append(word)
    return [sorted(valid),sorted(notvalid)]
def get_play(board, new_board):
    nline=''
    check1 = True
    check2 = True
    for i in range(len(board)):
        for j in range(len(board[i])):
            if board[i][j] != new_board[i][j]:
                nline+=new_board[i][j]
                if check1:
                    row = i
                    col = j
                    check1 = False
                elif not check1 and check2:
                    check2 = False
                    if row==i:
                        down = 0
                    else:
                        down = 1
    if len(nline) == 1:
        down = 0
    return [row,col,down,nline]
def play(row,col,down,tiles,board):
    score = 0
    lenc = 0
    cboard = copy_board(board)
    check,cboard = place_tiles(row,col,down,tiles,board)
    if not check:
        return -1
    wordc = get_all_words(cboard)[0]
    wordb = get_all_words(board)[0]
    for word in wordc:
        if word not in wordb:
            for char in word:
                score+=get_value(char)
        else:
            wordb.remove(word)
    if score == 0:
        return -1
    if len(tiles)>= 7:
        score += 50
    return score
def best_play(tiles,board):
    maxscore = 0
    check = False
    for i in range(len(board)):
        for j in range(len(board[0])):
            word_valid = False
            valid,newboard = place_tiles(i,j,0,tiles,board)
            notvalid = get_all_words(newboard)[1]
            if len(notvalid) == 0:
                word_valid = True
            if valid and word_valid:
                score = play(i,j,0,get_play(board,newboard)[3],board)
                if score > maxscore:
                    check = True
                    maxscore = score
                    row = i
                    col = j
                    down = 0
            valid,newboard = place_tiles(i,j,1,tiles,board)
            notvalid = get_all_words(newboard)[1]
            word_valid = False
            if len(notvalid) ==0:
                word_valid = True
            if valid and word_valid:
                temp = copy_board(board)
                score = play(i,j,1,get_play(board,newboard)[3],temp)
                if score > maxscore:
                    check = True
                    maxscore = score
                    row = i
                    col = j
                    down = 1
    if check:
        board = place_tiles(row,col,down,tiles,board)
        return [maxscore,row,col,down]
    else:
        return [-1,-1,-1,-1]

00280: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 1827, 28]
test_play_120.0
[811]
test_play_131.0
[9]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[2839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_20.0
[[-1, 5-1, 7-1, -1]]
test_best_play_30.0
[[-168, -40, 7, 1], [-187, -512, 70, 10], [-179, -31, 712, 1], [589, 1, 70, 10], [131, 82, 63, 0], [695, 23, 94, 1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [511, 10, 51, 0], [1522, 83, 108, 1]]
test_best_play_40.0
[[-71, -30, 7, 1], [623, 10, 70, 10], [-163, -1, -1, -10], [209, 87, 3, 01], [-19, -13, -10, -10], [-172, -14, -14, -10],
 [-17, -16, -16, -10], [8, 43, 43, 10], [18, 14, 50, 10], [146, 35, 31, 10]]
test_best_play_50.0
[[-183, -60, 7, 1], [612, 13, 70, 10], [6958, 81, 18, 0], [910, 20, 1, 10], [-168, -10, -11, -1], [824, 16, 38, 01],
 [-18, -18, -19, -1], [10, 01, 42, 1], [-21, -15, -13, -1], [1527, 84, 04, 1]]
bytecount: {'code': 3580, 'const': 1042, 'code+const': 4622}
check_import({'allowable': ['math']}): none
def checkIsValid(valid,invalid,word):
    if is_valid(word): valid.append(word);
    elif len(word) > 1: invalid.append(word)
    return valid,invalid,""
def get_all_words(board):
    valid, invalid,wordX,wordY = [],[],'',''
    for i in range(len(board)):
        for j in range(len(board)):
            if board[i][j] != '': wordX += board[i][j]
            if board[j][i] != '': wordY += board[j][i]
            if board[i][j] == "" and len(wordX) != 0: valid,invalid,wordX = checkIsValid(valid,invalid,wordX)
            if board[j][i] == "" and len(wordY) != 0: valid,invalid,wordY = checkIsValid(valid,invalid,wordY)
        if len(wordX) != 0: valid,invalid,wordX = checkIsValid(valid,invalid,wordX)     
        if len(wordY) != 0: valid,invalid,wordY = checkIsValid(valid,invalid,wordY)
    return [sorted(valid),sorted(invalid)]        
def get_play(board, new_board):
    loc,word,down = [],'',1
    for i in range(len(board)):
        for j in range(len(board)):
            if board[i][j] != new_board[i][j]:
                loc.append([i,j])
                word += new_board[i][j]
    if len(word) == 1 or loc[0][0] == loc[1][0]: down = 0
    return [loc[0][0],loc[0][1],down,word]
def contactWord(loc,down,board):
    _Loc = []
    if down == 0:
        for row in range(len(board)):
            if board[row][loc[1]] != '': _Loc.append([row,loc[1]])
            if board[row][loc[1]] == '' and len(_Loc) > 0:
                if loc not in _Loc: _Loc = []
                else: return "".join([board[e[0]][e[1]] for e in _Loc])
        if len(_Loc) != 0 and loc in _Loc: return "".join([board[e[0]][e[1]] for e in _Loc])    
    elif down == 1:
        for col in range(len(board)):
            if board[loc[0]][col] != '': _Loc.append([loc[0],col])
            if board[loc[0]][col] == '' and len(_Loc) > 0:
                if loc not in _Loc: _Loc = []
                else: return "".join([board[e[0]][e[1]] for e in _Loc])
        if len(_Loc) != 0 and loc in _Loc: return "".join([board[e[0]][e[1]] for e in _Loc])
    return []
def appendingNewWord(loc,_Board,valid,allWord,down):
    for pos in loc:
        newWord = contactWord(pos,down,_Board)
        if is_valid(newWord) and newWord not in valid:
            allWord.append(newWord)
def play(row,col,down,tiles,board):
    _Board = place_tiles(row,col,down,tiles,copy_board(board))[1]
    valid,inval = get_all_words(board)
    loc,allWord,word = [],[],''
    if down == 0:
        for j in range(len(_Board)):
            if _Board[row][j] != '':
                word += _Board[row][j]
                loc.append([row,j])
            if _Board[row][j] == "" and len(word) != 0:
                if [row,col] in loc: break
                else: loc,word = [], ""           
        if is_valid(word) and len(word) != 0:
            allWord.append(word)
            appendingNewWord(loc,_Board,valid,allWord,0)
    elif down == 1:
        for i in range(len(_Board)):
            if _Board[i][col] != '':
                word += _Board[i][col]
                loc.append([i,col])
            if _Board[i][col] == "" and len(word) != 0:
                if [row, col] in loc: break
                else: loc,word = [],""
        if is_valid(word) and len(word) != 0:
            allWord.append(word)
            appendingNewWord(loc,_Board,valid,allWord,1)
    if allWord != [] and len(get_all_words(_Board)[1]) == 0 and board != _Board:
        if len(tiles) > 6: return sum([get_value(d) for e in allWord for d in e]) + 50
        return sum([get_value(d) for e in allWord for d in e]) 
    return -1
def appending(_word,word,loc,temp):
    _word.append(word)
    loc.append(temp)
    return _word,loc,""
def allChar(board):
    hor,ver,xLoc,yLoc,wordX,wordY = [],[],[],[],'',''
    for i in range(len(board)):
        for j in range(len(board)):
            if board[i][j] != "":
                wordX += board[i][j]
                tempX = [i, j]
            if board[i][j] == "" and len(wordX) > 0:
                hor,xLoc,wordX = appending(hor,wordX,xLoc,tempX)
            if board[j][i] != "":
                wordY += board[j][i]
                tempY = [j, i]
            if board[j][i] == "" and len(wordY) > 0:
                ver,yLoc,wordY = appending(ver,wordY,yLoc,tempY)
        if len(wordX) > 0:
            hor,xLoc,wordX = appending(hor,wordX,xLoc,tempX)
        if len(wordY) > 0:
            ver,yLoc,wordY = appending(ver,wordY,yLoc,tempY)
    return hor, xLoc, ver, yLoc
def inDistance(board,loc):
    diff = [[1,0],[-1,0],[0,1],[0,-1]]
    for pos in loc:
        if board[pos[0]][pos[1]] != "": return False
    for pos in loc:
        for d in diff:
            if pos[0] + d[0] in range(15) and pos[1] + d[1] in range(15):
                if [pos[0] + d[0], pos[1] + d[1]] not in loc and board[pos[0] + d[0]][pos[1] + d[1]] != "": return True
    return False
def combineWord(letter,word):
    for i in range(len(word) + 1):
        if is_valid(word[:i] + letter + word[i:]): return [i, word[:i] + letter + word[i:]]
    return [-1, ""]
def checkingParralel(board,tiles,final):
    for x in range(len(board)):
        for y in range(len(board)):
            posX, posY = [],[]
            for z in range(len(tiles)):
                if len(tiles) + y > 15: break
                posX.append([x,y+z])
            if play(x,y,0,tiles,board) != -1 and inDistance(board,posX) and len(posX) > 0: final.append([play(x,y,0,tiles,board),x,y,0])
            for z in range(len(tiles)):
                if len(tiles) + x > 15: break
                posY.append([x+z,y])
            if play(x,y,1,tiles,board) != -1 and inDistance(board,posY) and len(posY) > 0: final.append([play(x,y,1,tiles,board),x,y,1])
def appendingNewwordFromIntersect(axis,tiles,index,possibleWord,down,Loc,board,final):
    newWord = combineWord(axis[index],tiles)
    possibleWord.append(newWord[1])
    if down == 0:
        if newWord[0] > -1 and Loc[index][1] + len(tiles) - newWord[0] in range(16) and play(Loc[index][0], Loc[index][1] - newWord[0],0,tiles,board) != -1:
                final.append([play(Loc[index][0],Loc[index][1] - newWord[0], 0, tiles,board),Loc[index][0],Loc[index][1] - newWord[0],0])
    elif down == 1:
        if newWord[0] > -1 and Loc[index][0] + len(tiles) - newWord[0] in range(16) and play(Loc[index][0] - newWord[0], Loc[index][1],1,tiles,board) != -1:
                final.append([play(Loc[index][0] - newWord[0],Loc[index][1], 1, tiles,board),Loc[index][0] - newWord[0],Loc[index][1],1])
def best_play(tiles,board):
    if board[7][7] == "": return [play(8-len(tiles),7,1,tiles,board),8-len(tiles),7,1]
    else:
        hor,xLoc,ver,yLoc = allChar(board)
        final,possibleWord = [],[]
        for x in range(len(hor)):
            appendingNewwordFromIntersect(hor,tiles,x,possibleWord,0,xLoc,board,final)
        for y in range(len(ver)):
            appendingNewwordFromIntersect(ver,tiles,y,possibleWord,1,yLoc,board,final)
        isParralel = [x for word in possibleWord if is_valid(word)]
        if (is_valid(tiles) or isParralel):
            checkingParralel(board,tiles,final)
    if len(final) > 0: return sorted([[ele[0],-ele[1],-ele[2],-ele[3],ele] for ele in final],reverse=True)[0][4]
    return [-1,-1,-1,-1]

00281: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 2162, 'const': 393, 'code+const': 2555}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    val = []
    inval = []
    uou = 15
    tung = 15
    for i in range(tung):
      kum = ''
      for j in range(uou):
        if board[i][j] != '':
          kum += board[i][j]
        if board[i][j] == '':
          if len(kum) > 1:
            if is_valid(kum):
              val.append(kum)
            else:
              inval.append(kum)
          kum = ''
        if j == 14:
          if len(kum) > 1:
            if is_valid(kum):
              val.append(kum)
            else:
              inval.append(kum)
    for i in range(uou):
      kum = ''
      for j in range(tung):
        if board[j][i] != '':
          kum += board[j][i]
        if board[j][i] == '':
          if len(kum) > 1:
            if is_valid(kum):
              val.append(kum)
            else:
              inval.append(kum)
          kum = ''
        if j == 14:
          if len(kum) > 1:
            if is_valid(kum):
              val.append(kum)
            else:
              inval.append(kum)
    val.sort()
    inval.sort()
    return [val, inval]
def get_play(board, new_board):
    tung = 15
    uou = 15
    letter = ''
    check = False
    for i in range(uou):
      for j in range(tung):
        if board[i][j] != new_board[i][j]:
          if letter == '':
            row = i
            col = j
          elif not check:
            if i == row:
              down = 0
              check = True
            elif j == col:
              down = 1
              check = True
          letter += new_board[i][j]
    if len(letter) == 1:
      down = 0
    return [row, col, down, letter]
def play(row,col,down,tiles,board):
    score = 0
    if place_tiles(row,col,down,tiles,board)[0]:
      kum = get_all_words(place_tiles(row,col,down,tiles,board)[1])[0]
      if len(get_all_words(place_tiles(row,col,down,tiles,board)[1])[1]) > 0:
        return -1
      else:
        oldkum = get_all_words(board)[0]
        while len(oldkum) > 0:
          if oldkum[0] in kum:
            kum.remove(oldkum[0])
          oldkum.remove(oldkum[0])
    else:
      return -1
    count = 0
    if down == 1:
      putkum = ''
      for i in range(row, row+len(tiles)+count):
        if board[i][col] == '':
          putkum += tiles[i-row-count]
        else:
          count += 1
          putkum += board[i][col]
        check = tiles[i-row-count]
        if board[i][col] == '':
          for j in range(col-1, -1, -1):
            if board[i][j] != '':
              check = board[i][j]+check
            else:
              break
          for k in range(col+1, 15):
            if board[i][k] != '':
              check += board[i][k]
            else:
              break
          if len(check) > 1:
            if check.upper() in kum:
              kum.remove(check.upper())
            kum.append(check)
    else:
      putkum = ''
      for i in range(col, col+len(tiles)+count):
        if board[row][i] == '':
          putkum += tiles[i-col-count]
        else:
          count += 1
          putkum += board[row][i]
        check = tiles[i-col-count]
        if board[row][i] == '':
          for j in range(row-1, -1, -1):
            if board[j][i] != '':
              check = board[j][i]+check
            else:
              break
          for k in range(row+1, 15):
            if board[k][i] != '':
              check += board[k][i]
            else:
              break
          if len(check) > 1:
            if check.upper() in kum:
              kum.remove(check.upper())
            kum.append(check)
    if down == 1:
      for a in range(row-1, -1, -1):
        if board[a][col] != '':
          putkum = board[a][col]+putkum
        else:
          break
      for b in range(len(tiles)+row, 15):
        if board[b][col] != '':
          putkum += board[b][col]
        else:
          break
    else:
      for j in range(col-1, -1, -1):
        if board[row][j] != '':
          putkum = board[row][j]+putkum
        else:
          break
      for k in range(len(tiles)+col, 15):
        if board[row][k] != '':
          putkum += board[row][k]
        else:
          break
    if count > 0:
      putkum += tiles[-count:]
    if putkum.upper() in kum:
      kum.remove(putkum.upper())
    kum.append(putkum)
    for i in range(len(kum)):
      for j in range(len(kum[i])):
        score += get_value(kum[i][j])
    if len(tiles) >= 7:
      score += 50
    return score
def best_play(tiles,board):
    uou = 15
    tung = 15
    down = 2
    tam = []
    for uou1 in range(uou):
      for tung1 in range(tung):
        for down1 in range(down):
          score = play(uou1, tung1, down1, tiles, board)
          if score != -1:
            tam.append([score, uou1, tung1, down1])
    tam.sort()
    if len(tam) > 0:
      max = tam[-1][0]
      for i in range(len(tam)):
        if len(tiles) == 1:
          if tam[i][0] == max and tam[i][3] == 0:
            return tam[i]
        elif tam[i][0] == max:
          return tam[i]
    return [-1,-1,-1,-1]

00282: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1416, 'const': 406, 'code+const': 1822}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    word_list = []
    for e in board:
      word = ''
      for i in range(14):
        if e[i] != '' and e[i+1] != '':
          word += e[i]
        elif e[i] != '' and e[i+1] == '':
          word += e[i]
          if len(word) >= 2:
            word_list.append(word)
          word = ''
        if i == 13 and len(word) != 0 and e[i+1] != '':
          word += e[i+1]
          if len(word) >= 2:
            word_list.append(word)
          word = ''
    for i in range(15):
      word = ''
      for a in range(14):
        if board[a][i] != '' and board[a+1][i] != '':
          word += board[a][i]
        elif board[a][i] != '' and board[a+1][i] == '':
          word += board[a][i]
          if len(word) >= 2:
            word_list.append(word)
          word = ''
        if a == 13 and len(word) != 0 and board[a+1][i] != '':
          word += board[a+1][i] 
          if len(word) >= 2:
            word_list.append(word)
          word = ''
    valid = []
    invalid = []
    for word in word_list:
      if is_valid(word):
        valid.append(word)
      else:
        invalid.append(word)
    valid.sort()
    invalid.sort()
    return [valid, invalid]
def get_play(board, new_board):
    changes = []
    down = 0
    for i in range(15):
      for e in range(15):
        if board[i][e] != new_board[i][e]:
          changes.append([new_board[i][e], i, e])
    if len(changes) > 1:
      for i in range(len(changes)-1):
        if changes[i][1] == changes[i+1][1]:
            down = 0
        else:
            down = 1
    else:
        down = 0
    row = changes[0][1]
    col = changes[0][2]
    word = ''
    for i in changes:
      word += i[0]
    return [row, col, down, word]
def play(row,col,down,tiles,board):
    place_valid = place_tiles(row, col, down, tiles, board)[0]
    if place_valid:
      new_board = place_tiles(row, col, down, tiles, board)[1]
      board_word = get_all_words(board)
      new_board_word = get_all_words(new_board)
      if board_word[1] != new_board_word[1]:
        valid = False
      else:
        valid = True
        play_word = []
        for w in new_board_word[0]:
          if w not in board_word[0] or (w in board_word[0] and new_board_word[0].count(w) - board_word[0].count(w) == 1 and (w not in play_word)):
              play_word.append(w)
    else:
      valid = False
    point = 0
    if valid:
      for word in play_word:
        for ch in word:
          point += get_value(ch)
      if len(tiles) >= 7:
        point += 50
    else:
      point = -1
    return point
def best_play(tiles,board):
    point = []
    for row in range(15):
      for col in range(15):
        for down in range(2):
            if play(row,col,down,tiles,board) != -1:
              point.append([play(row,col,down,tiles,board), row, col, down])
    point.sort()
    if len(point) != 0:
      max_point = point[-1][0]
      max_point_contender = []
      for e in point:
        if e[0] == max_point:
          max_point_contender.append([e[1],e[2],e[3],e[0]])
      max_point_contender.sort()
      return [max_point_contender[0][3],max_point_contender[0][0],max_point_contender[0][1],max_point_contender[0][2]]
    else:
      return [-1,-1,-1,-1]

00283: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1114, 'const': 336, 'code+const': 1450}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid_words = list() ; invalid_words = list() 
  for row in board :
      found_words = False ; words = ''
      for e in row :
          if e != '': found_words = True
          else : 
              found_words = False
              if is_valid(words):
                  valid_words.append(words)
              elif len(words) >= 2 :
                  invalid_words.append(words)
              words = ''
          if found_words :
              words += e.upper()
      if is_valid(words):
          valid_words.append(words)
      elif len(words) >= 2 :
          invalid_words.append(words)
  for ncol in range(15) :
      words_of_col = list() ; found_words = False ; words = ''
      for row in board :
          if row[ncol] != '': found_words = True
          else : 
              found_words = False
              if is_valid(words):
                  valid_words.append(words)
              elif len(words) >= 2 :
                  invalid_words.append(words)
              words = ''
          if found_words :
              words += row[ncol].upper()
      if is_valid(words):
          valid_words.append(words)
      elif len(words) >= 2 :
          invalid_words.append(words)
  return [sorted(valid_words),sorted(invalid_words)]
def get_play(board, new_board):
  tile = '' ; row = list() ; col = list()
  for nrow in range(15) :
      for ncol in range(15) :
          if board[nrow][ncol] != new_board[nrow][ncol] :
              row.append(nrow)
              col.append(ncol)
              tile += new_board[nrow][ncol].upper()
  if len(tile) == 1 :
      return [row[0],col[0],0,tile]
  else :
      if sum(row)/len(row) == max(row) :
          down = 0
      else :
          down = 1 
      return [row[0],col[0],down,tile]
def play(row,col,down,tiles,board):
  score = 0
  new_board = place_tiles(row,col,down,tiles,board)[1]
  w_placedtiles = get_all_words(new_board)[0]
  w_oldboard = get_all_words(board)[0]
  new_words = []
  for word in w_placedtiles :
    if word in w_oldboard :
      w_oldboard.remove(word)
    else :
      new_words.append(word)
  for word in new_words: 
      if len(word) >= len(tiles) >= 7 : 
          bonus = False
          list_letters_inword = [letter.upper() for letter in word]
          for letter in tiles.upper() :
            if letter in list_letters_inword :
              list_letters_inword.remove(letter)
              bonus = True
            else : 
              bonus = False
              break
          if bonus : score += 50
      for letter in word:
          score += get_value(letter)
  if score > 0 and len(get_all_words(new_board)[1]) == len(get_all_words(board)[1]) : return score
  else : return -1
def best_play(tiles,board):
  all_play = list()
  for nrow in range(15):
      for ncol in range(15):
          all_play.append([play(nrow,ncol,0,tiles,board),-nrow,-ncol,0])
          all_play.append([play(nrow,ncol,1,tiles,board),-nrow,-ncol,-1])
  all_play.sort()
  sc,row,col,down = all_play[-1]
  if sc == -1 :
    return [-1,-1,-1,-1]
  else : 
    return [sc,-row,-col,-down]

00284: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1212, 'const': 242, 'code+const': 1454}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  ans = []
  skipDown = []
  skipRight = []
  for i in range(len(board)):
    for j in range(len(board[i])):
      if([i,j] not in skipRight):
        word = ''
        t1 = j
        while(board[i][t1]):
          word += board[i][t1].upper()
          t1 += 1
          if(t1==len(board[i])):
            break
          skipRight.append([i,t1])
        if(len(word)>1):
          ans.append(word)
      if([i,j] not in skipDown):
        word = ''
        t1 = i
        while(board[t1][j]):
          word += board[t1][j].upper()
          t1 += 1
          if(t1==len(board)):
            break
          skipDown.append([t1,j])
        if(len(word)>1):
          ans.append(word)
  a = []
  b = []
  for i in ans:
    if(is_valid(i)):
      a.append(i)
    else:
      b.append(i)
  return [sorted(a),sorted(b)]
def get_play(board, new_board):
  for i in range(len(new_board)):
    for j in range(len(new_board[i])):
      if(new_board[i][j] != board[i][j]):
        down=0
        word = new_board[i][j].upper()
        t1 = j+1
        if(t1 != len(board[i])):
          while(new_board[i][t1]):
            if(new_board[i][t1] != board[i][t1]):
              word += new_board[i][t1].upper()
            t1+=1
            if(t1==len(board[i])):
              break
        t1 = i+1
        if(t1!=len(board)):
          while(new_board[t1][j]):
            if(new_board[t1][j] != board[t1][j]):
              word += new_board[t1][j].upper()
              down=1
            t1+=1
            if(t1==len(board)):
              break
        return [i,j,down,word]
  return [0,0,0,""]
def play(row,col,down,tiles,board):
  valid,new_board = place_tiles(row,col,down,tiles,board)
  if(not valid):
    return -1
  a = get_all_words(board)
  b = get_all_words(new_board)
  new_word = []
  for i in b[0]:
    if(i not in a[0]):
      new_word.append(i)
    else:
      a[0].remove(i)
  score = 0
  for i in b[1]:
    return -1
  for i in new_word:
    for j in i:
      score += get_value(j)
  if(len(tiles)>=7):
    score += 50
  return score
def best_play(tiles,board):
  mx = 0
  sameScore = []
  for i in range(len(board)):
    for j in range(len(board[i])):
      if(board[i][j]):
        continue
      a = play(i,j,0,tiles,board)
      if(a>mx):
        mx = a
        sameScore= [[i,j,0]]
      elif(a==mx):
        sameScore.append([i,j,0])
      a = play(i,j,1,tiles,board)
      if(a>mx):
        mx = a
        sameScore = [[i,j,1]]
      elif(a==mx):
        sameScore.append([i,j,1])
  if(len(sameScore)==0):
    return [-1,-1,-1,-1]
  sameScore.sort()
  return [mx] + sameScore[0]

00285: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 10, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 10, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1462, 'const': 334, 'code+const': 1796}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  v=[]
  i=[]
  c=''
  for r in board:
    if is_valid(c)==True:
      v.append(c)
    elif is_valid(c)==False and len(c)>1:
      i.append(c)
    c=''
    for t in r:
      if get_value(t)!=-1:
        c+=t
      else:
        if is_valid(c)==True:
          v.append(c)
          c=''
        elif is_valid(c)==False and len(c)>1 :
          i.append(c)
          c=''
        else:
          c=''
  if is_valid(c)==True:
    v.append(c)
  elif is_valid(c)==False and len(c)>1:
    i.append(c)
  g=''
  for f in range(len(board[0])):
    if is_valid(g)==True:
      v.append(g)
    elif is_valid(g)==False and len(g)>1:
      i.append(g)
    g=''
    for y in range(len(board)):
      if get_value(board[y][f])!=-1:
        g+=board[y][f]
      else:
        if is_valid(g)==True:
          v.append(g)
          g=''
        elif is_valid(g)==False and len(g)>1:
          i.append(g)
          g=''
        else:
          g=''
  if is_valid(g)==True:
    v.append(g)
  elif is_valid(g)==False and len(g)>1:
    i.append(g)
  v.sort()
  i.sort()
  return [v,i]
def get_play(board, new_board):
  p=''
  w=0
  c=0
  d=0
  for r in range(len(board)):
    for u in range(len(board[r])):
      if new_board[r][u]!='' and board[r][u]=='':
        if u==c:
          d=1
        if len(p)==0:
          w=r
          c=u
        p+=new_board[r][u]
  if len(p)==1:
    d=0
  return [w,c,d,p]
def play(row,col,down,tiles,board):
  q=0
  if len(tiles)>=7:
    q+=50
  d=get_all_words(board)
  o=d[0]
  copy=copy_board(board)
  p=place_tiles(row,col,down,tiles,copy)
  b=p[1]
  m=get_all_words(b)
  n=m[0]
  s=[]
  for i in m[1]:
    if i not in d[1]:
      return -1
  for i in n:
    if i in o:
      o.remove(i)
    else:
      s.append(i)
  if len(s)==0 or p[0]==False:
    return -1
  for t in s:
    for e in t:
      q+=get_value(e)
  return q
def best_play(tiles,board):
  s=0
  r=0
  c=0
  d=0
  for g in range(15):
    for t in range(15):
      p0=place_tiles(g,t,0,tiles,board)
      p1=place_tiles(g,t,1,tiles,board)
      if p0[0]==True:
        if play(g,t,0,tiles,board)>s :
          s=play(g,t,0,tiles,board)
          r=g
          c=t
          d=0
        if play(g,t,0,tiles,board)==s and s!=-1:
          if (g==r and t<c) or g<r:
            r=g
            c=t
            d=0
      if p1[0]==True:
        if play(g,t,1,tiles,board)>s :
          s=play(g,t,1,tiles,board)
          r=g
          c=t
          d=1
        if play(g,t,1,tiles,board)==s and s!=-1:
          if (g==r and t<c) or g<r:
            r=g
            c=t
            d=1
      else:
        continue
  if s==0 and r==0 and c==0 and d==0:
    return [-1,-1,-1,-1]
  return [s,r,c,d]

00286: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 954, 'const': 358, 'code+const': 1312}
check_import({'allowable': ['math']}): none
def check_all_words(a,b,w):
  if is_valid(w)==True: a.append(w)
  elif is_valid(w)==False and len(w)>=2: b.append(w)
  return a,b
def get_all_words(board):
  a,b=[],[]
  for i in range(15):
    r=''
    c=''
    for j in range(15):
      if board[i][j]!='':
        r+=board[i][j]
      else:
        a,b=check_all_words(a,b,r)
        r=''
      if board[j][i]!='':
        c+=board[j][i]
      else:
        a,b=check_all_words(a,b,c)
        c=''
    a,b=check_all_words(a,b,r)
    a,b=check_all_words(a,b,c)
  a.sort()
  b.sort()
  return [a,b]
def get_play(board, new_board):
  a=[]
  b=[]
  word=''
  for i in range(15):
    for e in range(15):
      if new_board[i][e]!=board[i][e]:
        a.append(i)
        a.append(e)
        b.append(new_board[i][e])
  if len(b)==1:
    c=0
  else:  
    if a[0]==a[2]:
      c=0
    elif a[1]==a[3]:
      c=1
  for j in range(len(b)):
    word+=b[j]
  return [a[0],a[1],c,word]
def play(row,col,down,tiles,board):
  word=[]
  a=place_tiles(row,col,down,tiles,board)
  if a[0]==False: 
    return -1
  if len(get_all_words(a[1])[1])>0: 
    return -1
  allword=get_all_words(board)
  for i in get_all_words(a[1])[0]:
    if i in allword[0]:
      allword[0].remove(i)
    else:
      word.append(i)
  count=0
  for i in word:
    for j in i:
      count+=get_value(j)
  if count==0: return -1
  if len(tiles)>=7: 
    count+=50
  return count
def best_play(tiles,board):
  best_play=[]
  for i in range(15):
    for j in range(15):
      for k in range(2):
        score=play(i,j,k,tiles,board)
        if score!=-1: 
          best_play.append([score,i,j,k])
  if best_play==[]: 
    return [-1,-1,-1,-1]
  else: 
    best_play.sort()
    maxscore=best_play[-1][0]
    for i in best_play:
      if i[0]==maxscore: 
        return i

00287: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1116, 'const': 337, 'code+const': 1453}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    l = [[],[]]
    t = ""
    for i in range(0, 15):
        for j in range(0, 15):
            if board[i][j]!="":
                t+=board[i][j]
            else:
                if len(t)>1:
                    if is_valid(t):
                        l[0].append(t)
                    else:
                        l[1].append(t)
                t=""
        if len(t)>1:
            if is_valid(t):
                l[0].append(t)
            else:
                l[1].append(t)
        t=""
    for i in range(0, 15):
        for j in range(0, 15):
            if board[j][i]!="":
                t+=board[j][i]
            else:
                if len(t)>1:
                    if is_valid(t):
                        l[0].append(t)
                    else:
                        l[1].append(t)
                t =""
        if len(t)>1:
            if is_valid(t):
                l[0].append(t)
            else:
                l[1].append(t)
        t=""
    for i in l:
        i.sort()
    return l
def get_play(board, new_board):
    a = []
    down = 0
    t=""
    i_f = -1
    j_f = -1
    for i in range(0,15):
      for j in range(0,15):
        if new_board[i][j]!=board[i][j]:
          if i_f ==-1 and j_f==-1:
            i_f = i
            j_f = j
          else:
            if i_f == i:
              down = 0
            else:
              down = 1
          t+=new_board[i][j]
    a.append(i_f)
    a.append(j_f)
    a.append(down)
    a.append(t)
    return a
def play(row,col,down,tiles,board):
    nb = copy_board(board)
    valid,nb = place_tiles(row,col,down,tiles,nb)
    b = get_all_words(nb)
    if len(b[1])>0:
      return -1
    else:
      a = get_all_words(board)[0]
      b = b[0]
      t=""
      for i in b:
        if not(i in a):
          t+=i
        else:
          a.remove(i)
      sum = 0
      for i in t:
        sum+=get_value(i)
      if(len(tiles)>6):
        sum+=50
      return sum
def best_play(tiles,board):
    a = []
    for i in range(0,15):
      for j in range(0,15):
        valid = place_tiles(i,j,0,tiles,copy_board(board))[0]
        if valid and play(i,j,0,tiles,copy_board(board))!=-1:
          a.append([-1*play(i,j,0,tiles,copy_board(board)),i,j,0])
        valid = place_tiles(i,j,1,tiles,copy_board(board))[0]
        if valid and play(i,j,1,tiles,copy_board(board))!=-1:
          a.append([-1*play(i,j,1,tiles,copy_board(board)),i,j,1])
    a.sort()
    if len(a)==0:
      return [-1,-1,-1,-1]
    else:
      a = a[0]
      a[0]*=-1
      return a

00288: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1130, 'const': 310, 'code+const': 1440}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  word_in_row = [] ; word_in_column = [] ; x = [[],[]]
  for i in range(len(board)):
    s = ''
    for j in range(len(board[i])):
      if get_value(board[i][j]) != -1:
        s+=board[i][j]
      else:
        word_in_row.append(s) ; s = ''
    word_in_row.append(s)
  for j in range(len(board[0])):
    t = ''
    for i in range(len(board)):
      if get_value(board[i][j]) != -1:
        t+=board[i][j]
      else:
        word_in_column.append(t) ; t = ''
    word_in_column.append(t)
  word_in_board = word_in_row + word_in_column
  for c in word_in_board:
    if is_valid(c):
      x[0].append(c)
    else:
      if len(c)>=2:
        x[1].append(c)
  x[0].sort() ; x[1].sort()
  return x
def get_play(board, new_board):
  s = '' ; x =[] ; t = '' ; y = [] ; z = []
  for i in range(len(board)):
    for j in range(len(board[0])):
      if board[i][j] != new_board[i][j]:
        x.append(i) ; x.append(j)
        s+=new_board[i][j]
        if not(i in z):
          z.append(i)
  if x!=[] and len(z)==1:
    return [x[0],x[1],0,s]
  for j in range(len(board[0])):
    for i in range(len(board)):
      if board[i][j] != new_board[i][j]:
        y.append(i) ; y.append(j)
        t+=new_board[i][j]
  if len(t) > 1:
    return [y[0],y[1],1,t]
  return [y[0],y[1],0,t]
def play(row,col,down,tiles,board):
  new_board = copy_board(board) ; sum = 0 ; e = 0
  valid,new_board = place_tiles(row,col,down,tiles,new_board) 
  word_in_old_board = get_all_words(board)
  word_in_new_board = get_all_words(new_board)
  for a in word_in_old_board[0]:
    if a in word_in_new_board[0]:
      word_in_new_board[0].remove(a)
  for k in word_in_new_board[0]:
    for c in k:
      sum += get_value(c)
  if len(tiles)>=7:
    sum+=50
  if (word_in_new_board[1] == word_in_old_board[1]) and (valid == True):
    return sum
  return -1
def best_play(tiles,board):
  a = [] ; b = [] ; max = -2
  for row in range(len(board)):
    for col in range(len(board[0])):
      for down in range(2):
        score = play(row,col,down,tiles,board)
        a.append([score, row, col, down])
        if score > max:
          max = score
  if max == -1:
    return [-1,-1,-1,-1]
  for t in a:
    if t[0] == max:
      b.append(t)
  b.sort()
  return b[0]

00289: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 1928]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 206, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1468, 'const': 455, 'code+const': 1923}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid=[]
  invalid=[]
  for i in range(15):
    r=''
    for j in range(15):
      if board[i][j]!='':
        r+=board[i][j]
        if j==14:
          if len(r)>1:
            if is_valid(r)==True:
              valid.append(r)
            else:
              invalid.append(r)        
      else:
        if len(r)>1:
          if is_valid(r)==True:
            valid.append(r)
          else:
            invalid.append(r)
          r=''
        else:
          r=''
  for k in range(15):
    c=''
    for l in range(15):
      if board[l][k]!='':
        c+=board[l][k]
        if l==14:
          if len(c)>1:
            if is_valid(c)==True:
              valid.append(c)
            else:
              invalid.append(c)
      else:
        if len(c)>1:
          if is_valid(c)==True:
            valid.append(c)
          else:
            invalid.append(c)
          c=''
        else:
          c=''
  valid.sort()
  invalid.sort()
  return [valid,invalid]
def get_play(board, new_board):
  word=''
  rc=[]
  for i in range(15):
    for j in range(15):
      if board[i][j]!=new_board[i][j]:
        rc.append([i+j,i,j])
        word+=new_board[i][j]
  rc.sort()
  if len(word)!=1:
    if rc[0][2]==rc[1][2]:
      down=1
    else:
      down=0
  else:
    down=0
  return [rc[0][1],rc[0][2],down,word]
def play(row,col,down,tiles,board):
  new_board = copy_board(board)
  new_board = place_tiles(row,col,down,tiles,new_board)[1]
  x = get_all_words(new_board)
  y = get_all_words(board)
  dx={}
  dy={}
  for a in x[0]:
    if a in dx:
      dx[a]+=1
    else:
      dx[a]=1
  for b in y[0]:
    if b in dy:
      dy[b]+=1
    else:
      dy[b]=1
  new_word=[]
  if len(x[1])-len(y[1])<0 or x[1]!=[]:
    return -1
  else:
    s=0
    for i in dx:
      if i in dy:
        dx[i] = dx[i]-dy[i]
    for j in dx:
      if dx[j]!=0:
        ws=0
        for k in j:
          ws+=dx[j]*get_value(k)
        s+=ws
    if len(tiles)>=7:
      s+=50
    return s
def best_play(tiles,board):
  if board[7][7]=='':
    if is_valid(tiles)==True:
      if len(tiles)<=8:
        s=play(8-len(tiles),7,1,tiles,board)
        return [s,8-len(tiles),7,1]
      else:
        s=play(0,7,1,tiles,board)
        return [s,0,7,1]
    else:
      return [-1,-1,-1,-1]
  else:
    l=[]
    for i in range(15):
      for j in range(15):
        if place_tiles(i,j,0,tiles,board)[0]==True:
          sw = play(i,j,0,tiles,board)
          if sw!=-1:
            l.append([sw,i,j,0])
        if place_tiles(i,j,1,tiles,board)[0]==True:
          sw = play(i,j,1,tiles,board)
          if sw!=-1:
            l.append([sw,i,j,1])
    if l==[]:
      return [-1,-1,-1,-1]
    else:
      n=[]
      l.sort(reverse=True)
      for k in l:
        if k[0]==l[0][0]:
          n.append([k[1],k[2],k[3]])
      n.sort()
      return [l[0][0],n[0][0],n[0][1],n[0][2]]

00290: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1126, 'const': 386, 'code+const': 1512}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    checked = [[],[]]
    all = []
    for i in range(15) :
      w = ''
      for j in range(15) :
        w += board[i][j]
        if board[i][j] == '' and w != '' :
          all.append(w)
          w = ''     
      all.append(w)     
    for j in range(15) :
      w = ''
      for i in range(15) :
        w += board[i][j]
        if board[i][j] == '' and w != '' :
          all.append(w)
          w = ''
      all.append(w) 
    all.sort()
    for e in all :
      if len(e) >= 2 :
        if is_valid(e) == True :
          checked[0].append(e)
        else : 
          checked[1].append(e)
    return checked
def get_play(board, new_board):
    rw = []
    cl =[]
    s = ''
    for i in range(len(board)) :
      for j in range(len(board)) :
        if new_board[i][j] != board[i][j] :
          rw.append(i)
          cl.append(j)
          s += new_board[i][j]
    if len(s) > 1 :
      for i in range(len(rw)-1) :
        if rw[i] != rw[i+1] :
          down = 1
        else :
          down = 0
    else :
      down = 0
    return [rw[0],cl[0],down,s]
def play(row,col,down,tiles,board):
    if place_tiles(row,col,down,tiles,board)[0] == False:
      return -1
    w1 = get_all_words(board)[0]
    iv1 = get_all_words(board)[1]
    new = copy_board(board)
    new = place_tiles(row,col,down,tiles,new)[1]
    w2 = get_all_words(new)[0]
    iv2 = get_all_words(new)[1]
    for e in iv2:
      if e not in iv1:
        return -1 
    w = []
    for e in w2 :
      if e not in w1 :
        w.append(e)
      else :
        w1.remove(e)
    ss = []
    if len(w) > 0 :
      s = 0
      if len(tiles) >= 7 :
        s += 50 
      for i in range(len(w)) :
        for j in range(len(w[i])) :
          s += get_value(w[i][j])
      ss.append(s)
    x = 0
    for i in range(len(ss)) :
      x += ss[i]
    return x
def best_play(tiles,board):
    b = []
    for i in range(15) :
      for j in range(15) :
        for k in [0,1] :
          s = play(i,j,k,tiles,board)
          b.append([s,i,j,k])
    ms = max(b)[0]
    if ms != -1 :
      m = []
      for i in range(len(b)) :
        if b[i][0] == ms :
          m.append([b[i][1],b[i][2],b[i][3]])
      mn = min(m)
      bp = [ms] + mn
    else :
      bp = [-1,-1,-1,-1]
    return bp

00291: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, -128, 11, -13, 850, 011, 012, 7, 25, 017, 014, 021, 032, 12, 15, 016, 5068, 6, 013, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_40.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [-172, -14, -14, -10],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 2634, 'const': 760, 'code+const': 3394}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_word=[]
    invalid_word=[]
    row=''
    col=''
    k=0
    while k<15:
     r=0
     for i in range (len(board)):
      if 'A'<=board[i][k]<='Z':
       col+=board[i][k]
      else:
        col+='         '
     col+='      '
     k+=1
    for i in range(len(board)):
        for j in range(len(board)):
           if 'A'<=board[i][j]<='Z':
             row+=board[i][j]
           else:
               row+='      '
        row+='       '
    a=col.split()
    b=row.split()
    c=a+b
    for i in c:
        if  is_valid(i)==True  :
            valid_word.append(i)
        elif (is_valid(i)==False) and (len(i)>=2) :
            invalid_word.append(i)
    return [sorted(valid_word),sorted(invalid_word)] 
def get_play(board, new_board):
     a=[]
     b=''
     for i in range(len(board)):
      for j in range (len(board)):
       if board[i][j]==new_board[i][j]:
          pass
       else:
          a.append([i,j])
          b+=str(new_board[i][j])
     if len(a)==1:
          a1,a2=a[0][0],a[0][1]
          if 'A'<=board[int(a1)+1][int(a2)]<='Z' or 'A'<=board[int(a1)-1][int(a2)]<='Z':
           return [int(a[0][0]),int(a[0][1]),int(0),str(b)]
          elif 'A'<=board[int(a1)][int(a2)+1]<='Z' or 'A'<=[int(a1)][int(a2)-1]<='Z':
           return [int(a[0][0]),int(a[0][1]),int(1),str(b)]
     else:     
      for i in range (len(a)):
         if a[i][0]==a[i+1][0]:
           k=0
           break
         else:
           k=1
           break
      return [int(a[0][0]),int(a[0][1]),int(k),str(b)]
def play(row,col,down,tiles,board):
    oldvalid_word=[]
    oldinvalid_word=[]
    rows=''
    cols=''
    k=0
    while k<15:
     for i in range (len(board)):
      if 'A'<=board[i][k]<='Z':
       cols+=board[i][k]
      else:
        cols+=' '
     k+=1
    for i in range(len(board)):
        for j in range(len(board)):
           if 'A'<=board[i][j]<='Z':
             rows+=board[i][j]
           else:
               rows+=' '
    a=cols.split()
    b=rows.split()
    c=a+b
    for i in c:
        if  is_valid(i)==True :
            oldvalid_word.append(i)
        elif (is_valid(i)==False) and (len(i)>=2) :
            oldinvalid_word.append(i)
    board=place_tiles(row,col,down,tiles,board)[1]
    valid_word=[]
    invalid_word=[]
    row=''
    col=''
    k=0
    while k<15:
     for i in range (len(board)):
      if 'A'<=board[i][k]<='Z':
       col+=board[i][k]
      else:
        col+=' '
     k+=1
    for i in range(len(board)):
        for j in range(len(board)):
           if 'A'<=board[i][j]<='Z':
             row+=board[i][j]
           else:
               row+=' '
    a=col.split()
    b=row.split()
    c=a+b
    for i in c:
        if  is_valid(i)==True :
            valid_word.append(i)
        elif (is_valid(i)==False) and (len(i)>=2) :
            invalid_word.append(i)
    for i in oldvalid_word:
        if i in valid_word:
             valid_word.remove(i)
    n=0
    if len(invalid_word)>0:
      return -1
    else:
     for i in valid_word:
      for j in i:
        n+=get_value(j)
     if len(tiles)>=7:
            n+=50
     return n
def best_play(tiles,board):
  a={}
  b={}
  z=copy_board(board)
  for i in range (15):
    for j in range (15):
      if place_tiles(i,j,0,tiles,z)[0]:
        if play(i,j,0,tiles,z) in a:
            pass
        else:
         a[play(i,j,0,tiles,z)]=str(i)+' '+str(j)+' '+'0'
      if place_tiles(i,j,1,tiles,z)[0]:
        if play(i,j,1,tiles,z) in b:
            pass
        else:
          b[play(i,j,1,tiles,z)]=str(i)+' '+str(j)+' '+'1'
  c=max(a)
  c1=max(b)
  if a=={} and b=={} :
      return [-1,-1,-1,-1]
  if b=={} and a!={}:
       a11,a21,a31=a[c].split()
       if c==-1:
         return [-1,-1,-1,-1]
       else:
        return [c,int(a11),int(a21),int(a31)]
  if a=={} and b!={}:
       a12,a22,a32=a[c1].split()
       if c1==-1:
         return [-1,-1,-1,-1]
       else:
        return [c1,int(a12),int(a22),int(a32)]
  if a!={} and b!={}:
   a11,a21,a31=a[c].split()
   a12,a22,a32=b[c1].split()
   if c==c1:
      if c==-1:
         return [-1,-1,-1,-1]
      if int(a11)==int(a12):
          if int(a21)==int(a22):
            return [c,int(a11),int(a21),int(a31)]
          if int(a21)<int(a22):
            return [c,int(a11),int(a21),int(a31)]
          if int(a21)>int(a22):
            return [c1,int(a12),int(a22),int(a32)]
      if int(a11)<int(a12):
            return [c,int(a11),int(a21),int(a31)]
      if int(a11)>int(a12):
            return [c1,int(a12),int(a22),int(a32)]
   if c>c1:
        if c==-1:
         return [-1,-1,-1,-1]
        else:
            return [c,int(a11),int(a21),int(a31)]
   if c<c1:
          if c1==-1:
            return [-1,-1,-1,-1]
          else:
            return [c1,int(a12),int(a22),int(a32)]

00292: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_60.0
[[6, 7, 01, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0IndexError('list index out of range')
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1170, 'const': 985, 'code+const': 2155}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  abc = ['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']
  r1 = []
  for i in range(len(board)):
      n = 0
      while n < len(board)-1:
          if board[i][n] in abc and board[i][n+1] in abc:
              k = n
              word = ''
              while k != 15 and board[i][k] in abc:
                  word += board[i][k]
                  k += 1
              r1.append(word)
              n = k + 1
          else:
              n += 1
  for i in range(len(board)):
      n = 0
      while n < len(board)-1:
          if board[n][i] in abc and board[n+1][i] in abc:
              k = n
              word = ''
              while k != 15 and board[k][i] in abc:
                  word += board[k][i]
                  k += 1
              r1.append(word)
              n = k + 1
          else :
              n += 1
  r1.sort()
  r_t = []
  r_f = []
  for i in r1:
      if is_valid(i) == True:
          r_t.append(i)
      else:
          r_f.append(i)
  r = []
  r.append(r_t)
  r.append(r_f)
  return r
def get_play(board, new_board):
  x = 0
  y = 0
  z = 0
  word = ''   
  for i in range(len(board)):
      for k in range(len(board[i])):
          if new_board[i][k] != board[i][k]:
              word += new_board[i][k]
              if new_board[i+1][k] != '' and new_board[i-1][k] != '':
                  z = 1
  for i in range(len(board)):
      for k in range(len(board[i])):
          if new_board[i][k] == word[0] and new_board[i][k] != board[i][k]:
              x = i
              y = k
              return [x,y,z,word]
def play(row,col,down,tiles,board):
  word_1,list_word_1 = get_all_words(board)
  tf,new_borad = place_tiles(row,col,down,tiles,board)
  word_2,list_word_2 = get_all_words(new_borad)
  word = word_2
  if tf == True and list_word_2 == []:
      for i in word_1:
          if i in word:
              word.remove(i)
      total = 0
      for i in word:
          for k in i:
              total += get_value(k)
      if len(tiles) >= 7:
          total += 50
      return total
  else:
      return -1
def best_play(tiles,board):
  r = ''
  score = 0
  z = 0
  for i in range(len(board)):
      for k in range(len(board)):
          z = 0
          score_max = play(i,k,z,tiles,board)
          if score_max > score:
              score = score_max
              r = [score,i,k,z]
          z = 1
          score_max = play(i,k,z,tiles,board)
          if score_max > score:
              score = score_max
              r = [score,i,k,z]
  if r != '':
      return r
  else:
      return [-1,-1,-1,-1]

00293: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[411]
test_play_130.0
[59]
test_play_140.0
[8, 1620, 1926, -16]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1556, 'const': 423, 'code+const': 1979}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid=[]
    invalid=[]
    for i in range(len(board)):
        word_row=""
        word_col=""
        for j in range(len(board[0])):
            if board[i][j] in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
                word_row += board[i][j]
            if board[i][j] =="" or j == 14 :
                if is_valid(word_row):
                    valid.append(word_row)
                elif len(word_row)>=2:
                    invalid.append(word_row)
                word_row = ""
            if board[j][i] in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
                word_col += board[j][i]
            if board[j][i] =="" or j == 14:
                if is_valid(word_col):
                    valid.append(word_col)
                elif len(word_col)>=2:
                    invalid.append(word_col)
                word_col = ""
    return [sorted(valid),sorted(invalid)]
def get_play(board, new_board):
    titles=""
    first_found=0
    for i in range(len(board)):
        for j in range(len(board[0])):
            if new_board[i][j] !=board[i][j]:
                titles +=new_board[i][j]
                if first_found==0:
                    row=i;col=j
                elif first_found==1 and i==row:
                    down=0
                elif first_found==1 and j==col:
                    down=1
                first_found+=1
    if len(titles)==1:
      down=0
    return [row,col,down,titles]
def play(row,col,down,tiles,board):
    word=[]
    valid_word=[]
    score=0
    valid,new_board=place_tiles(row,col,down,tiles,board)
    if valid==False:
        return -1
    elif down ==0:
        word_row=""
        in_col=0
        for j in range(len(new_board[0])):
            if new_board[row][j] in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
                word_row += new_board[row][j]
                if j==col:
                    in_col+=1
            if new_board[row][j] =="" or j == 14 :
                if is_valid(word_row) and in_col>0:
                    valid_word.append(word_row)
                    break
                word_row = ""
    elif down ==1:
        word_col=""
        in_row=0
        for j in range(len(new_board[0])):
            if new_board[j][col] in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
                word_col += new_board[j][col]
                if j==row:
                    in_row+=1
            if new_board[j][col] =="" or j == 14 :
                if is_valid(word_col) and in_row>0:
                    valid_word.append(word_col)
                    break
                word_col = ""
    if len(valid_word)==1:
        dva1={}
        dva2={}
        va1,inva1=get_all_words(board)
        va2,inva2=get_all_words(new_board)
        for e in va1:
            if e in dva1:
                dva1[e]+=1
            else:
                dva1[e]=0
        for e in va2:
            if e in dva2:
                dva2[e]+=1
            else:
                dva2[e]=0
        for e in dva2:
            if e not in va1:
                word.append(e)
            elif dva2[e]!=dva1[e]:
                word.append(e*(dva2[e]-dva1[e]))
    else:
        return -1
    for i in word:
        for j in i:
            score+=get_value(j)
    if score>0 and len(tiles)>=7:
        score+=50
    return score
def best_play(tiles,board):
    max_score=0
    total=[]
    for i in range(len(board)):
        for j in range(len(board[0])-len(tiles)+1):
            score=play(i,j,0,tiles,board)
            valid,new_board=place_tiles(i,j,0,tiles,board)
            if score>0 and len(get_all_words(new_board)[1])==0:
                total.append([-1*score,i,j,0])
    for i in range(len(board)):
        for j in range(len(board[0])-len(tiles)+1):
            score=play(j,i,1,tiles,board)
            valid,new_board=place_tiles(j,i,1,tiles,board)
            if score>0 and len(get_all_words(new_board)[1])==0:
                total.append([-1*score,j,i,1])
    total.sort()
    if len(total)==0:
        return [-1,-1,-1,-1]
    total[0][0]*=-1
    return total[0]

00294: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_20.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_60.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_90.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF',
   'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_100.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS',
   'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_40.0
[14, -21]
test_play_50.0
[60, -172]
test_play_61.0
[60, -1]
test_play_70.0
[63, -14]
test_play_81.0
[62]
test_play_90.0
[11, -15, -124, -17, -185, -12]
test_play_100.0IndexError('list index out of range')
[9, -133, -136, -18, -12, -173, -65, 17, -74, 16]
test_play_110.0IndexError('list index out of range')
[-67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, -14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[-11]
test_play_130.0
[-19]
test_play_140.0
[8, -120, -126, -1]
test_play_150.0
[639]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 1208, 'const': 327, 'code+const': 1535}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  check_h = []
  for i in range(15):
    c = []
    for j in range(15):
      if board[i][j] != '':
        c.append(board[i][j])
        if j!=14:
          if board[i][j+1]=='':
            check_h.append(c)
            c = []
  valid_words=[]
  invalid_words=[]
  for k in range(len(check_h)):
    if len(check_h[k])>=2:
      word = ''
      for i in range(len(check_h[k])):
        word+=check_h[k][i]
      if is_valid(word):
        valid_words.append(word)
      else:
        invalid_words.append(word)
  check_v = []
  for i in range(15):
    v = []
    for j in range(15):
      if board[j][i] != '':
        v.append(board[j][i])
        if j!=14:
          if board[j+1][i]=='':
            check_v.append(v)
            v = []
  for k in range(len(check_v)):
    if len(check_v[k])>=2:
      word = ''
      for i in range(len(check_v[k])):
        word+=check_v[k][i]
      if is_valid(word):
        valid_words.append(word)
      else:
        invalid_words.append(word)
  valid_words.sort()
  invalid_words.sort()
  return[valid_words,invalid_words]
def get_play(board, new_board):
  tiles = []
  check = {}
  for i in range(15):
    if board[i]!=new_board[i]:
      for j in range(15):
        if board[i][j]!=new_board[i][j]:
          tiles.append(new_board[i][j])
          if new_board[i][j] not in check:
            check[new_board[i][j]] = [[i,j]]
          else:
            check[new_board[i][j]].append([i,j])
  if len(tiles)==1:
    down = 0
  else:
    if check[tiles[0]][0][0]==check[tiles[1]][0][0]:
      down = 0
    elif check[tiles[0]][0][1]==check[tiles[1]][0][1]:
      down = 1
  word = ''
  for i in tiles:
    word+=i
  return [check[tiles[0]][0][0],check[tiles[0]][0][1],down,word]
def play(row,col,down,tiles,board):
  valid,board = place_tiles(row,col,down,tiles,board)
  if down == 1: 
    word = ''
    for i in range(row,len(tiles)+row+2):
       word+=board[i][row]
    if not is_valid(word):
       score = -1
       return score
    else:
       score = 0
       for i in word:
         score+=get_value(i)
       if len(word)>=7:
         score+=50
       return score
  else: 
     word = ''
     j = col 
     while board[7][j]!='':
       word+= board[7][j]
       j+=1
       if j == 15:break
     if not is_valid(word):
       score = -1
       return score
     else:
       score = 0
       for i in word:
         score+=get_value(i)
       if len(word)>=7:
         score+=50
       return score
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00295: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_10.0
["[[], [['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', "
 "'', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], "
 "['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', "
 "'', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', "
 "'', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', "
 "'', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', "
 "'', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', "
 "'', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', "
 "'', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', "
 "'', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', "
 "'', '', '', '', '', '', '', '', '', '', ''], ['...(more)"]
test_get_all_words_20.0
["[[], [['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', "
 "'', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], "
 "['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', "
 "'', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', "
 "'', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', "
 "'', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', "
 "'', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', "
 "'', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', "
 "'', '', '', '', '', '', '', '', '', '', '', 'TRANSPORTATIONS'], ['', '', '', '', '', '', '', '', '', '', '', "
 "'', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', "
 "'', '', '', '', '', '', '', '', '', '', ''], ['...(more)"]
test_get_all_words_30.0
["[[], [['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', "
 "'', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], "
 "['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', "
 "'', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', "
 "'', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', "
 "'', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', 'ETERNALS', '', '', '', 'MUSKETEER'], ['', '', "
 "'', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', "
 "'', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', "
 "'', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', "
 "'', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', "
 "'', '', '', '', '', '', '', '', '', '', ''], ['...(more)"]
test_get_all_words_40.0
["[[], [['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', "
 "'', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], "
 "['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', "
 "'', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', "
 "'', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', "
 "'', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', "
 "'', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', "
 "'', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', "
 "'', '', '', '', '', '', '', 'CONNERS', 'UNWITS', 'VILDE', '', 'ZOO'], ['', '', '', '', '', '', '', '', '', '', '', "
 "'', '', '', 'FEWZ'], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', "
 "'', '', '', '', '', 'C', '', '', '', '', ''], [...(more)"]
test_get_all_words_50.0
["[[], [['', '', '', 'HELIOS', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', "
 "'', '', '', '', '', '', '', 'UNOBSERVANT'], ['', '', 'LIAM', 'NOOOOO', '', '', '', '', '', '', '', '', '', '', 'ONIGIRI'], "
 "['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', "
 "'', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', "
 "'', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', "
 "'', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', "
 "'', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', "
 "'', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', "
 "'', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', "
 "'', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', "
 "'', '', '', '', '', '', '', '', '', '', ''], ['...(more)"]
test_get_all_words_60.0
["[[], [['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', "
 "'', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], "
 "['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', "
 "'', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', "
 "'', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', "
 "'', '', '', '', '', ''], ['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', '', '', '', '', '', '', 'YUP'], ['', '', "
 "'', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', "
 "'', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', "
 "'', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', "
 "'', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', "
 "'', '', '', '', '', '', '', '', '', '', ''], ['...(more)"]
test_get_all_words_70.0
["[[], [['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', "
 "'', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], "
 "['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', '', "
 "'', '', '', '', '', '', 'RETAINS'], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', "
 "'', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', "
 "'', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', "
 "'', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', "
 "'', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', "
 "'', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', "
 "'', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', "
 "'', '', '', '', '', '', '', '', '', '', ''], ['...(more)"]
test_get_all_words_80.0
["[[], [['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', "
 "'', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], "
 "['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', "
 "'', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', "
 "'', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', "
 "'', '', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['ATT', 'EH', "
 "'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', '', '', '', '', 'RE', 'REI', ''], ['', '', '', '', '', '', '', '', '', '', "
 "'', '', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['RETAINS', 'SI', 'SIF', "
 "'', '', 'STAIRED', 'TI', '', '', '', '', '', '', '', 'URANITE'], ['', '', '', '', '', '', '', '', '', '', '', "
 "'', '', '', ''], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['', '', '', '', "
 "'', '', '', '', '', '', '', '', '', '', ''], ['...(more)"]
test_get_all_words_90.0
["[[], [['O', 'X', 'YAD', 'PAD', 'H', 'E', 'NAD', 'B', 'U', 'T', 'RA', 'Z', 'O', 'IN', 'E'], ['O', 'X', "
 "'Y', 'P', 'WASH', 'E', 'ING', 'BDIM', 'UDOD', 'TDOM', 'ADOM', 'ZDOM', 'DOM', 'NDOM', 'EDOM'], ['DOM', 'X', 'Y', 'P', 'H', 'E', "
 "'N', 'B', 'U', 'T', 'A', 'Z', 'DO', 'NM', 'EDORM'], ['DSO', 'X', 'YED', 'P', 'HED', 'E', 'N', 'B', 'JACU', 'LAT', "
 "'A', 'Z', 'O', 'IN', 'EG'], ['LO', 'XMI', 'Y', 'P', 'H', 'E', 'N', 'B', 'UMI', 'T', 'A', 'Z', 'MO', 'N', "
 "'E'], ['MO', 'X', 'YD', 'P', 'H', 'E', 'MON', 'B', 'U', 'ST', 'A', 'Z', 'OERS', 'N', 'E'], ['O', 'X', "
 "'Y', 'P', 'H', 'E', 'N', 'B', 'U', 'T', 'A', 'Z', 'OF', 'N', 'E'], ['O', 'X', 'Y', 'P', 'H', 'E', "
 "'N', 'B', 'U', 'T', 'A', 'ZM', 'OM', 'N', 'E'], ['O', 'X', 'Y', 'P', 'H', 'E', 'N', 'B', 'U', 'T', "
 "'A', 'Z', 'O', 'CIFYIN', 'EG'], ['O', 'X', 'Y', 'P', 'H', 'E', 'N', 'B', 'U', 'T', 'A', 'Z', 'O', 'N', "
 "'E'], ['O', 'X', 'Y', 'P', 'H', 'IE', 'N', 'B', 'U', 'T', 'A', 'Z', 'O', 'N', 'E'], ['O', 'X', "
 "'YR', 'P', 'H', 'RE', 'N', 'B', 'QU', 'T', 'A', 'Z', 'O', 'N', 'LIFIED'], ['OUM', 'XI', 'Y', 'P', 'H', 'E', "
 "'N', 'B', 'U', 'T', 'A', 'ZOOT'],
 'O', 'N',...(more)"[]]]
test_get_all_words_100.0
["[[], [['', '', '', '', '', 'T', '', '', '', '', '', 'F', '', '', ''], ['', '', '', '', '', 'T', "
 "'', '', 'AA', 'ARK', 'CALP', 'F', '', '', ''], ['', '', '', '', '', 'OOT', '', '', '', '', '', 'F', '', '', "
 "''], ['', '', '', '', '', 'T', '', 'UGIO', 'GI', 'GYVE', 'HOCK', 'IF', '', '', ''], ['', '', '', '', '', 'INT', "
 "'', '', '', '', '', 'F', '', '', ''], ['', '', '', '', 'ERNED', 'IT', '', '', '', '', '', 'F', 'A', 'JA', "
 "''], ['', '', '', '', '', 'T', '', '', '', '', '', 'F', '', '', ''], ['', '', 'JIVE', 'MUN', 'OXIDS', 'SIT', "
 "'', '', '', '', '', 'F', '', '', ''], ['', '', '', '', 'HING', 'T', '', '', '', '', '', 'F', '', '', "
 "''], ['', '', '', '', 'O', 'T', '', '', '', '', '', 'F', '', '', ''], ['', '', '', '', 'O', 'T', "
 "'', '', '', '', '', 'F', '', '', ''], ['', '', '', '', '', 'RAT', '', '', '', '', '', 'F', '', '', "
 "''], ['', '', '', '', '', 'T', '', '', '', '', '', 'F', '', '', ''], ['', '', '', '', 'RIALED', 'T', "
 "'', '', '', '', '', 'F', '', 'UREENS', 'XU'], ['', '', '', '', '', 'T', '', '', '', '', '', 'F', '', '', "
 "''], ['', '', '', '', 'JOJUOLOOMJYOOI', 'R', '', 'O', ...(more)"]]]
test_get_play_10.0NameError("name 'row' is not defined")
[]
test_get_play_20.0NameError("name 'row' is not defined")
[]
test_get_play_30.0NameError("name 'row' is not defined")
[]
test_get_play_40.0NameError("name 'row' is not defined")
[]
test_get_play_50.0NameError("name 'row' is not defined")
[]
test_get_play_60.0NameError("name 'row' is not defined")
[]
test_get_play_70.0NameError("name 'row' is not defined")
[]
test_get_play_80.0NameError("name 'row' is not defined")
[]
test_get_play_90.0NameError("name 'row' is not defined")
[]
test_get_play_100.0NameError("name 'row' is not defined")
[]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_30.0
[-14]
test_play_40.0
[-14, -21]
test_play_50.0
[-160, -172]
test_play_60.0
[-160, -1]
test_play_70.0
[-163, -14]
test_play_80.0
[-162]
test_play_90.0
[-11, -15, -124, -17, -185, -12]
test_play_100.0
[-19, -133, -136, -18, -12, -173, -165, -17, -174, -16]
test_play_110.0
[-167, -61, -128, -11, -13, -185, -11, -12, -17, -125, -17, -14, -21, -132, -12, -15, -16, -168, -16, -13, -10, -127, -128]
test_play_120.0
[-11]
test_play_130.0
[-19]
test_play_140.0
[-18, -120, -126, -1]
test_play_150.0
[-139]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 142, 'const': 82, 'code+const': 224}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid_words=[]
  invalid_words=[]
  for e in board:
    for e1 in e:
      if is_valid(e1)==True:
        valid_words.append(e)
      else:
        invalid_words.append(e)
  return [valid_words,invalid_words]
def get_play(board, new_board):
 return [row,col,down,tiles]
def play(row,col,down,tiles,board):
    return -1
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00296: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1170, 'const': 445, 'code+const': 1615}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    words = ["".join([board[r][c] for r, c in x]).upper() for x in get_words_pos(board)]
    words.sort()
    valid, invalid = [], []
    for w in words:
        if is_valid(w):
            valid.append(w)
        else:
            invalid.append(w)
    return [valid, invalid]
def get_board_changes(old, new):
    changes = []
    for row in range(15):
        for col in range(15):
            if old[row][col] != new[row][col]:
                changes.append((row, col))
    return changes
def get_play(board, new_board):
    changes = get_board_changes(board, new_board)
    tiles = "".join([new_board[r][c] for r, c in changes]).upper()
    if all([x[0] == changes[0][0] for x in changes]):  
        return [changes[0][0], changes[0][1], 0, tiles]
    else:
        return [changes[0][0], changes[0][1], 1, tiles]
def get_words_pos(board):
    pos = []
    for col in range(15):
        row = 0
        while row < 15:
            tmp = []
            if board[row][col] == "":
                row += 1
                continue
            while row < 15 and board[row][col] != "":
                tmp.append((row, col))
                row += 1
            if len(tmp) >= 2:
                pos.append(tmp)
    for row in range(15):
        col = 0
        while col < 15:
            tmp = []
            if board[row][col] == "":
                col += 1
                continue
            while col < 15 and board[row][col] != "":
                tmp.append((row, col))
                col += 1
            if len(tmp) >= 2:
                pos.append(tmp)
    return pos
def play(row,col,down,tiles,board):
    v, new_board = place_tiles(row, col, down, tiles, board)
    if not v:
        return -1
    _, invalid_new_words = get_all_words(new_board)
    if len(invalid_new_words):
        return -1
    pos = [set(x) for x in get_words_pos(new_board)]
    tiles_pos = set(get_board_changes(board, new_board))
    score = 0
    for p in pos:
        if len(p & tiles_pos):
            score += sum([get_value(new_board[r][c]) for r, c in p])
    if len(tiles) >= 7:
        score += 50
    return score
def best_play(tiles,board):
    scores = []
    for row in range(15):
        for col in range(15):
            for down in range(2):
                scores.append([play(row, col, down, tiles, board), row, col, down])
    scores.sort(key=lambda x: (-x[0], x[1], x[2], x[3]))
    if scores[0][0] != -1:
        return scores[0]
    return [-1, -1, -1, -1]

00297: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_60.0
[[6, 7, 01, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 798, 'const': 324, 'code+const': 1122}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  b0 = []
  b1 = []
  o=0
  while o<=1:
    for i in range(15):
      a=""
      for e in range(15):
        if o == 1:
          i,e = e,i
        c = board[i][e].upper()
        if c!="":
          a+=c
        else:
          if len(a)>=2:
            if is_valid(a):
              b0.append(a)
            else:
              b1.append(a)
          a=""
        if o == 1:
          i = e
      if len(a)>=2:
        if is_valid(a):
          b0.append(a)
        else:
          b1.append(a)
    o+=1
  return [sorted(b0),sorted(b1)]
def get_play(board, new_board):
  a = [0,0,0,""]
  for i in range(15):
    for e in range(15):
      b = new_board[i][e]
      if board[i][e] != b:
        if a[3]=="":
          a[0]=i
          a[1]=e
        if len(a[3])==2:
          if a[0]!=i:
            a[2]=1
        a[3]+=b
  return a
def play(row,col,down,tiles,board):
  tiles = tiles.upper()
  v,newb=place_tiles(row,col,down,tiles,board)
  g = 0
  c1,c2=get_all_words(board)
  d1,d2=get_all_words(newb)
  if not v:
    return -1
  if d2 != []:
    return -1
  for i in d1:
    if i not in c1:
      for e in i:
        g += get_value(e)
    else:
      c1.remove(i)
  if len(tiles) >=7:
    g+=50
  return g
def best_play(tiles,board):
  a = []
  for i in range(15):
    for e in range(15):
      b = play(i,e,0,tiles,board)
      if b != -1:
        a.append([-b,i,e,0])
      b = play(i,e,1,tiles,board)
      if b != -1:
        a.append([-b,i,e,1])
  if a == []:
    return [-1,-1,-1,-1]
  else:
    a.sort()
    return [-a[0][0]]+a[0][1:]

00298: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 932, 'const': 719, 'code+const': 1651}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  a=[]
  b=[]
  for i in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]:
    s=''
    for w in board[i]+['']:
      s+=w
      if w=='':
        if len(s)>1:
          if is_valid(s): a.append(s)
          else: b.append(s)
        s=''
    for i2 in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]:
      w=board[i2][i]
      s+=w
      if w=='' or i2==14:
        if len(s)>1:
          if is_valid(s): a.append(s)
          else: b.append(s)
        s=''
  return [sorted(a),sorted(b)]
def get_all_wordspos(board):
  a=[]
  b=[]
  for i in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]:
    s=''
    for i2 in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]:
      w=board[i][i2]
      s+=w
      if w=='' or i2==14:
        if len(s)>1:
          if is_valid(s): a.append([s,0,i,i2])
          else: b.append([s,0,i,i2])
        s=''
    for i2 in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]:
      w=board[i2][i]
      s+=w
      if w=='' or i2==14:
        if len(s)>1:
          if is_valid(s): a.append([s,1,i2,i])
          else: b.append([s,1,i2,i])
        s=''
  return [sorted(a),sorted(b)]
def get_play(board, new_board):
  d=[]
  for i in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]:
    for e in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]:
      if board[i][e]!=new_board[i][e]:
        if d==[]: d=[i,e,1,'']
        d2=i
        d[3]+=new_board[i][e]
  if d[0]==d2: d[2]=0
  return d
def play(row,col,down,tiles,board):
  a,b=place_tiles(row,col,down,tiles,board)
  c=get_all_wordspos(board)[0]
  d,d1=get_all_wordspos(b)
  if d1!=[] or not a: return -1
  for i in c:
   if i in d: 
     d.remove(i)
  a=0
  for i in d:
    for e in i[0]:
      a+=get_value(e)
  if len(tiles)>6: a+=50
  return a
def best_play(tiles,board):
  f=[-1,-1,-1,-1]
  for i in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]:
    for e in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]:
      for w in [0,1]:
        s=play(i,e,w,tiles,board)
        if s>f[0]: f=[s,i,e,w]
  return f

00299: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 1928]
test_play_120.0
[411]
test_play_130.0
[59]
test_play_140.0
[8, 1620, 1726, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1170, 'const': 444, 'code+const': 1614}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  l = len(board)
  out = [[],[]]
  all_words = []
  for row in board:
    all_words += strip_words(row)
  for col in range(l):
    all_words += (strip_words([row[col] for row in board]))
  for word in all_words:
    if is_valid(word): out[0].append(word)
    else: out[1].append(word)
  return [sorted(out[0]),sorted(out[1])]
def strip_words(x):
  i = j = -1
  out = []
  while i < len(x) or j < len(x):
    i += 1
    if i != '':
        j = i
        while True:
          if j == len(x) or x[j] == '': 
            out.append(x[i:j])
            break
          else: j += 1
        i = j
    else: j = i
  return list(map(''.join,(filter(lambda e: len(e) > 1, out))))
def get_play(board, new_board):
  tiles = ''
  tilesr = ''
  tilesc = ''
  for i in range(len(board)):
    trow = ''
    for j in range(len(board)):
      if board[i][j] != new_board[i][j]:
        if tilesr == '':
          row = i
          col = j
        trow += new_board[i][j]
      if len(trow) > len(tilesr):
        tilesr = trow
  for i in range(len(board)):
    tcol = ''
    for j in range(len(board)):
      if board[j][i] != new_board[j][i]:
        if tilesc == '':
          row = j
          col = i
        tcol += new_board[j][i]
      if len(tcol) > len(tilesc):
        tilesc = tcol
  if len(tilesr) >= len(tilesc):
    tiles = tilesr
    down = 0
  else:
    tiles = tilesc
    down = 1 
  return [row,col,down,tiles]
def play(row,col,down,tiles,board):
  valid, new_board = place_tiles(row,col,down,tiles,board)
  if valid:
    new_words = get_all_words(new_board)
    if len(new_words[1]) != 0: return -1
    else:
      score = 0
      old_words = get_all_words(board)
      c_old = {x:old_words[0].count(x) for x in set(old_words[0])}
      c_new = {x:new_words[0].count(x) for x in set(new_words[0])}
      for c in c_new:
        if c not in c_old: score += sum(map(get_value,c))
        else: score += (sum(map(get_value,c)) * (c_new[c] - c_old[c]))
      if len(tiles) >= 7: score += 50
      return score
  return -1
def best_play(tiles,board):
  out = []
  for i in range(15):
    for j in range(15):
      for k in range(2):
        score = play(i,j,k,tiles,board)
        if score != -1:
          out.append([score,i,j,k])
  if len(out) == 0: return [-1,-1,-1,-1]
  return sorted(out, key=lambda s: (-s[0],s[1],s[2],s[3]))[0]

00300: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 1456, 'const': 361, 'code+const': 1817}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    w = []
    for k in board:
      wrd = ''
      for j in k:
        if j!='':
          wrd+=j
        else:
          if len(wrd)>1:
            w.append(wrd)
          wrd = ''
      if len(wrd)>1:
        w.append(wrd)
    for i in range(len(board)):
      wrd = ''
      for k in board:
        if k[i]!='':
          wrd+=k[i]
        else:
          if len(wrd)>1: 
            w.append(wrd)
          wrd = ''
      if len(wrd)>1: 
        w.append(wrd)
    w.sort()
    valid_words = [] ; invalid_words = []
    for k in w:
      t = is_valid(k)
      if t == True:
        valid_words.append(k)
      else:
        invalid_words.append(k)
    return [valid_words,invalid_words]
def get_play(board, new_board):
    dic1 = {} ; dic2 = {}
    for i in range(len(board)):
      for j in range(len(board)):
        if board[i][j]!='':
          dic1[str(i)+','+str(j)] = board[i][j]
    for i in range(len(new_board)):
      for j in range(len(new_board)):
        if new_board[i][j]!='':
          dic2[str(i)+','+str(j)] = new_board[i][j]
    wrd = '' ; w = []
    for k in dic2:
        if k not in dic1:
          wrd += dic2[k]
          w.append(k)
    l = []
    for k in w:
      a,b = k.split(',')
      l.append([int(a),int(b)])
    l.sort()
    t = l[0]
    if len(l)>1:
      if l[0][0]==l[1][0]:
        down = 0
      else:
        down = 1
    else:
      down = 0
    return [t[0],t[-1],down,wrd]
def play(row,col,down,tiles,board):
    l1 = get_all_words(board)
    s = place_tiles(row,col,down,tiles,board)
    if s[0]==False:
      return -1
    l2 = get_all_words(s[1])
    l2 = l2[0] ; l1 = l1[0]
    for k in l1:
      if k in l2:
        l2.remove(k)
    if l2 == []:
      return -1
    board = s[1]
    score = 0
    for k in l2:
      for j in k:
        score += get_value(j)
    if len(tiles)>=7:
      score += 50
    return score
def best_play(tiles,board):
    l = [] ; s = [] ; t = ''
    for k in tiles:
      t+=k
    for i in range(len(board)):
      for j in range(len(board)):
        score = play(i,j,0,tiles,board)
        if score!=-1:
          x = place_tiles(i,j,0,tiles,board)
          y = get_all_words(x[1])
          z = True
          for k in y[0]:
            z = True
            for h in t:
              if h not in k.lower():
                z = False
                break
            if z == True:
              break
          if z==True:
              l.append([score,i,j,0])
              s.append(score)
    for i in range(len(board)):
      for j in range(len(board)):
        score = play(i,j,1,tiles,board)
        if score!=-1:
          x = place_tiles(i,j,1,tiles,board)
          y = get_all_words(x[1])
          z = True
          for k in y[0]:
            z = True
            for h in t:
              if h not in k.lower():
                z = False
                break
            if z == True:
              break
          if z==True:
              l.append([score,i,j,1])
              s.append(score)
    if l==[]:
      return [-1,-1,-1,-1]
    m = max(s) ; a = []
    for k in l:
      if k[0]==m:
        a.append(k)
    a.sort()
    return a[0]

00301: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 816, 'const': 348, 'code+const': 1164}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    word = ''
    for i in range(15):
      word += ' '
      for j in range(15):
        if board[i][j] != '':
          word += board[i][j]
        else:
          word += ' '
    for j in range(15):
      word += ' '
      for i in range(15):
        if board[i][j] != '':
          word += board[i][j]
        else:
          word += ' '
    words = [[], []]
    word = word.strip().split()
    for word in word:
      if len(word) >= 2:
        if is_valid(word):
          words[0].append(word)
        else:
          words[1].append(word)
    words[0].sort()
    words[1].sort()
    return words
def get_play(board, new_board):
    tiles = ''
    coordinate = []
    for i in range(15):
      for j in range(15):
        if board[i][j] != new_board[i][j]:
          tiles += new_board[i][j]
          coordinate.append([j, i])
    col, row = coordinate[0]
    col1, row1 = coordinate[-1]
    down = 0
    if row < row1:
      down = 1
    return [row,col,down,tiles]
def play(row,col,down,tiles,board):
    valid, new_board = place_tiles(row,col,down,tiles,board)
    word1, word1_worng = get_all_words(board)
    word2, word2_wrong = get_all_words(new_board)
    if (valid == False) or len(word2_wrong) > 0:
      return -1
    score = 0
    for word in word2:
      if word not in word1:
        for each_word in word:
          score += get_value(each_word)
      else:
        word1.remove(word)
    if len(tiles) >= 7:
      score += 50
    return score
def best_play(tiles,board):
  every_play = []
  for row in range(15):
    for col in range(15):
      for down in range(2):
        score = play(row,col,down,tiles,board)
        if score != -1:
          every_play.append([score,row,col,down])
  every_play.sort()
  if len(every_play) == 0:
    return [-1,-1,-1,-1]
  highest_score = every_play[-1][0]
  for each_play in every_play:
      if each_play[0] == highest_score:
        return each_play

00302: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1822, 'const': 442, 'code+const': 2264}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    board2=[]
    for i in range(15):
        board2.append([])
    for i in range(15):
        for j in range(15):
            board2[i].append(board[j][i])
    wordlist=[]
    wordlist2=[]
    word=""
    word2=''
    for i in range(15):
        for j in range(14):
            ok=False
            ok2=False
            if board[i][j] !="":
                ok= not ok
            if ok :
                word+=board[i][j]
            if ok and board[i][j+1]=="" and len(word)==1:
                word=""
                ok = False
            if board[i][j+1]=="" and ok and len(word)>1:
                wordlist.append(word)
                word=""
                ok=False
            if j+1==14 and 1<=len(word):
                word+=board[i][j+1]
                if len(word)>1:
                    wordlist.append(word)
            if board2[i][j] !="":
                ok2= not ok2
            if ok2 :
                word2+=board2[i][j]
            if ok2 and board2[i][j+1]=="" and len(word2)==1:
                word2=""
                ok2 = False
            if board2[i][j+1]=="" and ok2 and len(word2)>1:
                wordlist2.append(word2)
                word2=""
                ok2=False
            if j+1==14 and 1<=len(word2):
                word2+=board2[i][j+1]
                if len(word2)>1:
                    wordlist2.append(word2)
        word=""
        word2=""
    awl=[]
    ans=[[],[]]
    for i in wordlist:
        awl.append(i)
    for i in wordlist2:
        awl.append(i)
    for i in awl:
        if is_valid(i):
            ans[0].append(i)
        else:
            ans[1].append(i)
    ans[0].sort()
    ans[1].sort()
    return ans
def get_play(board, new_board):
    new_boardy=[]
    boardy=[]
    for i in range(15):
        new_boardy.append([])
        boardy.append([])
    for i in range(15):
        for j in range(15):
            new_boardy[i].append(new_board[j][i])
            boardy[i].append(board[j][i])
    c=0
    cy=0
    for i in range(15):
        if new_board[i]==board[i]:
            c+=1
        else:
            dx=c
        if new_boardy[i]==boardy[i]:
            cy+=1
        else:
            dy=cy
    if c==14:
        p="0"
    else:
        p="1"
    ss=[]
    ans=''
    if p=="0":
        for i in range(15):
            if new_board[dx][i] != board[dx][i]:
                ans+= new_board[dx][i]
                ss.append(i)
    else:
        for i in range(15):
            if new_boardy[dy][i] != boardy[dy][i]:
                ans+= new_boardy[dy][i]
                ss.append(i)
    if p=="1":
        return [min(ss),dy,int(p),ans]
    else:
        return [dx,min(ss),int(p),ans]
def play(row,col,down,tiles,board):
    oboard= copy_board(board)
    new_board=place_tiles(row,col,down,tiles,board)[1]
    if tiles.upper() in get_all_words(new_board)[1]:
        return -1
    ow=get_all_words(oboard)[0]
    nw=get_all_words(new_board)[0]
    if len(get_all_words(new_board)[1]) !=0:
        return -1
    ans=[]
    for i in nw:
        if i not in ow:
            ans.append(i)
        if i in ow:
            ow.remove(i)
    pt=0
    ok= False
    if len(tiles)>=7:
        ok = True
    for i in ans:
        for j in i:
            pt+=get_value(j)
    if ok:
        pt+=50
    if len(ans) !=0:
        if pt>0:
            return pt
        else:
            return -1
    else:
        return -1
def best_play(tiles,board):
    maxpt=0
    maxpl=[]
    for i in range(15):
        for j in range(15):
            for k in range(2):
                if play(i,j,k,tiles,board)== maxpt:
                    maxpl.append([play(i,j,k,tiles,board),-i,-j,-k])
                if play(i,j,k,tiles,board)> maxpt:
                    maxpt=play(i,j,k,tiles,board)
                    maxpl=[[play(i,j,k,tiles,board),-i,-j,-k]]
    maxpl.sort()
    if len(maxpl)==0:
        return [-1,-1,-1,-1]
    if len(maxpl) !=0:
        ans=maxpl[-1]
        ans1=[ans[0],-ans[1],-ans[2],-ans[3]]
    if maxpt==0:
        return [-1,-1,-1,-1]
    else:
        return ans1

00303: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0NameError("name 'play' is not defined")
[]
test_play_20.0NameError("name 'play' is not defined")
[]
test_play_30.0NameError("name 'play' is not defined")
[]
test_play_40.0NameError("name 'play' is not defined")
[]
test_play_50.0NameError("name 'play' is not defined")
[]
test_play_60.0NameError("name 'play' is not defined")
[]
test_play_70.0NameError("name 'play' is not defined")
[]
test_play_80.0NameError("name 'play' is not defined")
[]
test_play_90.0NameError("name 'play' is not defined")
[]
test_play_100.0NameError("name 'play' is not defined")
[]
test_play_110.0NameError("name 'play' is not defined")
[]
test_play_120.0NameError("name 'play' is not defined")
[]
test_play_130.0NameError("name 'play' is not defined")
[]
test_play_140.0NameError("name 'play' is not defined")
[]
test_play_150.0NameError("name 'play' is not defined")
[]
test_best_play_10.0NameError("name 'best_play' is not defined")
[]
test_best_play_20.0NameError("name 'best_play' is not defined")
[]
test_best_play_30.0NameError("name 'best_play' is not defined")
[]
test_best_play_40.0NameError("name 'best_play' is not defined")
[]
test_best_play_50.0NameError("name 'best_play' is not defined")
[]
bytecount: {'code': 814, 'const': 186, 'code+const': 1000}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  temp=''
  allwords=[[],[]]
  for i in range(15):
    for j in range(15):
      if(board[i][j]!=''): temp+=board[i][j]
      if(board[i][j-1]!='' and board[i][j]=='') or (j==14 and board[i][j]!=''):
        if(len(temp)!=1):
          temp = temp.upper()
          if(is_valid(temp)): allwords[0] +=[temp]
          elif temp!='': allwords[1] +=[temp]
        temp=''
    for j in range(15):
      if(board[j][i]!=''): temp+=board[j][i]
      if (board[j-1][i]!='' and board[j][i]=='') or (j==14 and board[j][i]!=''):
        if(len(temp)!=1):
          temp = temp.upper()
          if(is_valid(temp)): allwords[0] +=[temp]
          elif temp!='': allwords[1] +=[temp]
        temp='' 
  allwords[0].sort()
  allwords[1].sort()
  return allwords
def get_play(board, new_board):
    i=0
    tiles=''
    while(i<15):
      j=0
      while(j<15):
        if board[i][j] != new_board[i][j]: 
          down = 0
          row=i
          col=j
          tiles+=new_board[i][j]
          while(j<14 and new_board[i][j+1]!=''):
            j+=1
            if board[i][j] != new_board[i][j]: 
              tiles+=new_board[i][j]
          if len(tiles)==1: 
            down=1
            i=row
            j=col
            while(i<14 and new_board[i+1][j]!=''):
              i+=1
              if board[i][j] != new_board[i][j]: 
                tiles+=new_board[i][j]
          if len(tiles)==1: down = 0
          break
        j+=1
      i+=1
    return [row,col,down,tiles]

00304: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_140.0
[8, 20, 26, 25-1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[68, 0, 7, 1], [87, 12, 60, 10], [10879, 41, 512, 1], [7259, 81, 80, 10], [171, 112, 93, 10], [7265, 73, 4, 1],
 [3019, 16, 81, 10], [197, 14, 92, 1], [191, 120, 21, 0], [22, 3, 108, 1]]
test_best_play_40.0
[[71, 0, 7, 1], [763, 210, 80, 10], [7863, 1, 91, 10], [149, 17, 63, 1], [2019, 813, 10, 10], [772, 214, 114, 10],
 [2517, 26, 126, 10], [258, 13, 73, 0], [218, 34, 130, 10], [136, 45, 14, 10]]
test_best_play_50.0
[[83, 0, 7, 1], [8062, 513, 80, 10], [7258, 1, 98, 10], [210, 80, 61, 10], [7468, 0, 101, 1], [1824, 126, 48, 01],
 [178, 18, 69, 1], [2310, 31, 52, 1], [321, 45, 43, 1], [1927, 14, 114, 1]]
bytecount: {'code': 2402, 'const': 664, 'code+const': 3066}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    r,c,r2,c2 = 0,0,0,0 
    valids = []
    invalids = []
    while r <= 14 and c <= 14:
      if board[r][c] != '':
        strin = ''
        while c <= 14 and r <= 14:
          if board[r][c] == '':
            break
          strin += board[r][c]
          c += 1
        c -= 1
        if len(strin) > 1:
         if is_valid(strin):
          valids.append(strin)
         else:
          invalids.append(strin)
      if c == 14 and r < 14  :
        c = 0
        r += 1
      else:
        c+= 1
    r,c = 0,0
    while r <= 14 and c <= 14:
      if board[r][c] != '':
        strin = ''
        while  c <= 14 and r <= 14 :
          if board[r][c] == '':
            break
          strin += board[r][c]
          r += 1
        r -= 1
        if len(strin) > 1:
         if is_valid(strin):
          valids.append(strin)
         else:
          invalids.append(strin)
      if r == 14 and c < 14  :
        r = 0
        c += 1
      else:
        r+= 1
    return [sorted(valids),sorted(invalids)]
def get_play(board, new_board):
    r,c = 0,0
    down = 0
    while r <= 14 and c <= 14:
      if board[r][c] != new_board[r][c]:
        startr,startc = r,c
        strin = ''
        while startc <= 14:
          if new_board[startr][startc] != board[startr][startc]:
            strin += new_board[startr][startc]
          startc += 1
        if len(strin) == 1:
          startc = c
          strin = ''
          while startr <= 14:
            if new_board[startr][startc] != board[startr][startc]:
              strin += new_board[startr][startc]
            startr += 1
          if len(strin) > 1:
            down = 1
        break
      if c == 14 and r < 14  :
        c = 0
        r += 1
      else:
        c+= 1
    return [r,c,down,strin]
def play(row,col,down,tiles,board):
    res = place_tiles(row,col,down,tiles,board)
    new_board = res[1]
    all_newt = []
    ch_all = False
    start = False
    if board[7][7] == '':
      start = True
    if res[0]:
      score = 0
      if down:
        long_st = ''
        sr = row-1
        while sr >= 0 :
          if new_board[sr][col] == '':
            break
          long_st += new_board[sr][col]
          sr -= 1
        er,ec,sc = row,col,col
        long_st = long_st[::-1]
        while er <= 14 :
          sc,ec = col-1,col
          if new_board[er][ec] == '':
            break
          long_st += new_board[er][ec]
          if new_board[er][ec] == board[er][ec]:
            ch_all = True
          if new_board[er][ec] != board[er][ec]:
            fstring,sstring,cstring = '','',''
            while sc >= 0:
              if new_board[er][sc] == '':
                break
              fstring += new_board[er][sc]
              sc -= 1
            while ec <= 14:
              if new_board[er][ec] == '':
                break
              sstring += new_board[er][ec]
              ec += 1
            cstring = fstring[::-1] + sstring
            if len(cstring) > 1:
              if is_valid(cstring):
                all_newt.append(cstring)
          er += 1
        if len(long_st) > 1:
          if is_valid(long_st):
                c = True
                if len(tiles) >= 7 :
                  for i in tiles:
                    if i.upper() not in long_st:
                      c = False
                  if c :
                    score += 50
                all_newt.append(long_st)
      else:
        long_st = ''
        sc = col-1
        while sc >= 0 :
          if new_board[row][sc] == '':
            break
          long_st += new_board[row][sc]
          sc -= 1
        ec,er,sr = col,row,row
        long_st = long_st[::-1]
        while ec <= 14 :
          sr,er = row-1,row
          if new_board[er][ec] == '':
            break
          long_st += new_board[er][ec]
          if new_board[er][ec] == board[er][ec]:
            ch_all = True
          if new_board[er][ec] != board[er][ec]:
            fstring,sstring,cstring = '','',''
            while sr >= 0:
              if new_board[sr][ec] == '':
                break
              fstring += new_board[sr][ec]
              sr -= 1
            while er <= 14:
              if new_board[er][ec] == '':
                break
              sstring += new_board[er][ec]
              er += 1
            cstring = fstring[::-1] + sstring
            if len(cstring) > 1:
              if is_valid(cstring):
                all_newt.append(cstring)
          ec += 1
        if len(long_st) > 1:
          if is_valid(long_st):
                c = True
                if len(tiles) >= 7 :
                  for i in tiles:
                    if i.upper() not in long_st:
                      c = False
                  if c :
                    score += 50
                all_newt.append(long_st)
      if len(all_newt) == 0:
        return -1
      if len(all_newt) == 1 and not ch_all and all_newt[0] == tiles and not start:
        return -1
      for i in all_newt:
        for j in i:
          score += get_value(j)
      return score
    return -1
def best_play(tiles,board):
    start = True
    if board[7][7] != '':
      start = False
    if start:
      if is_valid(tiles):
        if len(tiles) <=8:
          score = play(8-len(tiles),7,1,tiles,board)
          return [score,8-len(tiles),7,1]
        elif len(tiles) <= 14:
          score = play(0,7,1,tiles,board)
          return [score,0,7,1]
        return [-1,-1,-1,-1]
      return [-1,-1,-1,-1]
    else:
      res = []
      r,c = 0,0
      down = 0
      score = 0
      use_r,use_c = 0,0
      while r<= 14 and c<=14:
        score = play(r,c,0,tiles,board)
        res.append((-score,r,c,0))
        score = play(r,c,1,tiles,board)
        res.append((-score,r,c,1))
        if c == 14 and r < 14  :
          c = 0
          r += 1
        else:
          c+= 1
      res.sort()
      return [-res[0][0],res[0][1],res[0][2],res[0][3]]

00305: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 2126, 'const': 369, 'code+const': 2495}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  listOfWords = [[],[]]
  validWords = []
  invalidWords = []
  word = ''
  for i in range(len(board)):
    if len(word) > 1:
      if is_valid(word):
        validWords += [word]
      else:
        invalidWords += [word]
    word = ''
    for j in range(len(board[0])):
      if len(board[i][j]) == 1:
        word += board[i][j]
      elif len(board[i][j]) == 0 and len(word) > 1:
        if is_valid(word):
          validWords += [word]
        else:
          invalidWords += [word]
        word = ''
      else:
        word = ''
  if len(word) > 1:
    if is_valid(word):
      validWords += [word]
    else:
      invalidWords += [word]
  word = ''
  for j in range(len(board[0])):
    if len(word) > 1:
      if is_valid(word):
        validWords += [word]
      else:
        invalidWords += [word]
    word = ''
    for i in range(len(board)):
      if len(board[i][j]) == 1:
        word += board[i][j]
      elif len(board[i][j]) == 0 and len(word) > 1:
        if is_valid(word):
          validWords += [word]
        else:
          invalidWords += [word]
        word = ''
      else:
        word = ''
  if len(word) > 1:
    if is_valid(word):
      validWords += [word]
    else:
      invalidWords += [word]
  validWords.sort()
  invalidWords.sort()
  listOfWords[0] = validWords
  listOfWords[1] = invalidWords
  return listOfWords
def get_play(board, new_board):
  tiles = ''
  listOfWords = []
  for i in range(len(board[0])):
    tiles = ''
    for j in range(len(board)):
      if new_board[j][i] != board[j][i]:
        if tiles == '':
          row = j
          col = i
        tiles += new_board[j][i]
    if tiles != '':
      listOfWords.append(tiles)
  if len(listOfWords) > 1:
    for j in range(len(board[0])):
      tiles = ''
      for i in range(len(board)):
        if new_board[j][i] != board[j][i]:
          if tiles == '':
            row = j
            col = i
          tiles += new_board[j][i]
      if tiles != '':
        down = 0
        return [row,col,down,tiles] 
  else:
    down = 1
    tiles = listOfWords[0]
    if len(tiles) == 1:
      down = 0
    return [row,col,down,tiles]
def play(row,col,down,tiles,board):
  if place_tiles(row,col,down,tiles,board)[0] == False:
    return -1
  newBoard = place_tiles(row,col,down,tiles,board)[1]
  totalScores = 0
  wordBoard = get_all_words_v2(board)[0]
  wordNewBoard = get_all_words_v2(newBoard)[0]
  invalidNewWord = get_all_words_v2(newBoard)[1]
  if invalidNewWord != []:
    return -1
  for e in wordNewBoard:
    if e not in wordBoard:
      for s in e[0]:
        totalScores += get_value(s)
    else:
      wordBoard.remove(e)
  if len(get_play(board, newBoard)[3]) >= 7:
    totalScores += 50
  return totalScores
def get_all_words_v2(board):
  listOfWords = [[],[]]
  validWords = []
  invalidWords = []
  word = ''
  for i in range(len(board)):
    if len(word) > 1:
      if is_valid(word):
        validWords += [[word,row,col,0]]
      else:
        invalidWords += [word]
    word = ''
    for j in range(len(board[0])):
      if len(board[i][j]) == 1:
        if len(word) == 0:
          row = j;col = i
        word += board[i][j]
      elif len(board[i][j]) == 0 and len(word) > 1:
        if is_valid(word):
          validWords += [[word,row,col,0]]
        else:
          invalidWords += [word]
        word = ''
      else:
        word = ''
  if len(word) > 1:
    if is_valid(word):
      validWords += [[word,row,col,0]]
    else:
      invalidWords += [word]
  word = ''
  for j in range(len(board[0])):
    if len(word) > 1:
      if is_valid(word):
        validWords += [[word,row,col,1]]
      else:
        invalidWords += [word]
    word = ''
    for i in range(len(board)):
      if len(board[i][j]) == 1:
        if len(word) == 0:
          row = i;col = j
        word += board[i][j]
      elif len(board[i][j]) == 0 and len(word) > 1:
        if is_valid(word):
          validWords += [[word,row,col,1]]
        else:
          invalidWords += [word]
        word = ''
      else:
        word = ''
  if len(word) > 1:
    if is_valid(word):
      validWords += [[word,row,col,1]]
    else:
      invalidWords += [word]
  validWords.sort()
  invalidWords.sort()
  listOfWords[0] = validWords
  listOfWords[1] = invalidWords
  return listOfWords
def best_play(tiles,board):
  listOfScore = []
  for i in range(len(board)):
    for j in range(len(board[0])):
      if play(i,j,0,tiles,board) != -1:
        listOfScore += [[i,j,0,play(i,j,0,tiles,board)]]
      if play(i,j,1,tiles,board) != -1:
        listOfScore += [[i,j,1,play(i,j,1,tiles,board)]]
  if len(listOfScore) == 0:
    return [-1,-1,-1,-1]
  bestScore = -1
  for l in listOfScore:
    if l[3] > bestScore:
      bestScore = l[3]
  listOfBestScore = []
  for l in listOfScore:
    if l[3] == bestScore:
      listOfBestScore += [l]
  listOfBestScore.sort()
  best = listOfBestScore[0]
  bestPlay = [best[3],best[0],best[1],best[2]]
  return bestPlay

00306: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_40.0
[[['CONNERS', 'UNWITS', 'VILDE', 'CONNERS', 'ZOO'], ['FEWZ']]]
test_get_all_words_50.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'LIAM', 'ONIGIRI']]]
test_get_all_words_60.0
[[['QINFY', 'INFLATER', 'FMONEY', 'YANE', 'UTPE', 'PEQIN', 'YUPT', 'INFLYATER', 'MONEYUP'], []]]
test_get_all_words_70.0
[[['MANGIERT', 'RETAINS', 'MEGI', 'ATIN', 'MANAGIER', 'GIME', 'INA', 'RETAINS'], []]]
test_get_all_words_80.0
[[['SIFATT', 'ITERANTH', 'RFETAINSH', 'UFERANITE', 'STAIRED', 'FEH', 'SIT', 'ITERANT', 'FERNAES', 'REI', 'ATTREI',
   'NARETAINS', 'TSI', 'SIF',
   'STAIRED', 'TI', 'URANITEH'],
  []]]
test_get_all_words_90.0
[[['OXYPHEAD', 'AD', 'AD', 'BRAINBUTWAZOSHINEG', 'PDIERM', 'DOD', 'DORM', 'DOM', 'ADOM', 'LDOM', 'DIOM', 'DSOM', 'DOFM',
   'DOHM', 'DORMI', 'DSO', 'ED', 'ED',
  'EJACULATING', 'DLOD', 'MI', 'MI', 'MOD', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXIYPHENBUTAZONE', 'YPIER', 'PREQUALIFIED', 'NOUM', 'BRAXINWASHING',
   'UMYE',
   'ZOOT', 'OM', 'EJACULATING'],
  []]]
test_get_all_words_100.0
[[['TRATA', 'GIARK', 'JCALP', 'XUFOOT', 'FUGINTERNEDO', 'SITHGING', 'FOOTGYVE', 'HOCALPK', 'ARKIF', 'INTUEREENSED', 'ITRIALED',
   'TOJA',
   'OXJIDSVE', 'MUN', 'OXIFDS', 'SITHINGYVE', 'HTOCK', 'FUGITO', 'ITRAT', 'JTRIVALED', 'AATUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 2072, 'const': 608, 'code+const': 2680}
check_import({'allowable': ['math']}): none
def collect_all_words(letters, valid_words, invalid_words):
    mod_letters = list(letters)
    for i in range(len(mod_letters)):
        if mod_letters[i] == '':
            mod_letters[i] = ' '
    text = ''.join(mod_letters)
    words = text.split()
    for word in words:
        if len(word) >= 2:
            if is_valid(word):
                if word not in valid_words:
                    valid_words.append(word)
            else:
                if word not in invalid_words:
                    invalid_words.append(word)
def get_letters_at_col(board, col):
    letters = []
    nrows = len(board)
    for i in range(nrows):
        letters.append(board[i][col])
    return letters
def get_horizontal_word(board, row, col):
    ncols = len(board[0])
    letters = []
    letters.append(board[row][col])
    j = col-1
    while j >= 0:
        letter = board[row][j]
        if letter != '':
            letters.insert(0, letter)
        else:
            break
        j -= 1
    j = col+1
    while j < ncols:
        letter = board[row][j]
        if letter != '':
            letters.append(letter)
        else:
            break
        j += 1
    return ''.join(letters)
def get_vertical_word(board, row, col):
    nrows = len(board)
    letters = []
    letters.append(board[row][col])
    i = row-1
    while i >= 0:
        letter = board[i][col]
        if letter != '':
            letters.insert(0, letter)
        else:
            break
        i -= 1
    i = row+1
    while i < nrows:
        letter = board[i][col]
        if letter != '':
            letters.append(letter)
        else:
            break
        i += 1
    return ''.join(letters)
def get_score_word(word):
    if is_valid(word):
        score = 0
        for letter in word:
            score += get_value(letter)
        return score
    else:
        return -1
def get_score_words(words):
    score = 0
    for word in words:
        word_score = get_score_word(word)
        if word_score != -1:
            score += word_score
        else:
            return -1
    return score
def get_new_words_after_hplacing(board, new_board, row, col):
    ncols = len(board[0])
    nrows = len(board)
    old_row = board[row]
    new_row = new_board[row]
    diff_letters = ['']*ncols
    words = []
    for j in range(ncols):
        if old_row[j] != new_row[j]:
            diff_letters[j] = new_row[j]
    horizontal_word = get_horizontal_word(new_board, row, col)
    if len(horizontal_word) >= 2:
        words.append(horizontal_word)
    for j in range(ncols):
        letter = diff_letters[j]
        if letter != '':
            vertical_word = get_vertical_word(new_board, row, j)
            if len(vertical_word) >= 2:
                words.append(vertical_word)
    return words
def get_new_words_after_vplacing(board, new_board, row, col):
    ncols = len(board[0])
    nrows = len(board)
    old_col = get_letters_at_col(board, col)
    new_col = get_letters_at_col(new_board, col)
    diff_letters = ['']*ncols
    words = []
    for i in range(nrows):
        if old_col[i] != new_col[i]:
            diff_letters[i] = new_col[i]
    vertical_word = get_vertical_word(new_board, row, col)
    if len(vertical_word) >= 2:
        words.append(vertical_word)
    for i in range(nrows):
        letter = diff_letters[i]
        if letter != '':
            horizontal_word = get_horizontal_word(new_board, i, col)
            if len(horizontal_word) >= 2:
                words.append(horizontal_word)
    return words
def get_all_words(board):
    valid_words = []
    invalid_words = []
    nrow = len(board)
    ncol = len(board[0])
    for i in range(nrow):
        letters = board[i]
        collect_all_words(letters, valid_words, invalid_words)
    for j in range(ncol):
        letters = []
        for i in range(nrow):
            letters.append(board[i][j])
        collect_all_words(letters, valid_words, invalid_words)
    return [valid_words, invalid_words]
def get_play(board, new_board):
    nrows = len(board)
    ncols = len(board[0])
    diff_row_indexes = []
    diff_col_indexes = []
    for i in range(nrows):
        old_row = board[i]
        new_row = new_board[i]
        if old_row != new_row:
            diff_row_indexes.append(i)
    for j in range(ncols):
        old_col = get_letters_at_col(board, j)
        new_col = get_letters_at_col(new_board, j)
        if old_col != new_col:
            diff_col_indexes.append(j)
    row = diff_row_indexes[0]
    col = diff_col_indexes[0]
    if len(diff_row_indexes) == 1 and len(diff_col_indexes) == 1:
        down = 0
        tiles = new_board[row][col]
    elif len(diff_col_indexes) == 1:
        down = 1
        tiles = []
        old_col = get_letters_at_col(board, col)
        new_col = get_letters_at_col(new_board, col)
        for i in range(len(old_col)):
            if new_col[i] != old_col[i]:
                tiles.append(new_col[i])
    else:
        down = 0
        tiles = []
        old_row = board[row]
        new_row = new_board[row]
        for i in range(len(new_row)):
            if new_row[i] != old_row[i]:
                tiles.append(new_row[i])
    tiles = ''.join(tiles)
    return [row, col, down, tiles]
def play(row, col, down, tiles, board):
    success, new_board = place_tiles(row, col, down, tiles, board)
    ncols = len(board[0])
    nrows = len(board)
    if success:
        words = []
        if down == 0:
            words = get_new_words_after_hplacing(board, new_board, row, col)
        elif down == 1:
            words = get_new_words_after_vplacing(board, new_board, row, col)
        score = get_score_words(words)
        if score != -1 and len(tiles) >= 7:
            score += 50
        return score
    return -1
def best_play(tiles, board):
    nrows = len(board)
    ncols = len(board[0])
    plays = []
    for i in range(nrows):
        for j in range(ncols):
            down = 0
            score = play(i, j, down, tiles, board)
            plays.append([-score, i, j, down])
            down = 1
            score = play(i, j, down, tiles, board)
            plays.append([-score, i, j, down])
    plays.sort()
    p = plays[0]
    score, row, col, down = p
    score = -score
    if score == -1:
        return [-1, -1, -1, -1]
    else:
        return [score, row, col, down]

00307: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0
[50-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_20.0
[[0-1, 5-1, 7-1, -1]]
test_best_play_30.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [645, 3, 4, 2, 01],
 [19, 86, 41, 0], [7, 64, 52, 01], [131, 0, 31, 0], [922, 103, 58, 01]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1266, 'const': 390, 'code+const': 1656}
check_import({'allowable': ['math']}): none
def get_word(board) :
    out = []    
    for r in board :
      if r != ['']*15 :
        m = ''
        for i in range(15) :
            if r[i] != '' :
                if i != 14 :
                    m += r[i] 
                elif i == 14 and len(m)>=1:
                    m += r[i]
                    out += [m]  
                    m = ''
            elif r[i] == '' and len(m)==1:
                    m = ''
            elif r[i] == '' and len(m)>=2:
                out += [m]
                m = ''
    return out
def get_all_words(board):
    hori = get_word(board)
    lvert = []
    for r in range(15):
      nr = []
      for c in range(15):
        nr += [board[c][r]]
      lvert += [nr]
    vert = get_word(lvert)
    All = hori+vert
    InD = []
    OuD = []
    for w in All :
      if is_valid(w) == True :
        InD += [w]
      else : 
        OuD += [w]
    show = [sorted(InD),sorted(OuD)]
    return show
def get_play(board, new_board):
    r = []
    c = []
    t = ''
    for i in range(15) :
      if board[i] != new_board[i] :
        r += [i]
        for j in range(15) :
          if board[i][j] != new_board[i][j] :
            c += [j]
            t += new_board[i][j]
    if len(r) > 1 :
      down = 1
    elif len(c) >1 :
      down = 0
    else :
      down = 0
    if r == [] and c == [] :
      out = [0,0,0,""]
    else :
      out = [r[0],c[0],down,t]
    return out
def play(row,col,down,tiles,board):
    old = get_all_words(board)[0]
    new_board = place_tiles(row,col,down,tiles,board)[1]
    new = get_all_words(new_board)[0]
    if len(old) > len(new) :
      return -1
    else :
      k = []
      for i in new :
        if i not in old :
          k += [i]
        else :
          old.remove(i)
    score = 0
    for w in k :
      for c in w :
        score += get_value(c)
    if len(tiles) >= 7 :
      score += 50
    return score
def best_play(tiles,board):
    tiles = tiles.upper()
    empty = make_board()
    if empty == board :
      if len(tiles) <= 7 :
        row = 8-len(tiles)
      else :
        row = 0
      score = play(row,7,1,tiles,board) 
      return [score,row,7,1]
    else :
      current = 0
      out = [-1,-1,-1,-1]
      save = []
      for down in range(0,2) :
        for row in range(0,15) :
          for col in range(0,15) :
            copy = board
            a = place_tiles(row,col,down,tiles,copy)[1]
            if len(get_all_words(a)[1]) == 0 :
              if len(get_all_words(a)[0]) > len(get_all_words(board)[0]) :
                for w in get_all_words(a)[0] :
                  if len(w) > len(tiles) :
                    if w[0] == tiles[0] or w[1] == tiles[0] :
                      score = play(row,col,down,tiles,board)
                      if score > current :
                        out = [score,row,col,down]
                        current = score
                  elif tiles == w :
                    score = play(row,col,down,tiles,board)
                    if score > current :
                      out = [score,row,col,down]
                      current = score     
      return out

00308: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[None-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1614, 'const': 254, 'code+const': 1868}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid_words,invalid_words = [],[]
  for e in board :
    word = ''
    for i in range (len(e)) :
      if i == 0 :
        if e[i] != '' and e[i+1] != '' :
          word += e[i]
      elif i == len(e)-1 :
        if e[i] != '' and e[i-1] != '' :
          word += e[i]
          if is_valid(word) :
            valid_words.append(word.upper())
            word = ''
          else :
            invalid_words.append(word.upper())
            word = ''
      else :
        if e[i-1] == '' and e[i] != '' and e[i+1] == '' :
          pass
        elif e[i] != '' and e[i+1] == '' :
          word += e[i]
          if is_valid(word) :
            valid_words.append(word.upper())
            word = ''
          else :
            invalid_words.append(word.upper())
            word = ''
        elif e[i] != '' :
          word += e[i]
        else : pass
  for i in range (len(board)) :
    word = ''
    for j in range (len(board)) :
      if j == 0 :
        if board[j][i] != '' and board[j+1][i] != '' :
          word += board[j][i]
      elif j == (len(board)-1) :
        if board[j][i] != '' and board[j-1][i] != '' :
          word += board[j][i]
          if is_valid(word) :
            valid_words.append(word.upper())
            word = ''
          else :
            invalid_words.append(word.upper())
            word = ''
      else :
        if board[j-1][i] == '' and board[j][i] != '' and board[j+1][i] == '' :
          pass
        elif board[j][i] != '' and board[j+1][i] == '' :
          word += board[j][i]
          if is_valid(word) :
            valid_words.append(word.upper())
            word = ''
          else :
            invalid_words.append(word.upper())
            word = ''
        elif board[j][i] != '' :
          word += board[j][i]
        else : 
          pass
  valid_words.sort()
  invalid_words.sort()
  return [valid_words,invalid_words]
def get_play(board, new_board):
  tiles = ''
  down = 1
  for i in range (len(board)) :
    for j in range(len(board)) :
      if board[i][j] != new_board[i][j] :
        row = i
        col = j
        for x in range(j+1,len(board[i])) :
          if board[i][x] != new_board[i][x] :
            down = 0
        for y in range(len(board)) :
          if down == 0 :
            if new_board[i][y] != board[i][y] :
              tiles += new_board[i][y]
          else :
            if new_board[y][j] != board[y][j] :
              tiles += new_board[y][j]
        if len(tiles) == 1 :
          down = 0
        return [row,col,down,tiles]
def play(row,col,down,tiles,board):
  score = 0
  valid,new_board = place_tiles(row,col,down,tiles,board)
  new_valid_words,new_invalid_words = get_all_words(new_board)
  valid_words,invalid_words = get_all_words(board)
  for e in valid_words :
    if e in new_valid_words :
      new_valid_words.remove(e)
  if len(new_invalid_words) == 0 :
    if len(new_valid_words) != 0 :
      for e in new_valid_words :
        for x in e :
          score += get_value(x)
      if len(tiles)>=7:
        score += 50
      return score
  else : return -1
def best_play(tiles,board):
  score = []
  for x in range(2) :
    for y in range(len(board)) :
      for z in range(len(board)) :
        if play(y,z,x,tiles,board) != -1 and place_tiles(y,z,x,tiles,board)[0] :
          if len(get_all_words(board)[1]) == 0 : 
            score.append([-play(y,z,x,tiles,board),y,z,x])
        else : pass
  if len(score) == 0 : 
    return [-1,-1,-1,-1]
  else :
    score.sort()
    for e in score :
      e[0] = -e[0]
    return score[0]

00309: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 896, 'const': 338, 'code+const': 1234}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    listt = [[],[]]
    box = ""
    xob = ""
    for i in range(15) :
      for j in range(15) :
        if board[i][j] != "" :
          box += board[i][j]
        if board[i][j] == "" or (j == 14 and box != "") :
          if is_valid(box) :
            listt[0].append(box)
          elif len(box) > 1 :
            listt[1].append(box)
          box = ""
        if board[j][i] != "" :
          xob += board[j][i]
        if board[j][i] == "" or (j == 14 and xob != "") :
          if is_valid(xob) :
            listt[0].append(xob)
          elif len(xob) > 1 :
            listt[1].append(xob)
          xob = ""
    listt[0].sort()
    listt[1].sort()
    return listt
def get_play(board, new_board):
    num = [0,0,0,""]
    for i in range(15):
      for j in range(15):
        if board[i][j] != new_board[i][j] :
          num[3] += new_board[i][j]
          if num[3] == new_board[i][j]  :
            num[0] = i
            num[1] = j
    if board[num[0]][num[1]+1:] == new_board[num[0]][num[1]+1:] :
      if len(num[3]) > 1 :
        num[2] = 1
    return num
def play(row,col,down,tiles,board):
    pla = place_tiles(row,col,down,tiles,board)
    if not pla[0] :
      return -1
    count = 0  
    gaw = get_all_words(pla[1])
    if gaw[1] == [] :
      for i in get_all_words(board)[0] :
        for n in gaw[0] :
          if i == n : 
            gaw[0].remove(i)
            break
      for i in gaw[0] :
        for n in i :
          count += get_value(n)
      if len(tiles) >= 7 :
        count += 50
      return count      
    else :
      return -1
def best_play(tiles,board):
    score = 0
    okie = [-1,-1,-1,-1]
    for i in range(15) :
      for j in range(15) :
        for n in range(2) :
          sleep = play(i,j,n,tiles,board)
          if sleep > score :
            okie = [sleep,i,j,n]
            score = sleep
    return okie

00310: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 862, 'const': 494, 'code+const': 1356}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    words = ['']
    for d in ['row', 'col']:
      for i in range(len(board)):
        for ichar in range(len(board[0])):
          char =  board[ichar][i] if d == 'col' else board[i][ichar]
          if char == '':
            if words[-1] != '':
              words.append('')
            words[-1] = ''
          words[-1] += char
        if words[-1] != '':
          words.append('')
    words.sort()
    res = [[],[]]
    for w in words:
      if len(w) >= 2:
        res[not is_valid(w)].append(w)
    return res
def get_play(board, new_board):
  w = []
  for d in ['row', 'col']:
    diff = ''
    f = [0,0]
    for i in range(len(board)):
      for ichar in range(len(board[0])):
        char =  board[ichar][i] if d == 'col' else board[i][ichar]
        nchar =  new_board[ichar][i] if d == 'col' else new_board[i][ichar]
        if nchar != char:
          if f == [0,0]:
            f = [i, ichar]
          diff += nchar
      if diff != '':
        is_col = d == 'col'
        if is_col:
          f[0], f[1] = f[1], f[0]
        w.append([*f, int(is_col),diff])
        break
  return max(w, key=lambda x: x[3])
def play(row,col,down,tiles,board):
  words, ic_words = get_all_words(board)
  isv, new_board = place_tiles(row, col, down, tiles, board)
  new_words, ic_new_words = get_all_words(new_board)
  if not isv or ic_words != ic_new_words:
    return -1
  for n in words:
    if n in new_words:
      new_words.remove(n)
  bonus = 50 if len(tiles) >= 7 else 0
  p = sum(get_value(w) for pw in new_words for w in pw) + bonus
  return p
def best_play(tiles,board):
  res = [-1, -1, -1, -1]
  for i in range(len(board)):
    for ichar in range(len(board[0])):
      for d in ['row', 'col']:
        score = play(i, ichar, int(d=='col'), tiles, board)
        if score > res[0]:
          res = [score, i, ichar, int(d=='col')]
  return res

00311: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1032, 'const': 387, 'code+const': 1419}
check_import({'allowable': ['math']}): none
def horizontal_read(l):
  horizontalread=[]
  for row in l:
    tospace=[]
    for e in row:
        if e=='':
            tospace.append(' ')
        else:
            tospace.append(e)
    horizontalread.append(''.join(tospace).split())
  return horizontalread
def vertical_read(l):
  verticalread=[]
  for i in range(len(l[0])):
    tospace=[]
    for j in range(len(l)):
        if l[j][i] =='':
            tospace.append(' ')
        else:
            tospace.append(l[j][i])
    verticalread.append(''.join(tospace).split())
  return verticalread
def get_all_words(board):
  horizontalread=horizontal_read(board)
  verticalread=vertical_read(board)
  all=horizontalread+verticalread
  invalidlist=[]
  validlist=[]
  for lst in all:
    for e in lst:
      if len(e)>=2 and is_valid(e)==False:
        invalidlist.append(e.upper())
      elif is_valid(e)==True:
        validlist.append(e.upper())
  validlist.sort()
  invalidlist.sort()
  return [validlist,invalidlist]
def get_play(board, new_board):
  found=0
  location=[]
  for row in range(len(board)):
    for column in range(len(board[0])):
      if board[row][column]!=new_board[row][column]:
        location.append([new_board[row][column],row,column])
        if found==0:
          outrow=row
          outcolumn=column
        found+=1
  if len(location)==1:
    outdown=0
  elif location[0][1]==location[1][1]:
    outdown=0
  else:
    outdown=1
  outtiles=''
  for e in location:
    outtiles+=e[0]
  return [outrow,outcolumn,outdown,outtiles]
def play(row,col,down,tiles,board):
    if len(tiles)>=7:
      score=50
    else:
      score=0
    if place_tiles(row,col,down,tiles,board)[0]==False:
        return -1
    else: new_board=place_tiles(row,col,down,tiles,board)[1]
    newwordlist=[]
    newvalidword=get_all_words(new_board)[0]
    oldvalidword=get_all_words(board)[0]
    for e in newvalidword:
      if e in oldvalidword:
        oldvalidword.remove(e)
      else:
        newwordlist.append(e)
    for word in newwordlist:
      for ch in word:
        score+=get_value(ch)
    if get_all_words(new_board)[1]!=get_all_words(board)[1]:
      return -1
    return score
def best_play(tiles,board):
  maxplay=[0]
  for row in range(len(board)):
    for col in range(len(board[0])):
      scorevertical=play(row,col,1,tiles,board)
      scorehorizontal=play(row,col,0,tiles,board)
      if scorehorizontal>maxplay[0]:
        maxplay=[scorehorizontal,row, col, 0]
      if scorevertical>maxplay[0]:
        maxplay=[scorevertical,row, col, 1]         
  if maxplay==[0]:
    return [-1,-1,-1,-1]
  else:
    return maxplay

00312: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1296, 'const': 386, 'code+const': 1682}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    pre = ''
    re = [[],[]]
    for i in board :
        for j in i :
            if j == '' :
                pre += " "
            else :
                pre += j
        pre += " "
    for b in range(len(board[0])) :
        for a in board :
            if a[b] == '' :
                pre += " "
            else :
                pre += a[b]
        pre += " "
    pre.strip()
    w = pre.split()
    for ch in w :
        if is_valid(ch) == True :
            re[0].append(ch)
        elif is_valid(ch) == False :
            if len(ch) < 2 :
                pass
            else :
                re[1].append(ch)
    re[0].sort()
    re[1].sort()
    return re
def get_play(board, new_board):
    pre = make_board()
    for i in range(len(board)) :
        for j in range(len(board[0])) :
            if board[i][j] == new_board[i][j] :
                pass
            else :
                pre[i][j] = new_board[i][j]
    w = ''
    for i in pre :
        for j in i :
            w += j
    boo = False
    for r in range(len(pre)) :
        for c in range(len(pre[0])) :
            if pre[r][c] != '' :
                boo = True
                break
        if boo == True :
            break
    p = []
    for r2 in range(len(pre)) :
        for c2 in range(len(pre[0])) :
            if pre[r2][c2] != '' :
                p.append([r2,c2])
    if len(w) == 1 :
        d = 0
    else :
        if p[0][0] == p[-1][0] :
            d = 0
        elif p[0][1] == p[-1][1]:
            d = 1
    return [r,c,d,w] 
def play(row,col,down,tiles,board):
    pre = []
    re = 0
    p = []
    if place_tiles(row,col,down,tiles,board)[0] == True :
        new_board = place_tiles(row,col,down,tiles,board)[1]
        x = get_all_words(board)
        y = get_all_words(new_board)
        for i in y :
            for j in i :
                p.append(j)
        co = []
        cx = []
        for ca in p :
            co.append(ca)
        for ca2 in x :
            for ca3 in ca2 :
                cx.append(ca3)
        for f in co :
            if f in cx :
                cx.remove(f)
                p.remove(f)
        for ch in p :
            if is_valid(ch) == False :
                return -1
        for c in p :
            ns = 0
            for s in c :
                ns += get_value(s)
            pre.append(ns)
        for add in pre :
            re += add
        if len(tiles) >= 7 :
            re += 50
    else :
        return -1
    return re
def best_play(tiles,board):
    pre = []
    for d in range(0,2) :
        for i in range(len(board)) :
            for j in range(len(board[0])) :
                s = play(i,j,d,tiles,board)
                pre.append([s,i,j,d])
    pre.sort()
    check = []
    for ch in pre :
        if ch[0] == pre[-1][0] :
            check.append(ch)
    if check[0][0] == -1 :
        return [-1,-1,-1,-1]
    return check[0]

00313: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1682, 'const': 420, 'code+const': 2102}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    gaw = [[], []]
    word = ''
    gaw = [[], []]
    word = ''
    for i in board:
        for w in i:
            if w != '':
                word += w
            if w == '' and len(word) != 0:
                if is_valid(word):
                    gaw[0] += [word]
                elif len(word) > 1:
                    gaw[1] += [word]
                word = ''
        if word != '' :
                if is_valid(word):
                    gaw[0] += [word]
                elif len(word) > 1:
                    gaw[1] += [word]
                word = ''
    for r in range(15):
        for c in range(15):
            if board[c][r] != '':
                word += board[c][r]
            if board[c][r] == '' and len(word) != 0:
                if is_valid(word):
                    gaw[0] += [word.upper()]
                elif len(word) > 1:
                    gaw[1] += [word.upper()]
                word = ''
        if word != '' :
                if is_valid(word):
                    gaw[0] += [word.upper()]
                elif len(word) > 1:
                    gaw[1] += [word.upper()]
                word = ''
    gaw[0].sort()
    gaw[1].sort()
    return gaw
def get_play(board, new_board):
    gp = []
    tiles = ''
    first = True
    check_r = 0
    l = []
    for i in range(15):
        for j in range(15):
            if board[i][j] != new_board[i][j]:
                tiles += new_board[i][j]
                l.append([i, j])
    if len(tiles) == 1:
                down = 0
    elif l[0][0] == l[1][0]:
                down = 0
    else:
                down = 1
    row = l[0][0]
    col = l[0][1]
    tiles.upper()
    return [row, col, down, tiles]
def valid(v, iv, loc, word):
    if is_valid(word):
        v.append([word, loc])
    elif len(word) > 1:
        iv.append([word, loc])
    return v, iv, [], ""
def get_all_words_location(board):
    word1 = ""
    word2 = ""
    v = []
    iv = []
    List_1 = []
    List_2 = []
    for i in range(len(board)):
        for j in range(len(board)):
            if board[i][j] != "":
                word1 += board[i][j]
                List_1.append([i, j])
            if board[j][i] != "":
                word2 += board[j][i]
                List_2.append([j, i])
            if board[i][j] == "" and len(word1) + len(List_1) != 0:
                v, iv, List_1, word1 = valid(v, iv, List_1, word1)
            if board[j][i] == "" and len(word2) + len(List_2) != 0:
                v, iv, List_2, word2 = valid(v, iv, List_2, word2)
        if len(word1) + len(List_1) != 0:
            v, iv, List_1, word1 = valid(v, iv, List_1, word1)
        if len(word2) + len(List_2) != 0:
            v, iv, List_2, word2 = valid(v, iv, List_2, word2)
    v.sort()
    iv.sort()
    return [v, iv]
def play(row,col,down,tiles,board):
    new_board = place_tiles(row, col, down, tiles, board)[1]
    aw = get_all_words_location(board)
    aw2 = get_all_words_location(new_board)
    score = 0
    all_word = []
    pos = []
    for k in aw[0]:
        pos.append(k[1])
    if aw == aw2 or len(aw2[1]) != 0:
        return -1
    for i in aw2[0]:
        if i[1] not in pos:
            all_word.append(i)
    for j in all_word:
        for k in j[0]:
            score += get_value(k)            
    if len(tiles) >= 7:
        score += 50
    return score
def best_play(tiles,board):
    all_score = []
    cond = False
    for i in range(15):
        for j in range(15):
            for d in range(2):
                all_score.append(play(i, j, d, tiles, board))
    all_score.sort()
    for i in range(15):
        if cond:
            break
        for j in range(15):
            if cond:
                break
            for d in range(2):
                if play(i, j, d, tiles, board) == all_score[-1]:
                    row = i
                    col = j
                    down = d
                    cond = True
                    break
    score = all_score[-1]
    if score == -1:
        return [-1,-1,-1,-1]
    return [score, row, col, down]

00314: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 798, 'const': 298, 'code+const': 1096}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid = []
    invalid = []
    words = []
    for i in range(15):
        word_row = word_col = ''
        found_row = found_col = False
        for j in range(15):
            if board[i][j] != '':
                found_row = True
                word_row += board[i][j]
            if (board[i][j] == '' or j == 14) and found_row:
                if len(word_row) > 1:
                    words.append(word_row)
                found_row = False
                word_row = ''
            if board[j][i] != '':
                found_col = True
                word_col += board[j][i]
            if (board[j][i] == '' or j == 14) and found_col:
                if len(word_col) > 1:
                    words.append(word_col)
                found_col = False
                word_col = ''
    for word in words:
        if is_valid(word):
            valid.append(word)
        else:
            invalid.append(word)
    valid.sort()        
    invalid.sort()
    return [valid,invalid]
def get_play(board, new_board):
    row_index = []
    col_index = []
    tiles = ''
    for i in range(15):
        for j in range(15):
            if board[i][j] != new_board[i][j]:
                row_index.append(i)
                col_index.append(j)
                tiles += new_board[i][j]
    down = len(tiles) != 1 and col_index[0] == col_index[1]
    down = int(down)
    row = row_index[0]
    col = col_index[0]
    return [row,col,down,tiles]
def play(row,col,down,tiles,board):
    placeable, new_board = place_tiles(row,col,down,tiles,board)
    valid, invalid = get_all_words(new_board)   
    if not placeable or invalid:
        return -1
    old_valid = get_all_words(board)[0]
    score = 0
    for word in valid:
        if word in old_valid:
            old_valid.remove(word)
            continue
        for character in word:
            score += get_value(character)
    if len(tiles) >= 7:
        return score + 50
    return score
def best_play(tiles,board):
    result = [-1, -1, -1, -1]
    best_score = -1
    for i in range(15):
        for j in range(15):
            for k in range(2):
                score = play(i,j,k,tiles,board)
                if score > best_score:
                    best_score = score
                    result = [score, i, j, k]
    return result

00315: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1174, 'const': 374, 'code+const': 1548}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    yword = []
    nword = []
    for row in range(15):
        alp = []
        for column in range(15):
            if "A" <= board[row][column].upper() <= "Z":
                alp.append(board[row][column])
            else:
                alp.append(".")
        word = "".join(alp)
        word = word.split(".")
        for w in word:
            if w != "" and len(w) >= 2:
                if is_valid(w):
                    yword.append(w)
                elif not is_valid(w):
                    nword.append(w)
    for column in range(15):
        alp = []
        for row in range(15):
            if "A" <= board[row][column].upper() <= "Z":
                alp.append(board[row][column])
            else:
                alp.append(".")
        word = "".join(alp)
        word = word.split(".")
        for w in word:
            if w != "" and len(w) >= 2:
                if is_valid(w):
                    yword.append(w)
                elif not is_valid(w):
                    nword.append(w)
    yword.sort()
    nword.sort()
    return [yword,nword]
def get_play(board, new_board):
    nrow = 0
    ncolumn = 0
    nalp = []
    column_check = []
    row_check = []
    for row in range(15):  
        for column in range(15):
            a = board[row][column]
            b = new_board[row][column]
            if a != b:
                if nrow == 0 and ncolumn == 0:
                    nrow = row
                    ncolumn = column
                column_check.append(column)
                row_check.append(row)
                nalp.append(b)
    if len(row_check) == 1 or len(column_check) == 1:
        if len(row_check) > 1:
            x = 1
        else:
            x = 0
    else:
        if row_check[0] == row_check[1]:
            x = 0
        elif column_check[0] == column_check[1]:
            x = 1  
    return [nrow,ncolumn,x,"".join(nalp)]
def play(row,col,down,tiles,board):
    a = place_tiles(row,col,down,tiles,board)
    nboard = a[1]
    if a[0] == False:
        return -1
    elif len(get_all_words(nboard)[1]) != 0:
        return -1
    old_word = get_all_words(board)[0]
    new_word = get_all_words(nboard)[0]
    for each_word in old_word:
        if each_word in new_word:
            new_word.remove(each_word)
    score = 0
    for each_word in new_word:
        for alp in each_word:
            score += get_value(alp)
    if len(tiles) >= 7:
         score += 50 
    return score
def best_play(tiles,board):
    ans = []
    for row in range(15):  
        for column in range(15):
            for down in range(2):
                same_board = copy_board(board)
                score = play(row,column,down,tiles,same_board)
                if score == -1:
                    continue
                if len(ans) == 0:
                    ans.append([score, row, column, down])
                else:
                    if int(score) > int(ans[0][0]):
                        ans = []
                        ans.append([score, row, column, down])
                    elif int(score) == int(ans[0][0]):
                        ans.append([score, row, column, down])
    ans.sort()
    if ans == []:
        return [-1,-1,-1,-1]
    return ans[0]

00316: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0
[[10, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 10, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [10, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [10, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 10, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1224, 'const': 431, 'code+const': 1655}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    คำตอบ = [[], []]
    for เอก in range(15):
        คำนอน = ""
        คำตั้ง = ""
        for โท in range(15):
            if not board[เอก][โท]: คำนอน += " "
            if not board[โท][เอก]: คำตั้ง  += " "
            คำนอน += board[เอก][โท]
            คำตั้ง  += board[โท][เอก]
        for คำ in คำนอน.split():
            if len(คำ) >= 2 and is_valid(คำ): คำตอบ[0].append(คำ)
            elif len(คำ) >= 2 : คำตอบ[1].append(คำ)
        for คำ in คำตั้ง.split():
            if len(คำ) >= 2 and is_valid(คำ): คำตอบ[0].append(คำ)
            elif len(คำ) >= 2 : คำตอบ[1].append(คำ)
    return [sorted(คำตอบ[0]), sorted(คำตอบ[1])]
def get_play(board, new_board):
    คำตอบ = [0,0,0, ""]
    for นอน in range(15):
        if board[นอน] != new_board[นอน]:
            if not คำตอบ[0]: คำตอบ[0] = นอน
            if คำตอบ[0] != นอน: คำตอบ[2] = 1
            for ตั้ง in range(15):
                if board[นอน][ตั้ง] != new_board[นอน][ตั้ง]:
                    if not คำตอบ[1]: คำตอบ[1] = ตั้ง
                    คำตอบ[3] += new_board[นอน][ตั้ง]
    return คำตอบ
def play(row,col,down,tiles,board):
    คะแนน = 0
    คำตอบ = []
    ทำได้, ล่าสุด = place_tiles(row,col,down,tiles,board)
    if not ทำได้: return -1
    for เอก in range(15):
        นอนเดิม = ""
        นอนใหม่ = ""
        ตั้งเดิม = ""
        ตั้งใหม่ = ""
        for โท in range(15):
            if not board[เอก][โท]: นอนเดิม += " "
            if not ล่าสุด[เอก][โท]: นอนใหม่ += " "
            if not board[โท][เอก]: ตั้งเดิม  += " "
            if not ล่าสุด[โท][เอก]: ตั้งใหม่  += " "
            นอนเดิม += board[เอก][โท]
            นอนใหม่ += ล่าสุด[เอก][โท]
            ตั้งเดิม  += board[โท][เอก]
            ตั้งใหม่  += ล่าสุด[โท][เอก]
        นอนใหม่ = นอนใหม่.split()
        ตั้งใหม่ = ตั้งใหม่.split()
        for คำ in นอนเดิม.split():
            if is_valid(คำ) and คำ in นอนใหม่: นอนใหม่.remove(คำ)
        for คำ in ตั้งเดิม.split():
            if len(คำ) >= 2 and is_valid(คำ) and คำ in ตั้งใหม่: ตั้งใหม่.remove(คำ)
        for คำ in นอนใหม่:
          if len(คำ) >= 2 and not is_valid(คำ): return -1
          elif len(คำ) >= 2: คำตอบ.append(คำ)
        for คำ in ตั้งใหม่:
          if len(คำ) >= 2 and not is_valid(คำ): return -1
          elif len(คำ) >= 2: คำตอบ.append(คำ)
    for คำ in คำตอบ:
        for ตัวอักษร in คำ: คะแนน += get_value(ตัวอักษร)
    if len(tiles) >= 7: คะแนน += 50
    return คะแนน
def best_play(tiles,board):
    คำตอบ = [-1,-1,-1,-1]
    for นอน in range(15):
        for ตั้ง in range(15):
            แนวนอน = play(นอน ,ตั้ง ,0 ,tiles ,board)
            แนวตั้ง = play(นอน ,ตั้ง ,1 ,tiles ,board)
            if แนวนอน > คำตอบ[0]:
                คำตอบ = [แนวนอน, นอน ,ตั้ง ,0]
            if แนวตั้ง > คำตอบ[0]:
                คำตอบ = [แนวตั้ง, นอน ,ตั้ง ,1]
    return คำตอบ

00317: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_10.0AttributeError("'list' object has no attribute 'upper'")
[]
test_get_all_words_20.0AttributeError("'list' object has no attribute 'upper'")
[]
test_get_all_words_30.0AttributeError("'list' object has no attribute 'upper'")
[]
test_get_all_words_40.0AttributeError("'list' object has no attribute 'upper'")
[]
test_get_all_words_50.0AttributeError("'list' object has no attribute 'upper'")
[]
test_get_all_words_60.0AttributeError("'list' object has no attribute 'upper'")
[]
test_get_all_words_70.0AttributeError("'list' object has no attribute 'upper'")
[]
test_get_all_words_80.0AttributeError("'list' object has no attribute 'upper'")
[]
test_get_all_words_90.0AttributeError("'list' object has no attribute 'upper'")
[]
test_get_all_words_100.0AttributeError("'list' object has no attribute 'upper'")
[]
test_get_play_10.0
[[07, 06, 0, 'ICE'], [07, 04, 0, 'JUD'], [04, 05, 01, 'INFSIVE'], [06, 08, 0, 'M']]
test_get_play_20.0
[[01, 07, 01, 'MALEATE'], [05, 06, 01, 'JURY'], [05, 08, 01, 'REWTH'], [01, 08, 0, 'OLEHUNT'],
 [02, 014, 01, 'RAVISES'], [0, 10, 0, 'TOGA'],
 [05, 013, 01, 'POZ'], [05, 05, 01, 'ABAND'],
 [02, 10, 0, 'COYE'], [10, 02, 0, 'FOOS']]
test_get_play_30.0
[[06, 06, 01, 'XUNT']]
test_get_play_40.0
[[07, 01, 0, 'INHERITANCE']]
test_get_play_50.0
[[06, 09, 01, 'CAT']]
test_get_play_60.0
[[06, 07, 01, 'CT']]
test_get_play_70.0
[[07, 03, 0, 'COMDER']]
test_get_play_80.0
[[06, 06, 0, 'AT']]
test_get_play_90.0
[[06, 07, 0, 'M']]
test_get_play_100.0
[[0, 07, 01, 'HEPATICS'], [01, 03, 0, 'MAILS'], [07, 06, 01, 'ARREAR'], [02, 0, 0, 'EASIED'],
 [013, 06, 0, 'SAHIWAL'], [03, 013, 01, 'MICROLOGIES'],
 [014, 07, 0, 'GAS'], [07, 05, 01, 'GOORY'],
 [10, 07, 0, 'SHIPS'], [02, 011, 01, 'MALEFICE'], [0, 10, 01, 'DOOLAN'], [04, 09, 01, 'POGEY'],
 [0, 014, 01, 'AGROS'], [03, 02, 01, 'TONIEST'], [09, 01, 01, 'SLICES'], [04, 0, 0, 'CRONY'],
 [07, 014, 01, 'DIXIT'], [011, 04, 01, 'PINS'],
 [05, 0, 01, 'ARED'], [0, 01, 0, 'GRAFT'], [012, 09, 0, 'MO'],
 [06, 04, 01, 'CAB'], [011, 012, 01, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_30.0
[-14]
test_play_40.0
[-14, -21]
test_play_50.0
[-160, -172]
test_play_60.0
[-160, -1]
test_play_70.0
[-163, -14]
test_play_80.0
[-162]
test_play_90.0
[-11, -15, -124, -17, -185, -12]
test_play_100.0
[-19, -133, -136, -18, -12, -173, -165, -17, -174, -16]
test_play_110.0
[-167, -61, -128, -11, -13, -185, -11, -12, -17, -125, -17, -14, -21, -132, -12, -15, -16, -168, -16, -13, -10, -127, -128]
test_play_120.0
[-11]
test_play_130.0
[-19]
test_play_140.0
[-18, -120, -126, -1]
test_play_150.0
[-139]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 114, 'const': 121, 'code+const': 235}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words = []
    invalid_words = []
    if (is_valid(board) == True):
        valid_words.append(board)
    else:
        invalid_words.append(board)
    return [valid_words, invalid_words]
def get_play(board, new_board):
    return [0, 0, 0, ""]
def play(row,col,down,tiles,board):
    return -1
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00318: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_50.0
[[['HELIOS', 'MI', 'UNOBSERVANT'], ['EAM', 'LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_90.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YADE',
 'YE',  'ZOOT'],
  ['AING', 'ECIFYING', 'ND', 'OG']]]
test_get_all_words_100.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SOITHING', 'TO',
  'TO', 'TRAT', 'TRIALED', 'TUREENS'],
  ['EINTERNEDXU'],
 'GUREENS', ['JOJUOLOOMJYOOI', 'NTHING', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0
[0-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_40.0
[14, 721]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_70.0
[63, 614]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 611, 613, 7685, 411, 812, 7, 205, 11, 7, 124, 210, 1732, 123, 915, 16, 68, 6, 213, 10, 8827, 328]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 820, 1126, 8-1]
test_play_150.0
[7539]
test_best_play_10.0NameError("name 'row' is not defined")
[]
test_best_play_20.0NameError("name 'row' is not defined")
[]
test_best_play_30.0NameError("name 'row' is not defined")
[]
test_best_play_40.0NameError("name 'row' is not defined")
[]
test_best_play_50.0NameError("name 'row' is not defined")
[]
bytecount: {'code': 1452, 'const': 363, 'code+const': 1815}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    a=[[]]
    b=[]
    for i in range(15):
      for j in range(15):
        if  board[i][j].lower():
          b+=[[i,j,board[i][j]]]
    d=''
    dd=[]
    e=[]
    f=''
    kk=[]
    final=[]
    for i in range(len(b)):
      c=[b[i][0],b[i][1]]
      for j in range(len(b)):
          if b[j][0]==c[0]:
              if d=='':
                  h=b[j][1]
                  d+=str(b[j][2])
              elif d!='':
                  if b[j][1]-h==1:
                      d+=str(b[j][2])
                      h=b[j][1]
                  elif b[j][1]-h !=1:
                      if d not in dd:
                          dd+=[d]
                          f=''
                          f+=b[j][2]
                          h=b[j][0]
      if d not in dd:
        dd+=[d]
      for k in range(len(b)):
          if b[k][1]==c[1]:
              if f=='':
                  h=b[k][0]
                  f+=str(b[k][2])
              elif f!='':
                  if b[k][0]-h==1:
                      f+=b[k][2]
                      h=b[k][0]
                  elif b[k][0]-h !=1:
                      if f not in kk:
                          kk+=[f]
                          f=''
                          f+=b[k][2]
                          h=b[k][0]
      if f not in kk:
        kk+=[f]
      d=''
      f=''
    for i in dd:
      if len(i)>1:
        e+=[i]
    for j in kk:
      if len(j)>1:
        e+=[j]
    minfinal=[]
    ddfinal=[]
    for i in e:
        if is_valid(i) == True:
          minfinal+=[i]
        elif is_valid(i) == False:
          ddfinal+=[i]
    minfinal.sort()
    ddfinal.sort()
    final+=[minfinal]
    final+=[ddfinal]
    return final
def get_play(board, new_board):
    a=[]
    b=[]
    for i in range(15):
      for j in range(15):
        if  board[i][j].lower():
          a+=[[i,j,board[i][j]]]
        if new_board[i][j].lower():
          b+=[[i,j,new_board[i][j]]]
    c=''
    col=0
    row=0
    col1=0
    row1=0
    r=0
    for k in b:
      if k not in a:
        if c=='':
          row=k[0]
          col=k[1]
          c+=k[2]
        elif len(c)==1:
          row1=k[0]
          col1=k[1]
          c+=k[2]
        else:
          c+=k[2]
    if len(k)>1:
      if col1-col>=1:
        r=0
      if row1-row>=1:
        r=1
    elif len(k)==1:
        r=0
    return [row,col,r,c]
def play(row,col,down,tiles,board):
    cc=[]
    a=get_all_words(board)
    board = place_tiles(row,col,down,tiles,board)[1]
    b=get_all_words(board)
    score=0
    for i in b[0]:
      if i not in a[0]:
        cc+=[i]
    for i in cc:
      if is_valid(i)== True:
        if len(i)>=7:
          score+=50
        for j in i:
          score+=get_value(j)
      elif is_valid(i)== False or i=='':
        score-=1
    return score
def best_play(tiles,board):
    board = place_tiles(row,col,down,tiles,board)[1]
    return [-1,-1,-1,-1]

00319: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_40.0
[[['CONNERS', 'UNWITS', 'VILDE'], ['CONNERSZOO'], ['FEWZ', 'TW', 'VR', 'WF']]]
test_get_all_words_50.0
[[['BHELI', 'ONS', 'UNOBSERVANT'], ['ARR', 'HELIOSG', 'IEI', 'LIAM', 'MVI', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_60.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA'], ['QYUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_80.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'ITA', 'ITERANT', 'NA', 'NAES', 'RE', 'REI', 'RETAINS', 'SIF', 'SIF',
   'SIR', 'STAIRED', 'TIT', 'URANITE'],
  []]]
test_get_all_words_90.0
[[['EJACULD', 'ATD', 'AD', 'BRAINWASHING', 'DIMO', 'MDOD', 'DOMONSTERS', 'DOPACIFYINGM', 'DOXYPHENBUTAZONEM', 'PREQUALIFIEDOM', 'XIDOM'],
  ['ADTOM', 'AEADOAM',
   'BRAINWASHINGDOM', 'CQITCDORM', 'DSO', 'EDG', 'EDDOM', 'EDJACULATING', 'FADWLO', 'GMI', 'MIN', 'HDOMDOM',
   'IMODI', 'MDONSOTERS', 'IUNUO',
   'NODF', 'OHMD', 'OM', 'NOPACIFOHMYING', 'OXYPHENSBUTAZONE', 'OMPIER', 'PREQUALIFIERDORMDOMJ', 'TSUM', 'UMDOMNXI', 'YEDOM',
   'YLOADA', 'ZOOTE'],
  []]]
test_get_all_words_100.0
[[['AA', 'ARK', 'CALP', 'EDFOOT', 'OXFUGIDSO', 'TOGI', 'TRIALGYVED', 'TUREENSHOCK'],
  ['AADIF', 'EDINTERNED', 'FUGIORITA', 'GYVEHOCK', 'IGJA',
   'JIVEGP', 'JOJMUOLOOMJYOOIN', 'JTTOR',
   'MUNXIFADS', 'NSITHING', 'TONNL', 'TO', 'TREXUVVAT', 'TROIALED', 'TURUEENS', 'SFOOTXU'],
  ['TFJOJUOLOOMJYOOI', 'TRATGIJAO']]]
test_get_play_10.0
[None[7, None6, None0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INoneFSIVE'], [6, 8, 0, 'M']]
test_get_play_20.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNoneT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABANoneD'],
 None[2, None10, None0, None'COYE'], None[10, None2, None0, None'FOOS']]
test_get_play_30.0
[[6, 6, 1, 'XUNoneT']]
test_get_play_40.0
[[7, 1, 0, 'INoneHERITANCE']]
test_get_play_50.0
[None[6, 9, 1, 'CAT']]
test_get_play_60.0
[None[6, 7, 1, 'CT']]
test_get_play_70.0
[None[7, 3, 0, 'COMDER']]
test_get_play_80.0
[None[6, 6, 0, 'AT']]
test_get_play_90.0
[None[6, 7, 0, 'M']]
test_get_play_100.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLANone'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONoneIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONoneY'],
 [7, 14, 1, 'DIXIT'], None[11, 4, 1, 'PINoneS'], [5, None0, None1, None'ARED'], None[0, None1, None0, None'GRAFT'], None[12, None9, None0, None'MO'],
 None[6, 4, None1, None'CAB'], None[11, None12, None1, None'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 15, -124, -17, -185, 12]
test_play_100.0
[9, 33, 4236, -18, -12, 73, -165, -17, -174, -16]
test_play_110.0
[67, 61, -128, -11, -13, -185, -11, -12, -17, -125, -17, -14, -21, -132, -12, -15, -16, -168, -16, -13, -10, -127, -128]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[-139]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 770, 'const': 295, 'code+const': 1065}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  final_ans =  [[],[]]
  ans = []
  list_word1 =[]
  word1 = ''
  for line in board :
    for i in line :
      if i == ' ' :
        word1 += '-'
      else :
        word1 += i
    word1 = word1.split('-')
    list_word1 += word1
    word1 = ''
  for j in list_word1 :
    if j != '' :
      ans += [j]
  list_word2 = []
  word2 = ''
  new_board = make_board()
  n = 0
  while n != 15 :
    for i in range(15):
      new_board[n][i] = board[i][n]
    n += 1
  for line in new_board :
    for i in line :
      if i == ' ' :
        word2 += '-'
      else :
        word2 += i
    word2 = word2.split('-')
    list_word2 += word2
    word2 = ''
  for j in list_word2 :
    if j != '' :
      ans += [j]
  for i in ans :
    if is_valid(i) == True :
      final_ans[0] += [i]
    elif len(i) >= 2 :
      final_ans[1] += [i]
  final_ans[0].sort()
  final_ans[1].sort()
  return final_ans
def get_play(board, new_board):
   return
def play(row,col,down,tiles,board) :
  score = 0
  ans = 0
  valid = place_tiles(row,col,down,tiles,board)[0]
  board2 =  place_tiles(row,col,down,tiles,board)[1]
  a = get_all_words(board)[0] + get_all_words(board)[1] 
  b = get_all_words(board2)[0] + get_all_words(board2)[1]
  new_words = []
  for i in b :
    if not i in a :
      new_words += [i]
    else :
      z = a.index(i)
      a.pop(z)
  for k in new_words :
    for l in k :
      score += letter_value[l.lower()]
  for j in new_words :
    if  is_valid(j) == False :
      valid = False
  if len(tiles) >= 7 :
    score += 50
  if valid == False :
    ans= -1
  if valid == True :
    ans = score
  else :
    ans = -1
  return ans
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00320: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 960, 'const': 418, 'code+const': 1378}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  v,iv = [],[]
  for i in range(15):
    e = ["",""]
    for g in range(15):
      for t in range(2):
        o,r = i,g
        if t == 1: r,o = o,r
        if board[o][r] != '':e[t] += board[o][r]
        else:e[t] += " "
    M = e[0] + ' ' + e[1]
    for word in M.strip().split():
      if is_valid(word):v.append(word)
      elif len(word) > 1:iv.append(word)
  return [sorted(v),sorted(iv)]
def get_play(board, new_board):
  F = False
  for i in range(15):
    for j in range(15):
      e = new_board[i][j] ; r = i ; c = j
      if e != board[i][j]:
        F = True
        break
    if F:break
  z = [new_board[r][w] for w in range(15) if new_board[r][w] != board[r][w]]
  k = [new_board[w][c] for w in range(15) if new_board[w][c] != board[w][c]]
  if len(k) > 1:return [r,c,1,"".join(k)]
  if len(z) > 1:return [r,c,0,"".join(z)]
  return [r,c,0,e]
def play(row,col,down,tiles,board):
  c, b =  place_tiles(row,col,down,tiles,copy_board(board))
  v, iv = get_all_words(b)
  if c:
    if len(iv) > 0:return -1
    for e in get_all_words(board)[0]:
      if e in v:v.remove(e)
    return sum([get_value(g) for i in v for g in i]) + 50*(len(tiles) > 6)
  return -1
def best_play(tiles,board):
  bp = sorted([[-play(row,col,down,tiles,board), row, col, down] for row in range(15) for col in range(15) for down in range(2) if play(row,col,down,tiles,board) != -1])
  if len(bp) != 0:return [-bp[0][0], bp[0][1], bp[0][2], bp[0][3]]
  return [-1,-1,-1,-1]

00321: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 1426, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 2230, 'const': 480, 'code+const': 2710}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid = [] ; invalid = [] ; t = [] ; info = []
    for i in range(15):
      for j in range(15):
        if j<14:
          if 'A'<=board[i][j]<='Z' and 'A'<=board[i][j+1]<='Z':
            t.append(board[i][j])
          elif 'A'<=board[i][j]<='Z' and 'A'<=board[i][j-1]<='Z':
            t.append(board[i][j])
          elif not ('A'<=board[i][j]<='Z'):
            if len(t)>0:
              info.append(''.join(t))
              t = []
        else:
          if len(t)>0:
           if 'A'<=board[i][j]<='Z' and 'A'<=board[i][j-1]<='Z':
             t.append(board[i][j])
             info.append(''.join(t))
          if not ('A'<=board[i][j]<='Z') and 'A'<=board[i][j-1]<='Z':
             info.append(''.join(t))
      t = []
    for i in range(15):
      for j in range(15):
        if j<14:
          if 'A'<=board[j][i]<='Z' and 'A'<=board[j+1][i]<='Z':
            t.append(board[j][i])
          elif 'A'<=board[j][i]<='Z' and 'A'<=board[j-1][i]<='Z':
            t.append(board[j][i])
          elif not ('A'<=board[j][i]<='Z'):
            if len(t)>0:
              info.append(''.join(t))
              t = []
        else:
          if len(t)>0:
           if 'A'<=board[j][i]<='Z' and 'A'<=board[j-1][i]<='Z':
             t.append(board[j][i])
             info.append(''.join(t))
           elif not ('A'<=board[j][i]<='Z') and 'A'<=board[j-1][i]<='Z':
             info.append(''.join(t))
      t = []
    for e in info:
      if len(e)>= 2:
        if is_valid(e) == True:
          valid.append(e)
        elif is_valid(e) == False:
          invalid.append(e)
    invalid.sort()
    valid.sort()
    return [valid,invalid]
def get_play(board, new_board):
    ans = []
    g = 0 ; t = 1
    for i in range(15):
      for j in range(15):
        if new_board[i][j] != board[i][j]:
          ans.append(new_board[i][j])
    for i in range(15):
      for j in range(15):
        if new_board[i][j] != board[i][j] and new_board[i][j] == ans[0] and g == 0:
          row = i
          cols = j
          g+=1
          if len(ans)>1:
            for k in range(j,15):
              if new_board[i][k] == ans[1] and new_board[i][k] != board[i][k]:
                t = 0
          else:
            for k in range(j,15):
              if not ('A'<=new_board[i][k]<='Z'):
                t = 0
    ans = ''.join(ans)
    return [row,cols,t,ans]
def play(row,col,down,tiles,board):
    c = 0 ; repeat = []
    word = get_all_words(board)[0]
    new_board = place_tiles(row,col,down,tiles,board)[1]
    data = get_all_words(new_board)[0]
    if len(get_all_words(new_board)[1]) != 0:
      return -1
    else:
      for x in word:
        if x in data:
          repeat.append(x)
      for t in repeat:
        for x in data:
          if x == t:
            data.remove(t)
      for a in data:
        for i in range(len(a)):
            c+=get_value(a[i])
    if len(tiles)>=7:
      c+=50
    return c
def best_play(tiles,board):
    score_list = [] ; check1 = [] ; check2 =[] ; check3 = []
    for i in range(15):
      for j in range(15):
        for k in range(0,2):
          score_list.append([play(i,j,k,tiles,board),i,j,k])
    score_list.sort()
    score = score_list[-1][0]
    for e in score_list:
      if e[0] == score:
        check1.append(e[1:])
    if len(check1) == 1:
      row,col,down = check1[0]
    else:
      check1.sort()
      row = check1[0][0]
      for x in check1:
        if x[0] == row:
          check2.append(x[1:])
      if len(check2)==1:
        col,down=check2[0]
      else:
        check2.sort()
        col = check2[0][0]
        for y in check2:
          if y[0] == col:
            check3.append(y[1:])
        down = check3[0][0]
    if place_tiles(row,col,down,tiles,board)[0] == False:
      return [-1,-1,-1,-1]
    else:
      return [score,row,col,down]

00322: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1002, 'const': 284, 'code+const': 1286}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  l = [[],[]]
  horizon = ''
  vertical = ''
  for i in range(15):
    for j in range(15):
      if board[i][j] != '' :  
        horizon += board[i][j]
      if board[i][j] == '':
        if is_valid(horizon):
          l[0].append(horizon)
        elif len(horizon) > 1:
          l[1].append(horizon)
        horizon = ''
      elif j == 14 and horizon != '':
        if is_valid(horizon):
          l[0].append(horizon)
        elif len(horizon) > 1:
          l[1].append(horizon)
        horizon = ''
      if board[j][i] != '' :  
        vertical += board[j][i]
      if board[j][i] == '':
        if is_valid(vertical):
          l[0].append(vertical)
        elif len(vertical) > 1:
          l[1].append(vertical)
        vertical = ''
      elif j == 14 and vertical != '':
        if is_valid(vertical):
          l[0].append(vertical)
        elif len(vertical) > 1:
          l[1].append(vertical)
        vertical = ''
  l[0].sort()
  l[1].sort()
  return l
def get_play(board, new_board):
    i_r = 0
    j_c = 0
    d = 0
    w = ''
    for i in range(15):
      for j in range(15):
        if board[i][j] != new_board[i][j]:
            w += new_board[i][j]
            if len(w) == 1:
              i_r = i
              j_c = j
      if board[i_r][j_c+1:] == new_board[i_r][j_c+1:] and len(w) > 1:
          d = 1
    return [i_r,j_c,d,w]
def play(row,col,down,tiles,board):
    score = 0
    place = place_tiles(row,col,down,tiles,board)
    get = get_all_words(place[1])
    if not place[0]:
      score -= 1
    elif get[1] == []:
      for i in get_all_words(board)[0]:
        for j in get[0]:
          if i == j:
            get[0].remove(i)
            break
      for i in get[0]:
        for j in i:
          score += get_value(j)
      if len(tiles) >= 7:
        score += 50
    else:
      score -= 1
    return score
def best_play(tiles,board):
    mscore = -1
    row = -1
    col = -1
    down = -1
    for i in range(15):
      for j in range(15):
        for d in range(2):
          score = play(i,j,d,tiles,board)
          if score > mscore:
            mscore = score
            row = i
            col = j
            down = d
      l = [mscore,row,col,down]
    return l

00323: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1006, 'const': 294, 'code+const': 1300}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid = []
    invalid = []
    word = ''
    for row in board:
        for ch in row:
            if ch != '':
                word += ch
            else:
                word += ' '
        word += ' '
    for i in range(len(board)):
        for j in range(len(board)):
            if board[j][i] != '':
                word += board[j][i]
            else:
                word += ' '
        word += ' '
    list_of_words = word.split()
    for w in list_of_words:
        if len(w) >= 2:
            if is_valid(w):
                valid.append(w)
            else:
                invalid.append(w)
    valid.sort()
    invalid.sort()
    return [valid, invalid]
def get_play(board, new_board):
    tiles = ''
    down = True
    found = False
    for i in range(len(board)):
        for j in range(len(board)):
            if board[i][j] != new_board[i][j]:
                row = i
                col = j
                tiles += new_board[i][j]
                found = True
                break
        if found == True:
            break
    for k in range(col+1, len(board)):
        if board[row][k] != new_board[row][k]:
            tiles += new_board[row][k]
            down = False
    for l in range(row+1, len(board)):
        if board[l][col] != new_board[l][col]:
            tiles += new_board[l][col]
            down = True
    if len(tiles) == 1 or not(down):
        return [row, col, 0, tiles]
    else:
        return [row, col, 1, tiles]
def play(row,col,down,tiles,board):
    old_word_list = (get_all_words(board))[0]
    new_word_list = []
    if place_tiles(row, col, down, tiles, board)[0] and (get_all_words(place_tiles(row, col, down, tiles, board)[1]))[1] == []:
        for e in (get_all_words(place_tiles(row, col, down, tiles, board)[1]))[0]:
            if e not in old_word_list:
                new_word_list.append(e)
            else:
                old_word_list.remove(e)
    else:
        return -1
    s = 0
    for f in new_word_list:
        for ch in f:
            s += get_value(ch)
    if len(tiles) >= 7:
        return s + 50
    else:
        return s
def best_play(tiles,board):
    m = -1
    for i in range(len(board)):
        for j in range(len(board)):
            if play(i, j, 0, tiles, board) > m:
                m = play(i, j, 0, tiles, board)
                row = i
                col = j
                d = 0
            if play(i, j, 1, tiles, board) > m:
                m = play(i, j, 1, tiles, board)
                row = i
                col = j
                d = 1
    if m > -1:
        return [m, row, col, d]
    else:
        return [-1, -1, -1, -1]

00324: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 704, 'const': 550, 'code+const': 1254}
check_import({'allowable': ['math']}): none
def split_word(row):
    word = ""
    list_word = []
    for letter in row:
      if letter:
        word += letter
      else:
        if len(word) > 1:
          list_word.append(word)
        word = ""
    if len(word) > 1:
      list_word.append(word)
    return list_word
def get_all_words(board):
    valid = []
    invalid = []
    for row in board:
      for word in split_word(row):
        if is_valid(word):
          valid.append(word)
        else:
          invalid.append(word)
    for i in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]:
      for word in split_word(sum(board, [])[i::15]):
        if is_valid(word):
          valid.append(word)
        else:
          invalid.append(word)
    return [sorted(valid),sorted(invalid)]
def get_play(board, new_board):
    tiles = ""
    down = 0
    location = []
    for row in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]:
      for col in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]:
        letter = new_board[row][col]
        if letter != board[row][col]:
          tiles += letter
          location.append([row,col])
    if len(location) > 1:
      if location[0][1] == location[1][1]:
        down = 1
    return location[0] + [down, tiles]
def play(row,col,down,tiles,board):
    scores = 0
    word_in_board = get_all_words(board)[0]
    word_in_new_board, invalid_words = get_all_words(place_tiles(row, col, down, tiles, board)[1])
    if invalid_words:
      return -1
    for word in word_in_new_board:
      if word not in word_in_board:
        for letter in word:
          scores += get_value(letter)
      else:
        word_in_board.remove(word)
    if scores > 0:
      if len(tiles) >= 7:
        scores += 50
      return scores
    return -1
def best_play(tiles,board):
    top_score = 0
    location = [-1,-1,-1,-1]
    for row in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]:
      for col in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]:
        for down in [0,1]:
          score = play(row,col,down,tiles,board)
          if score > top_score:
            top_score = score
            location = [score, row, col, down]
    return location

00325: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0ValueError('list.remove(x): x not in list')
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0ValueError('list.remove(x): x not in list')
[8, 20, 26, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 944, 'const': 332, 'code+const': 1276}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    exp =copy_board(board);words = [] 
    for j in range(len(exp[0])): 
        empty = ""
        for i in range(len(exp)):
            if exp[i][j] == '':
                exp[i][j] = " "
            empty+=exp[i][j]
        words += empty.strip().split()               
    for line in exp: 
        words+="".join(line).strip().split()
    valid = [];no_valid = []
    for word in words:
        if is_valid(word):
            valid.append(word)
        elif len(word)>=2:
            no_valid.append(word)
    return [sorted(valid),sorted(no_valid)]
def get_play(board, new_board):
    exp = copy_board(new_board)
    for j in range(len(board[0])): 
        for i in range(len(board)):
            if board[i][j] == new_board[i][j]:
                exp[i][j] = ""
    found,empty,axis = None,'',0
    for j in range(len(exp[0])): 
        for i in range(len(exp)):
            if exp[i][j] !='' and found == None:
                found = [i,j]
                empty += exp[i][j]
            elif exp[i][j] != '':
                empty += exp[i][j]
                if found[0]==i:
                    axis = 0
                else:
                    axis = 1
    return [found[0],found[1],axis,empty]
def play(row,col,down,tiles,board):
    check,current = place_tiles(row,col,down,tiles,board)
    before = get_all_words(board)
    after = get_all_words(current)
    if after[1] != [] or check == False:
        return -1
    new_word = list(after[0])
    for word in before[0]:
        if word in after[0]:
            new_word.remove(word)        
    score = 0        
    for word in new_word:
        for char in word:
            score += get_value(char)
    if len(tiles)>=7:
        score += 50   
    return score
def best_play(tiles,board):
    play_list = []
    for j in range(len(board[0])): 
        for i in range(len(board)):
            table = copy_board(board)
            play_list.append([play(i,j,0,tiles,table),-i,-j,0])
            play_list.append([play(i,j,1,tiles,table),-i,-j,-1])
    best = sorted(play_list)[-1]
    if best[0] != -1:
        row,col,down = best[1::1]
        return [best[0],-row,-col,-down]            
    return [-1,-1,-1,-1]

00326: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 846, 'const': 364, 'code+const': 1210}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  op = [[], []]
  words = ""
  for row in board:
    words += " "
    for ch in row:
      if ch != '':
        words += ch
      else:
        words += " "
  words += " "
  for col in range(15):
    words += " "
    for row in range(15):
      ch = board[row][col]
      if ch != '':
        words += ch
      else:
        words += ' '
  for word in words.split():
    if len(word) == 1:
      pass
    elif is_valid(word):
      op[0].append(word)
    else:
      op[1].append(word)
  op[1].sort()
  op[0].sort()
  return op
def get_play(board, new_board):
  cnt = 0
  for row in range(15):
    for col in range(15):
      newCh = new_board[row][col]
      ch = board[row][col]
      if ch != newCh:
        if cnt == 0:
          op = [row, col, 0, newCh]
          pos = [row, col]
        elif cnt == 1:
          op[3] += newCh
          if col == pos[1]:
            op[2] = 1
        else:
          op[3] += newCh
        cnt += 1
  return op
def play(row,col,down,tiles,board):
  wordStr = ""
  tileLst = list(tiles)
  score = 0
  newBoard = copy_board(board)
  newBoard = place_tiles(row, col, down, tiles, newBoard)
  allWNew = get_all_words(newBoard[1])
  if len(allWNew[1]) != 0 or not newBoard[0]:
    return -1
  allW = get_all_words(board)
  if len(tiles) >=7:
    score += 50
  for i in allWNew[0]:
    if i in allW[0]:
      allW[0].remove(i)
    else:
      wordStr += i
  for ch in wordStr:
    score += get_value(ch)
  return score
def best_play(tiles,board):
  mxScore = -99
  mxR = 0
  mxC = 0
  mxPs = 0
  for r in range(14, -1, -1):
    for c in range(14, -1, -1):
      for dwn in range(1, -1, -1):
        testBoard = copy_board(board)
        sc = play(r, c, dwn, tiles, board)
        if sc == -1:
          continue
        if sc >= mxScore:
          mxScore = sc
          mxR = r
          mxC = c
          mxPs = dwn
  if mxScore == -99:
    return([-1, -1, -1, -1])
  return [mxScore, mxR, mxC, mxPs]

00327: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 'I'], [7, 7, 'C'], [7, 8, 'E']]
[[7, 4, 'J'], [7, 5, 'U'], [7, 9, 'D']]
[[4, 5, 'I'], [5, 5, 'N'], [6, 5, 'F'], [8, 5, 'S'], [9, 5, 'I'], [10, 5, 'V'], [11, 5, 'E']]
[[6, 8, 'M']]
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 'M'], [2, 7, 'A'], [3, 7, 'L'], [4, 7, 'E'], [5, 7, 'A'], [6, 7, 'T'], [7, 7, 'E']]
[[5, 6, 'J'], [6, 6, 'U'], [7, 6, 'R'], [8, 6, 'Y']]
[[5, 8, 'R'], [6, 8, 'E'], [7, 8, 'W'], [8, 8, 'T'], [9, 8, 'H']]
[[1, 8, 'O'], [1, 9, 'L'], [1, 10, 'E'], [1, 11, 'H'], [1, 12, 'U'], [1, 13, 'N'], [1, 14, 'T']]
[[2, 14, 'R'], [3, 14, 'A'], [4, 14, 'V'], [5, 14, 'I'], [6, 14, 'S'], [7, 14, 'E'], [8, 14, 'S']]
[[0, 10, 'T'], [0, 11, 'O'], [0, 12, 'G'], [0, 13, 'A']]
[[5, 13, 'P'], [6, 13, 'O'], [7, 13, 'Z']]
[[5, 5, 'A'], [6, 5, 'B'], [7, 5, 'A'], [8, 5, 'N'], [9, 5, 'D']]
[[2, 10, 'C'], [2, 11, 'O'], [2, 12, 'Y'], [2, 13, 'E']]
[[10, 2, 'F'], [10, 3, 'O'], [10, 4, 'O'], [10, 5, 'S']]
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 'X'], [8, 6, 'U'], [9, 6, 'N'], [10, 6, 'T']]
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 'I'], [7, 2, 'N'], [7, 3, 'H'], [7, 4, 'E'], [7, 5, 'R'], [7, 6, 'I'], [7, 7, 'T'], [7, 8, 'A'], [7, 9, 'N'], [7, 10, 'C'], [7, 11, 'E']]
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 'C'], [7, 9, 'A'], [8, 9, 'T']]
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 'C'], [8, 7, 'T']]
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 'C'], [7, 4, 'O'], [7, 5, 'M'], [7, 9, 'D'], [7, 10, 'E'], [7, 11, 'R']]
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 'A'], [6, 7, 'T']]
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 'M']]
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 'H'], [1, 7, 'E'], [2, 7, 'P'], [3, 7, 'A'], [4, 7, 'T'], [5, 7, 'I'], [6, 7, 'C'], [7, 7, 'S']]
[[1, 3, 'M'], [1, 4, 'A'], [1, 5, 'I'], [1, 6, 'L'], [1, 8, 'S']]
[[7, 6, 'A'], [8, 6, 'R'], [9, 6, 'R'], [10, 6, 'E'], [11, 6, 'A'], [12, 6, 'R']]
[[2, 0, 'E'], [2, 1, 'A'], [2, 2, 'S'], [2, 3, 'I'], [2, 4, 'E'], [2, 5, 'D']]
[[13, 6, 'S'], [13, 7, 'A'], [13, 8, 'H'], [13, 9, 'I'], [13, 10, 'W'], [13, 11, 'A'], [13, 12, 'L']]
[[3, 13, 'M'], [4, 13, 'I'], [5, 13, 'C'], [6, 13, 'R'], [7, 13, 'O'], [8, 13, 'L'], [9, 13, 'O'], [10, 13, 'G'], [11, 13, 'I'], [12, 13, 'E'], [13, 13, 'S']]
[[14, 7, 'G'], [14, 8, 'A'], [14, 9, 'S']]
[[7, 5, 'G'], [8, 5, 'O'], [9, 5, 'O'], [10, 5, 'R'], [11, 5, 'Y']]
[[10, 7, 'S'], [10, 8, 'H'], [10, 9, 'I'], [10, 10, 'P'], [10, 11, 'S']]
[[2, 11, 'M'], [3, 11, 'A'], [4, 11, 'L'], [5, 11, 'E'], [6, 11, 'F'], [7, 11, 'I'], [8, 11, 'C'], [9, 11, 'E']]
[[0, 10, 'D'], [1, 10, 'O'], [2, 10, 'O'], [3, 10, 'L'], [4, 10, 'A'], [5, 10, 'N']]
[[4, 9, 'P'], [5, 9, 'O'] ...(more)
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1222, 'const': 347, 'code+const': 1569}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  all_word = []
  i = 0
  while i < 15:
    j = 0
    while j < 14 :
      if board[i][j] and board[i][j+1]:
        res = board[i][j] + board[i][j+1]
        j = j + 2
        while j < 15 and board[i][j]:
          res += board[i][j]
          j += 1
        all_word.append(res)
      j += 1
    i += 1
  j = 0
  while j < 15:
    i = 0
    while i < 14:
      if board[i][j] and board[i+1][j]:
        res = board[i][j] + board[i+1][j]
        i = i + 2
        while i < 15 and board[i][j]:
          res += board[i][j]
          i += 1
        all_word.append(res)
      i += 1
    j += 1
  g = []
  b = []
  for i in all_word:
    if is_valid(i):
      g.append(i)
    else:
      b.append(i)
  g.sort()
  b.sort()
  return [g,b]
def get_play(board, new_board):
  change = []
  for i in range(15):
      for j in range(15):
          if board[i][j] != new_board[i][j]:
              change.append([i,j,new_board[i][j]])
  change.sort()
  direction = 0 if len(change) == 1 else 1 if change[0][0] - change[1][0] else 0
  print(change)
  return [change[0][0], change[0][1], direction, ''.join(map(lambda x: x[2], change)) ]
def play(row,col,down,tiles,board):
  valid, new_board = place_tiles(row,col,down,tiles,board)
  if not valid:
    return -1
  old_word_map = {}
  new_word_map = {}
  old_word_list = get_all_words(board)
  new_word_list = get_all_words(new_board)
  for x in old_word_list[0]:
      if x not in old_word_map:
        old_word_map[x] = 0
      old_word_map[x] += 1
  for x in new_word_list[0]:
      if x not in new_word_map:
        new_word_map[x] = 0
      new_word_map[x] += 1
  if len(new_word_list[1]) > 0:
    return -1
  score = 0
  for k in new_word_map:
      if k not in old_word_map:
        old_word_map[k] = 0
      if new_word_map[k] > old_word_map[k]:
        score += (new_word_map[k] - old_word_map[k]) * sum([letter_value[y.lower()] for y in k])
  return score + (50 if len(tiles) > 6 else 0)
def best_play(tiles,board):
  pos = []
  n = len(tiles)
  for i in range(15):
    for j in range(15):
      score0 = play(i,j,0,tiles,board)
      score1 = play(i,j,1,tiles,board)
      if score0 != -1:
        pos.append([-score0,i,j,0])
      if score1 != -1:
        pos.append([-score1,i,j,1])
  if len(pos) == 0:
    return [-1,-1,-1,-1]
  pos.sort()
  return [-pos[0][0], pos[0][1], pos[0][2], pos[0][3]]

00328: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_150.0
[379]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1264, 'const': 459, 'code+const': 1723}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    out = [[],[]]
    for r in range(15):
        wordInRow = ''
        wordInCol = ''
        for c in range(15):
            if board[r][c] == '':
                wordInRow += ' '
            else: wordInRow  += board[r][c]
            if board[c][r] == '':
                wordInCol += ' '
            else: wordInCol  += board[c][r]
        for word in wordInRow.split():
            if is_valid(word): out[0].append(word)
            elif len(word) >= 2: out[1].append(word)
        for word in wordInCol.split():
            if is_valid(word): out[0].append(word)
            elif len(word) >= 2: out[1].append(word)
    out[0].sort()
    out[1].sort()
    return out
def get_play(board, new_board):
    row, col = [], []
    tiles = ''
    for r in range(15):
        for c in range(15):
            if board[r][c] != new_board[r][c]:
                tiles += new_board[r][c]
                if r not in row: row.append(r)
                if c not in col: col.append(c)
    if len(row) == 1 or        len(row) == len(col) == 1: down = 0
    elif len(col) == 1: down = 1
    return [row[0],col[0],down,tiles]
def play(row,col,down,tiles,board):
    ans = [] 
    valid, newBoard = place_tiles(row,col,down,tiles,board)
    if not valid: return -1
    for c in range(15):
        oldRow = ''    ; oldCol = ''
        newRow = ''    ; newCol = ''
        for r in range(15):
            if board[c][r] == '': 
                oldRow += ' '
            else: oldRow += board[c][r]
            if newBoard[c][r] == '': 
                newRow += ' '
            else: newRow += newBoard[c][r]
            if board[r][c] == '': 
                oldCol  += ' '
            else: oldCol  += board[r][c]
            if newBoard[r][c] == '': 
                newCol  += ' '
            else: newCol  += newBoard[r][c]
        for word in newRow.split():
          if not is_valid(word) and len(word) >= 2 : return -1
          elif word not in oldRow.split() and len(word) >= 2: ans.append(word)
        for word in newCol.split():
          if not is_valid(word) and len(word) >= 2 : return -1
          elif word not in oldCol.split() and len(word) >= 2: ans.append(word)
    score = 0
    for word in ans:
        for ch in word: 
            score += get_value(ch)
    if len(tiles) >= 7: score += 50
    return score
def best_play(tiles,board):
    possible = []        
    for row in range(15):
        for col in range(15):
            for down in [0,1]:
                score = play(row,col,down,tiles,board)
                if score != -1:
                    possible.append([score,row,col,down])
    if not possible: 
        return [-1,-1,-1,-1]
    else: 
        m = max(possible)
        t = [e[1:] for e in possible if e[0] == m[0]]
        t.sort()
        return [m[0]]+t[0]

00329: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 15, 24, 17, 835, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[68, 0, 7, 1], [87, 12, 60, 10], [10879, 41, 512, 1], [7259, 81, 80, 10], [171, 112, 93, 10], [7265, 73, 4, 1],
 [3019, 16, 81, 10], [197, 14, 92, 1], [191, 120, 21, 0], [22, 3, 108, 1]]
test_best_play_40.0
[[71, 0, 7, 1], [763, 210, 80, 10], [7863, 1, 91, 10], [149, 17, 63, 1], [2019, 813, 10, 10], [772, 214, 114, 10],
 [2517, 26, 126, 10], [258, 13, 73, 0], [218, 34, 130, 10], [136, 45, 14, 10]]
test_best_play_50.0
[[83, 0, 7, 1], [8062, 513, 80, 10], [7258, 1, 98, 10], [210, 80, 61, 10], [7468, 0, 101, 1], [1824, 126, 48, 01],
 [178, 18, 69, 1], [2310, 31, 52, 1], [321, 45, 43, 1], [1927, 14, 114, 1]]
bytecount: {'code': 1280, 'const': 986, 'code+const': 2266}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    all_words = [""]
    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"]
    for lis in board :
      for i in range(len(lis)-1) :
        if (lis[i] and lis[i+1]) in letters :
          word = lis[i]+lis[i+1]
          i += 2
          if i < len(board[0]) :
            while lis[i] in letters :
              word += lis[i]
              i += 1
              if i >= len(board[0]) :
                break
          if word not in all_words[-1][1:] :
            all_words.append(word)
    for i in range(len(board[0])) :
      for j in range(len(board)-1) :
        if (board[j][i] and board[j+1][i]) in letters :
          word = board[j][i]+board[j+1][i]
          j += 2
          if j < len(board) :
            while board[j][i] in letters :
              word += board[j][i]
              j += 1
              if j >= len(board) :
                break
          if word not in all_words[-1][1:] :
            all_words.append(word)
    all_words = all_words[1:]
    all_words.sort()
    check_words = [[],[]]
    for word in all_words :
      if is_valid(word) == True :
        check_words[0].append(word)
      else :
        check_words[1].append(word)
    return check_words
def get_play(board, new_board):
    new_position = []
    for i in range(len(board[0])) :
      for j in range(len(board)) :
        if board[j][i] != new_board[j][i] :
          new_position.append([j,i])
    down = 0
    if len(new_position) != 1 :
      if new_position[0][1] == new_position[1][1] :
        down = 1
    new_position.sort()
    row = new_position[0][0]
    col = new_position[0][1]
    tiles = ""
    for position in new_position :
      j = position[0]
      i = position[1]
      tiles += new_board[j][i]
    return [row,col,down,tiles]
def play(row,col,down,tiles,board):
    new_board = place_tiles(row,col,down,tiles,board)[1]
    lis_words_board = (get_all_words(board))[0]
    lis_words_new_board = (get_all_words(new_board))[0]
    for word in lis_words_board :
      if word in lis_words_new_board :       
        lis_words_new_board.remove(word)
    if lis_words_new_board == [] :
      return -1
    score = 0
    for word in lis_words_new_board :
      for letter in word :
        score += get_value(letter)
    if len(tiles) >= 7 :
      return score+50
    return score
def best_play(tiles,board):
    the_best = []
    for i in range(len(board[0])) :
      for j in range(len(board)) :
        for down in range(2) :
          score = play(j,i,down,tiles,board)
          if score == -1 :
            the_best.append([-1,-1,-1,-1])
          else :
            the_best.append([score,j,i,down])
    the_best.sort()
    the_best.reverse()
    if the_best[0][0] == -1 :
      return [-1,-1,-1,-1]
    the_best_j = [the_best[0]]
    for i in range(1,len(the_best)) :
      if the_best[i][0] == the_best[0][0] :
        the_best_j.append(the_best[i])
    the_best_j.sort()
    return the_best_j[0]

00330: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_20.0
[[-1, 5-1, 7-1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1178, 'const': 350, 'code+const': 1528}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    yes = []; no = []
    for i in range(15) :
        for j in range(15) :
            x = board[i][j]
            if x != '' :
                if i == 0 or board[i-1][j] == '' :
                    m = 1 ; word0 = x
                    while i+m < 15 and board[i+m][j] != '' :
                        word0 += board[i+m][j]
                        m += 1
                    if len(word0) > 1 :
                        if is_valid(word0) : yes.append(word0)
                        else : no.append(word0)
                if j == 0 or board[i][j-1] == '' :
                    n = 1 ; word1 = x
                    while j+n < 15 and board[i][j+n] != '':
                        word1 += board[i][j+n]
                        n += 1
                    if len(word1) > 1 :
                        if is_valid(word1) : yes.append(word1)
                        else : no.append(word1)
    return [sorted(yes),sorted(no)]
def get_play(board, new_board):
    for i in range(15) :
        for j in range(15) :
            x = new_board[i][j]
            if x != '' and board[i][j] == '' :
                wordOut = x
                m = 1
                while j+m < 15 and new_board[i][j+m] != '' : 
                    if board[i][j+m] == '' : wordOut += new_board[i][j+m]
                    m += 1
                if len(wordOut) > 1 : return [i,j,0,wordOut]
                n = 1
                while i+n < 15 and new_board[i+n][j] != '' : 
                    if board[i+n][j] == '' : wordOut += new_board[i+n][j]
                    n += 1
                if len(wordOut) > 1 : return [i,j,1,wordOut]
                return [i,j,0,wordOut]
def play(row,col,down,tiles,board):
    valid,new_board = place_tiles(row,col,down,tiles,board)
    newBoardWord = get_all_words(new_board)
    if not valid or newBoardWord[1] != [] : return -1
    check = False
    score = 0
    if len(tiles) >= 7 : score = 50
    onlyNewWord = newBoardWord[0]
    for word in get_all_words(board)[0] :
        if word in onlyNewWord : onlyNewWord.remove(word)
    for word in onlyNewWord :
        for ch in word : score += get_value(ch)
    return score
def best_play(tiles,board):
    scoreList = []
    if board == make_board() :
        x = len(tiles)
        a = 0
        if x < 8 : a = 8-x
        return [play(a,7,1,tiles,board),a,7,1]
    else:
        for i in range(15) :
            for j in range(15) :
                for down in range(2) :
                    valid,newBoard = place_tiles(i,j,down,tiles,board)
                    if valid and get_all_words(newBoard)[1] == [] :
                        scoreList.append([-play(i,j,down,tiles,board),i,j,down])
    if scoreList == [] : return [-1,-1,-1,-1]
    else:
        a,b,c,d = sorted(scoreList)[0]
        return [-a,b,c,d]

00331: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 15, 24, 17, 85, -12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 1827, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 120, 1426, -1]
test_play_150.0
[2839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1584, 'const': 288, 'code+const': 1872}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    row = []
    for i in board :
        s = ''
        for r in i :
            if r == '' :
                if s != '' :
                    row.append(s)
                s = ''
            else:
                s += r
        if s != '' :
            row.append(s)
    col = []
    for i in range(len(board[0])):
        s = ''
        for r in range(len(board)):
            if board[r][i] == '':
                if s != '':
                    col.append(s)
                s = ''
            else:
                s += board[r][i]
        if s != '':
            col.append(s)
    r1 = []
    r2 = []
    for i in row :
        if is_valid(i) :
            r1.append(i)
        else:
            if len(i) >= 2 :
                r2.append(i)
    for i in col :
        if is_valid(i) :
            r1.append(i)
        else:
            if len(i) >= 2:
                r2.append(i)
    r1.sort()
    r2.sort()
    return [r1,r2]
def get_play(board, new_board):
    board3 = make_board()
    for i in range(len(board[0])):
        for r in range(len(board)):
            if board[r][i] != new_board[r][i]:
                if board[r][i] != '':
                    board3[r][i] = board[r][i]
                elif new_board[r][i] != '':
                    board3[r][i] = new_board[r][i]
    row = []
    for i in board3:
        s = ''
        for r in i:
            if r != '' :
                s += r
        if s != '' :
            row.append(s)
    col = []
    for i in range(len(board3[0])):
        s = ''
        for r in range(len(board3)):
            if board3[r][i] != '' :
                s += board3[r][i]
        if s != '' :
            col.append(s)
    def get_index(A,board) :
        for i in range(len(board)) :
            if A in board[i] :
                return [i,board[i].index(A)]
    if len(row) > len(col) :
        r1 = get_index(col[0][0], board3)[0]
        r2 = get_index(col[0][0], board3)[1]
        result = [r1, r2, 1, col[0]]
        return result
    elif len(row) < len(col) :
        r1 = get_index(row[0][0], board3)[0]
        r2 = get_index(row[0][0], board3)[1]
        result = [r1, r2, 0, row[0]]
        return result
    else:
        r1 = get_index(col[0], board3)[0]
        r2 = get_index(col[0], board3)[1]
        result = [r1, r2, 0, col[0]]
        return result
def play(row,col,down,tiles,board):
    s1 = get_all_words(board)
    valid, board = place_tiles(row,col,down,tiles,board)
    s2 = get_all_words(board)
    if valid == False :
        return -1
    if len(s2[1]) != 0 :
        return -1
    s3 = []
    for i in s2[0] :
        if is_valid(i) and i not in s1[0]:
            s3.append(i)
    if len(s3) == 0 :
        return -1
    else:
        c = 0
        for i in s3 :
            for r in i :
                c += get_value(r)
        if len(tiles) >= 7 :
            c += 50
        return c
def best_play(tiles,board):
    s = []
    for i in range(15) :
        for r in range(15) :
            s.append([play(i,r,0,tiles,board),i,r,0])
            s.append([play(i,r,1,tiles,board),i,r,1])
    s.sort()
    s.reverse()
    if s[0][0] == -1 :
        return [-1,-1,-1,-1]
    else:
        s1 = []
        k = copy_board(board)
        for i in s :
            score,row,col,down = i
            board = place_tiles(row,col,down,tiles,board)[1]
            if len(get_all_words(board)[1]) == 0 :
                s1.append(i)
            board = k
        s2 = []
        for i in s1 :
            if i[0] == max(s1)[0] :
                s2.append(i)
        s2.sort()
        if s2[0][0] == -1 :
            return [-1,-1,-1,-1]
        return s2[0]

00332: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 1827, 28]
test_play_120.0
[411]
test_play_131.0
[9]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[2839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1438, 'const': 615, 'code+const': 2053}
check_import({'allowable': ['math']}): none
def add_word(board,list):
  for i in board:
    mode = False
    word = ''
    pos = 0
    for l in i :
      pos += 1
      if 'A'<=l<='Z':
        mode = True
        word += l
      if not('A'<=l<='Z') or (pos == 15):
        if mode:
          if len(word) < 2 :
            word = ''
            mode =False
          else :
            if is_valid(word):
              list[0].append(word)
              word = ''
              mode = False
            else :
              list[1].append(word)
              word = ''
              mode = False
def gt_sc(word):
  sc = 0
  for l in word :
    sc += get_value(l)
  return sc
def qc(data,ty):
  ans = ''
  pos = ty
  if data[pos-1] != '':
    while True:
      ans = data[pos]+ans
      pos -= 1
      if pos >= 0:
        if data[pos] == '' :
          break
      else :
        break
    if ty < 14 :
      pos = ty+1
    while True:
      ans += data[pos]
      pos += 1
      if pos < 15:
        if data[pos] == '' :
          break
      else :
        break
  else :
    while True:
      ans += data[pos]
      pos += 1
      if pos < 15:
        if data[pos] == '' :
          break
      else :
        break
  return ans
def get_all_words(board):
  data = [[],[]]
  add_word(board,data)
  boardr = copy_board(board)
  for o in range(15):
    for v in range(15):
      boardr[o][v] = board[v][o]
  add_word(boardr,data)
  data[0].sort()
  data[1].sort()
  return data
def get_play(board, new_board):
  data =[]
  for i in range(15):
    for l in range(15):
      if board[i][l] != new_board[i][l] :
        data.append([new_board[i][l],i,l])
  word = ''
  for o in data :
    word += o[0]
  dw = 1
  if len(data) == 1 or (data[0][1]-data[-1][1])>=0 :
    dw = 0
  ans = [data[0][1],data[0][2],dw,word]
  return ans
def play(row,col,down,tiles,board):
  data = []
  ob = copy_board(board)
  be = place_tiles(row,col,down,tiles,board)[1]
  if down == 1 :
      for i in range (15):
        data.append(be[i][col])
      word = qc(data,row)
  else :
    data = be[row]
    word = qc(data,col)
  if is_valid(word):
    sc = gt_sc(word)
    if len(tiles)>=7 :
      sc += 50
  else :
    return -1
  board = place_tiles(row,col,down,tiles,board)[1]
  old = get_all_words(ob)[0]+[word.upper()]
  new = get_all_words(board)[0]
  for e in new :
    if not e in old :
      sc += gt_sc(e)
  return sc
def best_play(tiles,board):
  data = []
  for x in range (15):
    for y in range(15):
      m = place_tiles(x,y,0,tiles,board)
      n = place_tiles(x,y,1,tiles,board)
      if m[0]:
        data.append([x,y,0])
      if n[0]:
        data.append([x,y,1])
  final = []
  for i in range(len(data)) :
    sc = play(data[i][0],data[i][1],data[i][2],tiles,board)
    if not sc == -1 and len(get_all_words(place_tiles(data[i][0],data[i][1],data[i][2],tiles,board)[1])[1]) == 0:   
      final.append([-1*sc]+data[i])
  final.sort()
  if len(final) == 0 :
    return [-1,-1,-1,-1]
  final[0][0] *= -1
  if len(tiles) == 1 :
    final[0][3] = 0
  return final[0]

00333: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 15, 24, 17, 85, 012]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 1827, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 120, 1426, -1]
test_play_150.0
[2839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 816, 'const': 362, 'code+const': 1178}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    word =""
    for i in range(15):
        word += " "
        for j in range(15):
            if board[i][j] != "":
                word += board[i][j]
            else:
                word += " "
    for i in range(15):
        word += " "
        for j in range(15):
            if board[j][i] != "":
                word += board[j][i]
            else:
                word += " "
    output = [[],[]]
    word = word.split()
    word.sort()
    for i in word:
        if len(i) >= 2:
            if is_valid(i):
                output[0].append(i)
            else:
                output[1].append(i)
    return output
def get_play(board, new_board):
    word = "" ; locate = [] ; d = 0 ; high = []
    for i in range(15):
        for j in range(15):
            if board[i][j] != new_board[i][j]:
                word += new_board[i][j]
                locate += [[i,j]]
                high += [i]
    if high[-1] > high[0] :
        d = 1
    return [(locate[0])[0],(locate[0])[1],d,word]
def play(row,col,down,tiles,board):
    valid, new_board = place_tiles(row,col,down,tiles,board)
    if valid == False:
        return -1
    old_word = get_all_words(board)
    new_word = get_all_words(new_board)
    if len(new_word[1])-len(old_word[1]) > 0:
        return -1
    tam = 0
    for i in new_word[0]:
        if i not in old_word[0]:
            for ch in i:
                tam += get_value(ch)
    if len(tiles) >= 7:
        tam += 50
    return tam
def best_play(tiles,board):
    all_possible = []
    for i in range(15):
        for j in range(15):
            for k in range(2):
                all_possible += [[play(i,j,k,tiles,board),i,j,k]]
    all_possible.sort()
    Max = (all_possible[-1])[0]
    Listt = []
    for i in all_possible:
        if i[0] == Max:
            Listt += [i]
    if Max == -1:
        return [-1,-1,-1,-1]
    return Listt[0]

00334: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1480, 'const': 392, 'code+const': 1872}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words = []
    invalid_words = []
    list_word = []
    word=''
    word2 = ''
    for n in range(15):
        for i in range(15):
            if i == 14 and board[n][i-1]!='':
                word+= board[n][i]
                list_word.append(word)
                word = ''
            elif i !=14 and board[n][i] != '' and board[n][i+1] != '' :
                word += board[n][i]
            elif i != 0 and i != 14 and board[n][i] != '' and board[n][i-1] != '' and board[n][i+1] == '':
                word += board[n][i]
                list_word.append(word)
                word =''
    for m in range(15):
        for k in range(15):
            if k == 14 and board[k-1][m]!='':
                word2+= board[k][m]
                list_word.append(word2)
                word2 = ''
            elif k!= 14 and board[k][m] != '' and board[k+1][m] != '':
                word2 += board[k][m]
            elif k != 0 and k!=14 and board[k][m] != '' and board[k-1][m]!=''and board[k+1][m] == '':
                word2 += board[k][m]
                list_word.append(word2)
                word2 = ''
    list_word.sort()
    for a in list_word:
         if is_valid(a) == True and a != '' and len(a)>1:
                valid_words.append(a)
         elif is_valid(a) == False and a!= ''and len(a)>1:
                invalid_words.append(a)
    return [valid_words,invalid_words]
def get_play(board, new_board):
    result = [0,0,0,""]
    h = 0
    z=0
    x = []
    for k in range(15):
        for m in range(15):
            if board[k][m]!=new_board[k][m]:
                result[3]+=new_board[k][m]
                if len(result[3]) == 2:
                    x.append(str(k))
                    x.append(str(m))
    for l in range(15):
        for n in range(15):
            if board[l][n] != new_board[l][n]:
                result[0] = l
                result[1] = n
                diff_row = l
                diff_col = n
                h+=1
                break
        if h!=0:
          break
    if len(result[3]) == 1:
        result[2] = 0
    elif  diff_row-int(x[0]) == 0:
        result[2] = 0
    elif diff_col-int(x[1]) == 0:
        result[2] = 1
    return result
def play(row,col,down,tiles,board):
    score = 0
    new_board = place_tiles(row,col,down,tiles,board)
    x = get_all_words(new_board[1])
    y = get_all_words(board)
    for a in y[0]:
      if a in x[0]:
        x[0].remove(a)
    for i in x[0]:
      for n in range(len(i)):
        if is_valid(i) == True:
          score += get_value(i[n])
    if score == 0:
      return -1
    if len(tiles)>=7:
      score+=50
    if len(x[1])!=0:
      score = -1
    return score
def best_play(tiles,board):
    row = 0
    col = 0
    down = 0
    score = 0
    for i in range(15):
      for j in range(15):
          for k in range(2):
            if place_tiles(i,j,k,tiles,board)[0] == True:
              if score<play(i,j,k,tiles,board) :
                score = play(i,j,k,tiles,board)
                row = i
                col = j
                down = k
    if score == 0:
           return [-1,-1,-1,-1]
    return [score, row, col, down]

00335: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1070, 'const': 428, 'code+const': 1498}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    list_word = []
    word=""
    for i1 in board:
        word=""
        for i2 in i1:
            if i2 in ["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"]:
                word+=i2
            else:
                if word!="" and len(word)>1:
                    list_word+=[word]
                    word=""
                else:
                    word=""
        if word!="" and len(word)>1:
            list_word+=[word]
    word=""
    for j1 in range(15):
        word=""
        for j2 in board:
            if j2[j1] in ["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"]:
                word+=j2[j1]
            else:
                if word!="" and len(word)>1:
                    list_word+=[word]
                    word=""
                else:
                    word=""
        if word!="" and len(word)>1:
            list_word+=[word]
    valid_words = []
    invalid_words = []
    for w in list_word:
        if is_valid(w):
            valid_words+=[w]
        else:
            invalid_words+=[w]
    valid_words.sort()
    invalid_words.sort()
    return [valid_words,invalid_words]
def get_play(board, new_board):
    row=[]
    col=[]
    tiles=""
    for j in range(15):
        for i in range(15):
            if board[i][j]!=new_board[i][j]:
                row+=[i]
                col+=[j]
                tiles+=new_board[i][j]
    if len(tiles)==1:
        return [row[0],col[0],0,tiles]
    for r in row[1::]:
        if row[0]!=r:
            return [row[0],col[0],1,tiles]
        else:
            return [row[0],col[0],0,tiles]
def play(row,col,down,tiles,board):
    new_board = place_tiles(row,col,down,tiles,board)[1]
    b1 = get_all_words(board)
    b2 = get_all_words(new_board)
    word=b2[0]
    for b in b1[0]:
        if b in b2[0]:
            word.remove(b)
    score = 0
    if place_tiles(row,col,down,tiles,board)[0]==False or get_all_words(new_board)[1]!=[]:
        return -1
    else:
        for w1 in word:
            for w2 in w1:
                for ch in w2:
                    score+=get_value(ch)
        if len(tiles)>6:
            score+=50
        return score
def best_play(tiles,board):
    list_best_play=[]
    for i in range(15):
        for j in range(15):
            if place_tiles(i,j,0,tiles,board)[0] and play(i,j,0,tiles,board)!=-1:
                list_best_play.append([(-1)*play(i,j,0,tiles,board),i,j,0])
            if place_tiles(i,j,1,tiles,board)[0] and play(i,j,1,tiles,board)!=-1:
                list_best_play.append([(-1)*play(i,j,1,tiles,board),i,j,1])
    if list_best_play==[]:
      return [-1,-1,-1,-1]
    list_best_play=min(list_best_play)
    list_best_play=[(-1)*int(list_best_play[0])]+list_best_play[1::]    
    return list_best_play

00336: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_10.0TypeError('can only concatenate str (not "int") to str')
[]
test_get_all_words_20.0TypeError('can only concatenate str (not "int") to str')
[]
test_get_all_words_30.0TypeError('can only concatenate str (not "int") to str')
[]
test_get_all_words_40.0TypeError('can only concatenate str (not "int") to str')
[]
test_get_all_words_50.0TypeError('can only concatenate str (not "int") to str')
[]
test_get_all_words_60.0TypeError('can only concatenate str (not "int") to str')
[]
test_get_all_words_70.0TypeError('can only concatenate str (not "int") to str')
[]
test_get_all_words_80.0TypeError('can only concatenate str (not "int") to str')
[]
test_get_all_words_90.0TypeError('can only concatenate str (not "int") to str')
[]
test_get_all_words_100.0TypeError('can only concatenate str (not "int") to str')
[]
test_get_play_10.0
[[0, 0, 17, '']6, [0, 0, 1, 'ICE'], [07, 04, 10, 'JUICED'], [04, 05, 1, 'INFJUICEDSIVE'], [6, 8, 0, 'M']]
test_get_play_20.0
[[0, 0, 1, ''], [0, 07, 1, 'MALEATE'], [05, 06, 1, 'MALEJAUTREY'], [05, 08, 1, 'MALEJARUTEREWYTH'],
 [01, 08, 10, 'MOLEHUNTALEJARUTEREWYTH'],
 [02, 014, 1, 'MOLEHUNTARLAEVJARIUTESREWEYTSH'],
 [0, 10, 10, 'TOGAMOLEHUNTARLAEVJARIUTESREWEYTSH'],
 [05, 013, 1, 'TOGAMOLEHUNTARLAEVJARPIUTEOSREWZEYTSH'],
 [05, 05, 1, 'TOGAMOLEHUNTARLAEVAJARPIBUTEOSAREWZENYTSDH'],
 [2, 10, 0, 1, 'TOGAMOLEHUNTACOYERLAEVAJARPIBUTE'], [10, 2, 0, 'FOOSAREWZENYTSDH']]
test_get_play_30.0
[[06, 06, 1, 'HERXUNIASERETINASNIAS']]
test_get_play_40.0
[[07, 01, 10, 'INHERITANCE']]
test_get_play_50.0
[[06, 09, 1, 'MCANT']]
test_get_play_60.0
[[06, 07, 1, 'MANCT']]
test_get_play_70.0
[[07, 03, 10, 'COMANDER']]
test_get_play_80.0
[[06, 06, 10, 'ATO']]
test_get_play_90.0
[[06, 07, 10, 'MAN']]
test_get_play_100.0
[[0, 0, 1, ''], [0, 07, 1, 'HEPATICS'], [01, 03, 10, 'HMAILESPATICS'], [07, 06, 1, 'HMAILESPATICASRREAR'],
 [2, 0, 0, 1, 'HMAILESEASIEDPATICASRREAR'],
 [013, 06, 10, 'HMAILESEASIEDPATICASRREARSAHIWAL'],
 [03, 013, 1, 'HMAILESEASIEDPAMTIICCRASORLROEGAIRESAHIWALS'],
 [014, 07, 10, 'HMAILESEASIEDPAMTIICCRASORLROEGAIRESAHIWALSGAS'],
 [07, 05, 1, 'HMAILESEASIEDPAMTIICCRGASOORLOROREGYAIRESAHIWALSGAS'],
 [10, 07, 10, 'HMAILESEASIEDPAMTIICCRGASOORLORORESHIPSGYAIRESAHIWALSGAS'],
 [02, 011, 1, 'HMAILESEASIEDPMAAMTLIIECCFRGASIOORCLOREORESHIPSGYAIRESAHIWALSGAS'],
 [0, 10, 1, 'HDMAILESOEASIEDPOMALAMTALIINECCFRGASIOORCLOREORESHIPSGYAIRESAHIWALSGAS'],
 [04, 09, 1, 'HDMAILESOEASIEDPOMALAMTPALIIONECCGFRGASEIOORYCLOREORESHIPSGYAIRESAHIWALSGAS'],
 [0, 014, 1, 'HDAMAILESOGEASIEDPOMRALAMOTPALISIONECCGFRGASEIOORYCLOREORESHIPSGYAIRESAHIWALSGAS'],
 [03, 02, 1,
  'HDAMAILESOGEASIEDPOMRTALAMOOTPALISNIONECICGFREGASEIOSORYCLTOREORESHIPSGYAIRESAHIWALSGAS'],
 [09, 01, 1,
  'HDAMAILESOGEASIEDPOMRTALAMOOTPALISNIONECICGFREGASEIOSORYCLSTOREOLRESHIPSGIYAICREESAHIWALSSGAS'],
 [04, 0, 10,
  'HDAMAILESOGEASIEDPOMRTALAMOCROONYTPALISNIONECICGFREGASEIOSORYCLSTOREOLRESHIPSGIYAICREESAHIWALSSGAS'],
 [07, 014, 1,
  'HDAMAILESOGEASIEDPOMRTALAMOCROONYTPALISNIONECICGFREGASEIODSORYCLISTOREOXLRESHIPSGIIYAITCREESAHIWALSSGAS'],
 [011, 04, 1,
  'HDAMAILESOGEASIEDPOMRTALAMOCROONYTPALISNIONECICGFREGASEIODSORYCLISTOREOXLRESHIPSGIIPYAITCIREENSAHIWALSSSGAS'],
 [05, 0, 1,
  'HDAMAILESOGEASIEDPOMRTALAMOCROONYTPALISANIONECRICGFREEGASEIODDSORYCLISTOREOXLRESHIPSGIIPYAITCIREENSAHIWALSSSGAS'],
 [0, 01, 10,
  'GRAFTHDA'], [12, 9, 0, 'MAILESOGEASIEDPOMRTALAMOCROONYTPALISANIONECRICGFREEGASEIODDSORYCLISTOREOXLRESHIPSGIIPYAITCIREENSAHIWALSSSGAS'],
 [06, 04, 1,
  'GRAFTHDAMAILESOGEASIEDPOMRTALAMOCROONYTPALISANIONECRICGFREEGASEIODDSORYCLISTOREOXLRESHIPSGIIPYAITCIRMOEENSAHIWALSSSGASB'],
 [011, 012, 1,
  'GRAFTHDAMAILESOGEASIEDPOMRTALAMOCROONYTPALISANIONECRICCGFREEAGASEIODDSBORYCLISTOREOXLRESHIPSGIIPYAITCIRMOEENSAHIWALSSSGAS']]
test_play_10.0NameError("name 'place_tile' is not defined")
[]
test_play_20.0NameError("name 'place_tile' is not defined")
[]
test_play_30.0NameError("name 'place_tile' is not defined")
[]
test_play_40.0NameError("name 'place_tile' is not defined")
[]
test_play_50.0NameError("name 'place_tile' is not defined")
[]
test_play_60.0NameError("name 'place_tile' is not defined")
[]
test_play_70.0NameError("name 'place_tile' is not defined")
[]
test_play_80.0NameError("name 'place_tile' is not defined")
[]
test_play_90.0NameError("name 'place_tile' is not defined")
[]
test_play_100.0NameError("name 'place_tile' is not defined")
[]
test_play_110.0NameError("name 'place_tile' is not defined")
[]
test_play_120.0NameError("name 'place_tile' is not defined")
[]
test_play_130.0NameError("name 'place_tile' is not defined")
[]
test_play_140.0NameError("name 'place_tile' is not defined")
[]
test_play_150.0NameError("name 'place_tile' is not defined")
[]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 750, 'const': 319, 'code+const': 1069}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    word=''
    sloth=[]
    beard=[]
    blird=[]
    for a in board:
        for b in range(len(a)-1):
            if a[b] in 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ':
                word+=b
                if a[b+1] not in 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ':
                    sloth.append(word)
                    word=''
        if len(word)>0 :
            sloth.append(word+a[b+1])
    word=''
    for c in range(0,14):
        for d in range(len(board)-1):
            if board[d][c] in 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ':
                word+=board[d][c]
                if board[d+1][c] not in 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ':
                    sloth.append(word)
                    word=''
        if len(word)>0 :
            sloth.append(word+board[d+1][c])
    word=''
    for j in word:
        if is_valid(j)==True:
            beard.append(j)
        else:
            blird.append(j)
    return [beard,blird]
def get_play(board, new_board):
    blame=''
    hk=[]
    c=0
    for a in range(len(new_board)):
        for b in range(len(new_board[a])):
            if new_board[a][b]==board[a][b]:
                blame+=new_board[a][b]
                hk.append([a,b])
    if hk[0][0]==hk[1][0]:
        c=1
    jj=[hk[0][0],hk[0][1],c,blame]
    return jj
def play(row,col,down,tiles,board):
    a,b=place_tile(row,col,down,tiles,board)
    c,d=get_all_words(b)
    e,f=get_all_words(board)
    g=[]
    ha=0
    if len(d)==0:
        for i in c:
            if i not in e:
                g.append(i)
        for x in g:
            for bill in x:
                ha+=get_value(bill)
    else:
        ha=-1
    if len(tiles)>7:
        ha+=50
    return ha
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00337: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1038, 'const': 467, 'code+const': 1505}
check_import({'allowable': ['math']}): none
def add_word(answer,word): 
  if(is_valid(word)==True):
    answer[0].append(word)
  elif(len(word)>=2):
    answer[1].append(word)
  return answer,""
def get_all_words(board):
    answer = [[],[]]
    word = ""
    word1 = ""
    for i in range(15):
      answer,word = add_word(answer,word)
      answer,word1 = add_word(answer,word1)
      for j in range(15):
        if(get_value(board[i][j])!=-1):
          word = word+board[i][j]
        else:
          answer,word = add_word(answer,word)
        if(get_value(board[j][i])!=-1):
          word1 = word1+board[j][i]
        else:
          answer,word1 = add_word(answer,word1)
    answer,word = add_word(answer,word)
    answer,word1 = add_word(answer,word1)
    answer[0].sort()
    answer[1].sort()
    return answer
def get_play(board, new_board):
  answer = [-1,-1,0,""]
  for i in range(15):
    for j in range(15):
      if(board[i][j]!=new_board[i][j]):
        newi = i
        newj = j
        answer = [i,j,answer[2],answer[3]+new_board[i][j]]
        while(newi<14 and new_board[newi][j]!=""):
          newi+=1
          if(board[newi][j]!=new_board[newi][j]):
            answer[3] = answer[3]+new_board[newi][j]
            answer[2]=1
        while(newj<14 and new_board[i][newj]!=""):
          newj+=1
          if(board[i][newj]!=new_board[i][newj]):
            answer[3] = answer[3]+new_board[i][newj]
        break
    if(answer[0]!=-1):
      break
  return answer
def play(row,col,down,tiles,board):
  score = 0
  if(len(tiles)>=7):
    score = 50
  valid,newboard = place_tiles(row,col,down,tiles,board)
  if valid == False:
    return -1
  all_word_newboard = get_all_words(newboard)
  all_word_board = get_all_words(board)
  if(len(all_word_newboard[1])!=0):
    return -1
  while (len(all_word_board[0])!=0):
    if(all_word_board[0][0] in all_word_newboard[0]):
       all_word_newboard[0].remove(all_word_board[0][0])
       all_word_board[0].remove(all_word_board[0][0])
    else:
       all_word_board[0].remove(all_word_board[0][0])
  for newword in all_word_newboard[0]:
    for letter in newword:
      score = score+get_value(letter)
  return score
def best_play(tiles,board):
  maxscore = [-1,-1,-1,-1]
  for row in range(15):
    for col in range(15):
      for down in range(2):
        score = play(row,col,down,tiles,board)
        if(score>maxscore[0]):
          maxscore = [score,row,col,down]
  return maxscore

00338: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1516, 'const': 455, 'code+const': 1971}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    boardY = []
    val = []
    inval = []
    for No in range(15) :
      listY = []
      for lineY in board :
        listY.append(lineY[No])
      boardY.append(listY)
    for lineY in boardY :
      word = ''
      for ch in lineY :
        if 'A' <= ch.upper() <= 'Z' :
          word += ch.upper()
        else : 
          word += ','
      for wordi in word.split(",") :
        if len(wordi) >= 2 :
          if is_valid(wordi) :  
            val.append(wordi)
          else :
            inval.append(wordi) 
    for lineX in board :
      word = ''
      for ch in lineX :
        if 'A' <= ch <= 'Z' :
          word += ch
        else : 
          word += ','
      for wordi in word.split(',') :
        if len(wordi) >= 2 :
          if is_valid(wordi) :
            val.append(wordi)
          else:
            inval.append(wordi) 
    return [sorted(val),sorted(inval)]
def get_play(board, new_board):
    word = ''
    c = 0
    for i in range(15):
      d = 0
      for j in range(15) :
        if new_board[i][j] != board[i][j]:
          c += 1
          d += 1
          word += new_board[i][j]
          if c == 1 :
            row = i
            col = j
          if d == 1 :
            down = 1
          elif d >= 2 :
            down = 0
    if len(word) == 1 :
      down = 0      
    return [row,col,down,word]
def play(row,col,down,tiles,board):
    boardY = []
    logic, new_board = place_tiles(row,col,down,tiles,board)
    new_boardY = []
    Ans = []
    Score = 0
    for No in range(15) :
      listY = []
      NewY = []
      for lineY in board :
        listY.append(lineY[No])
      for NewLineY in new_board:
        NewY.append(NewLineY[No])
      boardY.append(listY)
      new_boardY.append(NewY)
    for i in range(15):
      TempX = ""
      TempY = ""
      TempNewX = ""
      TempNewY = ""
      for j in range(15) :
        if board[i][j] == "":
          TempX += " "
        TempX += board[i][j]
        if boardY[i][j] == "":
          TempY += " "
        TempY += boardY[i][j]
        if new_board[i][j] == "":
          TempNewX += " "
        TempNewX += new_board[i][j]
        if new_boardY[i][j] == "":
          TempNewY += " "
        TempNewY += new_boardY[i][j]
      TempX = TempX.split()
      TempY = TempY.split()
      TempNewX = TempNewX.split()
      TempNewY = TempNewY.split()
      for word in TempX:
        if is_valid(word) and word in TempNewX:
          TempNewX.remove(word)
      for word in TempY:
        if is_valid(word) and word in TempNewY:
          TempNewY.remove(word)
      for word in TempNewX:
        if is_valid(word):
          Ans.append(word)
        elif len(word) >= 2 and not is_valid(word):
          logic = False
      for word in TempNewY:
        if is_valid(word):
          Ans.append(word)
        elif len(word) >= 2 and not is_valid(word):
          logic = False
    for word in Ans:
      for ch in word:
        Score += get_value(ch)
    if len(tiles) >= 7:
        Score += 50
    if not logic:
        Score = -1
    return Score
def best_play(tiles,board):
    oupscore = {}
    towant = []
    for i in range(15):
      for j in range(15):
        score0 = play(j,i,0,tiles,board)
        score1 = play(j,i,1,tiles,board)
        if score0 > 0 :
          oupscore[j,i,0] = score0
        if score1 > 0 :
          oupscore[j,i,1] = score1
    if oupscore == {} :
      return[-1,-1,-1,-1]
    else :
      maxwant = max(list(oupscore.values()))
      for item in oupscore :
        if oupscore[item] ==  maxwant :
          towant.append(list(item))
      point = min(towant)
      r,c,d = point
      return [maxwant,r,c,d]

00339: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 3728]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 246, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1148, 'const': 368, 'code+const': 1516}
check_import({'allowable': ['math']}): none
def for_best_play(down,tiles,board):
  best_p = []
  for i in range(len(board)):
      for j in range(len(board)):
            valid, n_board = place_tiles(i,j,down,tiles,board)
            if valid == True:
              r, c, d, t = get_play(board,n_board)
              score = play(r,c,d,t,board)
              if score == -1: 
                best_p.append([-1,-1,-1,-1])
              else:
                best_p.append([score,r,c,d])
  return best_p
def get_all_words(board):
  valid_words = []
  invalid_words = []
  words_d0 = ''
  for r in board:
      words_d0 += ' '
      for ch in r:
          if 'A' <= ch <= 'Z':
              words_d0 += ch
          else: words_d0 += ' '
  words_d1 = ''
  for r in range(len(board)):
      words_d1 += ' '
      for c in range(len(board)):
          ch = board[c][r]
          if 'A' <= ch <= 'Z':
              words_d1 += ch
          else: words_d1 += ' '
  w = sorted((words_d0 + words_d1).split())
  for e in w:
      if len(e) >= 2:
          if is_valid(e):
              valid_words.append(e)
          else:
              invalid_words.append(e)
  return [sorted(valid_words), sorted(invalid_words)]
def get_play(board, new_board):
  data = []
  down = 0
  for r in range(len(board)):
    for c in range(len(board)):
      if board[r][c] != new_board[r][c]:
        data.append([r,c,down,new_board[r][c]])
  tiles = ''
  row,column = data[0][0],data[0][1]
  for r,c,d,ch in data:
    tiles += ch
    if r-row != 0 and c-column == 0: down = 1
  return [row,column,down,tiles]
def play(row,col,down,tiles,board):
  new_board = place_tiles(row,col,down,tiles,board)
  if new_board[0] == False:
    return -1
  board_bf = get_all_words(board)[0] 
  board_af = get_all_words(new_board[1]) 
  if board_af[1] != []: return -1
  score = 0
  same_w = []
  for w in board_af[0]:
    c_board_bf = board_bf.count(w)
    c_board_af = board_af[0].count(w)
    total = abs(c_board_af - c_board_bf)
    if w not in board_bf:
      for ch in w:
        score += get_value(ch)
    elif total > 0:
      if w not in same_w:
        s = 0
        for ch in w:
          s += get_value(ch)
        score += s*total
        same_w.append(w)
  if score == 0: return -1
  if len(tiles) >= 7: 
    score += 50
  return score
def best_play(tiles,board):
  make_board = copy_board(board)
  best_p0 = for_best_play(0,tiles,make_board)
  best_p1 = for_best_play(1,tiles,make_board)
  best_p = best_p0 + best_p1
  if best_p != []:
    max_p = sorted(best_p)[::-1]
  else: max_p = [[-1,-1,-1,-1]]
  max_s = max_p[0][0]
  f = []
  for s,r,c,d in max_p:
    if s == max_s:
      f.append([s,r,c,d])
  final = sorted(f)
  return final[0]

00340: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1052, 'const': 339, 'code+const': 1391}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    wlist = [[],[]]
    word = ''
    for i in range(15):
        for j in range(15):
            if board[i][j].isalpha() == 1:
                word += board[i][j]
            else:
                if len(word) >= 2:
                    if is_valid(word) == 1:
                        wlist[0].append(word)
                    else:
                        wlist[1].append(word)       
                word = ''
        if len(word) >= 2:
            if is_valid(word) == 1:
                wlist[0].append(word)
            else:
                wlist[1].append(word)
        word = ''
    for i in range(15):
        for j in range(15):
            if board[j][i].isalpha() == 1:
                word += board[j][i]
            else:
                if len(word) >= 2:
                    if is_valid(word) == 1:
                        wlist[0].append(word)
                    else:
                        wlist[1].append(word)       
                word = ''
        if len(word) >= 2:
            if is_valid(word) == 1:
                wlist[0].append(word)
            else:
                wlist[1].append(word)
        word = ''
    wlist[0].sort()
    wlist[1].sort()                
    return wlist
def get_play(board, new_board):
    word = ''
    pos1 = [-1,-1]
    pos2 = [-1,-1]
    for i in range(15):
        for j in range(15):
            if board[i][j] != new_board[i][j]:
                word += new_board[i][j]
                if pos1[0] == -1:
                    pos1[0] = i
                    pos1[1] = j
                elif pos2[0] == -1:
                    pos2[0] = i
                    pos2[1] = j
    if len(word) == 1:
        down = 0
    elif pos1[0] == pos2[0]:
        down = 0
    else:
        down = 1
    return [pos1[0],pos1[1],down,word]
def play(row,col,down,tiles,board):
    tscore = 0
    word = get_all_words(board)[0]
    inword = get_all_words(board)[1]
    if not place_tiles(row, col, down, tiles, board)[0]:
        return -1
    else:
        board = place_tiles(row, col, down, tiles, board)[1]
    word2 = get_all_words(board)[0]
    inword2 = get_all_words(board)[1]
    for w in inword2:
        if w not in inword:
            return -1
        else:
            index = inword.index(w)
            inword[index] = ''
    for w in word2:
        if w not in word:
            score = 0
            for i in w:
                score += get_value(i)
            tscore += score
        else:
            index = word.index(w)
            word[index] = ''
    if len(tiles) > 6:
        tscore += 50
    return tscore
def best_play(tiles,board):
    best = -1
    info = [-1, -1, -1]
    for i in range(15):
        for j in range(15):
            for down in range(2):
                score = play(i, j, down, tiles, board)
                if best < score:
                    best = score
                    info = [i, j, down]
    return [best]+info

00341: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0
[50-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 1928]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 206, -13]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1694, 'const': 296, 'code+const': 1990}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  word_x = []
  word_x_invalid = []
  for i in range(len(board)):
      member = board[i]
      data = ""
      for j in range(len(member)):
          if member[j] != "":
              if j == 0 and member[j+1] == "":
                  pass
              elif (j == (len(member)-1)) and member[j-1] == "":
                  pass
              elif 0<j<(len(member)-1) and member[j-1] == "" and member[j+1] == "":
                  pass
              else:
                  data += member[j]
                  if j+1 == len(member):
                      if is_valid(data) == True:
                          word_x.append(data)
                      else:
                          if data != "" and len(data) > 1:
                              word_x_invalid.append(data)
                              data = ""
          else:
              if is_valid(data) == True:
                  word_x.append(data)
                  data = ""
              else:
                  if data != "" and len(data) > 1:
                      word_x_invalid.append(data)
                      data = ""
  new_board = []
  for k in range(len(board)):
      new_board.append([])
  for e in board:
      for i in range(len(e)):
          new_board[i].append(e[i])
  for e in new_board:
      pass
  word_y = []
  word_y_invalid = []
  for i in range(len(new_board)):
      member = new_board[i]
      data = ""
      for j in range(len(member)):
          if member[j] != "":
              if j == 0 and member[j+1] == "":
                  pass
              elif (j == (len(member)-1)) and member[j-1] == "":
                  pass
              elif 0<j<(len(member)-1) and member[j-1] == "" and member[j+1] == "":
                  pass
              else:
                  data += member[j]
                  if j+1 == len(member):
                      if is_valid(data) == True:
                          word_y.append(data)
                      else:
                          if data != "" and len(data) > 1:
                              word_y_invalid.append(data)
                              data = ""
          else:
              if is_valid(data) == True:
                  word_y.append(data)
                  data = ""
              else:
                  if data != "" and len(data) > 1:
                      word_y_invalid.append(data)
                      data = ""
  all_word = word_y + word_x
  all_word.sort()
  all_word_invalid = word_x_invalid + word_y_invalid
  all_word_invalid.sort()
  A = [all_word,all_word_invalid]
  if A != [[],[]]:
      return A
  return [[],[]]
def get_play(board, new_board):
  word = ""
  index_data = []
  for i in range(len(board)):
      member = board[i]
      for j in range(len(member)):
          if board[i][j] != new_board[i][j]:
              word += new_board[i][j]
              index_data.append([i,j])
  if len(index_data) == 1:
      F_index_data = index_data[0]
      return [F_index_data[0],F_index_data[1],0,word]
  else:
      F_index_data = index_data[0]
      L_index_data = index_data[-1]
      if F_index_data[0] == L_index_data[0]:
          direction = 0
      else:
          direction = 1
      return [F_index_data[0],F_index_data[1],direction,word]
def play(row,col,down,tiles,board):
  Frist_all_word = get_all_words(board)
  clone_board = copy_board(board)
  Jude,new_board = place_tiles(row,col,down,tiles,clone_board)
  if Jude:
      Second_all_word = get_all_words(new_board)
      true_word = []
      for e in Second_all_word[0]:
          true_word.append(e)
      scores = 0
      if len(tiles) >= 7:
          scores += 50
      for e in true_word:
          for M in e:
              scores += get_value(M)
      for l in Frist_all_word[0]:
          if l in Second_all_word[0]:
              for M in l:
                  scores -= get_value(M)       
      if scores == 0:
          return -1
      return scores
  else:
      return -1
def best_play(tiles,board):
  All_data = []
  for i in range(len(board)):
      member = board[i]
      for j in range(len(member)):
          for k in range(0,2):
              Jude = place_tiles(i,j,k,tiles,board)[0]
              new_board = place_tiles(i,j,k,tiles,board)[1]
              if Jude == True and get_all_words(new_board)[0] != [] and get_all_words(new_board)[1] == []:
                  point = play(i,j,k,tiles,board)
                  All_data.append([-1*point,i,j,k])
  if All_data == []:
      return [-1,-1,-1,-1]
  else:
      All_data.sort()
      p,ii,jj,kk = All_data[0]
      return [-1*p,ii,jj,kk]

00342: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_20.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_90.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED',
  'ED', 'EDJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER',
   'PREQUALIFIED', 'SADUM', 'XI', 'YE'],
  ['DOMBRAINWASHING', 'EZOM', 'NT', 'OUM', 'RN', 'SEJACULATING'],
 'TZOOT' []]]
test_get_all_words_100.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS',
   'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 15, 24, 17, 85, 012]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, -128, 11, -13, -185, -11, -12, 7, 25, -17, -14, -21, -132, 12, 15, -16, -168, 6, -13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 120, 1426, -1]
test_play_150.0
[2839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_40.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [5572, 124, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_50.0
[[83, 0, 7, 1], [62, 13, 0, 0], [508, 01, 8, 0], [910, 20, 31, 0], [5068, 40, 211, 01], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 31, 132, 1], [216, 25, 113, 1], [1027, 74, 64, 01]]
bytecount: {'code': 1194, 'const': 413, 'code+const': 1607}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_word = []
    invalid_word = []
    check0 = []
    check1 = []
    for i in range(len(board)) :
      check0 = []
      for e in range(len(board[0])) :
        if board[i][e] in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' :
          check0.append(board[i][e])
          if board[i][e] == '' and len(''.join(check0)) > 1 :
            if is_valid(''.join(check0)) is True :
              valid_word.append(''.join(check0))
              check0 = []
            elif is_valid(''.join(check0)) is False :
              invalid_word.append(''.join(check0))
              check0 = []
          elif board[i][e] == '' and len(''.join(check0)) == 1 :
            check0 = []
        if board[e][i] in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' :
          check1.append(board[e][i])
          if board[e][i] == '' and len(''.join(check1)) > 1 :
            if is_valid(''.join(check1)) is True :
              valid_word.append(''.join(check1))
              check1 = []
            elif is_valid(''.join(check1)) is False :
              invalid_word.append(''.join(check1))
              check1 = []
          elif board[e][i] == '' and len(''.join(check1)) == 1 :
            check1 = []
    valid_word.sort()
    invalid_word.sort()
    return [valid_word,invalid_word]
def get_play(board, new_board):
  ans = []
  for i in range(15) :
    for e in range(15) :
      if new_board[i][e] != board[i][e] :
        ans.append([new_board[i][e],i,e])
  txt = ''
  for k in range(len(ans)) :
    txt += ans[k][0]
  con = 0
  if len(ans) > 1 and ans[0][2] == ans[-1][2] :
    con = 1
  return [ans[0][1],ans[0][2],con,txt]
def play(row,col,down,tiles,board):
    new_board = place_tiles(row,col,down,tiles,board)[1]
    point = 0
    if place_tiles(row,col,down,tiles,board)[0] == False:
      return -1
    elif place_tiles(row,col,down,tiles,board)[0] == True :
      a = get_all_words(board)
      b = get_all_words(new_board)
      for i in b[0] :
        if i not in a[0] :
          for e in i :
            point += get_value(e)
      if len(b[1]) != 0 :
        return -1    
    if len(tiles) >= 7:
      point += 50
    return point
def best_play(tiles,board):
    ans = []
    for i in range(15) :
      for c in range(15) :
        if play(i,c,0,tiles,board) != -1 :
          ans.append([play(i,c,0,tiles,board),i,c,0])
        else :
          pass
    for i in range(15) :
      for c in range(15) :
        if play(i,c,1,tiles,board) != -1 :
          ans.append([play(i,c,1,tiles,board),i,c,1])
        else :
          pass
    if len(ans) > 0 :
      for e in ans :
        e[0] = -e[0]
      ans.sort()
      best_ans = ans[0]
      best_ans[0] = -ans[0][0]
      return best_ans
    else :
      return [-1,-1,-1,-1]

00343: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 3728]
test_play_120.0
[411]
test_play_130.0
[59]
test_play_140.0
[8, 1620, 216, -19]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[68, 0, 7, 1], [87, 12, 60, 10], [10879, 41, 512, 1], [7259, 81, 80, 10], [171, 112, 93, 10], [7265, 73, 4, 1],
 [3019, 16, 81, 10], [197, 14, 92, 1], [191, 120, 21, 0], [22, 3, 108, 1]]
test_best_play_40.0
[[71, 0, 7, 1], [763, 210, 80, 10], [7863, 1, 91, 10], [149, 17, 63, 1], [2019, 813, 10, 10], [772, 214, 114, 10],
 [2517, 26, 126, 10], [258, 13, 73, 0], [218, 34, 130, 10], [136, 45, 14, 10]]
test_best_play_50.0
[[83, 0, 7, 1], [8062, 513, 80, 10], [7258, 1, 98, 10], [210, 80, 61, 10], [7468, 0, 101, 1], [1824, 126, 48, 01],
 [178, 18, 69, 1], [2310, 31, 52, 1], [321, 45, 43, 1], [1927, 14, 114, 1]]
bytecount: {'code': 1250, 'const': 324, 'code+const': 1574}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words = []
    invalid_words = []
    for i in range(15):
      j = 0
      while j < 15 :
        word = ''
        while board[i][j] != '' and j < 15:
          word+= board[i][j]
          j+=1
          if(j >= 15):
            break
        j+=1
        if len(word) > 1 :
          if is_valid(word) : 
            valid_words.append(word)
          else :
            invalid_words.append(word)
    for j in range(15):
      i = 0
      while i < 15 :
        word = ''
        while board[i][j] != '':
          word+= board[i][j]
          i+=1
          if(i >= 15):
            break
        i+=1
        if len(word) > 1 :
          if is_valid(word) : 
            valid_words.append(word)
          else :
            invalid_words.append(word)
    valid_words.sort()
    invalid_words.sort()
    return [valid_words,invalid_words]
def get_play(board, new_board):
    for i in range(15):
      word = ''
      is_save = 1
      for j in range(15):
        if j == 0 :
          if(board[i][j] != new_board[i][j] and new_board[i][j+1] != '' ):
            if is_save :
              is_save = 0
              row = i
              col = j
            word+= new_board[i][j]
        elif j == 14 :
          if(board[i][j] != new_board[i][j] and new_board[i][j-1] != '' ):
            if is_save :
              is_save = 0
              row = i
              col = j
            word+= new_board[i][j]
        else :
          if(board[i][j] != new_board[i][j] and (new_board[i][j-1] != '' or new_board[i][j+1] != '' )):
            if is_save :
              is_save = 0
              row = i
              col = j
            word+= new_board[i][j]
      if len(word) > 1:
        return [row,col,0,word]
    for j in range(15):
      word = ''
      is_save = 1
      for i in range(15):
          if(board[i][j] != new_board[i][j]):
            if is_save :
              is_save = 0
              row = i
              col = j
            word+= new_board[i][j]
      if len(word) == 1:
        return [row,col,0,word]
      elif len(word) > 1:
        return [row,col,1,word]
def play(row,col,down,tiles,board):
    new_board = place_tiles(row,col,down,tiles,board)[1]
    word = get_all_words(board)
    New_word = get_all_words(new_board)
    count_tiles = 0
    for i in range(15):
      for j in range(15):
        if board[i][j] !=new_board[i][j] :
          count_tiles +=1
    score = 0
    for i in set(New_word[0]) :
      if New_word[0].count(i) != word[0].count(i) :
        for j in i :
          score += get_value(j)
        New_word[0].pop(New_word[0].index(i))
    if score > 0 :
      if count_tiles >=7:
        score +=50
      return score
    return -1
def best_play(tiles,board):
    max = 0;
    best_play = [-1,-1,-1,-1]
    for i in range(15):
      for j in range(15):
        for k in range(2):
          score = play(i,j,k,tiles,board)
          if score > max:
            max = score
            best_play = [score,i,j,k]
    return best_play

00344: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 886, 'const': 346, 'code+const': 1232}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  a = ""
  l1 = []
  l2 = []
  for i in board:
    for j in i:
      if j == "":
        a += " "
      else:
        a += j
    a += " "
  for i in range(len(board)):
    for j in range(len(board[0])):
      if board[j][i] == "":
        a += " "
      else:
        a += board[j][i]
    a += " "
  a.upper()
  a = a.split()
  for i in a:
    if len(i) == 1:
      b = i
    elif is_valid(i) == True:
      l1.append(i)
    elif is_valid(i) == False:
      l2.append(i)
  l1.sort()
  l2.sort()
  return [l1,l2]
def get_play(board, new_board):
  l1 = []
  l2 = []
  l3 = ""
  a = -1
  for i in range(len(board)):
    for j in range(len(board[0])):
      if board[j][i] != new_board[j][i]:
        l1.append(i)
        l2.append(j)
        l3 += new_board[j][i]
  if len(l1) == 1:
     return [l2[0],l1[0],0,l3]
  elif l2[0] == l2[1]:
    a = 0
  elif l1[0] == l1[1]:
    a = 1
  return [l2[0],l1[0],a,l3]
def play(row,col,down,tiles,board):
  s = 0
  tiles.upper()
  newboard = copy_board(board)
  valid,board = place_tiles(row,col,down,tiles,newboard)
  l1 = get_all_words(board)
  l2 = get_all_words(newboard)
  if l1[1] != [] or valid == False:
    return -1
  else:
    for i in l2[0]:
      if i in l1[0]:
        l1[0].remove(i)
    for i in l1[0]:
      for j in i:
        s += get_value(j)
    if len(tiles) >= 7:
      s += 50
    return s
def best_play(tiles,board):
  a = [-1,-1,-1,-1]
  z = [[-1,-1,-1,-1]]
  for j in range(15):
    for k in range(15):
      for l in range(2):
        s = play(j,k,l,tiles,board)
        if s > a[0]:
          a = [s,j,k,l]
          z.append(a)
  return max(z)

00345: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [611, 12, 93, 0], [645, 43, 24, 01],
 [19, 86, 41, 0], [7, 64, 52, 01], [11, 10, 81, 10], [1022, 103, 58, 01]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1412, 'const': 430, 'code+const': 1842}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words = []
    invalid_words = []
    word = ''
    for i in range(15):
      word+=' '
      for j in range(15):
        if 'A'<=board[i][j]<='Z':
          word+=board[i][j]
        else:
          word+=' '
    for i in range(15):
      word+=' '
      for j in range(15):
        if 'A'<=board[j][i]<='Z':
          word+=board[j][i]
        else:
          word+=' '
    word = word.strip().split()
    word.sort()
    for e in word:
      if len(e)>=2:
        if is_valid(e)==True:
          valid_words.append(e)
        else:
          invalid_words.append(e)
    valid = [valid_words,invalid_words]
    return valid
def get_play(board, new_board):
    dif = ''
    row = []
    col = []
    for i in range(15):
      for j in range(15):
        if board[i][j]!=new_board[i][j]:
          dif+=new_board[i][j]
          row.append(i)
          col.append(j)
    if len(dif)==1:
      down = 0
    elif max(col)==min(col):
      down = 1
    elif max(row)==min(row):
      down = 0
    return [row[0],col[0],down,dif]
def play(row,col,down,tiles,board):
    old = get_all_words(board)
    board = place_tiles(row,col,down,tiles,board)[1]
    words = get_all_words(board)
    new = []
    score = 0
    if words[1]!=[]:
      return -1
    else:
      for e in words[0]:
        if e in old[0]:
            idx = old[0].index(e)
            old[0][idx] = '-'
        else:
            new.append(e)
    for e in new:
      for k in e:
        score+=get_value(k)
    if len(tiles)>=7:
      score+=50
    return score
def best_play(tiles,board):
    info = []
    for i in range(15):
      for j in range(15):
        valid,new = place_tiles(j,i,1,tiles,board)
        if valid==True and get_all_words(new)[1]==[]:
          row,col,down,t = get_play(board,new)
          score = play(row,col,down,t,board)
          info.append([score,row,col,down])
    for i in range(15):
      for j in range(15):
        valid,new = place_tiles(i,j,0,tiles,board)
        if valid==True and get_all_words(new)[1]==[]:
          row,col,down,t = get_play(board,new)
          score = play(row,col,down,t,board)
          info.append([score,row,col,down])
    if info==[]:
      return [-1,-1,-1,-1]
    else:
      m = 0
      for e in info:
        if e[0]==max(info)[0]:
          m+=1
      if m==1:
        return max(info)
      elif m>1:
        row = []
        for e in info:
          row.append(e[1])
        min_r = min(row)
        r = 0
        for e in row:
          if e==min_r:
            r+=1
        if r==1:
          idx = row.index(min_r)
          return info[idx]
        elif r>1:
          col = []
          for e in info:
            col.append(e[2])
          min_c = min(col)
          c = 0
          for e in col:
            if e==min_c:
              c+=1
          if c==1:
            idx = col.index(min_c)
            return info[idx]
          elif c>1:
            for e in info:
              if e[-1]==0:
                idx = info.index(e)
                return info[idx]
              else:
                idx = info.index(e)
                return info[idx]

00346: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1286, 'const': 420, 'code+const': 1706}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  sss = [[],[]]
  word = []
  board0 = copy_board(board)
  for i in range(15):
    for j in range(15):
      if board0[i][j]=='': board0[i][j]=' '
    b1 = ''
    for k in board0[i]: b1+=k
    b2 = b1.split(' ') 
    for j in range(len(b2)):
      if len(b2[j])>1: word.append(b2[j])
  board1 = make_board()
  for i in range(15):
    for j in range(15):
      board1[i][j] = board0[j][i]
  for i in range(15):
    for j in range(15):
      if board1[i][j]=='': board1[i][j]=' '
    b1 = ''
    for k in board1[i]: b1+=k
    b2 = b1.split(' ')
    for j in range(len(b2)):
      if len(b2[j])>1: word.append(b2[j])
  ss = sorted(word)
  for i in range(len(ss)):
    if is_valid(ss[i]) == True: sss[0].append(ss[i])
    if is_valid(ss[i]) == False: sss[1].append(ss[i])
  return sss
def get_play(board, new_board):
  newja = make_board()
  b1 = []
  b2 = []
  word = ''
  for i in range(15):
    for j in range(15):
      if board[i][j]!=new_board[i][j]:
        newja[i][j] = new_board[i][j]
        word+=new_board[i][j]
        b1.append(i)
        b2.append(j)
  row = b1[0]
  col = b2[0]
  if len(b1)==1: down=0
  elif b1[1]==b1[0]: down = 0
  else: down = 1
  return [row,col,down,word]
def play(row,col,down,tiles,board):
  valid, new_board = place_tiles(row,col,down,tiles,board)
  pts = 0
  if valid==False:
    return -1
  else:
    a1 = get_all_words(board)
    a2 = get_all_words(new_board)
    for i in range(2):
      j = 0
      while j < len(a2[i]):
        if a2[i][j] in a1[i]:
          w2 = a2[i].index(a2[i][j])
          w1 = a1[i].index(a2[i][j])
          a22 = a2[i].pop(w2)
          a11 = a1[i].pop(w1)
        else:
          j+=1
    if len(a2[1])!=0:
      return -1
    else:
      cc = a2[0]      
      for i in range(len(cc)):
        for j in range(len(cc[i])):
          pts += get_value(cc[i][j])
      if len(tiles)>=7:
        pts+=50
      return pts
def best_play(tiles,board):
  s = []
  for row in range(15):
    for col in range(15):
      for down in range(2):
        score = play(row,col,down,tiles,board)
        s.append([score,-row,-col,-down])
  ss = sorted(s,reverse=True)
  if ss[0][0] == -1:
    return [-1,-1,-1,-1]
  else:
    ss1 = [[score,-row,-col,-down] for score,row,col,down in ss]
  return ss1[0]

00347: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1126, 'const': 336, 'code+const': 1462}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    out = [[],[]]
    t = '';t1 = ''
    word = []
    for i in range(15):
      for j in range(15):
        if board[i][j] != '':
          t += board[i][j][0]
        elif board[i][j] == '':
          t += ' '
        if board[j][i] != '':  
          t1 += board[j][i][0]
        elif board[j][i] == '':
          t1 += ' '
      t_new = t.strip().split()
      t1_new = t1.strip().split()
      for e in t_new:
        if len(e)>=2:
          word.append(e)
      for p in t1_new:
        if len(p)>= 2:
          word.append(p)
      t = '';t1 = ''
    word.sort()
    for e in word:
      if is_valid(e):
        out[0].append(e)
      else:
        out[1].append(e)
    return out
def get_play(board, new_board):
    key = '';idx = []
    row = [];col = []
    for i in range(15):
        for j in range(15):
            if board[i][j] != new_board[i][j]:
                key += new_board[i][j]
                idx.append([i,j])
    row = idx[0][0]
    col = idx[0][1]
    if len(idx) == 1:
        m = 0
    else:
        if idx[1][1]-idx[0][1] == 0:
            m = 1
        else:
            m = 0 
    return [row,col,m,key]
def play(row,col,down,tiles,board):
    score = 0
    q = []
    new_board = place_tiles(row,col,down,tiles,board)[1]
    if place_tiles(row,col,down,tiles,board)[0]:
        valid = get_all_words(board)[0]
        valid1 = get_all_words(new_board)[0]
        if len(get_all_words(board)[1])<len(get_all_words(new_board)[1]):
            return -1
        for e in valid1:
            if e not in valid :
                q.append(e)
            else:
                valid.remove(e)
        for x in q:
            for p in x:
                score += get_value(p)
        if len(tiles)>=7:
            score += 50
        return score
    else:    
        return -1
def best_play(tiles,board):
    q = [];q_n =[]
    maxx = -1;maxx1 = -1
    for i in range(15):
        for j in range(15):
            if place_tiles(i,j,0,tiles,board)[0]:
                if play(i,j,0,tiles,board)>maxx:
                    maxx = play(i,j,0,tiles,board)
                    q = [maxx,i,j,0]
            if place_tiles(i,j,1,tiles,board)[0]:
                if play(i,j,1,tiles,board)>maxx1:
                    maxx1 = play(i,j,1,tiles,board)
                    q_n = [maxx1,i,j,1]
    if maxx>maxx1:
        return q
    elif maxx1>maxx:
        return q_n
    elif maxx == -1 and maxx == -1:        
        return [-1,-1,-1,-1]
    elif (maxx1 == maxx) and (len(q)!= 0 and len(q_n) != 0):
        r = [q,q_n]
        r.sort()
        return r[0]

00348: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 762, 'const': 314, 'code+const': 1076}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    v,n = [],[]
    for i in range(15):
        s,p = '',''
        for j in range(15):
            if board[j][i] != '':
                s += board[j][i]
            else:
                c_v(s,v,n)
                s = ''
            if board[i][j] != '':
                p += board[i][j]
            else:
                c_v(p,v,n)
                p = ''
        c_v(s,v,n)
        c_v(p,v,n)
    return [sorted(v),sorted(n)]
def c_v(x,v,n):
    if len(x) >= 2:
        if is_valid(x): v.append(x)
        else: n.append(x)
def get_play(board, new_board):
    t = ''
    l = []
    for i in range(15):
        for j in range(15):
            if board[i][j] != new_board[i][j]:
                t += new_board[i][j]
                l.append([i,j])
    r,c = l[0]
    if len(t) == 1:
        d = 0
    else:
        if l[0][0] == l[1][0]: d = 0
        else: d = 1
    return [r,c,d,t]
def play(row,col,down,tiles,board):
    v,n_b = place_tiles(row,col,down,tiles,board)
    s = 0 if len(tiles) < 7 else 50
    if v :
        use,n_use = get_all_words(n_b)
        cuse,cnuse = get_all_words(board)
        if len(n_use) > 0:
             return -1
        for e in use:
            if e not in cuse:
              for k in e:
                  s += get_value(k)
            else: cuse.remove(e)
        return s
    else:
        return -1
def best_play(tiles,board):
    l = [-1,-1,-1,-1]
    m = 0
    for i in range(15):
        for j in range(15):
            a = play(i,j,0,tiles,board)
            b = play(i,j,1,tiles,board)
            if a > m:
                m = a
                l = [a,i,j,0]
            if b > m:
                m = b
                l = [b,i,j,1]
    return l

00349: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0
[50-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 15, 24, 17, 85, 112]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 1827, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 120, 1426, 8-1]
test_play_150.0
[2839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_20.0
[[0-1, 5-1, 7-1, -1]]
test_best_play_30.0
[[68, 0, 7, 1], [87, 12, 60, 10], [10879, 41, 512, 1], [7259, 81, 80, 10], [171, 112, 93, 10], [7265, 73, 4, 1],
 [3019, 16, 81, 10], [197, 14, 92, 1], [191, 120, 21, 0], [22, 3, 108, 1]]
test_best_play_40.0
[[71, 0, 7, 1], [763, 210, 80, 10], [7863, 1, 91, 10], [149, 17, 63, 1], [2019, 813, 10, 10], [772, 214, 114, 10],
 [2517, 26, 126, 10], [258, 13, 73, 0], [218, 34, 130, 10], [136, 45, 14, 10]]
test_best_play_50.0
[[83, 0, 7, 1], [8062, 513, 80, 10], [583, 01, 08, 0], [3310, 0, 81, 0], [680, 20, 611, 1], [234, 146, 28, 01],
 [2618, 68, 9, 1], [2210, 1, 52, 1], [221, 15, 103, 01], [217, 34, 104, 1]]
bytecount: {'code': 1250, 'const': 484, 'code+const': 1734}
check_import({'allowable': ['math']}): [[('typing', 1)]]
from typing import Tuple
def get_all_words(board):
    valid_words=[];invalid_words=[]
    for i in range(15):
      w = ''
      for j in range(15):
        if 'A'<=board[i][j]<='Z' or 'a'<=board[i][j]<='z':
          w+=board[i][j]
        else:
          w+=' '
      words = w.strip().upper().split()
      for e in words:
        if is_valid(e)==True and len(e)>=2:
          valid_words.append(e)
        elif len(e)>=2:
          invalid_words.append(e)
    for j in range(15):
      w =''
      for i in range(15):
        if 'A'<=board[i][j]<='Z' or 'a'<=board[i][j]<='z':
          w+=board[i][j]
        else:
          w+=' '
      words = w.strip().upper().split()
      for e in words:
        if is_valid(e)==True and len(e)>=2:
          valid_words.append(e)
        elif len(e)>=2:
          invalid_words.append(e)
    valid_words.sort()
    invalid_words.sort()
    return [valid_words,invalid_words]
def get_play(board, new_board):
    w = ''
    p = []
    for i in range(15):
      for j in range(15):
        if board[i][j]!=new_board[i][j]:
          w+=new_board[i][j]
          p.append([i,j])
    row = p[0][0]
    col = p[0][1]
    if len(p)>1:
      if p[0][0]==p[1][0]:
        down = 0
      else:
        down = 1
    else:
      down = 0
    return [row,col,down,w]
def play(row,col,down,tiles,board):  
    score = 0
    va,inva = get_all_words(board)
    v,new = place_tiles(row,col,down,tiles,board)
    if v==False:
      score = -1
    else:
      va2,inva2 = get_all_words(new)
      for e in va2:
        if e not in va:
          for i in e:
            score+=get_value(i)
      if score == 0:
        for k in va:
          for g in va2:
            if k in g and k!=g:
              for i in e:
                score+=get_value(i)
        for k in va:
          for g in inva2:
            if k in g:
              score = -1
      if len(tiles)>=7 and score!=-1:
        score+=50
    return score
def best_play(tiles,board):
    ms = []
    for i in range(15):
      for j in range(15):
        v,new = place_tiles(i,j,0,tiles,board)
        if v == True:
          score = play(i,j,0,tiles,board)
          ms.append([-score,i,j,0])
    for i in range(15):
      for j in range(15):
        v,new = place_tiles(i,j,1,tiles,board)
        if v == True:
          score = play(i,j,1,tiles,board)
          if score not in ms:
            score = play(i,j,1,tiles,board)
            ms.append([-score,i,j,1])
    ms.sort()
    m = ms[0]
    m[0] *= -1
    return m

00350: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 756, 'const': 352, 'code+const': 1108}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  val=[]
  inval=[]
  row=copy_board(board)
  col=''
  for i in range(15):
    for j in range(15):
      if row[j][i]=='': row[j][i]=' '
      col+=row[j][i]
    col+=' '
  for i in row+[col]:
    x=''.join(i).strip().split()
    for j in x:
      if is_valid(j): val.append(j)
      elif len(j)>1: inval.append(j)
  val.sort()
  inval.sort()
  return [val,inval]
def get_play(board, new_board):
  tiles=''
  for i in range(15):
    for j in range(15): 
      if board[i][j]!=new_board[i][j]: 
        if tiles=='': row=i; col=j
        tiles+=new_board[i][j]
  return [row,col,(col==14 or board[row][col+1:]==new_board[row][col+1:])*(len(tiles)!=1),tiles]
def play(row,col,down,tiles,board):
  val,newboard=place_tiles(row,col,down,tiles,board)
  count=0
  b=get_all_words(board)[0]
  for i in get_all_words(newboard)[0]:
    if i not in b:
      for e in i: count+=get_value(e)
    else: b.remove(i)
  if val==False or count==0 or get_all_words(newboard)[1]!=[]: return -1
  else: return count+(50*(len(tiles)>=7))
def best_play(tiles,board):
  allplay=[-1]*4
  for k in range(2):
    for i in range(15):
      for j in range(15):
        a=[play(i,j,k,tiles,board),i,j,k]
        if allplay[0]<a[0] or (allplay[0]==a[0] and allplay[1:]>a[1:]): allplay,a=a,allplay
  return allplay

00351: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_10.0Time-out: 3s
[]
test_best_play_20.0Time-out: 3s
[]
test_best_play_30.0Time-out: 20s
[]
test_best_play_40.0Time-out: 20s
[]
test_best_play_50.0Time-out: 20s
[]
bytecount: {'code': 1318, 'const': 410, 'code+const': 1728}
check_import({'allowable': ['math']}): none
def a_w(board):
  word = ""
  all_word = []
  for r in range(len(board)):
    for c in range(len(board[r])):
      if board[r][c] != "":
        word += board[r][c]
      elif board[r][c] == "" and word != "":
          word += " "
    if word != "":
      s_word = word.strip().split(" ")
      for i in s_word:
        if i != "" and len(i) > 1:
          all_word.append(i)
      word = ""
  return all_word
def tran_p(board):
  ans = []
  for r in range(len(board)):
    for c in range(len(board[0])):
      ans = [[board[c][r] for c in range(len(board))] for r in range(len(board[0]))]
  return ans
def sc_all_board(valid, w, tiles):
  sc = 0
  if valid and w[1] == []:
    if len(tiles) >= 7:
      sc += 50
    for e in range(len(w[0])):
      if w[0][e] != '':
        for i in w[0][e]:
          sc += int(get_value(i))
  else:
    sc = -1
  return sc
def get_all_words(board):
  board_t = tran_p(board)
  w_r = a_w(board)
  w_c = a_w(board_t)
  v_w = []
  iv_w = []
  for i in w_r:
    if is_valid(i):
      v_w.append(i)
    else:
      iv_w.append(i)
  for i in w_c:
    if is_valid(i):
      v_w.append(i)
    else:
        iv_w.append(i)
  v_w.sort()
  iv_w.sort()
  return [v_w,iv_w]
def get_play(board, new_board):
  data = []
  w = ''
  for i in range(len(new_board)):
    for j in range(len(new_board[i])):
      if new_board[i][j] != board[i][j]:
        w += new_board[i][j]
        data.append([i,j])
  r = data[0][0]
  c = data[0][1]
  if len(data) != 1:
    for e in range(1):
      if data[e][0] == data[e+1][0]:
        down = 0
      else:
        down = 1
  else:
      down = 0
  return [r,c,down,w]
def play(row,col,down,tiles,board):
  valid,board1 = place_tiles(row,col,down,tiles,board)
  w_0 = get_all_words(board)
  if valid == False:
    board1 = board
  w_1 = get_all_words(board1)
  for i in range(len(w_1[0])):
    if w_1[0][i] in w_0[0]:
      re = w_1[0][i]
      w_1[0].remove(w_1[0][i])
      w_1[0].insert(i,'')
      w_0[0].remove(re)
  return sc_all_board(valid, w_1, tiles)
def best_play(tiles,board):
  oup = []
  for d in range(2):
    for i in range(len(board)):
      for j in range(len(board[i])):
        valid,board1 = place_tiles(i,j,d,tiles,board)
        chec_w = get_all_words(board1)[1]
        if valid == True and chec_w == []:
          sc = play(i,j,d,tiles,board)
          oup.append([sc*-1,i,j,d])
  if oup == []:
      oup.append([-1,-1,-1,-1])
      return oup[0]
  oup.sort()
  a,b,c,d = oup[0]
  return [a*-1,b,c,d]

00352: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_40.0
[[['CONNERS', 'UNWITS', 'VILDE'], ['CONNERSZOO'], ['FEWZ', 'TW', 'VR', 'WF']]]
test_get_all_words_50.0
[[['BHELI', 'ONS', 'UNOBSERVANT'], ['ARR', 'HELIOSG', 'IEI', 'LIAM', 'MVI', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_60.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA'], ['QYUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_80.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'ITA', 'ITERANT', 'NA', 'NAES', 'RE', 'REI', 'RETAINS', 'SIF', 'SIF',
   'SIR', 'STAIRED', 'TIT', 'URANITE'],
  []]]
test_get_all_words_90.0
[[['EJACULD', 'ATD', 'AD', 'BRAINWASHING', 'DIMO', 'MDOD', 'DOMONSTERS', 'DOPACIFYINGM', 'DOXYPHENBUTAZONEM', 'PREQUALIFIEDOM', 'XIDOM'],
  ['ADTOM', 'AEADOAM',
   'BRAINWASHINGDOM', 'CQITCDORM', 'DSO', 'EDG', 'EDDOM', 'EDJACULATING', 'FADWLO', 'GMI', 'MIN', 'HDOMDOM',
   'IMODI', 'MDONSOTERS', 'IUNUO',
   'NODF', 'OHMD', 'OM', 'NOPACIFOHMYING', 'OXYPHENSBUTAZONE', 'OMPIER', 'PREQUALIFIERDORMDOMJ', 'TSUM', 'UMDOMNXI', 'YEDOM',
   'YLOADA', 'ZOOTE'],
  []]]
test_get_all_words_100.0
[[['AA', 'ARK', 'CALP', 'EDFOOT', 'OXFUGIDSO', 'TOGI', 'TRIALGYVED', 'TUREENSHOCK'],
  ['AADIF', 'EDINTERNED', 'FUGIORITA', 'GYVEHOCK', 'IGJA',
   'JIVEGP', 'JOJMUOLOOMJYOOIN', 'JTTOR',
   'MUNXIFADS', 'NSITHING', 'TONNL', 'TO', 'TREXUVVAT', 'TROIALED', 'TURUEENS', 'SFOOTXU'],
  ['TFJOJUOLOOMJYOOI', 'TRATGIJAO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[9-1]
test_play_31.0
[14]
test_play_40.0
[14, 621]
test_play_50.0
[60, 572]
test_play_60.0
[60, 58-1]
test_play_70.0
[63, -14]
test_play_81.0
[62]
test_play_90.0
[11, 125, 724, -17, 859, 12]
test_play_100.0
[9, 133, 1236, -18, 12, 5973, 65, 107, 6174, 16]
test_play_110.0
[67, 61, 248, 101, 613, 7485, 411, 812, -17, -125, -1, 7, 124, 210, 32, 12, -15, 716, 68, 56, -13, -10, -127, -128]
test_play_120.0
[411]
test_play_130.0
[49]
test_play_140.0
[8, 820, 826, 8-1]
test_play_150.0
[839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_20.0
[[-1, 5-1, 7-1, -1]]
test_best_play_30.0
[[68, 0, 7, 1], [-187, 142, 140, 0], [-179, 14, 142, 01], [-159, 1, 60, 0], [-11, 142, 143, 0], [645, 43, 24, 01],
 [-19, 146, 14, 0], [7, 14, 52, 01], [611, 0, 41, 0], [922, 23, 58, 01]]
test_best_play_40.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [-19, 143, 140, 0], [-172, 14, 14, 0],
 [17, 6, 6, 0], [-18, 143, 143, 10], [-18, 04, 120, 10], [816, 95, 51, 0]]
test_best_play_50.0
[[83, 0, 7, 1], [62, 13, 0, 0], [-158, 14, 148, 10], [10, 0, 1, 0], [-168, 140, 141, 1], [-124, 146, 148, 01],
 [-18, 148, 149, 1], [10, 21, 62, 01], [214, 05, 83, 1], [-127, 14, 14, 01]]
bytecount: {'code': 2794, 'const': 1122, 'code+const': 3916}
check_import({'allowable': ['math']}): none
def is_valid(word):
    if len(word)>=2 and (word.upper() in word_list):
        return True
    return False
def make_board():
    board = []
    for i in range(15):
        board.append(['']*15)
    return board
def print_board(board):
    top = "   "
    out=[]
    for i in range(0,15):
        top += " "*max(0,3-len(str(i))) + str(i) + " "
    print(top)
    for i in range(len(board)):
        line = str(i)+" "*max(0,3-len(str(i)))+""
        for j in range(len(board)):
            if board[i][j]=="":
                if i==7 and j==7:
                    line += "  * "
                else:
                    line += "  _ "
            else:
                line += " ["+str(board[i][j])+"]"
        print(line)
        out.append(line)
    return out
def place_tiles(row,col,down,tiles,board):
    if board[row][col]!="":
        return [False,board]    
    new_board = copy_board(board)
    start = False
    connect = False
    if board[7][7]!="":
        start = True
    r=row
    c=col
    tiles = tiles.upper()
    placed = 0
    if down:
        if (row-1>=0 and board[row-1][col]!="") or (row+len(tiles)<=14 and board[row+len(tiles)][col]!=""):
            connect=True
        while placed<len(tiles):
            if r>14:
                return [False,board]
            if new_board[r][c]=="":
                new_board[r][c]=tiles[placed]
                if c-1>=0 and new_board[r][c-1]!="":
                    connect = True
                if c+1<=14 and new_board[r][c+1]!="":
                    connect = True
                placed+=1
                r+=1
            else:
                connect = True
                r+=1
    else:
        if (col-1>=0 and board[row][col-1]!="") or (col+len(tiles)<=14 and board[row][col+len(tiles)]!=""):
            connect=True
        while placed<len(tiles):
            if c>14:
                return [False,board]
            if new_board[r][c]=="":
                new_board[r][c]=tiles[placed]
                if r-1>=0 and new_board[r-1][c]!="":
                    connect = True
                if r+1<=14 and new_board[r+1][c]!="":
                    connect = True
                placed+=1
                c+=1
            else:
                connect = True
                c+=1
    if (not start and new_board[7][7]=="") or (start and not connect):
        return [False,board]
    return [True, new_board]
def get_all_words(board):
    word=[]
    for i in range(len(board)):
      k=""
      for j in range(len(board[i])):
        k+=board[i][j]
      word.append(k)
    for j in range(len(board[0])):
      k=""
      for i in range(len(board)):
        k+=board[i][j]
      word.append(k)
    valid_words=[]
    invalid_words=[]
    for e in word:
      if len(e)>=2:
        r=is_valid(e)
        if r == True:
          valid_words.append(e)
        else:
          invalid_words.append(e)
    valid_words.sort()
    invalid_words.sort()
    return [valid_words,invalid_words]
def get_play(board, new_board):
    row=[]
    col=[]
    k=""
    n=0
    for i in range(len(board)):
      if board[i]!=new_board[i]:
        n+=1
        row.append(i)
        for j in range(len(board[i])):
          if board[i][j]!=new_board[i][j]:
            k+=new_board[i][j]
            col.append(j)
    down=0
    if n>1:
      down=1
    return [row[0],col[0],down,k]
def play(row,col,down,tiles,board):
    tabel={"A":1,"B":3,"C":3,"D":2,"E":1,"F":4,"G":2,"H":4,"I":1,"J":8,"K":5,"L":1,"M":3,"N":1,"O":1,"P":3,"Q":10,"R":1,"S":1,"T":1,"U":1,"V":4,"W":4,"X":8,"Y":4,"Z":10}
    k=""
    i=0
    j=0
    if down==0:
      for j in range(col,len(board[row])):
        if board[row][j]=="":
          while i <len(tiles):
            k+=tiles[i]
            i+=1
            break
        else:
          k+=board[row][j]
    elif down==1:
      for i in range(row,len(board)):
        if board[i][col]=="":
          while j <len(tiles):
            k+=tiles[j]
            j+=1
            break
        else:
          k+=board[i][col]
    k=k.upper()
    j=is_valid(k)
    score=0
    if len(tiles)>=7:
        score+=50
    if j==True:
      for e in k:
        score+=tabel[e]
    else:
      score = -1
    return score
def copy_board(board):
    new_board = []
    for i in range(15):
        new_board.append(list(board[i]))
    return new_board
def best_play(tiles,board):
    score = -1
    row  = 0
    col = 0
    down = 0
    down_n=[0,1]
    board_Z=make_board()
    if board==board_Z:
      if len(tiles)<8:
        row = 8-len(tiles)
        col =7
        down =1
        score = play(row,col,down,tiles,board)
      else:
        row  = 0
        col = 7
        down = 1
        score = play(row,col,down,tiles,board)
    else:
      k=""
      word_total=[]
      score_to = []
      outer = False
      for row in range(len(board)):
        for col in range(len(board[row])):
          if board[row][col]!="":
            k+=board[row][col]
      for i in range(len(tiles)-1):
        for e in k:
          word = tiles[:i]+e+tiles[i:]
          j = is_valid(word)
          if j==True: 
            word_total.append([word,e]) 
      for e in k:
          word = tiles+e
          j = is_valid(word)
          if j==True: 
            word_total.append([word,e])  
      for each in word_total:
        for row in range(len(board)):
          for col in range(len(board[row])):
            if board[row][col]==each[1]:
              n =each[0].find(each[1])
              if board[row][col-1] or board[row][col+1]!="":
                down =1
                row = row-n
                if row>=0:
                  va = place_tiles(row,col,down,each[0],board)[0]
                  if va == True:
                    outer = True
                    score = play(row,col,down,tiles,board)
                    score_to.append([score,row,col,down])
                    break
              else:
                down =0
                col = col-n
                if col>=0:
                  va = place_tiles(row,col,down,each[0],board)[0]
                  if va == True:
                    outer = True
                    score = play(row,col,down,tiles,board)
                    score_to.append([score,row,col,down])
          if outer==True: break
      score_to.sort()
      for i in range(len(score_to)):
        score = score_to[i][0]
        row = score_to[i][1]
        col = score_to[i][2]
        down = score_to[i][3]
    return [score,row,col,down]

00353: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1288, 'const': 590, 'code+const': 1878}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  a = []
  s = ''
  for i in range(15):
    a.append(s)
    s = ''
    for k in range(15):
        if 'A' <= board[i][k] <= 'Z':
            s += board[i][k]
        else:
            a.append(s)
            s = ''
  a.append(s)
  s1 = ''
  for i1 in range(15):
    a.append(s1)
    s1 = ''
    for k1 in range(15):
      if 'A' <= board[k1][i1] <= 'Z':
          s1 += board[k1][i1]
      else:
          a.append(s1)
          s1 = ''
  a.append(s1)
  ss = []
  for i in a:
    if i !='' and len(i) >1:
       ss.append(i)
  valid = []
  invalid = []
  for each in ss:
    if is_valid(each):
      valid.append(each)
    else:
      invalid.append(each)
  valid.sort()
  invalid.sort()
  ans=[valid,invalid]
  return ans
def get_play(board, new_board):
  s = ''
  c = 0
  ii =0
  r = True
  for i in range(15):
    for k in range(15):
      if board[i][k] != new_board[i][k]:
        s += new_board[i][k]
        ii +=1
        if c== 0:
              row = i
              columm = k
        if ii > 1:
                r = True
        c += 1
    ii = 0
  j = ''
  for i1 in range(15):
    for k1 in range(15):
      if board[k1][i1] != new_board[k1][i1]:
        j += new_board[k1][i1]
        ii +=1
        if c== 0:
                row = i1
                columm = k1
        if ii > 1:
                r = False
        c += 1
    ii = 0
  if r == True:
    return [row,columm,0,s]
  else:
    return [row,columm,1,j]
def play(row,col,down,tiles,board):
    dic = {'A':1,'B':3,'C':3,'D':2,'E':1,'F':4,'G':2,'H':4,'I':1,'J':8,'K':5,'L':1,'M':3,'N':1,'O':1,'P':3,'Q':10,'R':1,'S':1,'T':1,'U':1,'V':4,'W':4,'X':8,'Y':4,'Z':10}
    if place_tiles(row,col,down,tiles,board)[0] == False :
      return -1
    else:
      boardcopy = copy_board(board)
      newboard = place_tiles(row,col,down,tiles,board)
      oldword = (get_all_words(boardcopy))[0]
      newword = (get_all_words(newboard[1]))
      new = newword[0]
      if newword[1] != []: 
        return -1
      else:
          for each in oldword:
              if each in new:
                new.remove(each)
          if len(tiles) >=7:
            s = 50
          else:
            s = 0
          for e in new:
            for j in e:
              s+= dic[j]
          return s
def best_play(tiles,board):
  LtoR = []
  for i in range (15):
      for k in range(15):
                scores = play(i,k,0,tiles,board)
                if scores != -1:
                  LtoR.append([scores,i,k,0])
  for i1 in range (15):
      for k1 in range(15):
                scores = play(i1,k1,1,tiles,board)
                if scores != -1:
                  LtoR.append([scores,i1,k1,1])
  if LtoR == []: 
    return [-1,-1,-1,-1]
  else:
    allscore = []
    for i in LtoR:
      allscore.append(i[0])
    max_score = max(allscore)
    LtoR_update =[] 
    for j in LtoR:
      if j[0] == max_score:
        LtoR_update.append(j)
    LtoR_update.sort()
    return LtoR_update[0]

00354: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_100.0
[9, 33, 36, -18, -12, 73, 65, 017, 74, 016]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 4384, 'const': 281, 'code+const': 4665}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  check = []
  valid_word = []
  invalid_word = []
  for i in range(len(board)):
    temp = ''
    for j in range(len(board[i])):
      if board[i][j] != '':
        temp += board[i][j]
      else:
        if len(temp) > 1:
          check.append(temp)
        temp = ''
      if j == len(board[i])-1:
        if len(temp) > 1 :
          check.append(temp)
          temp = ''
  for e in range(len(board[0])):
    temp2 = ''
    for w in range(len(board)):
      if board[w][e] != '':
        temp2 += board[w][e]
      else:
        if len(temp2) > 1:
          check.append(temp2)
        temp2 = ''
      if w == len(board)-1:
        if len(temp2) > 1:
          check.append(temp2)
          temp2 = ''
  for z in check :
    if is_valid(z) :
      valid_word.append(z)
    else:
      invalid_word.append(z)
    valid_word.sort()
    invalid_word.sort()
  return [valid_word,invalid_word]
def get_play(board, new_board):
  temp = ''
  checki = []
  checkj = []
  for i in range(len(board)):
    for j in range(len(board[0])):
      if new_board[i][j] == board[i][j]:
        pass
      else:
        checki.append(i)
        checkj.append(j)
        temp += new_board[i][j]
  if len(temp) > 1:
    if checki[0] == checki[1]:
      down = 0
    else:
      down = 1
  else:
    down = 0
  return([checki[0],checkj[0],down,temp])
def play(row,col,down,tiles,board):
  old_board = copy_board(board)
  board = place_tiles(row,col,down,tiles,board)[1]
  score = 0
  if len(tiles) >= 7 :
    score += 50
  check = []
  if down == 0 :
    if col != 0 and col != len(board[0])-1:
      if board[row][col-1] != '' and board[row][col+1] != '': 
        i = 1
        temp = ''
        while col-i >= 0 and board[row][col-i] != '' :
          temp += board[row][col-i]
          i += 1
        temp = temp[::-1]
        e = 1
        temp2 = ''
        while col+e <= len(board[0])-1 and board[row][col+e] != '' :
          temp2 += board[row][col+e]
          e += 1
        check.append(temp+board[row][col]+temp2)
      elif board[row][col+1] != '':    
        i = 1
        temp = ''
        while col+i <= len(board[0])-1 and board[row][col+i] != '' :
          temp += board[row][col+i]
          i += 1
        check.append(board[row][col]+temp)
      elif board[row][col-1] != '' :   
        i = 1
        temp = ''
        while col-i >= 0 and board[row][col-i] != '' :
          temp += board[row][col-i]
          i += 1
        temp = temp[::-1]
        check.append(temp+board[row][col])
    elif col == 0:
      if board[row][col+1] != '':    
        i = 1
        temp = ''
        while col+i <= len(board[0])-1 and board[row][col+i] != ''  :
          temp += board[row][col+i]
          i += 1
        check.append(board[row][col]+temp)
    elif col != len(board[0])-1 :
      if board[row][col-1] != '' :   
        i = 1
        temp = ''
        while col-i >= 0 and board[row][col-i] != '':
          temp += board[row][col-i]
          i += 1
        temp = temp[::-1]
        check.append(temp+board[row][col])
    for k in range(len(board[row])) :
      if board[row][k] == old_board[row][k]:
        pass
      else:
        if row != 0 and row != len(board)-1:
          if board[row-1][k] != '' and board[row+1][k] != '': 
            i = 0
            temp = ''
            while row-i >= 0 and board[row-i][k] != ''  :
              temp += board[row-i][k]
              i += 1
            temp = temp[::-1]
            e = 0
            temp2 = ''
            while row+e <= len(board)-1 and board[row+e][k] != ''  :
              temp2 += board[row+e][k]
              e += 1
            check.append(temp + temp2)
          elif board[row-1][k] != '':    
            i = 0
            temp = ''
            while row-i >= 0 and board[row-i][k] != '' :
              temp += board[row-i][k]
              i += 1
            temp = temp[::-1]
            check.append(temp)
          elif board[row+1][k] != '':    
            i = 0
            temp = ''
            while row+i <= len(board)-1 and board[row+i][k] != ''  :
              temp += board[row+i][k]
              i += 1
            check.append(temp)
        elif row == len(board)-1 :
          if board[row-1][k] != '':    
            i = 0
            temp = ''
            while row-i >= 0 and board[row-i][k] != '' :
              temp += board[row-i][k]
              i += 1
            temp = temp[::-1]
            check.append(temp)
        elif row == 0:
          if board[row+1][k] != '':    
            i = 0
            temp = ''
            while row+i <= len(board)-1 and board[row+i][k] != ''  :
              temp += board[row+i][k]
              i += 1
            check.append(temp)
  elif down == 1 :
    k = col
    if row != 0 and row != len(board)-1:
      if board[row-1][k] != '' and board[row+1][k] != '': 
        i = 1
        temp = ''
        while row-i >= 0 and board[row-i][k] != ''  :
          temp += board[row-i][k]
          i += 1
        temp = temp[::-1]
        e = 1
        temp2 = ''
        while row+e <= len(board)-1 and board[row+e][k] != '' :
          temp2 += board[row+e][k]
          e += 1
        check.append(temp + board[row][col] + temp2)
      elif board[row-1][k] != '':    
        i = 0
        temp = ''
        while row-i >= 0 and board[row-i][k] != '' :
          temp += board[row-i][k]
          i += 1
        temp = temp[::-1]
        check.append(temp)
      elif board[row+1][k] != '':    
        i = 0
        temp = ''
        while row+i <= len(board)-1 and board[row+i][k] != '':
          temp += board[row+i][k]
          i += 1
        check.append(temp)
    elif row == len(board)-1 :
      if board[row-1][k] != '':    
        i = 0
        temp = ''
        while row-i >= 0 and board[row-i][k] != '' :
          temp += board[row-i][k]
          i += 1
        temp = temp[::-1]
        check.append(temp)
    elif row == 0:
      if board[row+1][k] != '':    
        i = 0
        temp = ''
        while row+i <= len(board)-1 and board[row+i][k] != '' :
          temp += board[row+i][k]
          i += 1
        check.append(temp)
    for h in range(len(board)):
      if board[h][col] == old_board[h][col]:
        pass
      else:
        if col != 0 and col != len(board[0])-1:
          if board[h][col-1] != '' and board[h][col+1] != '': 
            i = 1
            temp = ''
            while col-i >= 0 and board[h][col-i] != '' :
              temp += board[h][col-i]
              i += 1
            temp = temp[::-1]
            e = 1
            temp2 = ''
            while col+e <= len(board[0])-1 and board[h][col+e] != ''  :
              temp2 += board[h][col+e]
              e += 1
            check.append(temp+board[h][col]+temp2)
          elif board[h][col+1] != '':    
            i = 0
            temp = ''
            while col+i <= len(board[0])-1 and board[h][col+i] != '' :
              temp += board[h][col+i]
              i += 1
            check.append(temp)
          elif board[h][col-1] != '' :   
            i = 0
            temp = ''
            while col-i >= 0 and board[h][col-i] != '':
              temp += board[h][col-i]
              i += 1
            temp = temp[::-1]
            check.append(temp)
        elif col == 0:
          if board[h][col+1] != '':    
            i = 0
            temp = ''
            while col+i <= len(board[0])-1 and board[h][col+i] != '' :
              temp += board[h][col+i]
              i += 1
            check.append(temp)
        elif col == len(board[0])-1:
          if board[h][col-1] != '' :   
            i = 0
            temp = ''
            while col-i >= 0 and board[h][col-i] != '' :
              temp += board[h][col-i]
              i += 1
            temp = temp[::-1]
            check.append(temp)
  for z in check :
    if is_valid(z):
      for n in z :
        score += get_value(n)
    else:
      return -1
  return score
def best_play(tiles,board):
  score = -1 
  for i in range(len(board)):
    for j in range(len(board[0])):
      for k in range(2):
        valid = place_tiles(i,j,k,tiles,board)[0]
        if valid :
          if play(i,j,k,tiles,board) > score:
              score = play(i,j,k,tiles,board)
              row,col,down = i,j,k
  if score!= -1 :
    return [score,row,col,down]
  else:
    return [-1,-1,-1,-1]

00355: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1192, 'const': 322, 'code+const': 1514}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  x = []
  y = []
  word=''
  check=False
  for i in range(15):
    for j in range(15):
      if board[i][j]!='':
        check=True
        word+=board[i][j]
      elif check:
        check=False
        if len(word)>1:
          if is_valid(word):
            x.append(word)
          else:
            y.append(word)
        word=''
    if check:
      check=False
    if len(word)>1:
      if is_valid(word):
        x.append(word)
      else:
        y.append(word)
    word=''
  if check:
    check=False
    if len(word)>1:
      if is_valid(word):
        x.append(word)
      else:
        y.append(word)
    word=''
  for i in range(15):
    for j in range(15):
      if board[j][i]!='':
        check=True
        word+=board[j][i]
      elif check:
        check=False
        if len(word)>1:
          if is_valid(word):
            x.append(word)
          else:
            y.append(word)
        word=''
    if check:
      check=False
    if len(word)>1:
      if is_valid(word):
        x.append(word)
      else:
        y.append(word)
    word=''
  if check:
    check=False
    if len(word)>1:
      if is_valid(word):
        x.append(word)
      else:
        y.append(word)
    word=''
  return [sorted(x),sorted(y)]
def get_play(board, new_board):
    i=0
    j=0
    c=0
    for ii in range(15):
      for jj in range(15):
        if board[ii][jj]!=new_board[ii][jj]:
          i=ii
          j=jj
          c=1
          break
      if c:
        break
    wi=''
    wj=''
    for x in range(i,15):
      if new_board[x][j]!=board[x][j]:
        wi+=new_board[x][j]
      if new_board[x][j]=='':
        break
    for x in range(j,15):
      if new_board[i][x]!=board[i][x]:
        wj+=new_board[i][x]
      if new_board[i][x]=='':
        break
    if len(wi)>len(wj):
      return [i,j,1,wi]
    else:
      return [i,j,0,wj]
def play(row,col,down,tiles,board):
  new_board = place_tiles(row,col,down,tiles,board)
  if new_board[0]==False:
    return -1
  word1=get_all_words(board)
  word2=get_all_words(new_board[1])
  score=0
  if len(word2[1])>0:
    return -1
  for i in word2[0]:
    if i not in word1[0]:
      if is_valid(i):
        for j in i:
          score+=get_value(j)
      else:
        return -1
    else:
      word1[0].remove(i)
  if len(tiles)>=7:
    score+=50
  return score
def best_play(tiles,board):
    best=[-1,-1,-1,-1]
    for i in range(15):
      for j in range(15):
        test0=play(i,j,0,tiles,board)
        test1=play(i,j,1,tiles,board)
        if test0>best[0]:
          best=[test0,i,j,0]
        if test1>best[0]:
          best=[test1,i,j,1]
    return best

00356: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 1827, 28]
test_play_120.0
[411]
test_play_130.0
[59]
test_play_140.0
[8, 820, 1126, -1]
test_play_150.0
[2839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[68, 0, 7, 1], [1387, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 2248, 'const': 753, 'code+const': 3001}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    have = []; nothave = []
    for i in range(len(board)):
      words = wordsindata(board, i, 0)
      for w in words:
        if is_valid(w): have.append(w)
        else: nothave.append(w)
    for j in range(len(board[0])):
      words = wordsindata(board, j, 1)
      for w in words:
        if is_valid(w): have.append(w)
        else: nothave.append(w)
    return [sorted(have), sorted(nothave)]
def wordsindata(board, i, down):
    if down == 0: words = [board[i][j] if board[i][j] != "" else "-" for j in range(len(board))]
    else: words = [board[j][i] if board[j][i] != "" else "-" for j in range(len(board))]
    vocab = ("").join(words); final = vocab.split("-")
    return [f for f in final if f!="" and len(f)>1]
def get_play(board, new_board):
    sumboard = ["" if board[i][j] == new_board[i][j] else new_board[i][j] for i in range(len(board)) for j in range(len(board[0]))]
    clearboard = [sumboard[i:i+15] for i in range(0, len(sumboard), 15)]
    rows = []; cols = []
    for i in range(len(board)):
      data = word_posit(clearboard, i, 0)
      if data[0]!="": rows.append(data)
    for j in range(len(board[0])):
      data = word_posit(clearboard, j, 1)
      if data[0]!="": cols.append(data)
    if len(rows)<2 and len(cols)<2: return [cols[0][1][0][0], cols[0][1][0][1], 0, cols[0][0]]
    elif len(cols)<2: return [cols[0][1][0][0], cols[0][1][0][1], 1, cols[0][0]]
    elif len(rows)<2: return [rows[0][1][0][0], rows[0][1][0][1], 0, rows[0][0]]
def word_posit(clearboard, i, down):
    word = ""; position = []
    for j in range(len(clearboard[0])):
        if down==0:
          if clearboard[i][j] != "": word+=clearboard[i][j]; position.append((i, j))
        else: 
          if clearboard[j][i] != "": word+=clearboard[j][i]; position.append((j, i))
    return [word, position]
def play(row,col,down,tiles,board):
    placed = list(place_tiles(row, col, down, tiles, board)); scores = 0
    if not placed[0]: return -1
    else: 
      new = get_all_words(placed[1]); old = get_all_words(board)
      if len(new[1]) != 0: return -1
      repeat_list = repeat(new) 
      words = list(set(new[0]) - set(old[0]))
      scores+=countscr(words, tiles, scores)
      if len(words) == 0 and len(repeat_list) != 0: scores+=countscr(repeat_list, tiles, scores)
      return scores
def repeat(new):
    rep = {}; repeat = []
    for r in new[0]:
      if r not in rep: rep[r] = 1
      else: rep[r]+=1
    for r,c in rep.items():
      if c>1:
        for i in range(c-1):
          repeat.append(r)
    return repeat
def countscr(words, tiles, scores):
    for w in words:
        if len(w)>=7 and len(tiles)>=7: scores+=50
        scores+=sum([get_value(l) for l in w])
    return scores
def best_play(tiles,board):
    collect = []
    for i in range(len(board)):
      for j in range(len(board[0])):
        mboard = copy_board(board)
        cvalid, colboard = place_tiles(i,j,1,tiles,mboard)
        if cvalid: collect.append([i,j,1,colboard])
        rvalid, rowboard = place_tiles(i,j,0,tiles,mboard)
        if rvalid: collect.append([i,j,0,rowboard])
    scores = [play(r[0], r[1], r[2], tiles, board) for r in collect]
    if scores == [-1]*len(collect): return [-1,-1,-1,-1]
    scrid = [s for s in range(len(scores)) if scores[s] == max(scores)]; best = []
    if len(scrid) == 1: best = ans(scores, scrid, collect)
    else:
      rowid = [r for r in scrid if collect[r][0] == min(generated(scrid, collect, 0))]
      if len(rowid) == 1: best = ans(scores, rowid, collect)
      else:
        colid = [c for c in rowid if collect[c][1] == min(generated(rowid, collect, 1))]
        if len(colid) == 1: best = ans(scores, colid, collect)
        else: 
          downid = [d for d in colid if collect[d][2] == min(generated(colid, collect, 2))]
          best = ans(scores, downid, collect)
    return best
def generated(idx, collect, j):
    return [collect[i][j] for i in idx]
def ans(scores, idx, collect):
    return [scores[idx[0]], collect[idx[0]][0], collect[idx[0]][1], collect[idx[0]][2]]

00357: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 1426, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1100, 'const': 320, 'code+const': 1420}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  word = len(board)*['']
  x = len(board)*['']
  check = []
  valid_words = [] 
  invalid_words = []
  for i in range(len(board)):
    for j in range(len(board[0])):
      if board[j][i] != "":
        word[j]+=board[j][i]
        x[i]+=board[j][i]
      else:
        word[j]+=" "
        x[i]+=" "
  for i in range(len(word)):
    word[i] = word[i].split()
    x[i] = x[i].split()
  for i in range(len(word)):
    for ch in word[i]:
      if len(ch) >= 2:
        check.append(ch)
    for e in x[i]:
      if len(e) >= 2:
        check.append(e)
  for k in check:
    if is_valid(k) == True:
      valid_words.append(k)
    else:
      invalid_words.append(k)
  valid_words.sort()
  invalid_words.sort()
  total = [valid_words,invalid_words]
  return total
def get_play(board, new_board):
  position = []
  s = ''
  for i in range(len(new_board)):
    for j in range(len(new_board[0])):
      if new_board[i][j] == board[i][j]:
        pass
      else:
        position.append([i,j])
        s+=new_board[i][j]
  for i in range(len(position)):
    if len(position) > 1:
      if position[i][1] == position[0][1]:
        down = 1
      else:
        down = 0
    else:
      down = 0
  return [position[0][0],position[0][1],down,s]
def play(row,col,down,tiles,board):
  s = 0
  check = place_tiles(row,col,down,tiles,board)[0]
  new_board = place_tiles(row,col,down,tiles,board)[1]
  x = get_all_words(board)[0]
  y = get_all_words(new_board)[0]
  z = get_all_words(new_board)[1]
  for e in x:
    for c in y:
      if e == c:
        y.remove(e)
  for i in range(len(y)):
    for ch in y[i]:
      s+=get_value(ch)
  if len(tiles) >= 7:
    s+=50
  if len(z) != 0:
    s = -1
  if check == False:
    s = -1
  return s
def best_play(tiles,board):
  max_point = 0
  result = [-1,-1,-1,-1]
  for row in range(len(board)):
    for col in range(len(board)):
      for down in range(2):
        valid = place_tiles(row,col,down,tiles,board)[0]
        if valid == True:
          point = play(row,col,down,tiles,board)
          if point > max_point:
            max_point = point
            max_col = col
            max_row = row
            max_down = down
  if max_point == 0:
    return [-1,-1,-1,-1]
  result = [max_point,max_row,max_col,max_down]
  return result

00358: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 836, 'const': 324, 'code+const': 1160}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  s = ' '
  t = ' '
  for i in range(15):
    for j in range(15):
      if board[i][j] != '':
        s += board[i][j]
      else: 
        s += ' '
      if board[j][i] != '':
        t += board[j][i]
      else:
        t += ' '
    s += ' '
    t += ' '
  words = s.split() + t.split()
  true = []
  false = []
  for e in words:
    if len(e) > 1:
      if is_valid(e):
        true.append(e)
      else:
        false.append(e)
  return [sorted(true),sorted(false)]
def get_play(board, new_board):
  diff = ''
  l = []
  for i in range(15):
    for j in range(15):
      if board[i][j] != new_board[i][j]:
        diff += new_board[i][j]
        l.append([j,i])
  x1,y1 = l[0]
  x2,y2 = l[-1]
  down = 0
  if y1 < y2:
    down = 1
  return [y1,x1,down,diff.upper()]
def play(row,col,down,tiles,board):
  [valid, new_board] = place_tiles(row,col,down,tiles,board)
  wordb = get_all_words(board)
  wordn = get_all_words(new_board)
  if not valid or wordn[1] != []:
    return -1
  scores = 0
  for e in wordn[0]:
    if e not in wordb[0]:
      for k in e:
        scores += get_value(k)
    else:
      wordb[0].remove(e)
  if len(tiles) >= 7:
    scores += 50
  return scores
def best_play(tiles,board):
  l = []
  for i in range(15):
    for j in range(15):
      [valid1, new_board1] = place_tiles(i,j,0,tiles,board)
      if valid1:
        l.append([play(i,j,0,tiles,board),i,j,0])
      else:
        l.append([-1,-1,-1,-1])
      [valid2, new_board2] = place_tiles(i,j,1,tiles,board)
      if valid2:
        l.append([play(i,j,1,tiles,board),i,j,1])
      else:
        l.append([-1,-1,-1,-1])
  l = sorted(l)
  mx = l[-1][0]
  for e in l:
    if e[0] == mx:
      return e

00359: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1306, 'const': 494, 'code+const': 1800}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    validword=[]
    invalidword=[]
    validrow,invalidrow=checkword(board)
    validcol,invalidcol=checkword(trans(board))
    validword+=validrow+validcol
    invalidword+=invalidrow+invalidcol
    validword.sort();invalidword.sort()
    return [validword,invalidword]
def trans(board):
    transboard = []
    for i in range(15):
        row = []
        for sublist in board:
            row.append(sublist[i])
        transboard.append(row)
    return transboard
def getwordrow(i):
    word=[]
    s=''
    for j in i:
      if j!='':s+=j
      else: s+=' '
    word=s.split()
    return word
def checkword(board):
    validword=[]
    invalidword=[]
    for i in range(15):
      if board[i]!=['']*15:
        word=getwordrow(board[i])
        for j in word:
          if len(j)>1:
            if is_valid(j): validword.append(j)
            else: invalidword.append(j)  
    return validword,invalidword
def get_play(board, new_board):
    delboard=deloldword(board,new_board)
    srow,scol=findstart(delboard)
    down,tiles=downandtile(delboard)
    return [srow,scol,down,tiles]
def deloldword(board,new_board):
    delboard=make_board()
    for i in range(15):
      for j in range(15):
        if board[i][j] != new_board[i][j]:
          delboard[i][j]=new_board[i][j]
    return delboard
def findstart(delboard):
    for i in range(15):
      for j in range(15):
        if delboard[i][j]!='':
          return i,j
def downandtile(delboard):
    word=[]
    s=''
    down=0
    for i in range(15):
      if delboard[i]!=['']*15:
        word.append(getwordrow(delboard[i]))
    if len(word)==1 and len(word[0])==1:
      s=word[0][0]
    elif len(word)>1:
      down=1
      for a in word:
        for b in a:
          s+=b
    else:
      for c in word[0]: s+=c
    return down,s
def play(row,col,down,tiles,board):
    nboard=copy_board(board)
    nboard=place_tiles(row,col,down,tiles,nboard)[1]
    if nboard==board: return -1
    wordold=get_all_words(board)
    wordnew=get_all_words(nboard)
    dword=[findd(wordold[0],wordnew[0]),findd(wordold[1],wordnew[1])]
    if dword[1] !=[]: return -1
    score=0
    for i in dword[0]:
      score+=scoreword(i)
    if len(tiles)>=7: score+=50
    return score
def scoreword(word):
    s=0
    for c in word:
      s+=get_value(c)
    return s
def findd(list,nlist):
    dlist=nlist
    for i in list:
      try: dlist.remove(i)
      except:pass
    return dlist
def best_play(tiles,board):
    choice=[]
    for i in range(15):
      for j in range(15):
        for k in range(2):
          score=play(i,j,k,tiles,board)
          if score!=-1:
            choice.append([score,i,j,k])
    if choice ==[]: return [-1,-1,-1,-1]
    choice.sort();maxscore=choice[-1][0]
    nchoice=[ c for c in choice if c[0]==maxscore ]
    return nchoice[0]

00360: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1142, 'const': 268, 'code+const': 1410}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    vl = []
    invl = []
    word = ''
    for i in range(len(board)):
      for j in range(len(board)):
        if board[i][j] != '':
          word += board[i][j]
          if j == len(board) - 1:
            if is_valid(word):
              vl.append(word)
              word = ''
            elif len(word) >= 2:
              invl.append(word)
            word = ''
        else:
          if is_valid(word):
              vl.append(word)
          elif len(word) >= 2:
              invl.append(word)
          word = ''
    rboard = []
    for i in range(len(board)):
      if rboard == []:
        for j in range(len(board)):
          rboard.insert(0,[board[i][j]])
      else:
        for j in range(len(board)):
          rboard[-(j+1)].append(board[i][j])
    word = ''
    for i in range(len(rboard)):
      for j in range(len(rboard)):
        if rboard[i][j] != '':
          word += rboard[i][j]
          if j == len(rboard) - 1:
            if is_valid(word):
              vl.append(word)
              word = ''
            elif len(word) >= 2:
              invl.append(word)
            word = ''
        else:
          if is_valid(word):
              vl.append(word)
          elif len(word) >= 2:
              invl.append(word)
          word = ''
    vl.sort()
    invl.sort()
    return [vl,invl]
def get_play(board, new_board):
    w = ''
    for i in range(len(board)):
      for j in range(len(board[i])):
        if board[i][j] != new_board[i][j]:
          if w == '':
            row = i
            col = j
            down = 0
          elif i != row:
            down = 1
          w += new_board[i][j]
    return [row,col,down,w]
def play(row,col,down,tiles,board):
    new_board = copy_board(board)
    new_board = place_tiles(row,col,down,tiles,new_board)[1]
    bl = get_all_words(board)
    nbl = get_all_words(new_board)
    if nbl[1] != []:
      score = -1
    else:
      score = 0
      for w in bl[0]:
        if w in nbl[0]:
          nbl[0].remove(w)
      if nbl[0]:
        for w in nbl[0]:
          for c in w:
            score += get_value(c)
        if len(tiles) >= 7:
          score += 50
      else:
        score = -1
    return score
def best_play(tiles,board):
    l = []
    for i in range(len(board)):
      for j in range(len(board)):
        for d in range(2):
          score = play(i,j,d,tiles,board)
          if score != -1:
            l.append([-score,i,j,d])
    if l:
      l.sort()
      s,r,c,d = [int(i) for i in l[0]]
      return [-s,r,c,d]
    else:
      return[-1,-1,-1,-1]

00361: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1096, 'const': 499, 'code+const': 1595}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  new = copy_board(board)
  A_Z = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  result = []
  valid_words = []
  invalid_words = []
  w1 = get_word(0,board)
  w2 = get_word(1,board)
  x = w1 + w2
  for e in x:
    if len(e) > 1:
      if is_valid(e) == True:
        valid_words.append(e)
      if is_valid(e) == False:
        invalid_words.append(e)
  valid_words.sort()
  invalid_words.sort()  
  result.append(valid_words)
  result.append(invalid_words)
  return(result)
def get_word(down,board):
  new = copy_board(board)
  word = '' 
  if down == 0:
    for i in range(15):
      for j in range(15):
        if new[i][j] == '':
          word += '-'  
        else:
          word += str(new[i][j])
      word += '-' 
    ans = word.split('-')  
  if down == 1:
    for k in range(15):
      for l in range(15):
        if new[l][k] == '':
          word += '-'
        else:
          word += str(new[l][k])
      word += '-'  
    ans = word.split('-')
  return(ans)    
def get_play(board, new_board):
  tiles = ''
  d1 = []
  d2 = []
  down = 0 
  for i in range(15):
    for j in range(15):     
      if new_board[i][j] != board[i][j]:
        tiles += str(new_board[i][j])
        d1.append(i)
        d2.append(j)
      else:
        continue  
  if len(tiles) == 1:
    down = 0      
  di1 = d1[0]
  di2 = d2[0]
  df1 = d1[-1]
  df2 = d2[-1]
  if df1 > di1:
    down = 1
  else:
    down = 0  
  return([di1,di2,down,tiles])
def play(row,col,down,tiles,board):
  v,new = place_tiles(row,col,down,tiles,board)
  w_old = get_all_words(board)
  w_new = get_all_words(new)
  n = len(tiles)
  valid_old = w_old[0]
  valid_new = w_new[0]
  invalid_old = w_old[1]
  invalid_new = w_new[1]
  list_score = []
  if v == False or len(invalid_new) != 0:
    return(-1) 
  elif v == True:  
    for e in valid_new:
      if e in valid_old:
        valid_old.remove(e)
      elif e not in valid_old:
        for i in e: 
          list_score.append(get_value(i))                
    if n >= 7:
      list_score.append(50)
  score = sum(list_score)             
  return(score)
def best_play(tiles,board):
  all_play = []
  all_score = []
  tf = False
  for i in range(15):
    for j in range(15):
      p1 = play(i,j,0,tiles,board)
      p2 = play(i,j,1,tiles,board)
      all_play.append([p1,i,j,0])
      all_play.append([p2,i,j,1])
      all_score.append(p1)
      all_score.append(p2)
  for e in all_score:
    if e != -1:
      tf = True
  if tf == False:
    return([-1, -1, -1, -1]) 
  maxscr = max(all_score) 
  all_play.sort()
  for k in all_play:
    if int(k[0]) == maxscr:
      return(k)

00362: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 930, 'const': 619, 'code+const': 1549}
check_import({'allowable': ['math']}): none
def w(b,i,j):
  if b[i][j] != '': return b[i][j]
  return '0'
def c(s,m):
  p=0
  for e in s.split('0'):
      if e not in m :
        if is_valid(e):
          for c in e:
            p+=get_value(c)
      else:m.remove(e)
  return p
def get_all_words(board):
  nv,v,s,s2 = [],[],'',''
  for i in range(15):
    for j in range(15):
      s += w(board,i,j)
      s2 += w(board,j,i)
    for e in (s+'0'+s2).upper().split('0'):
      if is_valid(e):v.append(e)
      elif len(e)>1:nv.append(e)
    s,s2 = '',''
  return [sorted(v),sorted(nv)]
def get_play(board, new_board):
  ii,jj,s,d = 0,0,'',0
  for i in range(15):
    for j in range(15):
      if new_board[i][j] != board[i][j]:
        if s == '': ii,jj = i,j
        s+=new_board[i][j]
        if i != ii:d=1
  return [ii,jj,d,s]
def play(row,col,down,tiles,board):
  boo,nb = place_tiles(row,col,down,tiles,board)
  vi,nvi = get_all_words(board)
  v,nv = get_all_words(nb)
  if not boo or nv != nvi:
    return -1
  s,l,l2,ln,ln2 = 0,'','','',''
  if len(tiles) >6:s=50
  for i in range(15):
    for j in range(15):
      l += w(board,i,j)
      ln += w(nb,i,j)
      l2 += w(board,j,i)
      ln2 += w(nb,j,i)
    m,k = l.split('0'),l2.split('0')
    s+= c(ln,m)+c(ln2,k)
    l,l2,ln,ln2 = '','','',''
  return s
def best_play(tiles,board):
  s = []
  for i in range(15):
    for j in range(15):
      for k in range(2):
        s.append([play(i,j,k,tiles,board),-i,-j,-k])
  s.sort()
  if s[-1][0] !=-1:
    return [s[-1][0],-s[-1][1],-s[-1][2],-s[-1][3]]
  return [-1,-1,-1,-1]

00363: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1018, 'const': 441, 'code+const': 1459}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  all_w = []
  ver = ''
  hor = ''
  for a in range(15):
    for b in range(15):
      if board[b][a] != '':
        ver += board[b][a]
      if b == 14 and ver != '':
        all_w.append(ver)
        ver = ''
      if board[b][a] == '' and ver != '':
        all_w.append(ver)
        ver = ''
      if board[a][b] != '':
        hor += board[a][b]
      if b == 14 and hor != '':
        all_w.append(hor)
        hor = ''
      if board[a][b] == '' and hor != '':
        all_w.append(hor)
        hor = ''
  valid = []
  invalid = []
  for word in all_w:
    if is_valid(word):
      valid.append(word)  
    elif is_valid(word) == False and len(word) >= 2:
      invalid.append(word)
  valid.sort()
  invalid.sort()
  return [valid,invalid]
def get_play(board, new_board):
  tile = ''
  row = 0
  col = 0
  down = 0
  for a in range(15):
    for b in range(15):
      if board[a][b] != new_board[a][b] and tile == '':
        row = a
        col = b
        tile += new_board[a][b]
      elif board[a][b] != new_board[a][b] and tile != '':
        if a != row:
          down = 1
        tile += new_board[a][b]
  return [row,col,down,tile]
def play(row,col,down,tiles,board):
  c,n_board = place_tiles(row,col,down,tiles,board)
  valid_old,invalid_old = get_all_words(board)
  valid_new,invalid_new = get_all_words(n_board)
  v_word = 0
  w = valid_new[:]
  if c == False:
    return -1
  if len(invalid_new) >= 1:
        return -1
  for ch in w:
    if ch in valid_old:
      valid_old.remove(ch)
      valid_new.remove(ch)
  for word in valid_new:
    for n in word:   
        v_word += get_value(n)
  v_word += 50*(len(tiles)>=7)
  return v_word
def best_play(tiles,board):
  n_board = []
  score = 0
  for i in range(15):
    for j in range(15):
      for d in (0,1):
        c,b = place_tiles(i,j,d,tiles,board)
        s = play(i,j,d,tiles,board)
        if c == True and b[7][7] != '' :
            n_board.append([s,i*(-1),j*(-1),d*(-1),b])
  n_board.sort()
  score += n_board[-1][0] 
  if score == -1 :
    return [-1,-1,-1,-1]
  return [score,n_board[-1][1]*(-1),n_board[-1][2]*(-1),n_board[-1][3]*(-1)]

00364: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

[[[], []]]
test_get_all_words_21.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7  TRANSPORTATIONS
8                 
9                 
10                
11                
12                
13                
14                

[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5          M      
6          U      
7   ETERNALS      
8          K      
9          E      
10         T      
11         E      
12         E      
13         R      
14                

[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_40.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1           C     
2           O     
3           N     
4           N     
5           E     
6         V R     
7      UNWITS     
8         L       
9         D       
10       FEWZ     
11          O     
12          O     
13                
14                

[[['CONNERS', 'UNWITS', 'VILDE'], ['CONNERSZOO'], ['FEWZ']]]
test_get_all_words_51.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3          U      
4          NOOOOO 
5          O  N   
6          B  I   
7     HELIOS  G   
8       I  E  I   
9       A  R  R   
10      M  V  I   
11         A      
12         N      
13         T      
14                

[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5          M      
6          O      
7        QIN      
8         NE      
9         FY      
10        L       
11       YA       
12       UT       
13       PE       
14        R       

[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7     MANGIER     
8    RETAINS      
9                 
10                
11                
12                
13                
14                

[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6   SIF           
7   ITERANT       
8     RETAINS     
9  URANITE        
10       STAIRED  
11          FEH   
12                
13                
14                

[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_90.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0  OXYPHENBUTAZONE
1  PIER DORM DOM J
2  A  E   A   O  A
3  C  Q   I   T  C
4  I  U   N      U
5  F  AD  W      L
6  Y  LO  AD     A
7  I DIM DSO     T
8  N OF  OHM     I
9  G MI  MI      N
10    ED  N      G
11    DOD G       
12     MOD        
13      MO        
14       MONSTERS 

[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LOAD',
 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'XIUM',
   'ZOOTXI'],
  ['DOMDOM', 'YEDDOM',
 'MIMI', 'NODOMDOM', 'ZOFOHMT'],
 'UMDOM', 'YEDOM'[]]]
test_get_all_words_100.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0       T     F   
1       R     U   
2       I     G  A
3     TRAT   GI JA
4  JOJUOLOOMJYOOI 
5     R E XU V  V 
6     E D INTERNED
7     E   D       
8     N   SITHING 
9     S    FOOT   
10           CALP 
11         ARK    
12                
13                
14                

[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE',
   'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO', 'TRATGI']]]
test_get_play_10.0IndexError('list index out of range')
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7        ICE      
8                 
9                 
10                
11                
12                
13                
14                

[]
['ICE']
['I', 'C', 'E']
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7        ICE      
8                 
9                 
10                
 ...(more)
[]
test_get_play_20.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1         M       
2         A       
3         L       
4         E       
5         A       
6         T       
7         E       
8                 
9                 
10                
11                
12                
13                
14                

[]
['MALEATE']
['M', 'A', 'L', 'E', 'A', 'T', 'E']
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1         M       
2         A       
3         L       
4         E       
5         A       
6         T       
7         E       
8                 
9              ...(more)
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 7'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'MAOLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_30.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5       HERNIAS   
6       E         
7       RETINAS   
8       N         
9       I         
10      A         
11      S         
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5       HERNIAS   
6       EX        
7       RETINAS   
8       NU        
9       IN        
10      AT        
11      S         
12                
13                
14                

['HERNIAS', 'HERNIAS', 'RETINAS']
['AT', 'EX', 'EXEUNT', 'HERNIAS', 'HERNIAS', 'IN', 'NU', 'RETINAS']
['A', 'T']
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5       HERNIAS   
6       E ...(more)
[[6, 6, 1, 'SXUNT']]
test_get_play_40.0IndexError('list index out of range')
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7   INHERITANCE   
8                 
9                 
10                
11                
12                
13                
14                

[]
['INHERITANCE']
['I', 'N', 'H', 'E', 'R', 'I', 'T', 'A', 'N', 'C', 'E']
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7   INHERITANCE   
8         ...(more)
[]
test_get_play_50.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7        MAN      
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6           C     
7        MANA     
8           T     
9                 
10                
11                
12                
13                
14                

['MAN']
['CAT', 'MANA']
['C', 'A', 'T']
['M', 'A', 'N']
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6           C     
7        MANA     
8           T     
9         ...(more)
[[6, 9, 1, 'CAT']]
test_get_play_60.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7        MAN      
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6         C       
7        MAN      
8         T       
9                 
10                
11                
12                
13                
14                

['MAN']
['CAT', 'MAN']
['C', 'A', 'T']
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6         C       
7        MAN      
8         T       
9                 
10      ...(more)
[[6, 7, 1, 'CT']]
test_get_play_71.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7        MAN      
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7     COMMANDER   
8                 
9                 
10                
11                
12                
13                
14                

['MAN']
['COMMANDER']
['C', 'O', 'M', 'M', 'A', 'N', 'D', 'E', 'R']
['M', 'A', 'N']
['C', 'O', 'M', 'D', 'E', 'R']
['C', 'O', 'M', 'D', 'E', 'R']
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4              ...(more)
[[7, 3, 0, 'COMDER']]
test_get_play_80.0IndexError('list index out of range')
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7        TO       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6        AT       
7        TO       
8                 
9                 
10                
11                
12                
13                
14                

['TO']
['AT', 'AT', 'TO', 'TO']
['A', 'T']
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6        AT       
7        TO       
8                 
9                 
10  ...(more)
[]
test_get_play_90.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7        MAN      
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6         M       
7        MAN      
8                 
9                 
10                
11                
12                
13                
14                

['MAN']
['MA', 'MAN']
['M', 'A']
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6         M       
7        MAN      
8                 
9                 
10            ...(more)
[[16, 7, 0, 'M']]
test_get_play_100.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0         H       
1         E       
2         P       
3         A       
4         T       
5         I       
6         C       
7         S       
8                 
9                 
10                
11                
12                
13                
14                

[]
['HEPATICS']
['H', 'E', 'P', 'A', 'T', 'I', 'C', 'S']
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0         H       
1         E       
2         P       
3         A       
4         T       
5         I       
6         C       
7         S       
8                 
9        ...(more)
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7   STARPLATINUM  
8                 
9                 
10                
11                
12                
13                
14                

[[], []]
[[], ['STARPLATINUM']]
[-1]
test_play_21.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

[[], []]
[[], []]
[-1]
test_play_31.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         PYTHON  
8                 
9                 
10                
11                
12                
13                
14                

[[], []]
[['PYTHON'], []]
[14]
test_play_40.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         PYTHON  
8                 
9                 
10                
11                
12                
13                
14                

[[], []]
[['PYTHON'], []]
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         PYTHON  
8                 
9                 
10                
1 ...(more)
[14, 721]
test_play_51.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7        MANGIER  
8                 
9                 
10                
11                
12                
13                
14                

[[], []]
[['MANGIER'], []]
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7        MANGIER  
8                 
9                 
10                
 ...(more)
[60, 72]
test_play_60.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7        MANGIER  
8                 
9                 
10                
11                
12                
13                
14                

[[], []]
[['MANGIER'], []]
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7        MANGIER  
8                 
9                 
10                
 ...(more)
[60, 73-1]
test_play_70.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7    ELEPHANT     
8                 
9                 
10                
11                
12                
13                
14                

[[], []]
[['ELEPHANT'], []]
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7    ELEPHANT     
8                 
9                 
10                 ...(more)
[63, 614]
test_play_81.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7      PLATINUM   
8                 
9                 
10                
11                
12                
13                
14                

[[], []]
[['PLATINUM'], []]
[62]
test_play_90.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7        ROJI     
8                 
9                 
10                
11                
12                
13                
14                

[[], []]
[['ROJI'], []]
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7        ROJI     
8                 
9                 
10                
11  ...(more)
[11, 15, 24, 17, 85, -12]
test_play_100.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         AX      
8                 
9                 
10                
11                
12                
13                
14                

[[], []]
[['AX'], []]
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         AX      
8                 
9                 
10                
11    ...(more)
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0         F       
1         R       
2         A       
3         C       
4         T       
5         O       
6         S       
7         T       
8         R       
9         A       
10        T       
11        I       
12                
13                
14                

[[], []]
[['FRACTOSTRATI'], []]
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0         F       
1         R       
2         A       
3         C       
4         T       
5         O       
6         S       
7         T       
8         R       
9         A       
10        T    ...(more)
[67, 61, 28, 611, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6         O       
7        OD       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5          O      
6         OD      
7        ODE      
8                 
9                 
10                
11                
12                
13                
14                

[['OD', 'OD'], []]
[['OD', 'OD', 'ODE', 'ODE'], []]
[811]
test_play_130.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7       ROTO      
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7       ROTOR     
8           O     
9           T     
10          O     
11                
12                
13                
14                

[['ROTO'], []]
[['ROTO', 'ROTOR'], []]
[59]
test_play_140.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         BANANA  
8                 
9                 
10                
11                
12                
13                
14                

[[], []]
[['BANANA'], []]
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         BANANA  
8                 
9                 
10                
1 ...(more)
[8, 120, 1426, 8-1]
test_play_150.0
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3      BRISKETS   
4      L      N   
5      O  B   O   
6      O BA   W   
7    COMBAT D B   
8       LA  A E   
9       U   DOL   
10      E     T   
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3      BRISKETS   
4      L      N   
5      O  BA  O   
6      O BAT  W   
7    COMBATED B   
8       LA LA E   
9       U  IDOL   
10      E  C  T   
11                
12                
13                
14                

[['BA', 'BAA', 'BAT', 'BLOOM', 'BLUE', 'BRISKETS', 'COMBAT', 'DAD', 'DOL', 'LA', 'SNOWBELT'], []]
[['ATELIC', 'BA', 'BAA', 'BAT', 'BAT', 'BLOOM', 'BLUE', 'BRISKETS', 'COMBATED', 'DAD', 'IDOL', 'LA', 'LA', 'SNOWBELT'], []]
[7839]
test_best_play_10.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12       ...(more)
[]
test_best_play_20.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12       ...(more)
[]
test_best_play_30.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12       ...(more)
[]
test_best_play_40.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12       ...(more)
[]
test_best_play_50.0OSError("stdout's size exceeds 5000")
     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12                
13                
14                

     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14 
0                 
1                 
2                 
3                 
4                 
5                 
6                 
7         *       
8                 
9                 
10                
11                
12       ...(more)
[]
bytecount: {'code': 5872, 'const': 2952, 'code+const': 8824}
check_import({'allowable': ['math']}): none
def collect_board(board) :
    G = []
    top = "   "
    for i in range(0,15):
        top += " "*max(0,3-len(str(i))) + str(i) + " "
    print(top)
    for i in range(len(board)):
        line = str(i)+" "*max(0,3-len(str(i)))+""
        for j in range(len(board)):
            if board[i][j]=="":
                if i==7 and j==7:
                    line += "*"
                else:
                    line += " "
            else:
                line += str(board[i][j])
        G.append(line)
        print(line)
    print()
    return G
def decode_word(G) :
    Alphabets = ["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"]
    Vertical = []
    k = 0
    while k <= len(G[0])-1 :
        c = []
        j = 0
        while j <= len(G)-1 :
            if j+1 > len(G)-1 :
                if G[j][k] in Alphabets and G[j-1][k] != " " : 
                    c.append(G[j][k])
                else :
                    pass
            else :
                if G[j][k] in Alphabets and (G[j-1][k] != " " or G[j+1][k] != " "):
                    c.append(G[j][k])
                else :
                    if G[j][k] not in Alphabets and G[j-1][k] in Alphabets and G[j+1][k] in Alphabets :
                        c.append(" ")
                    else :
                        if G[j][k] in Alphabets and G[j+1][k] == " " :
                            c.append(" ")
            j = j+1
        d = "".join(c)
        if len(d) > 1 :
            Vertical.append(d)
        else :
            pass
        k = k+1
    Horizontal = []
    l = 0
    while l <= len(G)-1 :
        m = 0
        e = []
        while m <= len(G[l])-1 :
            if m+1 > len(G[l])-1 :
                if G[l][m] in Alphabets and G[l][m-1] != " " : 
                    e.append(G[l][m])
                else :
                    pass
            else :
                if G[l][m] in Alphabets and (G[l][m-1] != " " or G[l][m+1] != " "):
                    e.append(G[l][m])
                else :
                    if G[l][m] not in Alphabets and G[l][m-1] in Alphabets and G[l][m+1] in Alphabets :
                        e.append(" ")
                    else :
                        if G[l][m] in Alphabets and G[l][m+1] == " " :
                            e.append(" ")
            m = m+1
        w = "".join(e)
        if len(w) > 1 :
            Horizontal.append(w)
        else :
            pass
        l = l+1
    R = Vertical + Horizontal
    R.sort()
    S = []
    t = 0
    while t <= len(R)-1 :
        if " " in R[t] :
            q = R[t].split()
            for p in q :
                S.append(p)
        else :
            S.append(R[t])
        t = t+1
    S.sort()
    return S
def cutting(A,B) :
    k = 0
    D = []
    while k <= len(A)-1 :
        if k + len(B) > len(A) :
            break
        else :
            c = A[k:k+len(B):1]
            if c == B :
                D = A[0:k:1] + A[k+len(B):len(A):1]
                print(D)
                break
            else :
                pass
        k = k+1
    return [c,D]
def get_all_words(board):
    A = decode_word(collect_board(board))
    Valid = []
    Invalid = []
    k = 0
    while k <= len(A)-1 :
        if is_valid(A[k]) == True :
            Valid.append(A[k])
        else :
            Invalid.append(A[k])
        k = k+1
    return [Valid,Invalid]
def get_play(board, new_board):
    Alphabets = ["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"]
    A = decode_word(collect_board(board))
    B = decode_word(collect_board(new_board))
    print(A)
    print(B)
    C = []
    D = []
    k = 0
    while k <= len(B)-1 :
        if B[k] not in A :
            C.append(list(B[k]))
            break
        else :
            pass
        k = k+1
    j = 0
    while j <= len(A)-1 :
        if A[j] not in B :
            D.append(list(A[j]))
            break
        else :
            pass
        j = j+1
    if C != [] :
        print(C[0])
    else :
        C.append([[]])
    if D != [] :
        print(D[0])
    else :
        D.append([[]])
    R = cutting(C[0],D[0])[1]
    if R != [] :
        pass
    else :
        R = []
        P = []
        V1 = []
        V = collect_board(new_board)
        f = 0
        while f <= len(V)-1 :
            a = 0
            while a <= len(V[f])-1 :
                if a+1 > len(V[f])-1 :
                    if V[f][a] in Alphabets and V[f][a-1] in Alphabets :
                        pass
                    else :
                        V1.append(V[f][a])
                else :
                    if a-1 < 0 :
                        if V[f][a] in Alphabets and V[f][a+1] in Alphabets :
                            pass
                        else :
                            V1.append(V[f][a])
                    else :
                        if V[f][a] in Alphabets and (V[f][a+1] in Alphabets or V[f][a-1] in Alphabets) :
                            pass
                        else :
                            if V[f][a] in Alphabets and V[f][a+1] not in Alphabets and V[f][a-1] not in Alphabets :
                                V1.append(V[f][a])
                            else :
                                pass
                a = a+1
            f = f+1
        V2 = []
        g = 0
        while g <= len(V)-1 :
            q = 0
            while q <= len(V[g])-1 :
                if g+1 > len(V)-1 :
                    if V[g][q] in Alphabets :
                        V2.append(V[g][q])
                    else :
                        pass
                else :
                    if g-1 < 0 :
                        if V[g][q] in Alphabets :
                            V2.append(V[g][q])
                        else :
                            pass
                    else :
                        if V[g][q] in Alphabets and V[g-1][q] not in Alphabets and V[g+1][q] not in Alphabets :
                            V2.append(V[g][q])
                        else :
                            pass
                q = q+1
            g = g+1
        if V1 == [] :
            P = V2
        else :
            P = V1
        for e in P :
            if e in Alphabets :
                R.append(e)
            else :
                pass
    print(R)
    CoX = []
    G = collect_board(new_board)
    print(G)
    l = 0
    while l <= len(G)-1 :
        Midgard = False
        m = 0
        while m <= len(G[l])-1 :
            if G[l][m] == R[0] and G[l][(m+1)%len(G[l])] in R :
                CoX.append(l)
                CoX.append(m-3)
                Midgard = True
                break
            else :
                pass
            m = m+1
        if Midgard == True :
            break
        else :
            pass
        l = l+1
    print(CoX)
    CoY = []
    t = 0
    while t <= len(G[0])-1 :
        u = 0
        Nidavior = False
        while u <= len(G)-1 :
            if G[u][t] == R[0] and G[(u+1)%len(G)][t] in R :
                CoY.append(u)
                CoY.append(t-3)
                Nidavior = True
            else :
                pass
            u = u+1
        if Nidavior == True :
            break
        else :
            pass
        t = t+1
    print(CoY)
    if CoX == [] :
        print(CoY + [1] + ["".join(R)])
        return CoY + [1] + ["".join(R)]
    else :
        if CoY == [] :
            print(CoX + [0] + ["".join(R)])
            return CoX + [0] + ["".join(R)]
    return [0,0,0,""]
def play(row,col,down,tiles,board):
    A = get_all_words(board)
    d = place_tiles(row,col,down,tiles,board)
    B = get_all_words(d[1])
    print(A)
    print(B)
    C = []
    D = []
    k = 0
    while k <= len(B[0])-1 :
        if B[0][k] not in A[0] :
            C.append(B[0][k])
        else :
            pass
        k = k+1
    j = 0
    while j <= len(B[1])-1 :
        if B[1][j] not in A[1] :
            D.append(B[1][j])
        else :
            pass
        j = j+1
    l = 0
    score = 0
    while l <= len(C)-1 :
        if len(C[l]) >= 7 :
            score = score + 50
        else :
            pass
        g = 0
        c = 0
        while g <= len(C[l])-1 :
            c = c + get_value(C[l][g])
            g = g + 1
        score = score + c
        l = l+1
    if score == 0 :
        return -1
    else :
        return score
def play_test(row,col,down,tiles,board):
    score = play(row,col,down,tiles,board)
    if score!=-1:
        board = place_tiles(row,col,down,tiles,board)[1]
    print_board(board)
    print(score)
    return board
def best_play(tiles,board):
    A01 = get_all_words(board)
    A = []
    B = []
    C = []
    D = []
    row = 0
    while row <= 14 :
        col = 0
        while col <= 14 :
            c = play(row,col,0,tiles,board)
            f = play(row,col,1,tiles,board)
            if c not in C :
                C.append(c)
            else :
                pass
            if f not in D :
                D.append(f)
            else :
                pass
            A.append([c,row,col,0])
            B.append([f,row,col,1])
            col = col + 1
        row = row + 1
    A.sort()
    B.sort()
    C.sort()
    D.sort()
    print(A[-1])
    print(B[-1])
    E = Locking(A,C)
    Q = Locking(B,D)
    print(E[0],Q[0])
    A01 = get_all_words(board)
    A = []
    B = []
    C = []
    D = []
    row = 0
    while row <= 14 :
        col = 0
        while col <= 14 :
            c = play(row,col,0,tiles,board)
            f = play(row,col,1,tiles,board)
            if c not in C :
                C.append(c)
            else :
                pass
            if f not in D :
                D.append(f)
            else :
                pass
            A.append([c,row,col,0])
            B.append([f,row,col,1])
            col = col + 1
        row = row + 1
    A.sort()
    B.sort()
    C.sort()
    D.sort()
    print(A[-1])
    print(B[-1])
    E =  Locking(A,C)
    Q = Locking(B,D)
    print(E[0],Q[0])
    board01 = place_tiles(E[0][1],E[0][2],E[0][3],tiles,board)[1]
    board02 = place_tiles(Q[0][1],Q[0][2],Q[0][3],tiles,board)[1]
    F = get_all_words(board01)
    G = get_all_words(board02)
    t01 = [len(e) for e in F[1] if len(e) > 2 ]
    t02 = [len(e) for e in G[1] if len(e) > 2 ]
    if t01 == [] and t02 != [] :
        print(E[0])
        return E[0]
    else :
        if t01 != [] and t02 == [] :
            print(Q[0])
            return Q[0]
        else :
            if t01 != [] and t02 != [] :
                print([-1,-1,-1,-1])
                return [-1,-1,-1,-1]
            else :
                if E[0][0] > Q[0][0]  :
                    print(E[0])
                    return E[0]
                else :
                    if Q[0][0] > E[0][0] :
                        print(Q[0])
                        return Q[0]
                    else :
                        if Q[0][0] == -1 and E[0][0] == -1 :
                            print([-1,-1,-1,-1])
                            return [-1,-1,-1,-1]
                        else :
                            if Q[0][1] > E[0][1] :
                                print(E[0])
                                return E[0]
                            else :
                                if E[0][1] > Q[0][1] :
                                    print(Q[0])
                                    return Q[0]
                                else :
                                    if E[0][1] == Q[0][1] :
                                        if E[0][2] > Q[0][2] :
                                            print(Q[0])
                                            return Q[0]
                                        else :
                                            if Q[0][2] > E[0][2] :
                                                print(E[0])
                                                return E[0]
                                            else :
                                                if Q[0][2] == E[0][2] :
                                                    if Q[0][3] > E[0][3] :
                                                        print(E[0])
                                                        return E[0]
                                                    else :
                                                        print(Q[0])
                                                        return Q[0]
                                                else :
                                                    pass
def Locking(A,C) :
    E = []
    k = 0
    while k <= len(A)-1 :
        if A[k][0] == C[-1] :
            E.append(A[k])
        else :
            pass
        k = k+1
    return E
def main() :
    c = make_board()
    d = place_tiles(7,7,0,"at",c)
    d = place_tiles(7,6,0,"h",d[1])
    d = place_tiles(8,7,0,"to",d[1])
    d = place_tiles(7,9,1,"stearin",d[1])
    d = place_tiles(6,5,0,"buck",d[1])
    d = place_tiles(10,8,1,"zoo",d[1])
    d = place_tiles(14,3,0,"pillars",d[1])
    d = place_tiles(13,0,0,"wudu",d[1])
    d = place_tiles(2,10,1,"hahahaha",d[1])
    print_board(d[1])
    print(collect_board(d[1]))
    print(decode_word(collect_board(d[1])))
    print(get_all_words(d[1]))
    e = make_board()
    q = place_tiles(7,7,0,"CE",e)
    q = place_tiles(7,6,0,"I",q[1])
    print_board(q[1])
    v = place_tiles(5,6,1,"JUDCC",q[1])
    print_board(v[1])
    get_play(q[1],v[1])
    board1 = make_board()
    play(7,5,0,"juice",board1)
    board1 = play_test(7,5,0,"ice",board1)
    board1 = play_test(7,3,0,"ju",board1)
    board1 = play_test(4,4,1,"infsive",board1)
    board1 = play_test(0,7,1,"alienat",board1)
    board1 = play_test(2,8,1,"feared",board1)
    board1 = play_test(8,8,1,"s",board1)
    board1 = play_test(8,7,1,"s",board1)
    board1 = play_test(3,5,0,"qun",board1)
    best_play("juice",e)
    board = make_board()
    tiles_list =["juice","infsive","alienat","feared","axe","kangaroo","kngaroo"]
    play_list = []
    for tiles in tiles_list:
        score,row,col,down = best_play(tiles,board)
        if score!=-1:
            board =place_tiles(row,col,down,tiles,board)[1]
        play_list.append([score,row,col,down])
    print_board(board)
    [print(x) for x in play_list]

00365: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_10.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_get_all_words_20.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_get_all_words_30.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_get_all_words_40.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_get_all_words_50.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_get_all_words_60.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_get_all_words_70.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_get_all_words_80.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_get_all_words_90.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_get_all_words_100.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_get_play_10.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_get_play_20.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_get_play_30.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_get_play_40.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_get_play_50.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_get_play_60.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_get_play_70.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_get_play_80.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_get_play_90.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_get_play_100.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_play_10.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_play_20.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_play_30.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_play_40.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_play_50.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_play_60.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_play_70.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_play_80.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_play_90.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_play_100.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_play_110.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_play_120.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_play_130.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_play_140.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_play_150.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_best_play_10.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_best_play_20.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_best_play_30.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_best_play_40.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
test_best_play_50.0IndentationError('expected an indented block', ('<string>', 432, 4, 'with spjInMemoryFile(files ={},\\n'))
[]
bytecount: {}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid = []
    invalid = []
    for i in range(15):
        mystring = ""
        for j in range(15):
            if not board[i][j] == "":
                mystring += str(board[i][j])
            else:
                if not mystring == "" and len(mystring)>1:
                    if is_valid(mystring):
                            valid.append(mystring)
                    else:
                        invalid.append(mystring)
                mystring = ""
            if not mystring == "" and j==14:
                if is_valid(mystring):
                    valid.append(mystring)
                else:
                    invalid.append(mystring)
    for j in range(15):
        mystring = ""
        for i in range(15):
            if not board[i][j] == "":
                mystring += str(board[i][j])
            else:
                if not mystring == "" and len(mystring)>1:
                    if is_valid(mystring):
                        valid.append(mystring)
                    else:
                        invalid.append(mystring)
                mystring = ""
            if not mystring == "" and i==14:
                if is_valid(mystring):
                    valid.append(mystring)
                else:
                    invalid.append(mystring)
    return [valid,invalid]
# Function 2: get_play
# Return [row,col,down,tiles] such that calling place_tiles(row,col,down,tiles,board)[1] would result in new_board
def get_play(board, new_board):
    returnlist = []
    down = 0
    mystring=""
    for i in range(15):
        for j in range(15):
            if board[i][j] != new_board[i][j]:
                if returnlist == []:
                    returnlist.append(i)
                    returnlist.append(j)
                mystring += str(new_board[i][j])
                if returnlist[0] < i:
                    down = 1
    returnlist.append(down)
    returnlist.append(mystring)
    return returnlist
# Function 3: play
# Return score | score is score from the play
# If play is not valid, return -1
def play(row,col,down,tiles,board):
    score = 0
    boardwords = get_all_words(board)
    new_board = place_tiles(row,col,down,tiles,board)[1] 
    new_boardwords = get_all_words(new_board)
    try:
        if new_boardwords[1][0] != "":
            return -1
    except:
        pass
    for i in new_boardwords[0]:
        if i not in boardwords[0]:
            for char in i:
                score += get_value(char)
    if score == 0 :
        return -1
    else:
        if len(tiles) >= 7:
            score += 50
        if score == 61:
            print(new_boardwords)
            print_board(new_board)
        return score
def play_test(row,col,down,tiles,board):
	score = play(row,col,down,tiles,board) 
 if score!=-1:
		board = place_tiles(row,col,down,tiles,board)[1] 
 print_board(board)
 print(score)
 return board
# Function 4 : best_play
# Return [score, row, col, down]  highest score achievable with these tiles on current board
def best_play(tiles,board):
    listscoreXaxis = make_board()
    listscoreYaxis = make_board()
    maxX=[0,0,0]
    maxY=[0,0,0]
    if checkEmpty(board):
        for i in range(15):
            for j in range(15):
                listscoreXaxis[i][j] = play(i,j,0,tiles,board)
                listscoreYaxis[i][j] = play(i,j,1,tiles,board)
    else:
        for i in range(15):
            for j in range(15):
                if check_surround(i,j,0,tiles,board):
                    listscoreXaxis[i][j] = play(i,j,0,tiles,board)
                else:
                    listscoreXaxis[i][j] = -1
                if check_surround(i,j,0,tiles,board):
                    listscoreYaxis[i][j] = play(i,j,1,tiles,board)
                else:
                    listscoreYaxis[i][j] = -1
    for i in range(15):
        for j in range(15):
            if listscoreXaxis[i][j] > maxX[0]:
                maxX = [listscoreXaxis[i][j],i,j,0]
            if  listscoreYaxis[i][j] > maxY[0]:
                maxY = [listscoreYaxis[i][j],i,j,1]
    if maxX[0]==0 and maxX[1]==0 and maxX[2]==0 and maxY[0]==0 and maxY[1]==0 and maxY[2]==0:
        return [-1,-1,-1,-1]
    if maxX[0] > maxY[0]:
        maxP = maxX
    elif maxY[0] > maxX[0]:
        maxP = maxY
    else:
        if maxX[1]<maxY[1]:
            maxP = maxX
        elif maxY[1]<maxX[1]:
            maxP = maxY
        else:
            if maxX[2]<maxY[2]:
                maxP = maxX
            elif maxY[2]<maxX[2]:
                maxP = maxY
            else:
                maxP = maxX
    return maxP
def check_surround(i,j,down,tiles,board):
    if down==0:
        for x in range(len(tiles)+2):
            for y in range(3):
                try:
                    if board[i+y-1][j+x-1] != "":
                        return True
                except:
                    pass
    if down==1:
        for y in range(len(tiles)+2):
            for x in range(3):
                try:
                    if board[i+y-1][j+x-1] != "":
                        return True
                except:
                    pass
    return False
def checkEmpty(board):
    for i in board:
        for j in i:
            if j != "":
                return False
    return True

00366: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1710, 'const': 371, 'code+const': 2081}
check_import({'allowable': ['math']}): none
def  li_word_in_line (line):
      li = []
      for e in line:
        if e != "":
          li += e
        else :
          li += [" "]
      li = "".join(li).strip().split()
      return li
def get_all_words(board):
    valid = [] ; invalid = []
    for i in range (15):
      li = li_word_in_line (board[i])
      for f in li:
        if li != [] and len(f) > 1:
          if is_valid(f):
            valid.append(f.upper())
          else:
            invalid.append(f.upper())
      li = []
      column = [ e[i] for e in board ] 
      li = li_word_in_line (column)
      for f in li:
        if li != [] and len(f) > 1:
          if is_valid(f):
            valid.append(f.upper())
          else:
            invalid.append(f.upper())
    valid.sort() ; invalid.sort()
    return [valid , invalid]
def get_play(board, new_board):
    word = []; pos = []
    for i in range (15):
      a = board[i] ; b = new_board[i]
      if a != b:
        for j in range (15):
          if a[j] != b[j]:
            word += b[j]
            pos.append([i,j])
    i,j = pos[0]
    if len(pos) == 1:
      down = 0
    elif i == pos[1][0]:
      down = 0
    else:
      down = 1
    word = "".join(word)
    return [i , j , down , word.upper()]
def play(row,col,down,tiles,board):
    if place_tiles(row,col,down,tiles,board)[0] == False:
      return -1
    new_board = place_tiles(row,col,down,tiles,board)[1]
    new_word = []; pos = []
    if down == 0:
      n = len(tiles) ; j = 0
      while j < n:
        if board[row][col+j] == "" :
          pos.append([row,col+j])
        else:
          n += 1
        j += 1
    if down == 1:
      n = len(tiles) ; i = 0
      while i < n:
        if board[row+i][col] == "" :
          pos.append([row+i,col])
        else:
          n += 1
        i += 1
    for r in range (15):
      line_pos = [] ; li_line_pos = []
      for c in range (15):
        if new_board[r][c] != "":
          line_pos.append([r , c])
        else: 
          li_line_pos.append(line_pos)
          line_pos = [] 
      li_line_pos.append(line_pos)
      new_pos = []
      for e in li_line_pos:
        if len(e) != 1 and e != []:
          new_pos.append(e)        
      line = new_board[r]
      li_word = li_word_in_line (line)
      line_word = []
      for word in li_word:
        if len(word) > 1 :
          line_word.append(word)
      for li_pos in new_pos:
        check = 0
        for e in li_pos:
          if e in pos:
            check += 1
        if check > 0:
          i = new_pos.index(li_pos)
          new_word.append(line_word[i]) 
    for c in range (15):
      line_pos = [] ; li_line_pos = []
      for r in range (15):
        if new_board[r][c] != "":
          line_pos.append([r , c])
        else: 
          li_line_pos.append(line_pos)
          line_pos = []
      li_line_pos.append(line_pos)
      new_pos = []
      for e in li_line_pos:
        if len(e) != 1 and e != []:
          new_pos.append(e)
      line = [e[c] for e in new_board ]
      li_word = li_word_in_line (line)
      line_word = []
      for word in li_word:
        if len(word) > 1 :
          line_word.append(word)
      for li_pos in new_pos:
        check = 0
        for e in li_pos:
          if e in pos:
            check += 1        
        if check > 0:
          i = new_pos.index(li_pos)
          new_word.append(line_word[i])
    score = 0
    for word in new_word:
      if is_valid(word):
        for char in word:
          score += get_value(char)
      else:
        return -1
    if len(tiles) >= 7 :
      score += 50
    return score
def best_play(tiles,board):
  li = []
  for down in range (2):
    for i in range (15):
      for j in range (15):
        score = play(i,j,down,tiles,board)
        li.append([-score , i ,j , down])
  li.sort()
  li[0][0] = -li[0][0]
  if li[0][0] == -1:
    return [-1,-1,-1,-1]
  return li[0]

00367: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1152, 'const': 380, 'code+const': 1532}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    out = [[],[]]
    a = ''
    for i in range(15):
      a = ''
      for j in range(15):
        if board[i][j].isalpha():
          a += board[i][j]
        if not board[i][j].isalpha() and a.isalpha() or j==14:
          if len(a) > 1:
            if is_valid(a):
              out[0].append(a)
            else:
              out[1].append(a)
          a = ''
    for i in range(15):
      a = ''
      for j in range(15):
        if board[j][i].isalpha():
          a += board[j][i]
        if not board[j][i].isalpha() and a.isalpha() or j==14:
          if len(a) > 1:
            if is_valid(a):
              out[0].append(a)
            else:
              out[1].append(a)
          a = ''
    return [sorted(out[0]),sorted(out[1])]
def get_play(board, new_board):
    out = [-1,-1,-1,'']
    for i in range(15):
      for j in range(15):
        if new_board[i][j] != board[i][j]:
          if out[0] == -1:
            out[0] = i
            out[1] = j
    t=''
    for j in range(out[1],15):
      if new_board[out[0]][j].isalpha() and new_board[out[0]][j] != board[out[0]][j]:
        t += new_board[out[0]][j]
    out[3] = t
    out[2] = 0
    t=''
    for i in range(out[0],15):
      if new_board[i][out[1]].isalpha() and new_board[i][out[1]] != board[i][out[1]]:
        t += new_board[i][out[1]]
    if len(t) > len(out[3]):
      out[3] = t
      out[2] = 1
    return out
def play(row,col,down,tiles,board):
    out = 0
    nboard = place_tiles(row,col,down,tiles,board)
    if nboard[0]:
      word1 = get_all_words(board)
      word2 = get_all_words(nboard[1])
      if len(word2[1]) != 0:
        out = -1
      else:
        for i in word1[0]:
          if i in word2[0]:
            index = word2[0].index(i)
            word2[0].pop(index)
        for i in word2[0]:
          for j in i:
            out += get_value(j)
        if len(tiles) >= 7:
          out += 50
    else:
      out=-1
    return out
def best_play(tiles,board):
    out = [-1,-1,-1,-1]
    for i in range(15):
      for j in range(15):
        play1 = play(i,j,0,tiles,board)
        if play1>0 and play1 > out[0]:
          out[0] = play1
          out[1] = i
          out[2] = j
          out[3] = 0
        play2 = play(i,j,1,tiles,board)
        if play2>0 and play2 > out[0]:
          out[0] = play2
          out[1] = i
          out[2] = j
          out[3] = 1
    return out

00368: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1378, 'const': 456, 'code+const': 1834}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valids = []
    invalids = []
    words = []
    str = ''
    for rows in board:
        for letter_r in rows :
            if 'A' <= letter_r <= 'Z':
                str += letter_r
            else:
                if str != '':
                    words.append(str)
                    str = ''
                else:
                    continue
        if str != '':
            words.append(str)
            str = ''
        else:
            continue
    str_c = ''
    for column in range(15):
        for row in range(15):
            if 'A' <= board[row][column] <= 'Z':
                str_c += board[row][column]
            else:
                if str_c != '':
                    words.append(str_c)
                    str_c = ''
                else:
                    continue
        if str_c != '':
            words.append(str_c)
            str_c = ''
        else:
            continue    
    r_words = []
    for w in words:
        if len(w) >= 2:
            r_words.append(w)
    for i in r_words:
        if is_valid(i) == True:
          valids.append(i)
        else:
          continue
    for r in r_words:
        if r not in valids:
            invalids.append(r)
    valids.sort()
    invalids.sort()
    return [valids, invalids]
def get_play(board, new_board):
    added_board = make_board()
    for column in range(15):
        for row in range(15):
            if (board[row][column]) != (new_board[row][column]):
                added_board[row][column] = new_board[row][column]
            else:
                continue
    w_input = []
    rows_w = 'x'
    col_w = 'x'
    word = ''
    for rows1 in range(15):
        for column1 in range(15) :
            if 'A' <= added_board[rows1][column1] <= 'Z':
                word += added_board[rows1][column1]
                if rows_w == 'x' and col_w == 'x':
                    rows_w = rows1
                    col_w = column1
        w_input.append([rows_w,col_w,0,word])
        rows_w = 'x'
        col_w = 'x'
        word = ''
    rows_w = 'x'
    col_w = 'x'
    word = ''
    for column2 in range(15):
        for rows2 in range(15) :
            if 'A' <= added_board[rows2][column2] <= 'Z':
                word += added_board[rows2][column2]
                if rows_w == 'x' and col_w == 'x':
                    rows_w = rows2
                    col_w = column2
        w_input.append([rows_w,col_w,1,word])
        rows_w = 'x'
        col_w = 'x'
        word = ''
    r_w_input = []
    words = []
    len_word = []
    for i in w_input:
        if i != ['x', 'x', 0, ''] and i != ['x', 'x', 1, '']:
            r_w_input.append(i)
            words.append(i[3])
            len_word.append(len(i[3]))
    locate = len_word.index(max(len_word))
    g_play = r_w_input[locate]
    return g_play
def play(row,col,down,tiles,board):
    new_board = place_tiles(row,col,down,tiles,board)[1]
    valids_n , invalids_n = get_all_words(new_board)
    valids_o , invalids_o = get_all_words(board)
    score = 0
    word_count = []
    if len(invalids_n) != 0:
        score = -1
    elif len(invalids_n) == 0:
        for i in valids_n:
            if i not in valids_o:
                word_count.append(i)
            else:
                valids_o.remove(i)
        for w in word_count:
            if len(w) != 0:
                for letter in w:
                    score += get_value(letter)
        if len(tiles) >= 7 and place_tiles(row,col,down,tiles,board)[0] == True:
            score += 50
    return score
def best_play(tiles,board):
    locate = [-1,-1,-1,-1]
    for rows in range(15):
        for column in range(15):
            row_score = play(rows,column,0,tiles,board)
            col_score = play(rows,column,1,tiles,board)
            if row_score > locate[0] and row_score != 0:
                locate = [row_score,rows,column,0]
            if col_score > locate[0] and col_score != 0:
                locate = [col_score,rows,column,1]
    return locate

00369: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 1042, 'const': 256, 'code+const': 1298}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_word = []
    invalid_word = []
    for i in range(15):
      word = board[i][0]
      for j in range(1,15):
        if len(board[i][j]) == len(board[i][j-1]): 
          word += board[i][j]
          if j == 14:
            if is_valid(word):
              valid_word.append(word)
              word = ""
            elif len(word) > 1:
              invalid_word.append(word)
              word = ""
        elif len(board[i][j]) > 0: 
          word = board[i][j]
        else: 
          if is_valid(word):
            valid_word.append(word)
            word = ""
          elif len(word) > 1:
            invalid_word.append(word)
            word = ""
    for i in range(15):
      word = board[0][i]
      for j in range(1,15):
        if len(board[j][i]) == len(board[j-1][i]):
          word += board[j][i]
          if j == 14:
            if is_valid(word):
              valid_word.append(word)
              word = ""
            elif len(word) > 1:
              invalid_word.append(word)
              word = ""
        elif len(board[j][i]) > 0:
          word = board[j][i]
        else:
          if is_valid(word):
            valid_word.append(word)
            word = ""
          elif len(word) > 1:
            invalid_word.append(word)
            word = ""
    valid_word.sort()
    invalid_word.sort()
    return [valid_word,invalid_word]
def get_play(board, new_board):
    poslist = []
    word = ''
    for i in range(15):
      for j in range(15):
        if board[i][j] != new_board[i][j]:
          poslist.append([i,j])
          word += new_board[i][j]
    row, col = poslist[0][0],poslist[0][1]
    if len(poslist) == 1:
      down = 0
    else:
      if poslist[0][0] == poslist[1][0]:
        down = 0
      else:
        down = 1
    return [row, col, down, word]
def play(row,col,down,tiles,board):
    valid_word = get_all_words(board)[0]
    valid,board = place_tiles(row,col,down,tiles,board)
    new_valid_word, new_invalid_word = get_all_words(board)
    newWord = []
    score = 0
    if valid:
        if len(new_invalid_word) != 0:
            return -1
        for i in new_valid_word:
            if i not in valid_word: 
                newWord.append(i)
                for j in i:
                    score += get_value(j)
        for m in newWord:
            new_valid_word.remove(m)
        for k in valid_word:
            if k in new_valid_word:
                new_valid_word.remove(k)
        for l in new_valid_word:
            for q in l:
                score += get_value(q)
        if len(tiles) >= 7:
            score += 50 
        return score
    else:
        return -1
def best_play(tiles,board):
          return [-1,-1,-1,-1]

00370: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1094, 'const': 500, 'code+const': 1594}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    result = [[], []]
    for i in range(15):
        temp = ""
        for index_y, value in enumerate(board):
            letter = value[i]
            if letter != "":
                temp += letter
            elif letter == "":
                temp += " "
        temp = sorted(temp.upper().split())
        for word in temp:
            if is_valid(word.lower()):
                    index_temp = 0
                    result[index_temp].append(word)
            elif not(is_valid(word.lower())) and len(word) >= 2:
                    index_temp = 1
                    result[index_temp].append(word)
    for index_y, value in enumerate(board):
        temp = ""
        for i in range(15):
            letter = value[i]
            if letter != "":
                temp += letter
            elif letter == "":
                temp += " "
        temp = sorted(temp.upper().split())
        for word in temp:
            if is_valid(word.lower()):
                    index_temp = 0
                    result[index_temp].append(word)
            elif not(is_valid(word.lower())) and len(word) >= 2:
                    index_temp = 1
                    result[index_temp].append(word)
    return [sorted(answer) for answer in result]
def get_play(board, new_board):
    tiles = ""; row = -1; col = -1; found = False
    for index_y, value in enumerate(board):
        for i in range(15):
            if new_board[index_y][i] != "" and value[i] == "":
                tiles += new_board[index_y][i]
                if found == False:
                    row, col = index_y, i
                    found = True
    if place_tiles(row, col, 0, tiles, board)[1] == new_board:
        return [row, col, 0, tiles]
    elif place_tiles(row, col, 1, tiles, board)[1] == new_board:
        return [row, col, 1, tiles]
def play(row,col,down,tiles,board):
    valid, new_board = place_tiles(row, col, down, tiles, board)
    score = 0
    if not valid:
        return -1
    board_all_words, checker = get_all_words(board)
    new_board_all_words, new_checker = get_all_words(new_board)
    if new_checker != []:
        return -1
    for index, word in enumerate(board_all_words):
        try:
            new_board_all_words.pop(new_board_all_words.index(word))
        except ValueError:
            pass
    for word in new_board_all_words:
        for letter in word:
            adder = get_value(letter)
            if adder == -1:
                return -1
            score += adder
    if len(tiles) >= 7:
        score += 50
    return score
def best_play(tiles,board):
    possibilities = []
    for down in range(2):
        for index_row, value in enumerate(board):
            for index_col in range(len(board)):
                if play(index_row, index_col, down, tiles, board) == -1:
                    possibilities.append([-1,-1,-1,-1])
                else:
                    possibilities.append([play(index_row, index_col, down, tiles, board), index_row, index_col, down])
    possibilities.sort(key = lambda x: (x[1], x[2], x[3]))
    possibilities.sort(key = lambda x: x[0], reverse = True)
    return possibilities[0]

00371: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1256, 'const': 1056, 'code+const': 2312}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    word = ''
    ans = []
    a = []
    for i in range(2) :
        ans.append([])
    alphabets = ['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']
    for i in range(len(board)): 
        for j in range(len(board)): 
            if board[i][j] in alphabets  :
                word += board[i][j]
            if board[i][j] == '' :
                word += ','
        word += ','
    for i in range(len(board)): 
        for j in range(len(board)): 
            if board[j][i] in alphabets  :
                word += board[j][i]
            if board[j][i] == '' :
                word += ','
        word += ','
    word = word.strip(',')
    word = word.split(',')
    word = sorted(word)
    for e in word :
        if len(e) > 1 :
            a.append(e)
    for k in a :
        v = is_valid(k)
        if v == True :
            ans[0].append(k)
        else :
            ans[1].append(k)
    return ans
def get_play(board, new_board):
    x = ''
    y = []
    for i in range(len(new_board)): 
         for j in range(len(new_board)): 
            if board[i][j] != new_board[i][j] :
                x += new_board[i][j]
                y.append([i,j])
    m = y[0][0]
    n = y[0][1]
    t = []
    if len(x) > 1 :
        for y in range(len(new_board)): 
            for z in range(len(new_board)): 
                if new_board[y][z] != board[y][z] :
                    t.append([y,z])
    if len(x) > 1 :
         if t[0][0] == t[1][0] :
             w = 0
         if t[0][1] == t[1][1] :
             w = 1
    if len(x) == 1 :
        w = 0
    return [m,n,w,x]
def play(row,col,down,tiles,board):
    old = get_all_words(board)
    old0 = old[0]
    old1 = old[1]
    x = place_tiles(row,col,down,tiles,board)
    valid = x[0]
    new_board = x[1]
    new = get_all_words(new_board)
    new0 = new[0]
    new1 = new[1]
    if valid == False or len(new1) > 0 :
        return -1
    if valid == True and len(new1) == 0 : 
        score = 0 
        for word in new0 :
            if word not in old0   :
                for alphabet in word :
                   score += get_value(alphabet)
            else :
                j = old0.index(word)
                old0.pop(j)
        if len(tiles) >= 7 :
            score += 50
        return score
def best_play(tiles,board):
    a = []
    for i in range(len(board)):
        for j in range(len(board)) :
            for k in range(2) :
                x = play(i,j,k,tiles,board)
                a.append([x,i,j,k])
    m = sorted(a,reverse=True)
    n = m[0][0]
    if n == -1 :
        return [-1,-1,-1,-1]
    else :
        aa = []
        for e in m :
            if e[0] == n :
               aa.append(e)
        ans = sorted(aa)
        return ans[0]

00372: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0
[49-1]
test_play_20.0
[9-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 72-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 15, 24, 17, 85, 012]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 1827, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_140.0
[8, 120, 1426, 7-1]
test_play_150.0
[2839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1208, 'const': 365, 'code+const': 1573}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words = []
    invalid_words = []
    for i in range(15) :
        for j in range(15) :
            if j == 0 :
                word = ''
                down_word = ''
            if board[i][j] != ''  and j != 14 :
                word += board[i][j]
            else :
                if board[i][j] != ''  and j == 14 and word != '' :
                    word += board[i][j]
                if word != '' and len(word) >= 2 :
                    if is_valid(word) :
                        valid_words.append(word)
                    else :
                        invalid_words.append(word)
                word = ''
            if board[j][i] != '' and j != 14 :
                down_word += board[j][i]
            else :
                if board[j][i] != '' and j == 14 and down_word != '' :
                    down_word += board[j][i]
                if down_word != '' and len(down_word) >= 2 :
                    if is_valid(down_word) :
                        valid_words.append(down_word)
                    else :
                        invalid_words.append(down_word)
                down_word = ''
    valid_words.sort()
    invalid_words.sort()
    return [valid_words,invalid_words]
def get_play(board, new_board):
    word = ''
    k = 0
    for i  in range(15) :
        for j in range(15) :
            if board[i][j] != new_board[i][j] :
                word += new_board[i][j]
                if len(word) == 1 :
                    check_i = i
                    check_j = j
                else :
                    if j == check_j :
                        k = 1              
    return [check_i,check_j,k,word]
def play(row,col,down,tiles,board):
    boardA = copy_board(board)
    word1 = [e for sublist in get_all_words(board) for e in sublist]
    c = 0
    if down == 0 :
        for j in range(col,15) :
            if board[row][j] == '' :
                boardA[row][j] = tiles[c]
                c += 1
            if c == len(tiles) :
                break
    if down == 1 :
        for i in range(row,15) :
            if board[i][col] == '' :
                boardA[i][col] = tiles[c]
                c += 1
            if c == len(tiles) :
                break
    word2 =  [e for sublist in get_all_words(boardA) for e in sublist]
    different_word = [x for x in word2 if x not in word1]
    score = 0
    for s in different_word :
        if is_valid(s) :
            for l in s :
                score += get_value(l)
        else :
            score -= 1
    if len(tiles) >= 7 :
        score += 50
    return score
def best_play(tiles,board):
    ans_lists = []
    for i in range(15) :
        for j in range(15) :
            for k in range(2) :
                copyboard = copy_board(board)
                check = place_tiles(i,j,k,tiles,copyboard)[0]
                if check :
                    newboard = place_tiles(i,j,k,tiles,copyboard)[1]
                    if len(get_all_words(newboard)[1]) == 0 :
                        ans_lists.append([-play(i,j,k,tiles,copyboard),i,j,k])
    ans_lists.sort()
    if ans_lists == [] :
        ans = [-1,-1,-1,-1]
    else :
        ans = [-ans_lists[0][0],ans_lists[0][1],ans_lists[0][2],ans_lists[0][3]]
    return ans

00373: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1398, 'const': 496, 'code+const': 1894}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words =[]
    inva_words =[]
    letters_x = ''
    letters_y = ''
    for i in range(15): 
      for j in  range(15):
        if get_value(board[i][j]) != -1:
          letters_x += board[i][j]
          if j== 14:
            letters_x += ' '
        else:
          letters_x +=' '
        if get_value(board[j][i]) !=-1:
          letters_y += board[j][i]
          if j ==14:
            letters_y += ' ' 
        else:
           letters_y += ' '
    x = letters_x.strip().split()
    y = letters_y.strip().split()
    for w in x:
      if len(w) >= 2:
        if is_valid(w) ==True:
          valid_words.append(w)
        else:
          inva_words.append(w)
    for w in y:
      if len(w)>= 2:
        if is_valid(w)==True:
          valid_words.append(w)
        else:
          inva_words.append(w)
    valid_words.sort()
    inva_words.sort()
    return [valid_words,inva_words]
def get_play(board, new_board):
  row,col,down,tile = 0,0,0,''
  new_word= []
  new_word_x = []
  new_word_y = []
  for r in range(15):
    for c in range(15):
      if board[r][c] !=new_board[r][c]:
        new_word.append([new_board[r][c],r,c]) 
        new_word_x.append([c,new_board[r][c],r]) 
        new_word_y.append([r,new_board[r][c],c]) 
  new_word_x.sort()
  new_word_y.sort()
  if len(new_word) != 0:
    x = new_word[0][1]
    c_x =0
    y = new_word[0][2]
    c_y =0
    for i in range(len(new_word)):
      if new_word[i][1] ==x:
        c_x +=1
      if new_word[i][2] ==y:
        c_y +=1
    if len(new_word) ==1:
      row,col,down = new_word[0][1],new_word[0][2],0
      tile += new_word[0][0]
    else:
      if c_x > c_y:
        row,col,down = new_word_x[0][2],new_word_x[0][0],0
        for c,word,r in new_word_x:
          tile += word 
      else:
        row,col,down = new_word_y[0][0],new_word_y[0][2],1
        for r,word,c in new_word_y:
          tile += word
  else:
    return[0,0,0,'']
  return [row,col,down,tile]
def play(row,col,down,tiles,board):
    score = 0
    new_board = copy_board(board)[1]
    new_board = place_tiles(row,col,down,tiles,board)[1]
    ans = []
    valid_word,invalid_word = get_all_words(board)
    new_vali,new_inva = get_all_words(new_board)
    if new_inva :
      return -1         
    if valid_word == []:
      for x in new_vali:
        ans.append(x)
    else:
        for x in new_vali:
          ans.append(x)
        for v in valid_word:
          if v in ans:
            ans.remove(v)
    if len(ans) != 0:
      for a in ans:
        for i in a:
          score += letter_value[i.lower()]
      if len(tiles) >= 7:
        score += 50
    else:
      score = -1
    return score
def best_play(tiles,board):
   score,row,col,down =-1,-1,-1,-1
   ans = []
   for d in range(2):
     for r in range(15):
       for c in range(15):
         if place_tiles(r,c,d,tiles,board)[0]==True and play(r,c,d,tiles,board) != -1:
           new_board = place_tiles(r,c,d,tiles,board)
           score = play(r,c,d,tiles,board)
           ans.append([-score,r,c,d])
         else:
           ans.append([1,-1,-1,-1])
   ans.sort()
   return  [-ans[0][0],ans[0][1],ans[0][2],ans[0][3]]

00374: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_60.0
[[6, 7, 01, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_100.0
[9, 33, 36, 138, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_150.0
[2439]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 2426, 'const': 582, 'code+const': 3008}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    l1 =[]
    l2 =[]
    p = [[i,j] for i in range (15) for j in range (15)  if board[i][j] !='' ] 
    c = 0
    for k in p :
      s1 =""
      s2= ""
      t1 = False
      t2 = False
      if  k[0]-1 == -1 :
        t1 =True
      elif   board[k[0]-1][k[1]]== '' and k[0] <= 13 :
        t1 = True
      if t1 :
        if   board[k[0]+1][k[1]] != '':
            for l in range(20):
              if l+k[0] == 15 :
                break
              if board[l+k[0]][k[1]] == '' :
                break
              s1+= board[k[0]+l][k[1]]
      if  k[1]-1 == -1 :
        t2 =True
      elif   board[k[0]][k[1]-1]== ''  and k[1] < 14:
        t2 = True
      if t2 :
        if  board[k[0]][k[1]+1] != '':
            for l in range(20):
              if l+k[1] == 15  :
                break
              if  board[k[0]][k[1]+l] == '':
                break
              s2+= board[k[0]][k[1]+l]
      if (s1!= '') :
        if (is_valid(s1) ) : 
          l1.append (s1)
        else :
          l2.append (s1)
      if s2 != '':
        if (is_valid(s2) ) : 
          l1.append (s2)
        else :
          l2.append (s2)
    return [sorted(l1),sorted(l2)]
def get_play(board, new_board):
    d = False
    l = []
    s1 = True
    s2 = True
    pi1 = -1
    pi2 = -1
    pj1 = -1 
    pj2 = -1
    for i in range(15) :
      for j in range(15) :
        if board[i][j] != new_board[i][j] :
          l.append(new_board[i][j])
          if s1 :
            pi1 = i
            pj1 = j
            s1 = False
          elif not  s1 and s2:
            pi2 = i
            pj2 = j
            s2 = False
    if pi2 > pi1 and   pi1 <= 12   and len(l) >=3 and new_board[pi1+1][pj1] != '' : 
      d = True
    if d :
      d = 1
    else :
      d =  0
    return [pi1,pj1,d,"".join(l)]
def play(row,col,down,tiles,board):
    s = 0
    st = ""
    ls = []
    st2 = "" 
    status = True
    t1 = False
    t2 = False
    t3 = False
    t4 = False
    board_2 = place_tiles(row,col,down,tiles,board[:][:])[1]
    valid = place_tiles(row,col,down,tiles,board[:][:])[0]
    if (not valid ) :
      return -1 
    if down :
      for i in range(row-1 ,-1,-1):
        if board_2[i][col] == '':
           break
        s =  get_value(board_2[i][col].lower()) + s
        st = board_2[i][col] +st
      for i in range(row,15) : 
        st2 = ""
        if board_2[i][col] == '':
           break
        s += get_value(board_2[i][col].lower())
        ii =i
        j = col
        t1 = False
        if col == 14 :
          t1 = True
        elif board[ii][col+1] == '':
          t1 = True
        if t1 :
          for jj in range (j,-1,-1) : 
            if (board_2[ii][jj] == '') :
              break 
            st2 =  board_2[ii][jj] +st2
          if is_valid(st2) and board[i][col] == '':
            for k in st2 :
              s += get_value(k)
          elif not is_valid(st2) and len(st2) >= 2: 
            status = False
          if len(st2)>=2 :
            ls.append(st2)
        st2 =  ""
        if board_2[ii][col-1] == '':
          for jj in range (j,15) : 
            if (board_2[ii][jj] == '') :
              break 
            st2 +=  board_2[ii][jj] 
          if is_valid(st2) and board[i][col] == '':
            for k in st2 :
              s += get_value(k)
          elif not is_valid(st2) and len(st2) >= 2: 
            status = False
          if len(st2)>=2 :
            ls.append(st2)
        st += board_2[i][col]
    else :
      for i in range(col-1 ,-1,-1):
        if board_2[row][i] == '':
           break
        s =  get_value(board_2[row][i].lower()) + s
        st = board_2[row][i] +st
      for i in range(col,15) : 
        if board_2[row][i] == '':
           break
        s +=  get_value(   board_2[row][i].lower()  ) 
        st2 = ""
        jj  =i 
        t3 = False
        if row == 14 :
          t3 = True
        elif board[row+1][jj] == '':
          t3 = True
        if t3 :
          for ii in range (row,-1,-1) : 
            if (board_2[ii][jj] == '') :
              break 
            st2 =  board_2[ii][jj] +st2
          if is_valid(st2) and board[row][i] == '':
            for k in st2 :
              s += get_value(k)
            ls.append(st2)
          elif not is_valid(st2) and len(st2) >= 2: 
            status = False
          if len(st2)>=2 :
            ls.append(st2)
        st2 =  ""
        if board_2[row-1][jj] == '':
          for ii in range (row,15) : 
            if (board_2[ii][jj] == '') :
              break 
            st2 +=  board_2[ii][jj] 
          if is_valid(st2) and board[row][i] == '':
            for k in st2 :
              s += get_value(k)
            ls.append(st2)
          elif not is_valid(st2) and len(st2) >= 2: 
            status = False
          if len(st2)>=2 :
            ls.append(st2)
        st += board_2[row][i]
    if len(tiles) >= 7:
      s += 50
    if not is_valid(st)  :
      s = -1
    if not status :
      s = -1
    return s
def best_play(tiles,board):
    m = -1
    mi = -1
    mj = -1 
    d  = -1
    for i in range(15) :
      for j in range(15) :
        d0 = play(i,j,0,tiles,board)
        d1 = play(i,j,1,tiles,board)
        if  d0 > m  :
            d = 0 
            mi = i
            mj = j
            m =  d0
        elif  d1 >m :
            d = 1 
            mi = i
            mj = j
            m = d1
    return [m,mi,mj,d]

00375: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1084, 'const': 350, 'code+const': 1434}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words = []
    invalid_words = []
    keep = []
    word=''
    for i in range(15):  
        for j in range(15): 
          if board[i][j] != '':
            word += board[i][j]
          else:
            word += '.'
        a=word.split('.')
        for j in a:
          if len(j)>=2:
            keep.append(j)
        word=''
    for i in range(15): 
        for j in range(15): 
          if board[j][i] != '':
            word += board[j][i]
          else:
            word += '.'
        a=word.split('.')
        for j in a:
          if len(j)>=2:
            keep.append(j)
        word=''
    for e in keep:
      if is_valid(e):
        valid_words.append(e)
      else:
        invalid_words.append(e)
    return [sorted(valid_words),sorted(invalid_words)]
def get_play(board, new_board):
    keep=[]
    for i in range(15):
      for j in range(15):
        if board[i][j] != new_board[i][j]:
          keep.append([new_board[i][j],i,j])
    down = 0
    tiles=''
    for k in range(len(keep)):
      tiles += keep[k][0]
      if len(keep) == 1:
        down =0
      elif keep[0][1]==keep[1][1]:
        down = 0
      else:
        down = 1
    return [keep[0][1],keep[0][2],down,tiles]
def play(row,col,down,tiles,board):
    old = copy_board(board)
    can,new = place_tiles(row,col,down,tiles,board)
    if can == False:
      return -1
    get_all_words(old)
    get_all_words(new)
    valid,invalid = get_all_words(old)
    valid2,invalid2 = get_all_words(new)
    for e in invalid2:
      if e not in invalid:
        return -1
    addword=[]
    for e in valid2:
      if e not in valid:
        addword.append(e)
      else:
        valid.remove(e)
    score = 0
    for i in range(len(addword)):
      for j in range(len(addword[i])):
        score += get_value(addword[i][j])
    if len(tiles) >= 7:
      score += 50
    return score
def best_play(tiles,board):
    max = 0
    keep = []
    for row in range(15):
      for col in range(15):
        score = play(row,col,0,tiles,board)
        if score >= max:
          max = score
          keep.append([-score,row,col,0])
    for row in range(15):
      for col in range(15):
        score = play(row,col,1,tiles,board)
        if score >= max:
          max = score
          keep.append([-score,row,col,1])
    keep.sort()
    if max == 0:
      return [-1,-1,-1,-1]
    return [max,keep[0][1],keep[0][2],keep[0][3]]

00376: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 846, 'const': 376, 'code+const': 1222}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    all = ''
    true_word = []
    false_word = []
    for i in range(15):
        row = ''
        col = ''
        for k in range(15):
            if board[i][k] != '':
                row += board[i][k]
            else:
                row += ' '
            if board[k][i] != '':
                col += board[k][i]
            else:
                col += ' '
        all += row + ' ' + col + ' '
    for word in all.strip().split():
        if len(word) >= 2:
            if is_valid(word) == True:
                true_word.append(word)
            else:
                false_word.append(word)
    true_word.sort()
    false_word.sort()
    return [true_word,false_word]
def get_play(board, new_board):
    almost_word = ''
    check = False
    down = 0
    for i in range(15):
        for k in range(15):
            if board[i][k] != new_board[i][k]:
                if check == False:
                    check = True
                    row = i
                    col = k
                almost_word += new_board[i][k]
    for posi in range(row+1,15):
        if board[posi][col] != new_board[posi][col]:
            down = 1
    for posi in range(col+1,15):
        if board[row][posi] != new_board[row][posi]:
            down = 0         
    if len(almost_word) == 1:
        down = 0
    return [row,col,down,almost_word]
def play(row,col,down,tiles,board):
    check, new_board = place_tiles(row,col,down,tiles,board)    
    all_word_in_board = get_all_words(board)
    all_word_in_newboard = get_all_words(new_board)
    if check == False or len(all_word_in_newboard[1]) > 0:
        return -1
    for word in all_word_in_board[0]:
        if word in all_word_in_newboard[0]:
            all_word_in_newboard[0].remove(word)
    total = 0
    if len(tiles) >= 7: total += 50
    for word in all_word_in_newboard[0]:
        if is_valid(word) == True:
            for alp in word:
                total += get_value(alp)            
    return total
def best_play(tiles,board):
    l = [-1,-1,-1,-1]
    for row in range(15):
        for col in range(15):
            for down in range(2):
                score = play(row,col,down,tiles,board)
                if score != -1 and score > l[0]:
                    l = [score,row,col,down]        
    return l

00377: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 10, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 10, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1162, 'const': 338, 'code+const': 1500}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid = []
  invalid = []
  c = ''
  for row in board:
    if is_valid(c):
      valid.append(c)
    elif not is_valid(c) and len(c)>1:
      invalid.append(c)
    c = ''
    for let in row:
      if let != '':
        c += let
      else:
        if is_valid(c):
          valid.append(c)
        elif len(c) > 1 and not is_valid(c): 
          invalid.append(c)
        c = ''
  if is_valid(c):
    valid.append(c)
  elif not is_valid(c)  and len(c)>1:
    invalid.append(c)
  c = ''
  for i in range(15):
    if is_valid(c):
      valid.append(c)
    elif not is_valid(c) and len(c)>1:
      invalid.append(c)
    c = ''
    for j in range(15):
      if board[j][i]!='':
        c += board[j][i]
      else:
        if is_valid(c):
          valid.append(c)
        elif len(c) > 1 and not is_valid(c): 
          invalid.append(c)
        c = ''
  if is_valid(c):
    valid.append(c)
  elif not is_valid(c) and len(c)>1:
    invalid.append(c)
  valid.sort()
  invalid.sort()
  return [valid,invalid]
def get_play(board, new_board):
  r,c,d = 0,0,0
  tiles = ''
  for row in range(15):
    for col in range(15):
      if new_board[row][col] != board[row][col]:
        tiles += new_board[row][col]
        if col == c:
          d = 1
        if r == 0 and c == 0:
          r = row
          c = col
  if len(tiles) == 0:
    d = 0           
  return [r,c,d,tiles] 
def play(row,col,down,tiles,board):
  word = get_all_words(board)
  valid = word[0]
  copyboard = copy_board(board)
  new_board = place_tiles(row,col,down,tiles,copyboard)[1]
  new_valid = get_all_words(new_board)[0]
  p = 0
  new = []
  if len(get_all_words(new_board)[1])>len(word[1]):
    return -1
  if len(tiles) >= 7:
    p += 50
  for nv in new_valid:
    if nv in valid:
      valid.remove(nv)
    else: new.append(nv)
  for w in new:
    for let in w:
      po = get_value(let)
      p += po
  if len(new) == 0:
    return -1
  return p
def best_play(tiles, board):
    score = -2
    row = 0
    col = 0
    down = 0
    for r in range(15):
        for c in range(15):
            for d in range(2):
                s = play(r, c, d, tiles, board)
                if s > score:
                    score = s
                    row = r
                    col = c
                    down = d
                elif s == score and r < row:
                    row = r
                    col = c
                    down = d
                elif s == score and r == row and c < col:
                    c = col
                    down = d
                elif s == score and r == row and c == col and d == 0:
                    down = d
    if score != -1:
        return [score, row, col, down]
    else:
        return [-1, -1, -1, -1]

00378: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[6, 7], [7, 7], [8, 7]]
[[4, 7], [5, 7], [9, 7]]
[[5, 4], [5, 5], [5, 6], [5, 8], [5, 9], [5, 10], [5, 11]]
[[8, 6]]
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7]]
[[6, 5], [6, 6], [6, 7], [6, 8]]
[[8, 5], [8, 6], [8, 7], [8, 8], [8, 9]]
[[8, 1], [9, 1], [10, 1], [11, 1], [12, 1], [13, 1], [14, 1]]
[[14, 2], [14, 3], [14, 4], [14, 5], [14, 6], [14, 7], [14, 8]]
[[10, 0], [11, 0], [12, 0], [13, 0]]
[[13, 5], [13, 6], [13, 7]]
[[5, 5], [5, 6], [5, 7], [5, 8], [5, 9]]
[[10, 2], [11, 2], [12, 2], [13, 2]]
[[2, 10], [3, 10], [4, 10], [5, 10]]
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6], [6, 8], [6, 9], [6, 10]]
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[1, 7], [2, 7], [3, 7], [4, 7], [5, 7], [6, 7], [7, 7], [8, 7], [9, 7], [10, 7], [11, 7]]
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[9, 6], [9, 7], [9, 8]]
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[7, 6], [7, 8]]
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[3, 7], [4, 7], [5, 7], [9, 7], [10, 7], [11, 7]]
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6], [7, 6]]
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[7, 6]]
[[6, 7, 0, 'M']]
test_get_play_101.0
[[7, 0], [7, 1], [7, 2], [7, 3], [7, 4], [7, 5], [7, 6], [7, 7]]
[[3, 1], [4, 1], [5, 1], [6, 1], [8, 1]]
[[6, 7], [6, 8], [6, 9], [6, 10], [6, 11], [6, 12]]
[[0, 2], [1, 2], [2, 2], [3, 2], [4, 2], [5, 2]]
[[6, 13], [7, 13], [8, 13], [9, 13], [10, 13], [11, 13], [12, 13]]
[[13, 3], [13, 4], [13, 5], [13, 6], [13, 7], [13, 8], [13, 9], [13, 10], [13, 11], [13, 12], [13, 13]]
[[7, 14], [8, 14], [9, 14]]
[[5, 7], [5, 8], [5, 9], [5, 10], [5, 11]]
[[7, 10], [8, 10], [9, 10], [10, 10], [11, 10]]
[[11, 2], [11, 3], [11, 4], [11, 5], [11, 6], [11, 7], [11, 8], [11, 9]]
[[10, 0], [10, 1], [10, 2], [10, 3], [10, 4], [10, 5]]
[[9, 4], [9, 5], [9, 6], [9, 7], [9, 8]]
[[14, 0], [14, 1], [14, 2], [14, 3], [14, 4]]
[[2, 3], [2, 4], [2, 5], [2, 6], [2, 7], [2, 8], [2, 9]]
[[1, 9], [1, 10], [1, 11], [1, 12], [1, 13], [1, 14]]
[[0, 4], [1, 4], [3, 4], [4, 4], [5, 4]]
[[14, 7], [14, 8], [14, 9], [14, 10], [14, 11]]
[[4, 11], [4, 12], [4, 13], [4, 14]]
[[0, 5], [0, 6], [0, 7], [0, 8]]
[[1, 0], [2, 0], [ ...(more)
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_40.0
[14, 215]
test_play_50.0
[60, 572]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 315, 24, 17, 857, 712]
test_play_100.0
[9, 933, 936, 918, 12, 5273, 652, 217, 5274, 216]
test_play_110.0
[67, 671, 1728, 171, 173, 853, 311, 412, 47, 25, 217, 214, 21, 32, 12, 215, 216, 5268, 26, 213, 210, 27, 28]
test_play_120.0
[311]
test_play_130.0
[49]
test_play_140.0
[8, 20, 326, -1]
test_play_150.0
[839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_20.0
[[-1, 0-1, 0-1, 0-1]]
test_best_play_30.0
[[68, 0, 7, 1], [6987, 12, 0, 0], [79, 1, 12, 1], [759, 1, 0, 0], [611, 12, 93, 0], [645, 43, 24, 01],
 [149, 86, 41, 0], [147, 64, 52, 01], [141, 20, 1, 0], [1422, 93, 18, 1]]
test_best_play_40.0
[[71, 0, 7, 1], [7163, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [109, 13, 0, 0], [6072, 14, 4, 0],
 [107, 6, 6, 0], [108, 3, 3, 0], [318, 4, 0, 0], [316, 05, 11, 0]]
test_best_play_50.0
[[83, 0, 7, 1], [62, 13, 0, 0], [6258, 1, 8, 0], [10, 0, 1, 0], [608, 0, 11, 1], [1024, 56, 38, 01],
 [108, 28, 149, 1], [10, 31, 52, 1], [210, 65, 13, 1], [1027, 104, 14, 1]]
bytecount: {'code': 828, 'const': 374, 'code+const': 1202}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  words = ''
  for i in range(15) :
    words += ' '
    for j in range(15) :
      if board[i][j] != '' :
        words += board[i][j]
      else :
        words += ' '
  for j in range(15) :
    words += ' '
    for i in range(15) :
      if board[i][j] != '' :
        words += board[i][j]
      else :
        words += ' '
  lwords = [[],[]]
  for w in words.split() :
    if len(w) >= 2 :
      if is_valid(w) == True :
        lwords[0].append(w)
      elif is_valid(w) == False :
        lwords[1].append(w)
  return [sorted(lwords[0]),sorted(lwords[1])]
def get_play(board, new_board):
  st = ''
  l = []
  for i in range(15) :
    for j in range(15) :
      if board[i][j] != new_board[i][j] :
        st += new_board[i][j]
        l.append([j,i])
  print(l)
  x1,y1 = l[0][0],l[0][1]
  x2,y2 = l[-1][0],l[-1][1]
  down = 0
  if y1 < y2 :
    down = 1
  return [y1,x1,down,st]
def play(row,col,down,tiles,board):
  new_board = place_tiles(row,col,down,tiles,board)
  w1,w2 = get_all_words(board),get_all_words(new_board[1])
  if new_board[0] == False or len(w2[1]) != 0 :
    return -1
  s = 0
  for w in w2[0] :
    if not (w in w1) :
      for c in w :
        s += get_value(c)
      break
    else :
      w1.remove(w)
  if len(tiles) >= 7 :
    s += 50
  return s
def best_play(tiles,board):
  l = []
  for row in range(15) :
    for col in range(15) :
      for down in range(15) :
        l.append([play(row,col,down,tiles,board),row,col,down])
  d = sorted(l)
  mxs = d[-1][0]
  for i in d :
    if i[0] == mxs :
      return i
      break

00379: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_20.0
[[4-1, 5-1, 7-1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1120, 'const': 378, 'code+const': 1498}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    vw = []
    ivw = []
    for i in range(len(board)):
        row = []
        for b in board[i]:
            if b == '':
                row.append(' ')
            else:
                row.append(b)
        rows = ''.join(row).split()
        for word in rows:
            if len(word) == 1:
                pass
            elif is_valid(word) == True:
                vw.append(word)
            else:
                ivw.append(word)
        col = []
        for j in range(len(board)):
            if board[j][i] == '':
                col.append(' ')
            else:
                col.append(board[j][i])
        column = ''.join(col).split()
        for word in column:
            if len(word) == 1:
                pass
            elif is_valid(word) == True:
                vw.append(word)
            else:
                ivw.append(word)
    vw.sort()
    ivw.sort()
    return([vw,ivw])
def get_play(board, new_board):
    dif = []
    for i in range(len(board)):
        for j in range(len(board)):
            if board[i][j] != new_board[i][j]:
                dif.append([i,j,new_board[i][j]])
    down = 0
    if len(dif) == 1:
        dif[0].insert(2,down)
        return(dif[0])
    if dif[0][0] != dif[1][0]:
        down += 1
    tile = ''
    for d in dif:
        tile += d[-1]
    result = [dif[0][0],dif[0][1],down,tile]
    return result
def play(row,col,down,tiles,board):
    t,new_board = place_tiles(row,col,down,tiles,board)
    if t == False:
        return -1
    [new_word,iw] = get_all_words(new_board)
    if iw != []:
        return -1
    [word,iiw] = get_all_words(board)
    word_use = []
    for w in new_word:
        if w not in word:
            word_use.append(w)
        else:
            word.remove(w)
    point = 0
    for word in word_use:
        for i in range(len(word)):
            point += get_value(word[i])
    if len(tiles) > 6:
        point += 50
    return point
def best_play(tiles,board):
    if board == make_board():
        point = 0
        for i in range(len(tiles)):
            point += get_value(tiles[i])
        if len(tiles) > 6:
            point += 50
        if len(tiles) <= 8:
            return[point,8-len(tiles),7,1]
    all_play = []
    for row in range(len(board)):
        for col in range(len(board)):
            for down in range(2):
                points = play(row,col,down,tiles,board)
                if points != -1:
                    all_play.append([points,row,col,down])
    if all_play == []:
        return([-1,-1,-1,-1])
    all_play.sort()
    max_score = all_play[-1][0]
    max_play = []
    for p in all_play:
        if p[0] == max_score:
            max_play.append(p)
    max_play.sort()
    return max_play[0]

00380: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 938, 'const': 338, 'code+const': 1276}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    o=[]
    v=[]
    iv=[]
    for i in range(15):
        w=''
        h=''
        for j in range(15):
            if board[i][j]!='':
                w+=board[i][j]
                if j==14 and len(w)>1:
                    o.append(w)
            else:
              if len(w)>1:
                o.append(w)
              w=''
            if board[j][i]!='':
                h+=board[j][i]
                if j==14 and len(h)>1:
                    o.append(h)
            else:
              if len(h)>1:
                o.append(h)
              h=''
    for i in o:
        if is_valid(i):
            v.append(i)
        else:
            iv.append(i)
        v.sort()
        iv.sort()
    return [v,iv]
def get_play(board, new_board):
    k=[0,0,0,'']
    a=False
    for i in range(15):
        for j in range(15):
            if board[i][j]!=new_board[i][j] and not a:
                k[0]=i
                k[1]=j
                a=True
                k[3]+=new_board[i][j]
            elif board[i][j]!=new_board[i][j] :
                k[3]+=new_board[i][j]
                if i!=k[0]:
                    k[2]=1
    return k   
def play(row,col,down,tiles,board):
    valid,new_board = place_tiles(row,col,down,tiles,board)
    if valid:
        ov,n1=get_all_words(board)
        nv,n2=get_all_words(new_board)
        for i in ov:
            if i in nv:
                nv.remove(i)
        m=0
        for i in nv:
                for j in i:
                    m+=get_value(j)
        if m==0 or n1!=n2:
            m=-1
        elif len(tiles)>=7:
                m+=50
        return m
    else:
        return -1
def best_play(tiles,board):
    k=[-1,-1,-1,-1]
    n=[]
    for i in range(15):
        for j in range(15):
            if play(i,j,0,tiles,board)!=-1:
                n.append([-play(i,j,0,tiles,board),i,j,0])
            if play(i,j,1,tiles,board)!=-1:
                n.append([-play(i,j,1,tiles,board),i,j,1])
    n.sort()
    if len(n)!=0:
        k=[-n[0][0]]+n[0][1:]
    return k

00381: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1174, 'const': 335, 'code+const': 1509}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    vw = []
    ivw = []
    x = ''
    for i in range(15):
        for j in range(15):
            if board[i][j].isalpha():
                x += board[i][j]
            elif len(x)>0:
                if len(x)>1:
                    if is_valid(x):
                        vw.append(x)
                    else:
                        ivw.append(x)
                x=''
        if len(x)>0:
            if len(x)>1:
                if is_valid(x):
                    vw.append(x)
                else:
                    ivw.append(x)
            x = ''
    for j in range(15):
        for i in range(15):
            if board[i][j].isalpha():
                x += board[i][j]
            elif len(x)>0:
                if len(x)>1:
                    if is_valid(x):
                        vw.append(x)
                    else:
                        ivw.append(x)
                x = ''
        if len(x)>0:
            if len(x)>1:
                if is_valid(x):
                    vw.append(x)
                else:
                    ivw.append(x)
            x = ''
    vw.sort()
    ivw.sort()
    return [vw, ivw]
def get_play(board, new_board):
    for i in range(15):
        for j in range(15):
            if board[i][j] != new_board[i][j]:
                r = ''
                d = ''
                for a in range(j,15):
                    if new_board[i][a] != '':
                        if board[i][a] != new_board[i][a]:
                            r += new_board[i][a]
                    else:
                        break
                for a in range(i,15):
                    if new_board[a][j] != '':
                        if board[a][j] != new_board[a][j]:
                            d += new_board[a][j]
                    else:
                        break
                x = 0
                s = ''
                if r < d:
                    x = 1
                    s = d
                else:
                    x = 0
                    s = r
                return [i, j, x, s]
def play(row,col,down,tiles,board):
    a = place_tiles(row,col,down,tiles,board)
    if a[0]==False:
        return -1
    x = get_all_words(board)[0]
    y = get_all_words(a[1])
    if len(y[1]) != 0:
        return -1
    for i in range(len(x)):
        if x[i] in y[0]:
            d = y[0].index(x[i])
            x[i] = ''
            y[0][d] = ''
    s=0
    for i in y[0]:
        for j in i:
            s += get_value(j)
    if len(tiles) > 6:
        s += 50
    return s
def best_play(tiles,board):
    score = -1
    row = -1
    col = -1
    down = -1
    for i in range(15):
        for j in range(15):
            p0 = play(i,j,0,tiles,board)
            p1 = play(i,j,1,tiles,board)
            if p0 != -1 or p1 != -1:
                if p1 != -1:
                    if p0 >= p1:
                        if p0 > score:
                            row = i
                            col = j
                            score = p0
                            down = 0
                    else:
                        if p1 > score:
                            row = i
                            col = j
                            score = p1
                            down = 1
                else:
                    if p0 > score:
                        row = i
                        col = j
                        score = p0
                        down = 0
    return [score, row, col, down]

00382: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1276, 'const': 431, 'code+const': 1707}
check_import({'allowable': ['math']}): none
def get_all_words_forplay(board) :
  word = ''
  A = []
  B = []
  for i in range(15):
    m = 0
    n = 0
    for j in range(15):
      if board[i][j] != '' :
        if j < 14 and j >= m  and board[i][j+1] != '' :
          m = j 
          while m < 15  and board[i][m] != '' :
            word += board[i][m]
            m += 1
          if is_valid(word) :
            A.append([word,i,j,0])
          else :
            B.append([word])
          word = ''
      if board[j][i] != '' :
        if j < 14 and j >= n and board[j+1][i] != '' :
          n = j 
          while n < 15 and board[n][i] != '' :
            word += board[n][i]
            n += 1
          if is_valid(word) :
            A.append([word,j,i,1])
          else :
            B.append([word])
          word = ''
  return A,B
def get_all_words(board):
  word = ''
  A = []
  B = []
  for i in range(15):
    m = 0
    n = 0
    for j in range(15):
      if board[i][j] != '' :
        if j < 14 and j >= m  and board[i][j+1] != '' :
          m = j 
          while m < 15  and board[i][m] != '' :
            word += board[i][m]
            m += 1
          if is_valid(word) :
            A.append(word)
          else :
            B.append(word)
          word = ''
      if board[j][i] != '' :
        if j < 14 and j >= n and board[j+1][i] != '' :
          n = j 
          while n < 15 and board[n][i] != '' :
            word += board[n][i]
            n += 1
          if is_valid(word) :
            A.append(word)
          else :
            B.append(word)
          word = ''
  return [sorted(e for e in A), sorted(e for e in B)]
def get_play(board, new_board):
  checking_1 = True
  checking_2 = True
  word = ''
  d = 0
  for i in range(15):
    for j in range(15):
      if new_board[i][j] != board[i][j] :
        if checking_1 :
          m = i
          n = j
          checking_1 = False
        elif checking_2 :
          if m != i :
            d = 1 
          else :
            d = 0 
          checking_2 = False
        word += new_board[i][j]
  if len(word) == 1 :
    d = 0 
  return [m,n,d,word]
def play(row,col,down,tiles,board):
  count = 0
  X,nb = place_tiles(row,col,down,tiles,board)
  A,C = get_all_words_forplay(board)
  B,D = get_all_words_forplay(nb)
  if len(D) != 0 or X == False :
    return -1
  for e in B :
    if e not in A :
      for f in e[0] :
        count += get_value(f)
  if len(tiles) >= 7:
    count += 50
  return count
def best_play(tiles,board):
  ans = [-1,-1,-1,-1]
  for i in range(15):
    for j in range(15):
        for k in range(2):
          คะแนน = play(i,j,k,tiles,board)
          if คะแนน > ans[0] :
            ans = [คะแนน,i,j,k]
  return ans

00383: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_50.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_90.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'NMONSTERS', 'NOF',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_100.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_60.0
[[6, 7, 01, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0IndexError('list index out of range')
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 15, 24, 17, 85, 012]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 321, 12, 15, 16, 68, 6, 13, 10, 1827, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 120, 1426, -1]
test_play_150.0
[2839]
test_best_play_11.0
[([69, 1, 7, 1)]]
test_best_play_21.0
[([-1, -1, -1, -1)]]
test_best_play_30.0
[([68, 0, 7, 1)], (-1[87, -12, -10, -1)0], (-1[79, -1, -12, -1)], (-1[59, -1, -10, -1)0], ([11, 82, 63, 1)0],
 (-1[65, -13, -14, -1)],
 (-[19, -16, -1, -1)0], (-1[7, -14, -12, -1), (9], [11, 60, 1), 0], ([223, 3, 8, 1)]]
test_best_play_40.0
[([71, 0, 7, 1)], (-1[63, -10, -10, -1)0], (-1[63, -1, -1, -1)0], (-1[9, -17, -13, -1)], (-[19, -13, -10, -1)0],
 (-1[72, -14, -14, -1)0],
 (-[17, -16, -16, -1)0], (9[8, 103, 83, 1)0], (-[18, -14, -10, -1)0], (1[16, 115, 71, 1)0]]
test_best_play_50.0
[([83, 0, 7, 1)], (-1[62, -13, -10, -1)0], (-1[58, -1, -18, -1)0], (-[10, -10, -1, -1)0], (-1[68, -10, -11, -1)],
 ([24, 26, 8, 1)],
 ([18, 48, 9, 1)], ([130, 81, 102, 1)], (-[21, -15, -13, -1)], (1[27, 4, 4, 11, 1)]]
bytecount: {'code': 1698, 'const': 378, 'code+const': 2076}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid = []
    valid_words = []
    b4invalid = []
    invalid_words = []
    horizontal = []
    full = []
    vertical = []
    word = ""
    wrong = ""
    for line in board:
        for a in range (len(line)):
            if a == len(line)-1:
                word += line[a]
                if is_valid(word) == True:
                    valid.append(word)
                    word = ""
                else:
                    if line[a] != "":
                        word = ""
                    else:
                        word = ""
                break
            if line[a] != "":
                word += line[a]
                wrong += line[a]
            if line[a] == "":
                if is_valid(word) == True:
                    valid.append(word)
                    word = ""
                if valid != []:
                    valid_words.append(valid[-1])
                    valid = []
                    word = ""
                if is_valid(word) == False:
                    b4invalid.append(word)
                    word = ""
    for line in board:
        full.append(line)
    void = []
    for q in range (len(full)):
        for b in range (len(full[q])):
            if b == 14:
                void.append(full[b][q])
                vertical.append(void)
                void = []
            else:
                void.append(full[b][q])
    for d in vertical:
        for e in range (len(d)):
            if e == len(line)-1:
                word += d[e]
                if is_valid(word) == True:
                    valid_words.append(word)
                    word = ""
                else:
                    if line[e] != "":
                        word = ""
                    else:
                        word = ""
                break
            if d[e] != "":
                word += d[e]
                if is_valid(word) == True:
                    mango = d.index(d[e])
            if d[e] == "":
                if is_valid(word) == True:
                    valid.append(word)
                    word = ""
                if valid != []:
                    valid_words.append(valid[-1])
                    valid = []
                    word = ""
                if is_valid(word) == False:
                    b4invalid.append(word)
                    word = ""
    for e in b4invalid:
        if len(e) > 1:
            invalid_words.append(e)
    valid_words.sort()
    invalid_words.sort()
    return [valid_words,invalid_words]
def get_play(board, new_board):
  boardl = []
  newboardl = []
  diff = ""
  down = 0
  for e in board:
      for f in range (len(e)):
          boardl.append(e[f])
  for e in new_board:
      for f in range (len(e)):
          newboardl.append(e[f])
  for i in range (len(boardl)):
      if boardl[i] == newboardl[i]:
          pass
      else:  
          col = i%15
          row = i//15
          break
  for i in range (len(boardl)):
      if boardl[i] != newboardl[i]:
          diff += newboardl[i]
          if boardl[i+15] != newboardl[i+15]:
              down = 1
  return [row,col,down,diff]
def play(row,col,down,tiles,board):
    score = 0
    nope = []
    word = []
    wordnew = []
    wordnewer = []
    aye = board
    mango = place_tiles(row,col,down,tiles,aye)
    if mango[0] == False:
        return -1
    else:
        michael = get_all_words(board)
        word.append(michael[0])
        stacy = mango[1]
        apple = get_all_words(stacy)
        wordnew.append(apple[0])
        nope.append(apple[1])
    for a in wordnew:
        for b in a:
            if b not in word[0]:
                wordnewer.append(b)
            else:
                pass
    for e in wordnewer:
        for i in e:
            for j in i:
                score += get_value(j)
    if len(tiles) >= 7:
                score += 50
    for q in nope:
            if q != []:
                return -1
                stacy = aye
                nope = [[]]
    if len(wordnewer) == 0:
        if len(wordnew) == 0:
            jason = wordnew[0][0]
            for e in jason:
                score += get_value(e)
    return score
def best_play(tiles,board):
    result = []
    max_score_text = []
    for row in range (15):
        for col in range (15):
            for down in range (2):
                new_board = place_tiles(row,col,down,tiles,board)
            if new_board[0] == True:
                x1 = get_all_words(new_board[1])
                if len(x1[1]) == 0:
                    x = play(row,col,down,tiles,board)
                    result.append([x,row,col,down])
                else:
                    result.append([-1,-1,-1,-1])
    mx = max(result)[0]
    for i in range (len(result)):
        if result[i][0] == mx:
            max_score_text = result[i]
            break
    return max_score_text[0],max_score_text[1],max_score_text[2],max_score_text[3]

00384: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 562, 'const': 339, 'code+const': 901}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    w_valid = []
    w_invalid = []
    t_word = ''
    for j, c in enumerate(sum([*map(list, zip(*board)), *board], []), 1):
        t_word += c
        if not (c and j % 15):
            if is_valid(t_word):
                w_valid += [t_word]
            elif len(t_word) > 1:
                w_invalid += [t_word]
            t_word = ''
    return [sorted(w_valid), sorted(w_invalid)]
def get_play(board, new_board):
    coord1 = []
    out_str = ''
    down = 0
    for j, (c, c_new) in enumerate(zip(sum(board, []), sum(new_board, []))):
        if c != c_new:
            out_str += c_new
            _j = j % 15
            if coord1:
                if _j == coord1[1]:
                    down = 1
            else:
                coord1 = [j // 15, _j]
    return coord1 + [down, out_str]
def play(row, col, down, tiles, board):
    new_words, new_invalid = get_all_words(
        place_tiles(row, col, down, tiles, board)[1]
    )
    score = 0
    for w1 in get_all_words(board)[0]:
        if w1 in new_words:
            new_words.remove(w1)
    for c in ''.join(new_words):
        score += get_value(c)
    if not score or new_invalid:
        return -1
    if len(tiles) >= 7:
        return score + 50
    return score
def best_play(tiles, board):
    best_set = [1, -1, -1, -1]
    for j in range(450):
        _i = (j // 15) % 15
        _j = j % 15
        _k = j // 225
        q = [-play(_i, _j, _k, tiles, board), _i, _j, _k]
        if q < best_set:
            best_set = q
    return [-best_set.pop(0), *best_set]

00385: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 840, 'const': 392, 'code+const': 1232}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    ws_board = [[c if c != "" else " " for c in row] for row in board]
    verti_b = ["".join(x) for x in ws_board]
    board_90 = []
    i = 0
    for row in ws_board:
        board_90.append([v[i] for v in ws_board])
        i +=1
    hori_b = ["".join(x) for x in board_90[::-1]]
    res = [[],[]]
    for side in verti_b + hori_b:
        for word in side.split():
            if len(word) > 1:
                res[0].append(word) if is_valid(word) else res[1].append(word)
    res[0].sort()
    res[1].sort()
    return res
def get_play(board, new_board):
    diff_index = []
    tiles = ""
    for r in range(15):
        for c in range(15):
            if board[r][c] != new_board[r][c]:
                diff_index.append((r,c))
                tiles += new_board[r][c]
    res = [diff_index[0][0], diff_index[0][1]]
    res.append(int(len(diff_index) > 1 and diff_index[1][0] > diff_index[0][0]))
    res.append(tiles)
    return res
def play(row,col,down,tiles,board):
    old = get_all_words(board)[0]
    f, new_board = place_tiles(row,col,down,tiles,board)
    new, invalid = get_all_words(new_board)
    if invalid!=[] or not f: 
        return -1
    total_score = 0
    for wd in new:
      if wd in old:
        del old[old.index(wd)]
      else:
        total_score += sum(get_value(ch) for ch in wd)
    return 50 * (len(tiles) >= 7) + total_score
def best_play(tiles,board):
    best = [-1, -1, -1, -1]
    for r in range(15):
        for c in range(15):
            for d in (0,1):
                s = play(r,c,d,tiles,board)
                if s > best[0]:
                    best = [s, r, c, d]
    return best

00386: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[151]
test_play_130.0
[59]
test_play_140.0
[8, 240, 1426, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 942, 'const': 442, 'code+const': 1384}
check_import({'allowable': ['math']}): none
def append_word(word, valid_words, invalid_words):
  if is_valid(word):
    valid_words.append(word)
  elif len(word) >= 2:
    invalid_words.append(word)
  return valid_words, invalid_words
def get_all_words(board):
  valid_words, invalid_words = [], []
  for i in range(15):
    h_word, v_word = '', ''
    for j in range(15):
      if board[i][j] == '':
        valid_words, invalid_words = append_word(h_word, valid_words, invalid_words)
        h_word = ''
      h_word += board[i][j]
      if j == 14:
        valid_words, invalid_words = append_word(h_word, valid_words, invalid_words)
      if board[j][i] == '':
        valid_words, invalid_words = append_word(v_word, valid_words, invalid_words)
        v_word = ''
      v_word += board[j][i]
      if j == 14:
        valid_words, invalid_words = append_word(v_word, valid_words, invalid_words)
  return [sorted(valid_words), sorted(invalid_words)]
def get_play(board, new_board):
  index = (0,0)
  down = 0
  tiles = ''
  for i in range(15):
    for j in range(15):
      if board[i][j] != new_board[i][j]:
        if index != (0,0):
          if index[1] == j:
            down = 1
        else:
          index = (i,j)
        tiles += new_board[i][j]
  row, col = index[0], index[1]
  return [row, col, down,tiles]
def play(row,col,down,tiles,board):
  valid, new_board = place_tiles(row,col,down,tiles,board)
  if not valid: return -1
  old_words = get_all_words(board)
  new_words = get_all_words(new_board)
  if (len(new_words[1]) - len(old_words[1]) > 0): return -1
  diff = [word for word in new_words[0] if not word in old_words[0]]
  if len(new_words[0]) - len(set(new_words[0])) > len(old_words[0]) - len(set(old_words[0])):
    seen = set()
    for word in new_words[0]:
      if word in seen: diff.append(word)
      seen.add(word)
  points = 0
  for word in diff:
    if not is_valid(word): return -1
    for tile in word: points += get_value(tile)
  if len(tiles) >= 7: points += 50
  return points
def best_play(tiles,board):
  output, defualt = [], [-1, -1, -1, -1]
  for row in range(15):
    for col in range(15):
      for down in range(2):
        output.append([play(row, col, down,tiles,board), row, col, down])
  output = max((output), key=lambda x:x[0])
  if output[0] < 0:
    return defualt
  return output

00387: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_10.0
[[07, 16, 0, 'ICE'], [07, 14, 0, 'JUD'], [04, 15, 01, 'INFSIVE'], [06, 18, 0, 'M']]
test_get_play_20.0
[[01, 17, 01, 'MALEATE'], [05, 16, 01, 'JURY'], [05, 18, 01, 'REWTH'], [01, 18, 0, 'OLEHUNT'],
 [02, 14, 01, 'RAVISES'], [0, 10, 0, 'TOGA'],
 [05, 13, 01, 'POZ'], [05, 15, 01, 'ABAND'],
 [02, 10, 0, 'COYE'], [10, 12, 0, 'FOOS']]
test_get_play_30.0
[[06, 16, 01, 'XUNT']]
test_get_play_40.0
[[07, 1, 0, 'INHERITANCE']]
test_get_play_50.0
[[06, 19, 01, 'CAT']]
test_get_play_60.0
[[06, 17, 01, 'CT']]
test_get_play_70.0
[[07, 13, 0, 'COMDER']]
test_get_play_80.0
[[06, 16, 0, 'AT']]
test_get_play_90.0
[[06, 17, 0, 'M']]
test_get_play_100.0
[[0, 17, 01, 'HEPATICS'], [01, 13, 0, 'MAILS'], [07, 16, 01, 'ARREAR'], [02, 10, 0, 'EASIED'],
 [013, 16, 0, 'SAHIWAL'], [03, 13, 01, 'MICROLOGIES'],
 [014, 17, 0, 'GAS'], [07, 15, 01, 'GOORY'],
 [10, 17, 0, 'SHIPS'], [02, 11, 01, 'MALEFICE'], [0, 10, 01, 'DOOLAN'], [04, 19, 01, 'POGEY'],
 [0, 14, 01, 'AGROS'], [03, 12, 01, 'TONIEST'], [09, 1, 01, 'SLICES'], [04, 10, 0, 'CRONY'],
 [07, 14, 01, 'DIXIT'], [011, 4, 1, 0, 'PINS'],
 [5, 0, 1, 0, 'ARED'], [0, 1, 0, 'GRAFT'], [012, 19, 0, 'MO'],
 [06, 14, 01, 'CAB'], [011, 12, 01, 'BEL']]
test_play_10.0
[0-1]
test_play_20.0
[0-1]
test_play_30.0
[014]
test_play_40.0
[014, 214]
test_play_50.0
[60, 6072]
test_play_60.0
[60, 60-1]
test_play_70.0
[063, 6314]
test_play_80.0
[062]
test_play_90.0
[011, 115, 264, 417, 6085, 124]
test_play_100.0
[09, 933, 4236, 518, 7612, 873, 14365, 20817, 21974, 2816]
test_play_110.0
[0, 67, 61, 28, 156, 217, 22613, 30485, 3115, 3124, 3317, 3256, 317, 14, 38521, 3992, 4212, 43415, 44916, 45768, 5256, 5131,
 54410, 55427, 5281]
test_play_120.0
[611]
test_play_130.0
[49]
test_play_140.0
[08, 820, 286, 44-1]
test_play_150.0
[1739]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 650, 'const': 240, 'code+const': 890}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    collect_word = []
    valid_words = []
    invalid_words = []
    for i in range(len(board)):
        word_r = ''
        for e in board[i]:
            if e=='':
                word_r += ' '
            else:
                word_r += e
        list_word = word_r.split(' ')
        for n in list_word:
            if len(n)>=2:
                collect_word.append(n)
    for c in range(len(board[0])):
        word_c = ''
        for m in range(len(board)):
            if board[m][c]=='':
                word_c += ' '
            else:
                word_c += board[m][c]
        list_words = word_c.split(' ')
        for p in list_words:
            if len(p)>=2:
                collect_word.append(p)
    for w in collect_word:
        if is_valid(w)==True:
            valid_words.append(w)
        else:
            invalid_words.append(w)
    valid_words.sort()
    invalid_words.sort()
    return [valid_words,invalid_words]
def get_play(board, new_board):
    diff = ""
    row_i = 0
    column_e = 0
    r_or_c = 0
    for i in range(len(board)):
        for e in range(len(board[0])):
            if board[i][e]!=new_board[i][e]:
                diff += new_board[i][e]
            if row_i==0 and column_e==0:
                row_i += i
                column_e += e
    return [row_i,column_e,0,""]
def play(row,col,down,tiles,board):
    score = 0
    for i in get_all_words(board)[0]:
        if len(i)>=7:
            score += 50
        for e in i:
            score += get_value(e)
    for n in get_all_words(board)[1]:
        score -= 1
    return score
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00388: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 870, 'const': 312, 'code+const': 1182}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    word = []
    for i in range(15):
        text = ''
        for j in range(15):
            if board[i][j] != '':
                text += board[i][j]
            else:
                word.append(text)
                text = ''
        word.append(text)
    for j in range(15):
        text = ''
        for i in range(15):
            if board[i][j] != '':
                text += board[i][j]
            else:
                word.append(text)
                text = ''
        word.append(text)
    valid = []
    invalid = []
    for i in word:
        if len(i)>1:
            if is_valid(i):
                valid.append(i)
            else:
                invalid.append(i)
    valid = sorted(valid)
    invalid = sorted(invalid)
    return [valid,invalid]
def get_play(board, new_board):
    ans = [0,0,0,'']
    for i in range(15):
        for j in range(15):
            if board[i][j] != new_board[i][j]:
                if ans[3] == '':
                    ans[0] = i
                    ans[1] = j
                if i == ans[0]:
                    ans[2] = 0
                elif j == ans[1]:
                    ans[2] = 1
                ans[3] += new_board[i][j]
    return ans
def play(row,col,down,tiles,board):
    pt = place_tiles(row,col,down,tiles,board)
    new_board = pt[1]
    wordb = get_all_words(board)
    wordnb = get_all_words(new_board)
    for i in wordb[0]:
        if i in wordnb[0]:
            wordnb[0].remove(i)
    if wordnb[1] != []:
        return -1
    score = 0
    if len(tiles) > 6:
        score += 50
    for i in wordnb[0]:
        for j in i:
            score += get_value(j)
    return score
def best_play(tiles,board):
    sc = -1
    row = -1
    col = -1
    down = -1
    for i in range(15):
        for j in range(15):
            can1 = place_tiles(i,j,0,tiles,board)
            if can1[0]:
                nsc = play(i,j,0,tiles,board)
                if nsc > sc:
                    sc = nsc
                    row = i
                    col = j
                    down = 0
            can2 = place_tiles(i,j,1,tiles,board)
            if can2[0]:
                nsc = play(i,j,1,tiles,board)
                if nsc > sc:
                    sc = nsc
                    row = i
                    col = j
                    down = 1
    ans = [sc,row,col,down]
    return ans

00389: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_40.0
[14, 215]
test_play_50.0
[60, 572]
test_play_60.0
[60, 58-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 125, 724, 17, 859, 012]
test_play_100.0
[9, 133, 1236, 18, 12, 6473, 65, 107, 6374, 016]
test_play_110.0
[5067, 61, 428, 011, 13, 85, 711, 612, 7, 425, 17, 134, 6, 721, 932, 172, 0, 15, 716, 32068, 06, 113, 10, 1127, 428]
test_play_120.0
[711]
test_play_130.0
[59]
test_play_140.0
[8, 820, 826, 8-1]
test_play_150.0
[319]
test_best_play_10.0
[[69, 1, 7, 1, 0]]
test_best_play_20.0
[[0-1, 5-1, 7-1, -1]]
test_best_play_30.0
[[68, 70, 07, 01], [69, 087, 12, 10, 0], [79, 12, 12, 01], [59, 61, 50, 0], [711, 92, 13, 10], [2650, 3, 14, 1],
 [27519, 116, 14, 10], [67, 54, 12, 01], [7, 311, 0, 1, 0], [922, 13, 98, 01]]
test_best_play_40.0
[[71, 70, 07, 01], [623, 610, 0, 0], [623, 51, 01, 0], [139, 17, 73, 1], [19, 013, 30, 0], [672, 814, 04, 0],
 [167, 16, 06, 0], [8, 23, 3, 0], [918, 34, 0, 0], [16, 45, 01, 0]]
test_best_play_50.0
[[83, 70, 07, 01], [612, 613, 0, 0], [6258, 01, 78, 10], [910, 0, 1, 0], [67, 8, 0, 011, 1], [1824, 36, 128, 1],
 [918, 18, 09, 01], [10, 21, 42, 01], [213, 15, 93, 01], [27, 04, 94, 01]]
bytecount: {'code': 1118, 'const': 441, 'code+const': 1559}
check_import({'allowable': ['math']}): none
def get_all_words_with_postion(board):
  yeuyband = [[], []]
  Waayajanubb = []
  yakjung = ""
  for mairu in range(15):
    for her in range(15):
      if board[mairu][her] == '' or her == 14:
          yakjung = (yakjung + board[mairu][her]).strip()
          if len(yakjung) > 1: 
            yeuyband[(is_valid(yakjung) + 1) % 2].append([yakjung, Waayajanubb[0][0], Waayajanubb[0][1], 0])
          Waayajanubb = []
          yakjung = ''
      else:
          Waayajanubb.append([mairu, her])
          yakjung += board[mairu][her]
    for he in range(15):
      if board[he][her] == '' or he == 14:
          yakjung = (yakjung + board[he][her]).strip()
          if len(yakjung) > 1: 
            yeuyband[(is_valid(yakjung) + 1) % 2].append([yakjung, Waayajanubb[0][0], Waayajanubb[0][1], 1])
          yakjung = ''
          Waayajanubb = []
      else:
          yakjung += board[he][her]
          Waayajanubb.append([he, her])
  return yeuyband
def get_all_words(board):
  yajanab = [[], []]
  Waayajanubb = ''
  for i in range(15):
    for j in range(15):
        if board[i][j] == '': 
          Waayajanubb += ' '
        else: 
          Waayajanubb += board[i][j]
    Waayajanubb += ' '
    for j in range(15):
        if board[j][i] == '': 
          Waayajanubb += ' '
        else: 
          Waayajanubb += board[j][i]
    Waayajanubb += ' '     
  for coytaa in sorted(Waayajanubb.split()):
      if len(coytaa) > 1: 
        yajanab[(is_valid(coytaa) + 1) % 2].append(coytaa)
  return yajanab
def get_play(board, new_board):
  sadeyteet = '' ; mandang = []
  for i in range(15):
      for j in range(15):   
        if board[i][j] != new_board[i][j]: 
          sadeyteet += new_board[i][j]
          mandang.append([j, i])
  tarou = 0
  if mandang[0][1] < mandang[-1][1]: 
    tarou = 1
  return [mandang[0][1], mandang[0][0], tarou, sadeyteet]
def play(row,col,down,tiles,board):
  Arinaja = place_tiles(row, col, down, tiles, board)
  mairu = Arinaja[0] ; mandang = Arinaja[1]
  sadeita = get_all_words_with_postion(board) ; teethai = get_all_words_with_postion(mandang)  
  if not mairu or (len(teethai[1]) > 0): 
    return -1
  tanangtaoy = 0
  for i in teethai[0]:
    if i not in sadeita[0]: 
      for k in i[0]:
        tanangtaoy += get_value(k)
  return  50 * (len(tiles) >= 7) + tanangtaoy
def best_play(tiles,board):
  Thummummai = [[-1, -1, -1, -1]]
  for ichunmairu in range(15):
    for junggi in range(15):
      for dojung in range(2): Thummummai.append([play(ichunmairu, junggi, dojung, tiles, board), ichunmairu, junggi, dojung])
  Thummummai.sort()
  for aHa in Thummummai: 
    if aHa[0] == Thummummai[-1][0]: 
      return aHa

00390: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1050, 'const': 364, 'code+const': 1414}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    k=[[],[]]
    a=''
    for i in range(15):
      a=''
      for j in range(15):
        e=board[i][j]
        if e!='':
          a+=e
        else:
          if len(a)>1 :         
            if is_valid(a):
              k[0].append(a)
            else:
              k[1].append(a)
          a=''
        if j ==  14 and len(a)>1:
          if is_valid(a):
              k[0].append(a)
          else:
              k[1].append(a)
    for i in range(15):
      a=''
      for j in range(15):
        e=board[j][i]
        if e!='':
          a+=e
        else:
          if len(a)>1 :         
            if is_valid(a):
              k[0].append(a)
            else:
              k[1].append(a)
          a=''
        if j ==  14 and len(a)>1:
          if is_valid(a):
              k[0].append(a)
          else:
              k[1].append(a)
    k[0].sort()
    k[1].sort()
    return k
def get_play(board, new_board):
    k=''
    n=0
    for i in range(15):
      for j in range(15):
        a=board[i][j]
        b=new_board[i][j]
        if a != b:
          k+=b
          n+=1
          if n==1:
            x=i
            y=j
            z=i
          if len(k)>1 and n==2:
            z=i
            z1=j
    if x==z:
      r=0
    if len(k)>1 and y==z1:
      r=1
    return [x,y,r,k]
def play(row,col,down,tiles,board):
    a,b=place_tiles(row,col,down,tiles,board)
    if a==False: 
      return -1
    c,d=get_all_words(board)
    e,f=get_all_words(b)
    if len(f)>len(d): 
      return -1
    for i in c:
        if i in e:
            e.remove(i)
    p=0
    for i in e:
      for k in i:
        p+=get_value(k)
    if len(tiles)>6: 
      p+=50
    if e==[] :
        return -1
    return p
def best_play(tiles,board):
    R=[-1]*4
    for i in range(15):
      for j in range(15):
        for k in range(2):
          x=play(i,j,k,tiles,board)
          z=[x,i,j,k]
          if x>R[0]:
            R=list(z)
          elif x==R[0]:
            if i<R[1]:
                R=list(z)
            elif i==R[1] :
              if j<R[2]:
                  R=list(z)
              elif j==R[2] and k<R[3]:
                  R=list(z)
    return R

00391: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_50.0
[[1383, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 692, 'const': 568, 'code+const': 1260}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  v = [[],[]]
  for i in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]:
    a = ''
    b = ''
    for j in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]:
      if board[i][j]:
        a += board[i][j]
      if len(a) >= 2 and (not board[i][j] or j == 14):
        v[is_valid(a)].append(a)
        a = ''
      elif not board[i][j]:
        a = ''
      if board[j][i]:
        b += board[j][i]
      if len(b) >= 2 and (not board[j][i] or j == 14):
        v[is_valid(b)].append(b)
        b = ''
      elif not board[j][i]:
        b = ''
  return [sorted(v[1]),sorted(v[0])]
def get_play(board, new_board):
  a = ''
  b = 15
  c = 15
  d = 0
  for i in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]:
    for j in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]:
      if board[i][j] != new_board[i][j]:
        if b == 15:
          b = i
          c = j
        elif j == c:
          d = 1
        a += new_board[i][j]
  return [b,c,d,a]
def play(row,col,down,tiles,board):
  a,b = place_tiles(row,col,down,tiles,board)
  i0,iv0 = get_all_words(board)
  i1,iv1 = get_all_words(b)
  if iv1 == [] and a:
    for i in i0:
      if i in i1:
        i1.remove(i)
    z = 0
    for i in i1:
      for j in i:
        z += get_value(j)
    return(z+(50*(len(tiles)//7)))
  return -1
def best_play(tiles,board):
  a = [-1,-1,-1,-1]
  for i in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]:
    for j in [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]:
      for k in [0,1]:
        z = play(i,j,k,tiles,board)
        if z > a[0]:
          a = [z,i,j,k]
  return a

00392: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1234, 'const': 350, 'code+const': 1584}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    b = []
    for i in range(15):
        a = ''
        for j in range(15):
            if board[i][j] != '':
                a += board[i][j]
            else:
                a += ' '
        b.append(a)
    for j in range(15):
        a = ''
        for i in range(15):
            if board[i][j] != '':
                a += board[i][j]
            else:
                a += ' '
        b.append(a)
    d = []
    for i in b:
        c = i.strip().split()
        d += c
    w1 = []
    w2 = []
    for i in d:
        if is_valid(i) == True:
            w1.append(i.upper())
        elif len(i) > 1:
            w2.append(i.upper())
    w1.sort()
    w2.sort()
    word = [w1,w2]
    return word
def get_play(board, new_board):
    b = []
    for i in range(15):
        a = ''
        for j in range(15):
            if new_board[i][j] != board[i][j]:
                a += new_board[i][j]
        b.append(a)
    for j in range(15):
        a = ''
        for i in range(15):
            if new_board[i][j] != board[i][j]:
                a += new_board[i][j]
        b.append(a)
    c = ''
    for i in b:
        if len(i) > 1:
            c = i
            break
    if c == '':
        for i in b:
            if i != '':
                c = i
    d = b.index(c)
    if d < 15:
        for j in range(15):
            if new_board[d][j] != board[d][j]:
                col = j
                row = d
                down = 0
                break
    else:
        d -= 15
        for i in range(15):
            if new_board[i][d] != board[i][d]:
                row = i
                col = d
                down = 1
                break
    tiles = c.upper()
    return [row,col,down,tiles]
def play(row,col,down,tiles,board):
    a,b = place_tiles(row,col,down,tiles,board)
    if a == False:
        return -1
    else:
        c,d = get_all_words(b)
        if d != []:
            return -1
        else:
            score = 0
            s = get_all_words(board)[0]
            for i in c:
                if i not in s: 
                    for j in i:
                        score += get_value(j)
                else:
                    s.remove(i)
            if len(tiles) >= 7:
                score += 50
            return score
def best_play(tiles,board):
    b = []
    for k in range(2):
        for i in range(15): 
            for j in range(15):
                a = play(i,j,k,tiles,board)
                b.append(a)
    score = max(b)
    if score == -1:
        return [-1,-1,-1,-1]
    c = []
    for i in range(len(b)):
        if b[i] == score:
            c.append(i)
    r = []
    for i in c:
        if i < 225:
            r.append([i // 15,i % 15,0])
        else:
            r.append([(i // 15) - 15,i % 15,1])
    r.sort()
    row,col,down = r[0]
    return [score, row, col, down]

00393: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 924, 'const': 321, 'code+const': 1245}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid = []
    invalid = []
    count = []
    for i in range(len(board)) :
      s = ''
      for c in board[i] :
        if c != '' : s += c
        else : s += ' '
      count += s.strip().split()
    for j in range(len(board[0])) :
      k = ''
      for i in range(len(board)) :
        if board[i][j] != '' : k += board[i][j]
        else : k += ' '
      count += k.strip().split()
    for word in count :
      if len(word) > 1 :
        if is_valid(word) : valid.append(word)
        else : invalid.append(word)
    valid.sort()
    invalid.sort()
    return [valid,invalid]
def get_play(board, new_board):
    s = ''
    start = [0,0]
    stop = [0,0]
    data = [0,0,0,""]
    for i in range(len(board)) :
      for j in range(len(board[0])) :
        if board[i][j] != new_board[i][j] :
          if start == [0,0] : start = [i,j]
          else : stop = [i,j]
          s += new_board[i][j]
    data[0] = start[0] 
    data[1] = start[1]
    if start[1] == stop[1] :
         data[2] = 1
    else :
         data[2] = 0
    data[3] = s
    return data
def play(row,col,down,tiles,board):
    score = 0
    valid,new_board = place_tiles(row,col,down,tiles,board)
    if valid :
      valid_count,invalid_count = get_all_words(board)
      new_valid_count,new_invalid_count = get_all_words(new_board)
      if invalid_count == new_invalid_count :
          for word in new_valid_count :
            if word not in valid_count :
              for letter in word :
                score += get_value(letter)
            else :  valid_count[valid_count.index(word)] = ''
          if len(tiles) >= 7 :
            score += 50
          return score
    return -1
def best_play(tiles,board):
    mx_score = -1
    mark = [-1,-1]
    down = -1
    for i in range(len(board)) :
      for j in range(len(board[0])) :
         if place_tiles(i,j,0,tiles,board)[0] : 
            if play(i,j,0,tiles,board) > mx_score : 
               mx_score = play(i,j,0,tiles,board)
               mark = [i,j]
               down = 0
         if place_tiles(i,j,1,tiles,board)[0] :
            if play(i,j,1,tiles,board) > mx_score : 
               mx_score = play(i,j,1,tiles,board)
               mark = [i,j]
               down = 1
    return [mx_score,mark[0],mark[1],down]

00394: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1732, 'const': 455, 'code+const': 2187}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    output = [[],[]]
    w = ''
    for i in range(15):
      for j in range(15):
        if board[i][j] != '':
          w += board[i][j]
          if j == 14 and w !='':
            if is_valid(w) == True:
              output[0].append(w)
            elif is_valid(w) == False and len(w)>=2: 
              output[1].append(w)
            w = ''
        else:
            if w != '':
              if is_valid(w) == True:
                output[0].append(w)
              elif is_valid(w) == False and len(w)>=2: 
                output[1].append(w)
              w = ''
    for j in range(15):
      for i in range(15):
        if board[i][j] != '':
          w += board[i][j]
          if i == 14 and w !='':
            if is_valid(w) == True:
              output[0].append(w)
            elif is_valid(w) == False and len(w)>=2:  
              output[1].append(w)
            w = ''
        else:
            if w != '':
              if is_valid(w) == True:
                output[0].append(w)
              elif is_valid(w) == False and len(w)>=2: 
                output[1].append(w)
              w = ''
    output[0].sort()
    output[1].sort()
    return output
def get_play(board, new_board):
    x = 0
    tiles = ''
    for i in range(15):
      if board[i] != new_board[i]:
        x += 1
    if x == 1:
      down = 0
      for i in range(15):
        if board[i] != new_board[i]:
          for j in range(15):
            if board[i][j] != new_board[i][j]: 
              if tiles == '':
                row = i
                col = j
              tiles += new_board[i][j]
    else:
      done = False
      down = 1
      for i in range(15):
        if board[i] != new_board[i]:
          for j in range(15):
            if board[i][j] != new_board[i][j]:  
              for n in range(15-i):
                if tiles == '':
                  row = i
                  col = j
                if board[i+n][j] != new_board[i+n][j]:
                  tiles += new_board[i+n][j]
                if i+n == 14:
                  done = True
                  break
            if done == True: break
        if done == True: break     
    return [row,col,down,tiles]
def play(row,col,down,tiles,board):
    valid,new_board = place_tiles(row,col,down,tiles,board)
    w = ''
    if valid == True:
      if down == 0:
        for n in reversed(range(col)):
          if new_board[row][n] == '' : break 
          else: w = new_board[row][n] + w
        for m in range(15-col):
          if new_board[row][col+m] != '' : w += new_board[row][col+m]
          elif new_board[row][col+m] == '': break
      else:
        for n in reversed(range(row)):
          if new_board[n][col] == '' : break 
          else: w = new_board[n][col] + w
        for m in range(15-row):
          if new_board[row+m][col] != '' : w += new_board[row+m][col]
          else: break
      if is_valid(w) == True:
        if len(get_all_words(board)[1])>=len(get_all_words(new_board)[1]):
          count_tiles = len(tiles)
          words = get_all_words(board)[0]
          new_words = get_all_words(new_board)[0]
          for x in words:
            if x in new_words: new_words.remove(x)
          if new_words == []: score = -1
          else:
            score = 0
            for new_word in new_words:
              for letter in new_word:
                score += get_value(letter)
            if len(tiles) >= 7: score += 50
        else: score = -1
      else: score = -1
    else: score = -1
    return score
def best_play(tiles,board):
    score = -1
    row = -1
    col = -1
    down = -1
    for i in range(15):
      for j in range(15):
        for d in [0,1]:
          new_score = play(i,j,d,tiles,board)
          if new_score > score:
            score,row,col,down = new_score,i,j,d
          elif new_score == score:
            if row>i: row,col,down = i,j,d
            elif row == i:
              if col>j: col,down = j,d
              elif col == j:
                if down>d : down = d
    return [score, row, col, down]

00395: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1136, 'const': 294, 'code+const': 1430}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  valid = [[], []]
  word = ''
  for row in range(len(board)):
    for col in range(len(board[0])):
      if board[row][col] != '':
        word += board[row][col].upper()
      else:
        if is_valid(word):
          valid[0].append(word)
          word = ''
        else:
          if len(word) > 1:
            valid[1].append(word) 
          word = ''
    if col == 14:
      if is_valid(word):
        valid[0].append(word)
        word = ''
      else:
        if len(word) > 1:
          valid[1].append(word) 
        word = ''        
  word = ''  
  for col in range(len(board[0])):
    for row in range(len(board)):
      if board[row][col] != '':
        word += board[row][col].upper()
      else:
        if is_valid(word):
          valid[0].append(word)
          word = ''
        else:
          if len(word) > 1:
            valid[1].append(word) 
          word = ''
    if row == 14:
      if is_valid(word):
        valid[0].append(word)
        word = ''
      else:
        if len(word) > 1:
          valid[1].append(word) 
        word = ''  
  valid[0].sort()
  valid[1].sort()  
  return valid
def get_play(board, new_board):
  play = []
  word = ''
  for row in range(len(board)):
    for col in range(len(board[0])):
      if board[row][col] != new_board[row][col]:
        if word == '':
          play.append(row)
          play.append(col)
        word += new_board[row][col]
  is_down = False
  for char in word:
      if char not in new_board[play[0]]:
          is_down = True
          break
  if len(word) == 1:
    down = 0
  elif is_down:
    down = 1
  else:
    down = 0 
  play.append(down)
  play.append(word)       
  return play
def play(row,col,down,tiles,board):
  old_word = get_all_words(board)
  valid, new = place_tiles(row,col,down,tiles,board)
  new_word = get_all_words(new)
  c = 0
  if valid and len(get_all_words(new)[1]) == 0:
    for e in old_word[0]:
      if e in new_word[0]:
        new_word[0].remove(e)     
    for w in new_word[0]:
      for char in w:
          c += get_value(char)
    if len(get_play(board, new)[-1]) >= 7:
      c += 50
    return c
  else:
    return -1
def best_play(tiles,board):
    all_play = []
    is_down = [1, 0]
    for row in range(len(board)):
        for col in range(len(board[0])):
            for down in is_down:
                score = play(row,col,down,tiles,board)
                all_play.append([-score, row, col, down])
    all_play.sort()
    for i in range(len(all_play)):
        all_play[i][0] *= -1
    if all_play[0][0] != -1:
        return all_play[0]
    else:
        return [-1,-1,-1,-1]

00396: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 'I'], [7, 7, 'C'], [7, 8, 'E']]
[[7, 4, 'J'], [7, 5, 'U'], [7, 9, 'D']]
[[4, 5, 'I'], [5, 5, 'N'], [6, 5, 'F'], [8, 5, 'S'], [9, 5, 'I'], [10, 5, 'V'], [11, 5, 'E']]
[[6, 8, 'M']]
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 'M'], [2, 7, 'A'], [3, 7, 'L'], [4, 7, 'E'], [5, 7, 'A'], [6, 7, 'T'], [7, 7, 'E']]
[[5, 6, 'J'], [6, 6, 'U'], [7, 6, 'R'], [8, 6, 'Y']]
[[5, 8, 'R'], [6, 8, 'E'], [7, 8, 'W'], [8, 8, 'T'], [9, 8, 'H']]
[[1, 8, 'O'], [1, 9, 'L'], [1, 10, 'E'], [1, 11, 'H'], [1, 12, 'U'], [1, 13, 'N'], [1, 14, 'T']]
[[2, 14, 'R'], [3, 14, 'A'], [4, 14, 'V'], [5, 14, 'I'], [6, 14, 'S'], [7, 14, 'E'], [8, 14, 'S']]
[[0, 10, 'T'], [0, 11, 'O'], [0, 12, 'G'], [0, 13, 'A']]
[[5, 13, 'P'], [6, 13, 'O'], [7, 13, 'Z']]
[[5, 5, 'A'], [6, 5, 'B'], [7, 5, 'A'], [8, 5, 'N'], [9, 5, 'D']]
[[2, 10, 'C'], [2, 11, 'O'], [2, 12, 'Y'], [2, 13, 'E']]
[[10, 2, 'F'], [10, 3, 'O'], [10, 4, 'O'], [10, 5, 'S']]
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 'X'], [8, 6, 'U'], [9, 6, 'N'], [10, 6, 'T']]
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 'I'], [7, 2, 'N'], [7, 3, 'H'], [7, 4, 'E'], [7, 5, 'R'], [7, 6, 'I'], [7, 7, 'T'], [7, 8, 'A'], [7, 9, 'N'], [7, 10, 'C'], [7, 11, 'E']]
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 'C'], [7, 9, 'A'], [8, 9, 'T']]
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 'C'], [8, 7, 'T']]
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 'C'], [7, 4, 'O'], [7, 5, 'M'], [7, 9, 'D'], [7, 10, 'E'], [7, 11, 'R']]
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 'A'], [6, 7, 'T']]
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 'M']]
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 'H'], [1, 7, 'E'], [2, 7, 'P'], [3, 7, 'A'], [4, 7, 'T'], [5, 7, 'I'], [6, 7, 'C'], [7, 7, 'S']]
[[1, 3, 'M'], [1, 4, 'A'], [1, 5, 'I'], [1, 6, 'L'], [1, 8, 'S']]
[[7, 6, 'A'], [8, 6, 'R'], [9, 6, 'R'], [10, 6, 'E'], [11, 6, 'A'], [12, 6, 'R']]
[[2, 0, 'E'], [2, 1, 'A'], [2, 2, 'S'], [2, 3, 'I'], [2, 4, 'E'], [2, 5, 'D']]
[[13, 6, 'S'], [13, 7, 'A'], [13, 8, 'H'], [13, 9, 'I'], [13, 10, 'W'], [13, 11, 'A'], [13, 12, 'L']]
[[3, 13, 'M'], [4, 13, 'I'], [5, 13, 'C'], [6, 13, 'R'], [7, 13, 'O'], [8, 13, 'L'], [9, 13, 'O'], [10, 13, 'G'], [11, 13, 'I'], [12, 13, 'E'], [13, 13, 'S']]
[[14, 7, 'G'], [14, 8, 'A'], [14, 9, 'S']]
[[7, 5, 'G'], [8, 5, 'O'], [9, 5, 'O'], [10, 5, 'R'], [11, 5, 'Y']]
[[10, 7, 'S'], [10, 8, 'H'], [10, 9, 'I'], [10, 10, 'P'], [10, 11, 'S']]
[[2, 11, 'M'], [3, 11, 'A'], [4, 11, 'L'], [5, 11, 'E'], [6, 11, 'F'], [7, 11, 'I'], [8, 11, 'C'], [9, 11, 'E']]
[[0, 10, 'D'], [1, 10, 'O'], [2, 10, 'O'], [3, 10, 'L'], [4, 10, 'A'], [5, 10, 'N']]
[[4, 9, 'P'], [5, 9, 'O'] ...(more)
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_90.0
[11, 15, 24, 17, 85, 012]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 1827, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 120, 1426, -1]
test_play_150.0
[2839]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1210, 'const': 458, 'code+const': 1668}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words=[]
    invalid_words=[]
    for row1 in range(15):
        found=False
        wordRow=''
        for column1 in range(15):
            if board[row1][column1]!='':
                wordRow+=board[row1][column1]
                found=True
            elif board[row1][column1]=='' and found==True:
                if is_valid(wordRow):
                    valid_words.append(wordRow)
                elif is_valid(wordRow)==False and len(wordRow)>=2:
                    invalid_words.append(wordRow)
                found=False
                wordRow=''
        if is_valid(wordRow):
            valid_words.append(wordRow)
        elif is_valid(wordRow)==False and len(wordRow)>=2:
            invalid_words.append(wordRow)
    for column2 in range(15):
        found=False
        wordColumn=''
        for row2 in range(15):
            if board[row2][column2]!='':
                wordColumn+=board[row2][column2]
                found=True
            elif board[row2][column2]=='' and found==True:
                if is_valid(wordColumn):
                    valid_words.append(wordColumn)
                elif is_valid(wordColumn)==False and len(wordColumn)>=2:
                    invalid_words.append(wordColumn)
                found=False
                wordColumn=''
        if is_valid(wordColumn):
            valid_words.append(wordColumn)
        elif is_valid(wordColumn)==False and len(wordColumn)>=2:
            invalid_words.append(wordColumn)
    valid_words.sort()
    invalid_words.sort()        
    return [valid_words,invalid_words]
def get_play(board, new_board):
    tilesList=[]
    for row in range(15):
        for column in range(15):
            if new_board[row][column]!=board[row][column]:
                tilesList.append([row,column,new_board[row][column]])
    print(tilesList)
    if len(tilesList)>1:
        if tilesList[0][0]==tilesList[1][0]:
            down=0
        elif tilesList[0][1]==tilesList[1][1]:
            down=1
        firstcol=tilesList[0][1]
        firstrow=tilesList[0][0]
    elif len(tilesList)==1:
        firstcol=tilesList[0][1]
        firstrow=tilesList[0][0]
        down=0
    word=''
    for i in tilesList:
        word+=i[2]
    return [firstrow,firstcol,down,word]
def play(row,col,down,tiles,board):
    newboard=place_tiles(row,col,down,tiles,board)[1]
    if len(get_all_words(newboard)[1])!=0 or place_tiles(row,col,down,tiles,board)[0]==False :
        return -1
    else:
        score=0
        wordInBoard=get_all_words(board)[0]
        for word in get_all_words(newboard)[0]:
            if word not in wordInBoard:
                for ch in word:
                    score+=get_value(ch)
        if len(tiles)>=7:
            score+=50
    return score
def best_play(tiles,board):
    listscore=[]
    for row in range(15):
        for col in range(15):
            for down in range(2):
                newboard=place_tiles(row,col,down,tiles,board)[1]
                if place_tiles(row,col,down,tiles,board)[0]==True and len(get_all_words(newboard)[1])==0:
                    listscore.append([play(row,col,down,tiles,board),row,col,down])
    sortscore=sorted(listscore,key=lambda x:(-x[0],x[1],x[2],x[3]))
    if len(sortscore)==0:
        return [-1,-1,-1,-1]
    else:
        return sortscore[0]

00397: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_60.0
[60, 73-1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -16]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1548, 'const': 522, 'code+const': 2070}
check_import({'allowable': ['math']}): none
def get_all_words_right(i, k, board, is_saw_right, valid_word, invalid_word):
    word = ''
    while (k < 15 and board[i][k] != ""):
        word += board[i][k]
        is_saw_right[i][k] = 1
        k += 1
    if is_valid(word):
        valid_word.append(word)
    elif len(word) > 1:
        invalid_word.append(word)
def get_all_words(board):
    is_saw_down = [[0] * 15 for i in range(15)]
    is_saw_right = [[0] * 15 for i in range(15)]
    valid_word = []
    invalid_word = []
    for i in range(15):
        for j in range(15):
            if board[i][j] == "":
                continue
            if is_saw_down[i][j] == 1:
                if is_saw_right[i][j] == 1:
                    continue
                else:
                    k = j
                    get_all_words_right(i, k, board, is_saw_right, valid_word, invalid_word)
            else:
                k = i
                word = ''
                while (k < 15 and board[k][j] != ""):
                    word += board[k][j]
                    is_saw_down[k][j] = 1
                    k += 1
                if is_valid(word):
                    valid_word.append(word)
                elif len(word) > 1:
                    invalid_word.append(word)
                if is_saw_right[i][j] == 1:
                    continue
                else:
                    k = j
                    get_all_words_right(i, k, board, is_saw_right, valid_word, invalid_word)
    valid_word.sort()
    invalid_word.sort()
    return [valid_word, invalid_word]
def get_play(board, new_board):
    for i in range(15):
        for j in range(15):
            if board[i][j] != new_board[i][j]:
                row = i
                col = j
                down_word = ''
                if (i < 14 and new_board[i+1][j] != ''):
                    k = i
                    while (k < 15 and new_board[k][j] != ''):
                        if board[k][j] != new_board[k][j]:
                            down_word += new_board[k][j]
                        k += 1
                    if len(down_word) == 1:
                        is_down = 0
                    else:
                        is_down = 1
                right_word = ''
                if (j < 14 and new_board[i][j+1] != ''):
                    k = j
                    while (k < 15 and new_board[i][k] != ''):
                        if board[i][k] != new_board[i][k]:
                            right_word += new_board[i][k]
                        k += 1
                    is_down = 0
                if len(down_word) > len(right_word):
                    if len(down_word) == 1:
                        return [row, col, 0, down_word]
                    return [row, col, 1, down_word]
                elif len(right_word) > len(down_word):
                    return [row, col, 0, right_word]
                else:
                    return [row, col, is_down, right_word]
def sum_word(word):
    sum = 0
    for alph in word:
        sum += get_value(alph)
    return sum
def play(row,col,down,tiles,board):
    word_length = len(tiles)
    total_score = 0
    all_words, _ = get_all_words(board)
    can_place, new_board = place_tiles(row, col, down, tiles, board)
    if can_place == -1:
        return -1
    all_new_words, _ = get_all_words(new_board)
    for word in all_words:
        if word not in all_new_words:
            continue
        else:
          all_new_words.remove(word)
    for n_word in all_new_words:
        if not is_valid(n_word):
          continue
        else:
          for tile in n_word:
            total_score += get_value(tile)
    if total_score == 0:
      total_score = -1
      return total_score
    if word_length < 7:
      return total_score
    else:
      return total_score + 50
def best_play(tiles,board):
    max_score = -99
    min_row = 999
    min_col = 999
    can_place_somewhere = False
    for i in range(15):
        for j in range(15):
            if board[i][j] != '':
                continue
            for down in [0, 1]:
                score = play(i, j, down, tiles, board)
                can_place_tile, new_board = place_tiles(i, j, down, tiles, board)
                _, invalid_word = get_all_words(new_board)
                if score == -1 or not can_place_tile or len(invalid_word) > 0:
                    can_place = False
                else:
                    can_place = True
                can_place_somewhere = max(can_place_somewhere, can_place)
                if not can_place:
                    continue
                if score > max_score:
                    max_score = score
                    min_row = i
                    min_col = j
                    is_down = down
                elif score == max_score:
                    if i < min_row:
                        min_row = i
                        min_col = j
                        is_down = down
                    elif i == min_row and j < min_col:
                        min_row = i
                        min_col = j
                        is_down = down
    if not can_place_somewhere:
        return [-1, -1, -1, -1]
    else:
        return [max_score, min_row, min_col, is_down]

00398: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 2102, 'const': 406, 'code+const': 2508}
check_import({'allowable': ['math']}): none
def rowtocol(board,n):
    d= []
    for i in board:
      d.append(i[n])
    return d
def allrowtocol(board):
    f = []
    for i in range(15):
      f.append(rowtocol(board,i))
    return f
def get_all_words(board):
    right=[]
    wrong=[]
    for i in range(len(board)) :
      j = 0
      while j<=14:
        if board[i][j] == '':
          j+=1
        elif board[i][j] !='' and j<=14:
          a = ''
          while j<=14 and board[i][j] != '' :
            a += board[i][j]
            j += 1
          if len(a) != 1 :
            if is_valid(a) == True:
              right.append(a)
            elif is_valid(a) == False:
              wrong.append(a)
    for i in range(len(board)):
      k = i
      if i == 0:
        for j in range(len(board[i])):
          if board[k][j]=='':
            pass
          elif board[k][j]!='':
            if board[k+1][j] == '':
              pass
            elif board[k+1][j]!='':
              a = ''
              while 0<=j<= 14 and 0<=k<=14 and board[k][j]!= '':
                a+=board[k][j]
                k+=1
              k = i
              if len(a) != 1 :
                if is_valid(a) == True:
                  right.append(a)
                elif is_valid(a) == False:
                  wrong.append(a)
      elif 1<=i<=13:
        for j in range(len(board[i])):
          if board[k][j]=='':
            pass
          elif board[k][j]!=''and board[k-1][j] == '':
            if board[k+1][j] == '':
              pass
            elif board[k+1][j]!='':
              a = ''
              while  0<=j<= 14 and 0<=k<=14 and board[k][j]!= '':
                a+=board[k][j]
                k+=1
              k = i
              if len(a) != 1 :
                if is_valid(a) == True:
                  right.append(a)
                elif is_valid(a) == False:
                  wrong.append(a)
    right.sort()
    wrong.sort()
    return [right,wrong]
def get_play(board, new_board):
    r = 0
    col = 0
    b = 0
    x = ''
    rowdiff = []
    coldiff = []
    for i in range(15):
      if board[i] != new_board[i]:
        r = i
        break
    for i in range(15):
      if board[i] != new_board[i]:
        rowdiff+= [board[i], new_board[i]]
    x = allrowtocol(board)
    y = allrowtocol(new_board)
    for i in range(15):
      if x[i] != y[i]:
        col = i
        break
    for i in range(15):
      if x[i] != y[i]:
        coldiff+= [x[i], y[i]]
    if len(rowdiff) == 2 and len(coldiff) == 2:
      b = 0
      x = ''
      for j in range(15):
        if coldiff[0][j]!=coldiff[1][j]:
          x+=coldiff[1][j]
    elif len(rowdiff) == 2 :
      b = 0
      x = ''
      for j in range(15):
        if rowdiff[0][j]!=rowdiff[1][j]:
          x+=rowdiff[1][j]
    elif len(coldiff) == 2 :
      b = 1
      x = ''
      for j in range(15):
        if coldiff[0][j]!=coldiff[1][j]:
          x+=coldiff[1][j]
    return [r,col,b,x]
def play(row,col,down,tiles,board):
    x = board
    valid,y = place_tiles(row,col,down,tiles,board)
    if valid == False:
      return -1
    else:
      xword = get_all_words(x)
      yword = get_all_words(y)
      k = []
      p = []
      c = 0
      gcheck = []
      for i in yword[0]:
        if i in xword[0]:
          xword[0].remove(i)
        elif i not in xword[0]:
          k.append(i)
      for i in yword[1]:
        if i not in xword[1]:
          p.append(i)     
      if p != []:
        return -1
      else: 
        t4 = get_play(x,y)[3]
        if len(t4) >= 7 :
          c+=50
        for i in k:
          for j in i:
            c += get_value(j)
        return c
def best_play(tiles,board):
    r = -1
    c = -1
    s = -1
    d = -1
    all = []
    for i in range(15):
      for j in range(15):
        for k in range(2):
          if play(i,j,k,tiles,board) != -1 :
            all.append([play(i,j,k,tiles,board),i,j,k])
    all.sort()
    if len(all) == 0:
      return [-1,-1,-1,-1]
    else:
      check = []
      for i in all:
        check.append(i[0])
      maxx = max(check)
      fin = []
      for i in all:
        if i[0] == maxx:
          fin.append(i)
      fin.sort()
      return fin[0]

00399: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_121.0
[11]
test_play_131.0
[9]
test_play_141.0
[8, 20, 26, -1]
test_play_151.0
[39]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1678, 'const': 505, 'code+const': 2183}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  out = [[],[]]
  for i in range(15):
    word = ''
    for j in range(15):
      if board[i][j] != '':
        word += board[i][j].upper()
      if j == 14 or board[i][j] == '':
        if word != '' and len(word) >= 2:
          valid = is_valid(word)
          if valid == True:
            out[0].append(word)
          if valid == False:
            out[1].append(word)
        word = ''
  for j in range(0,15):
    word = ''
    for i in range(0,15):
      if board[i][j] != '':
        word += board[i][j].upper()
      if i == 14 or board[i][j] == '':
        if word != '' and len(word) >= 2:
          valid = is_valid(word)
          if valid == True:
            out[0].append(word)
          if valid == False:
            out[1].append(word)
        word = ''
  out[0].sort()
  out[1].sort()
  return out
def get_play(board, new_board):
  listoftiles = []
  tiles = ''
  counti = 0
  countj = 0
  for i in range(15):
    for j in range(15):
      if board[i][j] != new_board[i][j]:
        tiles += new_board[i][j]
        listoftiles.append([new_board[i][j],i,j])
  for t in range(len(listoftiles)-1):
    if listoftiles[t][1] == listoftiles[t+1][1]:
      counti += 1
    if listoftiles[t][2] == listoftiles[t+1][2]:
      countj += 1
  row = listoftiles[0][1]
  col = listoftiles[0][2]
  for [t,i,j] in listoftiles:
    if row>i:
      row = i
    if col>j:
      col = j
  if len(tiles) == 1:
    down = 0
  elif counti>countj :
    down = 0
  elif counti<countj :
    down = 1
  tiles.upper()
  out = [row,col,down,tiles]
  return out
def play(row,col,down,tiles,board):
  score = 0
  listofwordsnotij = []
  valid,new_board = place_tiles(row,col,down,tiles,board)
  validwordinnew_board = get_all_words_withij(new_board)
  validwordin_board = get_all_words_withij(board)
  if len(validwordinnew_board[1]) != 0 or valid == False:
    return -1
  listofwords = validwordinnew_board[0]
  for i in validwordin_board[0]:
      if i in listofwords:
        listofwords.remove(i)
  for [t,i,j] in listofwords:
    listofwordsnotij.append(t)
  for i in listofwordsnotij:
    for t in i:
      score += get_value(t)
  if len(tiles) >= 7:
    score += 50
  return score
def best_play(tiles,board):
  listofchoice = []
  for i in range(15):
    for j in range(15):
      for t in range(2):
        a = play(i,j,t,tiles,board)
        if a > 0:
          listofchoice.append([a,i,j,t])
  listofchoice.sort()
  if len(listofchoice) == 0:
    return [-1,-1,-1,-1]
  else:
    bestscore = listofchoice[-1][0]
    for i in range(len(listofchoice)):
      if listofchoice[i][0] == bestscore:
        return listofchoice[i]
def get_all_words_withij(board):
  out = [[],[]]
  for i in range(15):
    word = ''
    for j in range(15):
      if board[i][j] != '':
        word += board[i][j].upper()
      if j == 14 or board[i][j] == '':
        if word != '' and len(word) >= 2:
          valid = is_valid(word)
          if valid == True:
            out[0].append([word,i,j-len(word)])
          if valid == False:
            out[1].append([word,i,j-len(word)])
        word = ''
  for j in range(0,15):
    word = ''
    for i in range(0,15):
      if board[i][j] != '':
        word += board[i][j].upper()
      if i == 14 or board[i][j] == '':
        if word != '' and len(word) >= 2:
          valid = is_valid(word)
          if valid == True:
            out[0].append([word,i-len(word),j])
          if valid == False:
            out[1].append([word,i-len(word),j])
        word = ''
  out[0].sort()
  out[1].sort()
  return out

00400: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_10.0
[0-1]
test_play_20.0
[0-1]
test_play_31.0
[14]
test_play_40.0
[14, 721]
test_play_51.0
[60, 72]
test_play_60.0
[60, 23-1]
test_play_70.0
[163, 14]
test_play_80.0
[162]
test_play_90.0
[11, 15, 214, 137, 6485, 12]
test_play_100.0
[9, 33, 136, 18, 712, 6073, 65, 117, 6274, 16]
test_play_110.0
[167, 61, 28, 11, 913, 285, 11, 912, 7, 25, 15, 147, 14, 21, 32, 12, 15, 816, 68, 6, 13, 10, 27, 128]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 126, -10]
test_play_150.0
[139]
test_best_play_10.0
[None[69, 1, 7, 1]]
test_best_play_20.0
[None[-1, -1, -1, -1]]
test_best_play_30.0TypeError('cannot unpack non-iterable NoneType object')
[None[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_40.0TypeError('cannot unpack non-iterable NoneType object')
[None[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_50.0TypeError('cannot unpack non-iterable NoneType object')
[None[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 876, 'const': 336, 'code+const': 1212}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  l = [[],[]]
  for n in board:
    position = 0
    word = ''
    for i in n:
      position += 1
      if 'A'<=i<='Z' :
        word += i        
      if not('A'<=i<='Z') or (position == 15) :
          if len(word) >= 2:
            if is_valid(word):
              l[0].append(word)                        
            else:
              l[1].append(word)
          word = ''
  board_copy = copy_board(board) 
  for x in range(15) :
    for y in range(15) :
      board_copy[x][y] = board[y][x]
  for n in board_copy:
    position1 = 0
    word1 = ''
    for i in n:
      position1 += 1
      if 'A'<=i<='Z'   :
        word1 += i      
      if  not('A'<=i<='Z') or (position1 == 15) :
          if len(word1) >= 2:
            if is_valid(word1):
              l[0].append(word1)             
            else:
              l[1].append(word1)     
          word1 = ''
  l[0].sort()
  l[1].sort()
  return l
def get_play(board, new_board):
  d = []
  for y in range(15):
    for x in range(15):
      if board[y][x] != new_board[y][x]:
        d.append([new_board[y][x],y,x])
  w = ''
  for i in range(len(d)):
    w += d[i][0]
  if (len(d) == 1) or (d[0][1]-d[-1][1])==0 :
    down = 0
  else: 
    down = 1
  return [d[0][1],d[0][2],down,w]
def play(row,col,down,tiles,board):
  scorep = 0
  if len(tiles) == 7 :
    scorep += 50
  score1 = 0
  score2 = 0
  board1 = get_all_words(board)
  for i in board1[0]:
    for j in i:
      score1 += get_value(j)
  newboard = place_tiles(row,col,down,tiles,board)[1]
  board2 = get_all_words(newboard)
  for i in board2[0]:
    for j in i:
      score2 += get_value(j)
  score = score2 - score1 + scorep
  if score < 0:
    score = -1
  return score
def best_play(tiles,board):
  return

00401: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_10.0
[[-169, -1, -17, -1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_30.0
[[-168, -10, -17, -1], [-187, -12, -10, -10], [-179, -1, -12, -1], [-159, -1, -10, -10], [-11, -12, -13, -10],
 [-165, -13, -14, -1],
 [-19, -16, -1, -10], [-17, -14, -12, -1], [-11, -10, -1, -10], [-122, -13, -18, -1]]
test_best_play_40.0
[[-71, -10, -17, -1], [-163, -10, -10, -10], [-163, -1, -1, -10], [-19, -17, -13, -1], [-19, -13, -10, -10],
 [-172, -14, -14, -10],
 [-17, -16, -16, -10], [-18, -13, -13, -10], [-18, -14, -10, -10], [-16, -15, -1, -10]]
test_best_play_50.0
[[-183, -10, -17, -1], [-162, -13, -10, -10], [-158, -1, -18, -10], [-10, -10, -1, -10], [-168, -10, -11, -1],
 [-124, -16, -18, -1],
 [-18, -18, -19, -1], [-10, -1, -12, -1], [-21, -15, -13, -1], [-127, -14, -14, -1]]
bytecount: {'code': 1090, 'const': 436, 'code+const': 1526}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    ans_valid = []
    ans_invalid = []
    keep1 = ''
    for i in range(15):
        col = []
        for k in board:
            col.append(k[i])
        row = board[i]
        keep = ''
        for each in row: 
                if each == '':
                    keep += ' '
                elif 'a' <= each <= 'z' or 'A' <= each <= 'Z':
                    keep += each.upper()
        rec_keep = keep.split()
        chrec_keep = []
        for check in rec_keep:
            if len(check) >= 2:
                chrec_keep.append(check)
        for word in chrec_keep:
                    if is_valid(word) == True:
                        ans_valid.append(word)
                    elif  is_valid(word) == False :
                        ans_invalid.append(word)
        rec_keep = []
        keep1 = ''               
        for each1 in col:
            if each1 == '':
                keep1 += ' '
            elif 'a' <= each1 <= 'z' or 'A' <= each1 <= 'Z':
                keep1 += each1.upper()
        rec1_keep = keep1.split()
        chrec1_keep = []
        for check1 in rec1_keep:
            if len(check1) >= 2:
                chrec1_keep.append(check1)
        for word1 in chrec1_keep:
            if is_valid(word1) == True:
                    ans_valid.append(word1)
            elif  is_valid(word1) == False:
                    ans_invalid.append(word1)
        rec1_keep = []
    ans_valid.sort()
    ans_invalid.sort()
    return [ans_valid,ans_invalid]
def addcheck_me(insert):
    check= []
    for i in insert:
        for k in i:
            check.append(k)
    return check
def get_play(board, new_board):
    pri = addcheck_me(board)
    sec = addcheck_me(new_board)
    ans = ''
    check = []
    down = 0
    for i in range(len(pri)):
        if pri[i] != sec[i]:
            ans += sec[i]
    for i in range(15):
        for k in range(15):
            if board[i][k] != new_board[i][k]:
                check.append(i)
                check.append(k)
    if check[0] == check[-2]:
        down = 0
    else: down = 1
    return [check[0],check[1],down,ans]
def play(row,col,down,tiles,board):
    count = 0
    ans_valid =[]
    substi_board = copy_board(board)
    check = get_all_words(substi_board)
    valid_w, invalid_w = check[0], check[1]
    check_bool = place_tiles(row,col,down,tiles,substi_board)[0]
    if check_bool == True:
        substi_board = place_tiles(row,col,down,tiles,substi_board)[1]
        check1 = get_all_words(substi_board)
        valid_wnew, invalid_wnew = check1[0],check1[1]
        if len(invalid_wnew) != 0:
            return -1
        else:
            for i in valid_wnew:
                if i in valid_w:
                    valid_w.remove(i)
                else: ans_valid.append(i)
            for k in ans_valid:
                for last in k:
                    count += get_value(last)
            if len(tiles) >= 7:
                count += 50
            return count
    return -1
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00402: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1080, 'const': 392, 'code+const': 1472}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    b = board
    x = [[],[]]
    a = []
    for i in range(15):
        c = False
        d = ''
        for j in range(15):
            if b[i][j] != '':
                d+=b[i][j]
                c = True
                if j == 14:
                    a.append(d)
                    c = False
                    d = ''
            elif c:
                a.append(d)
                c = False
                d = ''
        for j in range(15):
            if b[j][i] != '':
                d+=b[j][i]
                c = True
                if j == 14:
                    a.append(d)
                    c = False
                    d = ''
            elif c:
                a.append(d)
                c = False
                d = ''
    a.sort()
    for e in a:
        if len(e)>=2:
            if is_valid(e):
                x[0].append(e)
            else:
                x[1].append(e)
    return x
def get_play(board, new_board):
    b,nb = board,new_board
    a,d = [],[]
    for i in range(15):
        for j in range(15):
            if b[i][j] != nb[i][j]:
                a.append(nb[i][j])
                d.append([i,j])
    c = ''
    for e in a:
        c+=e
    if len(d) == 1:
        return [d[0][0],d[0][1],0,c]
    else:
        if d[0][0] == d[1][0]:
            return [d[0][0],d[0][1],0,c]
        else:
            return [d[0][0],d[0][1],1,c]
def play(row,col,down,tiles,board):
    x = place_tiles(row,col,down,tiles,board)
    d = get_all_words(board)
    s = 0
    if x[0]:
        a = get_all_words(x[1])
        if a[1] == []:
            c = []
            for e in a[0]:
                if e not in d[0] :
                    c.append(e)
                else:
                    d[0].remove(e)
            for e in c:
                for r in e:
                    s+=get_value(r)
            b = get_play(board,x[1])
            if len(b[3]) >= 7:
                s+=50
            return s
        else:
            return -1
    else:
        return -1
def best_play(tiles,board):
    a = [-1,-1,-1,-1]
    for i in range(15):
        for j in range(15):
            for k in range(2):
                x = play(i,j,k,tiles,board)
                if x > a[0]:
                    a = [x,i,j,k]
                elif x == a[0]:
                    if i<a[1]:
                        a = [x,i,j,k]
                    elif i == a[1]:
                        if j<a[2]:
                            a = [x,i,j,k]
                        elif j == a[2]:
                            if k<a[3]:
                                a = [x,i,j,k]
    return a

00403: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1372, 'const': 379, 'code+const': 1751}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    x = [[],[]]
    for i in range(15) :
        j = 0
        while j < 14 :
            if board[i][j] != '' and board[i][j+1] != '' :
                k = j
                a = ''
                while k != 15 and board[i][k] != '' :
                    a += board[i][k]
                    k += 1
                j = k + 1
                if is_valid(a) == True :
                    x[0].append(a)
                else :
                    x[1].append(a)
            else :
                j += 1
    for j in range(15) :
        i = 0
        while i < 14 :
            if board[i][j] != '' and board[i+1][j] != '' :
                k = i
                a = ''
                while k != 15 and board[k][j] != '':
                    a += board[k][j]
                    k += 1
                i = k + 1
                if is_valid(a) == True :
                    x[0].append(a)
                else :
                    x[1].append(a)
            else :
                i += 1
    x[0].sort()
    x[1].sort()
    return x
def get_play(board, new_board):
    i = 0
    while i < 15 :
        j = 0
        while j < 15 :
            a = ''
            b = ''
            x = [i,j,0]
            y = [i,j,1]
            c = 0
            if j != 14 and new_board[i][j] != board[i][j] and new_board[i][j+1] != '' :
                k = j
                while k != 15 and new_board[i][k] != '' :
                    if new_board[i][k] != board[i][k] :
                        a += new_board[i][k]
                        c += 1
                    c += 1
                    k += 1
                x.append(a)
            if i != 14 and new_board[i][j] != board[i][j] and new_board[i+1][j] != '' :
                k = i
                while k != 15 and new_board[k][j] != '' :
                    if new_board[k][j] != board[k][j] :
                        b += new_board[k][j]
                        c += 1
                    k += 1
                y.append(b)
            if len(a) == len(b) and len(a) != 0 :
                return x
            elif len(a) > len(b) :
                return x
            elif len(b) > len(a) :
                if c == 1 :
                    x.append(b)
                    return x
                return y
            elif len(a) == len(b) and len(a) != 0 :
                return x
            else :
                j += 1
        i += 1
def play(row,col,down,tiles,board):
    a,b = place_tiles(row,col,down,tiles,board)
    x = get_all_words(board)[0]
    if a == True and len(get_all_words(b)[1]) == 0 :
        y = get_all_words(b)[0]
        for e in x :
            if e in y :
                y.remove(e)
        s = 0
        for e in y :
            for k in e :
                s += get_value(k)
        if len(tiles) >=7 :
            s += 50
        return s
    else :       
        return -1
def best_play(tiles,board):
    s = 0
    a = ''
    for i in range(15) :
        for j in range(15) :
            x = play(i,j,0,tiles,board)
            if s < x :
                s = x
                a = [s,i,j,0]
            x = play(i,j,1,tiles,board)
            if s < x :
                s = x
                a = [s,i,j,1]
    if a == '' :
        return [-1,-1,-1,-1]
    return a

00404: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_60.0
[[6, 7, 01, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_100.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 10, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1134, 'const': 372, 'code+const': 1506}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  v = [[],[]]
  for i in range(len(board)):
    s = ''
    t = ''
    for j in range(len(board[i])):
      if 'A' <= board[i][j] <= 'Z':
        s += board[i][j]
      if board[i][j] == '' or j == len(board)-1:
        if is_valid(s) and len(s) > 1:
          v[0].append(s)
        if is_valid(s) == False and s != '' and len(s) > 1:
          v[1].append(s)
        s = ''
      if 'A' <= board[j][i] <= 'Z':
        t += board[j][i]
      if board[j][i] == '' or j == len(board)-1:
        if is_valid(t) and len(t) > 1:
          v[0].append(t)
        if is_valid(t) == False and t != '' and len(t) > 1:
          v[1].append(t)
        t = ''
    v[0].sort()
    v[1].sort()
  return v
def get_play(board, new_board):
  out = [-1,-1,0,""]
  s = ''
  for i in range(len(board)):
    for j in range(len(board[i])):
      if board[j][i] != new_board[j][i]:
        if out[0] == -1: out[0] = j
        if out[1] == -1: out[1] = i
        s += new_board[j][i]
        if j == len(board[i])-1: j -= 1
        if new_board[j+1][i] != '' and board[j+1][i] != new_board[j+1][i]: out[2] = 1
  if len(s) == 1: out[2] = 0
  out[3] = s
  return out
def play(row,col,down,tiles,board):
  c = get_all_words(board)
  valid,b= place_tiles(row,col,down,tiles,board)
  a = get_all_words(b)
  if len(a[1]) > 0 or valid == False: return -1
  s = 0
  if len(tiles) >= 7: s = 50
  for i in range(len(a[0])):
    if a[0][i] not in c[0]:    
      for j in range(len(a[0][i])):  
        s += get_value(a[0][i][j])
    else:
      c[0].pop(c[0].index(a[0][i]))
  return s
def best_play(tiles,board):
  s = [-1,-1,-1,-1]
  for i in range(len(board)):
    for j in range(len(board[i])):
      p0 = play(i,j,0,tiles,board)
      p1 = play(i,j,1,tiles,board)      
      if p0 != -1 and p0 > s[0]:
        s = [p0,i,j,0]
      if p1 != -1 and p1 > s[0]:  
        s = [p1,i,j,1]
  return s

00405: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_20.0ValueError('max() arg is an empty sequence')
[]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_40.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [742, 14, 14, 0],
 [2817, 136, 6, 0], [168, 123, 83, 0], [168, 114, 90, 0], [126, 05, 11, 0]]
test_best_play_50.0
[[83, 0, 7, 1], [62, 13, 0, 0], [6358, 14, 08, 0], [110, 120, 01, 0], [468, 0, 11, 2, 01], [24, 26, 8, 1],
 [18, 48, 9, 1], [9, 10, 01, 2, 01], [218, 95, 13, 01], [1127, 04, 104, 1]]
bytecount: {'code': 1320, 'const': 459, 'code+const': 1779}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    j = 0
    c = ''
    valid_words, invalid_words = [],[]
    for i in range(15):
      if j == 14 and len(c) >= 2 and is_valid(c) == True: 
        valid_words.append(c)
      c = ''
      for j in range(15):
            if board[i][j] != '':
                c += board[i][j]
            elif board[i][j] == '' :
                if len(c) >= 2 and is_valid(c) == True :
                  valid_words.append(c)
                elif len(c) >= 2 and is_valid(c) == False :
                  invalid_words.append(c)
                c = ''          
    for i in range(15):
      if j == 14 and len(c) >= 2 and is_valid(c) == True: 
        valid_words.append(c)
      c = ''
      for j in range(15):
            if board[j][i] != '':
                c += board[j][i]
            elif board[j][i] == '' :
                if len(c) >= 2 and is_valid(c) == True :
                  valid_words.append(c)
                elif len(c) >= 2 and is_valid(c) == False :
                  invalid_words.append(c)
                c = ''
    if len(c) >= 2 and is_valid(c) == True :
      valid_words.append(c)
    elif len(c) >= 2 and is_valid(c) == False :
      invalid_words.append(c) 
    valid_words.sort()
    invalid_words.sort()
    return [valid_words,invalid_words]
def get_play(board, new_board):
  x,s,down = [],'',0
  for i in range(15):
      for j in range(15):
        if new_board[i][j] != board[i][j]:
          x.append([i,j])
          s += new_board[i][j]
  if len(x) > 1:
      if x[0][0] < x[1][0]:
          down = 1
  return [x[0][0],x[0][1],down,s]
def play(row,col,down,tiles,board):
  w1 = get_all_words(board)[0]
  w2 = []
  c = 0
  t,new_board = place_tiles(row,col,down,tiles,board)
  w2 = get_all_words(new_board)[0]
  findlen7 = False 
  for i in w2:
    if i not in w1:
      for letter in i:
        c += get_value(letter)
      if len(i) >= 7:
        findlen7 = True
    elif i in w1:
      w1.remove(i)
  if len(tiles) >= 7 and findlen7 == True :
    c += 50
  if t == False or len(w2) < len(w1) or len(get_all_words(new_board)[1]) != 0 :return -1  
  return c
def best_play(tiles,board):
  findmax = []
  if board[7][7] == '':
    if is_valid(tiles) == True:
      if len(tiles) >= 8:
        return [play(0,7,1,tiles,board),0,7,1]
      elif len(tiles) < 8:
        return [play(8-len(tiles),7,1,tiles,board),8-len(tiles),7,1]
  elif board[7][7] != '':
    for i in range(15):
      for j in range(15):
        for k in range(2):
          point = play(i,j,k,tiles,board)
          if point == -1 :
            findmax.append([-1,-1,-1,-1])
          else:
            findmax.append([point,-i,-j,k])
  x = max(findmax)
  ans = [x[0],-x[1],-x[2],x[3]]
  if x[0] == 0 :return [-1,-1,-1,-1]
  return ans

00406: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_10.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_get_all_words_20.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_get_all_words_30.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_get_all_words_40.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_get_all_words_50.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_get_all_words_60.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_get_all_words_70.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_get_all_words_80.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_get_all_words_90.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_get_all_words_100.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_get_play_10.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_get_play_20.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_get_play_30.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_get_play_40.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_get_play_50.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_get_play_60.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_get_play_70.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_get_play_80.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_get_play_90.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_get_play_100.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_play_10.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_play_20.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_play_30.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_play_40.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_play_50.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_play_60.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_play_70.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_play_80.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_play_90.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_play_100.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_play_110.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_play_120.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_play_130.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_play_140.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_play_150.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_best_play_10.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_best_play_20.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_best_play_30.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_best_play_40.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
test_best_play_50.0IndentationError(\'expected an indented block\', (\'<string>\', 447, 6, " word=\'\'\\n"))
[]
bytecount: {}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  words=''
  for i in range(15):
    words+=' '
    for j in range(15):
      if board[i][j] != ' ': 
        words += board[i][j]
      else: words+=' '
  for i in range(15):
    words+=' '
    for j in range(15):
      if board[j][i] !=' ':words += board[j][i]
      else: words+=' '
    words=words.split()
    words.sort()
    valid_words=[]
    invalid_words=[]
    for e in words:
      if len(e)>=2:  
        if is_valid(e): valid_words.append(e)
        else: invalid_words.append(e)
    return [valid_words,invalid_words]
  def get_play(board, new_board):
  word=''
  index_word=[]
  for i in range(15):
    for j in range(15):
      if board[i][j] != new_board[i][j]: 
        word+= new_board[i][j]
        index_word.append([i,j])
  if len(word)==0:
    for i in range(15):
      for j in range(15):
        if board[j][i] != new_board[j][i]:
          word+=new_board[j][i]
          index_word.append([i,j])
  i1,j1=min(index_word)
  i2,j2=max(index_word)
  d=1
  if j1!=j2 :
     d=0
  elif len(word)==1:d=0
  return [i1,j1,d,word]
def play(row,col,down,tiles,board):
  new_board=place_tiles(row,col,down,tiles,board)
  get_play(board, new_board)
    return -1
def best_play(tiles,board):
    return [-1,-1,-1,-1]

00407: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_110.0ValueError('list.remove(x): x not in list')
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0ValueError('list.remove(x): x not in list')
[8, 20, 26, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1222, 'const': 334, 'code+const': 1556}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    boardd = copy_board(board)
    words = [] 
    for j in range(len(boardd[0])):
        str_check = ""
        for i in range(len(boardd)):
            if boardd[i][j] != '':
                str_check += boardd[i][j]
            else:
                str_check += " "                 
        words += str_check.strip().split()
    for i in range(len(boardd)): 
        str_check = ""
        for j in range(len(boardd[0])):
            if boardd[i][j] != '':
                str_check += boardd[i][j]
            else:
                str_check += " "                 
        words += str_check.strip().split()        
    valid_words = []
    invalid_words = []
    for e in words:
        if is_valid(e):
            valid_words.append(e)
        elif len(e) >= 2:
            invalid_words.append(e)
    valid_words.sort()
    invalid_words.sort()
    return [valid_words,invalid_words]
def get_play(board, new_board):
    boardd = copy_board(board)
    new_boardd = copy_board(new_board)
    rows = len(boardd)
    colu = len(boardd[0])
    list_diff = []
    for i in range(rows):
        for j in range(colu):
            if boardd[i][j] != new_boardd[i][j]:
                list_diff.append([i,j])
    list_diff.sort()
    start_i,start_j = list_diff[0]
    if len(list_diff) == 1:
        return [start_i,start_j,0,new_boardd[start_i][start_j]]
    else:
        list_i = [i for i,j in list_diff]
        bool_i = False
        list_j = [j for i,j in list_diff]
        bool_j = False
        for i in range(len(list_i)-1):
            if list_i[i] == list_i[i+1]:
                bool_i = True
        for j in range(len(list_j)-1):
            if list_j[j] == list_j[j+1]:
              bool_j = True
        if bool_i:
            key = 0
        elif bool_j:
            key = 1
        word_added = ''
        for i,j in list_diff:
            word_added += new_boardd[i][j]
        return [start_i,start_j,key,word_added]
def play(row,col,down,tiles,board):
    new_board = place_tiles(row,col,down,tiles,board)[1]
    before = get_all_words(board)
    after = get_all_words(new_board)
    score = 0   
    if after[1] != [] :
        return -1
    elif before == after:
        return -1
    new_words = [e for e in after[0]]
    for e in before[0]:
        if e in after[0]:
            new_words.remove(e)
    for e in new_words:
        for alpha in e:
            score += get_value(alpha)      
    if len(tiles) >= 7:
        score += 50 
    return score
def best_play(tiles,board):
    list_test = []
    for i in range(len(board)): 
        for j in range(len(board[0])):
            t = copy_board(board)
            first = play(i,j,0,tiles,t)
            second = play(i,j,1,tiles,t)
            list_test.append([first,-i,-j,0])
            list_test.append([second,-i,-j,-1])
    list_test.sort()        
    good = list_test[-1]
    if good[0] != -1:
        r = good[1]
        c = good[2]
        d = good[3]
        results = [good[0],-r,-c,-d]
        return results          
    return [-1,-1,-1,-1]

00408: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1226, 'const': 384, 'code+const': 1610}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    ind = []
    outd = []
    for e in board:
        a = ""
        for y in e:
          if y == "":
            a += " "
          else:
            a += y
        a = a.strip()
        b = a.split()
        for x in b:
            if len(x) >= 2:
                if is_valid(x):
                    ind.append(x)
                else:
                    outd.append(x)
    for j in range(len(board[0])):
        a = ""
        for e in board:
            if e[j] == "":
              a += " "
            else:
              a += e[j]
        a = a.strip()
        b = a.split()
        for x in b:
            if len(x) >= 2:
                if is_valid(x):
                    ind.append(x)
                else:
                    outd.append(x)
    ind.sort()
    outd.sort()
    return [ind,outd]
def get_play(board, new_board):
  a = make_board()
  for i in range(15):
    for j in range(15):
      if board[i][j] != new_board[i][j]:
        a[i][j] = new_board[i][j] 
  for i in range(15):
    for j in range(15):
      if a[i][j] != "":
        if i < 14 and j < 14:
          b = ""
          for k in range(15):
            b += a[k][j]
          if "".join(a[i]) != a[i][j]:
            b = "".join(a[i])
            return [i,j,0,b]
          elif b != a[i][j]:
            return [i,j,1,b]
          else:
            return [i,j,0,a[i][j]]
        elif i == 14 and j < 14:
          if "".join(a[i]) != a[i][j]:
            b = "".join(a[i])
            return [i,j,0,b]
          else:
            return [i,j,0,a[i][j]]
        elif i < 14 and j ==14:
          b = ""
          for k in range(15):
            b += a[k][j]
          if b != a[i][j]:
            return [i,j,1,b]
          else:
            return [i,j,0,a[i][j]]
        else:
          return [i,j,0,a[i][j]]
def play(row,col,down,tiles,board):
    ind1 , out1 = get_all_words(board)
    [valid, new_board] = place_tiles(row,col,down,tiles,board)
    ind2 ,out2 = get_all_words(new_board)
    score = 0
    if valid == False or len(out2) != 0:
      return -1
    for e in ind2:
      if e not in ind1:
        for i in e:
          score += get_value(i)
      else:
        ind1.remove(e)
    if len(tiles) >= 7:
      score += 50
    return score
def best_play(tiles,board):
    a= []
    for row in range(15):
      for col in range(15):
        for down in [0,1]:
          a.append([-play(row,col,down,tiles,board),row,col,down])
    a.sort()
    if a[0][0] == 1:
      return [-1,-1,-1,-1]
    else:
      return [-a[0][0],a[0][1],a[0][2],a[0][3]]

00409: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 920, 'const': 376, 'code+const': 1296}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_words = [] ; invalid_words = [] ; Words = ''
    for i in range(15):
        Words += ' ' 
        for j in range(15):
            if 'A' <= board[i][j] <= 'z': Words += board[i][j]
            else: Words += ' '
    for j in range(15):
        Words += ' ' 
        for i in range(15):
            if 'A' <= board[i][j] <= 'z': Words += board[i][j]
            else: Words += ' '
    Words = Words.split(' ')
    for e in Words:
        if len(e) > 1:
            if is_valid(e) == True: valid_words.append(e)
            else: invalid_words.append(e)
    valid_words.sort() ; invalid_words.sort()
    return [valid_words,invalid_words]
def get_play(board, new_board):
    tiles = '' ; m = [] ;down = 0 ; k = 0
    for i in range(15):
        n = ''
        for j in range(15):
            if board[i][j] != new_board[i][j]:
                n += new_board[i][j] ; m.append([j,i])
        tiles += n
        if n != '': k += 1
    if k > 1: down = 1
    return [m[0][1],m[0][0],down,tiles]
def play(row,col,down,tiles,board):
    score = 0
    new_board = place_tiles(row,col,down,tiles,board)[-1]
    w1 = get_all_words(board) ; w2 = get_all_words(new_board)
    if new_board == board or w2[1] != [] : return -1
    for w in w2[0]:
        if w not in w1[0]:
            for c in w: score += get_value(c)
        else: w1[0].remove(w)
    tiles = get_play(board,new_board)[-1]
    if len(tiles) >= 7: score += 50
    return score
def best_play(tiles,board):
    l = []
    for row in range(15):
        for col in range(15):
            if play(row,col,0,tiles,board) != -1: l.append([play(row,col,0,tiles,board),row,col,0])
            if play(row,col,1,tiles,board) != -1: l.append([play(row,col,1,tiles,board),row,col,1])
            else: l.append([-1,-1,-1,-1])
    l.sort(); Max = l[-1][0]
    for e in l:
      if e[0] == Max: return e

00410: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1216, 'const': 443, 'code+const': 1659}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    v = []; iv = []
    for i in range(15): 
        word = ''
        words = ''
        for j in range(15): 
            k = board[i][j].upper()
            m = board[j][i].upper()
            if "A" <= m <= "Z":
                words += m
            elif m == "" and len(words) != 0:
                if len(words) >= 2:
                    if is_valid(words) == True:
                        v.append(words)
                    else:
                        iv.append(words)
                words = ''
            if "A" <= k <= "Z":
                word += k
            elif k == "" and len(word) != 0:
                if len(word) >= 2:
                    if is_valid(word) == True:
                        v.append(word)
                    else:
                        iv.append(word)
                word = ''
        if len(word) != 0:
            if len(word) >= 2:
                    if is_valid(word) == True:
                        v.append(word)
                    else:
                        iv.append(word)
        if len(words) != 0:
            if len(words) >= 2:
                    if is_valid(words) == True:
                        v.append(words)
                    else:
                        iv.append(words)
    v.sort()
    iv.sort()
    return [v,iv]
def get_play(board, new_board) :
    a = []
    x = ''
    b = [] ; c = []
    for i in range(15):
        for j in range(15):
            if board[i][j] != new_board[i][j]:
                x += new_board[i][j]
                a.append([i,j])
                b.append(i)
                c.append(j)
                if len(b) >= 2:
                    if b[0] == b[1]:
                        a.append(0)
                    else:
                        a.append(1)                      
                else:
                    a.append(0)
    a[0].append(a[-1])
    a[0].append(x)
    return a[0]
def play(row,col,down,tiles,board):
    x = 0
    if len(tiles) >= 7:
        x += 50
    s = ''
    a,nb = place_tiles(row,col,down,tiles,board)
    k,y = get_all_words(board)
    k1,y1 = get_all_words(nb)
    if y1 != [] or a == False:
        return -1
    for i in k1:
        if i in k:
            k.remove(i)
        elif i not in k:
            for eee in i:
                x+= get_value(eee) 
    return x
def best_play(tiles,board):
    x = []
    for i in range(15):
        for j in range(15):
            if play(i,j,1,tiles,board) == -1 :
                x.append([play(i,j,1,tiles,board),1,1,1])
            if play(i,j,0,tiles,board) == -1:
                x.append([play(i,j,0,tiles,board),1,1,1])
            if play(i,j,1,tiles,board) != -1 :
                x.append([play(i,j,1,tiles,board),-i,-j,-1])
            if play(i,j,0,tiles,board) != -1 :
                x.append([play(i,j,0,tiles,board),-i,-j,0])
    x.sort()
    x[-1][-2] = -x[-1][-2]
    x[-1][-3] = -x[-1][-3]
    x[-1][-1] = -x[-1][-1]
    return x[-1]

00411: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1038, 'const': 322, 'code+const': 1360}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  d=copy_board(board)
  validz=[]
  invalidz=[]
  for c in range(15):
    for r in range(15):
      if d[c][r] == "":
        d[c][r]= " "
  for i in range(15):
    t="".join([d[i][j] for j in range(15)])
    str_list=t.split()
    for e in str_list:
      if is_valid(e) and len(e)>1:
        validz.append(e)
      elif len(e)>1:
        invalidz.append(e)
  for j in range(15):
    t="".join([d[i][j] for i in range(15)])
    str_list=t.split()
    for e in str_list:
      if is_valid(e) and len(e)>1:
        validz.append(e)
      elif len(e)>1:
        invalidz.append(e)
  validz.sort()
  invalidz.sort()
  return [validz,invalidz]
def get_play(board, new_board):
  variant=False
  down=0
  for i in range(15): 
    for j in range(15):
      if board[i][j]!= new_board[i][j]:
        row,col=i,j
        variant=True
        break
    if variant:
      break
  verti = "".join([new_board[k][col] for k in range(15) if new_board[k][col] != board[k][col]])
  hori = "".join([new_board[row][m] for m in range(15) if new_board[row][m] != board[row][m]])
  if len(verti) > 1:
    down=1
    tiles=verti
  else:
    down=0
    tiles=hori
  return [row,col,down,tiles]
def play(row,col,down,tiles,board):
    validz,new_board=place_tiles(row,col,down,tiles,board)
    ski=[]
    if not validz:
      return -1
    a1,a2=get_all_words(board)
    b1,b2=get_all_words(new_board)
    if len(b2)>0:
      return -1
    for ch in b1:
      if ch in a1:
        a1.remove(ch)
      else:
        ski += [ch]
    score=0
    for ck in ski:
      for fi in ck:
        score += get_value(fi)
    if len(tiles)>= 7:
      score += 50
    return score
def best_play(tiles,board):
  ans=[-1,-1,-1,-1]
  for i in range(15):
    for j in range(15):
      for k in range(2):
        d=play(i,j,k,tiles,board)
        if d > ans[0]:
          ans =[d,i,j,k]
  return ans

00412: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1328, 'const': 386, 'code+const': 1714}
check_import({'allowable': ['math']}): none
def get_all_words(board):
  out=[[],[]]
  for row in board:
    word=''
    for c in row:
      if c == '':
        word+=' '
      else :
        word+=c
    word_li=word.strip().split()
    for w in word_li:
      if len(w) > 1:
        if is_valid(w):
          out[0].append(w)
        else:
          out[1].append(w)
  for i in range (len(board[0])):
    col=[]
    for row in board:
      col.append(row[i])
    word=''
    for c in col:
      if c == '':
        word+=' '
      else :
        word+=c
    word_li=word.strip().split()
    for w in word_li:
      if len(w) > 1:
        if is_valid(w):
          out[0].append(w)
        else:
          out[1].append(w)
  out[0].sort()
  out[1].sort()
  return out
def get_play(board, new_board):
  new=[]
  for row in range (len(board)):
    for col in range (len(board[0])):
      if board[row][col]!=new_board[row][col]:
        new.append([row, col, new_board[row][col]])
  if len(new)==1:
    row,col,tile=new[0]
    out=[row,col,0,tile]
  new.sort()
  is_hori=True
  for t in new:
    if t[0]!=new[0][0]:
      is_hori=False
      break
  if is_hori :
    tile=''.join([e[2] for e in new])
    out=[new[0][0],new[0][1],0,tile]
  else:
    tile=''.join([e[2] for e in new])
    out=[new[0][0],new[0][1],1,tile]
  return out
def play(row,col,down,tiles,board):
    test_board=copy_board(board)
    x=place_tiles(row,col,down,tiles,test_board)
    if x[0]==False:
      return -1
    else:
      test_board=x[1]
      oldAW=get_all_words(board)
      newAW=get_all_words(test_board)
      if len(oldAW[1]) < len(newAW[1]):
        return -1
      else:
        p=0
        nword=newAW[0]
        for w in oldAW[0]:
          if w in nword:
            nword.remove(w)
        for w in nword:
          for c in w:
            p+=get_value(c)
        if len(tiles) >= 7:
          p+=50
        return p
def best_play(tiles,board):
    data=[]
    for row in range (len(board)):
      for col in range (len(board[0])):
        p0=play(row,col,0,tiles,board)
        p1=play(row,col,1,tiles,board)
        data.append([p0,row,col,0])
        data.append([p1,row,col,1])
    data.sort()
    mscore=data[-1][0]
    if mscore== -1:
      return [-1, -1, -1, -1]
    else:
      mslist=[ d for d in data if d[0]==mscore]
      if len(mslist)==1:
        return mslist[0]
      else:
        mslist.sort()
        minrow=mslist[0][1]
        MRlist=[]
        for d in mslist:
          if d[1]==minrow:
            MRlist.append(d)
        if len(MRlist)==1:
          return MRlist[0]
        else:
          MRlist.sort()
          mincol=MRlist[0][2]
          MClist=[ d for d in MRlist if d[2]==mincol]
          return MClist[0]

00413: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1308, 'const': 427, 'code+const': 1735}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    valid_word = []
    invalid_word = []
    for i in range(len(board)):
      word = ""
      for j in range(len(board[i])):
        if board[i][j] != "":
          word += board[i][j]
        else:
          word += " "
      check = word.split()
      for k in check:
        if is_valid(k) == True:
          valid_word.append(k)
        elif is_valid(k) == False and len(k)>=2:
          invalid_word.append(k)
    for i in range(len(board[0])):
      word = ""
      for j in range(len(board)):
        if board[j][i] != "":
          word += board[j][i]
        else:
          word += " "
      check = word.split()
      for k in check:
        if is_valid(k) == True:
          valid_word.append(k)
        elif is_valid(k) == False and len(k) >= 2:
          invalid_word.append(k)
    valid_word.sort()
    invalid_word.sort()
    return [valid_word,invalid_word]
def get_play(board, new_board):
    word = ""
    for i in range(len(board)):
        for j in range(len(board[i])):
          if board[i][j] != new_board[i][j]:
            word += new_board[i][j]
          else:
            pass
    check = False
    for i in range(len(board)):
      if check == False:
        for j in range(len(board[i])):
          if board[i][j] != new_board[i][j]:
            row,col = i,j
            check = True
            break
          else:
            pass
      else:break
    x = []
    y = []
    for i in range(len(board)):
      for j in range(len(board[i])):  
        if board[i][j] != new_board[i][j]:
          x.append(i)
          y.append(j)
    check = True
    if len(x) == 1:
      down = 0
    else:
      for i in range(len(x)-1):
        if x[i] != x[i+1]:
          check = False
      if check == True:
        down = 0
      else:
        down = 1
    return [row,col,down,word]
def play(row,col,down,tiles,board):
    valid,newboard = place_tiles(row,col,down,tiles,board)
    word = ""
    score = 0
    if valid == True:
      wordbefore = get_all_words(board)[0]
      wordafter = get_all_words(newboard)[0]
      newword = []
      if get_all_words(newboard)[1] == []:
        for i in wordbefore:
          if i in wordafter:
            wordafter.remove(i)
        if len(wordafter) != 0:
          for i in wordafter:
            for j in i:
              score += get_value(j)
          if len(tiles) >= 7:
            score += 50
            return score
          else:
            return score
        else:
          return -1
      else:
        return -1
    else:
      return -1
def best_play(tiles,board):
    scoreandpikad = []
    check = False
    for i in range(len(board)):
      for j in range(len(board[i])):
        if play(i,j,0,tiles,board) != -1:
          scoreandpikad.append([-(play(i,j,0,tiles,board)),i,j,0])
          check = True
        if play(i,j,1,tiles,board) != -1:
          scoreandpikad.append([-(play(i,j,1,tiles,board)),i,j,1])
          check = True
    if check == True:
      scoreandpikad.sort()
      result = [-(scoreandpikad[0][0]),scoreandpikad[0][1],scoreandpikad[0][2],scoreandpikad[0][3]]
      return result
    else:
      return [-1,-1,-1,-1]

00414: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 748, 'const': 310, 'code+const': 1058}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    words = []
    for i in range(15) :
        w1 = '' ; w2 = ''
        for j in range(15) :
            H = board[i][j] ; V = board[j][i]
            if H == '' : H = ' '
            if V == '' : V = ' '
            w1 += H ; w2 += V
        words += w1.strip().split() + w2.strip().split()
    correct = [] ; wrong = []
    for w in words :
        if len(w) != 1 :
            if is_valid(w) : correct.append(w.upper())
            else : wrong.append(w.upper())
    return [sorted(correct), sorted(wrong)]
def get_play(board, new_board):
    word = ''
    I = []
    J = []
    for i in range(15) :
        for j in range(15) :
            if board[i][j] != new_board[i][j] :
                word += new_board[i][j]
                I.append(i)
                J.append(j)
    d = 0
    if I[0] != I[-1] : d = 1
    return [I[0],J[0],d,word]
def play(row,col,down,tiles,board):
    valid, new_board = place_tiles(row,col,down,tiles,board)
    if valid :
        new_words, new_wrongs = get_all_words(new_board)
        if new_wrongs != [] :
            score = -1
        else :
            if len(tiles) >= 7 : score = 50
            else : score = 0
            words = get_all_words(board)
            for w in words[0] :
                if w in new_words :
                    new_words.remove(w)
            for w in new_words :
                for c in w :
                    score += get_value(c)
    else : score = -1
    return score
def best_play(tiles,board):
    bp = []
    for i in range(15) :
        for j in range(15) :
            bp.append([-play(i,j,0,tiles,board), i, j, 0])
            bp.append([-play(i,j,1,tiles,board), i, j, 1])
    score, row, col, down = sorted(bp)[0]
    if score == 1 : return [-1, -1, -1, -1]
    return [-score, row, col, down]

00415: HW10
testfuncscerrstu_stdoutstu_kept
test_get_all_words_11.0
[[[], []]]
test_get_all_words_21.0
[[['TRANSPORTATIONS'], []]]
test_get_all_words_31.0
[[['ETERNALS', 'MUSKETEER'], []]]
test_get_all_words_41.0
[[['CONNERS', 'UNWITS', 'VILDE', 'ZOO'], ['FEWZ']]]
test_get_all_words_51.0
[[['HELIOS', 'UNOBSERVANT'], ['LIAM', 'NOOOOO', 'ONIGIRI']]]
test_get_all_words_61.0
[[['FY', 'INFLATER', 'MONEY', 'NE', 'PE', 'QIN', 'UT', 'YA', 'YUP'], []]]
test_get_all_words_71.0
[[['AT', 'ES', 'GI', 'IN', 'MANGIER', 'ME', 'NA', 'RETAINS'], []]]
test_get_all_words_81.0
[[['ATT', 'EH', 'FEH', 'FERN', 'IF', 'IT', 'ITERANT', 'NAES', 'RE', 'REI', 'RETAINS', 'SI', 'SIF',
   'STAIRED', 'TI', 'URANITE'],
  []]]
test_get_all_words_91.0
[[['AD', 'AD', 'AD', 'BRAINWASHING', 'DIM', 'DOD', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM', 'DOM',
   'DOM', 'DORM', 'DSO', 'ED', 'ED', 'EJACULATING', 'LO', 'MI', 'MI', 'MO', 'MOD', 'MONSTERS', 'NO',
   'OF', 'OHM', 'OM', 'OPACIFYING', 'OXYPHENBUTAZONE', 'PIER', 'PREQUALIFIED', 'UM', 'XI', 'YE',
   'ZOOT'],
  []]]
test_get_all_words_101.0
[[['AA', 'ARK', 'CALP', 'FOOT', 'FUGIO', 'GI', 'GYVE', 'HOCK', 'IF', 'INTERNED', 'ITA', 'JA',
   'JIVE', 'MUN', 'OXIDS', 'SITHING', 'TO', 'TO', 'TRAT', 'TRIALED', 'TUREENS', 'XU'],
  ['JOJUOLOOMJYOOI', 'RO']]]
test_get_play_11.0
[[7, 6, 0, 'ICE'], [7, 4, 0, 'JUD'], [4, 5, 1, 'INFSIVE'], [6, 8, 0, 'M']]
test_get_play_21.0
[[1, 7, 1, 'MALEATE'], [5, 6, 1, 'JURY'], [5, 8, 1, 'REWTH'], [1, 8, 0, 'OLEHUNT'],
 [2, 14, 1, 'RAVISES'], [0, 10, 0, 'TOGA'], [5, 13, 1, 'POZ'], [5, 5, 1, 'ABAND'],
 [2, 10, 0, 'COYE'], [10, 2, 0, 'FOOS']]
test_get_play_31.0
[[6, 6, 1, 'XUNT']]
test_get_play_41.0
[[7, 1, 0, 'INHERITANCE']]
test_get_play_51.0
[[6, 9, 1, 'CAT']]
test_get_play_61.0
[[6, 7, 1, 'CT']]
test_get_play_71.0
[[7, 3, 0, 'COMDER']]
test_get_play_81.0
[[6, 6, 0, 'AT']]
test_get_play_91.0
[[6, 7, 0, 'M']]
test_get_play_101.0
[[0, 7, 1, 'HEPATICS'], [1, 3, 0, 'MAILS'], [7, 6, 1, 'ARREAR'], [2, 0, 0, 'EASIED'],
 [13, 6, 0, 'SAHIWAL'], [3, 13, 1, 'MICROLOGIES'], [14, 7, 0, 'GAS'], [7, 5, 1, 'GOORY'],
 [10, 7, 0, 'SHIPS'], [2, 11, 1, 'MALEFICE'], [0, 10, 1, 'DOOLAN'], [4, 9, 1, 'POGEY'],
 [0, 14, 1, 'AGROS'], [3, 2, 1, 'TONIEST'], [9, 1, 1, 'SLICES'], [4, 0, 0, 'CRONY'],
 [7, 14, 1, 'DIXIT'], [11, 4, 1, 'PINS'], [5, 0, 1, 'ARED'], [0, 1, 0, 'GRAFT'], [12, 9, 0, 'MO'],
 [6, 4, 1, 'CAB'], [11, 12, 1, 'BEL']]
test_play_11.0
[-1]
test_play_21.0
[-1]
test_play_31.0
[14]
test_play_41.0
[14, 21]
test_play_51.0
[60, 72]
test_play_61.0
[60, -1]
test_play_71.0
[63, 14]
test_play_81.0
[62]
test_play_91.0
[11, 15, 24, 17, 85, 12]
test_play_101.0
[9, 33, 36, 18, 12, 73, 65, 17, 74, 16]
test_play_111.0
[67, 61, 28, 11, 13, 85, 11, 12, 7, 25, 17, 14, 21, 32, 12, 15, 16, 68, 6, 13, 10, 27, 28]
test_play_120.0
[811]
test_play_130.0
[59]
test_play_140.0
[8, 20, 226, -1]
test_play_150.0
[359]
test_best_play_11.0
[[69, 1, 7, 1]]
test_best_play_21.0
[[-1, -1, -1, -1]]
test_best_play_31.0
[[68, 0, 7, 1], [87, 12, 0, 0], [79, 1, 12, 1], [59, 1, 0, 0], [11, 2, 3, 0], [65, 3, 4, 1],
 [19, 6, 1, 0], [7, 4, 2, 1], [11, 0, 1, 0], [22, 3, 8, 1]]
test_best_play_41.0
[[71, 0, 7, 1], [63, 10, 0, 0], [63, 1, 1, 0], [9, 7, 3, 1], [19, 13, 0, 0], [72, 14, 4, 0],
 [17, 6, 6, 0], [8, 3, 3, 0], [18, 4, 0, 0], [16, 5, 1, 0]]
test_best_play_51.0
[[83, 0, 7, 1], [62, 13, 0, 0], [58, 1, 8, 0], [10, 0, 1, 0], [68, 0, 11, 1], [24, 6, 8, 1],
 [18, 8, 9, 1], [10, 1, 2, 1], [21, 5, 3, 1], [27, 4, 4, 1]]
bytecount: {'code': 1262, 'const': 506, 'code+const': 1768}
check_import({'allowable': ['math']}): none
def get_all_words(board):
    ans = [[],[]]
    for i in board:
      line = ""
      for j in range(15):
          if "A"<=i[j]<="Z":
            line+=i[j]
          else:
            line+=" "
      line = line.strip().split()
      for word in line:
          x = is_valid(word.upper())
          if x == True:
              ans[0].append(word.upper())
          if x== False and len(word)>=2:
              ans[1].append(word.upper())
    for i in range(15):
        column = ""
        for j in range(15):
            if "A"<=board[j][i]<="Z":
                column+=board[j][i]
            else:
                column+=" "
        column = column.strip().split()
        for word in column:
          x = is_valid(word.upper())
          if x == True:
              ans[0].append(word.upper())
          if x== False and len(word)>=2:
              ans[1].append(word.upper())
    for a in ans:
        a.sort()
    return ans
def get_play(board, new_board):
    char = []
    for i in range(15):
        for j in range(15):
          if "A"<=board[i][j]<="Z":
            char.append([i,j,board[i][j]])
    new_char = []
    for i in range(15):
        for j in range(15):
          if "A"<=new_board[i][j]<="Z":
            new_char.append([i,j,new_board[i][j]])    
    for e in char:
        if e in new_char:
            new_char.remove(e)
    row = 0
    col = 0
    word = ""
    for e in new_char:
        word+=e[2]
    for i in range(len(new_char)-1):
        if new_char[i][0] != new_char[i+1][0]:
            col+=1
        else:
            row+=1
    if col>0:
        return [new_char[0][0],new_char[0][1],1,word]
    elif row>0 or len(new_char)==1:
        return [new_char[0][0],new_char[0][1],0,word]
def play(row,col,down,tiles,board):
    old = get_all_words(board)
    valid,new_board = place_tiles(row,col,down,tiles,board)
    if valid == False:
        return -1
    new = get_all_words(new_board)
    if len(new[1])>0:
        return -1
    for e in old[0]:
        if e in new[0]:
            new[0].remove(e)
    sum = 0
    for c in new[0]:
        for ch in c:
            sum+=get_value(ch)
    if len(tiles)>=7:
      sum+=50
    return sum
def best_play(tiles,board):
    ans = []
    for i in range(15):
        for j in range(15):
            for k in range(2):
                score = play(i,j,k,tiles,board)
                ans.append([-score,i,j,k])
    ans = sorted(ans)
    if ans[0][0] == 1:
        return [-1,-1,-1,-1]
    else:
        ans[0][0] = ans[0][0]*(-1)
        return ans[0]