Advertisement
Tannenfels

Untitled

Sep 19th, 2022
1,195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 0.79 KB | None | 0 0
  1. #!/usr/bin/perl
  2. open F, shift;
  3. @code = grep {/[+-\.,\[\]><]/} split '', <F>;
  4. for (my $_ = 0; $_ < @code; ++$_) {
  5.   ++$cpu[$i] if $code[$_] eq '+';
  6.   --$cpu[$i] if $code[$_] eq '-';
  7.   --$i if $code[$_] eq '<';
  8.   ++$i if $code[$_] eq '>';
  9.   print chr $cpu[$i] if $code[$_] eq '.';
  10.   $cpu[$i] = ord <STDIN> if $code[$_] eq ',';
  11.   if ($code[$_] eq '[') {
  12.     if (!$cpu[$i]) {
  13.       ++$brc;
  14.       while ($brc) {
  15.         ++$_;
  16.         ++$brc if $code[$_] eq '[';
  17.         --$brc if $code[$_] eq ']';
  18.       }
  19.     } else {
  20.       next;
  21.     }
  22.   } elsif ($code[$_] eq ']') {
  23.     if (!$cpu[$i]) {
  24.       next;
  25.     } else {
  26.       ++$brc if $code[$_] eq ']';
  27.       while ($brc) {
  28.         --$_;
  29.         --$brc if $code[$_] eq '[';
  30.         ++$brc if $code[$_] eq ']';
  31.       }
  32.     --$_;
  33.     }
  34.   }
  35. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement