in reply to Check if string A and B are made up of same chars
And now for something completely different :)
#!/usr/bin/perl use strict; # https://perlmonks.org/?node_id=11162756 use warnings; Test(); sub hasSameChars { ( grep(defined, @_) or return 1 ) < @_ and return 0; my %same = map { do { my @count = (0) x 256; $count[ord $&]++ while /./gs; "@count" }, 1 } @_; return %same == 1 ? 1 : 0; } sub Test { my $ERRORS = 0; # TESTING TRUE: hasSameChars("Hello World!", "Hello World!") == 1 or + $ERRORS++; hasSameChars("Hello World!", "Hdll!ooreWl ") == 1 or + $ERRORS++; hasSameChars("Hello World!", "Hdll!ooreWl ", "Hlde! Wlloor") == 1 or + $ERRORS++; hasSameChars("FALLEN", "LENFAL", "ELFALN") == 1 or + $ERRORS++; hasSameChars(undef, undef, undef) == 1 or + $ERRORS++; hasSameChars('', '', '', '') == 1 or + $ERRORS++; hasSameChars('A', 'A', 'A', 'A') == 1 or + $ERRORS++; hasSameChars("\r\n\t\0\0\1", "\0\1\t\0\n\r", "\n\1\r\t\0\0") == 1 or + $ERRORS++; hasSameChars('ABB', 'BBA', 'BAB', 'BBA') == 1 or + $ERRORS++; hasSameChars(' ', ' ', ' ', ' ') == 1 or + $ERRORS++; hasSameChars("ABC", "CAB", "BAC", "BCA", "ACB", "ABC") == 1 or + $ERRORS++; # TESTING FALSE: hasSameChars("\r\n\t\0\1\2", "\0\2\t\1\n\r", "\t\t\r\1\2\n") == 0 or + $ERRORS++; hasSameChars("Hello World!", "Hdll!ooreWl ", "Hlde! Wlloo") == 0 or + $ERRORS++; hasSameChars("Hello World!", "Hdll!ooreWl") == 0 or + $ERRORS++; hasSameChars("ABC", "C_B", "BAC", "BCA", "ACB", "ABC") == 0 or + $ERRORS++; hasSameChars("ALLEN", "ELLEN", "HALLEN", "HELLEN") == 0 or + $ERRORS++; hasSameChars("FALLEN", "Lenfal", "ELFALN") == 0 or + $ERRORS++; hasSameChars("FALLEN", "FALLEN ") == 0 or + $ERRORS++; hasSameChars(undef, "FALLEN", "FALLEN") == 0 or + $ERRORS++; hasSameChars("FALLEN", undef, "FALLEN") == 0 or + $ERRORS++; hasSameChars("FALLEN", "FALLEN", undef) == 0 or + $ERRORS++; hasSameChars('', undef, undef) == 0 or + $ERRORS++; hasSameChars('ABB', 'ABA', 'BAA', 'BAA') == 0 or + $ERRORS++; hasSameChars(' ', ' ', ' ', "\t") == 0 or + $ERRORS++; print "ERRORS = $ERRORS\n"; }
Outputs:
ERRORS = 0
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Check if string A and B are made up of same chars
by afoken (Chancellor) on Nov 18, 2024 at 18:44 UTC | |
by LanX (Saint) on Nov 18, 2024 at 19:24 UTC | |
|
Re^2: Check if string A and B are made up of same chars
by LanX (Saint) on Nov 18, 2024 at 18:29 UTC |