Dane wejściowe to tablica (co najmniej 3, maksymalnie 20) różnych liczb całkowitych. Każda liczba całkowita jest większa niż -1000 i mniejsza niż 1000.
Twoim zadaniem jest zmniejszanie liczb poprzez „liniowe mapowanie” ich od 0.0
do 1.0
. Oznacza to, że najmniejsza liczba w tablicy zostanie zmapowana na 0,0, największa na 1,0.
Dostajesz tablicę jako parametr (wewnątrz funkcji) lub argumenty stdin / program (możesz wybrać). Wydrukuj wynik w formacie double1;double2;double3;...
. Dane wyjściowe muszą mieć tę samą kolejność co dane wejściowe .
Jeśli chcesz, możesz zaokrąglić wynik do 2 cyfr po przecinku. Musi być co najmniej 1 cyfra po przecinku.
Wykorzystanie wbudowanych funkcji (funkcje, które skala dół numerów dla Ciebie, takich jak Mathematica Rescale
) jest niedozwolone .
Przykłady:
Input Output
[5,-20,30] 0.5;0.0;1.0
[1,2,3,4,5] 0.0;0.25;0.5;0.75;1.0
[0,5,100,400] 0.0;0.01;0.25;1.0
(Ostatni wynik jest zaokrąglany, w przeciwnym razie byłby 0.0;0.0125;0.25;1.0
)
Odpowiedzi:
CJam, 18 bajtów
Zauważ, że tłumacz online błędnie przedstawia
0d
jako0
zamiast0.0
.Przykładowy przebieg
Jak to działa
źródło
JavaScript, ES6, 81 bajtów
Dzięki @ edc65 za
toFixed
lewęUruchom go w najnowszej konsoli Firefox.
To tworzy funkcję,
f
którą możesz wywołać jakźródło
If you want, you can round the output to 2 digits after the decimal point
tak mi się wydaje1
się1.0
z wyjątkiem tego, co zrobiłem.Python 2,
72 68 63 5655Oczywiście nie tak zwięzłe jak inne odpowiedzi, ale w każdym razie:
Przykładowy przebieg:
Stare (68 znaków, napisane w języku Python 3):
źródło
m=min(x)
.CJam,
2423 bajtyDane wejściowe powinny wyglądać tak:
Wypróbuj online tutaj. Pamiętaj, że kompilator online drukuje tylko
Double 0
jako0
. Uruchom interpreter Java, który drukuje poprawnie.Jak to działa:
źródło
0;0.5;1
zamiast0.0;0.5;1.0
.0.0
.C # 92
Działa w LinqPad
Testuj w LinqPad
Wynik
źródło
APL (15)
(lub, bez pociągów, także 15 znaków :)
Odczytuje argument z klawiatury i drukuje wynik na ekranie.
Wyjaśnienie:
⎕
: przeczytaj wiersz z klawiatury i oceń go+-⌊/
: odejmij najniższy element w tablicy od wszystkich elementów w tablicy+÷⌈/
: podziel każdy element w tablicy przez najwyższy element w tablicy2⍕
: format z dwoma miejscami po przecinkuTest:
źródło
Pyth , 18 lat
Teraz z poprawnym formatowaniem!
Test:
Wyjaśnienie:
źródło
Oktawa 25
Zakłada, że dane wejściowe są wprowadzone,
l
a ponieważ jest to powłoka interaktywna, wynik jest drukowany automatycznie (czy jest to dozwolone?)źródło
input
jednak uzyskać dane od użytkowników i naśladować STDIN. Możesz także napisać funkcję. Ponadto, czy ten wynik drukuje w prawidłowym formacie?APL, 31 znaków / 55 bajtów
Stary kod bez cyfr po przecinku:
Weź minimum wektora, weź różnicę między maksimum i minimum wektora, odejmij minimum od każdego elementu i podziel przez różnicę między min i maks.
Zmodyfikowany kod, aby wydrukować dwie cyfry po przecinku:
źródło
CJam,
3029 bajtówOczekuje danych wejściowych na STDIN jak
[5 -20 30]
.Sprawdź to tutaj. (Spowoduje to wydrukowanie liczby całkowitej
0
i1
bez kropki dziesiętnej, ale interpreter Java drukuje0.0
i1.0
.)Spowodowany błędu nie można skrócić
{e>}*
do:e>
choć powinno to być możliwe, jak na spec (który uratuje 4 bajty, gdy stosuje się zarówno do min i max).Nieco przestarzałe wyjaśnienie: (zmieni się później)
Na końcu programu zawartość stosu jest drukowana domyślnie.
Jestem pewien, że istnieje sposób na zaoszczędzenie połowy przetasowania stosu, ale nie jestem jeszcze tak zadowolony z CJam.
źródło
0;0.5;1
zamiast0.0;0.5;1.0
.Xojo, 179 bajtów
źródło
R, 60 bajtów
Formatowanie zjada wiele bajtów, ponieważ
0
i1
domyślnie są przycinane, aby nie wyświetlały niczego poza częścią całkowitą.źródło
Clojure 63
Nie do końca przestrzega zasad, ponieważ zwraca ułamki zamiast podwójnych. Jeśli to nie do przyjęcia, dodaj 7 bajtów
Nie golfowany:
Można wywołać w ten sposób:
Wynik:
(1/2 0 1)
źródło
Ruby, 49
Wyjaśnienie:
źródło
05AB1E , 13 bajtów ( niekonkurencyjny )
Wypróbuj online!
źródło
Q (31) NIEPRAWIDŁOWY FORMAT WYJŚCIA
Wejście
wynik
źródło
Perl - 60
źródło
Java 7, 149 bajtów
Kod niepoznany i testowy:
Wypróbuj tutaj.
Wynik:
źródło