diff --git a/RandomFactor.php b/RandomFactor.php index 829e971..90fd74e 100644 --- a/RandomFactor.php +++ b/RandomFactor.php @@ -1,9 +1,13 @@ language($lang) + ->spacing($spacing) + ->adjectives($adjectives) + ->nouns($nouns) + ->generate(); + } +} diff --git a/composer.json b/composer.json index 1df72a2..285feca 100644 --- a/composer.json +++ b/composer.json @@ -19,6 +19,9 @@ "issues": "https:\/\/github.com\/marcusirgens\/RandomFactor\/issues" }, "autoload": { + "psr-4": { + "marcuspi\\RandomFactor\\": "src/marcuspi/RandomFactor/" + }, "files": [ "RandomFactor.php" ] diff --git a/src/Core.php b/src/Core.php deleted file mode 100644 index 8120b37..0000000 --- a/src/Core.php +++ /dev/null @@ -1,56 +0,0 @@ - 'no', - 'en' => 'en' - ]; - - private static $adjectives = []; - private static $nouns = []; - - private static $adjective_count = 0; - private static $noun_count = 0; - - private static $imported_lang = ''; - private static $imported = false; - - public static function generate($lang, $spacing, $adjectives, $nouns) { - - // Doing this check here increases performance - if((self::$imported_lang != $lang) || !self::$imported) { - self::import_lang($lang); - } - - return self::$adjectives[rand(0, self::$adjective_count - 1)] . - $spacing . - self::$nouns[rand(0, self::$noun_count - 1)]; - - } - - private static function import_lang($lang) { - if (!in_array($lang, self::$languages)) { - throw new \Exception('Language ' . $lang . ' not found'); - } - - if (!file_exists(__DIR__ . '/lang/' . $lang . '.json')) { - throw new \Exception('Language file ' . __DIR__ . '/lang/' . $lang . '.json not found'); - } - - $wordlist = json_decode(file_get_contents(__DIR__ . '/lang/' . $lang . '.json'), TRUE); - - self::$adjectives = $wordlist['adjectives']; - self::$adjective_count = $wordlist['data']['count']['adjectives']; - - self::$nouns = $wordlist['nouns']; - self::$noun_count = $wordlist['data']['count']['nouns']; - - self::$imported_lang = $lang; - self::$imported = true; - - } -} -?> \ No newline at end of file diff --git a/src/lang/en.json b/src/lang/en.json deleted file mode 100644 index 7138bda..0000000 --- a/src/lang/en.json +++ /dev/null @@ -1 +0,0 @@ -{"adjectives":["acceptable","according","accurate","active","actual","additional","administrative","adult","after","alive","alternative","amazing","annual","another","automatic","available","aware","basic","beautiful","beginning","best","better","big","brave","brief","bright","brilliant","business","calm","capable","careful","certain","chemical","civil","classic","clear","close","comfortable","commercial","common","competitive","complete","complex","comprehensive","confident","conscious","consistent","constant","cool","crazy","creative","critical","cultural","curious","current","cute","dark","dear","decent","dependent","different","direct","distinct","downtown","easy","economy","educational","effective","either","electronic","environmental","equal","even","every","exact","excellent","exciting","existing","expensive","external","extra","extreme","fair","false","familiar","famous","fast","federal","female","final","financial","flat","foreign","formal","former","free","fresh","friendly","full","funny","future","general","global","good","grand","great","green","guilty","happy","hard","head","healthy","heavy","helpful","historical","home","honest","hot","human","hungry","immediate","important","impressive","independent","individual","informal","initial","intelligent","interesting","internal","international","junior","key","kind","known","last","late","leading","least","less","level","little","logical","loud","lucky","major","many","massive","medical","middle","mobile","narrow","national","natural","nearby","neat","necessary","new","nice","normal","numerous","objective","obvious","official","open","ordinary","original","particular","perfect","personal","pleasant","political","popular","positive","potential","powerful","practical","present","pretty","previous","primary","private","professional","proper","proud","public","pure","quick","quiet","rare","real","realistic","reasonable","recent","relevant","remarkable","representative","responsible","rich","right","royal","safe","same","secret","secure","sensitive","serious","sharp","significant","simple","slight","smart","smooth","soft","southern","spare","special","spiritual","straight","strict","strong","successful","suitable","super","sure","suspicious","sweet","tall","technical","tiny","tough","traditional","true","used","useful","valuable","various","vast","visible","warm","wise","wonderful","wooden","working","young"],"nouns":["ability","accident","activity","actor","ad","addition","administration","advertising","advice","affair","agency","agreement","airport","alcohol","ambition","analysis","analyst","anxiety","apartment","appearance","apple","application","appointment","area","argument","army","arrival","art","article","aspect","assignment","assistance","assistant","association","assumption","atmosphere","attention","attitude","audience","awareness","baseball","basis","basket","bath","bathroom","bedroom","beer","bird","birthday","bonus","bread","breath","buyer","cabinet","camera","candidate","category","celebration","championship","chapter","charity","cheek","chemistry","chest","child","childhood","chocolate","church","city","classroom","client","climate","clothes","coffee","collection","college","combination","committee","communication","community","comparison","competition","complaint","computer","concept","conclusion","connection","consequence","construction","context","contract","contribution","control","conversation","cookie","country","county","courage","cousin","criticism","currency","customer","dad","data","database","decision","definition","delivery","department","departure","depression","depth","description","desk","development","device","diamond","difference","dinner","direction","director","dirt","discussion","disk","distribution","drawer","drawing","driver","ear","economics","editor","education","efficiency","effort","election","elevator","emotion","emphasis","employee","employer","employment","energy","engine","engineering","entertainment","enthusiasm","entry","environment","equipment","establishment","estate","event","exam","examination","excitement","explanation","expression","extent","fact","family","farmer","feedback","finding","fishing","flight","food","football","fortune","foundation","freedom","friendship","funeral","garbage","gate","gene","goal","government","grandmother","grocery","growth","guest","guidance","guitar","hair","hall","hat","health","hearing","heart","height","highway","historian","history","homework","honey","hotel","housing","idea","imagination","importance","impression","improvement","income","independence","indication","industry","information","initiative","inspection","instance","instruction","insurance","intention","interaction","internet","introduction","investment","judgment","king","knowledge","lab","ladder","lady","lake","language","law","leader","leadership","length","library","literature","location","loss","love","magazine","maintenance","mall","management","manager","manufacturer","map","marketing","marriage","math","meal","meaning","measurement","meat","media","medicine","member","membership","memory","menu","message","method","midnight","mixture","mode","mom","moment","month","mood","movie","music","nation","nature","negotiation","news","newspaper","night","obligation","office","operation","opinion","opportunity","orange","organization","outcome","oven","owner","painting","paper","passenger","passion","patience","payment","penalty","people","percentage","perception","performance","permission","person","personality","perspective","philosophy","phone","photo","physics","piano","pie","pizza","platform","player","poem","poet","poetry","police","politics","pollution","population","possession","possibility","potato","power","preference","preparation","presence","presentation","president","priority","problem","procedure","product","profession","professor","promotion","property","proposal","protection","psychology","quality","quantity","queen","ratio","reaction","reading","reality","reception","recipe","recognition","recommendation","recording","reflection","refrigerator","region","relation","relationship","replacement","republic","reputation","requirement","resolution","resource","response","responsibility","restaurant","revenue","revolution","river","road","role","safety","salad","sample","satisfaction","scene","science","secretary","security","selection","series","session","setting","shirt","shopping","signature","significance","singer","situation","skill","society","software","solution","song","soup","speaker","speech","statement","steak","storage","story","strategy","student","studio","success","suggestion","supermarket","surgery","sympathy","system","teacher","technology","television","temperature","tennis","tension","theory","thing","thought","tongue","tooth","topic","town","tradition","trainer","transportation","truth","two","understanding","unit","university","user","variation","variety","vehicle","version","video","village","volume","warning","weakness","wealth","wedding","week","winner","wood","worker","world","writer","writing","year","youth"],"data":{"count":{"adjectives":245,"nouns":444},"combinations":108780}} \ No newline at end of file diff --git a/src/lang/no.json b/src/lang/no.json deleted file mode 100644 index f316aff..0000000 --- a/src/lang/no.json +++ /dev/null @@ -1 +0,0 @@ -{"adjectives":["aktiv","allsidig","artig","bra","deilig","dyktig","edel","ekstra","elegant","elskverdig","erfaren","erten","evig","fair","fantastisk","fin","fleksibel","flink","fornem","freidig","fri","frisk","glad","glatt","god","grei","habil","halv","heldig","historisk","human","hurtig","iherdig","intelligent","jovial","kanon","klar","klok","komparativ","komplett","konge","konservativ","kontkret","korrekt","koselig","kristen","kul","liberal","lik","litt","lun","masse","mobil","moden","moderne","modig","myk","neste","normal","nyttig","offisiell","ordentlig","original","passe","pen","personlig","presis","proaktiv","proff","pussig","radikal","rask","reaktiv","real","relevant","rett","rettferdig","rik","rolig","rund","schpaa","sikker","smart","snar","snill","sosial","spenstig","sterk","stilig","stille","stor","sunn","tillitsfull","topp","trofast","tung","ung","urban","uselvisk","utrolig","vakker","varm","veldig","vennlig","virtuell","yr"],"nouns":["agurk","antilope","avis","badeand","ball","bank","barista","bergenser","betjent","bie","bil","blokk","boble","bok","bokorm","bolle","breiflabb","brus","bukse","burger","buss","butikk","by","bygd","chat","dagbok","datamaskin","dekan","delegat","disco","domstol","dopplereffekt","drage","dyne","eier","elefant","engel","familie","farmor","fiolin","fisk","fjellheim","fjord","flaske","flyplass","fotball","frykt","fryser","fugl","furu","galakse","gane","garanti","gave","grevling","grotte","hai","harpe","hatt","hest","horde","hund","informasjon","inntekt","jordmor","julefeiring","jurist","jury","juvel","kamerat","kanon","karaffel","kasse","katt","kino","klementin","kollega","komfyr","ku","kunst","liberalist","lunsj","mandolin","meny","moskus","nettside","okse","oldefar","oppfinnelse","optikk","ordstyrer","ovn","park","pasient","person","planet","plante","plommme","porto","pose","prest","pris","reklame","rektor","religion","representant","rev","ring","rot","saks","salamander","satellitt","sebra","seigmann","sekk","selger","singlet","sjokolade","skala","snutt","statsminister","stjerne","stol","storm","strikk","struts","student","substans","svoger","sykepleier","taco","tann","tapir","telefon","tiger","tolk","tornado","trapp","trikk","ulv","underviser","uttale","vask","vertinne","vors"],"data":{"count":{"adjectives":106,"nouns":145},"combinations":15370}} \ No newline at end of file diff --git a/src/marcuspi/RandomFactor/Words.php b/src/marcuspi/RandomFactor/Words.php new file mode 100644 index 0000000..9dada6e --- /dev/null +++ b/src/marcuspi/RandomFactor/Words.php @@ -0,0 +1,160 @@ + 'no-nb', + 'en' => 'en' + ]; + + private $language; + private $spacing; + private $nouns; + private $adjectives; + + /** + * Creates new Words. + * + * @access public + * @param string $language The language to use (default: "en") + * @param string $spacing Character(s) to used to split the words (default: " ") + * @param int $nouns Number of nouns (default: 1) + * @param int $adjectives Number of adjectives (default: 1) + */ + public function __construct($language = "en", $spacing = " ", $nouns = 1, $adjectives = 1) + { + $this->language($language); + $this->spacing($spacing); + $this->nouns($nouns); + $this->adjectives($adjectives); + } + + /** + * Sets which language that should be used + * + * @access public + * @param string $language One of "no", "en". + * @return self + */ + public function language(string $language): Words + { + if (!array_key_exists(mb_strtolower($language), static::$languages)) { + throw new \Exception('Language \'' . $language . '\' not found'); + } + + $this->language = mb_strtolower($language); + + return $this; + } + + /** + * Sets the character(s) to used to split the words + * + * @access public + * @param string $spacing + * @return self + */ + public function spacing(string $spacing): Words + { + $this->spacing = $spacing; + + return $this; + } + + /** + * Sets the number of nouns + * + * @access public + * @param int $nouns A positive integer + * @return self + */ + public function nouns(int $nouns): Words + { + if ($nouns < 0) { + throw new \Exception('Number of nouns must be a positive integer'); + } + + $this->nouns = $nouns; + + return $this; + } + + /** + * Sets the number of adjectives + * + * @access public + * @param int $adjectives A positive integer + * @return self + */ + public function adjectives(int $adjectives): Words + { + if ($adjectives < 0) { + throw new \Exception('Number of adjectives must be a positive integer'); + } + + $this->adjectives = $adjectives; + + return $this; + } + + /** + * Static creation. + * + * @access public + * @static + * @return self + */ + public static function create() + { + return new static; + } + + /** + * Generates the random words. + * + * @access public + * @return string + */ + public function generate(): string + { + + $wordlist = $this->readWordList(); + + $words = []; + + for ($i = 0; $i < $this->adjectives; $i++) { + $words[] = $wordlist['adjectives'][random_int(0, count($wordlist['adjectives']) - 1)]; + } + + for ($i = 0; $i < $this->nouns; $i++) { + $words[] = $wordlist['nouns'][random_int(0, count($wordlist['nouns']) - 1)]; + } + + return implode($this->spacing, $words); + } + + /** + * Alias for self::generate() + * + * @access public + * @return string + */ + public function __toString(): string + { + return $this->generate(); + } + + private function readWordList(): array + { + $wordfile = __DIR__ . '/lang/' . static::$languages[$this->language] . '.json'; + + if (!file_exists($wordfile)) { + throw new \Exception('Language file \'' . $wordfile . '\' not found'); + } + + return json_decode(file_get_contents($wordfile), true); + } +} diff --git a/src/marcuspi/RandomFactor/lang/en.json b/src/marcuspi/RandomFactor/lang/en.json new file mode 100644 index 0000000..bbdc0bb --- /dev/null +++ b/src/marcuspi/RandomFactor/lang/en.json @@ -0,0 +1,695 @@ +{ + "adjectives": [ + "acceptable", + "according", + "accurate", + "active", + "actual", + "additional", + "administrative", + "adult", + "after", + "alive", + "alternative", + "amazing", + "annual", + "another", + "automatic", + "available", + "aware", + "basic", + "beautiful", + "beginning", + "best", + "better", + "big", + "brave", + "brief", + "bright", + "brilliant", + "business", + "calm", + "capable", + "careful", + "certain", + "chemical", + "civil", + "classic", + "clear", + "close", + "comfortable", + "commercial", + "common", + "competitive", + "complete", + "complex", + "comprehensive", + "confident", + "conscious", + "consistent", + "constant", + "cool", + "crazy", + "creative", + "critical", + "cultural", + "curious", + "current", + "cute", + "dark", + "dear", + "decent", + "dependent", + "different", + "direct", + "distinct", + "downtown", + "easy", + "economy", + "educational", + "effective", + "either", + "electronic", + "environmental", + "equal", + "even", + "every", + "exact", + "excellent", + "exciting", + "existing", + "expensive", + "external", + "extra", + "extreme", + "fair", + "false", + "familiar", + "famous", + "fast", + "federal", + "female", + "final", + "financial", + "flat", + "foreign", + "formal", + "former", + "free", + "fresh", + "friendly", + "full", + "funny", + "future", + "general", + "global", + "good", + "grand", + "great", + "green", + "guilty", + "happy", + "hard", + "head", + "healthy", + "heavy", + "helpful", + "historical", + "home", + "honest", + "hot", + "human", + "hungry", + "immediate", + "important", + "impressive", + "independent", + "individual", + "informal", + "initial", + "intelligent", + "interesting", + "internal", + "international", + "junior", + "key", + "kind", + "known", + "last", + "late", + "leading", + "least", + "less", + "level", + "little", + "logical", + "loud", + "lucky", + "major", + "many", + "massive", + "medical", + "middle", + "mobile", + "narrow", + "national", + "natural", + "nearby", + "neat", + "necessary", + "new", + "nice", + "normal", + "numerous", + "objective", + "obvious", + "official", + "open", + "ordinary", + "original", + "particular", + "perfect", + "personal", + "pleasant", + "political", + "popular", + "positive", + "potential", + "powerful", + "practical", + "present", + "pretty", + "previous", + "primary", + "private", + "professional", + "proper", + "proud", + "public", + "pure", + "quick", + "quiet", + "rare", + "real", + "realistic", + "reasonable", + "recent", + "relevant", + "remarkable", + "representative", + "responsible", + "rich", + "right", + "royal", + "safe", + "same", + "secret", + "secure", + "sensitive", + "serious", + "sharp", + "significant", + "simple", + "slight", + "smart", + "smooth", + "soft", + "southern", + "spare", + "special", + "spiritual", + "straight", + "strict", + "strong", + "successful", + "suitable", + "super", + "sure", + "suspicious", + "sweet", + "tall", + "technical", + "tiny", + "tough", + "traditional", + "true", + "used", + "useful", + "valuable", + "various", + "vast", + "visible", + "warm", + "wise", + "wonderful", + "wooden", + "working", + "young" + ], + "nouns": [ + "ability", + "accident", + "activity", + "actor", + "ad", + "addition", + "administration", + "advertising", + "advice", + "affair", + "agency", + "agreement", + "airport", + "alcohol", + "ambition", + "analysis", + "analyst", + "anxiety", + "apartment", + "appearance", + "apple", + "application", + "appointment", + "area", + "argument", + "army", + "arrival", + "art", + "article", + "aspect", + "assignment", + "assistance", + "assistant", + "association", + "assumption", + "atmosphere", + "attention", + "attitude", + "audience", + "awareness", + "baseball", + "basis", + "basket", + "bath", + "bathroom", + "bedroom", + "beer", + "bird", + "birthday", + "bonus", + "bread", + "breath", + "buyer", + "cabinet", + "camera", + "candidate", + "category", + "celebration", + "championship", + "chapter", + "charity", + "cheek", + "chemistry", + "chest", + "child", + "childhood", + "chocolate", + "church", + "city", + "classroom", + "client", + "climate", + "clothes", + "coffee", + "collection", + "college", + "combination", + "committee", + "communication", + "community", + "comparison", + "competition", + "complaint", + "computer", + "concept", + "conclusion", + "connection", + "consequence", + "construction", + "context", + "contract", + "contribution", + "control", + "conversation", + "cookie", + "country", + "county", + "courage", + "cousin", + "criticism", + "currency", + "customer", + "dad", + "data", + "database", + "decision", + "definition", + "delivery", + "department", + "departure", + "depression", + "depth", + "description", + "desk", + "development", + "device", + "diamond", + "difference", + "dinner", + "direction", + "director", + "dirt", + "discussion", + "disk", + "distribution", + "drawer", + "drawing", + "driver", + "ear", + "economics", + "editor", + "education", + "efficiency", + "effort", + "election", + "elevator", + "emotion", + "emphasis", + "employee", + "employer", + "employment", + "energy", + "engine", + "engineering", + "entertainment", + "enthusiasm", + "entry", + "environment", + "equipment", + "establishment", + "estate", + "event", + "exam", + "examination", + "excitement", + "explanation", + "expression", + "extent", + "fact", + "family", + "farmer", + "feedback", + "finding", + "fishing", + "flight", + "food", + "football", + "fortune", + "foundation", + "freedom", + "friendship", + "funeral", + "garbage", + "gate", + "gene", + "goal", + "government", + "grandmother", + "grocery", + "growth", + "guest", + "guidance", + "guitar", + "hair", + "hall", + "hat", + "health", + "hearing", + "heart", + "height", + "highway", + "historian", + "history", + "homework", + "honey", + "hotel", + "housing", + "idea", + "imagination", + "importance", + "impression", + "improvement", + "income", + "independence", + "indication", + "industry", + "information", + "initiative", + "inspection", + "instance", + "instruction", + "insurance", + "intention", + "interaction", + "internet", + "introduction", + "investment", + "judgment", + "king", + "knowledge", + "lab", + "ladder", + "lady", + "lake", + "language", + "law", + "leader", + "leadership", + "length", + "library", + "literature", + "location", + "loss", + "love", + "magazine", + "maintenance", + "mall", + "management", + "manager", + "manufacturer", + "map", + "marketing", + "marriage", + "math", + "meal", + "meaning", + "measurement", + "meat", + "media", + "medicine", + "member", + "membership", + "memory", + "menu", + "message", + "method", + "midnight", + "mixture", + "mode", + "mom", + "moment", + "month", + "mood", + "movie", + "music", + "nation", + "nature", + "negotiation", + "news", + "newspaper", + "night", + "obligation", + "office", + "operation", + "opinion", + "opportunity", + "orange", + "organization", + "outcome", + "oven", + "owner", + "painting", + "paper", + "passenger", + "passion", + "patience", + "payment", + "penalty", + "people", + "percentage", + "perception", + "performance", + "permission", + "person", + "personality", + "perspective", + "philosophy", + "phone", + "photo", + "physics", + "piano", + "pie", + "pizza", + "platform", + "player", + "poem", + "poet", + "poetry", + "police", + "politics", + "pollution", + "population", + "possession", + "possibility", + "potato", + "power", + "preference", + "preparation", + "presence", + "presentation", + "president", + "priority", + "problem", + "procedure", + "product", + "profession", + "professor", + "promotion", + "property", + "proposal", + "protection", + "psychology", + "quality", + "quantity", + "queen", + "ratio", + "reaction", + "reading", + "reality", + "reception", + "recipe", + "recognition", + "recommendation", + "recording", + "reflection", + "refrigerator", + "region", + "relation", + "relationship", + "replacement", + "republic", + "reputation", + "requirement", + "resolution", + "resource", + "response", + "responsibility", + "restaurant", + "revenue", + "revolution", + "river", + "road", + "role", + "safety", + "salad", + "sample", + "satisfaction", + "scene", + "science", + "secretary", + "security", + "selection", + "series", + "session", + "setting", + "shirt", + "shopping", + "signature", + "significance", + "singer", + "situation", + "skill", + "society", + "software", + "solution", + "song", + "soup", + "speaker", + "speech", + "statement", + "steak", + "storage", + "story", + "strategy", + "student", + "studio", + "success", + "suggestion", + "supermarket", + "surgery", + "sympathy", + "system", + "teacher", + "technology", + "television", + "temperature", + "tennis", + "tension", + "theory", + "thing", + "thought", + "tongue", + "tooth", + "topic", + "town", + "tradition", + "trainer", + "transportation", + "truth", + "two", + "understanding", + "unit", + "university", + "user", + "variation", + "variety", + "vehicle", + "version", + "video", + "village", + "volume", + "warning", + "weakness", + "wealth", + "wedding", + "week", + "winner", + "wood", + "worker", + "world", + "writer", + "writing", + "year", + "youth" + ] +} \ No newline at end of file diff --git a/src/marcuspi/RandomFactor/lang/no-nb.json b/src/marcuspi/RandomFactor/lang/no-nb.json new file mode 100644 index 0000000..932ca63 --- /dev/null +++ b/src/marcuspi/RandomFactor/lang/no-nb.json @@ -0,0 +1,257 @@ +{ + "adjectives": [ + "aktiv", + "allsidig", + "artig", + "bra", + "deilig", + "dyktig", + "edel", + "ekstra", + "elegant", + "elskverdig", + "erfaren", + "erten", + "evig", + "fair", + "fantastisk", + "fin", + "fleksibel", + "flink", + "fornem", + "freidig", + "fri", + "frisk", + "glad", + "glatt", + "god", + "grei", + "habil", + "halv", + "heldig", + "historisk", + "human", + "hurtig", + "iherdig", + "intelligent", + "jovial", + "kanon", + "klar", + "klok", + "komparativ", + "komplett", + "konge", + "konservativ", + "kontkret", + "korrekt", + "koselig", + "kristen", + "kul", + "liberal", + "lik", + "litt", + "lun", + "masse", + "mobil", + "moden", + "moderne", + "modig", + "myk", + "neste", + "normal", + "nyttig", + "offisiell", + "ordentlig", + "original", + "passe", + "pen", + "personlig", + "presis", + "proaktiv", + "proff", + "pussig", + "radikal", + "rask", + "reaktiv", + "real", + "relevant", + "rett", + "rettferdig", + "rik", + "rolig", + "rund", + "schpaa", + "sikker", + "smart", + "snar", + "snill", + "sosial", + "spenstig", + "sterk", + "stilig", + "stille", + "stor", + "sunn", + "tillitsfull", + "topp", + "trofast", + "tung", + "ung", + "urban", + "uselvisk", + "utrolig", + "vakker", + "varm", + "veldig", + "vennlig", + "virtuell", + "yr" + ], + "nouns": [ + "agurk", + "antilope", + "avis", + "badeand", + "ball", + "bank", + "barista", + "bergenser", + "betjent", + "bie", + "bil", + "blokk", + "boble", + "bok", + "bokorm", + "bolle", + "breiflabb", + "brus", + "bukse", + "burger", + "buss", + "butikk", + "by", + "bygd", + "chat", + "dagbok", + "datamaskin", + "dekan", + "delegat", + "disco", + "domstol", + "dopplereffekt", + "drage", + "dyne", + "eier", + "elefant", + "engel", + "familie", + "farmor", + "fiolin", + "fisk", + "fjellheim", + "fjord", + "flaske", + "flyplass", + "fotball", + "frykt", + "fryser", + "fugl", + "furu", + "galakse", + "gane", + "garanti", + "gave", + "grevling", + "grotte", + "hai", + "harpe", + "hatt", + "hest", + "horde", + "hund", + "informasjon", + "inntekt", + "jordmor", + "julefeiring", + "jurist", + "jury", + "juvel", + "kamerat", + "kanon", + "karaffel", + "kasse", + "katt", + "kino", + "klementin", + "kollega", + "komfyr", + "ku", + "kunst", + "liberalist", + "lunsj", + "mandolin", + "meny", + "moskus", + "nettside", + "okse", + "oldefar", + "oppfinnelse", + "optikk", + "ordstyrer", + "ovn", + "park", + "pasient", + "person", + "planet", + "plante", + "plommme", + "porto", + "pose", + "prest", + "pris", + "reklame", + "rektor", + "religion", + "representant", + "rev", + "ring", + "rot", + "saks", + "salamander", + "satellitt", + "sebra", + "seigmann", + "sekk", + "selger", + "singlet", + "sjokolade", + "skala", + "snutt", + "statsminister", + "stjerne", + "stol", + "storm", + "strikk", + "struts", + "student", + "substans", + "svoger", + "sykepleier", + "taco", + "tann", + "tapir", + "telefon", + "tiger", + "tolk", + "tornado", + "trapp", + "trikk", + "ulv", + "underviser", + "uttale", + "vask", + "vertinne", + "vors" + ] +} \ No newline at end of file