To wyzwanie przynosi ci prawdziwa (i tragiczna) inspiracja. Ostatnio wiersz liczb na mojej klawiaturze był nieco sporadyczny. Klucze 1-9
działają czasami - ale innym razem nie dają rezultatu. Jako zapalony programista jest to okropne! (Widzisz ten wykrzyknik? W ten sposób wiesz, że teraz działają.) Nie tylko często potrzebuję samych liczb, ale symboli!@#$%^&*(
są również całkowicie nieskuteczne w połowie czasu! Jako programista języka C, zamiast oderwać się od mojego napiętego harmonogramu szkicowania kodu w celu naprawy laptopa, byłem bardziej zainteresowany obejściem problemu. W ciągu ostatnich kilku tygodni powoli wszystkie literały liczbowe w moim kodzie zostały zamienione na szesnastkowe, aby nie musiałem szukać liczb do skopiowania i wklejenia. Jednak niektóre cyfry nie są łatwe do wpisania bez klawiszy 1-9
. Na przykład liczby 1
nie można zapisać tak po prostu w systemie szesnastkowym, i postanowiłem zastąpić 1
s w moim kodzie 0xF - 0xE
. Jedyne klucze, które są dotknięte są 1-9
, więc utrzymanie pełnego wykorzystania symboli, takich jak +
, -
i /
. Nie mogę jednak używać mnożenia ani nawiasów, ponieważ*
i (
często są zepsute. To prowadzi do twojego wyzwania.
Wkład
Liczba całkowita, n
do stdin lub odpowiednika twojego języka. Jeśli chcesz, liczba całkowita może być poprzedzona lub uzupełniona nową linią lub innym znakiem spacji. Alternatywnie możesz otrzymać dane wejściowe za pomocą argumentu wiersza poleceń.
Twój program powinien poprawnie reagować na negatywne dane wejściowe i być w stanie obsłużyć co najmniej 32-bitowe liczby całkowite ze znakiem.
Wydajność
Twój program powinien wypisać, w pewnej możliwej do zaobserwowania formie, najkrótszy (zapisany spacjami) możliwy sposób zapisania liczby n
jako sumy, różnicy lub podziału jednej lub więcej wartości szesnastkowych. Jest więcej niż jeden sposób rozwiązania tego problemu i nie ma wymogu, aby faworyzować jakiekolwiek wyjście o równej długości w stosunku do jakiegokolwiek innego.
Dane wyjściowe powinny mieć postać, w A % A % A...
której A
następuje wartość szesnastkowa, 0x
zawierająca tylko cyfry A-F a-f
, i %
jeden z symboli -+/
. Opiszmy /
dzielenie całkowite, a nie zmiennoprzecinkowe.
(Należy pamiętać, że wyniki powinny wynikać z n
oceny najpierw podziałów, od lewej do prawej, a następnie dodawania i odejmowania, od lewej do prawej, jak to jest w konwencji).
Przypadki testowe
Wejście wyjście
1
0xF - 0xE
(lub0xF-0xE
lub0xB-0xA
lub0xd - 0xc
lub0xF/0xF
)15
0xF
255
0xFF
30
0xF + 0xF
Punktacja i zasady
To jest golf golfowy. Twój wstępny wynik to liczba bajtów w pliku źródłowym.
NIE możesz używać żadnych cyfr 1-9
w swoim źródle.
MOŻESZ używać symboli !@#$%^&*(
w swoim źródle, ale każdy z nich ma karę +20 do twojego wyniku.
Twój program może zostać zastąpiony przez funkcję, która bierze n
pod uwagę argument, o ile funkcja ta generuje jakąś formę danych wyjściowych czytelnych dla człowieka. Wartość zwracana przez twoją funkcję NIE jest liczona jako wynik.
Standardowe luki są niedozwolone.
Najniższy wynik wygrywa! Powodzenia!
Czy zrobiłem coś głupiego pod względem formatowania / zadawania pytań / przejrzystości? Daj mi znać! To jest moje pierwsze zgłoszenie do tej strony!