рдпрд╛рдВрдбреЗрдХреНрд╕ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╣рд░ рджрд┐рди рдХреНрдпрд╛ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ

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




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


. 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, , , !


All Articles