@@ -15,50 +15,50 @@ let pick (r: 'a array) : 'a = r.(range 0 (Array.length r));; module CrimeDrug = struct -let frics = [| "f"; "sh"; "th"; |] -let vfrics = [| "z"; "v"; "zh"; |] -let stops = [| "t"; "p"; "k"; "c"; |] -let vstops = [| "d"; "b"; "g"; "gh"; |] -let withglide r f = Array.map (fun i -> i^f) r -let withonset r o = Array.map (fun i -> o^i) r -let consonants = Array.concat [ - frics; vfrics; stops; vstops; - withonset stops "s"; - [| "w"; "r"; "rh"; "s"; "l"; "ch"; "n"; "m"; |]; -] -let initials = Array.concat [ - consonants; - withglide frics "r"; withglide frics "l"; withglide frics "w"; - withglide stops "r"; withglide vstops "r"; withglide vstops "w"; - [| "qu"; "spr"; "spl"; "str"; "scr"; "scl"; "squ"; "bl"; "gl"; "sn"; "sm"; "j"; "h"; "sph"; "ph";|]; -] -let nuclei = [| "e"; "ee"; "i"; "a"; "ou"; "u"; "oo"; "ea"; "oa"; "ai"; "oi"; "ie";|] -let finals = Array.concat [ - vstops; - withonset stops "s"; withonset stops "r"; withonset stops "l"; - withonset vstops "r"; withonset vstops "l"; - [| "gh"; "ck"; "ce"; "ss"; "se"; "nd"; "mb"; "mph"; "nk"; "tch"; "ke"; "ght"; - "ff"; "ll"; "zz"; "t"; "p"; "th"; "rth"; "lth"; "dge"; "nge"; "ng"; "ft"; "ckle"; "ngle"; "rkle"; - "scht"; "ze"; "x"; "sh"; "rsh"; "lsh"; "ggle"; "ddle"; "bble"; "pple"; "rge"; "lge"; "ve"; "rve"; - "lve"; "ffle"; "ttle"; "kle"; "sch"; "m"; "n"; "rm"; "lm"; "rn"; "ln";|] -] -let prefixes = [| A "crack"; A "crystal"; A "powdered"; A"raw"; A "pure"; A "liquid"; - A"street"; A "super"; An "electric"; A "diced"; A "homemade"; A "traditional"; - An "old-school"; A "purified"; A "high-caliber"; A "high-octane"; An "old-fashioned"; - A "good old"; A "honest-to-god"; A "weapons-grade"; A "soviet"; An "american"; - A "canadian"; A "british"; A "russian"; A "synthetic"; A "french"; A "cyber"; |] + let frics = [| "f"; "sh"; "th"; |] + let vfrics = [| "z"; "v"; "zh"; |] + let stops = [| "t"; "p"; "k"; "c"; |] + let vstops = [| "d"; "b"; "g"; "gh"; |] + let withglide r f = Array.map (fun i -> i^f) r + let withonset r o = Array.map (fun i -> o^i) r + let consonants = Array.concat [ + frics; vfrics; stops; vstops; + withonset stops "s"; + [| "w"; "r"; "rh"; "s"; "l"; "ch"; "n"; "m"; |]; + ] + let initials = Array.concat [ + consonants; + withglide frics "r"; withglide frics "l"; withglide frics "w"; + withglide stops "r"; withglide vstops "r"; withglide vstops "w"; + [| "qu"; "spr"; "spl"; "str"; "scr"; "scl"; "squ"; "bl"; "gl"; "sn"; "sm"; "j"; "h"; "sph"; "ph";|]; + ] + let nuclei = [| "e"; "ee"; "i"; "a"; "ou"; "u"; "oo"; "ea"; "oa"; "ai"; "oi"; "ie";|] + let finals = Array.concat [ + vstops; + withonset stops "s"; withonset stops "r"; withonset stops "l"; + withonset vstops "r"; withonset vstops "l"; + [| "gh"; "ck"; "ce"; "ss"; "se"; "nd"; "mb"; "mph"; "nk"; "tch"; "ke"; "ght"; + "ff"; "ll"; "zz"; "t"; "p"; "th"; "rth"; "lth"; "dge"; "nge"; "ng"; "ft"; "ckle"; "ngle"; "rkle"; + "scht"; "ze"; "x"; "sh"; "rsh"; "lsh"; "ggle"; "ddle"; "bble"; "pple"; "rge"; "lge"; "ve"; "rve"; + "lve"; "ffle"; "ttle"; "kle"; "sch"; "m"; "n"; "rm"; "lm"; "rn"; "ln";|] + ] + let prefixes = [| A "crack"; A "crystal"; A "powdered"; A"raw"; A "pure"; A "liquid"; + A"street"; A "super"; An "electric"; A "diced"; A "homemade"; A "traditional"; + An "old-school"; A "purified"; A "high-caliber"; A "high-octane"; An "old-fashioned"; + A "good old"; A "honest-to-god"; A "weapons-grade"; A "soviet"; An "american"; + A "canadian"; A "british"; A "russian"; A "synthetic"; A "french"; A "cyber"; |] -let makeA i x = A(i ^ x) -let makeAn x = An x -let maybeConcat x y = match x with - | Some t -> wconcat t y - | None -> y -let gen () : word = maybeConcat (if chance 3 then Some (pick prefixes) else None) - ((if chance 5 then makeAn else makeA (pick initials)) - ((pick nuclei) ^ (pick finals))) - + let makeA i x = A(i ^ x) + let makeAn x = An x + let maybeConcat x y = match x with + | Some t -> wconcat t y + | None -> y + let gen () : word = maybeConcat (if chance 3 then Some (pick prefixes) else None) + ((if chance 5 then makeAn else makeA (pick initials)) + ((pick nuclei) ^ (pick finals))) + end let rec crime = R [| Tv "arson"; @@ -138,8 +138,12 @@ T "espionage"; T "hijacking"; T "hooliganism"; T "perjury"; + T "snakes"; + T "perpetuation of a ruckus"; + T "perpetuation of a nuisance"; + T "perpetuation of a public nuisance"; T "refusal to serve in a public office"; B [ T "failure to appear before"; Indef; profession ]; B [ T "refusal to serve as"; Indef; profession ]; B [ T "stalking"; O(T"of"); Indef; profession ]; @@ -193,33 +197,46 @@ T "marketing"; T "advertising"; T "unlawful restraint"; T "trespassing"; + T "creating a nuisance"; + T "creating a public nuisance"; + T "causing a ruckus"; |] and doing = R [| Tv "entering"; T "decorating"; Tv "invoking"; Tv "evoking"; Tv "insulting"; Tv "advertising"; - Tv "mentoring"; - Tv "bantering"; - Tv "yiffing"; - Tv "posting"; - Tv "tweeting"; - Tv "blogging"; + T "mentoring"; + T "bantering"; + T "yiffing"; + T "posting"; + T "tweeting"; + T "blogging"; + T "hollering"; + T "yelling"; + T "bartering"; + T "matriculating"; + T "berating"; + T "bothering"; + T "irritating"; + T "copulating"; + T "titillating"; + T "aggravating"; |] and practice = R [| T "falconry"; T "dentistry"; T "philosophy"; T "linguistics"; T "conjuration"; - T "illusion"; + Tv "illusion"; T "mathematics"; T "set theory"; T "math"; T "physics"; - T "astrophysics"; + Tv "astrophysics"; T "natural philosophy"; T "chemistry"; T "engineering"; T "marketing"; @@ -234,49 +251,54 @@ Tv "oboe"; T "flute"; T "violin"; |] and thing = R [| - T "clarinet"; - T "piano"; - T "deadly weapon"; - T "firearm"; - T "weapon"; - T "sex doll"; - T "rhinocerous"; - T "farm animal"; - T "landmine"; - T "rocket launcher"; - T "rocket-propelled grenade"; - T "grenade"; - T "ballistic missile"; - T "ICBM"; - T "rifle"; - T "vibrator"; + T "clarinet"; + T "piano"; + T "deadly weapon"; + T "dread weapon"; + T "firearm"; + T "weapon"; + T "sex doll"; + T "rhinocerous"; + T "farm animal"; + T "landmine"; + T "rocket launcher"; + T "rocket-propelled grenade"; + T "grenade"; + T "ballistic missile"; + T "ICBM"; + T "rifle"; + T "vibrator"; Tv "assault rifle"; Tv "assault weapon"; Tv "automatic weapon"; Tv "artifact"; + Tv "dread artifact"; + Tv "cursed artifact"; Tv "orb"; - T "cursed object"; + T "cursed object"; Tv "infectious disease"; - T "nuclear weapon"; - T "bioweapon"; - T "chemical weapon"; - T "memetic hazard"; - T "metaphor"; - T "simile"; + T "nuclear weapon"; + T "bioweapon"; + T "chemical weapon"; + T "memetic hazard"; + T "metaphor"; + T "simile"; Tv "analogy"; - T "turkey baster"; - T "rolling pin"; - T "household item"; + T "turkey baster"; + T "rolling pin"; + T "household item"; Tv "appliance"; - T "blog"; - T "post"; - T "tweet"; + T "blog"; + T "post"; + T "tweet"; + T "snake"; |] and thingp = R [| T "clarinets"; T "pianos"; T "deadly weapons"; + T "dread weapons"; T "firearms"; T "weapons"; T "sex dolls"; T "rhinoceri"; @@ -293,8 +315,10 @@ Tv "assault rifles"; Tv "assault weapons"; Tv "automatic weapons"; Tv "artifacts"; + Tv "dread artifacts"; + Tv "cursed artifacts"; Tv "orbs"; T "hazardous materials"; T "gender"; T "cursed objects"; @@ -317,8 +341,9 @@ T "stolen property"; T "blogs"; T "posts"; T "tweets"; + T "snakes"; |] and profession = R [| T "public official"; Tv "officer of the law"; T "justice of the peace"; @@ -376,8 +401,9 @@ T "criminal"; T "illegal"; T "forcible"; T "fractal"; + T "obnoxious"; |] and suffix = R [| B [ T "with intent to commit"; crime ]; T "in a public place"; T "in a court of law"; @@ -500,13 +526,15 @@ ]; |]; T "to"; ] +let determiner = [| T "your"; T "your own"; T "the"; |] +let sdet = R (Array.concat [ determiner; [| T "a"; T "this"; T "that"; |] ]) +let pdet = R (Array.concat [ determiner; [| T "these"; T "those"; |] ]) let condemnation = B[ sentence; R[| - B[ - T "die"; + B[ T "die"; O(T "screaming"); O(T "in agony"); O(B[ T "by"; @@ -514,9 +542,9 @@ O(T "ritual"); O(T "public"); R[| T "beheading"; T "strangulation"; T "torture"; T "industrial negligence"; T "slow slicing"; T "lethal injection"; - T "disembowelment"; T "drowning"; T "burning"; + T "disembowelment"; T "drowning"; T "drowning at sea"; T "burning"; T "burning at the stake"; T "emasculation"; T "irradiation"; T "stabbing"; T "poisoning"; T "flaying"; T "roasting"; T "boiling"; T "boiling in oil"; T "boiling in acid"; T "crucifixion"; |] @@ -526,14 +554,27 @@ T "hang until dead"; T "hang until you are dead"; T "be drawn and quartered"; T "drown"; + T "drown at sea"; T "burn"; T "burn at the stake"; T "be burned"; T "be burned at the stake"; T "be broken on the wheel"; T "be torn apart by wild horses"; + T "snakes"; + B[ R[| + T "forfeit"; + T "be deprived of"; + T "be given"; + T "be subjected to"; + |]; + R[| + B[ O(pdet); thingp; ]; + B[ sdet; thing; ]; + |] + ] |]; O(R[| B[ T "at"; @@ -547,8 +588,9 @@ |]) ] let imprisonment = B[ sentence; + O( T "spend" ); R[| B[ R[|T "two"; T "three"; T "four"; T "five"; T "six"; T "seven"; Tv "eight"; T "nine"; T "ten";|]; @@ -670,9 +712,9 @@ T "to"; R[| B[T "perform"; R[|T "one"; numbers;|]; T "hundred jumping jacks"]; T "make amends"; - T "beg forgiveness"; + T "beg for forgiveness"; T "do the right thing"; T "bleed"; T "sacrifice your firstborn"; T "forever quit the land of your birth"; @@ -749,9 +791,9 @@ ]); R[| B[court; O(T "hereby"); - R[| T "finds"; T "declares"; T "proclaims"; T "pronounces"; T "judges"; Tv "adjuges";|]; + R[| T "finds"; T "declares"; T "proclaims"; T "pronounces"; T "judges"; Tv "adjudges";|]; ]; B[Tv "I"; O(T "hereby"); R[| T "find"; T "declare"; T "proclaim"; T "pronounce"; T "judge"; Tv "adjudge"|];