3 Commits

  1. 7
      .gitignore
  2. 3
      MANIFEST.in
  3. 20
      setup.py
  4. 32
      src/c_fits.c
  5. 6
      src/fits.pyx
  6. 0
      wordscape/__init__.py
  7. 17
      wordscape/candidate_cache.py
  8. 0
      wordscape/dictionary.py
  9. 0
      wordscape/extra_words.txt
  10. 8
      wordscape/main.py
  11. 0
      wordscape/word_remove_dialog.py

7
.gitignore

@ -1,2 +1,9 @@
__pycache__
.#*
/build/*
*.html
*.pyd
/fits.c
/dist/*
/src/fits.c
/wordscape_cheats.egg-info/*

3
MANIFEST.in

@ -0,0 +1,3 @@
include wordscape/extra_words.txt
include requirements.txt
recursive-include src *

20
setup.py

@ -0,0 +1,20 @@
from setuptools import setup, find_packages
from setuptools.extension import Extension
from Cython.Build import cythonize
with open("requirements.txt") as file:
REQUIREMENTS = file.read().rstrip().split("\n")
extensions = [Extension("wordscape.fits", ["src/fits.pyx"])]
setup(
author="Raphael Roberts",
author_email="raphael.robets48@gmail.com",
description="Cheat for wordscape and wordscape like games",
entry_points={"console_scripts": ["wordscape=wordscape.main:main"]},
ext_modules=cythonize(extensions),
install_requires=REQUIREMENTS,
name="wordscape_cheats",
packages=find_packages(),
version="1.0",
)

32
src/c_fits.c

@ -0,0 +1,32 @@
int _fits(char * bottom, int len_bottom, char * top, int len_top) {
int bottom_letters[26] = {
0
};
int top_letters[26] = {
0
};
int letter_val;
int i;
for (i = 0; i < len_bottom; i++) {
letter_val = bottom[i] - 97;
if (0 <= letter_val && letter_val <= 25) {
bottom_letters[letter_val] += 1;
} else {
return 0;
}
}
for (i = 0; i < len_top; i++) {
letter_val = top[i] - 97;
if (0 <= letter_val && letter_val <= 25) {
top_letters[letter_val] += 1;
} else {
return 0;
}
}
for (i = 0; i < 26; i++) {
if (bottom_letters[i] < top_letters[i]) {
return 0;
}
}
return 1;
}

6
src/fits.pyx

@ -0,0 +1,6 @@
cdef extern from "c_fits.c":
int _fits(char* bottom, int len_bottom, char* top, int len_top)
cpdef bint fits(str bottom, str top):
return _fits(bottom.encode(), len(bottom), top.encode(), len(top)) == 1

0
wordscape/__init__.py

candidate_cache.py → wordscape/candidate_cache.py

dictionary.py → wordscape/dictionary.py

extra_words.txt → wordscape/extra_words.txt

main.py → wordscape/main.py

word_remove_dialog.py → wordscape/word_remove_dialog.py

Loading…
Cancel
Save