in reply to Re^2: converting binary to decimal
in thread converting binary to decimal

It's consecutive doubling and adding from left to right for example if $n == "08" and the next bit is "1", you'll get "06" | "11" == "17" and so on.

tybalt loves constructing¹ regex-automatons on strings

Cheers Rolf
(addicted to the Perl Programming Language :)
see Wikisyntax for the Monastery

¹) cryptic

²) this part is a bit (sic ;) voodoo for me

Replies are listed 'Best First'.
Re^4: converting binary to decimal
by harangzsolt33 (Deacon) on Jun 06, 2025 at 17:51 UTC
    Hmm... That's amazing. But i tried to break it down into more easily understandable parts for me, and I think I broke it! Can you please show me why it no longer works? EDIT: I think I know what I did wrong. I accidentally doubled the "|" character. I can't even type. X_X

    sub binary2decimal { defined $_[0] or return 0; my $B = $_[0]; $B =~ tr|01||cd; # Remove illegal chars $B =~ s/^0+//; # Remove preceding zeros my @BITS = split(//, $B); my $n = 0; my $copy1; my $copy2; my $copy3; foreach (@BITS) { $copy1 = $n; $copy2 = $n; $copy1 =~ tr/1-9/246802468/; $copy2 =~ tr/1-9/00001/; $n = (0 . $copy1 || $copy2 . $_); # This should be | not || $n =~ s/^0+(?=.)//; } return $n; }
      Not my code, and far too tricky to maintain in my opinion.

      Relying on the idiosyncracies of | is nothing I recommend.

      I even have problems to reproduce my own explanation in the debugger.

      The original code works tho when tested. 🤷🏻‍♀️

      Cheers Rolf
      (addicted to the Perl Programming Language :)
      see Wikisyntax for the Monastery

        > I even have problems to reproduce my own explanation in the debugger.

        And the reason is that it's supposed to be a "bitstring" not "numeric bit" operation.

        see https://perldoc.perl.org/perlop#Bitwise-String-Operators

        hence replacing | with |. under use feature "bitwise" will stop doing hard to predict things, even after refactoring this golfing code.

        ugh...

        Cheers Rolf
        (addicted to the Perl Programming Language :)
        see Wikisyntax for the Monastery