Skip to content

Instantly share code, notes, and snippets.

@nicolasembleton
Forked from EpiphanyMachine/Anagrams Solution
Created November 24, 2013 11:29
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save nicolasembleton/7626159 to your computer and use it in GitHub Desktop.
Save nicolasembleton/7626159 to your computer and use it in GitHub Desktop.
var dict = require('dictionary');
var solveJumble = function (string) {
'use strict';
var originalBag = string.split('');
var anagrams = [];
var findAnagrams = function (bag, word) {
var tempBag, tempWord;
for (var i = 0; i < bag.length; i++) {
tempBag = bag.slice();
tempWord = word.slice();
tempWord.push(tempBag[i]);
tempBag.splice(i, 1);
var tempWordString = tempWord.join('');
if (dict[tempWordString.toLowerCase()]) {
anagrams.push(tempWordString);
}
findAnagrams(tempBag, tempWord);
}
};
findAnagrams(originalBag, []);
return anagrams;
};
var t = Date.now();
var result = solveJumble('asdfghjkl');
console.log(Date.now() - t, result);
// thanks to: Joshua, Nick, https://github.com/kentwilliam
// Team: Joshua, Nick, Kent William
//
// Usage:
// ~ node algo.js <search-word>
console.time('Run time');
function getPrime (word) {
var chars = word.split(''),
i, l, number = 1;
for (i = 0, l = chars.length; i < l; i++) {
number *= primes[chars[i]];
}
return number;
}
var word = process.argv[2].toLowerCase();
var primes = { 'a': 2, 'b': 3, 'c': 5, 'd': 7, 'e': 11, 'f': 13, 'g': 17, 'h': 19, 'i': 23, 'j': 29, 'k': 31, 'l': 37, 'm': 41, 'n': 43, 'o': 47, 'p': 53, 'q': 59, 'r': 61, 's': 67, 't': 71, 'u': 73, 'v': 79, 'w': 83, 'x': 89, 'y': 97, 'z': 101 };
var searchPrime = getPrime(word);
fs = require('fs');
fs.readFile('./dict.json', 'utf8', function (err, dictionary) {
var dictionary = JSON.parse(dictionary),
hits = [];
for (word in dictionary) {
if (searchPrime % getPrime(word) === 0) {
hits.push(word);
}
}
console.timeEnd('Run time');
console.log('hits', 'Found ' + hits.length + ' solutions.', hits);
});
{
"a": true,
"aardvark": true,
"aback": true,
"abacus": true,
"abaft": true,
"abalone": true,
"abandon": true,
"abandoned": true,
"abase": true,
"abash": true,
"abate": true,
"abatement": true,
"abatis": true,
"abattoir": true,
"abbacy": true,
"abbe": true,
"abbess": true,
"abbey": true,
"abbot": true,
"abbreviate": true,
"abbreviation": true,
"abdicate": true,
"abdomen": true,
"abduct": true,
"abeam": true,
"abecedarian": true,
"abed": true,
"aberration": true,
"abet": true,
"abeyance": true,
"abhor": true,
"abhorrent": true,
"abide": true,
"ability": true,
"abject": true,
"abjure": true,
"ablate": true,
"ablative": true,
"ablaze": true,
"able": true,
"abloom": true,
"ablution": true,
"abnegate": true,
"abnormal": true,
"aboard": true,
"abode": true,
"abolish": true,
"abolitionist": true,
"abominable": true,
"abominate": true,
"abomination": true,
"aboriginal": true,
"aborigine": true,
"aborning": true,
"abortion": true,
"abortionist": true,
"abound": true,
"about": true,
"above": true,
"aboveboard": true,
"abracadabra": true,
"abrade": true,
"abrasive": true,
"abreast": true,
"abridge": true,
"abroad": true,
"abrogate": true,
"abrupt": true,
"abscess": true,
"abscound": true,
"absence": true,
"absent": true,
"absentee": true,
"absenteeism": true,
"absentminded": true,
"absinthe": true,
"absolute": true,
"absolution": true,
"absolutism": true,
"absolve": true,
"absorb": true,
"absorbent": true,
"absorption": true,
"abstain": true,
"abstemious": true,
"abstinence": true,
"abstract": true,
"abstraction": true,
"abstruse": true,
"absurd": true,
"abundant": true,
"abuse": true,
"abut": true,
"abutment": true,
"abuttals": true,
"abysm": true,
"abysmal": true,
"abyss": true,
"acacia": true,
"academe": true,
"academic": true,
"academician": true,
"academicism": true,
"academy": true,
"acanthus": true,
"accede": true,
"accelerando": true,
"accelerate": true,
"accent": true,
"accentuate": true,
"accept": true,
"acceptance": true,
"acceptation": true,
"access": true,
"accessible": true,
"accession": true,
"accessory": true,
"accidence": true,
"accident": true,
"accidental": true,
"acclaim": true,
"acclamation": true,
"acclimate": true,
"acclimatize": true,
"acclivity": true,
"accolade": true,
"accommodate": true,
"accommodating": true,
"accommodation": true,
"accompaniment": true,
"accompany": true,
"accomplice": true,
"accomplish": true,
"accomplished": true,
"accomplishment": true,
"accord": true,
"accordance": true,
"accordingly": true,
"accordion": true,
"accost": true,
"account": true,
"accountable": true,
"accountant": true,
"accounting": true,
"accouter": true,
"accredit": true,
"accretion": true,
"accrue": true,
"acculturation": true,
"accumulate": true,
"accuracy": true,
"accurate": true,
"accursed": true,
"accusal": true,
"accusative": true,
"accuse": true,
"accustom": true,
"accustomed": true,
"ace": true,
"acerbity": true,
"acetanilide": true,
"acetate": true,
"acetic": true,
"acetone": true,
"acetylene": true,
"ache": true,
"achieve": true,
"achromatic": true,
"acid": true,
"acidosis": true,
"acidulous": true,
"acknowledge": true,
"acme": true,
"acne": true,
"acolyte": true,
"aconite": true,
"acorn": true,
"acoustic": true,
"acoustics": true,
"acquaint": true,
"acquaintance": true,
"acquiesce": true,
"acquire": true,
"acquirement": true,
"acquisition": true,
"acquisitive": true,
"acquit": true,
"acre": true,
"acreage": true,
"acrid": true,
"acrimony": true,
"acrobat": true,
"acrobatics": true,
"acronym": true,
"acrophobia": true,
"acropolis": true,
"across": true,
"acrostic": true,
"act": true,
"acting": true,
"actinic": true,
"actinium": true,
"action": true,
"actionable": true,
"activate": true,
"active": true,
"activity": true,
"actor": true,
"actual": true,
"actuary": true,
"actuate": true,
"acuity": true,
"acumen": true,
"acute": true,
"ad": true,
"adage": true,
"adagio": true,
"adamant": true,
"adapt": true,
"add": true,
"addendum": true,
"adder": true,
"addict": true,
"addiction": true,
"addition": true,
"additional": true,
"addle": true,
"address": true,
"addressee": true,
"adduce": true,
"adenoid": true,
"adept": true,
"adequate": true,
"adhere": true,
"adhesion": true,
"adhesive": true,
"adieu": true,
"adios": true,
"adipose": true,
"adjacent": true,
"adjective": true,
"adjoin": true,
"adjoining": true,
"adjourn": true,
"adjudge": true,
"adjudicate": true,
"adjunct": true,
"adjure": true,
"adjust": true,
"adjutant": true,
"adjuvant": true,
"adman": true,
"administer": true,
"administration": true,
"administrator": true,
"admirable": true,
"admiral": true,
"admiralty": true,
"admire": true,
"admissible": true,
"admission": true,
"admit": true,
"admittance": true,
"admix": true,
"admixture": true,
"admonish": true,
"ado": true,
"adobe": true,
"adolescence": true,
"adopt": true,
"adoptive": true,
"adorable": true,
"adore": true,
"adorn": true,
"adrenal": true,
"adrift": true,
"adroit": true,
"adsorb": true,
"adulation": true,
"adult": true,
"adulterant": true,
"adulterate": true,
"adultery": true,
"adulthood": true,
"adumbrate": true,
"advance": true,
"advantage": true,
"advent": true,
"adventitious": true,
"adventure": true,
"adventurer": true,
"adventuresome": true,
"adverb": true,
"adversary": true,
"adversative": true,
"adverse": true,
"adversity": true,
"advert": true,
"advertise": true,
"advertisement": true,
"advertising": true,
"advice": true,
"advisable": true,
"advise": true,
"advisement": true,
"advisory": true,
"advocate": true,
"adz": true,
"aegis": true,
"aeon": true,
"aerate": true,
"aerial": true,
"aerialist": true,
"aerie": true,
"aero": true,
"aerobic": true,
"aerodrome": true,
"aeronaut": true,
"aeronautics": true,
"aeroplane": true,
"aerosol": true,
"aerospace": true,
"aery": true,
"aesthete": true,
"aesthetic": true,
"aesthetics": true,
"aestivate": true,
"afar": true,
"affable": true,
"affair": true,
"affect": true,
"affectation": true,
"affected": true,
"affecting": true,
"affection": true,
"afferent": true,
"affiance": true,
"affidavit": true,
"affiliate": true,
"affinity": true,
"affirm": true,
"affirmative": true,
"affix": true,
"afflatus": true,
"afflict": true,
"afflictive": true,
"affluence": true,
"afford": true,
"affray": true,
"affright": true,
"affront": true,
"afghan": true,
"afghani": true,
"aficionado": true,
"afield": true,
"afire": true,
"aflame": true,
"afloat": true,
"aflutter": true,
"afoot": true,
"aforementioned": true,
"aforesaid": true,
"aforethought": true,
"afoul": true,
"afraid": true,
"afresh": true,
"aft": true,
"after": true,
"afterbirth": true,
"aftercare": true,
"afterdeck": true,
"aftereffect": true,
"afterglow": true,
"afterlife": true,
"aftermath": true,
"afternoon": true,
"aftertaste": true,
"afterthought": true,
"afterward": true,
"again": true,
"against": true,
"agape": true,
"agate": true,
"agave": true,
"age": true,
"aged": true,
"ageless": true,
"agency": true,
"agenda": true,
"agent": true,
"agglomerate": true,
"agglutinate": true,
"aggrandize": true,
"aggravate": true,
"aggregate": true,
"aggregation": true,
"aggression": true,
"aggrieve": true,
"aghast": true,
"agile": true,
"agitate": true,
"agleam": true,
"aglitter": true,
"aglow": true,
"agnostic": true,
"ago": true,
"agog": true,
"agonize": true,
"agony": true,
"agora": true,
"agoraphobia": true,
"agrarian": true,
"agree": true,
"agreeable": true,
"agreement": true,
"agriculture": true,
"aground": true,
"ague": true,
"ahead": true,
"ahoy": true,
"aid": true,
"aide": true,
"aigrette": true,
"ail": true,
"aileron": true,
"ailment": true,
"aim": true,
"aimless": true,
"air": true,
"airborne": true,
"airbrush": true,
"aircraft": true,
"airdrome": true,
"airdrop": true,
"airfield": true,
"airfoil": true,
"airlift": true,
"airliner": true,
"airmail": true,
"airman": true,
"airplane": true,
"airport": true,
"airpost": true,
"airship": true,
"airsick": true,
"airspeed": true,
"airstrip": true,
"airtight": true,
"airwave": true,
"airway": true,
"airworthy": true,
"airy": true,
"aisle": true,
"ajar": true,
"akimbo": true,
"akin": true,
"alabaster": true,
"alacrity": true,
"alarm": true,
"alarmist": true,
"albacore": true,
"albatross": true,
"albeit": true,
"albino": true,
"album": true,
"albumen": true,
"albumin": true,
"albuminous": true,
"alcalde": true,
"alcazar": true,
"alchemy": true,
"alcohol": true,
"alcoholic": true,
"alcoholism": true,
"alcove": true,
"alder": true,
"alderman": true,
"ale": true,
"alee": true,
"alehouse": true,
"alembic": true,
"alert": true,
"alexandrine": true,
"alfalfa": true,
"alfresco": true,
"alga": true,
"algebra": true,
"alias": true,
"alibi": true,
"alien": true,
"alienable": true,
"alienate": true,
"alienist": true,
"alight": true,
"align": true,
"alike": true,
"aliment": true,
"alimentary": true,
"alimony": true,
"alive": true,
"alkali": true,
"alkalinize": true,
"alkaloid": true,
"alkyd": true,
"all": true,
"allay": true,
"allege": true,
"allegiance": true,
"allegory": true,
"allegro": true,
"alleluia": true,
"allergen": true,
"allergist": true,
"allergy": true,
"alleviate": true,
"alley": true,
"alleyway": true,
"alliance": true,
"allied": true,
"alligator": true,
"alliterate": true,
"alliteration": true,
"allocate": true,
"allot": true,
"allow": true,
"allowance": true,
"alloy": true,
"allspice": true,
"allude": true,
"allure": true,
"alluvium": true,
"ally": true,
"almanac": true,
"almighty": true,
"almond": true,
"almoner": true,
"almost": true,
"alms": true,
"almshouse": true,
"aloe": true,
"aloft": true,
"aloha": true,
"alone": true,
"along": true,
"alongshore": true,
"alongside": true,
"aloof": true,
"aloud": true,
"alp": true,
"alpaca": true,
"alpenhorn": true,
"alpenstock": true,
"alphabet": true,
"alphabetic": true,
"alphabetize": true,
"already": true,
"also": true,
"altar": true,
"altarpiece": true,
"alter": true,
"altercation": true,
"alternate": true,
"alternative": true,
"although": true,
"altimeter": true,
"altitude": true,
"alto": true,
"altogether": true,
"altruism": true,
"alum": true,
"alumina": true,
"aluminium": true,
"aluminum": true,
"alumna": true,
"alumnus": true,
"always": true,
"am": true,
"amah": true,
"amain": true,
"amalgam": true,
"amalgamate": true,
"amanuensis": true,
"amaranth": true,
"amaryllis": true,
"amass": true,
"amateur": true,
"amatory": true,
"amaze": true,
"amazon": true,
"ambassador": true,
"amber": true,
"ambergris": true,
"ambidextrous": true,
"ambience": true,
"ambient": true,
"ambiguous": true,
"ambition": true,
"ambitious": true,
"ambivalence": true,
"amble": true,
"ambrosia": true,
"ambulance": true,
"ambulant": true,
"ambulatory": true,
"ambuscade": true,
"ambush": true,
"ameba": true,
"ameliorate": true,
"amen": true,
"amenable": true,
"amend": true,
"amendment": true,
"amends": true,
"amenity": true,
"amerce": true,
"americium": true,
"amethyst": true,
"amiable": true,
"amicable": true,
"amid": true,
"amidships": true,
"amiss": true,
"amity": true,
"ammeter": true,
"ammo": true,
"ammonia": true,
"ammonite": true,
"ammunition": true,
"amnesia": true,
"amnesty": true,
"amoeba": true,
"amok": true,
"among": true,
"amontillado": true,
"amoral": true,
"amorous": true,
"amorphous": true,
"amortize": true,
"amount": true,
"amour": true,
"ampere": true,
"ampersand": true,
"amphibian": true,
"amphibious": true,
"amphitheater": true,
"amphora": true,
"ample": true,
"amplify": true,
"amplitude": true,
"ampul": true,
"amputate": true,
"amputee": true,
"amulet": true,
"amuse": true,
"an": true,
"anachronism": true,
"anaconda": true,
"anadem": true,
"anaemia": true,
"anaerobic": true,
"anaesthesia": true,
"anagram": true,
"anal": true,
"analgesia": true,
"analogous": true,
"analogue": true,
"analogy": true,
"analysis": true,
"analyze": true,
"anapest": true,
"anarchism": true,
"anarchy": true,
"anathema": true,
"anathematize": true,
"anatomize": true,
"anatomy": true,
"ancestor": true,
"ancestry": true,
"anchor": true,
"anchorage": true,
"anchorite": true,
"anchovy": true,
"ancient": true,
"ancillary": true,
"and": true,
"andante": true,
"andiron": true,
"androgen": true,
"anecdote": true,
"anemia": true,
"anemometer": true,
"anemone": true,
"anent": true,
"anesthesia": true,
"anesthetic": true,
"anew": true,
"angel": true,
"anger": true,
"angina": true,
"angle": true,
"angleworm": true,
"anglicize": true,
"anglophile": true,
"anglophobe": true,
"angora": true,
"angry": true,
"angst": true,
"anguish": true,
"anguished": true,
"angular": true,
"anhydrous": true,
"aniline": true,
"animadvert": true,
"animal": true,
"animalcule": true,
"animalism": true,
"animate": true,
"animation": true,
"animism": true,
"animosity": true,
"animus": true,
"anise": true,
"ankh": true,
"ankle": true,
"anklet": true,
"annals": true,
"anneal": true,
"annex": true,
"annihilate": true,
"anniversary": true,
"annotate": true,
"announce": true,
"announcer": true,
"annoy": true,
"annoyance": true,
"annual": true,
"annuitant": true,
"annuity": true,
"annul": true,
"annular": true,
"annunciate": true,
"annunciation": true,
"anode": true,
"anodyne": true,
"anoint": true,
"anomalous": true,
"anomaly": true,
"anon": true,
"anonymous": true,
"anopheles": true,
"another": true,
"answer": true,
"answerable": true,
"ant": true,
"antacid": true,
"antagonism": true,
"antagonist": true,
"antagonize": true,
"antarctic": true,
"ante": true,
"antebellum": true,
"antecedent": true,
"antechamber": true,
"antechoir": true,
"antedate": true,
"antediluvian": true,
"antelope": true,
"antemortem": true,
"antenatal": true,
"antenna": true,
"antepenult": true,
"anterior": true,
"anteroom": true,
"anthem": true,
"anther": true,
"anthill": true,
"anthology": true,
"anthracite": true,
"anthrax": true,
"anthropocentric": true,
"anthropoid": true,
"anthropology": true,
"anthropomorphism": true,
"anti": true,
"antibiotic": true,
"antibody": true,
"antic": true,
"antichrist": true,
"anticipate": true,
"anticlimax": true,
"antidote": true,
"antifreeze": true,
"antihistamine": true,
"antiknock": true,
"antilogarithm": true,
"antimacassar": true,
"antimony": true,
"antipasto": true,
"antipathy": true,
"antipersonnel": true,
"antiphonal": true,
"antipodes": true,
"antiquarian": true,
"antiquary": true,
"antiquated": true,
"antique": true,
"antiquity": true,
"antiseptic": true,
"antisocial": true,
"antithesis": true,
"antitoxin": true,
"antivivisectionist": true,
"antler": true,
"antonym": true,
"antrum": true,
"anus": true,
"anvil": true,
"anxiety": true,
"anxious": true,
"any": true,
"anybody": true,
"anyhow": true,
"anymore": true,
"anyone": true,
"anyplace": true,
"anything": true,
"anyway": true,
"anywhere": true,
"anywise": true,
"aorta": true,
"apace": true,
"apanage": true,
"apart": true,
"apartheid": true,
"apartment": true,
"apathy": true,
"ape": true,
"apeak": true,
"aperitif": true,
"aperture": true,
"apex": true,
"aphasia": true,
"aphid": true,
"aphis": true,
"aphorism": true,
"aphrodisiac": true,
"apiary": true,
"apiece": true,
"aplomb": true,
"apocalypse": true,
"apocryphal": true,
"apogee": true,
"apologetic": true,
"apologia": true,
"apologize": true,
"apology": true,
"apoplexy": true,
"aport": true,
"apostasy": true,
"apostle": true,
"apostolic": true,
"apostrophe": true,
"apostrophize": true,
"apothecary": true,
"apothegm": true,
"apotheosis": true,
"appall": true,
"appanage": true,
"apparatus": true,
"apparel": true,
"apparent": true,
"apparition": true,
"appeal": true,
"appear": true,
"appearance": true,
"appease": true,
"appellant": true,
"appellate": true,
"appellation": true,
"appellee": true,
"append": true,
"appendage": true,
"appendectomy": true,
"appendicitis": true,
"appendix": true,
"appertain": true,
"appetite": true,
"appetizer": true,
"appetizing": true,
"applaud": true,
"applause": true,
"apple": true,
"applejack": true,
"appliance": true,
"applicable": true,
"applicant": true,
"application": true,
"applicator": true,
"applied": true,
"applique": true,
"apply": true,
"appoint": true,
"appointee": true,
"appointive": true,
"appointment": true,
"apportion": true,
"apposite": true,
"apposition": true,
"appositive": true,
"appraise": true,
"appreciable": true,
"appreciate": true,
"appreciative": true,
"apprehend": true,
"apprehensive": true,
"apprentice": true,
"apprise": true,
"approach": true,
"approbation": true,
"appropriate": true,
"appropriation": true,
"approval": true,
"approve": true,
"approximate": true,
"appurtenance": true,
"apricot": true,
"apron": true,
"apropos": true,
"apse": true,
"apt": true,
"aptitude": true,
"aquacade": true,
"aqualung": true,
"aquamarine": true,
"aquaplane": true,
"aquarium": true,
"aquatic": true,
"aqueduct": true,
"aqueous": true,
"aquiline": true,
"arabesque": true,
"arable": true,
"arbalest": true,
"arbiter": true,
"arbitrament": true,
"arbitrary": true,
"arbitrate": true,
"arbitrator": true,
"arbor": true,
"arboreal": true,
"arboretum": true,
"arborvitae": true,
"arbutus": true,
"arc": true,
"arcade": true,
"arcane": true,
"arch": true,
"archaeology": true,
"archaic": true,
"archangel": true,
"archbishop": true,
"archdeacon": true,
"archdiocese": true,
"archduke": true,
"archenemy": true,
"archery": true,
"archetype": true,
"archfiend": true,
"archiepiscopal": true,
"archimandrite": true,
"archipelago": true,
"architect": true,
"architectonic": true,
"architectonics": true,
"architecture": true,
"architrave": true,
"archive": true,
"archivist": true,
"archon": true,
"archway": true,
"arctic": true,
"ardent": true,
"ardor": true,
"arduous": true,
"are": true,
"area": true,
"areaway": true,
"arena": true,
"argent": true,
"argon": true,
"argosy": true,
"argot": true,
"arguable": true,
"argue": true,
"argument": true,
"argumentation": true,
"argumentative": true,
"argyle": true,
"aria": true,
"arid": true,
"aright": true,
"arise": true,
"aristocracy": true,
"arithmetic": true,
"ark": true,
"arm": true,
"armada": true,
"armadillo": true,
"armament": true,
"armature": true,
"armchair": true,
"armhole": true,
"armistice": true,
"armlet": true,
"armor": true,
"armorer": true,
"armorial": true,
"armory": true,
"armpit": true,
"armrest": true,
"army": true,
"arnica": true,
"aroma": true,
"around": true,
"arouse": true,
"arpeggio": true,
"arraign": true,
"arrange": true,
"arrant": true,
"arras": true,
"array": true,
"arrears": true,
"arrest": true,
"arrival": true,
"arrive": true,
"arrogant": true,
"arrogate": true,
"arrow": true,
"arrowhead": true,
"arrowroot": true,
"arroyo": true,
"arsenal": true,
"arsenic": true,
"arson": true,
"art": true,
"arterial": true,
"arteriosclerosis": true,
"artery": true,
"artful": true,
"arthritis": true,
"arthropod": true,
"artichoke": true,
"article": true,
"articular": true,
"articulate": true,
"artifact": true,
"artifice": true,
"artificer": true,
"artificial": true,
"artillery": true,
"artisan": true,
"artist": true,
"artiste": true,
"artistic": true,
"artistry": true,
"artless": true,
"arty": true,
"arum": true,
"as": true,
"asafetida": true,
"asbestos": true,
"ascend": true,
"ascendancy": true,
"ascendant": true,
"ascension": true,
"ascent": true,
"ascertain": true,
"ascetic": true,
"ascot": true,
"ascribe": true,
"aseptic": true,
"asexual": true,
"ash": true,
"ashamed": true,
"ashen": true,
"ashlar": true,
"ashore": true,
"ashy": true,
"aside": true,
"asinine": true,
"ask": true,
"askance": true,
"askew": true,
"aslant": true,
"asleep": true,
"asp": true,
"asparagus": true,
"aspect": true,
"aspen": true,
"asperity": true,
"aspersion": true,
"asphalt": true,
"asphodel": true,
"asphyxiate": true,
"aspic": true,
"aspirant": true,
"aspiration": true,
"aspire": true,
"aspirin": true,
"ass": true,
"assail": true,
"assassin": true,
"assassinate": true,
"assault": true,
"assay": true,
"assemblage": true,
"assemble": true,
"assembly": true,
"assemblyman": true,
"assent": true,
"assert": true,
"assertion": true,
"assess": true,
"asset": true,
"asseverate": true,
"assiduous": true,
"assign": true,
"assignation": true,
"assignment": true,
"assimilate": true,
"assist": true,
"assistant": true,
"assize": true,
"associate": true,
"association": true,
"associative": true,
"assonance": true,
"assort": true,
"assorted": true,
"assortment": true,
"assuage": true,
"assume": true,
"assumption": true,
"assurance": true,
"assure": true,
"assured": true,
"astatine": true,
"aster": true,
"asterisk": true,
"astern": true,
"asteroid": true,
"asthma": true,
"astigmatism": true,
"astir": true,
"astonish": true,
"astound": true,
"astraddle": true,
"astrakhan": true,
"astral": true,
"astray": true,
"astride": true,
"astrolabe": true,
"astrology": true,
"astronaut": true,
"astronomical": true,
"astronomy": true,
"astrophysics": true,
"astute": true,
"asunder": true,
"asylum": true,
"asymmetric": true,
"at": true,
"atavism": true,
"ate": true,
"atelier": true,
"atheist": true,
"athenaeum": true,
"athirst": true,
"athlete": true,
"athletic": true,
"athletics": true,
"athwart": true,
"atilt": true,
"atlas": true,
"atmosphere": true,
"atoll": true,
"atom": true,
"atomic": true,
"atomics": true,
"atomize": true,
"atomizer": true,
"atonal": true,
"atone": true,
"atonement": true,
"atop": true,
"atrium": true,
"atrocious": true,
"atrocity": true,
"atrophy": true,
"atropine": true,
"attach": true,
"attache": true,
"attachment": true,
"attack": true,
"attain": true,
"attainder": true,
"attainment": true,
"attaint": true,
"attar": true,
"attempt": true,
"attend": true,
"attendance": true,
"attendant": true,
"attention": true,
"attenuate": true,
"attest": true,
"attic": true,
"attire": true,
"attitude": true,
"attitudinize": true,
"attorney": true,
"attract": true,
"attraction": true,
"attribute": true,
"attributive": true,
"attrition": true,
"attune": true,
"atypical": true,
"auburn": true,
"auction": true,
"auctioneer": true,
"auctorial": true,
"audacious": true,
"audible": true,
"audience": true,
"audio": true,
"audiophile": true,
"audiovisual": true,
"audit": true,
"audition": true,
"auditor": true,
"auditorium": true,
"auditory": true,
"auger": true,
"aught": true,
"augment": true,
"augur": true,
"augury": true,
"august": true,
"auk": true,
"auld": true,
"aunt": true,
"aura": true,
"aural": true,
"aurar": true,
"aureate": true,
"aureole": true,
"auricle": true,
"auricular": true,
"auriferous": true,
"aurora": true,
"auspice": true,
"auspicious": true,
"austere": true,
"austral": true,
"authentic": true,
"authenticate": true,
"author": true,
"authoritarian": true,
"authoritative": true,
"authority": true,
"authorize": true,
"authorship": true,
"auto": true,
"autobahn": true,
"autobiography": true,
"autochthonous": true,
"autocracy": true,
"autograph": true,
"autointoxication": true,
"automate": true,
"automatic": true,
"automation": true,
"automatize": true,
"automaton": true,
"automobile": true,
"automotive": true,
"autonomous": true,
"autopsy": true,
"autumn": true,
"auxiliary": true,
"auxin": true,
"avail": true,
"available": true,
"avalanche": true,
"avarice": true,
"avast": true,
"avatar": true,
"avaunt": true,
"ave": true,
"avenge": true,
"avenue": true,
"aver": true,
"average": true,
"averment": true,
"averse": true,
"aversion": true,
"avert": true,
"avian": true,
"aviary": true,
"aviation": true,
"aviatrix": true,
"avid": true,
"avionics": true,
"avitaminosis": true,
"avocado": true,
"avocation": true,
"avoid": true,
"avoirdupois": true,
"avouch": true,
"avow": true,
"avuncular": true,
"await": true,
"awake": true,
"awaken": true,
"award": true,
"aware": true,
"awash": true,
"away": true,
"awe": true,
"aweary": true,
"aweigh": true,
"awesome": true,
"awestricken": true,
"awful": true,
"awfully": true,
"awhile": true,
"awhirl": true,
"awkward": true,
"awl": true,
"awn": true,
"awning": true,
"awry": true,
"ax": true,
"axial": true,
"axiom": true,
"axis": true,
"axle": true,
"axletree": true,
"ayah": true,
"aye": true,
"azalea": true,
"azimuth": true,
"azure": true,
"b": true,
"babble": true,
"babe": true,
"babel": true,
"baboon": true,
"babushka": true,
"baby": true,
"baccalaureate": true,
"bacchanalia": true,
"bachelor": true,
"bacillus": true,
"back": true,
"backache": true,
"backbite": true,
"backboard": true,
"backbone": true,
"backdrop": true,
"backer": true,
"backfield": true,
"backfire": true,
"backgammon": true,
"background": true,
"backhand": true,
"backing": true,
"backlog": true,
"backrest": true,
"backside": true,
"backslap": true,
"backslide": true,
"backspin": true,
"backstop": true,
"backstretch": true,
"backstroke": true,
"backtrack": true,
"backward": true,
"backwash": true,
"backwoods": true,
"bacon": true,
"bacteriology": true,
"bacterium": true,
"bad": true,
"bade": true,
"badge": true,
"badger": true,
"badinage": true,
"badminton": true,
"baffle": true,
"bag": true,
"bagasse": true,
"bagatelle": true,
"bagel": true,
"baggage": true,
"baggy": true,
"bagnio": true,
"bagpipe": true,
"baht": true,
"bail": true,
"bailiff": true,
"bailiwick": true,
"bailsman": true,
"bairn": true,
"bait": true,
"baize": true,
"bake": true,
"bakery": true,
"baksheesh": true,
"balance": true,
"balboa": true,
"balbriggan": true,
"balcony": true,
"bald": true,
"baldachin": true,
"balderdash": true,
"baldric": true,
"bale": true,
"baleen": true,
"baleful": true,
"balk": true,
"balky": true,
"ball": true,
"ballad": true,
"ballast": true,
"ballcarrier": true,
"ballerina": true,
"ballet": true,
"ballistic": true,
"ballistics": true,
"balloon": true,
"ballot": true,
"ballroom": true,
"ballyhoo": true,
"balm": true,
"balmy": true,
"balsa": true,
"balsam": true,
"baluster": true,
"balustrade": true,
"bamboo": true,
"bamboozle": true,
"ban": true,
"banal": true,
"banana": true,
"band": true,
"bandage": true,
"bandanna": true,
"bandbox": true,
"banderole": true,
"bandit": true,
"bandolier": true,
"bandstand": true,
"bandwagon": true,
"bandy": true,
"bane": true,
"bang": true,
"bangle": true,
"banish": true,
"banister": true,
"banjo": true,
"bank": true,
"bankbook": true,
"bankroll": true,
"bankrupt": true,
"banner": true,
"bannock": true,
"banns": true,
"banquet": true,
"banquette": true,
"banshee": true,
"bantam": true,
"banter": true,
"bantling": true,
"banyan": true,
"baobab": true,
"baptism": true,
"baptistery": true,
"baptize": true,
"bar": true,
"barb": true,
"barbarian": true,
"barbaric": true,
"barbarism": true,
"barbarous": true,
"barbecue": true,
"barbell": true,
"barber": true,
"barberry": true,
"barbican": true,
"barbiturate": true,
"barcarole": true,
"bard": true,
"bare": true,
"bareback": true,
"barefaced": true,
"barefoot": true,
"bareheaded": true,
"barely": true,
"bargain": true,
"barge": true,
"baritone": true,
"barium": true,
"bark": true,
"barkeeper": true,
"barker": true,
"barley": true,
"barn": true,
"barnacle": true,
"barnstorm": true,
"barnyard": true,
"barometer": true,
"baron": true,
"baronage": true,
"baroness": true,
"baronet": true,
"baroque": true,
"barouche": true,
"barracks": true,
"barracuda": true,
"barrage": true,
"barratry": true,
"barred": true,
"barrel": true,
"barren": true,
"barrette": true,
"barricade": true,
"barrier": true,
"barrister": true,
"barroom": true,
"barrow": true,
"bartender": true,
"barter": true,
"basal": true,
"basalt": true,
"base": true,
"baseball": true,
"baseboard": true,
"baseless": true,
"basement": true,
"bash": true,
"bashful": true,
"basic": true,
"basil": true,
"basilica": true,
"basilisk": true,
"basin": true,
"basis": true,
"bask": true,
"basket": true,
"basketball": true,
"bass": true,
"bassinet": true,
"basso": true,
"bassoon": true,
"basswood": true,
"bast": true,
"bastard": true,
"baste": true,
"bastinado": true,
"bastion": true,
"bat": true,
"batch": true,
"bate": true,
"bateau": true,
"bath": true,
"bathe": true,
"bathhouse": true,
"bathos": true,
"bathrobe": true,
"bathroom": true,
"bathtub": true,
"batiste": true,
"batman": true,
"baton": true,
"batrachian": true,
"batsman": true,
"battalion": true,
"batten": true,
"batter": true,
"battery": true,
"batting": true,
"battle": true,
"battledore": true,
"battlefield": true,
"battlement": true,
"battleship": true,
"bauble": true,
"bauxite": true,
"bawdy": true,
"bawl": true,
"bay": true,
"bayberry": true,
"bayonet": true,
"bayou": true,
"bazaar": true,
"bazooka": true,
"be": true,
"beach": true,
"beachcomber": true,
"beachhead": true,
"beacon": true,
"bead": true,
"beadle": true,
"beagle": true,
"beak": true,
"beaker": true,
"beam": true,
"bean": true,
"beanie": true,
"bear": true,
"beard": true,
"bearing": true,
"bearskin": true,
"beast": true,
"beat": true,
"beatific": true,
"beatify": true,
"beatitude": true,
"beatnik": true,
"beau": true,
"beauteous": true,
"beautician": true,
"beautiful": true,
"beautify": true,
"beauty": true,
"beaver": true,
"becalm": true,
"because": true,
"beck": true,
"beckon": true,
"becloud": true,
"become": true,
"becoming": true,
"bed": true,
"bedaub": true,
"bedazzle": true,
"bedbug": true,
"bedclothes": true,
"bedding": true,
"bedeck": true,
"bedevil": true,
"bedew": true,
"bedfellow": true,
"bedizen": true,
"bedlam": true,
"bedouin": true,
"bedraggled": true,
"bedridden": true,
"bedrock": true,
"bedroll": true,
"bedroom": true,
"bedside": true,
"bedspread": true,
"bedstead": true,
"bedtime": true,
"bee": true,
"beech": true,
"beef": true,
"beefsteak": true,
"beefy": true,
"beehive": true,
"beekeeper": true,
"beeline": true,
"been": true,
"beer": true,
"beeswax": true,
"beet": true,
"beetle": true,
"befall": true,
"befit": true,
"befog": true,
"before": true,
"beforehand": true,
"befoul": true,
"befriend": true,
"befuddle": true,
"beg": true,
"beget": true,
"beggar": true,
"beggarly": true,
"beggary": true,
"begin": true,
"begone": true,
"begonia": true,
"begrime": true,
"begrudge": true,
"beguile": true,
"beguine": true,
"begum": true,
"behalf": true,
"behave": true,
"behavior": true,
"behead": true,
"behemoth": true,
"behest": true,
"behind": true,
"behindhand": true,
"behold": true,
"beholden": true,
"behoof": true,
"behoove": true,
"beige": true,
"being": true,
"belabor": true,
"belated": true,
"belay": true,
"belch": true,
"beldam": true,
"beleaguer": true,
"belfry": true,
"belie": true,
"belief": true,
"believe": true,
"belike": true,
"belittle": true,
"bell": true,
"belladonna": true,
"bellboy": true,
"belle": true,
"bellhop": true,
"bellicose": true,
"belligerency": true,
"belligerent": true,
"bellow": true,
"bellows": true,
"bellwether": true,
"belly": true,
"belong": true,
"belongings": true,
"beloved": true,
"below": true,
"belt": true,
"belvedere": true,
"bemire": true,
"bemoan": true,
"bemock": true,
"bemuse": true,
"bench": true,
"bend": true,
"beneath": true,
"benedict": true,
"benediction": true,
"benefaction": true,
"benefactor": true,
"benefactress": true,
"benefice": true,
"beneficence": true,
"beneficent": true,
"beneficial": true,
"beneficiary": true,
"benefit": true,
"benevolence": true,
"benighted": true,
"benign": true,
"benignant": true,
"benison": true,
"bent": true,
"benumb": true,
"benzene": true,
"benzine": true,
"benzoate": true,
"benzoin": true,
"benzol": true,
"bequeath": true,
"bequest": true,
"berate": true,
"berceuse": true,
"bereave": true,
"beret": true,
"berg": true,
"beriberi": true,
"berkelium": true,
"berry": true,
"berserk": true,
"berth": true,
"beryl": true,
"beryllium": true,
"beseech": true,
"beseem": true,
"beset": true,
"besetting": true,
"beshrew": true,
"beside": true,
"besides": true,
"besiege": true,
"besmear": true,
"besmirch": true,
"besom": true,
"besotted": true,
"bespangle": true,
"bespatter": true,
"bespeak": true,
"besprinkle": true,
"best": true,
"bestial": true,
"bestiality": true,
"bestir": true,
"bestow": true,
"bestride": true,
"bet": true,
"betake": true,
"betel": true,
"bethel": true,
"bethink": true,
"betide": true,
"betimes": true,
"betoken": true,
"betray": true,
"betroth": true,
"betrothed": true,
"better": true,
"betterment": true,
"bettor": true,
"between": true,
"betwixt": true,
"bevel": true,
"beverage": true,
"bevy": true,
"bewail": true,
"beware": true,
"bewilder": true,
"bewitch": true,
"bey": true,
"beyond": true,
"bezel": true,
"bezoar": true,
"bhang": true,
"biannual": true,
"bias": true,
"bib": true,
"bibelot": true,
"bibliography": true,
"bibliophile": true,
"bibulous": true,
"bicameral": true,
"biceps": true,
"bichloride": true,
"bicker": true,
"bicuspid": true,
"bicycle": true,
"bid": true,
"bide": true,
"biennial": true,
"bier": true,
"bifocals": true,
"bifurcate": true,
"big": true,
"bigamy": true,
"bighorn": true,
"bight": true,
"bigot": true,
"bigwig": true,
"bike": true,
"bikini": true,
"bilateral": true,
"bile": true,
"bilge": true,
"bilingual": true,
"bilious": true,
"bilk": true,
"bill": true,
"billboard": true,
"billet": true,
"billfold": true,
"billhead": true,
"billiards": true,
"billingsgate": true,
"billion": true,
"billow": true,
"billy": true,
"bimetallism": true,
"bin": true,
"binary": true,
"binaural": true,
"bind": true,
"binding": true,
"binge": true,
"binnacle": true,
"binocular": true,
"binomial": true,
"biochemistry": true,
"biogeography": true,
"biography": true,
"biology": true,
"biopsy": true,
"biotin": true,
"biparental": true,
"bipartisan": true,
"bipartite": true,
"biped": true,
"biplane": true,
"biracial": true,
"birch": true,
"bird": true,
"birdbath": true,
"birdhouse": true,
"birdie": true,
"birdlime": true,
"birdseed": true,
"biretta": true,
"birth": true,
"birthday": true,
"birthmark": true,
"birthplace": true,
"birthrate": true,
"birthright": true,
"birthstone": true,
"biscuit": true,
"bisect": true,
"bisexual": true,
"bishop": true,
"bishopric": true,
"bismuth": true,
"bison": true,
"bisque": true,
"bistro": true,
"bit": true,
"bitch": true,
"bite": true,
"biting": true,
"bitter": true,
"bittern": true,
"bitters": true,
"bittersweet": true,
"bitumen": true,
"bituminous": true,
"bivalve": true,
"bivouac": true,
"bizarre": true,
"blab": true,
"black": true,
"blackamoor": true,
"blackball": true,
"blackberry": true,
"blackbird": true,
"blackboard": true,
"blacken": true,
"blackguard": true,
"blackhead": true,
"blackjack": true,
"blacklist": true,
"blackmail": true,
"blackout": true,
"blacksmith": true,
"blackthorn": true,
"blacktop": true,
"bladder": true,
"blade": true,
"blain": true,
"blame": true,
"blameworthy": true,
"blanch": true,
"blancmange": true,
"bland": true,
"blandishment": true,
"blank": true,
"blanket": true,
"blare": true,
"blarney": true,
"blase": true,
"blaspheme": true,
"blasphemy": true,
"blast": true,
"blatant": true,
"blather": true,
"blatherskite": true,
"blaze": true,
"blazer": true,
"blazon": true,
"bleach": true,
"bleachers": true,
"bleak": true,
"blear": true,
"bleary": true,
"bleat": true,
"bleed": true,
"bleeder": true,
"blemish": true,
"blench": true,
"blend": true,
"bless": true,
"blessed": true,
"blessing": true,
"blew": true,
"blight": true,
"blimp": true,
"blind": true,
"blindfold": true,
"blink": true
}
// GitHub users (I didn't grab the 3rd)
// https://github.com/acreeger
// https://github.com/Nilnullzip
var output = [];
var visitedWords = {}
var dict = require('./dict.js');
function permutator(input, head) {
head = head || "";
if (dict[word] === true && visitedWords[head] !== true) {
visitedWords[head] = true
output.push(head)
}
for (var i =0; i<input.length; i++) {
//probably a better way of doing this
var x = input.substring(0,i);
var y = input.substring(i);
var headY = y.substring(0,1);
var tailY = y.substring(1);
permutator(x + tailY, head + headY);
}
}
permutator("abase");
console.log(output);
Create a program to solve a word jumble.
Input: STRING - ‘dog’
Output: ARRAY - [‘dog’, ‘god’, ‘do’, ‘go’]
- Order does not matter
- You should use a dictionary file
- ex: http://ow.ly/qXmI2
// William, Mike, Nick
// https://github.com/MrNice
// https://github.com/mmessing
// https://github.com/oddalot
function algo(input, dictionary) {
var matches = [];
for (var key in dictionary) {
var test = input; // copy
for (var i = 0, l = key.length; i < l; ++i) {
var char = key[i], index = test.indexOf(char);
if (index !== -1) {
if (i + 1 === key.length) {
matches.push(key); // done, it's a match
break;
}
test = test.slice(0,index) + test.slice(index+1); // slice match char out
} else {
break;
}
}
}
return matches;
}
function algofun(input, dictionary) {
return _(dictionary).chain()
.keys()
.map(_.partial(comparator, input))
.reject(function(x) { return x === undefined })
.value();
function comparator(test, key){
for (var i = 0, l = key.length; i < l; ++i) {
var char = key[i], index = test.indexOf(char);
if (index !== -1) {
if (i + 1 === key.length) {
return key;
}
test = test.slice(0,index) + test.slice(index+1);
} else {
break;
}
}
}
}
// Juan
var dict = {"a":true, "abc":true, "d":true}
function p (t, h) {
for (var i=0;i<t.length;i++) {
p(t.substr(0, i) + t.substr(i+1), (h||"") + t.substr(i,1))
}
if (h && (dict[h])) {
console.log(h)
}
}
p("acb")
Input = 'asdfghjkl'
Output = [ // 80 words depending on dictionary used
'khafs',
'glads',
'dhaks',
'skald',
'flags',
'dhals',
'dahls',
'lakhs',
'flash',
'flask',
'dhak',
'hadj',
'daks',
'dhal',
'lads',
'gads',
'lash',
'gash',
'dags',
'dahl',
'skag',
'dals',
'khaf',
'kafs',
'lakh',
'jags',
'dahs',
'flag',
'dash',
'flak',
'glad',
'fags',
'half',
'lags',
'shad',
'gals',
'shag',
'fads',
'fash',
'hags',
'slag',
'hag',
'dak',
'lad',
'dal',
'haj',
'lag',
'gad',
'ags',
'kaf',
'has',
'als',
'gal',
'fad',
'las',
'sad',
'fag',
'ahs',
'sag',
'jag',
'gas',
'ska',
'ads',
'ash',
'kas',
'sal',
'ask',
'fas',
'dag',
'sha',
'had',
'dah',
'ad',
'fa',
'ag',
'sh',
'ah',
'ka',
'al',
'la',
'as',
'ha'
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment