diff options
| -rw-r--r-- | challenge-148/lubos-kolouch/perl/ch-1.pl | 63 | ||||
| -rw-r--r-- | challenge-148/lubos-kolouch/perl/ch-2.pl | 31 | ||||
| -rw-r--r-- | challenge-148/lubos-kolouch/python/ch-1.py | 53 | ||||
| -rw-r--r-- | challenge-148/lubos-kolouch/python/ch-2.py | 22 |
4 files changed, 169 insertions, 0 deletions
diff --git a/challenge-148/lubos-kolouch/perl/ch-1.pl b/challenge-148/lubos-kolouch/perl/ch-1.pl new file mode 100644 index 0000000000..0d95e4a76f --- /dev/null +++ b/challenge-148/lubos-kolouch/perl/ch-1.pl @@ -0,0 +1,63 @@ +#!/usr/bin/perl +use strict; +use warnings; + +sub generate_eban_numbers { + my $limit = shift; + + my %words = ( + 1 => 'one', + 2 => 'two', + 3 => 'three', + 4 => 'four', + 5 => 'five', + 6 => 'six', + 7 => 'seven', + 8 => 'eight', + 9 => 'nine', + 10 => 'ten', + 11 => 'eleven', + 12 => 'twelve', + 13 => 'thirteen', + 14 => 'fourteen', + 15 => 'fifteen', + 16 => 'sixteen', + 17 => 'seventeen', + 18 => 'eighteen', + 19 => 'nineteen', + 20 => 'twenty', + 30 => 'thirty', + 40 => 'forty', + 50 => 'fifty', + 60 => 'sixty', + 70 => 'seventy', + 80 => 'eighty', + 90 => 'ninety', + 100 => 'one hundred' + ); + + my @eban_numbers; + for my $num ( 1 .. $limit ) { + my $word; + if ( $num <= 20 || $num == 100 ) { + $word = $words{$num}; + } + elsif ( $num < 100 ) { + $word = $words{ int( $num / 10 ) * 10 } . " " . $words{ $num % 10 }; + } + else { + $word = + $words{ int( $num / 100 ) } . " " + . $words{100} . " " + . $words{ $num % 100 }; + } + + if ( $word !~ /e/ ) { + push @eban_numbers, $num; + } + } + + return @eban_numbers; +} + +print join( ", ", generate_eban_numbers(100) ); diff --git a/challenge-148/lubos-kolouch/perl/ch-2.pl b/challenge-148/lubos-kolouch/perl/ch-2.pl new file mode 100644 index 0000000000..a27727f53f --- /dev/null +++ b/challenge-148/lubos-kolouch/perl/ch-2.pl @@ -0,0 +1,31 @@ +use strict; +use warnings; +use Math::Complex; + +sub generate_cardano_triplets { + my $n = shift; + my @triplets; + my $a = 1; + + while ( @triplets < $n ) { + for my $b ( 0 .. $a ) { + next unless $b % 2 == 0; # b is even + for my $c ( 1 .. $a ) { + next unless $c % 2 != 0; # c is odd + my $val = cbrt( $a + $b * $c**2 ) + cbrt( $a - $b * $c**2 ); + if ( abs( $val - 1 ) < 1e-10 ) { + push @triplets, [ $a, $b, $c ]; + last if @triplets == $n; + } + } + } + $a += 2; # a is odd + } + + return @triplets; +} + +my @triplets = generate_cardano_triplets(5); +for my $triplet (@triplets) { + print join( ", ", @$triplet ), "\n"; +} diff --git a/challenge-148/lubos-kolouch/python/ch-1.py b/challenge-148/lubos-kolouch/python/ch-1.py new file mode 100644 index 0000000000..776d87d20f --- /dev/null +++ b/challenge-148/lubos-kolouch/python/ch-1.py @@ -0,0 +1,53 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +def generate_eban_numbers(limit): + words = { + 1: "one", + 2: "two", + 3: "three", + 4: "four", + 5: "five", + 6: "six", + 7: "seven", + 8: "eight", + 9: "nine", + 10: "ten", + 11: "eleven", + 12: "twelve", + 13: "thirteen", + 14: "fourteen", + 15: "fifteen", + 16: "sixteen", + 17: "seventeen", + 18: "eighteen", + 19: "nineteen", + 20: "twenty", + 30: "thirty", + 40: "forty", + 50: "fifty", + 60: "sixty", + 70: "seventy", + 80: "eighty", + 90: "ninety", + 100: "one hundred", + } + + eban_numbers = [] + for num in range(1, limit + 1): + if num <= 20 or num == 100: + word = words[num] + elif num < 100: + if num % 10 == 0: + word = words[num] + else: + word = words[num // 10 * 10] + " " + words[num % 10] + else: + word = words[num // 100] + " " + words[100] + " " + words[num % 100] + + if "e" not in word: + eban_numbers.append(num) + + return eban_numbers + + +print(generate_eban_numbers(100)) diff --git a/challenge-148/lubos-kolouch/python/ch-2.py b/challenge-148/lubos-kolouch/python/ch-2.py new file mode 100644 index 0000000000..6b72d78044 --- /dev/null +++ b/challenge-148/lubos-kolouch/python/ch-2.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import cmath + + +def generate_cardano_triplets(n): + triplets = [] + a = 1 + while len(triplets) < n: + for b in range(0, a, 2): # b is even + for c in range(1, a, 2): # c is odd + val = (a + b * c**2) ** (1 / 3) + (a - b * c**2) ** (1 / 3) + if abs(val.real - 1) < 1e-10 and abs(val.imag) < 1e-10: + triplets.append((a, b, c)) + if len(triplets) == n: + return triplets + a += 2 # a is odd + return triplets + + +print(generate_cardano_triplets(5)) |
