Les chiffres à 7 segments peuvent être représentés en ASCII à l'aide de _|
caractères. Voici les 1
chiffres de taille :
_ _ _ _ _ _ _ _
| _| _| |_| |_ |_ | |_| |_| | |
| |_ _| | _| |_| | |_| _| |_|
De plus grandes tailles sont formées en allongeant chaque segment proportionnellement. Voici un couple de taille 3 chiffres.
___ ___ ___ ___ ___ ___ ___
| | | | | | | | | |
| | | | | | | | | |
|___| |___ | |___ ___| | | |___|
| | | | | | | | | |
| | | | | | | | | |
|___| |___| | ___| ___| |___| ___|
Objectif
Dans ce défi, vous devez écrire un programme / une fonction qui peut prendre un seul chiffre en entrée et identifier sa taille. Le hic: si l'entrée n'est pas un chiffre valide, alors votre programme devrait sortir 0
.
C'est le code-golf , le moins d'octets gagne.
Vous pouvez écrire un programme ou une fonction, qui peut recevoir le chiffre sous forme de STDIN ou d'argument, et imprimer / renvoyer la valeur.
Les chiffres seront fournis sous la forme d'une chaîne de plusieurs lignes, rembourrée avec la quantité minimale d'espaces de fin nécessaires pour en faire un rectangle parfait. La nouvelle ligne de fin est une partie facultative de l'entrée. Il n'y aura pas d'espaces de tête inutiles.
Lorsqu'un caractère non numérique est transmis, il sera toujours composé de _|
caractères, complété par un rectangle et ne comportera aucun espace de début inutile. Il n'y aura pas de lignes vides. Vous n'aurez pas à gérer une entrée vide.
La sortie doit être un seul entier non négatif, avec une nouvelle ligne de fin facultative. Si l'entrée n'est pas un chiffre correct de n'importe quelle taille, sortez 0
. Sinon, affichez la taille.
Voici un guide pratique pour les largeurs et hauteurs de chaque chiffre pour une taille donnée 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
Exemples d'E / S
Dans:
__
|
__|
|
__|
En dehors:
2
Dans:
|
|
|
En dehors:
0 //because it is of an invalid height. Either 1 char too short or tall.
Dans:
| |
| |
| |
|____|
|
|
|
|
En dehors:
4
Dans:
___
|
|___
| |
|___|
En dehors:
0 //1 char too wide
Dans:
_
|_|
| |
En dehors:
0 //it's not a digit
Dans:
__
|
|__
|
__|
En dehors:
2
Dans:
_ _
_| _|
|_ _|
En dehors:
0 //both would be valid individually, but input should be a *single* digit
Dans:
_
|_|
|_|
En dehors:
1
Dans:
|
|
En dehors:
1
Dans:
__|_
|
_ |
_
|__
En dehors:
0
Il s'agit approximativement de l' inverse du nombre de transformation en motif d'affichage à 7 segments , depuis 3 ans.
0
chiffre de taille , n'est-ce pas? Sauf si vous avez trouvé un moyen de les dessiner.Réponses:
Rubis, 250
Étant donné qu'il y a tellement d'entrées invalides possibles, la seule façon de le faire était de générer tous les chiffres corrects et de vérifier si l'entrée correspond.
Je construis chaque chiffre de bas en haut, en 2 moitiés plus la ligne supérieure. Bien qu'il existe 12 possibilités (en considérant que le segment de gauche peut être activé, désactivé ou dans le cas
3
et7
complètement absent), seules 7 sont réellement présentes et un choix judicieux de l'encodage permet à toutes les informations (sauf la ligne supérieure) d'être encodées en un caractère unique.le chiffre
1
ne correspond pas vraiment au modèle et est géré séparément, utilisé pour initialiser le tableau.Non testé dans le programme de test
Cette version utilise
.
place des espaces pour des raisons de diagnostic.la source