рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░реЛрдВ рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣рд╕ рдЕрдВрддрд╣реАрди рд╣реИред рдПрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЬрд╡рд╛рдм рдХреЗ рд╕рдорд░реНрдерди рдореЗрдВ, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпреИрдВрдбреЗрдХреНрд╕ рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рд╛рде рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдХрд╣рд╛рдиреА рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреА рдФрд░ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдЬреЛ рд╡рд╣рд╛рдВ рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдм рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрддреНрдкрд╛рджрди рдХреЛрдб рдХреЗ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реВрдВред

рд╕рднреА рдЙрджрд╛рд╣рд░рдг рдПрдХ рдмрд╛рд░ рдХрд╛рдлреА рдирд┐рдпрдорд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рдереЗред рдореИрдВрдиреЗ рдкреНрд░рдХрд╛рд╢рди рд╕реЗ рдкрд╣рд▓реЗ рдХреЛрдб рдореЗрдВ рд╕реБрдзрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛, рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рддрд╛рдХрд┐ рд╣рдорд╛рд░реЗ рдХреЛрдб рдЖрдзрд╛рд░ рдХреЛ рдЬрд╛рдиреЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХреЗред рдЗрд╕рд▓рд┐рдП, рдХреБрдЫ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рдЖрдкрдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рд╢рд╛рдВрдд рдирд╣реАрдВ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдордп рд╕реАрдорд╛ рдХреЗ рдирд┐рд░рдВрддрд░ рджрдмрд╛рд╡ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреВрд░реЗ рдХреЛрдб рдХреЛ рдкреАрд╕рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред
. C++, TypeScript Python. тАФ , .
1. .
2016- .. , , . :

.
, , ┬л ┬╗, . . - - тАФ , , : ┬л ┬╗, ┬л┬╗, ┬л┬╗. , - - ┬л┬╗ ┬л┬╗, .
. , , : - , ; . , -, . :
bool ContainsStopHash(const TString& text,
TEasyParser& easyParser,
const THashSet<size_t>& stopHashes)
{
std::vector<TString> words;
easyParser.ParseUTF8Text(text, &words);
size_t unigramHash = 0;
size_t bigramHash = 0;
for (const TString& word : words) {
const size_t lastUnigramHash = unigramHash;
const size_t wordHash = word.hash();
unigramHash = wordHash;
bigramHash ^= wordHash;
if (stopHashes.contains(unigramHash) || stopHashes.contains(bigramHash)) {
return true;
}
bigramHash ^= lastUnigramHash;
}
return false;
}
TEasyParser
тАФ , , , THashSet
тАФ std::unordered_set
, TString
тАФ .
тАФ , : , . , , .
2. Reservoir sampling MapReduce
, - , . , , .
. , тАФ , - - .

, , , , - . , std::shuffle.
, . , . , ; i
, 0
i
.
. , , K
тАФ , . K
, , K
. std::shuffle : K
тАФ , , .
: i
- 0
i
. , K
тАФ , - . reducer' :
void Do(TMRReader* input, TMRWriter* output) override {
TVector<TNode> sample;
TMersenne<ui64> mersenne;
size_t passedItems = 0;
for (; input->IsValid(); input->Next()) {
++passedItems;
size_t position = mersenne.GenRand64() % passedItems;
if (position >= ItemsToTake) {
continue;
}
if (sample.size() < ItemsToTake) {
sample.push_back(input->GetRow());
} else {
sample[position] = input->GetRow();
}
}
Shuffle(sample.begin(), sample.end(), mersenne);
for (const TNode& node : sample) {
output->Add(node);
}
}
TMersenne
тАФ mersenne twister, , TNode
тАФ , MapReduce-.
, .
3. TypeScript
-. тАФ .
url' . , url /action?param=¶m=1;2;3¶m=8
, url :
{
"param" : ["", "1;2;3", "8"]
}
, . , , :
{
"param" : ["1", "2", "3", "8"]
}
:
export type TParamValue = string | string[];
export type TParams = Record<string, TParamValue>;
export function normalizeParams(params: TParams): TParams {
const result = {};
for (const [paramName, paramValue] of Object.entries(params)) {
// query-
if (Array.isArray(paramValue)) {
result[paramName] = paramValue.reduce((acc, part) => {
if (part) {
acc = acc.concat(part.split(';').filter(Boolean));
}
return acc;
}, []);
} else if (paramValue) {
result[paramName] = paramValue.split(';').filter(Boolean);
}
}
return result;
}
. тАФ . тАФ : , , .
4. Python
-; , , , . , . , !
тАФ . тАФ , . , , , , - - .
count = 0
firstPos = -1
clicks = 0
for block in blocks:
result = bl.GetMainResult()
if result.IsA('TWebResult'):
url = result.Url
pos = result.Pos
propValue = result.PropValue
if propValue in interestingValues:
count += 1
if firstPos == -1:
firstPos = pos
for cl in bl.GetClicks():
clicks += 1
yield Record(count=count,firstPos=firstPos,clicks=clicks)
set
, .
, тАФ , , .
5.
, , , тАФ . , YouTube (, ) .
. , . , .
def foo(nums):
current = 0
best = 0
for n in nums:
if n > 0:
current += 1
best = max(best, current)
else:
current = 0
return best
. . , : . .
def dictFromString(s):
d = defaultdict(int)
for c in s:
d[c] += 1
return d
def areAnagrams(a, b):
return dictFromString(a) == dictFromString(b)
. : n
. 2n
.
def generate(cur, open, closed, n):
if len(cur) == 2 * n:
print cur
return
if open < n:
generate(cur + '(', open + 1, closed, n)
if closed < open:
generate(cur + ')', open, closed + 1, n)
def parens(n):
generate('', 0, 0, n)
, , :
, , тАФ , machine learning, , , , . , -: , , .
aka nkmakarov, , , !