From 70b92e315c96453b74fbe999d7fe48edabcc9d59 Mon Sep 17 00:00:00 2001 From: Adam Russell Date: Sat, 19 Nov 2022 01:49:16 -0500 Subject: initial commit --- challenge-191/adam-russell/perl/ch-1.pl | 0 challenge-191/adam-russell/perl/ch-2.pl | 40 ++++++++++++++++++++++++++++++++ challenge-191/adam-russell/prolog/ch-1.p | 0 challenge-191/adam-russell/prolog/ch-2.p | 14 +++++++++++ 4 files changed, 54 insertions(+) create mode 100644 challenge-191/adam-russell/perl/ch-1.pl create mode 100644 challenge-191/adam-russell/perl/ch-2.pl create mode 100644 challenge-191/adam-russell/prolog/ch-1.p create mode 100644 challenge-191/adam-russell/prolog/ch-2.p diff --git a/challenge-191/adam-russell/perl/ch-1.pl b/challenge-191/adam-russell/perl/ch-1.pl new file mode 100644 index 0000000000..e69de29bb2 diff --git a/challenge-191/adam-russell/perl/ch-2.pl b/challenge-191/adam-russell/perl/ch-2.pl new file mode 100644 index 0000000000..5964e231bb --- /dev/null +++ b/challenge-191/adam-russell/perl/ch-2.pl @@ -0,0 +1,40 @@ +use v5.36; +use strict; +use warnings; +## +# You are given an integer, 0 < $n <= 15. +# Write a script to find the number of orderings of numbers that form a cute list. +## +use Hash::MultiKey; + +sub cute_list{ + my($n) = @_; + my %cute; + tie %cute, "Hash::MultiKey"; + for my $i (1 .. $n){ + $cute{[$i]} = undef; + } + my $i = 1; + { + $i++; + my %cute_temp; + tie %cute_temp, "Hash::MultiKey"; + for my $j (1 .. $n){ + for my $cute (keys %cute){ + if(0 == grep {$j == $_} @{$cute}){ + if(0 == $j % $i || 0 == $i % $j){ + $cute_temp{[@{$cute}, $j]} = undef; + } + } + } + } + %cute = %cute_temp; + untie %cute_temp; + redo unless $i == $n; + } + return keys %cute; +} + +MAIN:{ + say cute_list(15) . q//; +} \ No newline at end of file diff --git a/challenge-191/adam-russell/prolog/ch-1.p b/challenge-191/adam-russell/prolog/ch-1.p new file mode 100644 index 0000000000..e69de29bb2 diff --git a/challenge-191/adam-russell/prolog/ch-2.p b/challenge-191/adam-russell/prolog/ch-2.p new file mode 100644 index 0000000000..414b6395a4 --- /dev/null +++ b/challenge-191/adam-russell/prolog/ch-2.p @@ -0,0 +1,14 @@ +cute(_, _) --> []. +cute(N, CuteList) --> [X], {between(1, N, X), \+ member(X, CuteList), + append(CuteList, [X], CuteListUpdated), + nth(I, CuteListUpdated, X), + 0 is mod(X, I)}, + cute(N, CuteListUpdated). +cute(N, CuteList) --> [X], {between(1, N, X), \+ member(X, CuteList), + append(CuteList, [X], CuteListUpdated), + nth(I, CuteListUpdated, X), + 0 is mod(I, X)}, + cute(N, CuteListUpdated). + +%N = 10, findall(Cute, (length(Cute, N), phrase(cute(N, []), Cute)), C), sort(C, CuteList), length(CuteList, NumberCuteList). + \ No newline at end of file -- cgit From b5791fac00294ed02e86dd60f70cd0416f66ebfd Mon Sep 17 00:00:00 2001 From: Adam Russell Date: Sun, 20 Nov 2022 14:41:35 -0500 Subject: updated solutions. added blogs. --- challenge-191/adam-russell/blog.txt | 1 + challenge-191/adam-russell/blog1.txt | 1 + challenge-191/adam-russell/perl/ch-1.pl | 30 ++++++++++++++++++++++++++++++ challenge-191/adam-russell/prolog/ch-1.p | 17 +++++++++++++++++ challenge-191/adam-russell/prolog/ch-2.p | 5 +---- 5 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 challenge-191/adam-russell/blog.txt create mode 100644 challenge-191/adam-russell/blog1.txt diff --git a/challenge-191/adam-russell/blog.txt b/challenge-191/adam-russell/blog.txt new file mode 100644 index 0000000000..22ccf20284 --- /dev/null +++ b/challenge-191/adam-russell/blog.txt @@ -0,0 +1 @@ +http://www.rabbitfarm.com/cgi-bin/blosxom/perl/2022/11/20 \ No newline at end of file diff --git a/challenge-191/adam-russell/blog1.txt b/challenge-191/adam-russell/blog1.txt new file mode 100644 index 0000000000..6a46aadfe3 --- /dev/null +++ b/challenge-191/adam-russell/blog1.txt @@ -0,0 +1 @@ +http://www.rabbitfarm.com/cgi-bin/blosxom/prolog/2022/11/20 \ No newline at end of file diff --git a/challenge-191/adam-russell/perl/ch-1.pl b/challenge-191/adam-russell/perl/ch-1.pl index e69de29bb2..aa6095c94b 100644 --- a/challenge-191/adam-russell/perl/ch-1.pl +++ b/challenge-191/adam-russell/perl/ch-1.pl @@ -0,0 +1,30 @@ +use v5.36; +use strict; +use warnings; +## +# You are given list of integers, @list. Write a script to find out whether the largest +# item in the list is at least twice as large as each of the other items. +## +use boolean; + +sub twice_largest{ + my(@list_integers) = @_; + my $twice_max = -1; + for my $i (0 .. @list_integers - 1){ + my $twice_rest = true; + for my $j (0 .. @list_integers - 1){ + unless($i == $j){ + $twice_rest = $list_integers[$i] >= 2 * $list_integers[$j]; + } + } + $twice_max = $list_integers[$i] if $twice_rest; + } + return $twice_max>-1?1:-1; +} + +MAIN:{ + say twice_largest(1, 2, 3, 4); + say twice_largest(1, 2, 0, 5); + say twice_largest(2, 6, 3, 1); + say twice_largest(4, 5, 2, 3); +} \ No newline at end of file diff --git a/challenge-191/adam-russell/prolog/ch-1.p b/challenge-191/adam-russell/prolog/ch-1.p index e69de29bb2..e6f1c443e8 100644 --- a/challenge-191/adam-russell/prolog/ch-1.p +++ b/challenge-191/adam-russell/prolog/ch-1.p @@ -0,0 +1,17 @@ +twice_greater(X, Y, TwiceGreater):- + X \== Y, + TwiceY is 2 * Y, + X >= TwiceY, + TwiceGreater = -1. +twice_greater(X, Y, TwiceGreater):- + TwiceY is 2 * Y, + X < TwiceY, + TwiceGreater = 1. + +twice_largest(List):- + max_list(List, Max), + maplist(twice_greater(Max), List, TwiceGreater), + delete(TwiceGreater, -1, TwiceGreaterOneDeleted), + length(TwiceGreaterOneDeleted, TwiceGreaterOneDeletedLength), + TwiceGreaterOneDeletedLength == 1, !. + \ No newline at end of file diff --git a/challenge-191/adam-russell/prolog/ch-2.p b/challenge-191/adam-russell/prolog/ch-2.p index 414b6395a4..6711b4d1ff 100644 --- a/challenge-191/adam-russell/prolog/ch-2.p +++ b/challenge-191/adam-russell/prolog/ch-2.p @@ -8,7 +8,4 @@ cute(N, CuteList) --> [X], {between(1, N, X), \+ member(X, CuteList), append(CuteList, [X], CuteListUpdated), nth(I, CuteListUpdated, X), 0 is mod(I, X)}, - cute(N, CuteListUpdated). - -%N = 10, findall(Cute, (length(Cute, N), phrase(cute(N, []), Cute)), C), sort(C, CuteList), length(CuteList, NumberCuteList). - \ No newline at end of file + cute(N, CuteListUpdated). \ No newline at end of file -- cgit