Welcome to the Monastery PerlMonks

### What's the answer to this puzzle? Most unique/golfed solution? (fun)

by blakew (Monk)
 on Sep 22, 2011 at 20:57 UTC Need Help??

blakew has asked for the wisdom of the Perl Monks concerning the following question:

Bit of silliness.

1. What's the next line?

```1
1 1
2 1
1 2 1 1
1 1 1 2 2 1

2. Write code to print each line in the pattern (it gets unwieldy).

If the 5th line was 3 1 1 2 passing an argument gives that solution-
```my \$anchor = @ARGV ? '' : '^';
printf "%d\n", \$_ = '1';
do {
my \$new;
my ( \$n ) = /^(\d)/o;
while ( \$_ ) {
my \$c = 0;
\$c++ while s/\$anchor\s?\$n\s?//;
\$new .= "\$c \$n " if \$c;
( \$n ) = /^(\d)/o;
}
print \$_ = \$new;
} until ( <STDIN> =~ /\S/ );

Replies are listed 'Best First'.
Re: What's the answer to this puzzle? Most unique/golfed solution? (fun)
by thundergnat (Deacon) on Sep 23, 2011 at 02:09 UTC

Hmm. Golf eh? 88 strokes. First 99 19 values. Bleh. 99 takes too long.

Works under linux, Swap double and single quotes for Windows.

```         1         2         3         4         5         6         7         8         9
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
```
```perl -E'\$_=1;while(++\$t<19){say;my@a;push@a,length\$1,\$2 while/((\d)\2*
+)/g;\$_=join"",@a}'

Update 79 75 73 strokes

```         1         2         3         4         5         6         7         8
12345678901234567890123456789012345678901234567890123456789012345678901234567890
```
```perl -E'for(0..19){say\$_=\$t//1;\$t="";\$t.=(length\$1).\$2 while/((.)\2*)/
+g}'
thundergnat,

This just trims a few characters from your approach, which I think is a very good one (I couldn't find an inherently better one).

```# 68 strokes
perl -E'map{say\$_=\$t||1;\$t="";\$t.=(length\$&).\$1while/(.)\1*/g}0..19'

s''(q.S:\$/9=(T1';s;(..)(..);\$..=substr+crypt(\$1,\$2),2,3;eg;print\$..\$/
Re: What's the answer to this puzzle? Most unique/golfed solution? (fun)
by AnomalousMonk (Chancellor) on Sep 23, 2011 at 01:00 UTC
Re: What's the answer to this puzzle? Most unique/golfed solution? (fun)
by Anonymous Monk on Sep 24, 2011 at 04:06 UTC

55 characters:

```perl -E'\$_=1;say,s/(.)\1*/\$&=~y...c.\$1/ge while\$i++<19'

Create A New User
Node Status?
node history
Node Type: perlquestion [id://927466]
Approved by Corion
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (7)
As of 2019-06-26 19:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
Is there a future for codeless software?

Results (111 votes). Check out past polls.

Notices?