Wprowadzenie
Wyzwanie polega na znalezieniu największej liczby usuwającej y cyfr z pierwotnej liczby n, która ma x cyfr.
Zakładając y=2 n=5263 x=4
, że możliwe liczby usuwające y = 2 cyfry to:
[52, 56, 53, 26, 23, 63]
Zatem największa liczba 63
musi być wynikiem dla tego przykładu.
Inna logika wyglądałaby następująco: za każdym y szukaj od lewej do prawej cyfry, która z prawej jest następna, a następnie usuń ją, w przeciwnym razie, gdy nie będzie pasujących, usuń ostatnie cyfry y .
Za pomocą y=3 n=76751432 x=8
wyjaśnienia:
y=3
76751432
-^------ remove 6 because right next 7 is greater
y=2
7751432
---^--- remove 1 because right next 4 is greater
y=1
775432
-----^ the search failed, then remove last y digits
result = 77543
Obie metody wyjaśnione powyżej działają .. oczywiście możesz też użyć innej metody :)
Wyzwanie
Liczba n nie będzie miała więcej niż 8 cyfr, a y zawsze będzie większe niż zero i niższe niż x .
Aby uniknąć ścisłego formatu wejściowego, możesz użyć wartości: y n x
tak, jak wolisz: jako parametrów w funkcji, surowego wejścia lub w inny prawidłowy sposób. Po prostu nie zapomnij powiedzieć, jak to zrobiłeś w swojej odpowiedzi.
Dane wyjściowe powinny być liczbą wynikową.
To jest gra w golfa , wygrywa najkrótsza odpowiedź w bajtach.
Przykład wejścia i wyjścia
Znowu: nie musisz być zbyt surowy :)
4 1789823 7 -> 983
1 54132 5 -> 5432
3 69314 5 -> 94
2 51794 5 -> 794
Edytować
Zmieniłem kolejność wprowadzania, aby odzwierciedlić fakt, że niektórzy z was mogą nie potrzebować wartości x do rozwiązania problemu. x jest teraz wartością opcjonalną.
źródło
x
jest to rodzaj bezużytecznej informacji.x
danych wejściowych może skrócić kod. (Przykład: moja odpowiedź Julii.)Odpowiedzi:
A-Ray ,
97 bajtówMój nowy język! Według meta jest to dozwolone, ale jeśli nie zostanie to zaakceptowane, usunę je.
Wyjaśnienie:
Przykładowe dane wejściowe (liczba, x, y):
Wydajność:
Możesz to przetestować za pomocą pliku .jar podanego w łączu github.
źródło
MATL , 10 bajtów
Używa wersji (9.2.1) języka / kompilatora, która jest wcześniejsza niż to wyzwanie.
Pobiera trzy wejścia ze standardowego wejścia w tej kolejności: długość ciągu, liczba usuniętych znaków, ciąg.
Przykład
EDYCJA : Wypróbuj online! (kod w linku
XN
zamiast tegoXn
musi odpowiadać zmianom języka po tym wyzwaniu;o
nie jest też potrzebny)Wyjaśnienie
(To wciąż kosztuje 2 bajty więcej niż powinno, ponieważ
nchoosek
funkcje Octave i Matlab zachowują się inaczej. Naprawiono w następnej wersji kompilatora.)Odpowiedź na oryginalne wyzwanie (surowsze wymagania wejściowe): 16 bajtów
Korzysta z bieżącej wersji (9.2.1) języka / kompilatora.
Przykład
Wyjaśnienie
(Powinno to być o 4 bajty mniej, ale potrzebuję tego,
wow...c
ponieważnchoosek
funkcja Octave , w przeciwieństwie do Matlaba, nie działa z wprowadzaniem znaków. Zostanie naprawiona dla następnej wersji kompilatora.)źródło
wow
Twój kod jest zdumiony swoją własną krótkością;)Pyth -
1198 bajtówPakiet testowy .
źródło
2 5263 4
. :Japt, 19 bajtów
Wypróbuj online!
Jak to działa
źródło
Brachylog , 30 bajtów
Ponieważ OP złagodziło ograniczenia we / wy, oczekuje to
[Number, NumberOfDigitsRemoved]
jako danych wejściowych i zwraca odpowiedź jako dane wyjściowe, npbrachylog_main([1789823,4], Z).
.Wyjaśnienie
źródło
Python 3, 69 bajtów
Definiuje to anonimową funkcję przyjmującą wszystkie trzy argumenty. Korzystając w pełni z zasady, że „możesz używać wartości:
y n x
tak, jak wolisz”, postanowiłem zaakceptowaćy
ix
jako liczby całkowite in
jako ciąg. Zwracana wartość to ciąg znaków.Na wszelki wypadek, gdy ktoś uważa, że przesadza z regułami, ta wersja przyjmuje wszystkie dane wejściowe jako liczby całkowite i ma 74 bajty.
I tylko dla kopnięć, napisałem również wersję z dwoma argumentami, pobierającą
y
in
z wiersza poleceń i wypisującą wynik naSTDOUT
. Ma 92 bajty.źródło
ES6, 70 bajtów
Zwraca wynik liczbowy, chyba że
y
jest fałszem in
jest łańcuchem. Przekonałem się, że niewłaściwe wykonanie rekurencji nadal działa (moje rozwiązanie nie dotyczy prawidłowej rekurencji).Również mój pierwszy kod golfowy, w którym używam wszystkich trzech znaków cudzysłowu (choć nie wszystkie jako cudzysłowy), co uniemożliwiło mi trywialne obliczenie długości.
źródło
Julia,
12895 bajtówJest to funkcja, która przyjmuje trzy wartości jako parametry i zwraca liczbę całkowitą.
Nie golfowany:
źródło
Haskell, 64 bajty
Przykład użycia:
(4#7)"1789823"
->"983"
.Oryginalny numer
n
jest traktowany jako ciąg znaków. (Nie jestem pewien, czy przesadzam z zasadą „brak ścisłego formatu wejściowego”, ale w pierwszej wersji wymagane było wprowadzenie ciągu znaków (!)).Jak to działa: zrób listę wszystkich podsekwencji
n
, zachowaj te z długościąx-y
i wybierz maksimum.źródło
Rubinowy, 40 bajtów
Jest to anonimowa funkcja, która przyjmuje
y
ix
jako liczby całkowite in
jako ciąg, i zwraca ciąg. Możesz to nazwać na przykład w ten sposóbi wróci
"63"
.źródło
MATLAB 40 bajtów
Test:
źródło
Pyth, 45 bajtów
spróbuj tutaj
źródło
JavaScript (ES6), 78
Funkcja rekurencyjna z 2 argumentami yid.
y
może być liczbą lub łańcuchem,d
musi być łańcuchem.Przed zmianą wyzwania było 107 - ... ze wszystkimi osobliwościami wejścia / wyjścia ...
Test
źródło
n-1
powinna byćy-1
.