#!/usr/bin/perl -w use strict; sub factor1 { return @_ if $_[0] !~ /^(..+?)\1+$/; return map { factor1($_) } ( "$1", $_[0] =~ s/$1/1/g, $_[0] )[0,-1]; } sub factor10 { return map {length} factor1( 1x$_[0] ); } print join $/, map { join " ", factor10($_) } @ARGV;