Skip to content

dev-wimes/nickname_gen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

nickname_gen

개요

c++을 이용해 nickname을 생성할 것 입니다.

필요 리소스는 본인의 이름뿐 입니다.

예를 들어 "홍길동"의 이름을 넣으면

홍길동에서 추출할 수있는 알파벳을 추출합니다.

알파벳의 조합을 이용해 nickname 이 될 수 있는 경우의 수를 모두 보여줍니다.

사용자는 그 중에서 마음에 드는 nickname을 고르면 됩니다.

알고리즘

nickname은 다음의 알고리즘을 따릅니다.

이름 입력

사용자의 이름을 unicode로 입력받고 저장합니다.

예를 들어 "홍길동"이라는 이름을 입력했다고 가정합니다.

"홍길동"을 unicode로 변환하면 0xD64D(홍) 0xAE38(길) 0xB3D9(동) 으로 변환됩니다.

알파벳 추출

추출된 unicode를 이용해 알파벳을 추출 할 것입니다.

3글자의 unicode로 이루어진 이름을 1byte로 쪼개서 저장합니다.

0xD6 0x4D 0xAE 0x38 0xB3 0xD9

이름을 10진수 26으로 나눈 나머지에 97을 더합니다.

alphabet[i] = ( alphabet[i] % 26 ) + 97

D6 -> 6 + 97 = 103 = g

4D -> 25 + 97 = 122 = z

AE -> 18 + 97 = 115 = s

38 -> 4 + 97 = 101 = e

B3 -> 23 + 97 = 120 = x

D9 -> 9 + 97 = 106 = j

alphabet = {g, z, s, e, x, j}를 추출 했습니다.

조합

모음: a e i o u y

자음: 모음외 나머지 알파벳

  1. 만약 모음이 2개미만이라면, 사용자는 모음하나를 추가해야한다. -> 알파벳 집합에서 모음있는지 찾아야함
  2. 사용자는 5~7사이의 nickname길이를 정해야한다.
  3. 모음은 연속을 허용한다.(ai, ae, aie, aoue 등 가능 ) ->
  4. 자음은 선택적 연속을 허용한다.(tt, ss 등 가능, ts, bt 등 불가능) -> 이전에 문자가 자음이었는지 알아봐야함. 현재문자와 비교
  5. 각 문자는 뒤에 같은 글자 최대 1번까지 올 수 있다.(단어내에 ee, ii, bb, cc, tt 등 존재가능) 그 이후에는 자음또는 모음이 와야한다.(단어내에 eee, iii, ttt, bbb 등은 존재할 수 없다.) -> 이전에 문자가 현재의 문자와 같다면 연속성 count +1 한다. 연속성 count가 만약 2라면 안됨
  6. h는 자음+자음에서 wild카드이다.(bh, ch 가능/bbh, tth는 불가능) ->이전에 h가 나왔다면 같은 단어가 나온것으로 취급(연속적이다 취급)

개발환경

  1. OS: MacOS 26.2

  2. language

    clang++ --version
    Apple clang version 17.0.0 (clang-1700.6.3.2)
    Target: arm64-apple-darwin25.2.0
    Thread model: posix
    

실행

clang++ -std=c++11 -O2 -Wall -Wextra main.cpp -o nick
./nick

About

닉네임 생성기 renew

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages