Input adalah larik (setidaknya 3, maksimum 20) bilangan bulat yang berbeda. Setiap bilangan bulat lebih besar dari -1000 dan lebih kecil dari 1000.
Tugas Anda adalah mengecilkan angka dengan "memetakan secara linear" dari 0.0
menjadi 1.0
. Ini berarti angka terkecil dalam array akan dipetakan ke 0,0, terbesar ke 1,0.
Anda mendapatkan array sebagai parameter (di dalam fungsi) atau argumen stdin / program (Anda dapat memilih). Cetak hasilnya dalam format double1;double2;double3;...
. Output harus memiliki urutan yang sama dengan input .
Jika mau, Anda dapat membulatkan output menjadi 2 digit setelah titik desimal. Harus ada minimal 1 digit setelah titik desimal.
The penggunaan fungsi built-in (yang skala bawah angka-angka untuk Anda fungsi, seperti Mathematica Rescale
) adalah batasan .
Contoh:
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
(Output terakhir dibulatkan, jika tidak maka 0.0;0.0125;0.25;1.0
)
Jawaban:
CJam, 18 byte
Perhatikan bahwa penerjemah online secara keliru menyatakan
0d
sebagai0
alih-alih0.0
.Contoh dijalankan
Bagaimana itu bekerja
sumber
JavaScript, ES6, 81 byte
Terima kasih kepada @ edc65 untuk
toFixed
triknyaJalankan di Konsol Firefox terbaru.
Ini menciptakan fungsi
f
yang bisa Anda panggilsumber
If you want, you can round the output to 2 digits after the decimal point
itulah cara yang lebih sederhana menurut saya1
ke1.0
kecuali untuk apa yang saya lakukan.Python 2,
72 68 63 5655Jelas tidak sepadat jawaban lain, tapi bagaimanapun:
Contoh dijalankan:
Lama (68 karakter, ditulis dengan Python 3):
sumber
m=min(x)
.CJam,
2423 byteMasukan menjadi seperti:
Cobalah online di sini Perhatikan bahwa compiler cetak secara online
Double 0
sebagai0
saja. Jalankan di interpreter java yang mencetak dengan benar.Bagaimana itu bekerja:
sumber
0;0.5;1
bukannya0.0;0.5;1.0
.0.0
.C # 92
Berjalan di dalam LinqPad
Tes di LinqPad
Keluaran
sumber
APL (15)
(atau, tanpa kereta, juga 15 karakter :)
Ini membaca argumen dari keyboard dan mencetak hasilnya ke layar.
Penjelasan:
⎕
: membaca baris dari keyboard dan mengevaluasinya+-⌊/
: kurangi item terendah dalam array dari semua item dalam array+÷⌈/
: bagi setiap item dalam array dengan item tertinggi array2⍕
: format dengan dua tempat desimalUji:
sumber
Pyth , 18
Sekarang dengan pemformatan yang benar!
Uji:
Penjelasan:
sumber
Oktaf 25
Asumsikan input dalam
l
dan karena ini shell interaktif hasilnya dicetak secara otomatis (apakah ini diizinkan?)sumber
input
mendapatkan input pengguna dan meniru STDIN. Anda juga dapat menulis suatu fungsi. Juga, apakah ini mencetak hasilnya dalam format yang benar?APL, 31 karakter / 55 byte
Kode lama tanpa digit setelah titik desimal:
Ambil minimum vektor, ambil perbedaan antara maksimum dan minimum vektor, kurangi minimum dari setiap elemen dan bagi dengan perbedaan antara min dan maks.
Kode yang diedit untuk mencetak dua digit setelah titik desimal:
sumber
CJam,
3029 byteMengharapkan input pada suka STDIN
[5 -20 30]
.Uji di sini. (Ini akan mencetak bilangan bulat
0
dan1
tanpa titik desimal, tetapi penerjemah Java mencetak0.0
dan1.0
.)Karena bug saya tidak dapat mempersingkat
{e>}*
ke:e>
meskipun yang harus mungkin sesuai spec (yang akan menghemat 4 byte bila diterapkan untuk kedua min dan max).Penjelasan sedikit kedaluwarsa: (akan diubah kemudian)
Di akhir program, isi tumpukan dicetak secara default.
Saya yakin ada cara untuk menghemat setengah dari reshuffle tumpukan, tapi saya belum nyaman dengan CJam.
sumber
0;0.5;1
bukannya0.0;0.5;1.0
.Xojo, 179 byte
sumber
R, 60 byte
Memformat memakan banyak byte karena
0
dan1
secara default dipangkas untuk tidak menampilkan apa pun yang melewati bagian integer.sumber
Clojure 63
Tidak cukup mengikuti aturan, karena mengembalikan fraksi bukannya ganda. Jika itu tidak dapat diterima, tambahkan 7 byte
Tidak Disatukan:
Callable seperti ini:
Keluaran:
(1/2 0 1)
sumber
Ruby, 49
Penjelasan:
sumber
05AB1E , 13 byte (Tidak bersaing)
Cobalah online!
sumber
Q (31) FORMAT OUTPUT IMPROPER
memasukkan
keluaran
sumber
Perl - 60
sumber
Java 7, 149 byte
Tidak digabungkan & kode uji:
Coba di sini.
Keluaran:
sumber