ua-dev-front / crossword-master

Crossword generator & solver
https://crossword-master.org
MIT License
1 stars 2 forks source link

Помилка 500 при спробі згенерувати кросворд певної форми #154

Closed danmysak closed 1 year ago

danmysak commented 1 year ago
image
[crossword-master-backend] [2022-12-04 09:39:43] [2022-12-04 09:39:43,475] ERROR in app: Exception on /generate [POST]
[crossword-master-backend] [2022-12-04 09:39:43] Traceback (most recent call last):
[crossword-master-backend] [2022-12-04 09:39:43]   File "/workspace/backend/.heroku/python/lib/python3.10/site-packages/flask/app.py", line 2077, in wsgi_app
[crossword-master-backend] [2022-12-04 09:39:43]     response = self.full_dispatch_request()
[crossword-master-backend] [2022-12-04 09:39:43]   File "/workspace/backend/.heroku/python/lib/python3.10/site-packages/flask/app.py", line 1525, in full_dispatch_request
[crossword-master-backend] [2022-12-04 09:39:43]     rv = self.handle_user_exception(e)
[crossword-master-backend] [2022-12-04 09:39:43]   File "/workspace/backend/.heroku/python/lib/python3.10/site-packages/flask_cors/extension.py", line 165, in wrapped_function
[crossword-master-backend] [2022-12-04 09:39:43]     return cors_after_request(app.make_response(f(*args, **kwargs)))
[crossword-master-backend] [2022-12-04 09:39:43]   File "/workspace/backend/.heroku/python/lib/python3.10/site-packages/flask/app.py", line 1523, in full_dispatch_request
[crossword-master-backend] [2022-12-04 09:39:43]     rv = self.dispatch_request()
[crossword-master-backend] [2022-12-04 09:39:43]   File "/workspace/backend/.heroku/python/lib/python3.10/site-packages/flask/app.py", line 1509, in dispatch_request
[crossword-master-backend] [2022-12-04 09:39:43]     return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
[crossword-master-backend] [2022-12-04 09:39:43]   File "/workspace/backend/app.py", line 75, in wrapper
[crossword-master-backend] [2022-12-04 09:39:43]     result = func(data)
[crossword-master-backend] [2022-12-04 09:39:43]   File "/workspace/backend/app.py", line 84, in generate
[crossword-master-backend] [2022-12-04 09:39:43]     answer = generate_words_and_questions(data['table'])
[crossword-master-backend] [2022-12-04 09:39:43]   File "/workspace/backend/generate.py", line 75, in generate_words_and_questions
[crossword-master-backend] [2022-12-04 09:39:43]     answers = solve(locations, load_word_answers_and_questions)
[crossword-master-backend] [2022-12-04 09:39:43]   File "/workspace/backend/backtracking.py", line 83, in solve
[crossword-master-backend] [2022-12-04 09:39:43]     answers = backtrack(locations, table, load_options)
[crossword-master-backend] [2022-12-04 09:39:43]   File "/workspace/backend/backtracking.py", line 65, in backtrack
[crossword-master-backend] [2022-12-04 09:39:43]     backtrack(
[crossword-master-backend] [2022-12-04 09:39:43]   File "/workspace/backend/backtracking.py", line 65, in backtrack
[crossword-master-backend] [2022-12-04 09:39:43]     backtrack(
[crossword-master-backend] [2022-12-04 09:39:43]   File "/workspace/backend/backtracking.py", line 65, in backtrack
[crossword-master-backend] [2022-12-04 09:39:43]     backtrack(
[crossword-master-backend] [2022-12-04 09:39:43]   [Previous line repeated 1 more time]
[crossword-master-backend] [2022-12-04 09:39:43]   File "/workspace/backend/backtracking.py", line 63, in backtrack
[crossword-master-backend] [2022-12-04 09:39:43]     update_table(possible_answer, table, direction, start_position)
[crossword-master-backend] [2022-12-04 09:39:43]   File "/workspace/backend/backtracking.py", line 13, in update_table
[crossword-master-backend] [2022-12-04 09:39:43]     table[position.row][position.column] = letter
[crossword-master-backend] [2022-12-04 09:39:43] IndexError: list index out of range
[crossword-master-backend] [2022-12-04 09:39:43] 10.244.13.7 - - [04/Dec/2022:09:39:43 +0000] "POST /generate HTTP/1.1" 500 265 "https://crossword-master.org/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
[crossword-master-backend] [2022-12-04 09:39:43] 10.244.13.7 - - [04/Dec/2022:09:39:43 +0000] "OPTIONS /generate HTTP/1.1" 200 0 "https://crossword-master.org/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
Fybex commented 1 year ago

Такі форми видають аналогічні помилки

image image
myroslavve commented 1 year ago

У всіх випадках помилка стається тому, що datamuse не рахує пробіли як букви. Наприклад для паттерну: "????vu" (6 букв) datamuse поверне "deja vu", що є 7 символів, але 6 букв. Тому вирішення цієї проблеми залежить від #156

danmysak commented 1 year ago

У такому випадку я б додатково пропонував здійснювати внутрішню перевірку на відповідність поверненого результату заданому патерну: хто знає, які ще несподіванки у матчингу підготував нам Datamuse.