๋ฉฐ์น ์ slack์์ ์ธ๊ธํ๋ฏ์ด unshift!
๋ ์์๋ ์ ์์ง๋ง IMHO๋ผ๋ ์ด๋ฆ์ ์๋นํ ์ข์ง ์์ต๋๋ค. 1.0 ์ด์ ์ ์ด๋ฐ ๊ฒ๋ค์ ๊ณ ์น ๋์ธ๋ฐ ์ด๋์?
prepend
๋ฅผ ์ทจํ์ผ๋ unshift!
-> pushfront!
์ shift!
-> popfront!
์ด๋ป์ต๋๊น?
์ฐ๋ฆฌ๋ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ ๋ฉด์ ์ธ ์ด๋ฆ์ ๋ฐ๊ฟ ์ ์์ต๋๋ค:
| ์ค๋๋ | ์๋ก์ด |
|-----|-----|
| push!
| rpush!
|
| pop!
| rpop!
|
| unshift!
| lpush!
|
| shift!
| lpop!
|
๋๋ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ๊ฒฝ์ฐ ์ผ์ชฝ/์ค๋ฅธ์ชฝ(์์/์ข ๋ฃ? ์ฒซ ๋ฒ์งธ/๋ง์ง๋ง?) ํค์๋
์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ์ด ์ฝ๊ฐ ๋ชจํธํด ๋ณด์
๋๋ค. ์๋ง๋ @c42f
์ ์/๋ค ๋๋ ์ด์ ์ ์ฌํ ๊ฒ์ด ๋ ๋ช
ํํ ๊น์?
์๋ค๊ฐ ์ข์ฐ๋ณด๋ค ์ ๋ช ํ๊ฒ ๋ณด์ด๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋ฌผ๋ก ์ผ์ชฝ/์ค๋ฅธ์ชฝ ์ฉ์ด์ ๊ฒฝ์ฐ ๋ฒกํฐ๋ฅผ ์ธ๋ก๋ก ์ธ์ํ๋ ๊ฒ์ด ์กฐ๊ธ ์์ฝ์ง๋ง ์/๋ค๊ฐ ๊ทธ๋ฐ ์ ์์ ๋ ์ข์ง๋ ์์ต๋๋ค.
์, ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ด๋ฏธ l
๋ฐ r
๋ฅผ ์ถ์์์ ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก ์ ๋ก๊ฐ ์์ต๋๋ค. ๊ทธ๊ฒ๋ ๋ณ๊ฒฝํ๊ณ ์ถ์ง ์๋ค๋ฉด ๋ง์
๋๋ค.
์๋ค๊ฐ ์ข์ฐ๋ณด๋ค ์ ๋ช ํ๊ฒ ๋ณด์ด๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๋๋ ์ ๋ชจ๋ฅด๊ฒ ๋ค. front
๋ ๋ ๋ฎ์ ์ง์(์ Base.front
)์ ์ฐ๊ด๋๊ณ back
๋ ๋ ๋์ ์ง์์ ์ฐ๊ด๋ฉ๋๋ค. ํ์ง๋ง ์ฐ๊ด์ ์ข
๋ฅ๋ ๋ค์ํ๋ค๊ณ ํ์ ํฉ๋๋ค.
์๋ง๋ ๋ ๋์ ์์ด๋์ด: head
- tail
๋ฐ first
- last
๋ ๊ธฐ์กด ์๋ฏธ๋ฅผ ๊ณ ๋ คํ ๋ ๋ช
ํํ๊ฒ ๋ ๋ชจํธํด ๋ณด์
๋๊น?
hpush!
, hpop!
, tpush!
๋ฐ tpop!
์ ๋์์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ์ด๋ฏธ ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ์ foldl
๋ฐ foldr
๋ฑ์ ๋ฐฐ์ด ์์์ ์ฐ๊ด์ํต๋๋ค. ์ฌ์ค, l
๋ฐ r
๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋, ์ ์ฌํ ์ด๋ฆ์ pushl!
, popl!
, pushr!
๋ฐ popr!
์
๋๋ค.
์ง๊ธ๊น์ง ๋ค ๊ฐ์ง ๊ธฐ๋ฅ์ ์ด๋ฆ์ ๋ชจ๋ ๋ฐ๊พธ๋ ์ต์
์ค์์ pushl!
, popl!
, pushr!
๋ฐ popr!
์ ๋ฏธ์ฌ ๋ฒ์ ์ด ๊ฐ์ฅ ์ข์ต๋๋ค.
push!
๋ฐ pop!
์ด๋ฆ์ ๋ฐ๊พธ๋ ๊ฒ์ ๋ํด ์ฝ๊ฐ์ ์ ๋ณด ์ฌํญ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ฐ์ ์์ ๋๊ธฐ์ด์ ํธ์ ๋ฐ ํํ์ ๊ณ ๋ คํ์ญ์์ค. ์ด ๊ฒฝ์ฐ "์ค๋ฅธ์ชฝ"๊ณผ "์ผ์ชฝ"์ด ์๊ณ ์์ฐ ์์์ ์ต์/์ต๋ ์์๋ฅผ ๋ฐํํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ง ์์ต๋๋ค. ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๊ฐ์ ์ฌ์ ๊ณผ ํจ๊ป ์ฌ์ฉํ๊ธฐ ์ํด ํค๋ฅผ ์ฌ์ฉํ๋ pop!
๋ฒ์ ๋ ์์ผ๋ฉฐ, ์ด ๊ฒฝ์ฐ popr!
๋ ๋์ฌ๋ก ์๋ฏธ๊ฐ ์์ต๋๋ค.
push!
๋ฐ pop!
๋ ์ ์ง๋๊ณ PriorityQueue์์ ์ฌ์ฉํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ํ ๋ฐฐ์ด์ ๋ํด pushr!
๋ฐ popr!
๋ณ์นญ์ ์ง์ ํ ์๋ ์์ต๋๋ค.
๋๋ shift!
& unshift!
๋ฅผ ์ข์ํฉ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค. ์ด๊ฒ์ ์์ฝํ์ญ์์ค!
์ง๊ธ๊น์ง๋ ์ฒซ ๋ฒ์งธ ๊ฒ์๋ฌผ์ ์ ์์ด ๊ฐ์ฅ ์ข์ต๋๋ค.
push*!
์ pop*!
์ด๋ฆ์ ์ฌ์ฉํ์ฌ ๋ณํ ๊ฐ์ ์ ์ฌ์ฑ์ ๊ฐ์กฐํ๊ณ ํญ ์์ฑ์ผ๋ก ๋ณํ์ ์ฝ๊ฒ ์ฐพ์ ์ ์๋๋ก ํ๋ ๊ฒ์ด ์ข๋ค๊ณ ์๊ฐํฉ๋๋ค. (๋๋ r
๋ฐ l
์ ๋ฏธ์ฌ ์ ์์ ์ข์ํฉ๋๋ค.)
-2 ~ r
๋ฐ l
์ฉ์ด. ์ด๋ฆ์ด ์ข ์ง๊ทธ๋ฝ๊ณ 4๊ฐ ์์ต๋๋ค. ์ฐจ๋ผ๋ฆฌ OP๊ฐ ์ ์ํ ๊ฒ์ฒ๋ผ shift์ unshift์ ์ด๋ฆ๋ง ๋ฐ๊พธ๊ฒ ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ๋ํ shift์ unshift๊ฐ ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ๋ค์ ์ ์งํ๋ ๊ฒ์ด ๋์ ์ ๋๋ก ์ถฉ๋ถํ ๋๋ฆฌ ์ฌ์ฉ๋๋ค๊ณ ๋๋๋๋ค. ๊ทธ๋ ๊ฒ ๋ฏฟ์ ์ ์์ ์ ๋๋ก ์ผ๋ฐ์ ์ธ ์์
์ ๋ํด ์๋ฌด๋ ์ฌ์ฉ
@JeffBezanson C++ ๋ฒกํฐ๋ push_front
๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ์ด์ ๋ํ ๋ช ๊ฐ์ง ์ ๋ก๊ฐ ์์ต๋๋ค.
๋๋ ๊ธฐ์กด์ ์ด๋ฆ์ด ๋ค์ ์ถ์ ํ ์์๋ ๊ฐ์ shift
๋ด์ฅ์ sh
์๋ง๋, ๊ทธ๋ฆฌ๊ณ ํ์ด ์ต๋๋ฅผ ํฌ์ฐฉํ๊ณ ๋ฐ๋ช
unshift
(http://www.perlmonks.org /?node_id=613144) ๋ค๋ฅธ ์ธ์ด(php, javascript, ...?)๊ฐ ๋ค๋ฅผ ์ด์๊ธฐ ๋๋ฌธ์ ์ ๋ก๊ฐ ๋ง์ต๋๋ค.
๋๋ ์ ์ ํ ์์ด ๋จ์ด๋ฅผ ์ ํธํฉ๋๋ค... :) ( unshift
๋ 1972๋
์ผ๋ก ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋ OED์ ์์ต๋๋ค.)
๋๋ pop!
& push!
์ ๋ฌธ์์์ shift!
& unshift!
์ ์ด๋ ์ธ๊ธ:
help?> pop!
search: pop! popdisplay apropos deepcopy precompile __precompile__ peakflops promote_type
also see: `shift!` `unshift!` `push!`
pop!(collection, key[, default])
Delete and return the mapping for key if it exists in collection, otherwise return default, or
throw an error if default is not specified.
๋ ๋ค๋ฅธ ์์ด๋์ด: push/pop!(first, x, ...)
๋ฐ push/pop!(last, x, ...)
.
์ด๋ก ์ ์ผ๋ก ์ด ๊ตฌ๋ฌธ์ pop!(min, x)
์ ๊ฐ์ด ์ผ๋ฐํ๋ฉ๋๋ค.
๋๋
pop!
&push!
์ ๋ฌธ์์์shift!
&unshift!
์ ์ด๋ ์ธ๊ธ:
๊ด๋ จ #23789
๋ฉ์ง ์์ด๋์ด, @TotalVerb!
๋๋ splice!
/ insert!
์ first
๋ฐ last
๋ฅผ ์ ์ฌ ์ธ๋ฑ์ค๋ก ๋ณํฉํ์๊ฒ ์ต๋๊น?
๋ ๋ค๋ฅธ ์์ด๋์ด: push/pop!(์ฒซ ๋ฒ์งธ, x, ...)
์ ๋ญ? ์ข์์, ์ด๊ฒ์ ์ ๋ง ์ฐฝ์์ ์ธ ์์ด๋์ด์ ๋๋ค :-)
first
๋ฐ last
ํจ์๋ฅผ ๋ด๋ถ์ ์ค์ ์ฝ๋์ ๊ด๋ จ์ด ์๋ ๊ฒ๋ณด๋ค ์์ ํ ๊ตฌ๋ฌธ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ ๊ฝค ์ด์ํด ๋ณด์
๋๋ค. ๊ทธ๊ฒ์ ์ผ์ข
์ ํ๋ฅญํ์ง๋ง ์ด์ํ ์ฝํ์ผ๋ก ์ด์ด์ง ์ ์์ผ๋ฏ๋ก ์ํ๊ณ์์ ์ด๋ฐ ์ข
๋ฅ์ ๊ฒ์ ์ฅ๋ คํด์ผํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์๋ฅผ ๋ค์ด ๊ตฌ๋ฌธ์ผ๋ก ์ฌ์ฉ๋๋ ํจ์์ ์ด๋ฆ์ ๋ฐ๊พธ๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? ํ์คํ first
๋ฐ last
๊ฐ๋ฅ์ฑ์ ์ ํ ์์ง๋ง ์ฌ์ ํ ๊ทธ๋ ์ต๋๋ค.
๋๋ ์ด ์์ด๋์ด๊ฐ ๋ฉ์ง๋ค๊ณ ์๊ฐํฉ๋๋ค. X[mean, :, sum]
์์์ ๊ฐ์ด ์ธ๋ฑ์ฑ์์ ์ถ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ @mbauman ์ ์์ด๋์ด๋ฅผ ์๊ฐ๋๊ฒ ํฉ๋๋ค. ์ด๋ฌํ ๊ธฐ๋ณธ์ ์ธ ์์
์๋ ๋๋ฌด ํ๋ คํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด ์์ ์์ ๋ด๊ฐ ์ ํธํ๋ ์ต์
์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
shift!
๋ฐ unshift!
์ popl!
๋ฐ pushl!
๋ฐ๊ฟ๋๋ค.pop!
๋ฐ push!
์ popr!
๋ฐ pushr!
ํฉ๋๋ค.popr!
๋ฐ pushr!
๋ํ pop!
๋ฐ push!
๋ณ์นญ์ ๋ง๋ญ๋๋ค.๋๋ ์ฃผ๋ก 1๊ณผ 2 ์ฌ์ด์ ์์ง๋ง 3๊ณผ 4์๋ ์ฝ๊ฐ์ ํธ์๋ ฅ์ด ์์ต๋๋ค.
1) ๋ฐฐ์ด์ ์์๊ณผ ๋์ ๋์ผํ ์์
(ํธ์ ๋๋ ํํ)์ ์ ์ฉํ๋ ๊ฒ์ ์ต์ํ ๊ด๋ จ๋ ์ด๋ฆ์ ๊ฐ์ ธ์ผ ํ๋ค๋ ๊ฒ์ด ๋ง์ ์๋ฏธ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. push!
๋ฐ shift!
๋ ์ง๊ด์ ์ด์ง ์์ ์์
๋๋ค. 2) "shift"์ ๋ํ ๋ฌธ์๋ฅผ ๊ฒ์ํ์ฌ ์ฝ๊ฒ ๋ณผ ์ ์๋ฏ์ด shift!
๋ผ๋ ๋จ์ด๋ ๋นํธ ์ด๋ >>
๊ณผ ํผ๋๋ ์ ์์ต๋๋ค. 3) ๋ง์ Julia ์ฌ์ฉ์๋ ์ด์จ๋ ํ/์๋ฐ์คํฌ๋ฆฝํธ ๋ฐฐ๊ฒฝ ์ง์์ด ์์ ๊ฒ์
๋๋ค.
๋ฐ๋ผ์ ์์ ๊ฒ์๋ฌผ์์ ์ต์
2์ ์ฐฌ์ฑํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ด๋ฆ์ ๋ฐ๊พธ๋ฉด circshift!
๋ํด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?
Stefan์ ์ต์
2 ๋๋ 4๋ ๋์๊ฒ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. pop
๊ฐ์ ์์
์ด ์๋๊ธฐ ๋๋ฌธ์ circshift!
๋ฅผ ๋ณ๊ฒฝํ ํ์๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ ์:
| ์ค๋๋ | ์๋ก์ด | ๋ณ์นญ |
|----:|----:|----:|
| push!
| pushr!
| push!
|
| pop!
| popr!
| pop!
|
| unshift!
| pushl!
| |
| shift!
| popl!
| |
ํนํ push!
๋ฐ pop!
๋ฅผ ์คํ์ผ๋ก๋ง ์ฌ์ฉํ๊ณ ์ผ์ชฝ์ธ์ง ์ฌ๋ถ๋ ์ ๊ฒฝ ์ฐ์ง ์๋ ๊ฒฝ์ฐ ๋ณ์นญ์ผ๋ก ์ ์งํ๋ ๊ฒฝ์ฐ ์ ํน์ ์ด๋ผ๊ณ ๋งํด์ผ ํฉ๋๋ค
front
๋ฐ back
์ฌ์ฉํ๋ Imo๋ left
๋ฐ right
์ถ์ฝํ๋ ๊ฒ๋ณด๋ค (์๋นํ) ๋ช
ํํฉ๋๋ค.
ํนํ ๋ฒกํฐ๊ฐ ์์ง์ด๊ธฐ ๋๋ฌธ์(๋ฐ๋ผ์ ์์ชฝ/์๋์ชฝ์ด์ด์ผ ํจ) ๐. ๋ค๋ฅธ ์ต์ ์ ์์/์ข ๋ฃ ๋๋ ์ฒ์/๋ง์ง๋ง์ด ๋ ์ ์์ต๋๋ค.
์ผ์ชฝ/์ค๋ฅธ์ชฝ์ด ๊ด์ฐฎ์ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ ์ฐ๋ฆฌ์ ๊ฐ์ ์ฉ์ด( foldl
๋ฐ foldr
) ๋ฐ ๋ฒกํฐ๊ฐ ์ผ๋ฐ์ ์ผ๋ก [a,b,c,โฆ]
์
๋ ฅ๋๊ณ print
์ถ๋ ฅ๋๋ ๋ฐฉ์๊ณผ ์ผ์นํฉ๋๋ค.
์ผ์ชฝ/์ค๋ฅธ์ชฝ์ ๋ํ ๋ ๋ค๋ฅธ ์ข์ ์ ์ ์ ์ ๋ฆฝ๋ ํ ๋ฌธ์ ์ฝ์ด๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค.
์ง์งํ๊ฒ, ๋๋ ๋ฒกํฐ์ ์ด๋ ์ชฝ ๋์ด ์์ธ์ง ๋ค์ธ์ง ๋ชจ๋ฆ ๋๋ค. ์ ์ธ๋ฑ์ค๊ฐ 1์ ๋๊น ์๋๋ฉด ๋ท๋ฉด์ ๋๊น? ์, ๋๋๋ก ๋ฒกํฐ๋ฅผ ์ธ๋ก๋ก ์ธ์ํ์ง๋ง ๋ค๋ฅธ ๊ฒฝ์ฐ์๋ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ธ์ํ๊ธฐ๋ ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ด๋ฏธ ๋ค๋ฅธ ๋ง์ ๊ธฐ๋ฅ์ ๋ํด ์์๋ ์ผ์ชฝ/์ค๋ฅธ์ชฝ ์ด๋ฆ์ ์ผ๊ด๋๊ฒ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
append๋ฅผ ์ํ ์๋ก์ด ๋ฉ์๋๋ฅผ ๊ฐ๋ ๊ฒ์ ์ด๋ป์ต๋๊น! ๊ทธ๋ฆฌ๊ณ ์ถ๊ฐ! ๋ ๋ฒ์งธ ์ธ์๋ ์ค์นผ๋ผ์ ๋๊น?
์ด ๋ํ๋ https://github.com/JuliaLang/julia/issues/23902#issuecomment-332615200์ผ๋ก ๋์๊ฐ๋ฉฐ ๋ค์ https://github.com/JuliaLang/julia/issues/23902#issuecomment-332668546 ๋ฉ์์ง๋ฅผ ํ์ํฉ๋๋ค. , ์ฆ head
/ tail
๋๋ first
/ last
์ฉ์ด? :)
์ฃ์กํฉ๋๋ค. ํ ๋ก ์ ๊ธธ๊ฒ ํด์ ์ฃ์กํฉ๋๋ค. ๋ด ์์ ์ ์๋ก์ด ๋จ์ด๋ฅผ ๋ฐ๋ช ํ๊ธฐ๋ณด๋ค ๊ธฐ์กด ๋จ์ด๋ฅผ ์ฌ์ฌ์ฉํด์ผํ๋ค๋ ๊ฒ์ ๋๋ค.
์ฃ์กํฉ๋๋ค. ํ ๋ก ์ ๊ธธ๊ฒ ํด์ ์ฃ์กํฉ๋๋ค. ๋ด ์์ ์ ์๋ก์ด ๋จ์ด๋ฅผ ๋ฐ๋ช ํ๊ธฐ๋ณด๋ค ๊ธฐ์กด ๋จ์ด๋ฅผ ์ฌ์ฌ์ฉํด์ผํ๋ค๋ ๊ฒ์ ๋๋ค.
@phaverty ์ฃ์กํฉ๋๋ค! ์ฐ๋ฆฌ๋ ์๋ฎฌ๋ ์ด์
ํ์ต๋๋ค. ๋ด ์๋ต์ ๊ทํ์ ๋๊ธ์ ๋๊ธ์ ๋ฌ๊ธฐ ๋ณด๋ค๋ @StefanKarpinski
๋ฅผ ๋ฐ๋ฅด๊ธฐ ์ํ ๊ฒ์ด์์ต๋๋ค. ์ต์์!
๋๋ popfirst!
, pushfirst!
, poplast!
, pushlast!
๊ณผ pop!
์ push!
๋ฅผ ๋ณ์นญ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ต๋๋ค. ํ์.
๋ ๋ฒ์งธ ์ธ์๋ ์ค์นผ๋ผ์ ๋๊น?
์ค์นผ๋ผ๋ฅผ ์ผ๋ฐ์ ์ผ๋ก ์ ์ํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
"์ค์นผ๋ผ๋ฅผ ์ผ๋ฐ์ ์ผ๋ก ์ ์ํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค."
์, ์๊ฒ ์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ์ง์ ํ ์ ์์ต๋๋ค.
์ถ๊ฐ!( x::Vector{T}, y::T )
, ๊ทธ๋ฌ๋ ๋น์ ์ ์ ๋ง๋ก y๊ฐ "T๋ก ๋ณํ๋ ์ ์๋ ๊ฒ"์ ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ ํ ์์คํ ์ ๋ณํํ ์ ์๋ ์ ํ ์งํฉ์ (์์ง?) ์์ง ๋ชปํฉ๋๋ค. ๋ฒ๋จธ.
(๊ตฌ์๋ ฅ์ด ์๊ณ ์ ์ตํ) ํฌํ๋ฅผ ํฉ์๋ค:
pushr!
, popr!
, pushl!
๋ฐ popl!
๋ํด ๐ push!
๋ฐ pop!
๋ฅผ ๋ณ์นญ์ผ๋ก ์ฌ์ฉํ์ฌ ์ฒ์ ๋ ๊ฐ์ด๋ชจํฐ์ฝ ์ ํ์ ๋ค์ ํธํฅ์ ์ ๋๋ค ;).
๊ทธ๋ฆฌ๊ณ :+1: ๋น์ ์ด ๊ฐ์ฅ ์ข์ํ๋ค๋ฉด OPs ์ ์์ ;)
์ด ๊ธฐ๋ฅ์ ์ด๋ฆ์ ๋ฐ๊พธ๋ ๊ฒ์ ๋ํ ๋ช ๊ฐ์ง ์๊ฐ์ด ์์ผ๋ฏ๋ก ์ด ๋ํ์ ์ฝ๊ฐ์ ๋
ธ์ด์ฆ๋ฅผ ์ถ๊ฐํ ์ ์๋ ๊ฒ์ ๋ํด ๋จผ์ ์ฌ๊ณผํ๊ฒ ์ต๋๋ค. ์ง๊ธ๊น์ง Julia์ push!
, pop!
, shift!
๋ฐ unshift!
ํจ์์ ์ด๋ฆ์ Perl, Ruby ๋ฐ JavaScript(https://en .wikipedia.org/wiki/Double-ended_queue#Operations). ๊ฐ์ธ์ ์ผ๋ก ๋๋ ์๋ Perl์์ ๋ฐฐ์ ๊ธฐ ๋๋ฌธ์ ์ด ์ด๋ฆ์ ์ ๊ฒฝ ์ฐ์ง ์์ง๋ง shift/unshift๊ฐ ๊ธฐ์ต์ ๋จ์ง ์๋๋ค๋ ๊ฒ์ ์์ ํ ์ธ์ ํฉ๋๋ค. ํธ์/ํ์ด ์ข์ง ์์ ๋ณด์ ์ ์ด๋ผ๊ณ ์๊ฐํ๋ ์ง์๋ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ ๋ค๋ฅธ ์์ด๋์ด:
push/pop!(first, x, ...)
๋ฐpush/pop!(last, x, ...)
.
์ด ๋ฐฉํฅ์ผ๋ก ๊ฐ๋ ค๋ฉด enqueue!
๋ฐ dequeue!
๋ฅผ ์ด๋ฌํ ํจ์์ ์ด๋ฆ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ด๊ฐ ์๋ ์ด๋ฆ์ ๋ํด ์ข์ํ๋ ๊ฒ์ ๊ทธ๋ค์ด ๋จ์ง ํ ๋จ์ด๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์
๋๋ค. ํ ๋จ์ด๋ฅผ ์ ์งํ๋ฉด์ ๋ ๋ฉ์ง ์กฐํฉ์ ๋ง๋ค๋ ค๊ณ FIFO์ ๊ฒฝ์ฐ push!
๋ฐ pull!
pop!
, FILO์ ๊ฒฝ์ฐ push!
๋ฐ pop!
๋ฅผ ์๊ฐํด ๋์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋์ด ์๋ ๋๊ธฐ์ด์ ์์ ๋ถ๋ถ์์ ํธ์/ํ์ด ์๋ํฉ๋๋ค.
์ค๋๋ | ์๋ก์ด
-------|-----
ํธ์! | ๋๋ค!
ํ! | ๋น๊ธฐ๋ค!
์ฎ๊ธฐ๋ค! | ํธ์!
์ฌ๋ค! | ํ!
ํธ์/ํ์ ๋์ ๋จ๊ฒจ๋๊ณ ํ/ํ์ ์์ ๋ถ๋ถ์ผ๋ก ์ด๋ํ์ฌ ๋ ๊นจ์ง๋๋ก ํ ์ ์์ง๋ง ๊ทธ๋ ๊ฒ ํ๋ฉด ์ํฉ์ด ๋ค์ ํผ๋์ค๋ฌ์ธ ์ ์์ต๋๋ค.
๋ ๋ค๋ฅธ ๋์์ push!
๋ฐ shift!
๋ฅผ ๊ฐ๊ฐ ์ฐธ์กฐํ๊ธฐ ์ํด append!
๋ฐ prepend!
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฌ๋ ๋๋ dequeuing์ ๋ํ ํฉ๋ฆฌ์ ์ธ ๋จ์ด๊ฐ ์์ผ๋ฉฐ behead
๋ฐ curtail
๊ฐ ๋ด๊ฐ ์๊ฐํด๋ผ ์ ์๋ ์ต์ ์ด์์ต๋๋ค...
@phaverty Vector{Any}
๊ฐ ๊ฐ๋ฅํ ํ ๋ชจํธํฉ๋๋ค.
๋ค์ ๊ฒ์ํ๊ฒ ์ต๋๋ค: https://github.com/JuliaLang/julia/issues/23902#issuecomment -332919287
@omus shift!
๋ฅผ push!
์ด๋ฆ์ ๋ฐ๊พธ๋ ๊ฒ์ ๋ถํ์ํ๊ฒ ํผ๋์ค๋ฌ์ ๋ณด์
๋๋ค.
append!
๋ ๋ ๊ฐ์ ์ปฌ๋ ์
์์ ์๋ํ๋ ๋ฐ๋ฉด push!
et. ์. ํ๋์ ์์์์ ์๋ํ๋ฏ๋ก IMO์์ ๊ทธ ์ด๋ฆ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก ์ ๋์ฝ๋๋ฅผ ํญ์ ์์ฉํ๊ณ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์คํค | ์ ๋์ฝ๋ | ์ ๋์ฝ๋ ์ด๋ฆ | ๋ณ๋ช
---|---|---|---
ํธ์! | โค | ๋ง๋์ ์ผ์ชฝ ํ์ดํ |
ํ! | โฆ | ๋ฐ์์ ์ค๋ฅธ์ชฝ ํ์ดํ | ๋งต์คํ
์ฎ๊ธฐ๋ค! | โฅ | ๋ง๋์ ์ค๋ฅธ์ชฝ ํ์ดํ |
์ฌ๋ค! | โค | ๋ฐ์์ ์ค๋ฅธ์ชฝ ํ์ดํ | ์ง๋์์
์ ๋์ฝ๋์ ๋ง๋๋ฅผ ๋๊ธฐ์ด๋ก ์๊ฐํ์ญ์์ค. ~๋ถํํ๋ ์ด ์ ๋์ฝ๋ ๋ฌธ์๋ ๋ด๊ฐ ๋งํ ์ ์๋ REPL์ ๋ฉ์ง ๋ณ์นญ์ด ์์ต๋๋ค~.
์ด๋ฆ ๋ฐ๊พธ๊ธฐ
shift!
์push!
๋ฌด์ ํผ๋ ๋ณด์ธ๋ค.
์์งํ, ๋๋ ์ฐ๋ฆฌ๊ฐ ์ค์ ๋ก ๊ทธ ์ ๊ทผ ๋ฐฉ์์ ์ทจํ๋ค๋ฉด ๋ถํํ ๊ฒ์ ๋๋ค. ๊ทธ ์ ๊ทผ ๋ฐฉ์์ ํ์คํ ์ ๊ท ์ฌ์ฉ์์๊ฒ ์น์ ํ๊ณ Julia์ ๊ธฐ์กด ์ฌ์ฉ์์๊ฒ ์๋ฏธ๊ฐ ์์ต๋๋ค.
@omus , ์๋ฅผ ๋ค์ด โฆ ๋ \mapsto
์
๋๋ค.
์๊ฒ ์ต๋๋ค. ๊ฑฐ์ง๋ง์ ํ์ต๋๋ค. ํ ๋ง์ด ํ๋ ๋ ์์ต๋๋ค. ๋ ์ฌ๊ฐํ ์ ์์ผ๋ก ์ฐ๋ฆฌ๋ ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฉ์ง ํธ์/ํ์ ์๊ฒ ๋์ง๋ง ์งํ ์ค์ธ ์์ ์ ๋ํด ํจ์ฌ ๋ ๋ช ํํด์ง๋๋ค.
์ค๋๋ | ์๋ก์ด
-- | --
ํธ์! | ๋ผ์คํด!
ํ! | ๋ง์ง๋ง!
์ฎ๊ธฐ๋ค! | ๋จผ์ !
์ฌ๋ค! | ์ ์ !
์ด๋ฌํ ์ ์์ ๋๋ถ๋ถ์ ๋ํด ์์ ๋กญ๊ฒ ํฌํํ์ญ์์ค. ์ด ์ฃผ์ ์ ๋ํด ์ฝ๊ฐ์ ์กฐ์ฌ๋ฅผ ํ ํ ๋ด๊ฐ ์ป์ ์ ์ผํ ์ง์ ํ ๊ฒฐ๋ก ์ ์ปดํจํฐ ๊ณผํ์๋ค์ด ํธ์/ํ ์ฉ์ด๋ฅผ ๋ฐ์๋ค์๊ณ ์ํํธ/์ธ์ํํธ์ ์ด๋ฆ์ ๋ฌด์์ผ๋ก ์ง์ ํด์ผ ํ ์ง ๋ชฐ๋๋ค๋ ๊ฒ์ ๋๋ค.
์ด์ ์์ ์ ๊ธฐ๊ฐ ์์ผ๋ฏ๋ก ์ด์ ๋ํ ํค์๋ ์ธ์๊ฐ ๋น ๋ฅด๊ณ ์ ํํด์ผ ํฉ๋๊น? ํนํ ๋ค์ค ๋จ์ด ํจ์๋ ๋ฆฌํฉํ ๋ง์ ์ด์งํ๊ธฐ ์ํด ํน๋ณํ ๊ถ์ฅ๋์ง ์๊ธฐ ๋๋ฌธ์ 2๊ฐ ๋์ 4๊ฐ์ ํจ์๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ฅผ ์ดํดํ ์ ์์ต๋๋ค.
์ด๊ฒ๋งํผ์ ์ฐ๋ฆฌ๊ฐ ํ ์ํ๋ณด๋ค ๋ ์ํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
์ด๊ฒ๋งํผ์ ์ฐ๋ฆฌ๊ฐ ํ ์ํ๋ณด๋ค ๋ ์ํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
OP์ ๋ํ ์ง์์ด ์๋นํด ๋ณด์ด์ฃ ? ์๋ง๋ ์ด ๋ฌธ์ ๋ฅผ ์ข ๋ฃํ๋ ๊ฒ์ด ์กฐ๊ธ ์๊ธฐ์์กฐ์ผ๊น์? :)
์, OP์ ์ ์์๋ 11 ์ ๋ฐ 0 ์๋๊ฐ ์์ต๋๋ค ...
๋๋ ๊ทธ๊ฒ๋ค์ ํน์ ์ ์์ด ์๋๋ผ ์ด๋ฆ ๋ฐ๊พธ๊ธฐ์ ์ผ๋ฐ์ ์ธ ๊ฐ๋ ์ ๋ํ ์ง์์ผ๋ก ํด์ํ์ต๋๋ค.
์ด ๋ชจ๋ ํ ๋ก ํ์ ์ฐ๋ฆฌ๋ ์ ๋ง ๋งค๋ ฅ์ ์ธ ๋์์ ์ฐพ์ง ๋ชปํ๋ค๋ ๊ฒ์ด ๋ถ๋ช ํฉ๋๋ค.
FWIW pushfront!
๋ ์ฌ์ ํ ๋ด๊ฐ ๊ฐ์ฅ ์ข์ํ๋ ์ด๋ฆ์ด๋ฉฐ ๋ด ์๊ฒฌ์ผ๋ก๋ ๊ฐ์น ์๋ ์ด๋ฆ์ ๋ฐ๊ฟ ์ ์์ง๋ง ๊ทธ๊ฒ์ ๋ด C++ ํธํฅ์ผ ์ ์์ต๋๋ค.
๋๋ pushfront!
๋ฐ popfront!
์ข์ํฉ๋๋ค.
๊ธ์, ๋๋ pushfront!
/ popfront!
๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด #25100์์ PR์ ํ๋ค. ๋๋ ๊ทธ๊ฒ์ด unshift!
์ด๋ฆ์ ๋ฐ๊พธ๋ ๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ์ต์ํ์ ์ผ์ด๋ผ๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ค์ ๋ก unshift!
๊ฐ ํ ์ ์๋ ์ ์ผํ ๊ฒ์ (a) ํ์ฌ ์ํ์ด๊ณ (b) perl/javascript/php/perl์์ ๋ชจํธํ ์ ํ์ ์์ํ๋ ๋ค๋ฅธ ์ธ์ด์์ ์ ๋ก๊ฐ ์๋ค๋ ๊ฒ์
๋๋ค.
๋ง์๊ป ์ด์ฃผ์ธ์ ;-)
@Sacha0 ์ด #25100์์ ์ธ๊ธํ ๊ฒ๊ณผ ์ ์ฌํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ ๋ง๋ก ์ด๋ฆ์ ๋ฐ๊พธ๊ณ ์ถ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์งํํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
enqueue!(::typeof(first), a, item) = unshift!(a, item)
enqueue!(::typeof(last), a, item) = push!(a, item)
dequeue!(::typeof(first), a) = shift!(a)
dequeue!(::typeof(last), a) = pop!(a)
julia> enqueue!(::typeof(first), a, item) = unshift!(a, item);
julia> enqueue!(::typeof(last), a, item) = push!(a, item);
julia> dequeue!(::typeof(first), a) = shift!(a);
julia> dequeue!(::typeof(last), a) = pop!(a);
julia> foo = [1, 2, 3]
3-element Array{Int64,1}:
1
2
3
julia> enqueue!(first, foo, 0)
4-element Array{Int64,1}:
0
1
2
3
julia> dequeue!(first, foo)
0
julia> enqueue!(last, foo, 5)
4-element Array{Int64,1}:
1
2
3
5
julia> dequeue!(last, foo)
5
๋๋:
push!(::typeof(first), a, item) = unshift!(a, item)
push!(::typeof(last), a, item) = push!(a, item)
pop!(::typeof(first), a) = shift!(a)
pop!(::typeof(last), a) = pop!(a)
first
๋๋ last
๋ฅผ ์ ๋ฌํ์ง ์๊ณ push!
๋ฐ pop!
์ ์งํ ์๋ ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ push!(last, ...)
๋ฐ pop!(last, ...)
.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ ๋ค๋ฅธ ์์ด๋์ด:
push/pop!(first, x, ...)
๋ฐpush/pop!(last, x, ...)
.์ด๋ก ์ ์ผ๋ก ์ด ๊ตฌ๋ฌธ์
pop!(min, x)
์ ๊ฐ์ด ์ผ๋ฐํ๋ฉ๋๋ค.