strelov1
12/4/2015 - 7:32 PM

solution.php

<?php

function solution() {
    $sequence = range(1, 100);

    function odd($var) {
        return $var & 1;
    }

    $sequence = array_filter($sequence, "odd");
    $sequence = array_chunk($sequence, 2);

    function add($carry, $item) {
        return $carry += $item;
    }

    function par($array) {
        return array_reduce($array, "add");
    }

    $sequence = array_map("par", $sequence);

    function binary($item) {
        $binary = decbin($item);
        return substr_count($binary, '0') == substr_count($binary, '1');
    }

    $sequence = array_filter($sequence, "binary");

    function carry($carry, $item) {
        return $carry += substr_count(decbin($item), '0');
    }

    return array_reduce($sequence, "carry");

}

echo "<pre>";
print_r(solution());


// https://repl.it/B5uC
// https://repl.it/B5uC/1
// https://repl.it/B5tU/2
// https://hexlet-ru.slack.com/files/kirill.mokevnin/F0FTR91HR/solution_php.php
// https://gist.github.com/ikotlyar/0b4bf930bc1be2117802
// https://gist.github.com/LionsHead/3a93e6358b15286dd2fb
// алгоритм 
// 1) генерируем последовательность натуральных чисел до ста, 
// 2) оставляем только нечетные 
// 3) складываем их попарно 
// 4) оставляем только те у которых в бинарном представлении количество единиц и нулей одинаковое 
// 5) возвращаем общее количество единиц