(tye)Re: TMTOWTDI Puzzle: Generating a range of numbers
by tye (Sage) on Dec 19, 2001 at 05:35 UTC
|
!$[..ord$/
Oops, you said this wasn't golf...
-
tye
(but my friends call me "Tye")
| [reply] [Watch: Dir/Any] [d/l] |
|
print s..
...ord
UpdateAs tye notes this is really 10 strokes as the newline is a required element. It is of course simply a modification of tye's original theme above. cheers
tachyon
s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print
| [reply] [Watch: Dir/Any] [d/l] |
Re: TMTOWTDI Puzzle: Generating a range of numbers
by Juerd (Abbot) on Dec 19, 2001 at 03:56 UTC
|
This one isn't too hard...
print "$_\n" for length("x")..length("xxxxxxxxxx");
No module, no digit, no mathematical function.
2;0 juerd@ouranos:~$ perl -e'undef christmas'
Segmentation fault
2;139 juerd@ouranos:~$
| [reply] [Watch: Dir/Any] [d/l] [select] |
Re: TMTOWTDI Puzzle: Generating a range of numbers
by larsen (Parson) on Dec 19, 2001 at 03:47 UTC
|
Just a silly answer :). When men didn't have digits, they used fingers or sticks to count... ;-)
my @numbers = (
['|'],
['|', '|'],
['|', '|', '|'],
['|', '|', '|', '|'],
['|', '|', '|', '|', '|'],
['|', '|', '|', '|', '|', '|'],
['|', '|', '|', '|', '|', '|', '|'],
['|', '|', '|', '|', '|', '|', '|', '|'],
['|', '|', '|', '|', '|', '|', '|', '|', '|'],
['|', '|', '|', '|', '|', '|', '|', '|', '|', '|'],
);
foreach( @numbers ) {
print scalar @$_;
print "\n";
}
| [reply] [Watch: Dir/Any] [d/l] |
|
I just couldn't resist it... When I saw they used fingers to count, I immediately thought of counting candles...
my @numbers =
(
['|'] ,
['|','|'] ,
['|','|','|'] ,
['|','|','|','|'] ,
['|','|','|','|','|'] ,
['|','|','|','|','|','|'] ,
['|','|','|','|','|','|','|'] ,
['|','|','|','|','|','|','|','|'] ,
['|','|','|','|','|','|','|','|','|'] ,
['|','|','|','|','|','|','|','|','|','|'] ,
) ;
foreach
( @numbers )
{ print scalar @$_; print "\n"; }
2;0 juerd@ouranos:~$ perl -e'undef christmas'
Segmentation fault
2;139 juerd@ouranos:~$
| [reply] [Watch: Dir/Any] [d/l] [select] |
Re: TMTOWTDI Puzzle: Generating a range of numbers
by FoxtrotUniform (Prior) on Dec 19, 2001 at 03:33 UTC
|
my @list = ();
my @dummy = qw(one two three four five six seven eight nine ten);
while(scalar @dummy) {
unshift @list, scalar @dummy;
pop @dummy;
}
I was originally going to try something similar with
a successor function, using a gibberish string to intify
to zero, then I hit on the idea of using scalar @list for
numbers, and, well....
--
:wq | [reply] [Watch: Dir/Any] [d/l] |
Re: TMTOWTDI Puzzle: Generating a range of numbers
by danger (Priest) on Dec 19, 2001 at 03:58 UTC
|
$_ = 'aaaaaaaaaa';
my @list;
push @list, pos() while /a/g;
print "@list\n";
my @list = (length'a' .. length'aaaaaaaaaa');
print "@list\n";
my @b = ('a'..'j');
my @a = ('a');
my @list = @a..@b;
print "@list\n";
$_ = 'xaaaaaaaaaa';
my @list = y/x// .. y/a//;
print "@list\n";
$_="\n\n\n\n\n\n\n\n\n\n";
open(OUT,"+>out.lines")||die "can't $!";
print OUT;
seek OUT,$|,$|;
my @list;
push @list, $. while <OUT>;
print "@list\n";
unlink "out.lines";
UPDATE: chipmunk pointed out that I used 0 in the seek --- fixed.
| [reply] [Watch: Dir/Any] [d/l] |
Re: TMTOWTDI Puzzle: Generating a range of numbers
by IlyaM (Parson) on Dec 19, 2001 at 04:19 UTC
|
$c = 'qwertyasdf'; ($a, $b, @a) = sort map
{ $a = $_; ord chr grep $_ le $a, split //, $c }
split //, $c; print "$a @a $b\n";
Update: Removed forbiden '+' operation. Updated code even more obfuscated than it was before.
--
Ilya Martynov
(http://martynov.org/)
| [reply] [Watch: Dir/Any] [d/l] |
Re: TMTOWTDI Puzzle: Generating a range of numbers
by VSarkiss (Monsignor) on Dec 19, 2001 at 09:00 UTC
|
Ovid's comment above on "Writing without the letter E" made me think of the Oulipo, a French group that does lots of word and language play. One of the games is a "snowball sentence", in which each word is one letter longer than the last. This one, which goes all the way to 20, is by Dmitri Borgmann, in Language on Vacation.
my @snowball = qw(
I do not know where family doctors acquired illegibly
perplexing handwriting; nevertheless, extraordinary
pharmaceutical intellectuality, counterbalancing
indecipherability, transcendentalizes
intercommunications' incomprehensibleness.
);
s/\W// foreach @snowball; # punctuation doesn't count ;-)
my @answer = map { length } @snowball;
| [reply] [Watch: Dir/Any] [d/l] |
|
| [reply] [Watch: Dir/Any] |
(Ovid) Re: TMTOWTDI Puzzle: Generating a range of numbers
by Ovid (Cardinal) on Dec 19, 2001 at 05:04 UTC
|
perl -e "push@_,$_ for reverse q.e...q.n.;for(@_){$_=unpack(q|c|,$_);@
+a=split//;shift@a;$_=join q||,@a};print $_+$l,$/ for reverse@_"
This worked on Win2K 5.6.1, but dies on Cygwin :(
Update: It turns out that it works on Cygwin if the double quotes are changed to single quotes. Also, I noticed that I accidentally snuck a + in there :( Kinda like typing a story without the letter 'e'. This will fix that:
push@A,$_ for reverse q.e...q.n.;for(@A){$_=unpack(q|c|,$_);@a=split//
+;
shift@a;shift@a if $a[$[]eq$[;$_=join q||,@a};print $_,$/for reverse @
+A
Cheers,
Ovid
Join the Perlmonks Setiathome Group or just click on the the link and check out our stats. | [reply] [Watch: Dir/Any] [d/l] [select] |
Re: TMTOWTDI Puzzle: Generating a range of numbers
by CubicSpline (Friar) on Dec 19, 2001 at 04:03 UTC
|
@a = ();
$_ = 'abbcccddddeeeeeffffffggggggghhhhhhhhiiiiiiiiijjjjjjjjjj';
foreach $digit (a..j)
{
push @a, eval "tr/$digit/x/";
}
~CS | [reply] [Watch: Dir/Any] [d/l] |
Re: TMTOWTDI Puzzle: Generating a range of numbers
by wog (Curate) on Dec 19, 2001 at 04:38 UTC
|
(update: the first one has been edited to fix problems/bad style since I first pressed submit. Oopsie.)
use strict;
my @result;
my $one = "a" =~ /./;
sub add {
my($vA,$vB) = @_;
($vA,$vB) = ($vA^$vB,($vA&$vB)<<$one) while $vB;
return $vA;
}
my $val = $one;
do {
push @result, $val;
$val = add($val,$one);
} until $one.$one eq $val;
... or, without any lines preceeding it in the file it's
in ...
sub f { die if $::f_A;
die if $::f_B;
die if $::f_C;
die if $::f_D;
die if $::f_E;
die if $::f_F;
die if $::f_G;
die if $::f_H;
die if $::f_I;
die if $::f_J; }
my @vars = map { "::f_$_" } qw(A B C D E F G H I J);
my @result;
foreach (@vars) {
$$_ = "true";
eval { f() };
push @result, $@ =~ /line ([^.]+)\./;
$$_ = undef;
}
update: A very, very cheap solution: (doesn't work on EBCDIC systems, sorry)
my @result = split " ", "pasarauatawavayaxapq"^"AAAAAAAAAAAAAAAAAAAA";
| [reply] [Watch: Dir/Any] [d/l] [select] |
Re (tilly) 1: TMTOWTDI Puzzle: Generating a range of numbers
by tilly (Archbishop) on Dec 19, 2001 at 11:05 UTC
|
I am a bit surprised that nobody has tried this:
my $start = unpack('b', 'a');
my $end = $start . unpack('b', 'b');
print "$_\n" foreach $start..$end;
| [reply] [Watch: Dir/Any] [d/l] |
Re: TMTOWTDI Puzzle: Generating a range of numbers
by IlyaM (Parson) on Dec 19, 2001 at 15:32 UTC
|
Warning! Very fragile. Don't move.
@list = ( __LINE__,,,,,,,, ,
__LINE__,,,,,,,,, ,
__LINE__ ,,,, ,
__LINE__ ,,,, ,
__LINE__,,,,,,,,, ,,,,, ,,,,,, ,
__LINE__,,,,,,,, , , , , ,
__LINE__ , , , ,
__LINE__ ,,,,,, , ,
__LINE__ , , ,
__LINE__ ,,,,, , ,,
);
--
Ilya Martynov
(http://martynov.org/)
| [reply] [Watch: Dir/Any] [d/l] |
Re: TMTOWTDI Puzzle: Generating a range of numbers
by George_Sherston (Vicar) on Dec 19, 2001 at 05:18 UTC
|
Not quite good enough for the poetry page, but it gets the job done:
my $obsession = 'Perlmonks!';
my @day;
while ($obsession) {
push @day, $obsession;
chop $obsession;
}
print length $_, "\n" for reverse @day;
... or actually combining this with what Rudif did maybe:
my $obsession = 'Perlmonks!';
my @day;
while ($obsession) {
push @day, $obsession;
chop $obsession;
print scalar @day, "\n";
}
§ George Sherston | [reply] [Watch: Dir/Any] [d/l] [select] |
Re: TMTOWTDI Puzzle: Generating a range of numbers
by toma (Vicar) on Dec 19, 2001 at 11:36 UTC
|
Are logical operators too obvious for this
sort of challenge?
#!/usr/bin/perl
use strict;
my ($one,$two,$three,$four,$five,$six,$seven,$eight,$nine,$ten);
$one="x" eq "x";
$two= $one << $one;
$three= $one | $two;
$four= $two << $one;
$five= $four | $one;
$six= $four | $two;
$seven= $four | $two | $one;
$eight= $four << $one;
$nine= $eight | $one;
$ten= $eight | $two;
print "$one $two $three $four $five $six $seven $eight $nine $ten\n";
This sort of thing comes up in computer design.
On the long path from transistors to programs,
implementations are crushingly brute-force!
It should work perfectly the first time! - toma | [reply] [Watch: Dir/Any] [d/l] |
Re: TMTOWTDI Puzzle: Generating a range of numbers
by Rudif (Hermit) on Dec 19, 2001 at 04:54 UTC
|
use strict;
sub shoot{my@shot=split//,shift;shift@shot;return unless@shot;(shoot(j
+oin'',@shot),scalar@shot)}
print "@{[shoot('onetimesten')]}\n"
Rudif
| [reply] [Watch: Dir/Any] [d/l] |
Re: TMTOWTDI Puzzle: Generating a range of numbers
by hossman (Prior) on Dec 19, 2001 at 05:42 UTC
|
perl -le '@nToM=(shift..shift); print join(",",@nToM);' 1 10
| [reply] [Watch: Dir/Any] [d/l] |
(crazyinsomniac) Re: TMTOWTDI Puzzle: Generating a range of numbers
by crazyinsomniac (Prior) on Dec 19, 2001 at 10:11 UTC
|
use the dl code link, as the nelines after __END__ matter!
update: thanks to blakem, I added ord to correctly solve this "puzzle", d'oh!
#!/usr/bin/perl -l
# use dl code, important
print while <DATA>;
print for ord 'f'>>'o'..$.;
__END__
I am
smelling
like
a rose
that
somebody
gave me
on my
birthday
deathbed!
___crazyinsomniac_______________________________________
Disclaimer: Don't blame. It came from inside the void
perl -e "$q=$_;map({chr unpack qq;H*;,$_}split(q;;,q*H*));print;$q/$q;" | [reply] [Watch: Dir/Any] [d/l] |
Re: TMTOWTDI Puzzle: Generating a range of numbers
by andye (Curate) on Dec 19, 2001 at 16:59 UTC
|
!$\..qw(P e r l M o n k s !)
andy.
update: works under 5.005_03 but not v5.6.1. The later version needs this:
!$\..@{[qw(P e r l M o n k s !)]}
| [reply] [Watch: Dir/Any] [d/l] [select] |
Re: TMTOWTDI Puzzle: Generating a range of numbers
by runrig (Abbot) on Dec 19, 2001 at 05:28 UTC
|
use strict;
use warnings;
open(FH, ">tmp.txt") or die "OH NOOO!: $!";
print FH "x";
close FH;
my (@done, @array) =
qw(Why the heck am I even writing this stupid program?);
{
open(FH, ">>tmp.txt") or die "OH NOOO!: $!";
push @array, -s FH;
print FH "x";
close FH;
last if @array eq @done;
redo;
}
print "@array\n";
Changed '==' to 'eq' since '==' might be considered a
mathmatical operator :-) | [reply] [Watch: Dir/Any] [d/l] |
Re: TMTOWTDI Puzzle: Generating a range of numbers
by premchai21 (Curate) on Dec 19, 2001 at 08:21 UTC
|
my $foo = 'HelloWorld!';
my @bar;
do { chop $foo; push @bar, length $foo } while ($foo);
pop @bar; @bar = reverse @bar;
@bar;
Not the most original, probably, but it works. | [reply] [Watch: Dir/Any] [d/l] |
Re: TMTOWTDI Puzzle: Generating a range of numbers
by jynx (Priest) on Dec 19, 2001 at 11:27 UTC
|
How about a mysterious tack?
The first is my favorite, and doesn't remotely work under warnings or strict. The second is a recusive solution for fun. The third is the trivialization of both solutions.
#1
$$_=~/((((((((((.))))))))))/for length$"..length$"x($^F<<$^F).$"x$^
+F;
print map$_.$",sort{chr($a)cmp chr($b)}grep!($|eq$_)&&/\d/,keys%::
#2
sub r{
($_,$a)=@_;$;=join'',/(.)/,$_;print$",length;r($;,$a)if!(length$;
+eq$a)
}
r$",length$"x($^F<<$^F).$"x$^F.$"
#3
print $_ for length$"..length$"x($^F<<$^F).$"x$^F
Thanx for the fun,
jynx
update: d'oh, atcroft beat me to recursion...
update2: reformatted, hopefully it looks better | [reply] [Watch: Dir/Any] [d/l] |
Re: TMTOWTDI Puzzle: Generating a range of numbers
by atcroft (Abbot) on Dec 19, 2001 at 10:58 UTC
|
My first attempt at one of the puzzles on here (I think someone had a suggestion similar to this). Thought it might be appropriate, though.
#!/usr/bin/perl -- -l -w
my $msg = "happy b-day perl";
$msg =~ s/\s*|perl//g;
&gen($msg);
sub gen {
my ($st) = @_;
if (length($st)) {
my @temp = split('', $st);
shift(@temp);
&gen(join('', @temp));
print(length($st), ' ');
} }
| [reply] [Watch: Dir/Any] [d/l] |
Re (tilly) 1 (err): TMTOWTDI Puzzle: Generating a range of numbers
by tilly (Archbishop) on Jan 02, 2002 at 14:51 UTC
|
If it is human to err, this is a very human approach:
for ("a".."j") {
eval "c(";
$@ =~ /\d+/;
print "$&\n";
}
| [reply] [Watch: Dir/Any] [d/l] |
Re: TMTOWTDI Puzzle: Generating a range of numbers
by petral (Curate) on Dec 24, 2001 at 21:43 UTC
|
Here's some typographical nonsense (from a long week-end):
s|^$|$^|s;
s|.|.|g;
s|\./\|\.$|"/".y/././.$"|e
while/\./;
s|/||;
s|.$|$/|;
print
And only one word before the final print (which can be changed to split to comply literally with "generate a list".
update: OK, here's one with no words that only works with 5.6.1 or later. (and now I really have to quit.)
s|^$|$^.|s;
s|.|.|g;
s|.|$`=~y/.//.$"|ge;
s|..||;
s|.$|$/|;
print
update too Well, one more, now I really will quit:
s|^$|$^|s;
s|.|"$\"$`"=~y/M_A-T_H OUT//.$"|ge;
s|.$|$/|s;
print
  p
| [reply] [Watch: Dir/Any] [d/l] [select] |
Re: TMTOWTDI Puzzle: Generating a range of numbers
by ravendarke (Beadle) on Dec 21, 2001 at 00:27 UTC
|
I don't believe I've seen this one yet:
$a="lalalalala";
while($a=~m/./g){
print pos $a;
}
If I am mistaken, I apologize. If not, I apologize for the apology.
Marty
| [reply] [Watch: Dir/Any] [d/l] |
Re: TMTOWTDI Puzzle: Generating a range of numbers
by petral (Curate) on Dec 22, 2001 at 00:42 UTC
|
perl -e 'print "@{[ map{ ($/.=$_)=~s/././g } $^=~/./g ]}\n"'
($^ is "STDOUT_TOP")
  p | [reply] [Watch: Dir/Any] [d/l] |
Re: TMTOWTDI Puzzle: Generating a range of numbers
by Anonymous Monk on Dec 19, 2001 at 21:29 UTC
|
perl -e 'foreach (a..j) { print index(" abcdefghij",$_) . "\n"; }'
| [reply] [Watch: Dir/Any] |
Re: TMTOWTDI Puzzle: Generating a range of numbers
by Anonymous Monk on Dec 20, 2001 at 03:41 UTC
|
| [reply] [Watch: Dir/Any] [d/l] |
Re: TMTOWTDI Puzzle: Generating a range of numbers
by Anonymous Monk on Dec 20, 2001 at 16:20 UTC
|
Another combination of some of the ideas already presented...
perl -e 'print(length(O)..length(O).length())' | [reply] [Watch: Dir/Any] [d/l] |
Re: TMTOWTDI Puzzle: Generating a range of numbers
by Anonymous Monk on Dec 20, 2001 at 22:27 UTC
|
foreach $Foo ('t','hi','isj','usta','funky','little','thingiw','roteto
+do','thisthing','timtowtdi!') {
print length($Foo),"\n";
}
| [reply] [Watch: Dir/Any] [d/l] |
Re: TMTOWTDI Puzzle: Generating a range of numbers
by ixo111 (Acolyte) on Dec 20, 2001 at 22:33 UTC
|
do {
$Foo .= "x";
print length($Foo),"\n";
} until (length($Foo) eq length('timtowtdi!'));
| [reply] [Watch: Dir/Any] [d/l] |