Sha256: d4627ad2c419f7a38f68ce930a17cc6c9d84c00663712611c97c6cd2d29cf91c

Contents?: true

Size: 1.01 KB

Versions: 112

Compression:

Stored size: 1.01 KB

Contents

<?php

/**
 * @param string $input
 * @return string
 */
function encode($input)
{
    if (!$input) {
        return '';
    }

    $output = '';
    $prev = $letter = null;
    $count = 1;

    foreach (str_split($input) as $letter) {
        if ($letter === $prev) {
            $count++;
        } else {
            if ($count > 1) {
                $output .= $count;
            }
            $output .= $prev;
            $count = 1;
        }

        $prev = $letter;
    }

    if ($count > 1) {
        $output .= $count;
    }
    $output .= $letter;

    return $output;
}

/**
 * @param string $input
 * @return string
 */
function decode($input)
{
    $output = '';
    preg_match_all('/([1-9]*)(\w|\s)/', $input, $matches);

    $length = count($matches[0]);
    for ($i = 0; $i < $length; $i++) {
        $count = $matches[1][$i];
        if ($count === '') {
            $count = 1;
        }
        $letter = $matches[2][$i];

        $output .= str_repeat($letter, (int) $count);
    }

    return $output;
}

Version data entries

112 entries across 112 versions & 1 rubygems

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