Inspirowany tym postem na łamigłówkach. Spoilery dla tej układanki są poniżej.
Biorąc pod uwagę trzy dodatnie liczby całkowite jako dane wejściowe, (x, y, z)skonstruuj obejmujący zakres [x, y], połącz ze sobą ten zakres, a następnie usuń zniekoniecznie kolejne cyfry, aby uzyskać największe i najmniejsze możliwe dodatnie liczby całkowite. Zera wiodące są niedozwolone (tzn. Liczby muszą zaczynać się od [1-9]). Wypisz te dwie liczby w dowolnej kolejności.
Na przykład z posta „Zagadka” dla wprowadzenia (1, 100, 100), największa możliwa liczba to 99999785960616263646566676869707172737475767778798081828384858687888990919293949596979899100,
a najmniejsza liczba 10000012340616263646566676869707172737475767778798081828384858687888990919293949596979899100,
zgodnie z poniższą logiką z odpowiedzi Jeffa zamieszczonej tam:
- Nie możemy wpływać na długość liczby (istnieje stała liczba cyfr), więc aby zmaksymalizować wartość, bierzemy maksymalną pierwszą cyfrę, a następnie drugą cyfrę itp.
- Usuń 84 pierwsze nie-dziewiątki (pozostało 16 cyfr do usunięcia):
999995051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 - Największa liczba w ciągu następnych 17 cyfr to 7, więc odtąd następna cyfra w odpowiedzi może wynosić najwyżej 7 (nie możemy usunąć więcej niż 16 cyfr). Więc usuń 15 nie-7 ... (pozostała 1 cyfra do usunięcia):
999997585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 - Stąd następna cyfra może wynosić najwyżej 8, więc usuń jedną inną niż 8 ze środka:
99999785960616263646566676869707172737475767778798081828384858687888990919293949596979899100 - Podobna logika, ale odwrócona (tzn. Chcemy, aby wiodące
1s zamiast wiodących9s) dla najmniejszej liczby.
Oto mniejszy przykład: (1, 10, 5).
Konstruujemy zakres 12345678910i określamy, które 5cyfry możemy usunąć, pozostawiając możliwie największą liczbę. Oczywiście oznacza to, że chcemy zmaksymalizować cyfrę wiodącą, ponieważ nie możemy wpływać na długość wyjścia. Więc jeśli usuniemy 12345, zostaniemy z 678910tym i to jest największe, co możemy zrobić. Tworzenie najmniejszych jest nieco trudniejsze, ponieważ zamiast tego możemy wyciągać liczby ze środka, pozostawiając 123410możliwie najmniejsze.
Ponieważ (20, 25, 11)wynik jest raczej nudny, ponieważ 5i 1.
Wreszcie, aby wykluczyć odpowiedzi, które próbują zerować, (9, 11, 3)daje to, 91011co z kolei daje plon 91i 10jest największe i najmniejsze.
I / O i reguły
- Jeśli jest to łatwiejsze / krótsze, możesz zakodować dwa programy / funkcje - jeden dla największego, a drugi dla najmniejszego - w takim przypadku twój wynik jest sumą obu części.
- Dane wejściowe i wyjściowe można podać dowolną dogodną metodą .
- Można założyć, że dane wejściowe pasują do rodzimego typu liczb w twoim języku, jednak nie można założyć, że będzie to połączona liczba ani wynik.
- Dopuszczalny jest pełny program lub funkcja. Jeśli funkcja, możesz zwrócić dane wyjściowe zamiast je drukować.
- Standardowe luki są zabronione.
- To jest golf golfowy, więc obowiązują wszystkie zwykłe zasady gry w golfa, a wygrywa najkrótszy kod (w bajtach).
9, 11, 3że tak.