Die Eingabe ist ein Array von (mindestens 3, maximal 20) verschiedenen Ganzzahlen. Jede Ganzzahl ist größer als -1000 und kleiner als 1000.
Ihre Aufgabe ist es, die Zahlen zu verkleinern, indem Sie sie linear von 0.0
bis zuordnen 1.0
. Dies bedeutet, dass die kleinste Zahl im Array auf 0,0 abgebildet wird, die größte auf 1,0.
Sie erhalten das Array als Parameter (innerhalb einer Funktion) oder als stdin / program-Argumente (Sie können wählen). Drucken Sie das Ergebnis im Format aus double1;double2;double3;...
. Die Ausgabe muss dieselbe Reihenfolge wie die Eingabe haben .
Wenn Sie möchten, können Sie die Ausgabe auf 2 Nachkommastellen runden. Nach dem Dezimalpunkt muss mindestens eine Ziffer stehen.
Die Verwendung von integrierten Funktionen (Funktionen, die die Zahlen für Sie verkleinern, z. B. Mathematik Rescale
) ist nicht zulässig .
Beispiele:
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
(Die letzte Ausgabe ist gerundet, sonst wäre es 0.0;0.0125;0.25;1.0
)
Antworten:
CJam, 18 Bytes
Beachten Sie, dass der Online-Interpreter fälschlicherweise
0d
als0
anstelle von darstellt0.0
.Beispiellauf
Wie es funktioniert
quelle
JavaScript, ES6, 81 Bytes
Danke an @ edc65 für den
toFixed
TrickFühren Sie es in der neuesten Firefox-Konsole aus.
Dadurch wird eine Funktion erstellt,
f
die Sie gerne aufrufen könnenquelle
If you want, you can round the output to 2 digits after the decimal point
Das ist der einfachere Weg, den ich denke1
,1.0
außer was ich getan habe.Python 2,
72 68 63 5655Offensichtlich nicht so prägnant wie andere Antworten, aber trotzdem:
Probelauf:
Alt (68 Zeichen, geschrieben in Python 3):
quelle
m=min(x)
.CJam,
2423 BytesEingabe sei wie:
Probieren Sie es hier online aus. Beachten Sie, dass der Online-Compiler nur
Double 0
als druckt0
. Führen Sie den Java-Interpreter aus, der korrekt druckt.Wie es funktioniert:
quelle
0;0.5;1
statt0.0;0.5;1.0
.0.0
.C # 92
Wird in LinqPad ausgeführt
Test in LinqPad
Ausgabe
quelle
APL (15)
(oder ohne Züge auch 15 Zeichen :)
Dies liest das Argument von der Tastatur und druckt das Ergebnis auf den Bildschirm.
Erläuterung:
⎕
: Lesen Sie eine Zeile von der Tastatur und werten Sie sie aus+-⌊/
: Subtrahieren Sie das niedrigste Element im Array von allen Elementen im Array+÷⌈/
: Teilen Sie jedes Element im Array durch das höchste Element des Arrays2⍕
: Format mit zwei DezimalstellenPrüfung:
quelle
Pyth , 18
Jetzt mit korrekter Formatierung!
Prüfung:
Erläuterung:
quelle
Oktave 25
Angenommen, die Eingabe erfolgt
l
und da es sich um eine interaktive Shell handelt, wird das Ergebnis automatisch gedruckt (ist dies zulässig?)quelle
input
Benutzereingaben erhalten und STDIN nachahmen. Sie können auch eine Funktion schreiben. Gibt dies auch das Ergebnis im richtigen Format aus?APL, 31 Zeichen / 55 Bytes
Alter Code ohne Nachkommastellen:
Nehmen Sie das Minimum des Vektors, nehmen Sie die Differenz zwischen dem Maximum und dem Minimum des Vektors, subtrahieren Sie das Minimum von jedem Element und dividieren Sie durch die Differenz zwischen min und max.
Bearbeiteter Code zum Drucken von zwei Ziffern nach dem Dezimalpunkt:
quelle
CJam,
3029 BytesErwartet die Eingabe auf STDIN wie
[5 -20 30]
.Testen Sie es hier. (Dies gibt eine Ganzzahl
0
und1
ohne Dezimalpunkt aus, aber der Java-Interpreter druckt0.0
und1.0
.)Aufgrund eines Fehlers kann ich nicht verkürzen
{e>}*
,:e>
obwohl dies gemäß der Spezifikation möglich sein sollte (was 4 Bytes sparen würde, wenn es sowohl auf min als auch auf max angewendet wird).Etwas veraltete Erklärung: (wird später geändert)
Am Ende des Programms wird der Stapelinhalt standardmäßig gedruckt.
Ich bin mir sicher, dass es eine Möglichkeit gibt, die Hälfte der Stapelumbildung zu sparen, aber ich bin mit CJam noch nicht so zufrieden.
quelle
0;0.5;1
statt0.0;0.5;1.0
.Xojo, 179 Bytes
quelle
R, 60 Bytes
Durch die Formatierung werden aufgrund von
0
und1
standardmäßig viele Bytes verbraucht, sodass nach dem ganzzahligen Teil nichts mehr angezeigt wird.quelle
Clojure 63
Befolgen Sie die Regeln nicht ganz, da es Brüche statt Doppel zurückgibt. Wenn dies nicht akzeptabel ist, fügen Sie 7 Bytes hinzu
Ungolfed:
So aufrufbar:
Ausgabe:
(1/2 0 1)
quelle
Ruby, 49
Erläuterung:
quelle
05AB1E , 13 Bytes (nicht konkurrierend)
Probieren Sie es online aus!
quelle
Q (31) IMPROPER OUTPUT FORMAT
Eingang
Ausgabe
quelle
Perl - 60
quelle
Java 7, 149 Bytes
Ungolfed & Testcode:
Probieren Sie es hier aus.
Ausgabe:
quelle