8000 node-packages/packages/mugunghwa at main ยท hmmhmmhm/node-packages ยท GitHub
[go: up one dir, main page]

Skip to content

Latest commit

ย 

History

History

mugunghwa

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

README.md

๐ŸŒบ ๋ฌด๊ถํ™” (Mugunghwa)

Wiki

Mugunghwa

๐Ÿ”— ์‡ผ์ผ€์ด์Šค ๋ฐ ์†Œ๊ฐœ ํŽ˜์ด์ง€ ๋ณด๊ธฐ

ํ•œ๊ธ€ ๊ธฐ๋ฐ˜ 72์ง„๋ฒ• ์ธ์ฝ”๋”ฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

๋ฌด๊ถํ™”๋Š” 10์ง„์ˆ˜ ์ˆซ์ž๋ฅผ ํ•œ๊ธ€๋กœ ์ธ์ฝ”๋”ฉ/๋””์ฝ”๋”ฉํ•˜๋Š” TypeScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ํ•œ๊ธ€์˜ ํŠน์„ฑ์„ ํ™œ์šฉํ•˜์—ฌ ์ˆซ์ž๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ณ  ์ฝ๊ธฐ ์‰ฌ์šด ํ•œ๊ธ€ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

โœจ ํŠน์ง•

  • 72์ง„๋ฒ• ๊ธฐ๋ฐ˜: ํ•œ๊ธ€ ์กฐํ•ฉ์„ ํ™œ์šฉํ•œ ํšจ์œจ์ ์ธ ์ˆซ์ž ์ธ์ฝ”๋”ฉ
  • ๋น„์†์–ด ํ•„ํ„ฐ๋ง: ๋ถ€์ ์ ˆํ•œ ๋‹จ์–ด ์กฐํ•ฉ์„ ์ž๋™์œผ๋กœ ๋ฐฐ์ œ
  • ์–‘๋ฐฉํ–ฅ ๋ณ€ํ™˜: ์ˆซ์ž โ†” ํ•œ๊ธ€ ๋ฌธ์ž์—ด ์ƒํ˜ธ ๋ณ€ํ™˜ ์ง€์›
  • ์˜คํƒ€ ๋ณด์ •: ์œ ์‚ฌํ•œ ๊ธ€์ž์˜ ์˜คํƒ€๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜์ •
  • TypeScript ์ง€์›: ์™„์ „ํ•œ ํƒ€์ž… ์ •์˜ ์ œ๊ณต

๐Ÿ“ฆ ์„ค์น˜

npm install mugunghwa

๋˜๋Š”

pnpm add mugunghwa

๐Ÿš€ ์‚ฌ์šฉ๋ฒ•

๊ธฐ๋ณธ ์‚ฌ์šฉ

import { encode, decode } from 'mugunghwa';

// ์ˆซ์ž๋ฅผ ํ•œ๊ธ€๋กœ ์ธ์ฝ”๋”ฉ
const encoded = encode(31252352334);
console.log(encoded); // ์˜ˆ: "๊ฐ€๋‚˜-๋‹ค๋ผ-๋งˆ๋ฐ”"

// ํ•œ๊ธ€์„ ์ˆซ์ž๋กœ ๋””์ฝ”๋”ฉ
const decoded = decode(encoded);
console.log(decoded); // 31252352334

์ปค์Šคํ…€ ๊ตฌ๋ถ„์ž ์‚ฌ์šฉ

import { encode, decode } from 'mugunghwa';

// ์–ธ๋”์Šค์ฝ”์–ด๋ฅผ ๊ตฌ๋ถ„์ž๋กœ ์‚ฌ์šฉ
const encoded = encode(12345, '_');
console.log(encoded); // ์˜ˆ: "๊ฐ€๋‚˜_๋‹ค๋ผ"

const decoded = decode(encoded, '_');
console.log(decoded); // 12345

๋””๋ฒ„๊ทธ ๋ชจ๋“œ

import { decode, setDebug } from 'mugunghwa';

// ๋””๋ฒ„๊ทธ ๋ชจ๋“œ ํ™œ์„ฑํ™” (์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ ์ƒ์„ธ ์ •๋ณด ์ถœ๋ ฅ)
setDebug(true);

try {
  const result = decode('์ž˜๋ชป๋œ์ฝ”๋“œ');
  console.log(result);
} catch (error) {
  console.error(error); // ์ƒ์„ธํ•œ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ
}

// ๋””๋ฒ„๊ทธ ๋ชจ๋“œ ๋น„ํ™œ์„ฑํ™” (๊ธฐ๋ณธ๊ฐ’: false)
setDebug(false);
const result = decode('์ž˜๋ชป๋œ์ฝ”๋“œ'); // null ๋ฐ˜ํ™˜

CLI ์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉ

# ์ˆซ์ž ์ธ์ฝ”๋”ฉ
pnpm run encode 12345

# ๋ฌธ์ž์—ด ๋””์ฝ”๋”ฉ
pnpm run decode "๊ฐ€๋‚˜-๋‹ค๋ผ"

# ๋žœ๋ค ํ…Œ์ŠคํŠธ
pnpm run random

# ์œ ํšจ์„ฑ ๊ฒ€์ฆ
pnpm run validate

๐Ÿ”ง API

encode(index: number, separator?: string): string | null

10์ง„์ˆ˜ ์ˆซ์ž๋ฅผ ํ•œ๊ธ€ ๋ฌธ์ž์—ด๋กœ ์ธ์ฝ”๋”ฉํ•ฉ๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜:

  • index: ์ธ์ฝ”๋”ฉํ•  ์–‘์˜ ์ •์ˆ˜ (0 ์ด์ƒ)
  • separator: ๊ตฌ๋ถ„์ž ๋ฌธ์ž์—ด (๊ธฐ๋ณธ๊ฐ’: "-")

๋ฐ˜ํ™˜๊ฐ’:

  • ์„ฑ๊ณต ์‹œ: ์ธ์ฝ”๋”ฉ๋œ ํ•œ๊ธ€ ๋ฌธ์ž์—ด
  • ์‹คํŒจ ์‹œ: null (์Œ์ˆ˜, ์†Œ์ˆ˜, NaN ๋“ฑ)

decode(code: string, separator?: string): number | null

ํ•œ๊ธ€ ๋ฌธ์ž์—ด์„ 10์ง„์ˆ˜ ์ˆซ์ž๋กœ ๋””์ฝ”๋”ฉํ•ฉ๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜:

  • code: ๋””์ฝ”๋”ฉํ•  ํ•œ๊ธ€ ๋ฌธ์ž์—ด
  • separator: ๊ตฌ๋ถ„์ž ๋ฌธ์ž์—ด (๊ธฐ๋ณธ๊ฐ’: "-")

๋ฐ˜ํ™˜๊ฐ’:

  • ์„ฑ๊ณต ์‹œ: ๋””์ฝ”๋”ฉ๋œ ์ˆซ์ž
  • ์‹คํŒจ ์‹œ: null (์ž˜๋ชป๋œ ํ˜•์‹)

์œ ํ‹ธ๋ฆฌํ‹ฐ ํ•จ์ˆ˜

// ๋ณตํ•ฉ ๋‹ค์ง„์ˆ˜๋ฅผ 10์ง„์ˆ˜๋กœ ๋ณ€ํ™˜
decimalBase(maxMatrix: number[], indexMatrix: number[]): number

// 10์ง„์ˆ˜๋ฅผ ๋ณตํ•ฉ ๋‹ค์ง„์ˆ˜๋กœ ๋ณ€ํ™˜
multipleBase(maxMatrix: number[], indexDecimal: number): number[]

// ์˜ˆ์ƒ ์ธ์ฝ”๋”ฉ ๊ธธ์ด ๊ณ„์‚ฐ
expectLength(index: number): number

// ๋””๋ฒ„๊ทธ ๋ชจ๋“œ ์„ค์ • (์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ ์ƒ์„ธ ์ •๋ณด ์ถœ๋ ฅ)
setDebug(value: boolean): void

๐Ÿงฎ ๋ฌด๊ถํ™”72 ๊ตฌํ˜„ ์›๋ฆฌ

์™œ 72์ง„๋ฒ•์ธ๊ฐ€?

๋ฌด๊ถํ™”๋Š” ํ•œ๊ธ€์˜ ์ž์Œ๊ณผ ๋ชจ์Œ ์กฐํ•ฉ์„ ํ™œ์šฉํ•˜์—ฌ 72์ง„๋ฒ•์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹จ์ˆœํžˆ 72์ง„๋ฒ•๋งŒ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌด์ž‘์œ„ ๊ธ€์ž ์กฐํ•ฉ์—์„œ ๋น„์†์–ด๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋น„์†์–ด ํ•„ํ„ฐ๋ง ์ „๋žต

์ง์ˆ˜ ๋‹จ์œ„: 84์ง„๋ฒ• ํ™œ์šฉ

์ง์ˆ˜ ์œ„์น˜์˜ ๊ธ€์ž๋“ค์€ 84์ง„๋ฒ•์œผ๋กœ ํ‘œ๊ธฐํ•œ ํ›„, ๋ถ€์ ์ ˆํ•œ ์กฐํ•ฉ์„ ๋ฐฐ์ œํ•ฉ๋‹ˆ๋‹ค.

72ยฒ = 5,184
84ยฒ = 7,056
7,056 - 5,184 = 1,872

โ†’ 5,184๊ฐœ์˜ ์กฐํ•ฉ ์ค‘ 1,872๊ฐœ(36.1%)์˜ ๋ถ€์ • ์กฐํ•ฉ์„ ๋ฐฐ์ œ

ํ™€์ˆ˜ ๋‹จ์œ„: 98์ง„๋ฒ• ํ™œ์šฉ

ํ™€์ˆ˜ ์œ„์น˜์˜ ๊ธ€์ž๋“ค์€ 98์ง„๋ฒ•์œผ๋กœ ํ‘œ๊ธฐํ•˜์—ฌ ๋” ๋งŽ์€ ๋ถ€์ • ์กฐํ•ฉ์„ ๋ฐฐ์ œํ•ฉ๋‹ˆ๋‹ค.

84ยฒ = 7,056
98ยฒ = 9,604
9,604 - 7,056 = 2,548

๊ธฐ์กด 1,872๊ฐœ ๋ถ€์ • ์กฐํ•ฉ ์ œ์™ธ:
2,548 - 1,872 = 676

โ†’ 2,548๊ฐœ์˜ ์กฐํ•ฉ ์ค‘ 676๊ฐœ(26.5%)์˜ ๋ถ€์ • ์กฐํ•ฉ์„ ๋ฐฐ์ œ

๊ตฌํ˜„ ์„ธ๋ถ€์‚ฌํ•ญ

  • ์ง์ˆ˜ ๋‹จ์œ„: 72์ง„๋ฒ• + 12๊ฐœ ์ถ”๊ฐ€ ๊ธ€์ž = 84์ง„๋ฒ•
  • ํ™€์ˆ˜ ๋‹จ์œ„: 84์ง„๋ฒ• + 14๊ฐœ ์ถ”๊ฐ€ ๊ธ€์ž = 98์ง„๋ฒ•
  • ์˜คํƒ€ ๋ณด์ •: ์œ ์‚ฌํ•œ ๊ธ€์ž ์ž๋™ ์ˆ˜์ • ๊ธฐ๋Šฅ ๋‚ด์žฅ
  • ๊ตฌ๋ถ„์ž ์ฒ˜๋ฆฌ: ๊ฐ€๋…์„ฑ์„ ์œ„ํ•œ ๊ตฌ๋ถ„์ž ์ž๋™ ์‚ฝ์ž…
  • ๋ฐ์ดํ„ฐ ์••์ถ•: lz-string์„ ํ™œ์šฉํ•œ ์ธ์ฝ”๋”ฉ ํ…Œ์ด๋ธ” ์••์ถ• ์ €์žฅ

๐Ÿ“Š ์˜ˆ์ œ

import { encode, decode } from 'mugunghwa';

// ๋‹ค์–‘ํ•œ ์ˆซ์ž ํ…Œ์ŠคํŠธ
const numbers = [0, 1, 100, 1000, 1000000];

numbers.forEach(num => {
  const encoded = encode(num);
  const decoded = decode(encoded!);
  console.log(`${num} โ†’ ${encoded} โ†’ ${decoded}`);
});

// ๊ฒฐ๊ณผ ์˜ˆ์‹œ:
// 0 โ†’ ๊ฐ€ โ†’ 0
// 1 โ†’ ๋‚˜ โ†’ 1
// 100 โ†’ ๋‹ค๋ผ โ†’ 100
// 1000 โ†’ ๋งˆ๋ฐ”-์‚ฌ โ†’ 1000
// 1000000 โ†’ ์•„์ž-์ฐจ์นด-ํƒ€ โ†’ 1000000

๐Ÿงช ํ…Œ์ŠคํŠธ

# ํ…Œ์ŠคํŠธ ์‹คํ–‰
pnpm test

# ๋นŒ๋“œ
pnpm build

# ๊ฐœ๋ฐœ ๋ชจ๋“œ (watch)
pnpm watch

๐Ÿ“ ๋ผ์ด์„ ์Šค

MIT License

Copyright (c) hmmhmmhm

๐Ÿ”— ๋งํฌ

๐Ÿ“œ ํžˆ์Šคํ† ๋ฆฌ

  • TypeScript๋กœ ์™„์ „ํžˆ ์žฌ์ž‘์„ฑ
  • ๋ชจ๋˜ ๋นŒ๋“œ ์‹œ์Šคํ…œ ์ ์šฉ (microbundle)
  • ํฌ๊ด„์ ์ธ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ ์ถ”๊ฐ€
0