- Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Curabitur porttitor scelerisque pede. Mauris rutrum tortor non lacus. Duis volutpat, dui sit amet rhoncus posuere, felis odio tristique neque, a fringilla risus magna et mauris. Duis eu purus et diam suscipit vulputate. Nam faucibus leo nec sapien. Integer vitae ante. Donec non est. Vestibulum condimentum, felis ut hendrerit malesuada, lectus tellus faucibus est, a dictum nulla diam ac dolor. Donec pede. Mauris id nisl. Vivamus sit amet elit. Pellentesque in odio sed nibh vestibulum aliquet. Sed erat mauris, tempor sed, molestie iaculis, pulvinar quis, turpis. Sed rutrum tellus at arcu. Duis lectus lorem, rutrum eget, consectetuer vitae, tempor eu, risus. In hac habitasse platea dictumst. Ut neque. Aenean sem nisi, hendrerit non, lacinia eu, gravida eget, magna.
- Pellentesque pellentesque tristique neque. Duis varius. Nunc venenatis, libero at molestie porttitor, tortor mauris volutpat purus, vel sollicitudin orci orci nec metus. Suspendisse ut ipsum at ipsum vehicula luctus. Sed gravida felis eu lectus. Proin fringilla felis. Duis ornare ultricies eros. Nullam a leo pretium nunc pharetra tempor. Etiam vitae tortor ac leo adipiscing bibendum. Integer facilisis. Aenean varius purus eget odio. Nulla laoreet. Aliquam auctor blandit nibh. Mauris augue. Sed egestas purus in justo. Duis id quam.
- Maecenas at nibh. Donec imperdiet vehicula sem. Praesent et lacus ac elit interdum sollicitudin. Donec id nibh. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nullam semper, felis vehicula gravida consequat, neque nisl dictum massa, eu sodales dui sem id augue. Sed sit amet purus. Quisque consectetuer elit et ipsum rutrum iaculis. Morbi placerat, leo ac consectetuer porttitor, nisl odio tempus mi, nec volutpat est dolor vel enim. Duis faucibus gravida urna. Curabitur eget felis non nisi pretium pharetra. Fusce tincidunt eros eu purus. Maecenas dolor. Maecenas libero nulla, hendrerit quis, dignissim in, lacinia eget, est. Curabitur pharetra ante vel quam ultrices dignissim.
- ================================================================================================================
- <?php
- /**
- * Class Minify
- * @package Minify
- */
- /**
- * Minify_Source
- */
- require_once 'Minify/Source.php';
- /**
- * Minify - Combines, minifies, and caches JavaScript and CSS files on demand.
- *
- * See README for usage instructions (for now).
- *
- * This library was inspired by {@link mailto:flashkot@mail.ru jscsscomp by Maxim Martynyuk}
- * and by the article {@link http://www.hunlock.com/blogs/Supercharged_Javascript "Supercharged JavaScript" by Patrick Hunlock}.
- *
- * Requires PHP 5.1.0.
- * Tested on PHP 5.1.6.
- *
- * @package Minify
- * @author Ryan Grove <ryan@wonko.com>
- * @author Stephen Clay <steve@mrclay.org>
- * @copyright 2008 Ryan Grove, Stephen Clay. All rights reserved.
- * @license http://opensource.org/licenses/bsd-license.php New BSD License
- * @link http://code.google.com/p/minify/
- */
- class Minify {
- const TYPE_CSS = 'text/css';
- const TYPE_HTML = 'text/html';
- // there is some debate over the ideal JS Content-Type, but this is the
- // Apache default and what Yahoo! uses..
- const TYPE_JS = 'application/x-javascript';
- /**
- * How many hours behind are the file modification times of uploaded files?
- *
- * If you upload files from Windows to a non-Windows server, Windows may report
- * incorrect mtimes for the files. Immediately after modifying and uploading a
- * file, use the touch command to update the mtime on the server. If the mtime
- * jumps ahead by a number of hours, set this variable to that number. If the mtime
- * moves back, this should not be needed.
- *
- * @var int $uploaderHoursBehind
- */
- public static $uploaderHoursBehind = 0;
- /**
- * Specify a cache object (with identical interface as Minify_Cache_File) or
- * a path to use with Minify_Cache_File.
- *
- * If not called, Minify will not use a cache and, for each 200 response, will
- * need to recombine files, minify and encode the output.
- *
- * @param mixed $cache object with identical interface as Minify_Cache_File or
- * a directory path. (default = '')
- *
- * @param bool $fileLocking (default = true) This only applies if the first
- * parameter is a string.
- *
- * @return null
- */
- public static function setCache($cache = '', $fileLocking = true)
- {
- if (is_string($cache)) {
- require_once 'Minify/Cache/File.php';
- self::$_cache = new Minify_Cache_File($cache, $fileLocking);
- } else {
- self::$_cache = $cache;
- }
- }
- /**
- * Serve a request for a minified file.
- *
- * Here are the available options and defaults in the base controller:
- *
- * 'isPublic' : send "public" instead of "private" in Cache-Control
- * headers, allowing shared caches to cache the output. (default true)
- *
- * 'quiet' : set to true to have serve() return an array rather than sending
- * any headers/output (default false)
- *
- * 'encodeOutput' : to disable content encoding, set this to false (default true)
- *
- * 'encodeMethod' : generally you should let this be determined by
- * HTTP_Encoder (leave null), but you can force a particular encoding
- * to be returned, by setting this to 'gzip', 'deflate', or '' (no encoding)
- *
- * 'encodeLevel' : level of encoding compression (0 to 9, default 9)
- *
- * 'contentTypeCharset' : appended to the Content-Type header sent. Set to a falsey
- * value to remove. (default 'UTF-8')
- *
- * 'maxAge' : set this to the number of seconds the client should use its cache
- * before revalidating with the server. This sets Cache-Control: max-age and the
- * Expires header. Unlike the old 'setExpires' setting, this setting will NOT
- * prevent conditional GETs. Note this has nothing to do with server-side caching.
- *
- * 'rewriteCssUris' : If true, serve() will automatically set the 'currentDir'
- * minifier option to enable URI rewriting in CSS files (default true)
- *
- * 'debug' : set to true to minify all sources with the 'Lines' controller, which
- * eases the debugging of combined files. This also prevents 304 responses.
- * @see Minify_Lines::minify()
- *
- * 'minifiers' : to override Minify's default choice of minifier function for
- * a particular content-type, specify your callback under the key of the
- * content-type:
- * <code>
- * // call customCssMinifier($css) for all CSS minification
- * $options['minifiers'][Minify::TYPE_CSS] = 'customCssMinifier';
- *
- * // don't minify Javascript at all
- * $options['minifiers'][Minify::TYPE_JS] = '';
- * </code>
- *
- * 'minifierOptions' : to send options to the minifier function, specify your options
- * under the key of the content-type. E.g. To send the CSS minifier an option:
- * <code>
- * // give CSS minifier array('optionName' => 'optionValue') as 2nd argument
- * $options['minifierOptions'][Minify::TYPE_CSS]['optionName'] = 'optionValue';
- * </code>
- *
- * 'contentType' : (optional) this is only needed if your file extension is not
- * js/css/html. The given content-type will be sent regardless of source file
- * extension, so this should not be used in a Groups config with other
- * Javascript/CSS files.
- *
- * Any controller options are documented in that controller's setupSources() method.
- *
- * @param mixed instance of subclass of Minify_Controller_Base or string name of
- * controller. E.g. 'Files'
- *
- * @param array $options controller/serve options
- *
- * @return mixed null, or, if the 'quiet' option is set to true, an array
- * with keys "success" (bool), "statusCode" (int), "content" (string), and
- * "headers" (array).
- */
- public static function serve($controller, $options = array()) {
- if (is_string($controller)) {
- // make $controller into object
- $class = 'Minify_Controller_' . $controller;
- if (! class_exists($class, false)) {
- require_once "Minify/Controller/"
- . str_replace('_', '/', $controller) . ".php";
- }
- $controller = new $class();
- }
- // set up controller sources and mix remaining options with
- // controller defaults
- $options = $controller->setupSources($options);
- $options = $controller->analyzeSources($options);
- self::$_options = $controller->mixInDefaultOptions($options);
- // check request validity
- if (! $controller->sources) {
- // invalid request!
- if (! self::$_options['quiet']) {
- header(self::$_options['badRequestHeader']);
- echo self::$_options['badRequestHeader'];
- return;
- } else {
- list(,$statusCode) = explode(' ', self::$_options['badRequestHeader']);
- return array(
- 'success' => false
- ,'statusCode' => (int)$statusCode
- ,'content' => ''
- ,'headers' => array()
- );
- }
- }
- self::$_controller = $controller;
- if (self::$_options['debug']) {
- self::_setupDebug($controller->sources);
- self::$_options['maxAge'] = 0;
- }
- // check client cache
- require_once 'HTTP/ConditionalGet.php';
- $cgOptions = array(
- 'lastModifiedTime' => self::$_options['lastModifiedTime']
- ,'isPublic' => self::$_options['isPublic']
- );
- if (self::$_options['maxAge'] > 0) {
- $cgOptions['maxAge'] = self::$_options['maxAge'];
- }
- $cg = new HTTP_ConditionalGet($cgOptions);
- if ($cg->cacheIsValid) {
- // client's cache is valid
- if (! self::$_options['quiet']) {
- $cg->sendHeaders();
- return;
- } else {
- return array(
- 'success' => true
- ,'statusCode' => 304
- ,'content' => ''
- ,'headers' => $cg->getHeaders()
- );
- }
- } else {
- // client will need output
- $headers = $cg->getHeaders();
- unset($cg);
- }
- // determine encoding
- if (self::$_options['encodeOutput']) {
- if (self::$_options['encodeMethod'] !== null) {
- // controller specifically requested this
- $contentEncoding = self::$_options['encodeMethod'];
- } else {
- // sniff request header
- require_once 'HTTP/Encoder.php';
- // depending on what the client accepts, $contentEncoding may be
- // 'x-gzip' while our internal encodeMethod is 'gzip'. Calling
- // getAcceptedEncoding() with false leaves out compress as an option.
- list(self::$_options['encodeMethod'], $contentEncoding) = HTTP_Encoder::getAcceptedEncoding(false);
- }
- } else {
- self::$_options['encodeMethod'] = ''; // identity (no encoding)
- }
- if (self::$_options['contentType'] === self::TYPE_CSS
- && self::$_options['rewriteCssUris']) {
- reset($controller->sources);
- while (list($key, $source) = each($controller->sources)) {
- if ($source->filepath
- && !isset($source->minifyOptions['currentDir'])
- && !isset($source->minifyOptions['prependRelativePath'])
- ) {
- $source->minifyOptions['currentDir'] = dirname($source->filepath);
- }
- }
- }
- // check server cache
- if (null !== self::$_cache) {
- // using cache
- // the goal is to use only the cache methods to sniff the length and
- // output the content, as they do not require ever loading the file into
- // memory.
- $cacheId = 'minify_' . self::_getCacheId();
- $encodingExtension = self::$_options['encodeMethod']
- ? ('deflate' === self::$_options['encodeMethod']
- ? '.zd'
- : '.zg')
- : '';
- $fullCacheId = $cacheId . $encodingExtension;
- // check cache for valid entry
- $cacheIsReady = self::$_cache->isValid($fullCacheId, self::$_options['lastModifiedTime']);
- if ($cacheIsReady) {
- $cacheContentLength = self::$_cache->getSize($fullCacheId);
- } else {
- // generate & cache content
- $content = self::_combineMinify();
- self::$_cache->store($cacheId, $content);
- self::$_cache->store($cacheId . '.zd', gzdeflate($content, self::$_options['encodeLevel']));
- self::$_cache->store($cacheId . '.zg', gzencode($content, self::$_options['encodeLevel']));
- }
- } else {
- // no cache
- $cacheIsReady = false;
- $content = self::_combineMinify();
- }
- if (! $cacheIsReady && self::$_options['encodeMethod']) {
- // still need to encode
- $content = ('deflate' === self::$_options['encodeMethod'])
- ? gzdeflate($content, self::$_options['encodeLevel'])
- : gzencode($content, self::$_options['encodeLevel']);
- }
- // add headers
- $headers['Content-Length'] = $cacheIsReady
- ? $cacheContentLength
- : strlen($content);
- $headers['Content-Type'] = self::$_options['contentTypeCharset']
- ? self::$_options['contentType'] . '; charset=' . self::$_options['contentTypeCharset']
- : self::$_options['contentType'];
- if (self::$_options['encodeMethod'] !== '') {
- $headers['Content-Encoding'] = $contentEncoding;
- $headers['Vary'] = 'Accept-Encoding';
- }
- if (! self::$_options['quiet']) {
- // output headers & content
- foreach ($headers as $name => $val) {
- header($name . ': ' . $val);
- }
- if ($cacheIsReady) {
- self::$_cache->display($fullCacheId);
- } else {
- echo $content;
- }
- } else {
- return array(
- 'success' => true
- ,'statusCode' => 200
- ,'content' => $cacheIsReady
- ? self::$_cache->fetch($fullCacheId)
- : $content
- ,'headers' => $headers
- );
- }
- }
- /**
- * Return combined minified content for a set of sources
- *
- * No internal caching will be used and the content will not be HTTP encoded.
- *
- * @param array $sources array of filepaths and/or Minify_Source objects
- *
- * @return string
- */
- public static function combine($sources)
- {
- $cache = self::$_cache;
- self::$_cache = null;
- $out = self::serve('Files', array(
- 'files' => (array)$sources
- ,'quiet' => true
- ,'encodeMethod' => ''
- ,'lastModifiedTime' => 0
- ));
- self::$_cache = $cache;
- return $out['content'];
- }
- /**
- * On IIS, create $_SERVER['DOCUMENT_ROOT']
- *
- * @param bool $unsetPathInfo (default false) if true, $_SERVER['PATH_INFO']
- * will be unset (it is inconsistent with Apache's setting)
- *
- * @return null
- */
- public static function setDocRoot($unsetPathInfo = false)
- {
- if (isset($_SERVER['SERVER_SOFTWARE'])
- && 0 === strpos($_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS/')
- ) {
- $_SERVER['DOCUMENT_ROOT'] = substr(
- $_SERVER['PATH_TRANSLATED']
- ,0
- ,strlen($_SERVER['PATH_TRANSLATED']) - strlen($_SERVER['SCRIPT_NAME'])
- );
- if ($unsetPathInfo) {
- unset($_SERVER['PATH_INFO']);
- }
- }
- }
- /**
- * @var mixed Minify_Cache_* object or null (i.e. no server cache is used)
- */
- private static $_cache = null;
- /**
- * @var Minify_Controller active controller for current request
- */
- protected static $_controller = null;
- /**
- * @var array options for current request
- */
- protected static $_options = null;
- /**
- * Set up sources to use Minify_Lines
- *
- * @param array $sources Minify_Source instances
- *
- * @return null
- */
- protected static function _setupDebug($sources)
- {
- foreach ($sources as $source) {
- $source->minifier = array('Minify_Lines', 'minify');
- $id = $source->getId();
- $source->minifyOptions = array(
- 'id' => (is_file($id) ? basename($id) : $id)
- );
- }
- }
- /**
- * Combines sources and minifies the result.
- *
- * @return string
- */
- protected static function _combineMinify() {
- $type = self::$_options['contentType']; // ease readability
- // when combining scripts, make sure all statements separated
- $implodeSeparator = ($type === self::TYPE_JS)
- ? ';'
- : '';
- // allow the user to pass a particular array of options to each
- // minifier (designated by type). source objects may still override
- // these
- $defaultOptions = isset(self::$_options['minifierOptions'][$type])
- ? self::$_options['minifierOptions'][$type]
- : array();
- // if minifier not set, default is no minification. source objects
- // may still override this
- $defaultMinifier = isset(self::$_options['minifiers'][$type])
- ? self::$_options['minifiers'][$type]
- : false;
- if (Minify_Source::haveNoMinifyPrefs(self::$_controller->sources)) {
- // all source have same options/minifier, better performance
- // to combine, then minify once
- foreach (self::$_controller->sources as $source) {
- $pieces[] = $source->getContent();
- }
- $content = implode($implodeSeparator, $pieces);
- if ($defaultMinifier) {
- self::$_controller->loadMinifier($defaultMinifier);
- $content = call_user_func($defaultMinifier, $content, $defaultOptions);
- }
- } else {
- // minify each source with its own options and minifier, then combine
- foreach (self::$_controller->sources as $source) {
- // allow the source to override our minifier and options
- $minifier = (null !== $source->minifier)
- ? $source->minifier
- : $defaultMinifier;
- $options = (null !== $source->minifyOptions)
- ? array_merge($defaultOptions, $source->minifyOptions)
- : $defaultOptions;
- if ($defaultMinifier) {
- self::$_controller->loadMinifier($minifier);
- // get source content and minify it
- $pieces[] = call_user_func($minifier, $source->getContent(), $options);
- } else {
- $pieces[] = $source->getContent();
- }
- }
- $content = implode($implodeSeparator, $pieces);
- }
- // do any post-processing (esp. for editing build URIs)
- if (self::$_options['postprocessorRequire']) {
- require_once self::$_options['postprocessorRequire'];
- }
- if (self::$_options['postprocessor']) {
- $content = call_user_func(self::$_options['postprocessor'], $content, $type);
- }
- return $content;
- }
- /**
- * Make a unique cache id for for this request.
- *
- * Any settings that could affect output are taken into consideration
- *
- * @return string
- */
- protected static function _getCacheId() {
- return md5(serialize(array(
- Minify_Source::getDigest(self::$_controller->sources)
- ,self::$_options['minifiers']
- ,self::$_options['minifierOptions']
- ,self::$_options['postprocessor']
- )));
- }
- }
- ================================================================================================================
- Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Curabitur porttitor scelerisque pede. Mauris rutrum tortor non lacus. Duis volutpat, dui sit amet rhoncus posuere, felis odio tristique neque, a fringilla risus magna et mauris. Duis eu purus et diam suscipit vulputate. Nam faucibus leo nec sapien. Integer vitae ante. Donec non est. Vestibulum condimentum, felis ut hendrerit malesuada, lectus tellus faucibus est, a dictum nulla diam ac dolor. Donec pede. Mauris id nisl. Vivamus sit amet elit. Pellentesque in odio sed nibh vestibulum aliquet. Sed erat mauris, tempor sed, molestie iaculis, pulvinar quis, turpis. Sed rutrum tellus at arcu. Duis lectus lorem, rutrum eget, consectetuer vitae, tempor eu, risus. In hac habitasse platea dictumst. Ut neque. Aenean sem nisi, hendrerit non, lacinia eu, gravida eget, magna.
- Pellentesque pellentesque tristique neque. Duis varius. Nunc venenatis, libero at molestie porttitor, tortor mauris volutpat purus, vel sollicitudin orci orci nec metus. Suspendisse ut ipsum at ipsum vehicula luctus. Sed gravida felis eu lectus. Proin fringilla felis. Duis ornare ultricies eros. Nullam a leo pretium nunc pharetra tempor. Etiam vitae tortor ac leo adipiscing bibendum. Integer facilisis. Aenean varius purus eget odio. Nulla laoreet. Aliquam auctor blandit nibh. Mauris augue. Sed egestas purus in justo. Duis id quam.
- Maecenas at nibh. Donec imperdiet vehicula sem. Praesent et lacus ac elit interdum sollicitudin. Donec id nibh. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nullam semper, felis vehicula gravida consequat, neque nisl dictum massa, eu sodales dui sem id augue. Sed sit amet purus. Quisque consectetuer elit et ipsum rutrum iaculis. Morbi placerat, leo ac consectetuer porttitor, nisl odio tempus mi, nec volutpat est dolor vel enim. Duis faucibus gravida urna. Curabitur eget felis non nisi pretium pharetra. Fusce tincidunt eros eu purus. Maecenas dolor. Maecenas libero nulla, hendrerit quis, dignissim in, lacinia eget, est. Curabitur pharetra ante vel quam ultrices dignissim.
Less Than Dot is a community of passionate IT professionals and enthusiasts dedicated to sharing technical knowledge, experience, and assistance. Inside you will find reference materials, interesting technical discussions, and expert tips and commentary. Once you register for an account you will have immediate access to the forums and all past articles and commentaries.
Forum Search
Highly Rated Users
Forum Statistics
UsersTotal Post History
- Posts:
- 45705
- Topics:
- 9398
7-Day Post History
- New Posts:
- 343
- New Topics:
- 81
- Active Topics:
- 90
Our newest member
Other
-
FAQ
All times are UTC [ DST ]
Google Ads
Puzzle 16: Zip me up, Buttercup
Forum rules
Always post answers in a "Hidecode" tag, so that others have a chance to answer the question too.
Always post answers in a "Hidecode" tag, so that others have a chance to answer the question too.
5 posts • Page 1 of 1
Please wait...
Puzzle 16: Zip me up, Buttercup
OK, after a short break we're back to bring you more puzzle-liscious programming challenges, this time in the form of a compression algorithm.
We've all used a compression tool at some point or another, and most probably used a library within our applications to do much of the same. In many cases we probably don't even realise we're using a compression feature.. such as viewing this site, if your browser supports it most of the textual content will be transferred in gzip format.
So what we want to do here is to think about how these algorithms work and write a new handcoded solution from scratch - whilst we don't expect the entry to perform at the same level as existing algorithms, that's not really the challenge - we're looking to stretch those braincells to write something that will compress an input string and decompress to the original exactly - the higher the compression, obviously the better, but just compressing with a noticeable size reduction will be a success.
The rules....
Using the string below, reduce the size of the text in a single transportable file. Then inflate that same file to reproduce the original string exactly (e.g. lossless compression).
You may not use any compression utility, library, etc - this must be your own work.
You may not copy verbatim some existing algorithm to do this either (and changing a function name does not count for being different
).
You may use the concepts from other compression tools or file formats though
Compressed size in bytes is important and will be the primary metric for judging the winners
Speed of compression will also be considered, but is of lesser importance
Provide your results (with code) in the following format:
Input Size: xxxx Bytes
Input MD5 hash: ......
Compressed size: xxx Bytes
Compression time: xxx ms (or sec, mins, hrs, etc)
Decompressed Size: xxx Bytes
Decompressed MD5 Hash: ......
The Input:
We're going to leave this one open for two weeks so that everyone has chance to have a go.
Also attached as file (suggest using the file for actual test in case the text above is slightly corrupted by the posting process (e.g. removal of whitespace etc)
We've all used a compression tool at some point or another, and most probably used a library within our applications to do much of the same. In many cases we probably don't even realise we're using a compression feature.. such as viewing this site, if your browser supports it most of the textual content will be transferred in gzip format.
So what we want to do here is to think about how these algorithms work and write a new handcoded solution from scratch - whilst we don't expect the entry to perform at the same level as existing algorithms, that's not really the challenge - we're looking to stretch those braincells to write something that will compress an input string and decompress to the original exactly - the higher the compression, obviously the better, but just compressing with a noticeable size reduction will be a success.
The rules....
Using the string below, reduce the size of the text in a single transportable file. Then inflate that same file to reproduce the original string exactly (e.g. lossless compression).
You may not use any compression utility, library, etc - this must be your own work.
You may not copy verbatim some existing algorithm to do this either (and changing a function name does not count for being different
).You may use the concepts from other compression tools or file formats though
Compressed size in bytes is important and will be the primary metric for judging the winners
Speed of compression will also be considered, but is of lesser importance
Provide your results (with code) in the following format:
Input Size: xxxx Bytes
Input MD5 hash: ......
Compressed size: xxx Bytes
Compression time: xxx ms (or sec, mins, hrs, etc)
Decompressed Size: xxx Bytes
Decompressed MD5 Hash: ......
The Input:
Code is hidden, SHOW
We're going to leave this one open for two weeks so that everyone has chance to have a go.
Also attached as file (suggest using the file for actual test in case the text above is slightly corrupted by the posting process (e.g. removal of whitespace etc)
You do not have the required permissions to view the files attached to this post.
a smile is worth a thousand kind words, so smile, it's easy! 
CODE: $5
WORKING CODE: $500
PROPERLY DESIGNED & WORKING CODE: Priceless

CODE: $5
WORKING CODE: $500
PROPERLY DESIGNED & WORKING CODE: Priceless
-

damber - LTD Admin

-





- Posts: 1959
- Joined: Tue Oct 09, 2007 1:48 pm
- Location: North Wales, UK
Re: Puzzle 16: Zip me up, Buttercup
My first result (2 algorithms, in PHP):
- Input Size: 23444 Bytes
- Input MD5 hash: 9caae65c46aea68c7c5630456d4007cf
- ---------------------------------------------------------------------
- Compressed size: 21099 Bytes
- Compression time: 19.9990272522 ms
- Decompressed Size: 23444 Bytes
- Decompressed MD5 Hash: 9caae65c46aea68c7c5630456d4007cf
- ---------------------------------------------------------------------
- Compressed size: 14992 Bytes
- Compression time: 2.31652522087 s
- Decompressed Size: 23444 Bytes
- Decompressed MD5 Hash: 9caae65c46aea68c7c5630456d4007cf
- ---------------------------------------------------------------------
I try to improve my English language skills. Most things i do better than this.
- tisodotsk
- Apprentice

-

- Posts: 22
- Joined: Fri Aug 08, 2008 12:45 pm
- Location: Bratislava, Slovakia
Re: Puzzle 16: Zip me up, Buttercup
congrats tisodtsk in being the only response! - this challenge seems to have been pretty hard to solve.
As this is a programming puzzle, could you post the code that you used to generate those results ?
As this is a programming puzzle, could you post the code that you used to generate those results ?
a smile is worth a thousand kind words, so smile, it's easy! 
CODE: $5
WORKING CODE: $500
PROPERLY DESIGNED & WORKING CODE: Priceless

CODE: $5
WORKING CODE: $500
PROPERLY DESIGNED & WORKING CODE: Priceless
-

damber - LTD Admin

-





- Posts: 1959
- Joined: Tue Oct 09, 2007 1:48 pm
- Location: North Wales, UK
Re: Puzzle 16: Zip me up, Buttercup
I try to improve my English language skills. Most things i do better than this.
- tisodotsk
- Apprentice

-

- Posts: 22
- Joined: Fri Aug 08, 2008 12:45 pm
- Location: Bratislava, Slovakia
Re: Puzzle 16: Zip me up, Buttercup
Nice work tisodotsk, thanks for posting your code 
I was a little surprised no-one else attempted it, especially as an example approach was included with the input data
Therefore I think we can safely declare you the winner

I was a little surprised no-one else attempted it, especially as an example approach was included with the input data

Therefore I think we can safely declare you the winner

a smile is worth a thousand kind words, so smile, it's easy! 
CODE: $5
WORKING CODE: $500
PROPERLY DESIGNED & WORKING CODE: Priceless

CODE: $5
WORKING CODE: $500
PROPERLY DESIGNED & WORKING CODE: Priceless
-

damber - LTD Admin

-





- Posts: 1959
- Joined: Tue Oct 09, 2007 1:48 pm
- Location: North Wales, UK
5 posts • Page 1 of 1


LTD Social Sitings
Note: Watch for social icons on posts by your favorite authors to follow their postings on these and other social sites.