input: Write a function to extract the non-vowel words in a sentence. The function should split the sentence into words and check each word to see if it contains any vowel characters. If a word does not contain any vowel characters, it should be added to the list of non-vowel words. The function should return the list of non-vowel words. The vowels to be checked include 'a', 'e', 'i', 'o', 'u' and their uppercase counterparts.
  assert extract_words("This machine learning project is challenging.") == ['Ths', 'mchn', 'lrnng', 'prjct', 's', 'chllngng.']
  assert extract_words("Apple ANd OrAngE Are ALRIGHT capitalizabilities when talking robust except terrible taste have hatred opposite lovers.") == ['nd', 'r', 'Rght', 'cptlzblts', 'whn', 'tlkng', 'rbst', 'xcpct', 'trrbl', 'tst', 'hv', 'hdrsht', 'pptst', 'lvrs.']
  assert extract_words("My concept is now launching an ambitious track find intellect civil less comprehend bouncy minimal grit soft humble in early eve temp forward dull without belief more worth openness back earnest vigorous harsh wooden line give mild hesitate grip subtle entire easy gently curious provide solid flex capital quick dlbts dbrown fmve info massss later diverse earnest fetch feel cdve trust csdge brave vldph ftn wrng cbusy frezr kmnl vrbate lotpd slim chair vnsnt ldgl someone mnth lvments cerly scld cflz rcacc rsk nrt nrqus hurry cold gsts gmxt sbdbl ends omth blkch xtr bool rare scld bx ring himt rvrs nrx never hrp tsnt urvve rxln tech really flght msnd prcds reach perfct cvtclg debate glass estln grab loss wndrs smll mere endbd leap stll so paint twdhs vt dlr unny finxy mes smile se edge travel finall those like feel und hlg dfnvt lvlar ckv need stepts lnk unfrm thvh blod split nbed march tenth secure neoper prudent pul grwth ins teach.") == ['ny', 'ccpt', 's', 'n', 'lncng', 'n', 'bmsh', 'trck', 'nd', 'ntlct', 'cvl', 'ls', 'cmprhnd', 'bnc', 'mnml', 'grt', 'sft', 'hmpl', 'n', 'rly', 'vv', 'tmp', 'frwd', 'dl', 'wtht', 'blf', 'mr', 'wrth', 'nwndnss', 'bck', 'rns', 'vgrs', 'hrsh', 'wddn', 'ln', 'gv', 'mld', 'hstt', 'grp', 'sbtl', 'ntr', 'zy', 'gnly', 'cvrs', 'prvd', 'sld', 'flx', 'cptl', 'qck', 'dblts', 'dbrown', 'fmve', 'nf', 'mssss', 'ltr', 'dvsr', 'rnst', 'fch', 'fl', 'cvd', 'trst', 'csdge', 'brv', 'vldph', 'ftn', 'wrng', 'cbusy', 'frzr', 'kmnl', 'vrbate', 'ltpd', 'slm', 'chr', 'vnsnt', 'ldgl', 'smn', 'mnth', 'lvmnts', 'crly', 'scld', 'cflz', 'rcc', 'rsk', 'nrt', 'nrqus', 'hrry', 'cld', 'gts', 'gmxt', 'sbdl', 'nds', 'mt', 'blch', 'xtr', 'bl', 'rr', 'scld', 'bx', 'rng', 'hmt', 'rvrs', 'nrx', 'nvr', 'hrp', 'tsnt', 'rvve', 'xln', 'tch', 'rly', 'flght', 'msnd', 'prcds', 'rch', 'prfct', 'cvtclg', 'dbt', 'gls', 'stln', 'grb', 'ls', 'wnrs', 'smll', 'mr', 'ndbd', 'lp', 'stll', 'pnt', 'twdhs', 'vt', 'dlr', 'nny', 'fnxy', 'ms', 'smll', 's', 'dg', 'trvl', 'fnnl', 'ths', 'lk', 'fl', 'nd', 'hlg', 'dfnvt', 'vlar', 'ckv', 'nd', 'stpts', 'lnk', 'nfrm', 'thvh', 'blod', 'splt', 'n', 'mrc', 'nth', 'scr', 'nprnt', 'prdnt', 'pl', 'grwth', 'ns', 'tch']
output: def extract_words(sentence):
      vowels = set('aeiouAEIOU')
      non_vowel_words = []
      for word in sentence.split():
          if not any(char in vowels for char in word):
              non_vowel_words.append(word)
      return non_vowel_words