13
2
7-segment digits can be represented in ASCII using _| characters. Here are the size 1 digits:
_ _ _ _ _ _ _ _
| _| _| |_| |_ |_ | |_| |_| | |
| |_ _| | _| |_| | |_| _| |_|
Larger sizes are formed by making each segment proportionately longer. Here are a couple size 3 digits.
___ ___ ___ ___ ___ ___ ___
| | | | | | | | | |
| | | | | | | | | |
|___| |___ | |___ ___| | | |___|
| | | | | | | | | |
| | | | | | | | | |
|___| |___| | ___| ___| |___| ___|
Goal
In this challenge, you are to write a program/function that can take a single digit as input and identify its size. The catch: if the input is not a valid digit, then your program should output 0.
This is code-golf, fewest bytes wins.
You can write either a program or a function, which can receive the digit either as STDIN or an argument, and print/return the value.
Digits will be provided as a multi-line string, padded with the minimal amount of trailing whitespace needed to make it a perfect rectangle. The trailing newline is an optional part of input. There will be no unneeded leading spaces.
When a non-digit is passed, it will still be comprised of _| characters, padded to a rectangle, and have no unneeded leading spaces. There will be no blank lines. You won't have to deal with empty input.
Output should be a single non-negative integer, with optional trailing newline. If the input is not a proper digit of any size, output 0. Else, output the size.
Here is a handy guide for the widths and heights of each digit for a given size N.
Digit Height Width (not counting newlines)
1 2N 1
2 2N+1 N+2
3 2N+1 N+1
4 2N N+2
5 2N+1 N+2
6 2N+1 N+2
7 2N+1 N+1
8 2N+1 N+2
9 2N+1 N+2
0 2N+1 N+2
I/O Examples
In:
__
|
__|
|
__|
Out:
2
In:
|
|
|
Out:
0 //because it is of an invalid height. Either 1 char too short or tall.
In:
| |
| |
| |
|____|
|
|
|
|
Out:
4
In:
___
|
|___
| |
|___|
Out:
0 //1 char too wide
In:
_
|_|
| |
Out:
0 //it's not a digit
In:
__
|
|__
|
__|
Out:
2
In:
_ _
_| _|
|_ _|
Out:
0 //both would be valid individually, but input should be a *single* digit
In:
_
|_|
|_|
Out:
1
In:
|
|
Out:
1
In:
__|_
|
_ |
_
|__
Out:
0
This is approximately the inverse of Transform number into 7-segment display pattern, from 3 years back.
@steveverrill There's not really a such thing as a size
0digit, is there? Unless you've thought up a way to draw them. – PhiNotPi – 2016-01-09T16:09:32.6578This would be incredibly easy if not for the rule that it must be a valid digit... – ETHproductions – 2016-01-09T22:41:41.580
@ETHproductions I am aware. – PhiNotPi – 2016-01-09T22:46:29.867
@ETHproductions if it didn't have that requirement, it would be a duplicate of http://codegolf.stackexchange.com/q/19548/15599
– Level River St – 2016-01-10T00:05:16.083