Sha256: 0fb241c1db216303979ac602505d130ad6847eb31179be17c2c9211092c2847c

Contents?: true

Size: 1.15 KB

Versions: 330

Compression:

Stored size: 1.15 KB

Contents

<?php

/**
 *
Here is the simplest solution. But King hates floats.

function square($n)
{
    if ($n < 1 || $n > 64) {
        throw new InvalidArgumentException();
    }
    return pow(2, $n - 1);
}

function total()
{
    return array_reduce(range(1, 64), function ($acc, $n) {
        return $acc += square($n);
    });
}
 */

function square($n)
{
    if ($n < 1 || $n > 64) {
        throw new InvalidArgumentException();
    }

    $result = [1];
    for ($i = $n - 1; $i > 0; $i--) {
        $result = sum($result, $result);
    }

    return implode('', array_reverse($result));
}

function total()
{
    return implode('', array_reverse(
        array_reduce(range(1, 64), function ($acc, $n) {
            return sum($acc, array_reverse(str_split(square($n))));
        }, [])
    ));
}

function sum($x, $y)
{
    $shift = 0;
    $result = array_map(function ($a, $b) use (&$shift) {
        $value = $a + $b + $shift;
        if ($value >= 10) {
            $value -= 10;
            $shift = 1;
        } else {
            $shift = 0;
        }
        return $value;
    }, $x, $y);
    if ($shift) {
        array_push($result, $shift);
    }
    return $result;
}

Version data entries

330 entries across 330 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/php/exercises/grains/example.php
trackler-2.2.1.179 tracks/php/exercises/grains/example.php
trackler-2.2.1.178 tracks/php/exercises/grains/example.php
trackler-2.2.1.177 tracks/php/exercises/grains/example.php
trackler-2.2.1.176 tracks/php/exercises/grains/example.php
trackler-2.2.1.175 tracks/php/exercises/grains/example.php
trackler-2.2.1.174 tracks/php/exercises/grains/example.php
trackler-2.2.1.173 tracks/php/exercises/grains/example.php
trackler-2.2.1.172 tracks/php/exercises/grains/example.php
trackler-2.2.1.171 tracks/php/exercises/grains/example.php
trackler-2.2.1.170 tracks/php/exercises/grains/example.php
trackler-2.2.1.169 tracks/php/exercises/grains/example.php
trackler-2.2.1.167 tracks/php/exercises/grains/example.php
trackler-2.2.1.166 tracks/php/exercises/grains/example.php
trackler-2.2.1.165 tracks/php/exercises/grains/example.php
trackler-2.2.1.164 tracks/php/exercises/grains/example.php
trackler-2.2.1.163 tracks/php/exercises/grains/example.php
trackler-2.2.1.162 tracks/php/exercises/grains/example.php
trackler-2.2.1.161 tracks/php/exercises/grains/example.php
trackler-2.2.1.160 tracks/php/exercises/grains/example.php