Zainspirowany tym pytaniem, które zostało dalej zainspirowane tym , napisz program, który bierze dwie liczby całkowite i dodaje je w unikalny sposób, wykonując operację LUB na segmentach używanych do wyświetlania ich na wyświetlaczu 7-segmentowym. Dla odniesienia cyfry są reprezentowane w następujący sposób:
_ _ _ _ _ _ _ _
| | | _| _| |_| |_ |_ | |_| |_|
|_| | |_ _| | _| |_| | |_| _|
Zauważ, że 1 używa dwóch segmentów po prawej, a nie po lewej. W ten sposób można utworzyć dwa znaki specjalne, które nie są liczbami. Zobacz tabelę dodatków poniżej:
| 0 1 2 3 4 5 6 7 8 9
--+--------------------
0 | 0 0 8 8 8 8 8 0 8 8
1 | 0 1 a 3 4 9 8 7 8 9
2 | 8 a 2 a 8 8 8 a 8 8
3 | 8 3 a 3 9 9 8 3 8 9
4 | 8 4 8 9 4 9 8 Q 8 9
5 | 8 9 8 9 9 5 6 9 8 9
6 | 8 8 8 8 8 6 6 8 8 8
7 | 0 7 a 3 Q 9 8 7 8 9
8 | 8 8 8 8 8 8 8 8 8 8
9 | 8 9 8 9 9 9 8 9 8 9
Przydatne obserwacje:
- Każda cyfra plus sama się równa
- 8 plus dowolna cyfra równa się 8
- 2 plus 1, 3 lub 7 to litera „a” (musi być pisana małymi literami)
- 4 plus 7 równa się „q” lub „Q”, twój wybór
- Liczby powinny być wyrównane do prawej, więc cyfry należy dodawać od prawej do lewej. Jeśli jedna liczba ma więcej cyfr niż druga, dodatkowe cyfry na początku powinny pozostać niezmienione. Nie ma wiodących zer, chyba że liczba wynosi dokładnie 0.
- Wszystkie liczby będą wynosić 0 lub więcej. Nie musisz obsługiwać znaku „-”. (Głównie dlatego, że nie ma dobrego dopasowania do sumy „-” i „1” lub „7”.)
Twój program powinien zaakceptować 2 liczby całkowite w dowolnym wybranym formacie i wyprowadzić ciąg zawierający ich „sumę”, jeśli zostanie obliczony w ten sposób. To jest golf golfowy, więc twój program powinien być jak najmniejszy.
Przykłady:
- Wejście: 12345, 123. Wyjście: 12389
- Wejście: 88888, 42. Wyjście: 88888
- Wejście: 0, 23. Wyjście: 28
- Wejście: 120, 240. Wyjście: a80
- Wejście: 270, 42. Wyjście: 2Q8 (lub 2q8)
- Wejście: 1234567890, 1234567890. Wyjście: 1234567890
code-golf
kolmogorov-complexity
Darrel Hoffman
źródło
źródło
Q
być małe litery? Rzeczywisty kształt wyglądaq
raczej niżQ
a
Zdecydowanie powinien być niższy przypadek chociaż, ponieważA
wygląda zupełnie inaczej.Odpowiedzi:
Bash + Wspólne narzędzia Linux, 80
Uwaga:
^?
w źródle należy zastąpić znakiem 0x7f ASCII.Ciąg
s
składa się z 7 cyfr segmentu0-9, a, Q
zakodowanych przy użyciu każdego segmentu odpowiadającego bitowi znaku ASCII.h()
Funkcja transliterates numer wejściowy z dziesiętnej z kodowaniem określony przezs
, a następnie przesyła wynik jako surowego łańcucha sześciokątnym.Dwa uzyskane łańcuchy surowy heksowej
OR
ed ze sobą za pomocą zwykłego działania arytmetyczne Basha, następnie produkcję odc
„sP
polecenia jako bytestream. Ten bajt jest następnie transliterowany z powrotem do postaci dziesiętnej + a + Q i wyjścia.Zauważ też, że podczas korzystania z
<<<
konstruktora bash w funkcjih()
nowa linia jest domyślnie dołączana do przekierowanego łańcucha. To nie ma znaczenia - jest po prostu tłumaczone0x0a
na końcu każdego ciągu szesnastkowego; gdy dwie liczby szesnastkowe sąOR
edytowane razem, wynik jest nadal0x0a
w ostatnim znaku, który nie podlega transliteracji, a zatem po prostu tłumaczy z powrotem do nowej linii, która jest wyprowadzana po wyniku.Wyjście testowe:
źródło
Python 2, 155 bajtów
Wymienić
♥
zDEL
charakterem (0x7F).Wywoływanie
f("12345", "123")
wydruków12389
.źródło
%13
sztuczka działa. Oczywiście wybrałeś zestaw, który nie miał znaków poniżej 40, ale dla mojego tłumaczenia JavaScript wybrałem najkrótszy zestaw. Trzeci zestaw jest najdłuższy w JavaScript111,5,118,117,29,121,123,37,127,125
.JavaScript (ES6),
158144 bajtówOszczędność 14 bajtów przez bezwstydne kradzież
%13
sztuczki @ Lynn .źródło
Java, 170 bajtów
To jest strasznie długie ... ale to i tak Java.
Pełny program z niekluczonym kodem
Wszystkie dane wyjściowe (wszystkie zduplikowane raz)
źródło