diff options
| -rw-r--r-- | challenge-258/barroff/blog.txt | 1 | ||||
| -rw-r--r-- | challenge-258/barroff/bqn/ch-1.bqn | 7 | ||||
| -rw-r--r-- | challenge-258/barroff/bqn/ch-2.bqn | 11 | ||||
| -rw-r--r-- | challenge-258/barroff/julia/ch-1.jl | 14 | ||||
| -rw-r--r-- | challenge-258/barroff/julia/ch_2.jl | 20 | ||||
| -rw-r--r-- | challenge-258/barroff/raku/ch-1.p6 | 22 | ||||
| -rw-r--r-- | challenge-258/barroff/raku/ch-2.p6 | 28 |
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); +} |
