Skip to content
Related Articles

Related Articles

Improve Article

Count changes in Led Lights to display digits one by one

  • Difficulty Level : Easy
  • Last Updated : 23 Mar, 2021

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

 

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.




My Personal Notes arrow_drop_up
Recommended Articles
Page :