OiO.lk Community platform!

Oio.lk is an excellent forum for developers, providing a wide range of resources, discussions, and support for those in the developer community. Join oio.lk today to connect with like-minded professionals, share insights, and stay updated on the latest trends and technologies in the development field.
  You need to log in or register to access the solved answers to this problem.
  • You have reached the maximum number of guest views allowed
  • Please register below to remove this limitation

hackerrank code keeps giving me wrong output [closed]

  • Thread starter Thread starter Daniel04
  • Start date Start date
D

Daniel04

Guest
My code keeps giving me wrong outputs of

Code:
2
2
2

instead of the sample output of

Code:
2
3
2

with sample inputs of

Code:
3 3
4
15
2
11
15
11

I tried coding the solution and fixing it but it still gives me the same output:

Code:

Code:
"""
    This function solves a test case.

      Parameters:
      k  : int                      - number of transmission frequencies
      n  : int                      - number of bluetooth devices
      fs : array-like               - array of size (k,) with a list of transmission  
                                     frequencies
      ms : array-like               - array of size (n,) with a list of bluetooth device signal 
                                     frequencies

      Returns a list of integers of size (n,) indicating the answers for each bluetooth devices
"""
def solve(k,n,fs,ms):
    results = []
    for m in ms:
        # Find the index of the closest transmission frequency
        closest_idx = [i for i, f in enumerate(fs) if abs(f - m) == min(abs(f - m) for f in fs)]
        
        # Handle multiple closest frequencies: choose the lowest
        if len(closest_idx) > 1:
            closest_idx = min(closest_idx)
        
        # If a valid index is found, append the corresponding transmission frequency to the results
        if closest_idx is not None:
            results.append(fs[closest_idx])
        else:
            # Handle the case where no closer frequency is found
            results.append(-1)  # Or another value to indicate no match
        
    return results



def main():
    k,n = list(map(int,input().split(" ")))

    fs = sorted([int(input()) for i in range(k)])
    ms = [int(input()) for i in range(n)]

    ans = solve(k,n,fs,ms)

    print("\n".join(list(map(str,ans))))

if __name__ == "__main__":
    main()

A weirdly new bluetooth transmission protocol is being tested and rolled out. A bluetooth device's transmitter must be tuned to specific frequencies. The device is given K frequencies at which to transmit some signals. A bluetooth device for the new protocol can handshake to a particular transmitted signal frequency, fᵢ if and only if the device's frequency mᵢ is greater than or equal to fᵢ.

You have N bluetooth devices to be tested one at a time. For each bluetooth device introduced in the testing area, all K frequencies will be blasted simultaneously. You must count how many frequencies each device will handshake among the K frequencies.

Input Format

Input begins with a line containing two space-separated integers and , indicating the number of frequencies and number of bluetooth devices, respectively.

K lines follow, each containing a single integer fᵢ, indicating the frequency of the ith transmission signal, as described in the problem statement.

N lines follow, each containing a single integer mⱼ indicating the frequency of the jth device to enter the testing area.

Constraints 1 ≤ K, N ≤ 3 * 10⁵ 1 ≤ fᵢ, mⱼ ≤ 10⁹

Output Format

For each of the N bluetooth devices, print a line containing a single integer indicating how many of the K frequencies they can handshake.
<p>My code keeps giving me wrong outputs of</p>
<pre><code>2
2
2
</code></pre>
<p>instead of the sample output of</p>
<pre><code>2
3
2
</code></pre>
<p>with sample inputs of</p>
<pre><code>3 3
4
15
2
11
15
11
</code></pre>
<p>I tried coding the solution and fixing it but it still gives me the same output:</p>
<p>Code:</p>
<pre><code>"""
This function solves a test case.

Parameters:
k : int - number of transmission frequencies
n : int - number of bluetooth devices
fs : array-like - array of size (k,) with a list of transmission
frequencies
ms : array-like - array of size (n,) with a list of bluetooth device signal
frequencies

Returns a list of integers of size (n,) indicating the answers for each bluetooth devices
"""
def solve(k,n,fs,ms):
results = []
for m in ms:
# Find the index of the closest transmission frequency
closest_idx = [i for i, f in enumerate(fs) if abs(f - m) == min(abs(f - m) for f in fs)]

# Handle multiple closest frequencies: choose the lowest
if len(closest_idx) > 1:
closest_idx = min(closest_idx)

# If a valid index is found, append the corresponding transmission frequency to the results
if closest_idx is not None:
results.append(fs[closest_idx])
else:
# Handle the case where no closer frequency is found
results.append(-1) # Or another value to indicate no match

return results



def main():
k,n = list(map(int,input().split(" ")))

fs = sorted([int(input()) for i in range(k)])
ms = [int(input()) for i in range(n)]

ans = solve(k,n,fs,ms)

print("\n".join(list(map(str,ans))))

if __name__ == "__main__":
main()
</code></pre>
<p>A weirdly new bluetooth transmission protocol is being tested and rolled out. A bluetooth device's transmitter must be tuned to specific frequencies. The device is given K frequencies at which to transmit some signals. A bluetooth device for the new protocol can handshake to a particular transmitted signal frequency, fᵢ if and only if the device's frequency mᵢ is greater than or equal to fᵢ.</p>
<p>You have N bluetooth devices to be tested one at a time. For each bluetooth device introduced in the testing area, all K frequencies will be blasted simultaneously. You must count how many frequencies each device will handshake among the K frequencies.</p>
<p>Input Format</p>
<p>Input begins with a line containing two space-separated integers and , indicating the number of frequencies and number of bluetooth devices, respectively.</p>
<p><em>K</em> lines follow, each containing a single integer <em>fᵢ</em>, indicating the frequency of the <em>ith</em> transmission signal, as described in the problem statement.</p>
<p><em>N</em> lines follow, each containing a single integer <em>mⱼ</em> indicating the frequency of the <em>jth</em> device to enter the testing area.</p>
<p>Constraints
1 ≤ K, N ≤ 3 * 10⁵
1 ≤ <em>fᵢ</em>, <em>mⱼ</em> ≤ 10⁹</p>
<p>Output Format</p>
<p>For each of the <em>N</em> bluetooth devices, print a line containing a single integer indicating how many of the <em>K</em> frequencies they can handshake.</p>
 

Latest posts

Top