Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: what is for key pls

by Old_Gray_Bear (Bishop)
on May 10, 2011 at 21:32 UTC ( #904035=note: print w/ replies, xml ) Need Help??


in reply to what is for key pls

Please note: by appropriate ternary arithmetical manipulations this string of hex-digits reduces to "42". Congratulations.

----
I Go Back to Sleep, Now.

OGB


Comment on Re: what is for key pls
Replies are listed 'Best First'.
Re^2: what is for key pls
by FunkyMonk (Canon) on May 11, 2011 at 14:21 UTC
    this string of hex-digits reduces to "42"
    A few of which are:

    7+c+9+6+9+5+c+b+2+3+a+7+1+d+8+5+1+6+8+8+c+c+0+d+7-f*8-b+1*0-7*2 7-c-9-6-9-5-c-b-2-3-a-7-1-d-8-5-1-6-8-8-c-c-0+d*7+f*8-b*1+0-7+2 7*c*9*6*9*5*c*b*2*3*a*7*1*d*8*5*1*6*8*8*c*c*0*d-7+f+8+b+1-0+7*2 7*c*9*6*9*5*c*b*2*3*a*7*1*d*8*5*1*6*8*8/c/c*0-d+7+f+8+b-1*0+7*2

    #!/usr/local/bin/perl use 5.010; use strict; use warnings FATAL => 'all'; my $hex = '7c9695cb23a71d851688cc0d7f8b1072'; my @num = map {hex} split '', $hex; forty_two(42 => @num); sub forty_two { my ($target, $expr, $first, @rest) = @_; state $count_hit = 0; state $count_total = 0; unless (defined $first) { $count_total++; if (eval $expr == $target) { $count_hit++; $expr =~ s/(\d+)/sprintf "%x", $1/eg; say "$count_hit/$count_total: $expr == 42"; } return; } forty_two($target, "$expr+$first", @rest); forty_two($target, "$expr-$first", @rest); forty_two($target, "$expr*$first", @rest); if ($first) { my ($last_term) = $expr =~ m{(\d+(?:[*/]\d+)*)$}; forty_two($target, "$expr/$first", @rest) if eval "$last_term % $first == 0"; } }

    Please don't wait for it to finish running ;)

Re^2: what is for key pls
by wind (Priest) on May 11, 2011 at 02:26 UTC

    I made a quick and dirty script to see if some combination of + and -'s between all the digits of that string would return 42.

    my $str = '7c9695cb23a71d851688cc0d7f8b1072'; my @nums = map {hex} split '', $str; my @ops = qw(+ -); my @iter = (0) x (length($str) - 1); MAIN: while (1) { my @set = (@ops[@iter], ''); my $newstr = join '', map {$nums[$_] . $set[$_]} (0..$#nums); print "$newstr\n" if 42 == eval $newstr; # Increment my $i = $#iter; while (++$iter[$i] == @ops) { $iter[$i--] = 0; last MAIN if $i < 0; } }

    After running for an hour though, I decided that I needed to test this by hand:

    use List::Util qw(sum); my $str = '7c9695cb23a71d851688cc0d7f8b1072'; print sum map {hex} split '', $str; =prints 231 =cut

    Unfortunately, as you can see, the string contains an odd number of odd digits. This means that no combination of + and -'s between all the digits can return an even number. So there is no simple solution that equals 42

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://904035]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (14)
As of 2015-07-30 23:25 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (273 votes), past polls