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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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) );
}
}

chevron_right


Python 3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


PHP

Output:

9


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.