公司起名工具,有了它你就是半仙了
???? 某日,閑著蛋疼,正好老總正為公司起名發愁(要開分公司?誰知道),把我叫去,說:小黃,給你個艱巨而有偉大的任務,用Java寫個為公司起名的工具出來,里面的詳細規則要領一會我和你詳解;有了它,哪天我們可以拿著它去路邊插面旗擺個攤,我們就是半仙了,不愁混不到飯吃。
??? 一:你未必聽過的知識
???? 接下來我學了不少沒接觸過的知識:
???? 上面就是公司命名的要點,當然還包括其他方面,我的任務是把給定前綴和后綴的公司名中的所有滿足條件的主體部分全部列舉出來就行了,主體部分還支持通配符,如:軒易**。到這里,你腦海里里是否已經有方案了呢,不錯,很簡單嘛。上述的7個要點中,最重要的要數第3條和第7條了,第3條教你如何算漢字的數理,第7條指定了公司名的命名規則。當然,別忽略了第7條。
?????二:還需要什么
?????當然,光靠上面7條要點還無法實現。至少需要知道五行中各包含哪些漢字,五行中各筆畫包含哪些漢字?,就是說要有一個用于查詢漢字屬于哪行和多少筆畫的字庫。另外,命名的時候那些偏的,繁體的字體我們也不經常用把,就是說還需要一個用于命名的字庫。這兩個都沒問題,老總有:
? /** 用于查找筆畫的中文集 */private static final String[][] charaterForFind={{// <editor-fold defaultstate="collapsed" desc="0:金">"", //0"", //1"匕刀人入厶", //2"才叉亍川寸千刃三上尸士夕小", //3"仇乏戈仁仍冗少升什氏手殳四兮心刈仄爪", //4"冊叱斥出叼刊尻正仟且仞申生失石史矢世仕市示甩司玊仙乍占主", //5"臣丞舛此次汆存丟而吏列任扔如色舌式守妁死寺夙凸刎西吸先囟匈旬曳再在早吒州舟字", //6"扱岔吵車成赤氚串吹忖兌秀序卮吱判七吣忍妊礽刪劭佘伸身束吮私伺兕姒宋忒吻伭辛巡酉皂佇助妝壯孜走佐作坐", //7"侘昌抄弨扯忱承忡初垂佌刺兒庚刮戔金凈侃刻侄孥妻戕青取叁剎姍疝尚舍社侁呻使始事受抒叔刷祀忪慫所兔昔穸些姓刖甾昃怎咋軋忮周妯咒宙侏抓宗卒", //8"臿查姹差拆怊伡疢宬怵穿舡春殂促毒度耏釓宮剞剄俓咻庥胥敘宣怔枯前怯侵秋紉肜柔砂衫舢厙哂矧甚牲省施食室是首姝耍帥閂思娀叟俗剃祆秈庠削信星性頁釔俞俁哉昝蚤則眨咤咫峙肘拄拙咨姿俎昨怍", //9"剝財睬倉敇豺刬倀倡鬯晁眧耖唓宸乘蚩持翅芻俶純祠脆厝凋釘琺剛罡剮怪借峻釕修脩訏徐痃畛疹拯癥倪釙剖倩挈邛讱軔衽狨辱弱珊閃訕剡扇哨射珅娠神眚師十時拾狩書紓殊衰拴素祟孫隼唆索慟剜紊唏息席掀宵笑眩殉栽宰奘唣哳痄窄釗針真紙指酎疰拽酌租祖祚唑座", //10"偲彩參曹側釵產娼常徜唱巢晨趻偁琤瓻匙豉舂崇紬偢處絀啜船釧玼疵瓷粗啐挫得釣釩副寂祭剪旌勘羞袖酗旋胗梔胝馗率捏釹珮阡釬氫圊愨雀蚺唼啥釤商捎紹奢蛇設赦紳胂售孰庶唰爽悚訟宿狻捅偷釷問悉欷覡徙細舷祥斜偰訢釁邢悅責舴扎蚱砦粘趾終晝珠蛀專著紫族組胙做", //11"鈀鈑鈽猜裁殘傖廁嗏覘孱猖惝敞悵鈔超朝抻牚胵啻惆喘窗創捶詞猝酢悴毳皴嵯痤矬措貂掉鈄鈍貳鈁鈣割鉤辜壺戟絕鈞竣剴琇須婿絮喧掙猙幀脂殖縶鈉甯鈕掊裒鈐欽禽情氰然韌絨傘散喪掃嫂痧跚善稍邵猞畬腎甥盛剩視授瘦疏舒黍述稅順舜絲斯俟勝竦嗖酥訴粟飧脧鈦替童推惜傒晰犀粞舾舄羨象胸絢喻鑰咱鑿棗迮曾喳詐掌詔軹眾蛛貯茲詛尊阼", //12"鉍缽鈸鉑踩粲惻插詫琛嗔脭絺飭傺愁稠酬蜍楚揣歂蠢跐琮催瘁搓脞鈿堵鈷鉀剿捷靖鉅鈳貅繡嗅煦揎暄鉦睜鈴鉚鉬鈮刨鈹钷鉛鉗蜣愜嗪銎飪揉塞搔裟歃煞傷艄蛸詵蜃詩獅勢試軾毹暑鼠蜀睡嗍嗣肆送搜肅嗉睢歲嗦羧嗩鉈鉭酮媳郄酰嫌蜆跣詳想綃新歆惺猩鉉馴詢鈾銪愉揄蝓傴鈺裕愈鉞載賊揸閘債斟黹酯誅邾瘃莊裝資揍阻", //13"銨艑綵嘈察瘥僝嫦玚綝稱誠鋮酲銃搊綢裯殠搐搋僢愴慈雌粹翠铞銩睹鉺罰閥鉻鉿郝劃鉸精聚劂銬需賑蜘摭銠閭銘隉齊綮慊戧腔搶劁寢蜻銓逡認銣瑞睿搡瘙銫僧绱韶賒慎逝誓壽綬署說搠嗽誦嗾瞍速愫僳觫酸猻損銚銅僮骰途酴僖蜥銑屣郤禊銜線限像逍铘銥劓銦銀腴瑜窬臧造嘖幘甄碡帚銖綜腙粽僔", //14"錒鋇慚慘艖摻摻嬋鋋廛諂腸廠麨瞋漦瘛沖摴廚鋤諔嘬瘡摐噇踳賜醋摧銼嘟鋨鋒敷鋯劊劌鋏緘劍節靚鋦劇錁銹緒儇稹刳鋃鋰锍鋝劈鋪噙鋟請趣髯糅銳腮毿磉傻陜殤賞審諗實蝕駛奭艏熟數腧摔誰咝緦嘶駟艘螋誶瑣銻鋌腿鋈嘻陷缐腺嘵銷鋅腥陘缊糌駔噪锃幟陟摯皺囑翥幢諄諑蹤諏陬", //15"錛餐憯穇艙糙蹅儕幨閶氅鋹諶踸赪褫憧瘳踹遄陲錘輴錞糍璁璀撮蹉鹺錯锝雕錠輻鋼錮锪輯錦靜鋸錈髹諼縝錚整錕錸鍆錳穆锫憑錡錢錆嬙撳瘸蹂儒縟褥噻嬗膳鄃輸螄撕穌錟頹錫羲螅鬩锨醒謁逾覦諭憎甑瘵戰縐諸麈撞錐錙郰撙", //16"锿嚓擦縩操艚螬懆馇鍤禪償韔鼌幬憷歜黜膗聰獨鍍鍛鍔鍋鍰徽蹇餞鍵駿鍇鏈鵂鍼镅鎂縻鍪遣蹌鍬鍥嚅孺鄏賽糝繅擅聲謚蟀瞬鍶聳鎪謖雖隋縮膝蟋谿戲鮮癇獫餡謝遜翼輿糟罾鍘齋氈鍺鐘謅矚總鄒", //17"翱鏊鎊鎞饆璨蟬繟儭艟懤雛幮儲蹙竄鄜鎬鎘環穢劐鎵鎧鎮織鎦镎聶嚙鎳擰獰闋闕镕鞣鎩繕蟮觴嬸雙颼鎖鎢雟餼燹蟓擤鎰遭賾繒膪顓鬃", //18"鏖镚鏢襜蟾鏟鯧懲遲寵疇辭蹴禱鏑顛牘犢鏡鏗饈選鎏鏤鏝錨鏌锘遷鏘譙鯖鵲顙騷臊膻鄯繩識獸攄餿擻鏜醯系暹贊鏨躁譖鯫鏃遵", //19"鐔犨觸鰆鐙鐓鐨鏵锏镢鐍锎鐐續鐒鏻聹鏷鐠繾鏹黥謦蠑襦繻蠕鰓馓騸釋孀鐋璺霰馨譯譫騶", //20"鐾驂鸧蠆攙懺羼韂襯鐺躇呲鶿驄鐸鐫鐮鐳囁譴蛩麝隨隧邃鐵燨險鐿儹躑屬鐲鄹", //21"鑌镲躔囅摛躕攛鑊鑒癬跫懾襲隰驍鑄", //22"鑣黲髑镥颥鱔鑠鷥髓鼷鱚纖鷴攢臟齇鱒", //23"镈蠶讒讖矗鑫瓚驟", //24"鑶镵鲿躥鑭躡鑲贓", //25"饞镩驥鑷釃躚趲", //26"黷鑾鑼顳鉆", //27"齼", //28"", //29"爨" //30// </editor-fold>},{// <editor-fold defaultstate="collapsed" desc="1:木">"", //0"",//1"",//2"干工弓丌及孑巾久口廿乞彡已",//3"卞丐公勾介今斤亢孔木牛亓欠犬牙元月勻",//4"本尕甘功古瓜宄卉加甲叫句巨卡可叩卯巧丘囚去外未五仡玉札", //5"朳朵尬各共乩吉伎奸幵囝件交臼伉考朽旭匡夼企犰曲戎仰吁聿朱竹",//6"杓材岑杈床村杜呃伽改桿杠告更攻估谷庋咼囯旱何吼肓妓忌夾見角癤劫妗究局姖君佧扛囥殼克扣困伲你杞扦羌劬卻杉我吳吾扤杌匣嚇杏言吟杖", //7"昂枊板杯杵東妸扼枋斧稈杲疙供咕姑孤固呱乖官果杭忽昏肌亟佶技季佳肩艽佼屆巹京糾赳玖疚居咀具卷咔咖抗肯空枕枝快狂林枚杪艿呢杻杷枇其奇歧穹虬屈券枘松枉臥析呷欣芎厓兗杳宜竺杼",//8"柲柄柴柢芏俄枹尜肝柑竿疳肛缸紇革虼哏狗枸牯故冠咣皈軌癸柜哄訇虹芨咭級急紀既枷叚架建牮姜姣皆界疥蚧矜勁扃九韭拘狙拒軍看柯科咳客芝哐柃柳咯芒怩昵拈柈芃枰祈芑契恰芊俏俅酋畎芍柿柁柝芄玩俠狎柙相枵彥奕弈疫羿胤柚禺竽芋柵柘枳柱斫柞",//9"桉芭笆柏栢梆芐栟屙婀苊芳芬粉芙酐紺羔高哥格鬲哿根耕哽肱恭蚣躬拱貢股骨罟掛倌桄鬼桂袞核桁訌笏花桓恢唧姬屐笄笈脊記珈家痂恝兼豇狡訐拮桀芥衿肼弳徑柩桕疽桔俱倨娟倦桊雋拷栲珂疴恪倥恐芤栩祗哭庫框括栝栳栗匿臬耙芘棲芪耆豈起氣虔肷芡衾芩芹祛拳缺桑芟秫栓凇筍桃桐砼桅芴奚哮校芯椏芽芫唁苡倚癰邕娛圄峪原紜蕓笊芷桎株桌",//10"茇苞苯笨苾梐彬梣茬趁笞茌崔笪笛兜軛梵苻桴符苷敢舸梗珙茍笱蛄梏牿胍規匭國悍捍偈寄笳袈戛蛺胛徦假堅枧趼健皎教秸婕堇近婧竟救苴趄苣捐眷桷捃胩康苛氪啃寇許苦眶悝盔悃捆梱婪笠啉苓茅茆茂梅苠茉苜旎偶苤笸啟棄乾悄茄卿頃筇蚯區蛆朐娶悛圈痊苒若嗇苫梢苕笙倏梳術笥桫梭苔梯笤梃桶偓梧悟晤狹廂梟偕械研厴眼悒挹翊茚英唷圉庾苑笮苧棁茁梓", //11"棒筆草策茶棖茺楮篅荈棰茈茨答等第棣迭棟筏棼茯尷皋胳袼給茛轱觚酤詁雇棺貫胱晷貴棍聒槨皓閎喉荒茴嵇極戢棘殛集幾掎悸迦袷跏間犍薦絳茭椒蛟絞窖喈街杰結筋藎阱景痙窘啾廄掬椐莒詎距犋掘珺喀開凱閌鈧軻棵控椋植筐貺傀喟蛞棱荔絡犖荬棉茗猊棚椑期欺祁棋掐掮茜嵌強羥喬邱球詘蛐荃筌荏茸茹阮森篩耜覃棠茼統筒橢皖稀廈筅荇悻荀雅掩雁堯傜荑椅茵硬喲馭飫寓棧棹茱椎棕最",//12"嗄荸箅筴搽猹槎茝椿榱戥荻椴莪蛾愕楓莩該陔賅戤概感幹筻嗝塥跟綆詬彀痼詿琯詭跪嗬荷猴逅畸嫉楫麂莢嫁揀筧減楗毽醬郊跤腳敫揭詰睫解僅禁靳經莖睛脛敬迥揪舅琚雎櫸絹筠揩慨楷戡莰稞窠嗑筘廉楝窟夸蒯誆揆暌琨髡廓莨楞莉蒞琳莽莓楣娩募楠逆睨筢榀莆頎琦琪祺僉愆箝嗆檣愀琴勤傾楸詮輇裙群嗓莎筲椹筮豎頌荽莛荼莞萵斡珷皙暇薟莧楔歇莘楦靴筵罨楊椰業義肄楹莜蕕莠愚榆瘐預御楂楨孳罪", //13"菝榜菢菶萆菜菖萇嘗篪椽菙萃萏菪凳摁菲榧菔嘎蓋趕綱睪膏搞槁誥郜歌搿箇郠構菇菰箍鼓褂管逛緄幗蜾菡赫瘊槐萑夥箕暨跽嘉郟瘕箋菅搛戩僭降僬僥餃酵截竭誡骱緊廑菁腈兢僦裾菊矩皸菌郡愾犒裉箜榛箏骷酷筷魁睽匱愧萊榔菱榴榪樠萌墓幕萘箄裴菩榿萋嘁萁旗綦綺葺搴歉槍敲僑誚篋輕箐逑賕巰蜷綣榷榮榕箬瑟菽槊菘算榫榻萄萜菟菀偽萎菥簫榍榭菸厭釅疑瘞蜴螢郢萸語嫗箢瑗愿菑榨寨肇菹",//14"葆萹箯標槽箣郴樗樅稻噔蒂腭樊葑橄稿葛賡鞏穀廣媯瑰郭摑葒篌糇葫槲篁蝗嘰緝赍稽瘠擠稷葭價駕稼儉翦賤腱箭僵槳嬌膠噍頡羯槿儆獍鬮樛駒踞蒈慷靠頦瞌蝌課緙摳萱箴侉儈寬款誑葵醌閫樓面模耦葩篇葡槭葜慳槧慶窮煢萩蝤葚樞樘葶葳葦蒍嫵葸瞎賢緗葙箱蝎樣儀誼毅瑩媵窳葬樟荮著箸醉",//15"蓓蓽篳蓖篦蔀篰蒼橙篘莼篤餓諤鄂閼萼遏噩蒽篚噶篙糕縞膈骼鴣轂摜龜輥過蒿嚆橫黌骺鱟樺慌隍葷機畿墼蒺劑冀髻頰縑蒹諫踺彊耩犟撟徼縉噤頸憬橘舉踽窶鄄橛麇瞰眍篥蓄蓁蒸褲噲窺憒夢蒲樸器褰黔橇橋憔樵撬鞘親擒檎螓檠磬遒鼽糗趨鴝磲橈蓉蓐穡樹蒴蒜蓀蓑蓊樨縣橡筱嘯諧閻諺窯縊蔭縈鎣嬴穎閾遇圜樾筑篆嘴樽",//16"蒡蔽檦檗蔡檉蓯蔥蔟簇檔瞪懂蔸篼搟鴿篝購媾鴰館簋蟈馘癀檜豁擊璣激嚌覬艱韉撿檢謇講蔣鮫矯階鮚鞠鞫據颶糠顆髁懇蓮聯斂蓼蓿蔻挎獪虧欄檑檁蔞簍簏蔓懋甍蔑篾蔦蓬蹊謙瞧擎罄蕖闃篸蔌簌檀蔚檄蓰轄罅薌魈蔫檐營獄岳簀蔗櫛賺樁", //17"檳檫蕆槌簞簦簟蕫鵝額顎蕃擱隔鯁遘覯鵠瞽歸鯀簧蟥蕙獲犄蕺蟣鯽鰹瞼裥簡谫檻糨蕉謹覲舊屨瞿鵑蕨騍蕢簣聵攔瞢擬膩檸騏騎蕁襁鄡蕎竅翹苘軀璩覷鬈蕘繞蕤蕊蔬梼檮隗魏蕪黠蕈顏蠅鵒蜮簪蕞", //18"薜簸櫥薋蹬櫝臌關獷薅薨蕻謊薈譏薊韁繳轎醮襟饉鯨鬏绔胯膾曠鯤擴蕾櫪櫟櫓麓難鯢攀麒髂簽薔蹺繰黢醛薩薯薇蕹蕭肖擷薤蟹薪薛贗遺蟻薏蕷籀", //19"藊藏櫬籌篡鶚鱷藁鰉攉蠖籍繼艦藉警競齟遽醵覺闞懸嚳跨鄶纊饋藍籃櫳櫨檬藐篷臍蠐薺騫瓊鰍勸薷薹犧獻薰嚴邀議櫞黦櫧橥纂", //20"藨鶻顧鰥顥饑雞殲鶼繭贐夔藜藕鞒驅饒藪藤囂藥藝齦鶯櫻蘊",//21"藹龔瓘蘅驕懼鱇鄺籟藶藺蘢籠蘆蘑孽蘋蘄氍權蘇儼癭齬鬻",//22"欑蘩蠱鱖藿鷦驚鷲蠲蘞蘭欏驀蘗蘧癯蘚鼴驗驛鷸", //23"靄籪贛羈攪蘺籬釀衢齲魘鷹攥", //24"觀鱭髖欖蘿籮蘸纘", //25"蠼躦", //26"顴讞", //27"籩戇欞", //28"",//29"" //30// </editor-fold>},{// <editor-fold defaultstate="collapsed" desc="2:水">"", //0"", //1"勹卜乜", //2"凡亡下子", //3"巴比不歹反方分夫父互戶化幻毛爿匹片壬卅水文毋勿", //4"叭白半包北必弁卟布弗付夯禾弘乎玄矛民皿末母仫目丕皮氕平叵仨兄穴疋印匝", //5"扒百冰并凼伐帆氾犯仿妃份缶伏亥好合冱回汁米糸名牟仳牝乒收汀危向刑行兇休血", //6"吧夿弝伴貝伻皀佊吡妣庇別兵伯孛吥步汊池汎妨彷吠吩佛否呋孚甫汞佝含罕汗亨宏囫弧汲即江戒況冷忙尨每羋妙尿妞伾屁汝汕汜忘尾污汐希孝形汛妤妘", //7"岸八把爸扳攽版扮姅孢卑屄沘彼畀忭抃汳汴表秉幷帛瓝沉沌泛房放非氛汾忿奉扶府咐阜侅岡汩卦沆呵劾和佫呼虎或泐盲牦沒妹門氓孟汨宓明命歿沫侔姆沐牧忸扭狃拋咆庖呸沛佩帔朋批沏汔汽沁沙沈汰汪味汶沃武物弦冼享協忻幸洶沂雨沅咂沚狀", //8"疤拔拜拌保抱背祊甭泵毖扁窆拚便昪波泊勃哺怖匆沲法畈飛沸狒玢風封鳧怫拂俘氟罘拊訃負泔沽哈孩河很紅泓侯后厚狐怙徊奐宦皇虺噦計沮炬姥淚泠泖昴冒玫眉美昧虻咪弭泌沔勉眇秒咩抿泯抹哞某拇泥拍哌泮叛盼狍泡皰怦抨披毗姘品屏潑匍柒泣泅泉染嬈沭泗沱咸香巷泄卸泫澩妍沿泱盈泳油沾沼治注", //9"氨粑唄班般舨豹趵倍倴畚秕俾舭畢珌髟俵病玻砵亳庯秤臭泚洞娥洱肪紡舫肥匪肺紛峰俸服祓蚨俯釜害氦蚶邗函航耗盍狠恨哼恒洪候祜洹洄恚活洎浹津酒恤洫洌洛馬邙旄們勐洣敉秘眠眄珉秣毪畝紐俳派畔袢旁配疲蚍拼娉俜洴珀哱圃凄訖迄洽洳灑殺紗娑洮洼洧紋蚊務洗效脅紲洩屑恂洵訓衍洋洇耘拶洲洙濁", //10"捌豝胈敗絆邦浜胞狽被偝偪逼閉狴婢庳敝貶匾徧彪婊邠斌浡舶捕涔唇訛返販訪啡酚唪趺麩紱紼浮匐艴婦夠海酣浛毫浩盒痕珩唿唬扈瓠患凰悔彗晦婚貨浸涇涓浚虛浪流麻麥脈曼袤浼瞇覓密冕喵苗敏眸涅徘胖脬袍匏胚旆烹啤偏殍票貧婆粕浦渠澀涉涑挲涕涂晚望偎浯浠習涎消邪挾婞讻雪涌魚雩浴浙浞", //11"跋阪湴綁傍棓報悲邶備賁絣琫诐邲弼皕赑揙猋幖邴啵博跛钚瓿淳淙淬淡發番飯邡防扉淝悱斐糞馮稃跗涪袱幅復傅富淦蛤涫胲頇邯涵寒喊琀絎淏訶喝涸訸賀惚淮喚徨蛔惠混耠惑漸荊涼淶淋淩淥淪傌買茫蛑貿帽媒媚寐捫悶猛脒冪黽描淼閔淖排牌跑彭捧邳痞胼評迫普淇淺清脎深淑涮淞淌淘添淟涴雯渦無淅喜閑現項淆雄徇涯淹液淫淤淯淵云粥涿淄", //12"靶頒斑斒稖雹陂琲迸嗶愊愎痹辟閟惼颮稟摒脖渤補測滁渡沨蜂脯溉港傼頏嗥號郃貉郈轷湖猢琥郇換渙豢惶湟揮暉匯會賄喙毀渾賈湔茳湫較粳鳩渴粱溆雷媽嗎湄猸渼盟迷渺湣愍酩莫貊脲琶湃湓琵媲睥犏剽聘瓶裘惹綏湯湍微湋渭渥熙湘渫渲湮游渝郁渣湛湞滯渚煮", //13"搬蝂飽悖繃嘣鼻幣潷裨弊碧馝稨滮裱賓菠駁搏僰箔逋滄滀呆滌滇緋蜚腓翡僨瘋逢鳳孵郛福輔腑滏腐閣溝嘏寡滾嗨豪滈閡菏瑚華滑猾瘓滉琿誨魂溷禍溘溧溴濫溜犸嘜嘛幔髦瑁瞀么酶艋蜢嘧蜜綿瞄滅閩鳴冥溟暝嫫麼陌寞溺滂搒脾羆蜱嘌嫖萍頗仆溥蜞溱溶溽颯飼溲溯溻溏滔網瘟聞郚舞郗溪攜熊踅熏窨溢滎源滋滓", //14"鲃魃罷瘢魬褒鴇褓暴輩褙骳奔陛腷駜髲編蝙褊緶麃摽憋餅葧踣餔部漕浐蝽漘醇滴幡范魴誹膚幞蝠駙賦腹蝜蝮澉緱盥虢憨漢撖頜褐滹滸滬嘩踝逭漶輝麾慧漿漣漩震漤凜漏漉履落瑪碼祃勱賣鞔滿慢漫漭貓蝥貌霉魅緬緲廟緡瞑摸摩漠墨慕暮漚蒎盤醅賠噴嘭郫陴翩漂魄噗漆憩滲漱霆萬逶嬉蝦餉霄勰寫演漾漪潁漁漳漲漬", //15"澳鲅辦鮑虣憊糒甏嬖觱鮅鞞遍辨瘭儐撥餑播鲌膊馞潺潮澈澄霏奮憤諷撫鮒骸駭頷翰翮醐寰遑潢諱閽餛澗澆潔噱潰潦澇霖螞罵瞞螨醚憫螟瘼默謀霓凝潘螃耪陪霈澎膨駢蹁諞瓢瞟撇瞥頻鲆撲氆潛潤撒霎潸潲澠澍澌潭燙潼隈溈潿閿憲廨興學潯鄅沄", //16"癍幫謗蹕臂褾豳擘澹點淀璠繁鼢縫縛醢鼾韓憾撼嚎鴻觳浣擐璜隳澮諢濂闊蒗澧潞嬤縵蟒蟊彌謎糜謐摹膜濃蟠貔縹螵嬪皤璞霜濉禧霞鄉鲞褻懈獬鱘澡澤澶", //17"鼥鞴鄙斃濞髀奰鞭飚蹩濱擯殯袯鵓馎鵏闖蕩翻黻賻覆馥濠闔鄠鯇繢蟪濟謾鄚朦鄍謨饃貘濘蹣蟛癖濮濡鯊濕穗濤濰隙獯瀅雜濯", //18"瓣鵯襞瀌癟薄醭簿瀍鶉瀆蹯鯡羹鞲鲴繯繪嚯濺獵瀏濼懣懵蠓禰靡湎鹋鵬騙鄱譜蹼瀑擾霧瀉霪", //19"膀齙鲾避襣躄鳊辮穮繽瀕蠙臏黼鰒瀚蠔鶘懷還瀨瀝瀧瀘邁顢饅鹛蠛魔譬嚷邂瀣瀠瀛潴", //20"黯霸辯驃膘飆襮藩瀵鶴轟護瀲瀾露獼靦邈霹鼙鰭瀼攘瀟醺瀹", //21"邊鰾鱉灃灌驊歡獾霽漓霾鰻艨鳘耱瓤穰灄響饗鱈藻", //22"鷩變鲼鬟禳灘", //23"蚌髕鬢霍轡顰躞", //24"灞酆灝鹱漯蠻蘼襻", //25"灣", //26"灤纈", //27"滟戅", //28"", //29"骉" //30// </editor-fold>},{// <editor-fold defaultstate="collapsed" desc="3:火">"",//0"",//1"刁丁二力了", //2"彳大孓之女勺巳乇幺弋丈",//3"尺丹吊仃斗火井支仂內日太天屯午爻仉止中",//4"丙代旦叨氐叮冬叻立尥令另奶尼奴冉他它田仝仗召只左",//5"吃弛打忉氘多耳旮亙光尖匠她決旯老耒劣六甪氖囡年乓全肉同氽佤妄吆宅兆旨至仲自",//6"犴呈辵呔甙但低弟佃甸玎疔盯豆囤旰灸良牢李利吝伶呂卵免男吶佞弄努求忐忑町廷佟彤吞托佗妥巫妖佁佔志豸住灼姊足",//7"哎佰長炒坼侈炊佽徂耷妲沓岱宕到的狄底玓典店耵定咚侗抖妒咄剁佴昉炅昊戽姐咎抉炕兩爭政知直昆剌來佬肋例戾冽囹呤侶侖旻奈呶妮念弩瘧妾炔乳侍帑弢忝佻帖投罔昕炎佯易找制帙炙忠隹卓",//8"炳抶抽怛待怠殆眈抵帝酊訂段祋盹盾哆哚赴拐曷烀咴姞柬炯玦俊憐亮拉厘俚俐咧拎律哪娜柰耐南怒虐炮炱泰炭畋殄亭突凃拖拓歪紈肟炫紃殃徉咬映昱怨災炸招昭者貞祉致盅重紂胄炷籽秭耔奏",//9"哧恥翀娖玳耽疸紞島倒娣玷爹瓞凍恫蚪躉耿烘恍疾晉玨倔烤倆涼畜烜朕肢值朗烙哩娌料烈玲瓴凌留旅倫倮耄拿納肭衲孬能娘恧衄哦秦恁朊芮蚋偌曬晌恕朔趿肽唐倘討套特疼屜倜恬甜挑條庭挺徒彖庹挖撾倭烏娭夏訊迅秧烊窈舀旃展站珍秩舯衷冢祝倬笫恣",//10"唉捭蛃晡眵敕從湊紿帶袋聃膽啖蛋盜羝頂啶動敚舵阨珥烽晗焓焊斛將狷訣觖徠狼勒梨貍猁唳粒梁聊羚翎聆蛉婁鹵鹿略圇捋珞那婥訥您胬戚軟晟胎酞貪袒啕剔悌糶烴停珽屠豚唾媧襪烷挽焐晞烯珣珧斬張章帳啁偵振執痔窒舳捉啄眥傯",// 11"掰焙采場焯掣程塍嗒傣貸單氮悼登迪覿詆邸睇掂阽惦跌喋耋痘短惇敦掇邇焚鈥焦接嗟晶就厥吭詈晾量欻診軫證焜啦喇瑯稂勞犁喱理傈痢捩裂趔琉硫虜掠掄捺喃赧捻儺晴閏婼邰毯探掏啼腆掭祧迢貼婷痛飩跎酡惋惘喔窩幄尋循巽焱蛘軺軼媛哲蟄彘智痣軸粢", // 12"稗煲煏煸裎嗤媸馳傳搭靼迨亶當碭嗲電殿揲牒鼎督煅頓躲惰跺煩觥煳煥煌晃幌詼跡煎煉煊睞啷廊酪誄傫愣蜊里賃零旒僂賂輅琭祿路亂煤睦乃惱農暖逄稔塔痰逃綈提跳蜓艇退煺蛻脫馱陀頑脘畹煨煒蝸熄煙琰揚旸煬徭虞煜詹盞照罩蜇郅置雉追惴琢貲觜趑訾", //13"熬暢塵逞瞅綽瘩搗嘀嫡遞腚胨郖逗端對裰奪爾裹伙獎盡愷奩連踉僚寥廖瘌辣罱郎嫪嫘酹嘞嫠粼綾領熘綹嘍陋綠綸裸雒瑙嫩寧喏搦熗熔煽裳臺態嘆搪耥趟慆慝滕逖惕裼舔蜩通透圖團籜蜿綰腕誒鞅瘍搖熒毓搌綻嫜彰脹幛趙這禎種逐綴緇",//14"皚僾熛噌層徹踟齒憏憃除褚踔逴輟腠褡逮儋彈德敵骶締踮調蝶董陡緞餌緩踐瑾進噘練諒輛嘹寮陣鴆征諍賚閬嘮樂黎厲撂劉瘤摟魯逯戮慮輪論腡駱熳鼐腩蝻腦鬧餒輦儂駑挪噢僻熱熵踏駘談郯賧羰瑭躺鋱踢緹髫摶褪駝膃輞腰瑤熠熨暫摘獐賬折輒赭質觶腫駐縋禚輜", //15"撤陳撐鴟熾儔輳達殫撣憚導道燈諦諜蹀都賭憝噸燉遁踱燔積撅獗璉撩獠燎璇臻賴襤螂撈擂縭璃罹歷廩陵遛龍瘺盧陸錄燜撓鲇噥諾逎燃燒燊遂鮐曇糖螗絳陶蹄醍頭暾鴕橐熹曉謔焰鴦曄燚燠璋瘴踵豬撰贅諮髭",//16"曖餲燦齔瞠騁丑黛擔癉擋蹈隊鴯鮞燴績琎爵褳殮魎療闌癆縲儡勵隸臨瞵磷懔隆耬螻縷螺麋繆黏嚀騃燧遢蹋餳膛螳醣謄嚏瞳疃臀襄燮謠遙繇燥擇輾蟑褶鷙膣螽燭縱", //17"癡蟲戳叢戴燾鞮癜斷懟豐燼糧繚職醪耢釐禮鯉膦嚕轆璐謬蟯耨懦適曙抬鵜題闐餮魍曛曜燁瞻障遮謫贄擲躓轉騅擢", //18"薆擺爆蹭嘲蟶歠骴噠襠鄧鯛鶇胴蹲齏際譎蹶簾臁蠊臉襝遼鄭羸類離麗嚦鄰遴轔鯪餾嚨擼廬氌蠃蟆攆膿龐曝蹻爍譚韜鼗璽鄩繹贈鄣轍騭鯔", //19"寶闡鄲黨鰈竇嚼矍懶黧醴癘齡騮朧攏爐擄羅糯飄贍獺撻騰齠鼉曦耀贏躅", //20"纏躊躋爝臘蠟癩斕覽爛累儷疬瓏髏騾曩鰨鰷鰩鷂灶囀饌齜",//21"顫齪糴疊讀龕鰱邋糲躐鷚聾癃窿臚艫孿囊攝贖儻饕聽彎鷓", //22"讎戀鷯蠣鱗麟轤攣欒玀猱攤體顯",//23"螭韃癲蠹攫靂讕鱧靈隴鷺讓闥癱廳齷鳣", //24"叆纛攬鬣酃顱臠摞囔", //25"邐酈驢邏瘰攮", //26"讜纜鸕鱸驤", //27"魑躒轢", //28"驪躪", //29"鸝鱺鸞馕" //30// </editor-fold>},{// <editor-fold defaultstate="collapsed" desc="4:土">"", //0"一乙", //1"又", //2"己山土丸兀丫也尢于", //3"厄切王卬夭尹引尤友予曰允", //4"凹瓦戊矽央以永用由右幼孕仔", //5"吖安充地圪艮圭灰圾岌戌圳圮屺戍似吐圩仵伍伢羊伊衣圯夷亦屹因有宇羽", //6"岙岜坂坌辰坊坩均坎坑牡圻岐岍坍禿完位圬氙峴呀岈延冶矣佚役邑吲甬攸卣佑余歟玙址", //7"艾坳垇坻坫礬附矸岣岵岬坷岢岫盱坤垃峁岷坭爬帕坢坯坪坡坦坨宛往旺委忤亞奄肴夜依抑佾詠呦侑於盂臾昀狁", //8"哀垵拗砭垞衩昶垤垌峒肚砘垛堊垡垓垢砍砉奎趴怕盆砒坰哇娃威韋畏胃甕屋侮型峋押埡婭砑咽匽怏垚姚要咿怡咦姨艤姻音垠俑勇幽疣羑囿宥紆舁禹垣爰約玥窀", //9"啊唉埃砹鵪俺按案盎敖芺峬城埕砥峨恩砝砩個埂堝軒砬埒埋砰破埔砌峭竊容埏砷堍砣娓翁唔阢峽蚜氬懨胭宴晏氧恙眙酏益殷氤蚓祐迂邘育彧眢員袁砸砟砧肫", //10"挨庵唵埯崩埠堾埭崠硐堆崗硌崮硅崞胡基崛崆勖崢埴堀崍硭埝鳥啪培堋埤崎畦牽眭堂窕眺婉唯帷偉尉迕捂牾硒崤硎琊崖啞訝迓崦焉偃癢野痍移異埸翌狺寅迎塋庸恿悠蚰蚴狳域欲蛭", //11"捱媕啽晻胺媼傲奡堡堛嵖硨堤奠堞惡費黑堠畫黃堪跖喹嵐塄嵋垴蛙崴為圍幃惟喂硪婺痦翕硤翔硝硯堰揶掖猗壹詒迤貽胰喑堙喁釉崳黿粵越崽", //12"阿矮愛嗌揞暗嗷嶅廒奧碑碚碘碉碇碓痱話觟嵴堿塏詡塊跬裊硼圣嵊嵩塑碎塌塘填琬碗嵬猥痿艉猬溫嗡握嗚蜈塢勛塤睚衙揠蜒爺揖飴詣意裔飲傭雍蛹猶猷瘀園圓援塬氳惲暈慍輊稚嵫", //13"骯獒塝碥碴墋誕碲墊碟砜閨監碣境墚頊噓墟逵壸嶁墁嘔碰塹嶇墑塾墅碩碳維瑋誣誤寤瑕鞋碹腌嫣耶腋祎旖夤瑛墉踴誘與鳶冤猿殞翟嶄嶂墜準", //14"腤鞍璈墺嶓嶒墀磁磋嶝墩墮廢墳磙嘿糊蝴嶠磕糈蝰嶗磊嶙碾嬲歐毆慪磐嵚確豌緯諉衛慰廡嫻鴉養噎葉靨億逸影慵憂郵魷蝣牖諛緣院閱增磔", //15"噯嬡諳聱螯懊磅壁磣慣衡墾垮磨甌磧墻融壇違謂憮歙遐鴨閹燕噫頤嶧殪陰壅馀豫鴛螈運鄆醞磚", //16"癌隘闇鮟醠遨謷磴礅鮭壕壑磺磯礁壙嶺磽嶸闈鮪鄔壓陽嶷憶懌翳應嬰膺擁優黝隅嶼轅遠龠鄖", //17"礙璦盫襖蹦璧礎礓壘謳韙鄢醫黟彝癔鄞鄘鼬隕韞", //18"爊礤壞疆壢壟壚穩鵡騖臆臃韻", //19"驁巉礦巋礫壤鼯鶩鄴癮嚶罌", //20"鰲礴蠡礪礱碌礞巍攖譽躍", //21"巔巒鷗懿隱瓔鳙饔", //22"孌巖纓", //23"壩罐鹽艷囈", //24"", //25"", //26"", //27"鸚", //28"鸛", //29"" //30// </editor-fold>}};//用于命名的中文集private static final String[][] charater={{// <editor-fold defaultstate="collapsed" desc="0:金">// </editor-fold>},{// <editor-fold defaultstate="collapsed" desc="1:木">"", //0"",//1"",//2"干弓及久",//3"今木牛元月勻",//4"本甘功古瓜加巨卡可巧五", //5"朵各共吉旭竹",//6"更估谷囯", //7"東孤固佳京玖居林其奇欣宜",//8"冠虹九柯科芝",//9"柏高格珈家豈起娛",//10"若英", //11"棟貫皓街杰景開凱森雅茵",//12"琦琪群業", //13"嘉酷",//14"標",//15"樹橡樽",//16"", //17"", //18"關", //19"藍", //20"藝",//21"",//22"", //23"", //24"觀", //25"", //26"", //27"", //28"",//29"" //30// </editor-fold>},{// <editor-fold defaultstate="collapsed" desc="2:水">// </editor-fold>},{// <editor-fold defaultstate="collapsed" desc="3:火">"",//0"",//1"丁二力", //2"大之",//3"丹火日太天中",//4"代旦立只",//5"多亙光六年全同兆至仲",//6"呈豆良利求廷彤巫妖志住足",//7"佰長典定昊兩爭政知直昆來炎易炙忠卓",//8"帝段盾哆哚俊憐亮厘俐律哪南泰亭拓炫殃映昱昭貞致重",//9"翀島倆值朗烙烈玲凌留拿納能秦朔唐特恬甜庭烏夏訊迅展珍",//10"湊帶蛋頂動舵珥烽晗焓將翎鹿略軟晟珽振",// 11"采場焯掣程單登迪晶量理晴閏尋循蛘哲智", // 12"馳傳當電殿鼎煌睦乃暖塔揚照", //13"暢端對熔臺通圖",//14"層德樂輪論熱", //15"達道璇曉焰曄",//16"隆", //17"蟲豐", //18"麗繹", //19"寶騰耀", //20"斕覽",//21"", //22"顯",//23"靈廳", //24"", //25"", //26"", //27"", //28"", //29"" //30// </editor-fold>},{// <editor-fold defaultstate="collapsed" desc="4:土">// </editor-fold>}};????
???? 三:算法
???? 主要代碼如下,至于當主體部分為任意多個漢字時一時想不到好的解決方案,索性用了個枚舉,最多只能起5個漢字,再多就沒意義了,你可以粗略算一下有多少種排列組合,程序要跑到猴年馬月啊,還有你見那個公司名的主體部分有五六個字的:
/*** 獲得給定前綴和后綴后滿足條件的漢字總筆畫列表* @param prefix 前綴筆畫總數* @param suffix 后綴筆畫總數* @param num 要起名的漢字數* @return 滿足條件的漢字總筆畫列表*/private static List<Integer> getUsableStroke(int prefix,int suffix,int num,int extra){if(num>5) throw new IllegalArgumentException("num>5");List<Integer> list=new ArrayList<Integer>();for(int i=0;i<MAX_STROKE*num;i++){if(isRightStroke(i+extra) &&isRightStroke((i+extra)+prefix) &&isRightStroke(prefix+(i+extra)+suffix)){list.add(i+extra);}}return list;}/*** 獲得滿足條件的筆畫數組合* @param list 滿足條件的筆畫列表* @param num 組合數* @param extra 已知筆畫的漢字數* @return*/private static List<int[]>getGroup(List<Integer> list,int num,int extra){if(num>5) throw new IllegalArgumentException("num>5");List<int[]> group=new ArrayList<int[]>();switch(num){case 1:for(Integer stroke:list){for(int i=0;i<MAX_STROKE;i++){if(i+extra!=stroke) continue;int[] temp=new int[1];temp[0]=i;group.add(temp);}}break;case 2:for(Integer stroke:list){for(int i=0;i<MAX_STROKE;i++){for(int j=0;j<MAX_STROKE;j++){if((i+j+extra)!=stroke) continue;int temp[]=new int[2];temp[0]=i;temp[1]=j;group.add(temp);}}}break;case 3:for(Integer stroke:list){for(int i=0;i<MAX_STROKE;i++){for(int j=0;j<MAX_STROKE;j++){for(int k=0;k<MAX_STROKE;k++){if((i+j+k+extra)!=stroke) continue;int temp[]=new int[3];temp[0]=i;temp[1]=j;temp[2]=k;group.add(temp);}}}}break;case 4:for(Integer stroke:list){for(int i=0;i<MAX_STROKE;i++){for(int j=0;j<MAX_STROKE;j++){if((i+j+18)!=stroke) continue;int temp[]=new int[4];temp[0]=i;temp[1]=j;temp[2]=10;temp[3]=8;group.add(temp);}}}break;case 5:for(Integer stroke:list){for(int i=0;i<MAX_STROKE;i++){for(int j=0;j<MAX_STROKE;j++){for(int k=0;k<MAX_STROKE;k++){for(int m=0;m<MAX_STROKE;m++){for(int n=0;n<MAX_STROKE;m++){if((i+j+k+m+extra)!=stroke) continue;int temp[]=new int[5];temp[0]=i;temp[1]=j;temp[2]=k;temp[3]=m;temp[4]=n;group.add(temp);}}}}}}break;default:break;}return group;}/*** 將所有滿足條件的主體部分輸出到界面和文件上* @throws Exception*/private void print() throws Exception{SimpleDateFormat format=new SimpleDateFormat("yyyyMMddHHmmss");String date=format.format(new Date());FileWriter out=new FileWriter(new File(prefix+"++"+suffix+"_"+date+".txt"));int count=0;char[] ch1,ch2,ch3,ch4,ch5;long startTime=System.currentTimeMillis();int extra=0;num=0;for(char ch:nameFormat){if(ch!=MATCH) extra+=getCharacterStroke(ch);else num++;}int pre=getNameStroke(prefix);int suf=getNameStroke(suffix);char[][] forSet=getCharForSet(element);List<Integer> strokeList=getUsableStroke(pre,suf,num,extra);List<int[]> group=getGroup(strokeList,num,extra);switch(num){case 0:System.out.println(prefix+new String(nameFormat)+suffix);break;case 1:count=0;for(int[] temp:group){ch1=forSet[temp[0]];for(int i=0;i<ch1.length;i++){StringBuilder result=new StringBuilder();for(char ch:nameFormat){if(ch==MATCH) result.append(ch1[i]);else result.append(ch);}result.append("/t");System.out.print(result.toString());parent.appendMsg(result.toString());out.write(result.toString());count++;if(count%COUNT_MAX==0){System.out.println("");}}}break;case 2:count=0;for(int[] temp:group){ch1=forSet[temp[0]];ch2=forSet[temp[1]];for(int i=0;i<ch1.length;i++){for(int j=0;j<ch2.length;j++){StringBuilder result=new StringBuilder();int flag=0;for(char ch:nameFormat){if(ch==MATCH){flag++;if(flag==1)result.append(ch1[i]);else if(flag==2)result.append(ch2[j]);}else{result.append(ch);}}result.append("/t");System.out.print(result.toString());parent.appendMsg(result.toString());out.write(result.toString());count++;if(count%COUNT_MAX==0){System.out.println("");}}}}break;case 3:count=0;for(int[] temp:group){ch1=forSet[temp[0]];ch2=forSet[temp[1]];ch3=forSet[temp[2]];for(int i=0;i<ch1.length;i++){for(int j=0;j<ch2.length;j++){for(int k=0;k<ch3.length;k++){StringBuilder result=new StringBuilder();int flag=0;for(char ch:nameFormat){if(ch==MATCH){flag++;if(flag==1)result.append(ch1[i]);else if(flag==2)result.append(ch2[j]);else if(flag==3)result.append(ch3[k]);}else{result.append(ch);}}result.append("/t");System.out.print(result.toString());parent.appendMsg(result.toString());out.write(result.toString());count++;if(count%COUNT_MAX==0){System.out.println("");}}}}}break;case 4:count=0;for(int[] temp:group){ch1=forSet[temp[0]];ch2=forSet[temp[1]];ch3=forSet[temp[2]];ch4=forSet[temp[3]];for(int i=0;i<ch1.length;i++){for(int j=0;j<ch2.length;j++){for(int k=0;k<ch3.length;k++){for(int m=0;m<ch4.length;m++){StringBuilder result=new StringBuilder();int flag=0;for(char ch:nameFormat){if(ch==MATCH){flag++;if(flag==1)result.append(ch1[i]);else if(flag==2)result.append(ch2[j]);else if(flag==3)result.append(ch3[k]);else if(flag==4)result.append(ch4[m]);}else{result.append(ch);}}result.append("/t");System.out.print(result.toString());parent.appendMsg(result.toString());out.write(result.toString());count++;if(count%COUNT_MAX==0){System.out.println("");}}}}}}break;case 5:count=0;for(int[] temp:group){ch1=forSet[temp[0]];ch2=forSet[temp[1]];ch3=forSet[temp[2]];ch4=forSet[temp[3]];ch5=forSet[temp[4]];for(int i=0;i<ch1.length;i++){for(int j=0;j<ch2.length;j++){for(int k=0;k<ch3.length;k++){for(int m=0;m<ch4.length;m++){for(int n=0;n<ch5.length;n++){StringBuilder result=new StringBuilder();int flag=0;for(char ch:nameFormat){if(ch==MATCH){flag++;if(flag==1)result.append(ch1[i]);else if(flag==2)result.append(ch2[j]);else if(flag==3)result.append(ch3[k]);else if(flag==4)result.append(ch4[m]);else if(flag==5)result.append(ch5[n]);}else{result.append(ch);}}result.append("/t");System.out.print(result.toString());parent.appendMsg(result.toString());out.write(result.toString());count++;if(count%COUNT_MAX==0){System.out.println("");}}}}}}}break;default:break;}long endTime=System.currentTimeMillis();parent.setMsgLabel("生產成功,滿足條件的名字共有 "+count+ " 個,共花費了 "+(endTime-startTime)/60000+"分鐘");parent.setBarVisible(false);out.flush();out.close();}
???? 程序運行結果:
?
總結
以上是生活随笔為你收集整理的公司起名工具,有了它你就是半仙了的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JQuery AutoComplete插
- 下一篇: qcon_从QCon旧金山2010获得的