aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-258/barroff/blog.txt1
-rw-r--r--challenge-258/barroff/bqn/ch-1.bqn7
-rw-r--r--challenge-258/barroff/bqn/ch-2.bqn11
-rw-r--r--challenge-258/barroff/julia/ch-1.jl14
-rw-r--r--challenge-258/barroff/julia/ch_2.jl20
-rw-r--r--challenge-258/barroff/raku/ch-1.p622
-rw-r--r--challenge-258/barroff/raku/ch-2.p628
7 files changed, 103 insertions, 0 deletions
diff --git a/challenge-258/barroff/blog.txt b/challenge-258/barroff/blog.txt
new file mode 100644
index 0000000000..f7fc201613
--- /dev/null
+++ b/challenge-258/barroff/blog.txt
@@ -0,0 +1 @@
+https://barroff.codeberg.page/2024/03/all-about-digits/
diff --git a/challenge-258/barroff/bqn/ch-1.bqn b/challenge-258/barroff/bqn/ch-1.bqn
new file mode 100644
index 0000000000..6162da09e0
--- /dev/null
+++ b/challenge-258/barroff/bqn/ch-1.bqn
@@ -0,0 +1,7 @@
+#/usr/bin/env bqn
+
+CountEvenDigitsNumber ← +´∘(¬2|≠•Fmt)¨
+
+•Show CountEvenDigitsNumber 10‿1‿111‿24‿1000
+•Show CountEvenDigitsNumber 111‿1‿11111
+•Show CountEvenDigitsNumber 2‿8‿1024‿256
diff --git a/challenge-258/barroff/bqn/ch-2.bqn b/challenge-258/barroff/bqn/ch-2.bqn
new file mode 100644
index 0000000000..4164500fca
--- /dev/null
+++ b/challenge-258/barroff/bqn/ch-2.bqn
@@ -0,0 +1,11 @@
+#/usr/bin/env bqn
+
+ints ← 2‿5‿9‿11‿3
+
+DecToBin ← { (((0⊸<)◶""‿𝕊∘⌊2⊸(÷˜))∾(•Fmt 2⊸|)) 𝕩 }
+
+SumOfValues ← { +´𝕩×𝕨=+´¨('0'⊸(-˜)¨)¨DecToBin¨↕≠𝕩 }
+
+•Show 1 SumOfValues ints
+•Show 2 SumOfValues ints
+•Show 0 SumOfValues ints
diff --git a/challenge-258/barroff/julia/ch-1.jl b/challenge-258/barroff/julia/ch-1.jl
new file mode 100644
index 0000000000..2e1969a2f7
--- /dev/null
+++ b/challenge-258/barroff/julia/ch-1.jl
@@ -0,0 +1,14 @@
+#!/usr/bin/env julia
+
+using Test: @test, @testset
+
+function count_even_digits_number(ints::Vector{T}) where {T<:Integer}
+ length(filter(x -> lastindex("$x") % 2 == 0, ints))
+end
+
+@testset "count even digits number" begin
+ @test count_even_digits_number([10, 1, 111, 24, 1000]) == 3
+ @test count_even_digits_number([111, 1, 11111]) == 0
+ @test count_even_digits_number([2, 8, 1024, 256]) == 1
+end
+
diff --git a/challenge-258/barroff/julia/ch_2.jl b/challenge-258/barroff/julia/ch_2.jl
new file mode 100644
index 0000000000..e322ee3845
--- /dev/null
+++ b/challenge-258/barroff/julia/ch_2.jl
@@ -0,0 +1,20 @@
+#!/usr/bin/env julia
+
+using Test: @test, @testset
+
+function sum_of_values(ints::Vector{T}, k::T) where {T<:Integer}
+ sum(
+ ints[
+ filter(
+ x -> count(y -> y == '1', string(x - 1, base=2)) == k,
+ 1:length(ints)
+ )
+ ]
+ )
+end
+
+@testset "count even digits number" begin
+ @test sum_of_values([2, 5, 9, 11, 3], 1) == 17
+ @test sum_of_values([2, 5, 9, 11, 3], 2) == 11
+ @test sum_of_values([2, 5, 9, 11, 3], 0) == 2
+end
diff --git a/challenge-258/barroff/raku/ch-1.p6 b/challenge-258/barroff/raku/ch-1.p6
new file mode 100644
index 0000000000..fc62a4c73f
--- /dev/null
+++ b/challenge-258/barroff/raku/ch-1.p6
@@ -0,0 +1,22 @@
+#!/usr/bin/env raku
+
+use v6.d;
+
+sub count-even-digits-number(@ints --> Int:D) {
+ sum(map({ not( Str($_).chars % 2 ).Int }, @ints));
+}
+
+#| Run test cases
+multi sub MAIN('test') {
+ use Test;
+ plan 3;
+
+ is count-even-digits-number(( 10, 1, 111, 24, 1000 )), 3, 'works for ( 10, 1, 111, 24, 1000 )';
+ is count-even-digits-number(( 111, 1, 11111 )), 0, 'works for ( 111, 1, 11111 )';
+ is count-even-digits-number(( 2, 8, 1024, 256 )), 1, 'works for ( 2, 8, 1024, 256 )';
+}
+
+#| Take user provided number like 10 1 111 24 1000
+multi sub MAIN(Int:D @ints) {
+ say count-even-digits-number(@ints);
+}
diff --git a/challenge-258/barroff/raku/ch-2.p6 b/challenge-258/barroff/raku/ch-2.p6
new file mode 100644
index 0000000000..ad41fc218f
--- /dev/null
+++ b/challenge-258/barroff/raku/ch-2.p6
@@ -0,0 +1,28 @@
+#!/usr/bin/env raku
+
+use v6.d;
+
+sub sum-of-values(@ints, Int:D $k --> Int:D) {
+ return sum(
+ @ints[
+ grep(
+ { sum($_.base(2).comb) == $k }, 0..@ints.elems - 1
+ )
+ ]
+ )
+}
+
+#| Run test cases
+multi sub MAIN('test') {
+ use Test;
+ plan 3;
+
+ is sum-of-values((2, 5, 9, 11, 3), 1), 17, 'works for k = 1';
+ is sum-of-values((2, 5, 9, 11, 3), 2), 11, 'works for k = 2';
+ is sum-of-values((2, 5, 9, 11, 3), 0), 2, 'works for k = 0';
+}
+
+#| Take user provided number like 10 1 111 24 1000
+multi sub MAIN(Int:D $k, *@ints) {
+ say sum-of-values(@ints, $k);
+}