Los dígitos de 7 segmentos se pueden representar en ASCII utilizando _|
caracteres. Aquí están los 1
dígitos del tamaño :
_ _ _ _ _ _ _ _
| _| _| |_| |_ |_ | |_| |_| | |
| |_ _| | _| |_| | |_| _| |_|
Los tamaños más grandes se forman al hacer que cada segmento sea proporcionalmente más largo. Aquí hay un par de 3 dígitos.
___ ___ ___ ___ ___ ___ ___
| | | | | | | | | |
| | | | | | | | | |
|___| |___ | |___ ___| | | |___|
| | | | | | | | | |
| | | | | | | | | |
|___| |___| | ___| ___| |___| ___|
Objetivo
En este desafío, debe escribir un programa / función que pueda tomar un solo dígito como entrada e identificar su tamaño. El problema: si la entrada no es un dígito válido, entonces su programa debería generar 0
.
Este es el código de golf , gana menos bytes.
Puede escribir un programa o una función, que puede recibir el dígito como STDIN o un argumento, e imprimir / devolver el valor.
Los dígitos se proporcionarán como una cadena de varias líneas, rellenada con la mínima cantidad de espacio en blanco al final necesario para que sea un rectángulo perfecto. La nueva línea final es una parte opcional de la entrada. No habrá espacios iniciales innecesarios.
Cuando se pasa un no dígito, todavía estará compuesto de _|
caracteres, rellenado con un rectángulo y no tendrá espacios iniciales innecesarios. No habrá líneas en blanco. No tendrá que lidiar con entradas vacías.
La salida debe ser un número entero no negativo, con nueva línea final opcional. Si la entrada no es un dígito apropiado de ningún tamaño, salida 0
. De lo contrario, salida del tamaño.
Aquí hay una guía práctica para los anchos y alturas de cada dígito para un tamaño dado 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
Ejemplos de E / S
En:
__
|
__|
|
__|
Fuera:
2
En:
|
|
|
Fuera:
0 //because it is of an invalid height. Either 1 char too short or tall.
En:
| |
| |
| |
|____|
|
|
|
|
Fuera:
4
En:
___
|
|___
| |
|___|
Fuera:
0 //1 char too wide
En:
_
|_|
| |
Fuera:
0 //it's not a digit
En:
__
|
|__
|
__|
Fuera:
2
En:
_ _
_| _|
|_ _|
Fuera:
0 //both would be valid individually, but input should be a *single* digit
En:
_
|_|
|_|
Fuera:
1
En:
|
|
Fuera:
1
En:
__|_
|
_ |
_
|__
Fuera:
0
Esto es aproximadamente el inverso del número de transformación en un patrón de visualización de 7 segmentos , desde hace 3 años.
0
dígito de tamaño , ¿ verdad ? A menos que haya ideado una forma de dibujarlos.Respuestas:
Rubí, 250
Dado que hay tantas entradas inválidas posibles, la única forma de hacerlo era generar todos los dígitos correctos y verificar si las entradas coinciden.
Construyo cada dígito de abajo hacia arriba, en 2 mitades más la línea superior. Aunque hay 12 posibilidades (teniendo en cuenta que el segmento izquierdo puede ser encendido, apagado, o en el caso de
3
y7
completamente ausente) solamente 7 son en realidad presente y la elección cuidadosa de codificación permite toda la información (excepto la línea superior) a ser codificada en una solo personajeel dígito
1
realmente no se ajusta al patrón y se maneja por separado, se usa para inicializar la matriz.Sin golf en el programa de prueba
Esta versión utiliza en
.
lugar de espacios por razones de diagnóstico.fuente