Conteo de muestras de roca | TCS Codevita 2020

John es geólogo y necesita contar muestras de rocas para enviarlas a un laboratorio químico. Él tiene un problema. El laboratorio solo acepta muestras de roca por un rango de tamaños en ppm (partes por millón). Juan necesita tu ayuda. Su tarea es desarrollar un programa para obtener el número de rocas en cada rango aceptado por el laboratorio.

Declaración del problema: Dada una array samples[] que indica los tamaños de las muestras de roca y una array 2D ranges[] , la tarea es contar las muestras de roca que están en el rango ranges[i][0] a ranges[i][1] , para todo posible 1 <= i <= N .

Ejemplos:

Entrada: samples[] = {345, 604, 321, 433, 704, 470, 808, 718, 517, 811}, ranges[] = {{300, 380}, {400, 700}}
Salida: 2 4
Explicación : 
Rango [300, 380]: Las muestras {345, 321} se encuentran en el rango. Por lo tanto, el recuento es 2. 
Rango [400, 700]: las muestras {433, 604, 517, 470} se encuentran en el rango. Por lo tanto, la cuenta es 4.

Entrada: muestras[] = {400, 567, 890, 765, 987}, rangos[] = {{300, 380}, {800, 1000}
Salida: 0 2

Enfoque: la idea es iterar muestras[] para cada rango[i] y contar el número de muestras que se encuentran en los rangos especificados. Siga los pasos a continuación para resolver el problema:

  • Atraviesa los rangos de la array [].
  • Para cada fila ranges[i] , recorra la array samples[] y cuente el número de muestras de rocas que se encuentran en el rango [ranges[i][0], ranges[i][1]] .

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ program of the
// above approach
#include<bits/stdc++.h>
using namespace std;
 
void findRockSample(vector<vector<int>>ranges,
             int n, int r, vector<int>arr)
{
    vector<int>a;
     
    // Iterate over the ranges
    for(int i = 0; i < r; i++)
    {
       int  c = 0;
       int l = ranges[i][0];
       int h = ranges[i][1];
        
       for(int j = 0; j < arr.size(); j++)
       {
           if (l <= arr[j] && arr[j] <= h)
               c += 1;
        }
        a.push_back(c);
    }
    for(auto i:a)
        cout << i << " ";
}
 
// Driver Code
int main()
{
    int n = 5;
    int r = 2;
     
    vector<int>arr = { 400, 567, 890, 765, 987 };
    vector<vector<int>>ranges = { { 300, 380 },
                                  { 800, 1000 } };
     
    // Function call
    findRockSample(ranges, n, r, arr);
}
 
// This code is contributed by Stream_Cipher

Java

// Java program of the
// above approach
import java.util.*;
import java.io.*;
 
class GFG{
     
// Function to find the rock
// samples in the ranges
static ArrayList<Integer>findRockSample(int ranges[][],
                                        int n, int r,
                                        int  arr[])
{
    ArrayList<Integer> a = new ArrayList<>();
     
    // Iterate over the ranges
    for(int i = 0; i < r; i++)
    {
       int  c = 0;
       int l = ranges[i][0];
       int h = ranges[i][1];
        
       for(int j = 0; j < arr.length; j++)
       {
           if (l <= arr[j] && arr[j] <= h)
               c += 1;
        }
        a.add(c);
    }
    return a;
}
 
// Driver Code
public static void main(String args[])
{
    int n = 5;
    int r = 2;
    int arr[] = { 400, 567, 890, 765, 987 };
    int ranges[][] = { { 300, 380 }, { 800, 1000 } };
     
    ArrayList<Integer> answer = new ArrayList<>();
     
    // Function call
    answer = findRockSample(ranges, n, r, arr);
 
    for(int i = 0; i < answer.size(); i++)
        System.out.print(answer.get(i) + " ");
         
    System.out.println();
}
}
 
// This code is contributed by bikram2001jha

Python3

# Python3 program of the
# above approach
 
# Function to find the rock
# samples in the ranges
def findRockSample(ranges,
                   n, r, arr):
    a = []
 
# Iterate over the ranges
    for i in range(r):
        c = 0
        l, h = ranges[i][0], ranges[i][1]
        for val in arr:
            if l <= val <= h:
                c += 1
        a.append(c)
    return a
 
 
# Driver Code
if __name__ == "__main__":
    n = 5
    r = 2
    arr = [400, 567, 890, 765, 987]
    ranges = [[300, 380], [800, 1000]]
 
# Function Call
    print(*findRockSample(ranges, n, r, arr))

C#

// C# program of the
// above approach
using System.Collections.Generic;
using System;
 
class GFG{
     
// Function to find the rock
// samples in the ranges
static void findRockSample(int [,]ranges,
                           int n, int r,
                           int [] arr)
{
    List<int> a = new List<int>();
     
    // Iterate over the ranges
    for(int i = 0; i < r; i++)
    {
        int  c = 0;
        int l = ranges[i, 0];
        int h = ranges[i, 1];
 
        for(int j = 0; j < arr.Length; j++)
        {
            if (l <= arr[j] && arr[j] <= h)
                c += 1;
        }
        a.Add(c);
    }
    foreach (var i in a)
    {
        Console.Write(i + " ");
    }
}
 
// Driver Code
public static void Main()
{
    int n = 5;
    int r = 2;
     
    int []arr = { 400, 567, 890, 765, 987 };
    int [,]ranges = { { 300, 380 },
                      { 800, 1000 } };
     
    // Function call
    findRockSample(ranges, n, r, arr);
}
}
 
// This code is contributed by Stream_Cipher

Javascript

<script>
    // Javascript program of the above approach
     
    // Function to find the rock
    // samples in the ranges
    function findRockSample(ranges, n, r, arr)
    {
        let a = [];
 
        // Iterate over the ranges
        for(let i = 0; i < r; i++)
        {
            let c = 0;
            let l = ranges[i][0];
            let h = ranges[i][1];
 
            for(let j = 0; j < arr.length; j++)
            {
                if (l <= arr[j] && arr[j] <= h)
                    c += 1;
            }
            a.push(c);
        }
        for(let i = 0; i < a.length; i++)
        {
            document.write(a[i] + " ");
        }
    }
     
    let n = 5;
    let r = 2;
      
    let arr = [ 400, 567, 890, 765, 987 ];
    let ranges = [ [ 300, 380 ], [ 800, 1000 ] ];
      
    // Function call
    findRockSample(ranges, n, r, arr);
 
</script>
Producción: 

0 2

 

Complejidad de Tiempo: O(N 2 )
Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por lisha1620 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *