U E D R , A S I H C RSS

Programming Pearls/Column1


1. Cracking the oysters

ํŒŒ ‚ดšฉ˜ †ŒํŠธ –ด–ปฒŒ ํ•  ฒƒธ€?

1.1. A Friendly Conversation

Œ€€„˜ –ธ–ด—Š” †ŒํŠธ€ ดตฌํ˜„˜–ด žˆ‹ค. ทธŸฐฐ ƒˆกœšด ‚˜งŒ˜ †ŒํŠธ งŒ“ค–ด•  •Œ€ žˆ‹ค.  ˆฝ”“œ€ ํ•œ ฒœงŒฐœœ‹คณ  ํ•˜ž.ดฒƒ„ šฐฆฌ€ •Œณ  žˆŠ” „ธ”†ŒํŠธ, ํ€†ŒํŠธ ฐ™€ ฒƒœกœ ํ•˜ธฐ—Š” ฉ”ชจฆฌ€ งŽด “ ‹ค. 32bit(4byte)˜  •ˆ˜ณ  ํ•œ‹คฉด, 40ฉ”€ฐ”ดํŠธ€ ํ•„š”ํ•˜‹ค. ํ•˜€งŒ –ด–ค ž‘—…„ ํ• •Œ—, šฐฆฌ€ †ŒํŠธ— ํ• ‹ํ•  ˆ˜ žˆŠ” ณต„€ 1ฉ”€ ‚จง“ดณ  € •ํ•˜ž. ‹œ„ด งŽด  ค„œ„ •ˆœ‹ค. –ด–ปฒŒ ํ•ด• ํ•  ฒƒธ€? ด  ˆฝ”“œ“ค€ 7žฆฌ  „ํ™”ฒˆํ˜ธดธฐ •Œฌธ— ฐ™€ ฒƒด —†‹คณ  ํ•œ‹ค.

1.2. Precise Problem Statement

  • ž… ฅ : งŽ•„ ด• nฐœ˜  •ˆ˜. ฐฐ˜ n€ ฒœงŒณด‹ค ž‘‹ค. ˜‘ฐ™€ ˆซž€ ‘ฒˆดƒ ‚˜˜คฉด •ˆœ‹ค. ทธ ˆซžž‘ € จœ ฐดํ„€ —†‹ค.
  • ถœ ฅ : ˜ค„ฐจˆœœกœ  • ฌœ ˆซž“ค
  •  œํ•œ : ฉ”ชจฆฌ 1ฉ”€  •„ฐ–— ‚ฌšฉํ•  ˆ˜ —†Œ. ””Šคํฌ ณต„ „‰„‰ํ•จ. ˆ˜ํ–‰‹œ„ด ˆ˜„„ „˜œฉด •ˆจ. 10ดˆ  •„ฉด ดœฐฎŒ.

1.3. Program Design

ฒจ—Š” จธ€ †ŒํŠธ ํ–ˆ—ˆŠ”ฐ „ ธ‹ค. ‹คฅธ ฐฉฒ•œกœŠ”, ฐฐ˜ ˆซž 4byteกœ ํ‘œํ˜„ํ•˜ฉด ํ˜„žฌ ฉ”ชจฆฌ— 250,000ฐœ ‹ด„ ˆ˜ žˆ‹ค. 250000ฐœ †ŒํŠธํ•˜ณ , ˜ 250,000ฐœ ฝณ ... ดธ 40ฒˆ ํ•˜Š” ‹ค. จธ€ †ŒํŠธŠ” ค‘„ ž‘—… ํŒŒ—˜ —‘„Šค€ ž –ด‚˜ณ , ‘ฒˆงธ ฐฉฒ•€ ž… ฅ„ 40ฒˆ„ ฐ›•„• ํ•œ‹คŠ”ฒŒ ฌธ œ‹ค. ดฒƒ ‘€€˜ žฅ „ ž˜ กฐํ•ฉํ•ด„œ ž… ฅ€ ํ•œฒˆ, ค‘„ ž‘—… ํŒŒด —†ฒŒŠ” ํ•  ˆ˜ —†„Œ?

1.4. Implementation Sketch

„ํŠธงต, ํ˜€ „ํŠธ ฒกํ„ ถˆฆฌšฐŠ” ฐฉฒ•ด œ šฉํ• “ ‹ถ‹ค. ˜ˆ “ค–ด งฅ‹œฉˆ 10งŒ˜ ˆซž ํ• •Œ—, {1,2,3,5,8}„ ํ‘œํ˜„ํ•ด ณดฉด, (0 1 1 1 0 1 0 0 1 1)ด œ‹ค. žˆœฉด 1, —†œฉด 0ธ ฒƒด‹ค. ํ•œ ˆซž‹ 1„ํŠธงŒ ํ• ‹„ ํ•ด„œ, ทธฒƒ˜ ธŠคกœ ฒ˜ฆฌ ํ•˜Š” ฒƒด‹ค. •ž—„œ„ งํ–ˆ“ด, ‹ˆฉˆ งฅ‹œฉˆ˜ „ˆ„€ ž‘ณ , ฐ™€ ˆซž€ —†œฉฐ, € จœ ฐดํ„€ —†‹คŠ” ธกฉด—„œ ด ฐฉฒ•„ “ธ ˆ˜ žˆŠ” ฒƒด‹ค. Œ€ฐ•˜ ฝ”“œŠ” ‹คŒ ฐ™‹ค.
~cpp 
# ฐฐ—ดฐ’ 0œกœ …‹ํŒ…
for b in bits:
	b=0
# žˆœฉด 1
for e in inputFile:
	bits[e]=1
# 1ธฒƒงŒ ถœ ฅ
for b in bits:
	if b==1:
		print b

1.5. Principles

ดฒƒ˜ ˆ˜ํ–‰‹œ„€ ฮ˜(n)ด‹ค. ด •ํ„Š” ฌธ œ ˜ ŠฒŒ „„ํ•˜‹ค ณดฉด, €” —„ฒญ‚œ ด“„ € ธ‹ค „•Œ€ žˆ‹คŠ” ตํ›ˆ„ ณ  žˆ‹ค. ฌธ œ  •˜Š” ฌธ œ ํ’€ด˜ 90ํ”„กœ‹ค. ฐ˜ œกœ งŽ€ ณต„„ ‚ฌšฉํ•˜ฉด  € ‹œ„ด †Œš”œ‹คณ  ํ•œ‹ค. ทธŸฐฐ „ํŠธงต †ŒํŠธŠ” ‹œ„„ „ณ , ณต„„ „–ด“ค—ˆ”ฐ.  € ฐดํ„ ‹คฃจŠ” ฒƒ€, ทธฒƒ„ ˆ˜ํ–‰ํ•˜Š” ฐ— ”  € ‹œ„ด “ ‹คŠ” ฒƒด‹ค. ทธฆฌณ  ฐดํ„ ””Šคํฌ— ‘ธฐ ณด‹คŠ” ฉ”ชจฆฌ ƒ— ‘Š” ฒƒด ””Šคํฌ •ก„Šค ฐ™€ ‹œ„ ฆฌŠ” „ „ ˆ˜€ žˆŠ” ฒƒด‹ค. ํ”„กœทธžจ„ „‹จํ•˜ฒŒ งœž. œ €ณดˆ˜„ ‰ฝณ , ฒฌณ ํ•  ฒƒด‹ค.


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:24:03
Processing time 0.0210 sec