diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2024-01-31 13:26:55 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-31 13:26:55 +0000 |
| commit | a52561b3a2f2989033faea3c0948020a10720dbb (patch) | |
| tree | 9dd1466c117888f77f2e2dde7c1a5baaa5e399a3 | |
| parent | 14a71230782641a6eb108626e1aa9fa6c68586f2 (diff) | |
| parent | 36f651dc0ada9626d4299275c1ffc92b3a7d8717 (diff) | |
| download | perlweeklychallenge-club-a52561b3a2f2989033faea3c0948020a10720dbb.tar.gz perlweeklychallenge-club-a52561b3a2f2989033faea3c0948020a10720dbb.tar.bz2 perlweeklychallenge-club-a52561b3a2f2989033faea3c0948020a10720dbb.zip | |
Merge pull request #9496 from Firedrake/rogerbw-challenge-254
RogerBW solutions for challenge no. 254
21 files changed, 1078 insertions, 0 deletions
diff --git a/challenge-254/roger-bell-west/javascript/ch-1.js b/challenge-254/roger-bell-west/javascript/ch-1.js new file mode 100755 index 0000000000..ea5bcfa91f --- /dev/null +++ b/challenge-254/roger-bell-west/javascript/ch-1.js @@ -0,0 +1,46 @@ +#! /usr/bin/node + +"use strict" + +function threepower(n0) { + if (n0 == 0) { + return false; + } + let n = Math.abs(n0); + let lo = 1; + let hi = Math.floor(n / 2); + while (true) { + const t = Math.floor((lo + hi) / 2); + const c = t * t * t; + if (c == n) { + return true; + } + if (lo == t) { + return false; + } + if (c < n) { + lo = t; + } else { + hi = t; + } + } +} + +if (threepower(27)) { + process.stdout.write("Pass"); +} else { + process.stdout.write("FAIL"); +} +process.stdout.write(" "); +if (!threepower(0)) { + process.stdout.write("Pass"); +} else { + process.stdout.write("FAIL"); +} +process.stdout.write(" "); +if (!threepower(6)) { + process.stdout.write("Pass"); +} else { + process.stdout.write("FAIL"); +} +process.stdout.write("\n"); diff --git a/challenge-254/roger-bell-west/javascript/ch-2.js b/challenge-254/roger-bell-west/javascript/ch-2.js new file mode 100755 index 0000000000..0386bdcdb4 --- /dev/null +++ b/challenge-254/roger-bell-west/javascript/ch-2.js @@ -0,0 +1,67 @@ +#! /usr/bin/node + +"use strict" + +function is_vowel(c) { + switch (c.toLowerCase()) { + case "a": + return true; + case "e": + return true; + case "i": + return true; + case "o": + return true; + case "u": + return true; + default: + return false; + } +} + +function reversevowels(a) { + const p = a.split(""); + const q = p.filter(c => is_vowel(c)); + let qi = q.length; + let o = []; + for (let c of p) { + if (is_vowel(c)) { + qi -= 1; + let nc = q[qi]; + if (c.toUpperCase() == c) { + nc = nc.toUpperCase(); + } else { + nc = nc.toLowerCase(); + } + o.push(nc); + } else { + o.push(c); + } + } + return o.join(""); +} + +if (reversevowels('Raku') == 'Ruka') { + process.stdout.write("Pass"); +} else { + process.stdout.write("FAIL"); +} +process.stdout.write(" "); +if (reversevowels('Perl') == 'Perl') { + process.stdout.write("Pass"); +} else { + process.stdout.write("FAIL"); +} +process.stdout.write(" "); +if (reversevowels('Julia') == 'Jaliu') { + process.stdout.write("Pass"); +} else { + process.stdout.write("FAIL"); +} +process.stdout.write(" "); +if (reversevowels('Uiua') == 'Auiu') { + process.stdout.write("Pass"); +} else { + process.stdout.write("FAIL"); +} +process.stdout.write("\n"); diff --git a/challenge-254/roger-bell-west/kotlin/ch-1.kt b/challenge-254/roger-bell-west/kotlin/ch-1.kt new file mode 100644 index 0000000000..4461e0a14d --- /dev/null +++ b/challenge-254/roger-bell-west/kotlin/ch-1.kt @@ -0,0 +1,46 @@ +fun threepower(n0: Int): Boolean { + if (n0 == 0) { + return false + } + val n = Math.abs(n0) + var lo = 1 + var hi = n / 2 + while (true) { + val t = (lo + hi) / 2 + val c = t * t * t + if (c == n) { + return true + } + if (lo == t) { + return false + } + if (c < n) { + lo = t + } else { + hi = t + } + } +} + +fun main() { + + if (threepower(27)) { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (!threepower(0)) { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (!threepower(6)) { + print("Pass") + } else { + print("Fail") + } + println("") + +} diff --git a/challenge-254/roger-bell-west/kotlin/ch-2.kt b/challenge-254/roger-bell-west/kotlin/ch-2.kt new file mode 100644 index 0000000000..69eedcfb34 --- /dev/null +++ b/challenge-254/roger-bell-west/kotlin/ch-2.kt @@ -0,0 +1,56 @@ +fun is_vowel(c: Char): Boolean { + return when (c.lowercaseChar()) { + 'a', 'e', 'i', 'o', 'u' -> true + else -> false + } +} +fun reversevowels(a: String): String { + val p = a.toCharArray().toList() + val q = p.filter{is_vowel(it)} + var qi = q.size + var o = ArrayList<Char>() + for (c in p) { + if (is_vowel(c)) { + qi -= 1; + var nc = q[qi] + if (c.isUpperCase()) { + nc = nc.uppercaseChar() + } else { + nc = nc.lowercaseChar() + } + o.add(nc) + } else { + o.add(c) + } + } + return o.joinToString("") +} + +fun main() { + + if (reversevowels("Raku") == "Ruka") { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (reversevowels("Perl") == "Perl") { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (reversevowels("Julia") == "Jaliu") { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (reversevowels("Uiua") == "Auiu") { + print("Pass") + } else { + print("Fail") + } + println("") + +} diff --git a/challenge-254/roger-bell-west/lua/ch-1.lua b/challenge-254/roger-bell-west/lua/ch-1.lua new file mode 100755 index 0000000000..f76b1db415 --- /dev/null +++ b/challenge-254/roger-bell-west/lua/ch-1.lua @@ -0,0 +1,47 @@ +#! /usr/bin/lua + +function threepower(n0) + if n0 == 0 then + return false + end + local n = math.abs(n0) + local lo = 1 + local hi = math.floor(n / 2) + while true do + local t= math.floor((lo + hi) / 2) + local c = t * t * t + if c == n then + return true + end + if lo == t then + return false + end + if c < n then + lo = t + else + hi = t + end + end +end + +if threepower(27) then + io.write("Pass") +else + io.write("FAIL") +end +io.write(" ") + +if not threepower(0) then + io.write("Pass") +else + io.write("FAIL") +end +io.write(" ") + +if not threepower(6) then + io.write("Pass") +else + io.write("FAIL") +end +print("") + diff --git a/challenge-254/roger-bell-west/lua/ch-2.lua b/challenge-254/roger-bell-west/lua/ch-2.lua new file mode 100755 index 0000000000..0751ba8dae --- /dev/null +++ b/challenge-254/roger-bell-west/lua/ch-2.lua @@ -0,0 +1,67 @@ +#! /usr/bin/lua + +function is_vowel(c) + if string.find(string.lower(c), "[aeiou]") == 1 then + return true + else + return false + end +end + +function reversevowels(a) + local p = {} + local q = {} + for i = 1, string.len(a) do + local c = string.sub(a, i, i) + table.insert(p, c) + if is_vowel(c) then + table.insert(q, c) + end + end + local qi = #q + local o = "" + for _, c in ipairs(p) do + if is_vowel(c) then + nc = q[qi] + qi = qi - 1 + if string.upper(c) == c then + nc = string.upper(nc) + else + nc = string.lower(nc) + end + o = o .. nc + else + o = o .. c + end + end + return o +end + +if reversevowels("Raku") == "Ruka" then + io.write("Pass") +else + io.write("FAIL") +end +io.write(" ") + +if reversevowels("Perl") == "Perl" then + io.write("Pass") +else + io.write("FAIL") +end +io.write(" ") + +if reversevowels("Julia") == "Jaliu" then + io.write("Pass") +else + io.write("FAIL") +end +io.write(" ") + +if reversevowels("Uiua") == "Auiu" then + io.write("Pass") +else + io.write("FAIL") +end +print("") + diff --git a/challenge-254/roger-bell-west/perl/ch-1.pl b/challenge-254/roger-bell-west/perl/ch-1.pl new file mode 100755 index 0000000000..64077004d8 --- /dev/null +++ b/challenge-254/roger-bell-west/perl/ch-1.pl @@ -0,0 +1,35 @@ +#! /usr/bin/perl + +use strict; +use warnings; +use experimental 'signatures'; + +use Test::More tests => 3; + +is(threepower(27), 1, 'example 1'); +is(threepower(0), 0, 'example 2'); +is(threepower(6), 0, 'example 3'); + +sub threepower($n0) { + if ($n0 == 0) { + return 0; + } + my $n = abs($n0); + my $lo = 1; + my $hi = int($n / 2); + while (1) { + my $t = int(($lo + $hi) / 2); + my $c = $t * $t * $t; + if ($c == $n) { + return 1; + } + if ($lo == $t) { + return 0; + } + if ($c < $n) { + $lo = $t; + } else { + $hi = $t; + } + } +} diff --git a/challenge-254/roger-bell-west/perl/ch-2.pl b/challenge-254/roger-bell-west/perl/ch-2.pl new file mode 100755 index 0000000000..879bdbb9fb --- /dev/null +++ b/challenge-254/roger-bell-west/perl/ch-2.pl @@ -0,0 +1,42 @@ +#! /usr/bin/perl + +use strict; +use warnings; +use experimental 'signatures'; + +use Test::More tests => 4; + +is(reversevowels('Raku'), 'Ruka', 'example 1'); +is(reversevowels('Perl'), 'Perl', 'example 2'); +is(reversevowels('Julia'), 'Jaliu', 'example 3'); +is(reversevowels('Uiua'), 'Auiu', 'example 4'); + +sub is_vowel($c) { + if ($c =~ /[aeiou]/i) { + return 1; + } else { + return 0; + } +} + +sub reversevowels($a) { + my @p = split('', $a); + my @q = grep {is_vowel($_)} @p; + my $qi = scalar @q; + my @o; + foreach my $c (@p) { + if (is_vowel($c)) { + $qi--; + my $nc = $q[$qi]; + if ($c eq uc($c)) { + $nc = uc($nc); + } else { + $nc = lc($nc); + } + push @o, $nc; + } else { + push @o, $c; + } + } + return join('', @o); +} diff --git a/challenge-254/roger-bell-west/postscript/ch-1.ps b/challenge-254/roger-bell-west/postscript/ch-1.ps new file mode 100644 index 0000000000..f05cec0e91 --- /dev/null +++ b/challenge-254/roger-bell-west/postscript/ch-1.ps @@ -0,0 +1,73 @@ +%!PS + +% begin included library code +% see https://codeberg.org/Firedrake/postscript-libraries/ +/test.end { + ( ) print + test.count 0 gt { + (Passed ) print + test.pass (...) cvs print + (/) print + test.count (...) cvs print + ( \() print + test.pass 100 mul test.count idiv (...) cvs print + (%\)) print + (\r\n) print + } if +} bind def + +/test { + /test.count test.count 1 add def + { + /test.pass test.pass 1 add def + } { + ( ) print + test.count (....) cvs print + (-fail) print + } ifelse +} bind def + +/test.start { + print (:) print + /test.pass 0 def + /test.count 0 def +} bind def + + +% end included library code + +/threepower { + 0 dict begin + /n exch def + n 0 eq { + false + } { + /n n abs def + /lo 1 def + /hi n 2 idiv def + { + /t lo hi add 2 idiv def + /c t dup dup mul mul def + c n eq { + true + exit + } if + lo t eq { + false + exit + } if + c n lt { + /lo t def + } { + /hi t def + } ifelse + } loop + } ifelse + end +} bind def + +(threepower) test.start +27 threepower test +0 threepower not test +6 threepower not test +test.end diff --git a/challenge-254/roger-bell-west/postscript/ch-2.ps b/challenge-254/roger-bell-west/postscript/ch-2.ps new file mode 100644 index 0000000000..743759e592 --- /dev/null +++ b/challenge-254/roger-bell-west/postscript/ch-2.ps @@ -0,0 +1,136 @@ +%!PS + +% begin included library code +% see https://codeberg.org/Firedrake/postscript-libraries/ +/s2a { + [ exch { } forall ] +} bind def + +/a2s { + 2 dict begin + /i exch def + i length dup string /o exch def + 1 sub 0 exch 1 exch { + dup i 3 -1 roll get o 3 1 roll put + } for + o + end +} bind def + +/filter { % array proc(bool) -> array + 1 dict begin + /p exch def + [ exch + { + dup p not + { + pop + } if + } forall + ] + end +} bind def + +/test.start { + print (:) print + /test.pass 0 def + /test.count 0 def +} bind def + +/test.end { + ( ) print + test.count 0 gt { + (Passed ) print + test.pass (...) cvs print + (/) print + test.count (...) cvs print + ( \() print + test.pass 100 mul test.count idiv (...) cvs print + (%\)) print + (\r\n) print + } if +} bind def + +/test { + /test.count test.count 1 add def + { + /test.pass test.pass 1 add def + } { + ( ) print + test.count (....) cvs print + (-fail) print + } ifelse +} bind def + +/toupper { + s2a + [ exch + { + dup dup 97 ge exch 122 le and { + 32 sub + } if + } forall + ] a2s +} bind def + +/tolower { + s2a + [ exch + { + dup dup 65 ge exch 90 le and { + 32 add + } if + } forall + ] a2s +} bind def + + +% end included library code + +/is_vowel { + << 65 true + 69 true + 73 true + 79 true + 85 true + 97 true + 101 true + 105 true + 111 true + 117 true >> + exch known +} bind def + +/reversevowels { + 0 dict begin + /p exch s2a def + /q p { is_vowel } filter def + /qi q length def + [ + p { + /c exch def + c is_vowel { + /qi qi 1 sub def + /nc q qi get def + c 65 ge c 90 le and { + 1 string dup 0 nc put toupper 0 get /nc exch def + } { + c 97 ge c 122 le and { + 1 string dup 0 nc put tolower 0 get /nc exch def + } if + } ifelse + nc + } { + c + } ifelse + } forall + ] a2s + end +} bind def + +(reversevowels) test.start +(Raku) reversevowels (Ruka) eq test +(Perl) reversevowels (Perl) eq test +(Julia) reversevowels (Jaliu) eq test +(Uiua) reversevowels (Auiu) eq test +test.end diff --git a/challenge-254/roger-bell-west/python/ch-1.py b/challenge-254/roger-bell-west/python/ch-1.py new file mode 100755 index 0000000000..80b30293ea --- /dev/null +++ b/challenge-254/roger-bell-west/python/ch-1.py @@ -0,0 +1,34 @@ +#! /usr/bin/python3 + +def threepower(n0): + if n0 == 0: + return False + n = abs(n0) + lo = 1 + hi = int(n / 2) + while True: + t = int((lo + hi) / 2) + c = t * t * t + if c == n: + return True + if lo == t: + return False + if c < n: + lo = t + else: + hi = t + +import unittest + +class TestThreepower(unittest.TestCase): + + def test_ex1(self): + self.assertEqual(threepower(27), True, 'example 1') + + def test_ex2(self): + self.assertEqual(threepower(0), False, 'example 2') + + def test_ex3(self): + self.assertEqual(threepower(6), False, 'example 3') + +unittest.main() diff --git a/challenge-254/roger-bell-west/python/ch-2.py b/challenge-254/roger-bell-west/python/ch-2.py new file mode 100755 index 0000000000..3a206826be --- /dev/null +++ b/challenge-254/roger-bell-west/python/ch-2.py @@ -0,0 +1,43 @@ +#! /usr/bin/python3 + +def is_vowel(c): + match c.lower(): + case 'a' | 'e' | 'i' | 'o' | 'u': + return True + case _: + return False + +def reversevowels(a): + q = [c for c in a if is_vowel(c)] + qi = len(q) + o = [] + for c in a: + if is_vowel(c): + qi -= 1 + nc = q[qi] + if c.isupper(): + nc = nc.upper() + else: + nc = nc.lower() + o.append(nc) + else: + o.append(c) + return "".join(o) + +import unittest + +class TestReversevowels(unittest.TestCase): + + def test_ex1(self): + self.assertEqual(reversevowels("Raku"), "Ruka", 'example 1') + + def test_ex2(self): + self.assertEqual(reversevowels("Perl"), "Perl", 'example 2') + + def test_ex3(self): + self.assertEqual(reversevowels("Julia"), "Jaliu", 'example 3') + + def test_ex4(self): + self.assertEqual(reversevowels("Uiua"), "Auiu", 'example 4') + +unittest.main() diff --git a/challenge-254/roger-bell-west/raku/ch-1.p6 b/challenge-254/roger-bell-west/raku/ch-1.p6 new file mode 100755 index 0000000000..f0f09cac8d --- /dev/null +++ b/challenge-254/roger-bell-west/raku/ch-1.p6 @@ -0,0 +1,33 @@ +#! /usr/bin/raku + +use Test; + +plan 3; + +is(threepower(27), True, 'example 1'); +is(threepower(0), False, 'example 2'); +is(threepower(6), False, 'example 3'); + +sub threepower($n0) { + if ($n0 == 0) { + return False; + } + my $n = abs($n0); + my $lo = 1; + my Int $hi = $n div 2; + while (True) { + my Int $t = ($lo + $hi) div 2; + my $c = $t * $t * $t; + if ($c == $n) { + return True; + } + if ($lo == $t) { + return False; + } + if ($c < $n) { + $lo = $t; + } else { + $hi = $t; + } + } +} diff --git a/challenge-254/roger-bell-west/raku/ch-2.p6 b/challenge-254/roger-bell-west/raku/ch-2.p6 new file mode 100755 index 0000000000..e62d934ce5 --- /dev/null +++ b/challenge-254/roger-bell-west/raku/ch-2.p6 @@ -0,0 +1,40 @@ +#! /usr/bin/raku + +use Test; + +plan 4; + +is(reversevowels('Raku'), 'Ruka', 'example 1'); +is(reversevowels('Perl'), 'Perl', 'example 2'); +is(reversevowels('Julia'), 'Jaliu', 'example 3'); +is(reversevowels('Uiua'), 'Auiu', 'example 4'); + +sub is_vowel($c) { + if ($c ~~ m:i/<[aeiou]>/) { + return True; + } else { + return False; + } +} + +sub reversevowels($a) { + my @p = $a.comb(); + my @q = @p.grep({is_vowel($_)}); + my $qi = @q.elems; + my @o; + for @p -> $c { + if (is_vowel($c)) { + $qi--; + my $nc = @q[$qi]; + if ($c eq uc($c)) { + $nc = uc($nc); + } else { + $nc = lc($nc); + } + @o.push($nc); + } else { + @o.push($c); + } + } + return @o.join(''); +} diff --git a/challenge-254/roger-bell-west/ruby/ch-1.rb b/challenge-254/roger-bell-west/ruby/ch-1.rb new file mode 100755 index 0000000000..530cbb8229 --- /dev/null +++ b/challenge-254/roger-bell-west/ruby/ch-1.rb @@ -0,0 +1,43 @@ +#! /usr/bin/ruby + +def threepower(n0) + if n0 == 0 then + return false + end + n = n0.abs + lo = 1 + hi = n.div(2) + while true do + t = (lo + hi).div(2) + c = t * t * t + if c == n then + return true + end + if lo == t then + return false + end + if c < n then + lo = t + else + hi = t + end + end +end + +require 'test/unit' + +class TestThreepower < Test::Unit::TestCase + + def test_ex1 + assert_equal(true, threepower(27)) + end + + def test_ex2 + assert_equal(false, threepower(0)) + end + + def test_ex3 + assert_equal(false, threepower(6)) + end + +end diff --git a/challenge-254/roger-bell-west/ruby/ch-2.rb b/challenge-254/roger-bell-west/ruby/ch-2.rb new file mode 100755 index 0000000000..7e0413801d --- /dev/null +++ b/challenge-254/roger-bell-west/ruby/ch-2.rb @@ -0,0 +1,53 @@ +#! /usr/bin/ruby + +def is_vowel(c) + if c.downcase =~ /[aeiou]/ then + return true + else + return false + end +end + +def reversevowels(a) + p = a.split('') + q = p.find_all { |c| is_vowel(c) } + qi = q.length + o = [] + p.each do |c| + if is_vowel(c) + qi -= 1 + nc = q[qi] + if c == c.upcase then + nc = nc.upcase + else + nc = nc.downcase + end + o.push(nc) + else + o.push(c) + end + end + return o.join("") +end + +require 'test/unit' + +class TestReversevowels < Test::Unit::TestCase + + def test_ex1 + assert_equal('Ruka', reversevowels('Raku')) + end + + def test_ex2 + assert_equal('Perl', reversevowels('Perl')) + end + + def test_ex3 + assert_equal('Jaliu', reversevowels('Julia')) + end + + def test_ex4 + assert_equal('Auiu', reversevowels('Uiua')) + end + +end diff --git a/challenge-254/roger-bell-west/rust/ch-1.rs b/challenge-254/roger-bell-west/rust/ch-1.rs new file mode 100755 index 0000000000..cf992ffd44 --- /dev/null +++ b/challenge-254/roger-bell-west/rust/ch-1.rs @@ -0,0 +1,41 @@ +#! /bin/sh +//usr/bin/env rustc --test $0 -o ${0}x && ./${0}x --nocapture; rm -f ${0}x ; exit + +#[test] +fn test_ex1() { + assert_eq!(threepower(27), true); +} + +#[test] +fn test_ex2() { + assert_eq!(threepower(0), false); +} + +#[test] +fn test_ex3() { + assert_eq!(threepower(6), false); +} + +fn threepower(n0: i32) -> bool { + if n0 == 0 { + return false; + } + let n = n0.abs(); + let mut lo = 1; + let mut hi = n / 2; + loop { + let t = (lo + hi) / 2; + let c = t * t * t; + if c == n { + return true; + } + if lo == t { + return false; + } + if c < n { + lo = t; + } else { + hi = t; + } + } +} diff --git a/challenge-254/roger-bell-west/rust/ch-2.rs b/challenge-254/roger-bell-west/rust/ch-2.rs new file mode 100755 index 0000000000..ed16b36e2e --- /dev/null +++ b/challenge-254/roger-bell-west/rust/ch-2.rs @@ -0,0 +1,51 @@ +#! /bin/sh +//usr/bin/env rustc --test $0 -o ${0}x && ./${0}x --nocapture; rm -f ${0}x ; exit + +#[test] +fn test_ex1() { + assert_eq!(reversevowels("Raku"), "Ruka"); +} + +#[test] +fn test_ex2() { + assert_eq!(reversevowels("Perl"), "Perl"); +} + +#[test] +fn test_ex3() { + assert_eq!(reversevowels("Julia"), "Jaliu"); +} + +#[test] +fn test_ex4() { + assert_eq!(reversevowels("Uiua"), "Auiu"); +} + +fn is_vowel(c: char) -> bool { + match c.to_ascii_lowercase() { + 'a' | 'e' | 'i' | 'o' | 'u' => true, + _ => false, + } +} + +fn reversevowels(a: &str) -> String { + let p = a.chars().collect::<Vec<_>>(); + let q = p.iter().filter(|c| is_vowel(**c)).collect::<Vec<_>>(); + let mut qi = q.len(); + let mut o: Vec<char> = Vec::new(); + for c in &p { + if is_vowel(*c) { + qi -= 1; + let mut nc = *q[qi]; + if c.is_uppercase() { + nc = nc.to_ascii_uppercase(); + } else { + nc = nc.to_ascii_lowercase(); + } + o.push(nc); + } else { + o.push(*c); + } + } + o.iter().collect::<String>() +} diff --git a/challenge-254/roger-bell-west/scala/ch-1.scala b/challenge-254/roger-bell-west/scala/ch-1.scala new file mode 100644 index 0000000000..58f2c83a25 --- /dev/null +++ b/challenge-254/roger-bell-west/scala/ch-1.scala @@ -0,0 +1,48 @@ + +object Threepower { + def threepower(n0: Int): Boolean = { + if (n0 == 0) { + return false + } + var n = n0.abs + var lo = 1 + var hi = n / 2 + while (true) { + val t = (lo + hi) / 2 + val c = t * t * t + if (c == n) { + return true + } + if (lo == t) { + return false + } + if (c < n) { + lo = t + } else { + hi = t + } + } + return false + } + def ma |
