for i in range(27):
print(f'{i:2}:', i // 9 % 3, i // 3 % 3, i % 3)
s = 'abc'
def g(i):
return s[i // 9 % 3], s[i // 3 % 3], s[i % 3]
for i in range(len(s) ** 3):
print(g(i))
def g(s, i):
n = len(s)
return [
s[i // n**(n-j-1) % n]
for j in range(n)
]
my_custom_string = 'abc'
for i in range(len(my_custom_string) ** len(my_custom_string)):
print(g(my_custom_string, i))
import itertools
import functools
import operator
class Producti:
def __init__(self, *iters, repeat=1):
iters = [list(it) for it in iters]
self.iters = iters * repeat
self._len = functools.reduce(operator.mul, map(len, self.iters))
def __len__(self):
return self._len
#def __iter__(self):
# return (self[i] for i in range(len(self)))
def __getitem__(self, idx):
if isinstance(idx, slice):
return (self[i] for i in range(len(self))[idx])
if idx >= len(self):
raise IndexError(f'product index out of range')
r = []
d = 1
for it in self.iters:
r.append(it[idx // d % len(it)])
d *= len(it)
return tuple(r[::-1])
for x in Producti('abc', repeat=3)[3:7]:
print(x)
import asyncio
from aiohttp import ClientSession, ClientError
async def check_url(url):
async with ClientSession() as s:
try:
r = await s.head(url)
if r.status != 200:
return url
except ClientError:
return f'error {url}'
URLS = [
'https://ya.ru',
'https://qna.habr.com/',
'https://qna.habr1.com/',
] * 10
async def _main():
fails = await asyncio.gather(*(check_url(url) for url in URLS))
print(fails)
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(_main())
loop.close()
все модули передавать напрямую в функцию (как это сделано со state)оправдано только в том случае, если вы реализуете паттерн Стратегия
const os = require('os'),
path = require('path'),
fs = require('fs'),
kb = require('../modules/keyboards.js'),
config = require('../config.js');
module.exports = { os, path, fs, kb, config }
На выходе должен выдавать следующую информацию, к примеру:Я бота-то текстового ( Бот, понимающий смысл? ) не могу сделать с корректным построением фраз, а тут - ТАКОЕ...
на этаже шириной 6 м и длиной 12 м расположены две лестничные клетки в осях (...) и (...). На данном этаже расположены помещения номер 1 (санузел), 2 (комната), 3 (коридор) .... (- наименование помещений обязательно указано на чертеже в экспликации. В идеале, программа должна сопостовлять номера и понять где/что. Но думаю это легкая задача).
// export или module.export =
function formatText(text, formatters) {
return formatters.reduceRight(applyFormatter, text);
}
function applyFormatter(text, formatter) {
const {offset, length, type} = formatter;
const endOffset = offset + length;
const wrapper = getWrapper(type);
return `${text.slice(0, offset)}${wrapper(
text.slice(offset, endOffset),
formatter
)}${text.slice(endOffset)}`;
}
function getWrapper(type) {
switch(type) {
case 'bold':
return boldWrapper;
case 'text_link':
return linkWrapper;
default:
return identityWraper;
}
}
function boldWrapper(text) {
return `<b>${text}</b>`;
}
function linkWrapper(text, {url}) {
return `<a href="${url}">${text}</a>`
}
function identityWraper(text) {
return text;
}
console.log(formatText('qwerty Ссылка', [
{ offset: 0, length: 7, type: 'bold' },
{ offset: 7, length: 6, type: 'text_link', url: 'https://vk.com/' }
])); // <b>qwerty </b><a href="https://vk.com/">Ссылка</a>
node -v