7-segmentowe cyfry mogą być reprezentowane w ASCII za pomocą _|
znaków. Oto 1
cyfry wielkości :
_ _ _ _ _ _ _ _
| _| _| |_| |_ |_ | |_| |_| | |
| |_ _| | _| |_| | |_| _| |_|
Większe rozmiary powstają przez proporcjonalne wydłużenie każdego segmentu. Oto kilka cyfr wielkości 3.
___ ___ ___ ___ ___ ___ ___
| | | | | | | | | |
| | | | | | | | | |
|___| |___ | |___ ___| | | |___|
| | | | | | | | | |
| | | | | | | | | |
|___| |___| | ___| ___| |___| ___|
Cel
W tym wyzwaniu masz napisać program / funkcję, która może przyjąć jedną cyfrę jako dane wejściowe i określić jej rozmiar. Haczyk: jeśli dane wejściowe nie są prawidłową cyfrą, Twój program powinien wypisać dane 0
.
To jest golf golfowy , wygrywa najmniej bajtów.
Możesz napisać program lub funkcję, która może odbierać cyfrę jako STDIN lub argument i wypisywać / zwracać wartość.
Cyfry będą dostarczane jako ciąg wieloliniowy, wypełniony minimalną ilością spacji końcowej potrzebnej do utworzenia idealnego prostokąta. Końcowy znak nowej linii jest opcjonalną częścią wprowadzania. Nie będzie niepotrzebnych wiodących pól.
Gdy zostanie przekazany znak inny niż cyfra, nadal będzie się składał ze _|
znaków, będzie wypełniony prostokątem i nie będzie zawierał niepotrzebnych spacji wiodących. Nie będzie pustych linii. Nie będziesz musiał radzić sobie z pustymi danymi wejściowymi.
Wyjście powinno być pojedynczą nieujemną liczbą całkowitą, z opcjonalnym końcowym znakiem nowej linii. Jeśli wejście nie jest poprawną cyfrą o dowolnym rozmiarze, wyjdź 0
. W przeciwnym razie wypisz rozmiar.
Oto przydatny przewodnik po szerokościach i wysokościach każdej cyfry dla danego rozmiaru 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
Przykłady we / wy
W:
__
|
__|
|
__|
Na zewnątrz:
2
W:
|
|
|
Na zewnątrz:
0 //because it is of an invalid height. Either 1 char too short or tall.
W:
| |
| |
| |
|____|
|
|
|
|
Na zewnątrz:
4
W:
___
|
|___
| |
|___|
Na zewnątrz:
0 //1 char too wide
W:
_
|_|
| |
Na zewnątrz:
0 //it's not a digit
W:
__
|
|__
|
__|
Na zewnątrz:
2
W:
_ _
_| _|
|_ _|
Na zewnątrz:
0 //both would be valid individually, but input should be a *single* digit
W:
_
|_|
|_|
Na zewnątrz:
1
W:
|
|
Na zewnątrz:
1
W:
__|_
|
_ |
_
|__
Na zewnątrz:
0
Jest to w przybliżeniu odwrotność liczby przekształceń w 7-segmentowy wzór wyświetlania sprzed 3 lat.
0
cyfra wielkości , prawda? Chyba że wymyśliłeś sposób na ich narysowanie.Odpowiedzi:
Ruby, 250
Biorąc pod uwagę, że istnieje wiele możliwych nieprawidłowych danych wejściowych, jedynym sposobem na to było wygenerowanie wszystkich poprawnych cyfr i sprawdzenie, czy dane wejściowe są zgodne.
Każdą cyfrę buduję od dołu do góry, w 2 połówkach i górnej linii. Chociaż istnieje 12 możliwości (biorąc pod uwagę, że lewy segment może być włączony, wyłączony lub w przypadku
3
i7
całkowicie nieobecny), tylko 7 jest obecnych, a ostrożny wybór kodowania umożliwia zakodowanie wszystkich informacji (z wyjątkiem górnej linii) w pojedynczy znak.cyfra
1
tak naprawdę nie pasuje do wzoru i jest obsługiwana osobno, służąc do inicjalizacji tablicy.Niegolfowany w programie testowym
Ta wersja używa
.
zamiast spacji ze względów diagnostycznych.źródło