Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions challenge-216/manfredi/perl/ch-1.pl
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#!/usr/bin/env perl

use v5.36;

say "challenge-216-task1";

# Task 1: Registration Number
# You are given a list of words and a random registration number.
# Write a script to find all the words in the given list that has every letter in the given registration number.

# Example 1
# Input: @words = ('abc', 'abcd', 'bcd'), $reg = 'AB1 2CD'
# Output: ('abcd')

# Example 2
# Input: @words = ('job', 'james', 'bjorg'), $reg = '007 JB'
# Output: ('job', 'bjorg')

# Example 3
# Input: @words = ('crack', 'road', 'rac'), $reg = 'C7 RA2'
# Output: ('crack', 'rac')

sub registration_number {
my $reg = shift;
my @words = @{+shift};
my @out = ();
say "Input: \@words = (@words) , \$reg = '$reg'";
my %hreg = ();
my @hreg = grep { /[a-z]/ } split //, lc $reg;
$hreg{$_} = 1 for @hreg;
for my $word (@words) {
my %hword = ();
$hword{$_} = 1 for (split //, lc $word);
my @i = grep { exists $hreg{$_} } keys %hword;
push @out, $word if $#i == $#hreg;
}
say "Output: (@out)\n";
}

while (<DATA>) {
chomp;
my ($reg, @words) = split ',';
registration_number($reg, \@words);
}


__DATA__
AB1 2CD,abc,abcd,bcd
007 JB,job,james,bjorg
C7 RA2,crack,road,rac
39 changes: 39 additions & 0 deletions challenge-216/manfredi/python/ch-1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/usr/bin/env python3
# Python 3.9.2 on Debian GNU/Linux 11 (bullseye)

print('challenge-216-task1')

# Task 1: Registration Number
# You are given a list of words and a random registration number.
# Write a script to find all the words in the given list that has every letter in the given registration number.

# Example 1
# Input: @words = ('abc', 'abcd', 'bcd'), $reg = 'AB1 2CD'
# Output: ('abcd')

# Example 2
# Input: @words = ('job', 'james', 'bjorg'), $reg = '007 JB'
# Output: ('job', 'bjorg')

# Example 3
# Input: @words = ('crack', 'road', 'rac'), $reg = 'C7 RA2'
# Output: ('crack', 'rac')

def registration_number(reg: str, words: list[str]) -> list[str]:
out = []
print(f"Input: words = ({words}), reg = '{reg}'")
r = set( [ i for i in reg.lower() if i.isalpha() ])
for word in words:
w = set(word.lower())
if r.issubset(w): out.append(word)
return out


def main():
print("Output: ", registration_number('AB1 2CD', ['abc', 'abcd', 'bcd']), "\n")
print("Output: ", registration_number('007 JB', ['job', 'james', 'bjorg']), "\n")
print("Output: ", registration_number('C7 RA2', ['crack', 'road', 'rac']), "\n")


if __name__ == '__main__':
main()