Saturday, January 4, 2025
Google search engine
HomeData Modelling & AICount changes in Led Lights to display digits one by one

Count changes in Led Lights to display digits one by one

Given a number n. Count the number of changes in LED light when display one after another of a given number. (Initially all LED is off). Number is given input in the form of a string. 
See this image of seven segment display for better understanding.

Examples: 

Input : n = "082"
Output : 9
We need 6 LED lights to display 0 in seven segment display. We need 7 lights for 8 and 5 lights for 2. So total on/off is 6 + 1 + 2 = 9.

Input : n = "12345"
Output : 7

Source :Morgan Stanley Interview Set 20
 

The idea is to pre-compute the led lights required to display a given number. Now iterate the number and keep adding the changes. For the implementation, a basic concept of string hashing is used.

Below is the implementation of above problem. 

C++




// CPP program to count number of on offs to
// display digits of a number.
#include<bits/stdc++.h>
using namespace std;
 
int countOnOff(string n)
{
    // store the led lights required to display
    // a particular number.
    int Led[] = { 6, 2, 5, 5, 4, 5, 6, 3, 7, 5 };
 
    int len = n.length();
 
    // compute the change in led and keep
    // on adding the change
    int sum = Led[n[0] - '0'];
    for (int i = 1; i < len; i++) {
        sum = sum + abs(Led[n[i] - '0'] -
              Led[n[i - 1] - '0']);
    }
 
    return sum;
}
 
// Driver code
int main()
{
    string n = "082";
    cout << countOnOff(n);
    return 0;
}


Java




// Java program to count number of on offs to
// display digits of a number.
import java.io.*;
 
class GFG
{
static int countOnOff(String n)
{
    // store the led lights required to display
    // a particular number.
    int Led[] = { 6, 2, 5, 5, 4, 5, 6, 3, 7, 5 };
 
    int len = n.length();
 
    // compute the change in led and keep
    // on adding the change
    int sum = Led[n.charAt(0) - '0'];
    for (int i = 1; i < len; i++) {
        sum = sum + Math.abs(Led[n.charAt(i) - '0'] -
            Led[n.charAt(i - 1) - '0']);
    }
 
    return sum;
}
 
// Driver code
public static void main(String args[])
{
    String n = "082";
    System.out.println( countOnOff(n) );
}
}


Python 3




# Python3 program to count number of on offs to
# display digits of a number.
 
def countOnOff(n):
 
    # store the led lights required to display
    # a particular number.
    Led = [ 6, 2, 5, 5, 4, 5, 6, 3, 7, 5 ]
 
    leng = len(n)
 
    # compute the change in led and keep
    # on adding the change
    sum = Led[int(n[0]) - int('0')]
    for i in range(1,leng):
        sum = (sum + abs(Led[int(n[i]) - int('0')]
                - Led[int(n[i - 1]) - int('0')]))
 
    return sum
 
#Driver code
if __name__=='__main__':
    n = "082"
    print(countOnOff(n))
 
# this code is contributed by
# ash264


C#




// C# program to count number of on
// offs to display digits of a number.
using System;
 
class GFG
{
public static int countOnOff(string n)
{
    // store the led lights required
    // to display a particular number.
    int[] Led = new int[] {6, 2, 5, 5, 4,
                           5, 6, 3, 7, 5};
 
    int len = n.Length;
 
    // compute the change in led and
    // keep on adding the change
    int sum = Led[n[0] - '0'];
    for (int i = 1; i < len; i++)
    {
        sum = sum + Math.Abs(Led[n[i] - '0'] -
                             Led[n[i - 1] - '0']);
    }
 
    return sum;
}
 
// Driver code
public static void Main(string[] args)
{
    string n = "082";
    Console.WriteLine(countOnOff(n));
}
}
 
// This code is contributed by Shrikant13


PHP




<?php
// PHP program to count number
// of on offs to display digits
// of a number.
 
function countOnOff($n)
{
    // store the led lights required
    // to display a particular number.
    $Led = array(6, 2, 5, 5, 4,
                 5, 6, 3, 7, 5 );
 
    $len = strlen($n);
 
    // compute the change in led
    // and keep on adding the change
    $sum = $Led[$n[0] - '0'];
    for ($i = 1; $i < $len; $i++)
    {
        $sum = $sum + abs($Led[$n[$i] - '0'] -
                          $Led[$n[$i - 1] - '0']);
    }
 
    return $sum;
}
 
// Driver code
$n = "082";
echo countOnOff($n);
 
// This code is contributed
// by Akanksha Rai
?>


Javascript




<script>
 
// javascript program to count number of on offs to
// display digits of a number.
function countOnOff( n)
{
    // store the led lights required to display
    // a particular number.
    var Led = [ 6, 2, 5, 5, 4, 5, 6, 3, 7, 5 ];
 
    var len = n.length;
 
    // compute the change in led and keep
    // on adding the change
    var sum = Led[n.charAt(0) - '0'];
    for (i = 1; i < len; i++) {
        sum = sum + Math.abs(Led[n.charAt(i) - '0'] -
            Led[n.charAt(i - 1) - '0']);
    }
 
    return sum;
}
 
// Driver code
 
n = "082";
document.write( countOnOff(n) );
 
 
// This code is contributed by 29AjayKumar
 
</script>


Output

9

Time Complexity: O(n), where n is the length of the given string.
Auxiliary Space: O(1), no extra space is added, so it is a constant.

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Recent Comments