Last active
May 31, 2017 22:31
-
-
Save thieux/86d8315b1065a4359edaaf522c96310f to your computer and use it in GitHub Desktop.
Quick&dirty POC of a markov chain in Clojure to generate city names that sound french
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| (ns generate-word.core-test | |
| (:require [clojure.test :refer :all] | |
| [generate-word.core :refer :all] | |
| [clojure.string :as str])) | |
| (def cities1 ["ABBAYE" "ABBAYE ST-JEAN" "ABBE FOURE" "ABBE HUCHET" "ABBE LORIN" "ABBE PIERRE LEROY" "ABBE POUSSIN" "ABLETTE" "ABREUVOIR" "ACACIAS" "ACADIENS" "ACHILLE" "AIGUILLE" "AJONCS" "ALAUX" "ALBATROS" "ALBERT" "ALBERT 1er" "ALCYON" "ALET"]) | |
| (def cities ["ABBAYE" "ABBAYE ST-JEAN" "ABBE FOURE" "ABBE HUCHET" "ABBE LORIN" "ABBE PIERRE LEROY" "ABBE POUSSIN" "ABLETTE" "ABREUVOIR" "ACACIAS" "ACADIENS" "ACHILLE" "AIGUILLE" "AJONCS" "ALAUX" "ALBATROS" "ALBERT" "ALBERT 1er" "ALCYON" "ALET" "ALGER" "ALLENDE" "ALSACE" "AMANDIERS" "AMARYLLIS" "AMAZONE" "AMIRAL EPRON" "AMIRAL LEVERGER" "AMIRAL MAGON" "AMIRAL PROTET" "AMITIE" "AMOUREUX" "ANCIENS COMBATTANTS" "ANCIENS D'INDOCHINE" "ANDROMEDE" "ANEMONES" "ANJOU" "ANTILLES" "APPOLINE" "ARABIE" "ARCHERS" "ARGENTEUIL" "ARGONAUTES" "ARGONNE" "ARKANSAS" "ARONDEL" "ARROMANCHES" "ARTILLEURS" "ARTIMON" "ARTOIS" "ASFELD" "ASTROLABE" "ATALANTE" "AUBEPINE" "AUBERT" "AULNES" "AURIGNY" "AURORE" "AVISO" "BAILLIS" "BAINS" "BAJOYER" "BALADINS" "BALEINE" "BALUE" "BANCHETS" "BANQUEREAU" "BARBOT" "BARDELIERE" "BARONNIE" "BARRAULT" "BAS CHEMIN" "BAS DE L'ILE" "BAS-SABLONS" "BAS-SABLONS" "BASSE FLOURIE" "BASSE VILLE AU ROUX" "BASSIERES" "BASSIN" "BATAS" "BATELEURS" "BAUDET" "BAZILLE" "BAZILLE" "BEAUFILS" "BEAUFILS" "BEAUGEARD" "BEAULIEU" "BEAULIEU" "BEAULIEU" "BEAULIEU" "BEAUPRE" "BEAUSEJOUR" "BEAUSITE" "BEAUSOLEIL" "BEAUVOIR" "BEGONIAS" "BEL-AIR" "BELETTES" "BELIER" "BELLE FONTAINE" "BELLE FONTAINE" "BELLEVENT" "BELLEVUE" "BELLEVUE" "BENETIN" "BERENGER" "BERGERIE" "BERNARD" "BERT" "BERTAUDIERE" "BERTHAUT" "BES" "BIGNE" "BIGNON" "BIGNON" "BIR HAKEIM" "BISCAYENNE" "BISON" "BISQUINE" "BIZERTE" "BIZEUX" "BLAIZE de MAISONNEUVE" "BLANCHE ROCHE" "BLANDIN" "BLATRERIE" "BLEUETS" "BOIS AURANT" "BOIS DEBOUT" "BOIS HERVEAU" "BOIS JOLI" "BOISOUZE" "BOLTZ" "BON PASTEUR" "BON VENT" "BONNE ROCHE" "BONNET FLAMAND" "BONNEVILLE" "BORDERIE" "BOSQUET AUX POMMES" "BOTREL" "BOUCHER" "BOUCHERS" "BOUGAINVILLE" "BOULAIE" "BOULNAYE" "BOURELAIS" "BOURELAIS" "BOURG-CONDE" "BOURNAY" "BOURNAZEL" "BOURSAINT" "BOURSE" "BOUSSINOT POMPHILY" "BOUTONS D'OR" "BOUVET" "BOUVIER" "BOYER" "BRAILLE" "BREGEONS" "BRETAGNE" "BREVET" "BRIAND" "BRIAND" "BRIANT" "BRIANTAIS" "BRIGANTIN" "BRINDJONC" "BRINDEJONC des MOULINAIS" "BRISELAINE" "BRIZEUX" "BROCELIANDE" "BROCHET" "BROUARD" "BROUASSIN" "BROUSSAIS" "BUISSON" "BURGOT" "BURON" "BUTTES" "BUTTES" "BUY" "BUZARDIERE" "CALFATS" "CALLO" "CALVAIRE" "CALVAIRIENNES" "CAMELIAS" "CAMPION" "CAMUS" "CANADA" "CANAL DE MER BONNE" "CANCAVEN" "CAP" "CAP HORN" "CAPITAIN" "CAPITAIN" "CAPITAINE LESCOT" "CAPITAINE LESCOT" "CAPRICORNE" "CAPUCINES" "CARAIBES" "CARAVANNIEZ" "CARAVELLE" "CARIBOU" "CARNOT" "CARTIER" "CASSIN" "CASTOR" "CEINTE" "CERTAIN" "CEZANNE" "CEZEMBRE" "CHABRIER" "CHAGALL" "CHALIBERT" "CHAMP PEGASE" "CHAMPS RICHARD" "CHAMPS VAUVERTS" "CHANOINE E. LAINE" "CHANOINE E. LAINE" "CHAPEL" "CHAPEL" "CHAPELET" "CHAPELLE" "CHAPITRE" "CHARCOT" "CHARITE" "CHARMILLES" "CHARTRES" "CHASSE" "CHAT QUI DANSE" "CHATEAU-GAILLARD" "CHATEAUBRIAND" "CHATEAUBRIAND" "CHATEAUBRIAND" "CHAUSEY" "CHAUSSEE" "CHENARD DE LA GIRAUDAIS" "CHENES" "CHENU" "CHESNAIE" "CHEVALIER" "CHEVALIERS" "CHEVREFEUILLES" "CHEVREMONT" "CHIENS" "CHILI" "CHOPIER" "CINEMA" "CITE" "CLARISSE" "CLAUDEL" "CLEMENCEAU" "CLOCHE" "CLOS AGNES" "CLOS BARON" "CLOS BRETON" "CLOS CADOT" "CLOS DE MATIGNON" "CLOS DE MATIGNON" "CLOS DU NOYER" "CLOS JOLI" "CLOS NEUF" "CLOS POUCET" "CLOS VERT" "CLOUTERIE" "COCHET" "COETQUEN" "COIN A L'AIR" "COLAS" "COLETTE" "COLLEGE" "COLLIN" "COLOMB" "COLONEL ARMAND" "COLONEL DEMOLINS" "COLONEL LE NY" "COMMANDANT BOURDAIS" "COMMANDANT DUBOSQ" "COMMANDANT L'HERMINIER" "COMMANDANT L. BERNICOT" "COMMANDANT Y. MENGUY" "COMPAGNIE DES INDES" "COMPTOIRS" "CONCHEE" "CONFIANCE" "CONNETABLE" "CONNETABLE" "CONSTANTINE" "CONTI" "COQ HARDI" "COQUELIN" "CORBIERE" "CORBIERES" "CORBINIERE" "CORBINIERE" "CORDERIE" "CORDIERS" "CORDONNERIE" "CORMORANS" "CORNE DE CERF" "CORNILLET" "COROT" "CORSAIRES" "CORSAIRES" "CORVETTE" "COSNES" "COTEAU" "COTTAGES" "COTTERET" "COUARDES" "COUARDES" "COUDRAY" "COUDRAY" "COUDRE" "COUDRIERS" "COURLIS" "COURTIL" "COURTOISVILLE" "CROIX AU FEVRE" "CROIX BEAUGEARD" "CROIX CHEMIN" "CROIX DES MARAIS" "CROIX DESILLES" "CROIX DU CHENE" "CROIX DU FIEF" "CROIX RAUX" "CROLANTE" "CROSSE" "CUNAT" "CURAÇAO" "CURIE" "CYCLAMENS" "CYPRES" "CYTISES" "DAGNET" "DAHLIAS" "DALI" "DANYCAN" "DAUPHIN" "DAUPHINE" "DAVIER" "DE CHATILLON" "DE COUBERTIN" "DE GOURNAY" "DE LA BARDELIERE" "DE LA BOURDONNAIS" "DE LA CONDAMINE" "DE LA CONDAMINE" "DE LA MORVONNAIS" "DE LA TOUR" "DE LA VILLE MARQUE" "DE TRIQUERVILLE" "DE VINCI" "DECOUVERTE" "DEGAS" "DEJAN" "DELALANDE" "DELASTELLE" "DEMALVILAIN" "DEPORTES" "DEROULEDE" "DERVEAUX" "DESCARTES" "DESGRES" "DESIRADE" "DESISLES" "DEVARIEUX" "DICK" "DINAN" "DINAN" "DISTILLERIE" "DIXMUDE" "DOCTEUR ANNE NOURY" "DOCTEUR ANNE NOURY" "DOCTEUR CELESTIN HUET" "DOCTEUR CHRISTIAN PAUL" "DOCTEUR GUIOT" "DOCTEUR JUMELAIS" "DOCTEUR PAUL AUBRY" "DOCTEUR PAUL BOULOGNE" "DOCTEUR R. NICOLLEAU" "DOCTEUR ROUX" "DOCTEUR TULOUP" "DORADE" "DORIS" "DOUANIER ROUSSEAU" "DOUTRELEAU" "DOUVILLE" "DRAKKAR" "DREUX" "DU PAPEU" "DUBREUIL" "DUCHESSE ANNE" "DUCLOS GUYOT" "DUCLOS GUYOT" "DUFRESNE" "DUGUAY-TROUIN" "DUGUESCLIN" "DUGUESCLIN" "DUNANT" "DUNES" "DUNKERQUE" "DUPARQUIER" "DUPERRE" "DUPONT" "DUPORT DUTERTRE" "DURAND" "DUVEAU" "ECHEVINS" "ECHOS" "ECOLES" "ECREHOUS" "ECUYERS" "EDOUARD VII" "EGAULT" "EGLANTINES" "EGLISE" "EHBIENS" "ELAN" "EMERILLON" "ENCLOS DU MOULIN" "ENCLOS DU VERGER" "ENFER" "EOLE" "EPHYRA" "EPIETTES" "EPINAY" "EQUERRE" "ERABLES" "ESPADON" "ESPERANCE" "ESPERANCE" "ESTREES" "ETANG" "ETOILE" "ETOUPE" "ETRIER" "ETRILLES" "EXCELSIOR" "FEE DES GREVES" "FEE MELUSINE" "FEE MORGANE" "FEE VIVIANE" "FERRY" "FEUILLET" "FEVAL" "FEYDEAU" "FIL D'ARIANE" "FLAUBERT" "FLAUBERT" "FLAUDAIS" "FLAUDAIS" "FLEURS" "FLEURS" "FLORE" "FLOURIE" "FLOURIE" "FOLIGNE" "FONTAINE" "FONTAINE" "FONTAINE AU BONHOMME" "FONTAINE AU VAIS" "FONTAINE AUX LIEVRES" "FONTAINE AUX PELERINS" "FONTAINE DE JOUVENCE" "FONTAN" "FONTENELLES" "FORGET" "FORGEURS" "FORT A LA REINE" "FORTS" "FOSSE" "FOUERE" "FOUGERES" "FOULQUES" "FOUQUET" "FOUR" "FOUR A TABAC" "FOURE" "FOURS A CHAUX" "FRANCAIS LIBRES" "FREGATE" "FREMUR" "FRESNE" "FRESNEL" "FRESNEL" "FRISTEL" "FUENTES" "GAITE" "GALETS" "GALION" "GALIOTTE" "GAMBETTA" "GARANGEAU" "GARDELLE" "GARDES" "GARNERAY" "GARNIER DU FOUGERAY" "GARROS" "GASNIER DUPARC" "GASPE" "GAUGUIN" "GEMEAUX" "GENERAL DE CASTELNAU" "GENERAL DE GAULLE" "GENERAL FERRIE" "GENERAL LANREZAC" "GENERAL PATTON" "GENETS" "GENIE" "GENTILLERIE" "GEORGE V" "GERBAULT" "GERMAIN" "GILLE" "GLACIS" "GLORIOUX" "GLORIOUX" "GODARD" "GODEST" "GOELAND" "GOELAND" "GOELETRIE" "GOELETRIE" "GOELETTE" "GOUAZON" "GOUIN DE BEAUCHESNE" "GOURNAY" "GOUTTE" "GOUYON" "GRAND DOMAINE" "GRAND JARDIN" "GRAND JARDIN" "GRAND PASSAGE" "GRAND PORT" "GRAND RUE" "GRAND VERGER" "GRANDE ANGUILLE" "GRANDE COTIERE" "GRANDE HERMINE" "GRANDE HERMINE" "GRANDE HERMINE" "GRANDE MOINERIE" "GRANDE RIVIERE" "GRANDS DEGRES" "GRANDS POINTUS" "GRAS MOLLET" "GRASSINAIS" "GRASSINAIS" "GRAVE-DUPONT" "GREVE" "GREVE" "GREVES DE CHASLES" "GRILLE" "GRIZZLY" "GROENLAND" "GROENLAND" "GROS CHENE" "GROS CHENE" "GROUT DE SAINT-GEORGES" "GUADELOUPE" "GUENE" "GUERNESEY" "GUERNIER" "GUET" "GUIBERT" "GUILLAUMIN" "GUILLEVIC" "GUIMERAIS" "GUIMORAIS" "GUYMAUVIERE" "HACHE" "HAIZE" "HALLE AUX BLES" "HALLES" "HALLES" "HALNA" "HAMON" "HARPE" "HAUMET" "HAUT-PUITS" "HAUTE FUTAIE" "HAUTES FALAISES" "HAUTE VILLE AU ROUX" "HAUTS MURS" "HAUTS-SABLONS" "HAVRE" "HAVRE" "HEBERT" "HEBERT" "HEBERT" "HEMAR" "HERBES" "HERON" "HERON" "HERPIN" "HERSE" "HESRY" "HINDRE" "HIPPOCAMPE" "HOCHELAGA" "HOGUETTE" "HOLLANDE" "HOUBARDERIE" "HOUSSAYE" "HOVIUS" "HUGO" "HULOTAIS" "HUNIERS" "HURE" "HUS" "ICARE" "IFS" "ILE AGOT" "ILE BESNARD" "ILE CROZET" "ILE DE SERQ" "ILE DES LANDES" "ILE HARBOUR" "ILE MAURICE" "ILLE-ET-VILAINE" "INDUSTRIE" "IRIS" "ISLANDE" "ISLET" "JACINTHES" "JACINTHES" "JACQUES II" "JALLOBERT" "JANAIE" "JARDINS DE SAINTE-ANNE" "JARNOUEN DE VILLARTAY" "JASMIN" "JAURES" "JEAN XXIII" "JERSEY" "JOCET" "JONGLEURS" "JONQUILLES" "JOSSEAUME" "JOUAN" "JOUANJAN" "JOUANNY" "JOUVENTE" "JUGAN" "JUPITER" "JURA" "KRUGER" "KENNEDY" "KENNEDY" "KENNEDY" "LA CHAMBRE" "LA CHAMBRE" "LA HOUSSAYE" "LAENNEC" "LAMBERT" "LAMBETY" "LAMBETY" "LAMBETY" "LAMENNAIS" "LAMENNAIS" "LAMORT" "LANCETTE" "LANDELLES" "LAUNAY BRETON" "LAURENCIN" "LAURENT" "LAURIERS" "LE BERRE" "LE BRAZ" "LE FER" "LE GENTIL" "LE GOBIEN" "LE GOFFIC" "LE GOUVERNEUR" "LE GUEN" "LE GUYADER" "LE MASSON" "LE PLACITRE" "LE POLOZEC" "LE POMELLEC" "LE ROY" "LE TURC" "LEBAN" "LECONTE" "LECOUFLE" "LEDUC" "LEFORESTIER" "LEGATELOIS" "LEGAVRE" "LEGUEN DE LACROIX" "LEMARIE" "LEMORDANT" "LEMPEREUR" "LEONORE" "LERAY" "LEROUX" "LESENECHAL" "LETRUNS" "LEVANT" "LEVY" "LHOTE" "LIBERATION" "LIERRES" "LILAS" "LONGUE RAIE" "LORETTE" "LORETTE" "LORRAINE" "LOTH" "LOTI" "LOTUS" "LOUISIANE" "LOUTRE" "LOUVEL" "LOZIER" "LUCET" "LYNX" "LYS" "MAC DONALD STEWART" "MACE" "MACLAW" "MADAME DES BAS-SABLONS" "MAILLARD" "MAILLET" "MAINE" "MAISON NEUVE" "MALOUINE" "MALOUINIERE" "MANET" "MANOIR" "MAQUIS DE BROUALAN" "MARAICHERS" "MARAIS" "MARAIS RABOT" "MARCHE" "MARCHE AUX LEGUMES" "MARCHES" "MARE" "MARE LITRE" "MARECHAL FOCH" "MARECHAL JUIN" "MARECHAL LECLERC" "MAREGRAPHE" "MARETTES" "MARGUERITE" "MARIETTE" "MARIN MARIE" "MARINE" "MARINS" "MARNE" "MARSOUIN" "MARTIN" "MARTIN" "MARTINEAU" "MARTINIQUE" "MARTRE" "MARVILLE" "MASSEVILLE" "MASSUERE" "MAUPERTUIS" "MAURIERS" "MEINGA" "MELEZE" "MENESTRELS" "MENETRIERS" "MER" "MER DU SUD" "MERCIERE" "MERCIERS" "MERISIERS" "MERMOZ" "MESLE" "METIS" "METTE" "METTRIE" "METZ" "MI-GREVE" "MICHELET" "MIMOSAS" "MINIHIC" "MINQUIERS" "MIRIEL" "MIROIR AUX FEES" "MOKA" "MON PLAISIR" "MONNERAIE" "MONET" "MONOD" "MONSEIGNEUR DIES" "MONSEIGNEUR DUCHESNE" "MONSEIGNEUR DUCHESNE" "MONSEIGNEUR JUHEL" "MONSIEUR VINCENT" "MONT-FLEURY" "MONTADOR" "MONTAGNE Saint-Joseph" "MONTAIGNE" "MONTE-CARLO" "MONTJOIE" "MONTRE" "MONTREAL" "MORISOT" "MORSE" "MOTTAIS" "MOTTE" "MOUCHOIR VERT" "MOUETTES" "MOUFLON" "MOULIN" "MOULIN" "MOULIN CASSE" "MOULIN DE LA MOTTE" "MOULIN DU GUE" "MOULIN DU GUE" "MOULINS COLIN" "MOUSSES" "MYOSOTIS" "NARCISSES" "NATIERE" "NATION" "NATTIER" "NAVIGATEURS" "NAYE" "NAYE" "NAYE" "NAYE" "NENUPHARS" "NEPTUNE" "NICET" "NIELLES" "NOGUES" "NOGUES" "NOGUETTE" "NOIRES" "NOMINOE" "NORD" "NORMANDS" "NORMANDS" "NOROIT" "NOTRE-DAME" "NOTRE-DAME DES FLOTS" "NOUETTE" "NOVICES" "NYMPHES" "OEILLETS" "OLINDA" "OLIVIERS" "OLLIVRAULT" "OMNES" "ONFROY" "ORAN" "ORBETTES" "ORCHIDEES" "ORIEUX" "ORIEUX" "ORLEANS" "ORME" "OSERAIE" "PANIER FLEURI" "PANIER FLEURI" "PAPIN" "PARC" "PARE" "PARENTHOINE" "PASQUET Amand" "PASSAGERE" "PASTEUR" "PATELLES" "PEGUY" "PELICOT" "PENTHIEVRE" "PEPINIERE" "PER JAKEZ HELIAS" "PERE PAUL BOULAY" "PERE YVON" "PEROU" "PERRIER" "PERRINE" "PERROQUET" "PETIT CHAMP" "PETIT CLOS" "PETIT PARAMÉ" "PETIT PARAMÉ" "PETIT PRE" "PETITE ANGUILLE" "PETITE BARONNIE" "PETITE BARONNIE" "PETITE HUPEE" "PETITE HERMINE" "PETITE PATURE" "PETITES GREVES" "PETITES LANDES" "PETITS BOIS" "PETITS CHAMPS" "PETITS DEGRES" "PETITS PORTS" "PETRELS" "PETUNIAS" "PEUPLERAIE" "PEUPLIERS" "PHARE" "PHILOSOPHES" "PICASSO" "PICOT DE CLOS RIVIERE" "PICPUS" "PIE" "PIE QUI BOIT" "PIECE D'EAU" "PILORI" "PILOTE HEDOUIN" "PINCON" "PINS" "PIPERIE" "PISSARO" "PLACE" "PLAGE" "PLANCHES" "PLATIER" "PLEIN SOLEIL" "PLESSIS" "PLISSON" "PLUVIERS" "POIDS DU ROI" "POIDS PUBLIC" "POINCARE" "POINT DU JOUR" "POINTE" "POINTE DU CHRIST" "POINTEL" "POISSONNERIE" "POITOU" "PONANT" "PONCEL" "PONT" "PONT QUI TREMBLE" "PONT TOQUE" "PONT-PINEL" "PORCARO" "PORCON DE LA BARBINAIS" "POREE" "POREE" "PORT" "PORTES CARTIER" "PORTES ROUGES" "POTERNE AUX NORMANDS" "POUDRIERE" "POULIEURS" "POUPARDERIE" "POURPRIS" "POURQUOI PAS" "POURQUOI PAS" "PRAIRIES" "PRE BRECEL" "PRECEPTORERIE" "PRESIDENT Robert Schuman" "PREVET" "PREVOTS" "PRIEURE SAINT-DOMIN" "PRIMEVERES" "PROFESSEUR FEREY" "PROGRES" "PRUNIERS" "PUITS AUX BRAIES" "PUITS SAUVAGE" "QUATRE PAVILLONS" "QUEBEC" "QUEBEC" "QUONIAM" "RABELAIS" "RABINES" "RANCE" "RANCE" "REGARDS" "RENAN" "RENARD" "RENAULT" "RENCONTRE" "RENDEZ-VOUS" "RENOIR" "REPUBLIQUE" "RESISTANCE" "RESISTANCE" "REVENANT" "REVEREND PERE LEBRET" "REVEREND PERE UMBRICHT" "RIANCOURT" "RIMPONIERE" "RIO DE JANEIRO" "RIVASSELOU" "RIVIERE" "ROBINOT" "ROC AUX DOGUES" "ROCABEY" "ROCAILLES" "ROCHE" "ROCHE" "ROCHEBONNE" "ROCHEBONNE" "ROCHEBONNE" "ROCHEPIETTE" "ROCHER" "ROCHERS SCULPTES" "ROCHETTES" "RONCES" "ROOSEVELT" "ROSAIS" "ROSEAUX" "ROSERAIE" "ROSSE" "ROTHENEUF" "ROTHENEUF" "ROUGERIES" "ROULAIS" "ROUSSE" "ROUSSE" "ROUSSIN HARRINGTON" "ROUTHOUAN" "ROUVRE" "ROZE" "RUETTE AU LOUP" "RUSSY" "RUSSY" "SABLONS" "SAFFRAY" "SAGITTAIRE" "SAINT AARON" "SAINT BENOIT" "SAINT ESNOUL" "SAINT-ETIENNE" "SAINT EXUPERY" "SAINT FIACRE" "SAINT FRANCOIS" "SAINT FRANCOIS XAVIER" "SAINT HELIER" "SAINT IDEUC" "SAINT JOSEPH" "SAINT LAURENT" "SAINT LOUIS" "SAINT LOUIS" "SAINT MICHEL" "SAINT MICHEL DES SABLONS" "SAINT MLEUX" "SAINT PERE" "SAINT PHILIPPE" "SAINT PIERRE" "SAINT PIERRE" "SAINT PIERRE ET MIQUELON" "SAINT ROCH" "SAINT SAUVEUR" "SAINT THOMAS" "SAINT THOMAS" "SAINT VINCENT" "SAINT VINCENT" "SAINT VINCENT" "SAINTE" "SAINTE ANNE" "SAINTE BARBE" "SAINTE CATHERINE" "SAINTE MARGUERITE" "SAINTE MARIE" "SALENGRO" "SALINES" "SALINETTE" "SANS PAREIL" "SAPINS" "SATURNE" "SAULAIE" "SAULES" "SAULES" "SAUT DE LOUP" "SAUVAGE" "SAVEANT" "SEBASTOPOL" "SEMARD" "SEMILLANTE" "SENECHAUX" "SERRES" "SERRES" "SERVANNAIS" "SERVANTINE" "SEURAT" "SIAM" "SIGNAC" "SILLON" "SIMON" "SISLEY" "SIX FRERES RUELLAN" "78 ème Régiment d'Infanterie" "SOLIDOR" "SORBIERS" "SOURCE" "SOUVENIR" "SOUVESTRE" "SPHINX" "STERNES" "SUIPPES" "SURCOUF" "SURCOUF" "SURCOUF" "TABARLY" "TALARDS" "TALVAS" "TAMARIS" "TANNERIE" "TAPIS VERT" "TAVET" "TERRE NEUVE" "TERRE NEUVE" "TERTRE" "TERTRE AUX NEFLES" "TERTRE BELOT" "TERTRE VERRINE" "TESSERIE" "TESSERIE" "THEBAULT" "THEVENARD" "THOMAS" "TIERCELIN" "TILLEULS" "TINTIAUX" "TOISON D'OR" "TONNELLES" "TOULLIER" "TOULOUSE" "TOULOUSE LAUTREC" "TOUR D'AUVERGNE" "TOUR DU BONHEUR" "TOURVILLE" "TRAVERSIERE" "TREGASTEL" "TREGOR" "TREHERAIS" "TREHOUART" "TREHU" "TRICHET" "TRICHET" "TRIEUX" "TRINIDAD" "TRIQUERVILLE" "TRITON" "TROCTIN" "TROIS CHENES" "TROIS JOURNAUX" "TROIS MATS" "TROIS MATS" "TROIS PIERRES" "TROUBADOURS" "TROUVERES" "TRUBLET" "TULIPES" "TUNIS" "TURPIN" "VAL" "VAL" "VAL" "VAL ANTIQUE" "VAL RIANT" "VAL SAINT-JOSEPH" "VALLEE" "VALLON" "VAN GOGH" "VARANGOT" "VARDE" "VARDE" "VAU GARNI" "VAUBAN" "VAUBOREL" "VAYVA" "VERCEL" "VERDUN" "VERGERS SAINTE-MARIE" "VERON" "VERSEAU" "VICTOIRE" "VIEILLE BOUCHERIE" "VIERGE DE GRACE" "VIEUX BANC" "VIEUX REMPARTS" "VIGIE" "VIGUIER" "VIKINGS" "VILLE AUDRAIN" "VILLE CHESNAIS" "VILLE COLLET" "VILLE JOUAN" "VILLE MARQUE" "VILLE MENEE" "VILLE PEPIN" "VILLE-ES-COURS" "VILLE-ES-HOUX" "VILLEBOIS MAREUIL" "VILLEBOIS MAREUIL" "VILLERS" "VILLES ALLIS" "VIOLETTES" "VOSGES" "WALDECK ROUSSEAU" "YSER" "YVELIN"]) | |
| (defn normalize [word] | |
| (str "^" word "$")) | |
| (defn slice-normalized [normalized-word size] | |
| (for [offset (range (inc (- (count normalized-word) size)))] | |
| (subs normalized-word offset (+ size offset)))) | |
| (defn slice [size word] | |
| (slice-normalized (normalize word) size)) | |
| (def slice1 (partial slice 4)) | |
| ;; TODO memoize | |
| (defn filter-dict [dict start] | |
| (filter (fn [w] (str/starts-with? w start)) dict)) | |
| (defn end-of [word] | |
| "The last 4 characters (or less for little a word)" | |
| (let [c (count word)] | |
| (subs word (max 0 (- c (dec 4))) c))) | |
| (defn last-of [word index] | |
| "The next character to pick" | |
| (subs word (dec index) index)) | |
| (defn generate-word | |
| ([dict] | |
| (generate-word dict "^")) | |
| ([dict start] | |
| (let [end (end-of start)] | |
| (let [sub-dict (filter-dict dict end)] | |
| (let [size (count sub-dict)] | |
| (let [next (last-of (get (vec sub-dict) (rand-int size)) (inc (count end)))] | |
| (let [result (str start next)] | |
| (if (= next "$") | |
| result | |
| (recur dict result))))))))) | |
| (def dictionary ["^vil" "vill" "ille" "llen" "lene" "eneu" "neuv" "euve" "uve$" "^vil" | |
| "vill" "ille" "llev" "leve" "evei" "veil" "eill" "ille" "lle$"]) | |
| (defn demo [words] | |
| (let [dict (flatten (map slice1 words))] | |
| (generate-word dict))) | |
| (deftest a-test | |
| (testing "Slicing" | |
| (is (= (slice 4 "hello") ["^hel" "hell" "ello" "llo$"])))) | |
| (deftest b-test | |
| (testing "canary" | |
| (is (not= (demo ["villeneuve" "villeveille"]) "")))) | |
| (deftest c-test | |
| (testing "end of big word" | |
| (is (= (end-of "^vill") "ill")))) | |
| (deftest d-test | |
| (testing "end of little word" | |
| (is (= (end-of "^v") "^v")))) | |
| (deftest e-test | |
| (testing "next char to pick" | |
| (is (= (last-of "^vil" (inc 1)) "v")))) | |
| ;; Hall of fame | |
| ;;BURG-COUANJOUASSES | |
| ;;BURG-COUANJOUASSES | |
| ;;CURIE | |
| ;;CORDI | |
| ;;JACQUEBERTRE | |
| ;;NENU | |
| ;;GRANDESILLES | |
| ;;COUFLEUR | |
| ;;PRETRIQUE | |
| ;;FORGENES | |
| ;;RABLON | |
| ;;DESIRAL FOULIEUX | |
| ;;CORNE | |
| ;;BRIGNES | |
| ;;DUCHESNEL DE MASSIS | |
| ;;SUIPPES | |
| ;;BRETONS | |
| ;;QUATRELETS | |
| ;;ORANCARAND | |
| ;;CYPREVET | |
| ;;CARTILLONEL | |
| ;;CLOS RAULT | |
| ;;VARAI | |
| ;;MONSEIGNON | |
| ;;PICASTELNAYE | |
| ;;BEAULES | |
| ;;FOUGERAL FOCHES | |
| ;;CHAPELERCELIERES | |
| ;;LONS | |
| ;;MOTTE | |
| ;; Hall of fame for contry names in french | |
| ;;Mozambour | |
| ;;Arabes Salvina Falkland | |
| ;;Serbadelon | |
| ;;Nigériales Néerlandwiche | |
| ;;Para Leone | |
| ;;Îles Ålandwich du Congo | |
| ;;Algéria | |
| ;;Île Britoire Britan | |
| ;;Mada | |
| ;;Saint-Marin | |
| ;;Serbie-et-Tobago | |
| ;;Île Jan Maria | |
| ;;Somalaos | |
| ;;Îles États-et-Bas | |
| ;;Japouasie | |
| ;;Afghanie | |
| ;;Îles États-Unistan |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment