How to resolve the algorithm Water collected between towers step by step in the J programming language

Published on 12 May 2024 09:40 PM
#J

How to resolve the algorithm Water collected between towers step by step in the J programming language

Table of Contents

Problem Statement

In a two-dimensional world, we begin with any bar-chart (or row of close-packed 'towers', each of unit width), and then it rains, completely filling all convex enclosures in the chart with water.

In the example above, a bar chart representing the values [5, 3, 7, 2, 6, 4, 5, 9, 1, 2] has filled, collecting 14 units of water. Write a function, in your language, from a given array of heights, to the number of water units that can be held in this way, by a corresponding bar chart. Calculate the number of water units that could be collected by bar charts representing each of the following seven series:

See, also:

Let's start with the solution:

Step by Step solution about How to resolve the algorithm Water collected between towers step by step in the J programming language

Source code in the j programming language

collectLevels =: >./\ <. >./\.                          NB. collect levels after filling
waterLevels=: collectLevels - ]                         NB. water levels for each tower
collectedWater=: +/@waterLevels                         NB. sum the units of water collected
printTowers =: ' ' , [: |.@|: '#~' #~ ] ,. waterLevels  NB. print a nice graph of towers and water


   collectedWater 5 3 7 2 6 4 5 9 1 2
14
   printTowers 5 3 7 2 6 4 5 9 1 2

       #
       #
  #~~~~#
  #~#~~#
#~#~#~##
#~#~####
###~####
########~#
##########

NB. Test cases
   TestTowers =: <@".;._2 noun define
1 5 3 7 2
5 3 7 2 6 4 5 9 1 2
2 6 3 5 2 8 1 4 2 2 5 3 5 7 4 1
5 5 5 5
5 6 7 8
8 7 7 6
6 7 10 7 6
)
   TestResults =: 2 14 35 0 0 0 0
   TestResults -: collectedWater &> TestTowers  NB. check tests
1


  

You may also check:How to resolve the algorithm Holidays related to Easter step by step in the COBOL programming language
You may also check:How to resolve the algorithm Return multiple values step by step in the Harbour programming language
You may also check:How to resolve the algorithm Arithmetic/Integer step by step in the BQN programming language
You may also check:How to resolve the algorithm Regular expressions step by step in the Arturo programming language
You may also check:How to resolve the algorithm Ternary logic step by step in the BASIC256 programming language