uz
Feedback
ToCode

ToCode

Kanalga Telegram鈥檇a o鈥榯ish

讟讬驻讬诐 拽爪专讬诐 诇诪转讻谞转讬诐 诪讗转 讬谞讜谉 驻专拽

Ko'proq ko'rsatish
1 419
Obunachilar
+124 soatlar
Ma'lumot yo'q7 kunlar
Ma'lumot yo'q30 kunlar
Postlar arxiv
ToCode
1 419
# 讘拽爪讘 砖诇讬 讚诪讬讬谞讜 驻讗讘 转诇 讗讘讬讘讬, 讛专讗砖讜谉 讘讬讜谞讬 2019, 诪住讱 注谞拽 砖诪砖讚专 讗转 讙诪专 诇讬讙转 讛讗诇讜驻讜转 讘砖讬讚讜专 讞讬 诇讬讘专驻讜诇 诪讜诇 讟讜讟谞讛讗诐. 讛诪转讞 讘砖讬讗讜, 讗谞砖讬诐 注讜诪讚讬诐 讗讞讚 注诇 讛砖谞讬 注诐 讛讘讬专讜转 讜讛谞砖谞讜砖讬诐 讜爪注拽讜转 讛砖诪讞讛 讘讙讜诇 讛砖谞讬 砖诇 诇讬讘专驻讜诇 讚拽讜转 诇驻谞讬 住讜祝 讛诪砖讞拽. 注讻砖讬讜 拽讞讜 讗转 讗讜转讜 驻讗讘, 注诐 讗讜转讜 诪住讱 讬讜诐 讗讞讚 讗讞专讬 讜注诐 讗讜转讜 诪砖讞拽 讘讚讬讜拽 (诪讜拽诇讟 讛驻注诐, 讘讻诇 讝讗转 讛诪砖讞拽 讛讬讛 讗转诪讜诇). . 讛驻注诐 讻诇 诪讛 砖谞诪爪讗 讘驻谞讬诐 讝讛 砖诇讜砖讛 砖讻谞讬诐 砖诇 讛诪拽讜诐 诪谞砖谞砖讬诐 讜诪注讬驻讬诐 诪讘讟讬诐 诪砖讜注诪诪讬诐 诇讟诇讜讬讝讬讛. 拽砖讛 诇讛转讜讜讻讞 注诐 讛讻讞 砖诇 讛拽爪讘 讜讛拽讘讜爪讛 讜讛诪砖讞拽 砖诇 砖转讬 讛诪讬诇讬诐 讛讗诇讛: 讻砖讗谞讞谞讜 注讜砖讬诐 诪砖讛讜 讘砖讬讚讜专 讞讬 注诐 注讜讚 讗谞砖讬诐 (讙诐 讗诐 讛转驻拽讬讚 砖诇谞讜 讛讜讗 讘住讱 讛讻诇 诇砖讘转 讘驻讗讘 注诐 讛讘讬专讛 讜诇爪注讜拽 注诇 讛诪住讱) 讛讞讜讜讬讛 诪砖转驻专转 诪砖诪注讜转讬转. 讜讛拽住诐 讛讝讛 诇讗 诪讜讙讘诇 专拽 诇诪砖讞拽讬 讻讚讜专讙诇: 1. 讬砖 讬讜转专 住讬讻讜讬 砖转拽砖讬讘讜 讜转谞住讜 讗转 讛讚讜讙诪讗讜转 讘讜讜讘讬谞专 讗诐 讗转诐 爪讜驻讬诐 讘讜 讘砖讬讚讜专 讞讬, 诪讗砖专 讗诐 转谞住讜 诇专讗讜转 讗转 讗讜转讜 讗讬专讜注 讘砖讬讚讜专 讞讜讝专. 2. 讬砖 讬讜转专 住讬讻讜讬 砖转转讗诪爪讜 诇驻转讜专 讗转 讛讞讬讚讜转 砖诇 Advent Of Code 讘讞讜讚砖 讚爪诪讘专 诪讗砖专 讗诐 转谞住讜 诇驻转讜讞 讗讜转谉 讘驻讘专讜讗专. 3. 讬砖 讬讜转专 住讬讻讜讬 砖转爪诇讬讞讜 诇讛讬讻谞住 诇讻讜砖专 讗诐 转爪讟专驻讜 诇拽讘讜爪转 专讬爪讛, 诪讗砖专 讗诐 转谞住讜 诇专讜抓 讘拽爪讘 砖诇讻诐. 讜讻谉 讝讛 诇讙诪专讬 讘住讚专 诇讛砖转诪砖 讘讟专讬拽 讛讝讛 讻讚讬 诇拽讚诐 讗转 注爪诪讻诐 讜诇注讜讚讚 讗转 注爪诪讻诐 诇注砖讜转 讗转 讛讚讘专 讛拽砖讛 讛讛讜讗 砖讛专讘讛 讝诪谉 专爪讬转诐 诇注砖讜转. 爪专讬讱 专拽 诇砖讬诐 讘爪讚 诇讻诪讛 讬诪讬诐 讗转 讛拽爪讘 砖诇讬 讜诇讛转讞讬诇 诇专讜抓 讘拽爪讘 砖诇 讛拽讘讜爪讛.

ToCode
1 419
# 讛专爪转 拽讜讚 讗住讬谞讻专讜谞讬 讘讘讚讬拽讜转 讛 pytest 砖诇讻诐 讘讙诇诇 讛注讘讜讚讛 注诐 拽讜专讜讟讬谞讜转 讘 asyncio 砖讬诇讜讘 拽讜讚 讘讚讬拽讜转 讗讬转讜 注诇讜诇 诇讛讬讜转 拽爪转 诪注爪讘谉, 诇驻讞讜转 注讚 砖诪讙诇讬诐 讗转 讛住驻专讬讛 pytest-asyncio. 讛住驻专讬讛 pytest-asyncio 讛讬讗 驻诇讗讙讬谉 诇 pytest 砖诪讜住讬驻讛 讗驻砖专讜转 诇住诪谉 讘讚讬拽讜转 讗讜 Fixtures 讘转讜专 讘讚讬拽讜转 讗住讬谞讻专讜谞讬讜转 讜讘讗讜驻谉 讗讜讟讜诪讟讬 转驻注讬诇 讗转 讛讘讚讬拽讜转 讛讗诇讛 讘转讜专 拽讜专讜讟讬谞讜转 讜转注讘讬专 诇讛谉 讗转 讛 event loop. 讘砖讘讬诇 诇砖诇讘 讗讜转讛 讘拽讜讚 讛讘讚讬拽讜转 砖诇讻诐 诪住驻讬拽 诇讛转拽讬谉 诪 pip 讜讗讝 诇住诪谉 讗转 讛讘讚讬拽讛 讘转讜专 讘讚讬拽讛 讗住讬谞讻专讜谞讬转 讘讗讜驻谉 讛讘讗:
@pytest.mark.asyncio
async def test_luke_name(aiosession):
    data = await fetch(aiosession, 'https://swapi.co/api/people/1/')
    assert data['name'] == 'Luke Skywalker'
讘讚讬拽讛 讝讜 诪砖转诪砖转 讘驻讜谞拽爪讬讬转 注讝专 讘砖诐 fetch (讗住讬谞讻专讜谞讬转 讙诐 讛讬讗) 讜讘 Fixture 讗住讬谞讻专讜谞讬 讘砖诐 aiosession. 讛谞讛 讛拽讜讚 诇砖谞讬讛诐:
@pytest.fixture()
async def aiosession():
    async with aiohttp.ClientSession() as session:
        yield session

async def fetch(session, url):
    async with session.get(url) as response:
        return await response.json()
讻诇 Fixture 讗住讬谞讻专讜谞讬 诪讜讙讚专 讘讗讜驻谉 讗讜讟讜诪讟讬 诇讛讬讜转 讘注诇 转讞讜诐 讛讙讚专讛 砖诇 驻讜谞拽爪讬讛. 讘砖讘讬诇 诇讛砖转诪砖 讘转讞讜诐 讛讙讚专讛 讙讚讜诇 讬讜转专 讗谞讞谞讜 爪专讬讻讬诐 诇讚专讜住 讗转 讛 Fixture 砖谞拽专讗 event_loop 砖诇 住驻专讬讬转 pytest-asyncio 讜诇转转 诇讜 转讞讜诐 讛讙讚专讛 讙讚讜诇 讬讜转专. 讘讚讜讙诪讗 讛讘讗讛 讗谞讬 诪讙讚讬诇 讗转 转讞讜诐 讛讛讙讚专讛 砖诇 aiosession 讻讱 砖讬讬砖诪专 诇讗讜专讱 讻诇 讞讬讬 转讜讻谞讬转 讛讘讚讬拽讛:
@pytest.fixture(scope='session')
def event_loop():
    loop = asyncio.get_event_loop()
    yield loop
    loop.close()


@pytest.fixture(scope='session')
async def aiosession():
    async with aiohttp.ClientSession() as session:
        yield session
讞诇拽 讙讚讜诇 诪讛讻讬祝 讘注讘讜讚讛 注诐 pytest 讛讜讗 砖讬砖 驻讬转专讜谞讜转 诪讜讻谞讬诐 讻诪注讟 诇讻诇 住讜讙 讘讚讬拽讜转 砖转专爪讜 诇讻转讜讘. 讻诪讜 讘讛专讘讛 诪拽专讬诐 讻砖诪讚讜讘专 讘驻讬讬转讜谉 砖讜讜讛 诇注砖讜转 诪讗诪抓 讜诇讞驻砖 驻讬转专讜谉 诪讚祝 讘 pip 诇驻谞讬 砖专爪讬诐 诇讻转讜讘 诇讘讚.

ToCode
1 419
# 讗讬讱 讝讛 注讚讬讬谉 诇讗 注讜讘讚??? 砖诇讜砖 砖注讜转 砖诇 谞讬住讬讜谞讜转 讜注讚讬讬谉 诇讗 诪爪诇讬讞 诇讛驻注讬诇 讗驻讬诇讜 讚讜讙诪转 拽讜讚 拽讟谞讛 ... 诪讬 讘讻诇诇 讻转讘 讗转 讛 API 讛讝讛? 讜诇诪讛 讗讬谉 驻讛 转讬注讜讚 诇砖讜诐 驻讜谞拽爪讬讛? 讜讗讬讱 讗祝 讗讞讚 讘住讟讗拽 讗讜讘专驻诇讜 诇讗 谞转拽诇 讘砖讙讬讗讛 讛诪讜讝专讛 讛讝讗转 砖拽讜驻爪转 诇讬 讻诇 讛讝诪谉? 讛专讘讛 驻注诪讬诐 讛拽讜砖讬 砖诇谞讜 讘讻转讬讘转 拽讜讚 诇讗 拽砖讜专 专拽 诇讗转讙专 讛诪拽爪讜注讬 砖诇 诇讙专讜诐 诇拽讜讚 诇注讘讜讚, 讗诇讗 诇转住讻讜诇 砖诪转诇讜讜讛 讗诇讬讜 讻砖讗谞讞谞讜 诇讗 诪爪诇讬讞讬诐 诇讛驻注讬诇 讗驻讬诇讜 讚讜讙诪讗 拽讟谞讛, 讗讜 诇讗 诪爪诇讬讞讬诐 诇讛讘讬谉 诇诪讛 诪砖讛讜 诪住讜讬诐 诪转谞讛讙 讻诪讜 砖讛讜讗 诪转谞讛讙. 讜讛转住讻讜诇 拽砖讜专 拽讜讚诐 讻诇 诇砖讗诇讛 诪讛 诇讚注转讱 讛转驻拽讬讚 砖诇讱 讘转讜专 诪转讻谞转 讗讜 诪转讻谞转转? 诪讛 讝讛 谞拽专讗 诇讛注讘讬专 讬讜诐 驻专讜讚讜拽讟讬讘讬? 讻讬 讗诐 讘砖讘讬诇 诇讛专讙讬砖 讟讜讘 讘住讜祝 讛讬讜诐 讗转讛 爪专讬讱 诇住诪谉 讜讬 注诇 讻诪讛 砖讬讜转专 诪砖讬诪讜转 讗讝 讘专讜专 砖讻砖讛拽爪讘 讬讜专讚 讬讛讬讛 转住讻讜诇, 讜讘专讜专 砖讬讛讬讛 诇讱 拽砖讛 诇爪讗转 讘砖注讛 讛拽讘讜注讛 诪讛诪砖专讚 讻砖拽讜讚 诪住讜讬诐 诇讗 注讜讘讚. 讘诪拽讜诐 诇讛转注爪讘谉 注诇 讛砖诇讜砖 砖注讜转 讛讗诇讛 拽讞讜 爪注讚 讗讞讜专讛 讜转砖讗诇讜 诪讛 讗谞讬 讘讜讞专 诇诪讚讜讚 讛讬讜诐? 讛讗诐 讛讘讞讬专讛 讛讝讗转 注讜砖讛 诇讬 讟讜讘? 讜诪讛 讗谞讬 专讜爪讛 诇讛转讞讬诇 诇诪讚讜讚 诇讙讘讬 注爪诪讬 诪讞专? 诇讗 诪砖谞讬诐 转驻讬住转 注讜诇诐 讘讬讜诐 讗讞讚 讗讘诇 讻谉 砖讜讜讛 诇讝讻讜专 砖讬砖 诪转讻谞转讬诐 诪注讜诇讬诐 砖诪专讙讬砖讬诐 讟讜讘 注诐 注爪诪诐 讙诐 讗讞专讬 讬讜诐 砖诇 诪讞拽专, 讜讙诐 讗诐 讛诪讞拽专 讛讝讛 诇讗 讛住转讬讬诐 讘拽讜讚 砖注讜讘讚.

ToCode
1 419
# 讛讘注讬讛 注诐 讘讚讬拽讜转 讻驻讜诇讜转 讛专讘讛 驻注诪讬诐 讛讙讬砖讛 砖诇谞讜 诇讘讚讬拽讜转 讛讬讗 拽爪转 讻诪讜 讛讙讬砖讛 诇驻谞拽讬讬拽讬诐 - 讻诪讛 砖讬讜转专 讬讜转专 讟讜讘. 讗讘诇 讛讗诪转 讛讬讗 砖讻诪讜 砖讬讜转专 诪讚讬 驻谞拽讬讬拽讬诐 讬注砖讜 诇讻诐 讻讗讘 讘讟谉, 讙诐 诇注讜讚祝 讘讚讬拽讜转 讬砖 讗驻拽讟 讚讜诪讛. 讛讘注讬讛 注诐 注讜讚祝 讘讚讬拽讜转 谞拽专讗转 讘讚讬拽讜转 讻驻讜诇讜转 讜讝讛 注讜讘讚 讘注专讱 讻讱: 谞谞讬讞 砖讬砖 诇谞讜 砖诇讜砖 (讗讜 砖诇讜砖讬诐) 讘讚讬拽讜转 砖讻讜诇谉 诪讜砖驻注讜转 诪驻讜谞拽爪讬讛 诪住讜讬诪转. 诇讗 砖讛谉 讘讜讚拽讜转 讗讜转讛 讬砖讬专讜转 - 讗诇讗 砖讘诪讛诇讱 专讬爪转 讛讘讚讬拽讜转 讗谞讞谞讜 讙诐 诪专讬爪讬诐 讗转 讗讜转讛 驻讜谞拽爪讬讛. 讜讘讞讬讬诐 讻诪讜 讘讞讬讬诐 砖讜诐 驻讜谞拽爪讬讛 诇讗 谞砖讗专转 拽讘讜注讛 诇谞爪讞 讜讬讜诐 讗讞讚 讛讞转讬诪讛 讗讜 诪砖讛讜 讘讛转谞讛讙讜转 砖诇 讗讜转讛 驻讜谞拽爪讬讛 诪砖转谞讛. 注讻砖讬讜, 诇讗 专拽 砖讗转诐 爪专讬讻讬诐 诇转拽谉 讗转 讛讘讚讬拽讜转 讛讗诪讬转讬讜转 砖诇 讛驻讜谞拽爪讬讛, 讜讗转 讛拽讜讚 讛讗诪讬转讬 砖诪砖转诪砖 讘讛 - 讗转诐 讙诐 转拽讜注讬诐 注诐 砖诇讜砖讬诐 讘讚讬拽讜转 砖谞砖讘专讜 讘讙诇诇 诪砖讛讜 砖讘讻诇诇 诇讗 讛讬讛 拽砖专 讗诇讬讛谉. 讛讚讘专 讛讻讬 讙专讜注 砖讬讻讜诇 诇拽专讜转 诇诪注专讻转 砖诇讻诐 诇讗 谞拽专讗 "诇讗 诪住驻讬拽 讘讚讬拽讜转" 讗诇讗 "讗谞讬 专拽 讗注诇讛 讗转 讛转讬拽讜谉 讛讚讞讜祝 讛讝讛 讗驻讬诇讜 砖讛讘讚讬拽讜转 谞砖讘专讜转 讜讗转 讛讘讚讬拽讜转 谞转拽谉 讘讬讜诐 讗讞专".

ToCode
1 419
# 讛讚专讱 讛讻讬 讟讜讘讛 诇讛转注诇诐 诪转讬拽讬讛 讗讜 拽讜讘抓 注诐 find 讛驻拽讜讚讛 find 讛讬讗 讗讞转 讛驻拽讜讚讜转 讛讙诪讬砖讜转 讘讬讜转专 砖诇 讬讜谞讬拽住 讜讛讬讗 讬讜讚注转 诇诪爪讜讗 拽讘爪讬诐 诇驻讬 讻诇 驻专诪讟专 砖讗驻砖专 诇讚诪讬讬谉. 讛专讘讛 讝诪谉 转讛讬转讬 诇诪讛 讗讬谉 讗祝 诪转讙 砖诪讗驻砖专 诇 find 诇讚诇讙 注诇 住驻专讬讜转 讘讚讜诪讛 诇 --exclude 砖诇 grep. 讗转 讛转砖讜讘讛 诪爪讗转讬 讗讞专讬 砖讛讘谞转讬 讗讬讱 find 注讜讘讚, 讜讛讬讗 讛专讘讛 讬讜转专 驻砖讜讟讛 诪诪讛 砖讗转诐 诪讚诪讬讬谞讬诐. 讗讝 讘讜讗讜 谞讬讝讻专 专讙注 讘讛驻注诇讛 驻砖讜讟讛 砖诇 find 诇诪砖诇 讘砖讘讬诇 诇诪爪讜讗 拽讘爪讬诐 砖讛砖诐 砖诇讛诐 讛讜讗 package.json:
$ find . -type f -name package.json
讛驻拽讜讚讛 find 诪拽讘诇转 专爪祝 砖诇 拽专讬讟专讬讜谞讬诐 诇讞讬驻讜砖 讜讘讜谞讛 诪讛诐 砖专砖专转 转谞讗讬诐. 讘诪拽讘讬诇 讛讬讗 专爪讛 注诇 讻诇 讛拽讘爪讬诐 讜讛转讬拽讬讜转 讛讞诇 诪转讬拽讬讬转 讛讛转讞诇讛 砖诇讛 讜诪注讘讬专讛 讻诇 谞转讬讘 讘砖专砖专转 讛转谞讗讬诐 砖诪爪讗讛. 讘诪拽专讛 砖诇谞讜 诇诪砖诇 砖专砖专转 讛转谞讗讬诐 讛讬讗: 1. 讗谞讞谞讜 诪讞驻砖讬诐 拽讜讘抓 2. 讛砖诐 讞讬讬讘 诇讛讬讜转 package.json 讻砖 find 诪讜爪讗 谞转讬讘 诇诪砖诇 demo.txt 拽讜讚诐 讻诇 讛讜讗 讘讜讚拽 诪讛 住讜讙 讛讚讘专 砖讬砖 砖诐. 讘讜讗讜 谞谞讬讞 砖 demo.txt 讛讜讗 拽讜讘抓 讗讝 讛讜讗 讬注讘讜专 讗转 讛讞讜诇讬讛 讛专讗砖讜谞讛 讜讬讬驻讜诇 讘砖谞讬讛. 砖专砖专讗讜转 转谞讗讬诐 讬讻讜诇讜转 讙诐 诇讛转驻爪诇, 诇诪砖诇 讛 find 讛讘讗 砖诪砖转诪砖 讘 or 讬讝讛讛 拽讘爪讬诐 讘砖诐 package.json 讗讜 转讬拽讬讜转 讘砖诐 node_modules:
$ find . \( -type f -name package.json \) -or \( -type d -name node_modules \)
讜讛谞讛 注诇讬谞讜 诇砖转讬 砖专砖专讗讜转: 讗讜 砖注讘专转 讗转 讻诇 讛砖专砖专转 讛专讗砖讜谞讛, 讗讜 砖注讘专转 讗转 讻诇 讛砖专砖专转 讛砖谞讬讛. 讻诇 砖专砖专转 诪讜专讻讘转 诪砖谞讬 转谞讗讬诐. 注讻砖讬讜 讛讙讬注 讛讝诪谉 诇砖讗讜诇 诪讛 拽讜专讛 注诐 讛谞转讬讘 讗讞专讬 砖讛砖专砖专转 谞讙诪专转? 讘讗讜驻谉 专讙讬诇 谞转讬讘 砖住讬讬诐 讗转 讻诇 讛砖专砖专转 驻砖讜讟 讬讜讚驻住, 讗讘诇 find 谞讜转谞转 诇谞讜 诇砖讞拽 讙诐 注诐 讛转谞讛讙讜转 讝讜. 讛驻专诪讟专 --exec 讛讜讗 讚讜讙诪讗 诇驻拽讜讚讛 砖诪住讬讬诪转 讗转 讛砖专砖专转, 讘讗诪爪注讜转 讛专爪转 驻拽讜讚讛 注诇 讛拽讜讘抓 砖谞诪爪讗. 讝讗转 讛住讬讘讛 砖讛砖讜专讛 讛讘讗讛 转诪讞拽 诇讻诐 拽讜讘抓 讘砖诐 demo.txt 诇诪专讜转 砖讗转诐 讞讜砖讘讬诐 砖讗转诐 诪讚讘专讬诐 注诇 转讬拽讬讛:
$ find . -name 'one.txt' -exec ls -l {} \; -type d
讛讘注讬讛 讛讬讗 砖讬爪专谞讜 砖专砖专转 砖诪住转讬讬诪转 讘 exec 讜讘讝讛 讛住讬驻讜专 砖诇谞讜 谞讙诪专. 讛驻拽讜讚讛 -type d 讛讬讗 讞住专转 诪砖诪注讜转 讻讗谉 讻讬 讛讬讗 讘讗讛 讗讞专讬 住讜祝 讛砖专砖专转. 讜讗诐 讛讘谞转诐 讗转 讻诇 讝讛 讗转诐 诪讜讻谞讬诐 诇砖诪讜注 讗转 讛转砖讜讘讛 诪转讞讬诇转 讛驻讜住讟: 诪砖讘讬诇 诇讚诇讙 注诇 拽讘爪讬诐 讗讜 转讬拽讬讜转 讘 find, 讻诇 诪讛 砖爪专讬讱 讝讛 诇讚讗讜讙 砖讛诐 诇讗 讬注讘专讜 讗转 讛砖专砖专转. 讻讱 讛驻拽讜讚讛 讛讘讗讛 转爪讬讙 讗转 讻诇 讛拽讘爪讬诐 砖诪转讞讬诇讬诐 讘 o 讜诪住转讬讬诪讬诐 讘 txt 诪诇讘讚 one.txt:
$ find . -type f -not -name 'one.txt' -name 'o*.txt'
讜讗诐 专讜爪讬诐 诇讛转注诇诐 诪转讬拽讬讜转 讛驻拽讜讚讛 prune 讙讜专诪转 诇 find 诇住讬讬诐 讗转 讛砖专砖专转 讜诇讚诇讙 注诇 讛转讬拽讬讛 (讛讬讗 专诇讜讜谞讟讬转 专拽 讻砖讛谞转讬讘 讛讜讗 转讬拽讬讛). 诇讻谉 讛驻拽讜讚讛 讛讘讗讛 转讞驻砖 讗转 讛拽讜讘抓 package.json 讘讻诇 诪拽讜诐 诪诇讘讚 讘转讜讱 转讬拽讬讬转 node_modules:
$ find . -type d -name node_modules -prune -false -or -name package.json
讘专讬专转 讛诪讞讚诇 砖诇 -prune 讛讬讗 诇讛讚驻讬住 讗转 讛转讬拽讬讛 注诇讬讛 讛讬讗 讚讬诇讙讛, 讜讛转讜住驻转 -false 诪讬讚 讗讞专讬讛 诪讚诇讙转 注诇 讗讜转讛 讛讚驻住讛. 讘诇讬 讝讛 谞拽讘诇 讘驻诇讟 讙诐 讗转 讛转讬拽讬讛 node_modules 注诇讬讛 讚讬诇讙谞讜.

ToCode
1 419
# 砖拽专讬诐 诇讘谞讬诐 拽讟谞讬诐 讻砖讗转诐 诪转讬讬砖讘讬诐 诇讻转讜讘 诪诪砖拽 转讻谞讜转 (API) 讞讚砖 诇住驻专讬讛 讬砖 诇讻诐 砖转讬 讗驻砖专讜讬讜转 - 讗驻砖专 诇讘讞讜专 诇讻转讜讘 诪诪砖拽 转讻谞讜转 砖讬讝专讜拽 诇诪砖转诪砖讬诐 讗转 讛讗诪转 讘驻专爪讜祝, 讗讜 砖讗驻砖专 诇讛转讞讝讜转 诇诪砖讛讜 砖讛诪砖转诪砖讬诐 讻讘专 诪讻讬专讬诐. 讜诇砖谞讬 讛讚讘专讬诐 讬砖 讬转专讜谞讜转 讜讞住专讜谞讜转. 讛住驻专讬讛 Immer 诇拽讞讛 讗转 讛讙讬砖讛 讛诪转讞讝讛. 讛拽讜讚 讛讝讛 诇讗 专讜诪讝 讘砖讜诐 爪讜专讛 诇诪讛 砖讘讗诪转 拽讜专讛 讘讜:
import produce from "immer"

const byId = produce((draft, action) => {
    switch (action.type) {
        case RECEIVE_PRODUCTS:
            action.products.forEach(product => {
                draft[product.id] = product
            })
            return
    }
})
讝讛 谞专讗讛 讻诪讜 诇讜诇讗讛 砖诪砖谞讛 讗讜讘讬拽讟, 讗讘诇 诇诪注砖讛 讬砖 驻讛 讛诪讜谉 讛注转拽讜转 讜讛讝讝讜转 砖讗谞讞谞讜 诇讗 专讜讗讬诐. 拽讜讚 JavaScript 诪拽讘讬诇 讛讬讛 谞专讗讛 讻讱:
const byId = (state, action) => {
    switch (action.type) {
        case RECEIVE_PRODUCTS:
            return {
                ...state,
                ...action.products.reduce((obj, product) => {
                    obj[product.id] = product
                    return obj
                }, {})
            }
        default:
            return state
    }
}
谞砖讜讜讛 讗转 讝讛 注诐 Immutable.JS - 住驻专讬讛 砖注讜砖讛 讘讚讬讜拽 讗转 讗讜转讜 讚讘专 讗讘诇 讛驻注诐 讘诪诪砖拽 砖讝讜专拽 诇讱 讗转 讛讗诪转 讘驻专爪讜祝. 讗讬诪讬讜讟讘诇 注讜讘讚转 注诐 驻讜谞拽爪讬讜转 诪砖诇讛, 注诇 讗讜讘讬拽讟讬诐 砖诇讗 谞专讗讬诐 讻诪讜 砖讜诐 讚讘专 砖讗谞讞谞讜 诪讻讬专讬诐. 讛谞讛 讛拽讜讚:
const byId = (state, action) => {
    switch (action.type) {
        case RECEIVE_PRODUCTS:
          const productsData = action.products.reduce((obj, product) => {
            obj[product.id] = product
            return obj
          }, {})
          const immutableProductsData = Immutable.fromJS(productsData);
          return state.merge(immutableProductsData);
          
        default:
            return state
    }
}
讛转讜爪讗讛 讚讜诪讛 讗讘诇 讛讚专讱 ... 讘砖讘讬诇 诇讛讘讬谉 讗转 讛拽讜讚 砖诇 Immutable.JS 讗谞讞谞讜 爪专讬讻讬诐 诇讛讻讬专 讗转 Immutable.Map 讜讗转 Immutable.fromJS, 讜诇讻谉 讘砖讘讬诇 诇讻转讜讘 拽讜讚 讻讝讛 讗谞讞谞讜 讞讬讬讘讬诐 诇注讘讜专 拽讜讚诐 讘转讬注讜讚. 讗讬诪专 诇注讜诪转 讝讗转 讘讬讟诇讛 讗转 注拽讜诪转 讛诇诪讬讚讛 - 讛讬讗 驻砖讜讟 讛砖转诪砖讛 讘讚讘专讬诐 砖讗谞讞谞讜 讬讜讚注讬诐 讻讚讬 诇讬讬爪专 驻注讜诇讛 讗讞专转 诇讙诪专讬. 讗讝 诪讛 注讚讬祝? 讻诪讜 转诪讬讚 讘讞讬讬诐 - 讝讛 转诇讜讬: 1. 住驻专讬讛 砖诪砖拽专转 注讚讬驻讛 讻讬 拽诇 讬讜转专 诇讛转讞讬诇 诇讻转讜讘 讘讛 拽讜讚, 讛诪诪砖拽 诪砖讞拽 注诇 诪讘谞讬诐 砖讗谞讞谞讜 诪讻讬专讬诐 诪诪拽讜诪讜转 讗讞专讬诐 讜讘注爪诐 讛住驻专讬讛 讘讬讟诇讛 讗转 注拽讜诪转 讛诇诪讬讚讛. 讗谞讞谞讜 诪专讙讬砖讬诐 砖讗谞讞谞讜 讬讜讚注讬诐 诪讛 讗谞讞谞讜 注讜砖讬诐. 讗谞讙讜诇专1 讛讬转讛 讬讜转专 驻讜驻讜诇专讬转 诪 Backbone 讘讚讬讜拽 讘讙诇诇 砖讛讬讗 砖讬拽专讛, 讜讗谞砖讬诐 拽谞讜 讗转 讝讛 讘砖诪讞讛. 2. 住驻专讬讛 砖讝讜专拽转 诇讱 讗转 讛讗诪转 讘驻专爪讜祝 注讚讬驻讛 讻讬 讛讬讗 注讜讝专转 诇谞讜 诇讘谞讜转 讗转 讛诪讘谞讬诐 讛讗讜驻讟讬诪诇讬讬诐 讘讬讜转专 诇讘讬爪讜注 讻诇 诪砖讬诪讛. 讗讞专讬 讛诪注讘专 诇讗谞讙讜诇专1, 讗讬谞住驻讜专 诪转讻谞转讬诐 讛转讗讻讝讘讜 诪讛讘讬爪讜注讬诐 砖诇 讛住驻专讬讛. 讛讘注讬讛 讻诪讜讘谉 诇讗 讛讬转讛 讛住驻专讬讛 讗诇讗 砖讛诪讘谞讛 注讜讚讚 讗谞砖讬诐 诇讻转讜讘 拽讜讚 砖诇讗 讛讬讛 讗讜驻讟讬诪诇讬 诇诪谞讙谞讜谉 砖诪转讞转. 驻讬转讜讞 诪诪砖拽 砖谞专讗讛 讻诪讜 诪砖讛讜 讗讞专 讝讛 讛讬诪讜专 - 讻砖注讜砖讬诐 讗转 讝讛 谞讻讜谉 讝讛 讬讻讜诇 诇讛讬讜转 谞驻诇讗 讜诇讛驻讜讱 讗转 讛住驻专讬讛 砖诇讻诐 诇诪砖讛讜 砖讻讜诇诐 讬专爪讜 诇注讘讜讚 讗讬转讜, 讗讘诇 讗诐 转驻砖诇讜 诇讗谞砖讬诐 讬讛讬讛 拽砖讛 诪讗讜讚 诇住诇讜讞 诇讻诐, 讜诇讻诐 讛专讘讛 驻注诪讬诐 讬讛讬讛 拽砖讛 诪讗讜讚 诇转拽谉 讗转 讛谞讝拽.

ToCode
1 419
# 砖谞讬讛诐 讟讜讘讬诐 讗谞讙讜诇专 讗讜 专讬讗拽讟? 讗讜诇讬 讘注爪诐 讜讬讜? 专讬讬诇住 讗讜 谞讜讚? 讗讜 砖讗讜诇讬 讘讻诇诇 驻诇讗住拽? 拽诇讜讝'专 讗讜 讗诇讬拽住讬专? 驻讬讬转讜谉 讗讜 Java? 讗谞砖讬诐 讟讜讘讬诐, 讗谞砖讬诐 诪讜驻诇讗讬诐 讜讞讻诪讬诐, 讗谞砖讬诐 讻诪讜谞讬 讜讻诪讜讻谉 (讜转讻诇'住 讻谉 讙诐 讗谞讬 讜讗转谉) 讬讜砖讘讬诐 讜诪讘讝讘讝讬诐 讗转 讛讝诪谉 注诇 讘讞讬专讜转 诪讟讜驻砖讜转 讜讞住专讜转 讻诇 注专讱. 讗谞讬 诪讜爪讗 讗转 注爪诪讬 诪转谞讛讙 诇驻注诪讬诐 讻诪讜 讛讞诪讜专 砖讙讜讜注 讘专注讘 讗讞专讬 砖诇讗 讬讚注 诇讛讞诇讬讟 诪讗讬讝讜 注专讬诪转 讞爪讬专 诇讗讻讜诇, 讻讬 砖转讬 讛注专讬诪讜转 讛讬讜 讘讗讜转讜 诪专讞拽 诪诪谞讜. 讗讬谉 讘讝讛 砖讜诐 讛讙讬讜谉. 讛讛转诇讘讟讜转 讛诪讗讜讚 谞驻讜爪讛 爪专讬讱 诇讛讙讬讚 讘讬谉 砖转讬 讗驻砖专讜讬讜转 讟讜讘讜转 讛讬讗 讛注讜诇诐 讛拽驻讬讟诇讬住讟讬 砖爪讜注拽 注诇讬谞讜 诪讛诪讗讜讞专讛 砖诇 讛诪讜讞 - 讬讜转专 诪讛专! 讬讜转专 讬注讬诇! 讬讜转专 讝讜诇! 讗诇 转讘讝讘讝 讗谞专讙讬讛 注诇 讛讗讜驻爪讬讛 讛驻讞讜转 讟讜讘讛! 讬砖 诇谞讜 诪讜爪专 诇讘谞讜转! 讜诪专讜讘 讛爪注拽讜转 讛讗诇讛 讗谞讬 诇讗 诪爪诇讬讞 诇讛讞诇讬讟 讗驻讬诇讜 讗讬讱 诇拽专讜讗 诇驻讜谞拽爪讬讛 讛专讗砖讜谞讛 讘转讜讻谞讬转 讗讜 诪讛 讬讛讬讛 讛拽诇讗住 讛讘讗. 注讝讘讜 诪讛 讬讜转专 讟讜讘, 讝讛 诇讗 诪砖谞讛 讘讻诇诇. 诪讜转专 诇讘讝讘讝 讗谞专讙讬讛, 诪讜转专 诇注砖讜转 讚讘专讬诐 砖诇讗 诪爪诇讬讞讬诐, 诪讜转专 诇讘讞讜专 讗转 讛讗讜驻爪讬讛 砖讛讬讗 诇讗 讛讻讬 讟讜讘讛. 诪诪讬诇讗 讗讬谉 砖讜诐 讚专讱 诇讚注转 诪专讗砖 诪讛 讬爪诇讬讞. 讗爪诇讬 诇驻讞讜转, 讚讜讜拽讗 讻砖讗谞讬 诪讜讻谉 诇驻转讜讞 讗转 讛讚诇转 诇讻砖诇讜谉 讘诪拽讜诐 诇驻讞讚 诪诪谞讜, 讗谞讬 诪讙诇讛 砖讛专讘讛 讬讜转专 拽诇 诇讛转专讻讝 讜诇注砖讜转 注讘讜讚讛 讗诪讬转讬转.

ToCode
1 419
# 讞讬驻讜砖 住讬驻专讛 讻驻讜诇讛 讘 Clojure 讘讛砖讜讜讗讛 诇驻讬讬转讜谉 讗谞讬 诪诪砖讬讱 诇诇诪讜讚 拽诇讜讝'专 注诐 AoC 讜讘转专讙讬诇 讛讬讜诐 讛诪砖讬诪讛 讛诪专讻讝讬转 讛讬转讛 诇讻转讜讘 拽讜讚 砖讬讝讛讛 住讬驻专讛 讻驻讜诇讛 讘诪住驻专. 讝讛 诇讗 谞砖诪注 谞讜专讗讬 注讚 砖讗转诐 谞讝讻专讬诐 砖讗住讜专 砖讛专爪祝 讬讛讬讛 讗专讜讱 讬讜转专 诪砖转讬 住驻专讜转, 讻诇讜诪专 讘注讜讚 砖 12234 诪转拽讘诇 讬驻讛, 讛讞讘专 砖诇讜 122234 诇讗 注讜讘专 讗转 讛讘讚讬拽讛. 讘讙讬砖讛 驻专讜爪讚讜专诇讬转 专讙讬诇讛 转专讙讬诇 讻讝讛 讛讬讛 讻诪注讟 Non-Issue: 专爪讬诐 注诇 讛诪住驻专 住讬驻专讛 住讬驻专讛 讜砖讜诪专讬诐 讗转 讛专爪祝, 讻砖诪讝讛讬诐 砖讛专爪祝 讘讚讬讜拽 讘讗讜专讱 讛诪转讗讬诐 讗驻砖专 诇讘专讜讞 诪讛诇讜诇讗讛 讜诇住诪谉 讛爪诇讞讛. 讗诐 住讬讬诪谞讜 讗转 讛诪住驻专 讜诇讗 讛爪诇讞谞讜 诇诪爪讜讗 讗祝 专爪祝 讘讗讜专讱 2 谞爪讟专讱 诇讛讞讝讬专 讻讬砖诇讜谉. 讘驻讬讬转讜谉 讬讛讬讛 谞讜讞 诇讻转讜讘 驻讜谞拽爪讬讬转 注讝专 砖诪砖转诪砖转 讘诪谞讙谞讜谉 砖转讬讗专转讬 讜诪讞诇拽转 讗转 讛诪住驻专 诇 chunks 讘爪讜专讛 讻讝讜:
def chunks(seq):
    chunk = []

    for val in seq:
        if len(chunk) == 0:
            chunk.append(val)
            continue

        if chunk[-1] == val:
            chunk.append(val)
            continue

        yield(chunk)
        chunk = [val]

    else:
        yield(chunk)
讗讘诇 讛讗诪转 砖讗讞专讬 砖讻转讘转讬 讗讜转讛 谞讝讻专转讬 砖讬砖 诇驻讬讬转讜谉 讻讘专 讗转 groupby 砖注讜砖讛 注讘讜讚讛 诪诪砖 讚讜诪讛 讜讘讟讜讞 注诐 讛专讘讛 驻讞讜转 讘讗讙讬诐 讗讝 注讘专转讬 诇讛砖转诪砖 讘讛, 讜注讻砖讬讜 讛讞讬讬诐 砖诇谞讜 谞讛讬讜 诪诪砖 拽诇讬诐 讻讬 讘住讱 讛讻诇 爪专讬讱 诇讛驻注讬诇 讗讜转讛 讜诇讘讚讜拽 讗诐 讗讞讚 讛爪'讗谞拽讬诐 讛讜讗 讘讗讜专讱 砖讞讬驻砖转讬:
import itertools

def find_sequence_of_size(number, sequence_size=2):
    for key, chunk in itertools.groupby(str(number)):
        if len(list(chunk)) == sequence_size:
            return True

    return False
讘拽诇讜讝'专 讛驻讬转专讜谉 诪诪砖 讚讜诪讛 讜讗谞讬 讞讜砖讘 砖讝讛 谞讞诪讚 砖驻讜谞拽爪讬讜转 注讝专 砖讗谞讞谞讜 专讙讬诇讬诐 讗诇讬讛谉 诪砖驻讛 讗讞转 诪讜爪讗讜转 讗转 讚专讻谉 讙诐 诇砖驻讜转 讗讞专讜转. 诇 groupby 讛诐 拽讜专讗讬诐 讻讗谉 partition-by 讗讘诇 讗谞讞谞讜 诇讗 诇讜拽讞讬诐 诇诇讘 讛讘讚诇讬诐 讘砖诪讜转. 讛拽讜讚 讛诪转讗讬诐 讘拽诇讜讝'专 谞专讗讛 讻讱:
(defn only-two-adjacent-digits
  [num]
  (let [
        snum (str num)
        chunks (partition-by identity snum)
        ]
    (not (empty? (filter (fn [chunk] (= (count chunk) 2)) chunks)))))

ToCode
1 419
# 讗驻拽讟 讞讚专 讛讻讜砖专 讘讬讜诐 讛专讗砖讜谉 48,236 诪转讻谞转讬诐 讛讙讬砖讜 诇讗专讬拽 讜讜住讟诇 讗转 讛驻讬转专讜谉 诇讞讬讚讛. 讘讬讜诐 讛砖谞讬 讛诪住驻专 讬专讚 诇 31,926 讜讛讬讜诐 谞讻讜谉 诇讝诪谉 讻转讬讘转 讛驻讜住讟 讗谞讞谞讜 注诇 8,884, 讻讱 诇驻讬 讚祝 讛住讟讟讬住讟讬拽讛 砖诇 讛驻专讜讬拽讟. 讛讬专讬讚讛 讛讜诇讻转 注讜讚 诇讛讬诪砖讱 讜讗谞讞谞讜 诪讻讬专讬诐 讗转 讛转讜驻注讛 诪讻诇 讗转讙专 讗专讜讱 砖讛讬讬谞讜 讘讜. 专讜讘 讛讚讘专讬诐 讛诪注谞讬讬谞讬诐 砖谞专爪讛 诇注砖讜转 讬转讞讬诇讜 诇讛讘讬讗 转讜爪讗讜转 专拽 讗讞专讬 讞讜讚砖讬诐 讗专讜讻讬诐 砖诇 讛转诪讚讛, 诇驻注诪讬诐 讗驻讬诇讜 砖谞讬诐. 讝讛 诇讗 住讜祝 讛注讜诇诐 诇讛转讞讬诇 诇注砖讜转 住驻讜专讟 砖诇讜砖讛 讞讜讚砖讬诐 讜讗讝 诇讛转讬讬讗砖, 讗讘诇 拽砖讛 诇讛讗诪讬谉 砖转爪诇讬讞讜 诇讛讬讻谞住 诪讝讛 诇讻讜砖专. 讬讜转专 讞讻诐 讗谞讬 讞讜砖讘 讬讛讬讛 诇砖讗讜诇 诪专讗砖: 讛讗诐 讗谞讬 专讜爪讛 诇讛讬讜转 诪转讻谞转 砖诪诪砖讬讱 诇诇诪讜讚 讻诇 讬讜诐 讚讘专讬诐 讞讚砖讬诐, 讗讜 砖诇讜诪讚 讚讘专讬诐 讞讚砖讬诐 专拽 讻砖爪专讬讱 诇诪爪讜讗 注讘讜讚讛? 讜讻谉 讘专讜专 砖讬砖 讛诪讜谉 讬诪讬诐 砖讗讬谉 诇讱 讻讞 诇诇诪讜讚 诪砖讛讜 讞讚砖 讗讜 诇讛转讗诪抓 注诇 转专讙讬诇 砖讗转 诇讗 诪讻讬专讛. 讻诪讜 砖讬砖 讛诪讜谉 讬诪讬诐 砖诇讗 诪转讞砖拽 诇注砖讜转 住驻讜专讟 讗讜 诇爪讞爪讞 砖讬谞讬讬诐. 讛讟专讬拽 讛讜讗 诇注砖讜转 讗转 讛讘讞讬专讛 驻注诐 讗讞转 讘讛转讞诇讛, 讘诪拽讜诐 讻诇 讬讜诐 诪讞讚砖.