Memasukkan
- Daftar antara 1 dan 255 bilangan bulat positif (inklusif), masing-masing dalam kisaran 1 hingga 2 32 - 1 (inklusif).
- Format input Anda tidak perlu identik dengan kasus uji.
- Input tanpa angka nol di depan harus diterima.
- Input dengan nol terkemuka tidak harus diterima.
- Anda dapat menggunakan pembatas apa pun yang Anda inginkan di antara bilangan bulat.
- Integer dapat diwakili oleh string tetapi digit individu dari integer tertentu harus berdekatan.
- Anda dapat memilih untuk menggunakan basis apa pun untuk input (termasuk biner dan unary), asalkan outputnya juga ada di basis itu.
Keluaran
- Bilangan bulat tunggal.
- Keluaran harus tidak memiliki angka nol di depan.
- Output harus dalam basis yang sama dengan input.
- Output dapat dihitung dengan cara apa pun yang Anda inginkan tetapi harus sesuai dengan hasil perhitungan berikut:
Menghitung biplex
- Bit dari representasi biner diberi nomor dari kanan mulai dari nol, jadi bit i ada di kolom yang mewakili 2 i .
- The i th bitsum adalah jumlah dari i th bit dari representasi biner dari masing-masing nomor masukan.
- The maksimum bitsum adalah nilai tertinggi yang diambil oleh bitsums.
- The bitsum minimum adalah termurah non-nol nilai yang diambil oleh bitsums.
- The i th digit dari representasi biner dari output adalah:
- 1 jika i th bitsum sama dengan bitsum maksimum atau minimum bitsum.
- 0 sebaliknya.
Contoh yang berhasil
Contoh ini menggunakan biner untuk input dan output.
Input: 100110
1101110
1100101
_______
Bitsums: 2301321
Output: 101101
Bitum maksimum adalah 3 dan bitum minimum adalah 1, sehingga output memiliki 1s di mana-mana bitum adalah 3 atau 1, dan 0s di tempat lain.
Uji kasus
Uji kasus dalam bentuk:
Input => Output
Kasus uji dalam biner:
[1] => 1
[10] => 10
[1, 10, 101] => 111
[11111111111111111111111111111111] => 11111111111111111111111111111111
[10010010010010010010010010010010, 10101010101010101010101010101010, 11011011011011011011011011011011] => 11100011100011100011100011100011
[10001011100010100110100101001001, 10110000111110010000111110111010, 1101110001101101011010010100101, 1010101010001011101001001010101] => 11
Kasus uji yang sama dalam desimal:
[1] => 1
[2] => 2
[1, 2, 5] => 7
[4294967295] => 4294967295
[2454267026, 2863311530, 3681400539] => 3817748707
[2341103945, 2969112506, 1849078949, 1430639189] => 3
Papan peringkat
Terima kasih untuk Cuplikan Papan Peringkat Martin
Operator bernama biplex, kependekan dari binary plane extrema, setelah diskusi dalam obrolan .
code-golf
base-conversion
binary
trichoplax
sumber
sumber
You may choose to use any base for input and output (including binary and unary), provided they are both in the same base
. Jadi ya,Jawaban:
Jelly, tidak bersaing
14 byte Jawaban ini tidak bersaing karena tantangan mendahului pembuatan Jelly.
Cobalah online!
Bagaimana itu bekerja
sumber
Pyth,
2625 byteCobalah online: Demonstrasi atau Test Suite
Penjelasan
sumber
_B
Penggunaan brilianJ,
3130242321 byteIni adalah kata kerja monadik diam-diam yang mengambil daftar bilangan bulat desimal dan mengembalikan bipleks desimal mereka.
Terima kasih kepada @Zgarb untuk sarannya, yang menyimpan 4 byte secara langsung dan membuka jalan untuk 2 lagi!
Terima kasih kepada @randomra untuk bermain golf 2 byte lagi!
Uji kasus
Bagaimana itu bekerja
sumber
Minkolang 0,10 ,
10979 byteInput dan output dalam desimal. Coba di sini.
Penjelasan
Versi lama:
Coba di sini!
Penjelasan
Inti dari itu adalah bahwa fitur array banyak digunakan (
a A
) untuk menyimpan bitumen, yang minimum dan maksimum ditemukan, kemudian1
s dan0
s dikeluarkan dengan tepat, dengan dumping leading0
di dua tempat.sumber
Brainfuck , 619 byte
Jawaban pertama terlalu lama di sini, jadi saya pikir saya akan melakukan yang baik!
Apakah ... Apakah saya menang?
Program ini mengharapkan baris baru (ASCII
10
) setelah setiap angka biner, dan membutuhkan spasi (ASCII32
) di bagian akhir.Tes berjalan:
(Baris baru ditambahkan setelah setiap kasus dengan
++++++++++.
ditambahkan di akhir program)Penjelasan
Masih dalam proses, tetapi lambat. Karena kekurangan waktu, saya baru saja menyalin catatan yang saya buat saat menulis program ini, yang akan cukup untuk penjelasan untuk saat ini:
sumber
CJam, 27 byte
Mengambil input sebagai daftar gaya-10 CJam dasar. Uji di sini. Atau, jalankan semua test case (skrip membuang output yang diharapkan dan mengonversi format input seperlunya).
Penjelasan
sumber
1
dalam bit tersebut yang sesuai dengan bidang bit tempat minima dan maxima terjadi.JavaScript (ES6),
215185176 bytePemakaian
Penjelasan
sumber
f=(a)=>{}
=f=a=>{}
2) Anda dapat mengubahfor...in
loop menjadifor...of
loop, menyimpan beberapa byte:for(i in a)for(b=a[i]...
=for(i of a)for(b=i...
,for(i in s)r=s[i],d=...
=for(r of s)d=...
3) Bitwise ATAU|
otomatis berubah menjadi 1 dan false ke 0, jadio+=r==q|r==d?1:0;
sama dengano+=r==q|r==d;
.return parseInt(o,2)
ke:return+('0b'+o)
s[l-d-1]=(s[l-d-1]|0)
dengans[T=l-d-1]=(s[T]|0)
. Untuk mencukur lebih banyak 2, gantib=i.toString(2),l=b.length,d=l
dengand=l=(b=i.toString(2)).length
.Julia, 141 byte
Tidak Disatukan:
sumber
Simplex v.0.7 , 38 bytes
Simpl ified komentar. Masukan dalam Biner, tidak ada penerjemah yang bekerja saat ini. Semoga komentarnya cukup.
sumber
Oktaf, 50 byte
Contoh:
sumber
@(a)
mendefinisikan fungsi anonim yang mengambil vektor inputa
.[""
memaksa output menjadi sebuah string (saya percaya).(b=sum(a-48))
mendefinisikanb
menjadi vektor yang mengandung bitum.b==max(b)
akan menjadi vektor yang memiliki1
di tempat tertentu jika bitum ada maksimum, dan0
sebaliknya.b(b>0)
adalah vektor dari setiap elemenb
lebih besar dari0
, jadib==min(b(b>0))
adalah vektor yang mengandung1
ketika bitum adalah minimum, dan0
sebaliknya. Maka itu ATAU bersama, dan+48
untuk ASCII.function o=b(i)
(baris baru)r=sum(i>48);o=['' (r==max(r)|r==min(r))+48];
JavaScript (ES6), 158
Fungsi dengan parameter array numerik, mengembalikan nomor. Dengan jumlah byte yang sama itu bisa mendapatkan parameter array string (mengandung basis 2 representasi) dan mengembalikan basis 2 string - hanya memindahkan
.toString(2)
di akhir setelahr
.sumber
Haskell,
198182178161 karakterSaya masih pemula dalam bermain golf. Hanya 80 reputasi yang berasal dari jawaban.
Bagaimana cara kerjanya.
Alih-alih padding, saya membalikkan array kemudian saya tambahkan menggunakan yang ditentukan pengguna (&). Saya tidak menggunakan foldl1 (zipWith (+)) yang lebih pendek karena zipWith akan menghapus item superflous. Kemudian saya menemukan maksimum dan bukan nol minimum, yang juga membutuhkan fungsi yang ditentukan pengguna. Kemudian saya mencocokkan item dengan maksimum dan bukan nol minimum, 1 jika cocok, 0 jika tidak cocok. Kemudian kita membalikkan dan mengubahnya menjadi angka biner.
MELAKUKAN:
Data.List
sumber
k
,c
hanya digunakan sekali, jadi tidak perlu dimasukkan ke dalamwhere
klausa. Menggunakannya secara langsung:...||(x==a#b)...
. Mengapa kurung kurawal? Dalaml
:concat.map show
adalahconcatMap show
atau bahkan lebih baik>>=
:l=(>>=show).v...
. (Catatan: ada juga=<<
yang melakukan hal yang sama, tetapi dengan argumen terbalik:)(show=<<).v...
.>>=
dan=<<
bekerja dalam konteks daftar di sini dan melakukan hal-hal yang berbeda dalam fungsi atau konteks lainnya.[]
dalam kasus terakhir dengan&
dan#
dengan_
:b&_=b
dan_#l=l
.(x==b)||(x==c)
(atau(x==b)||(x==a#b)
ketika Anda menghapusc
) dapat digantikan olehelem x[b,c]
(resp:)elem x[b,a#b]
.u=maximum
dank a=m(\x->fromEnum$elem x[u a,a#u a])a
harus bekerja._&a=a
, itu harus tetap[]&a=a
, kalau tidak daftar pertama hilang jika yang kedua kosong. Gunakan_
hanya dalam kasus terakhir - mungkin itu kesalahan Anda.Python 3,
181126122 byte(Saya mengambil sebagian besar pemotongan byte byte karena sudah agak konyol.) 21 byte off berkat Sp3000 !
Sedikit kurang golf:
Input diharapkan dalam biner dengan hanya spasi yang memisahkan angka. Output dalam biner juga.
sumber
Javascript,
154150 byteTerima kasih untuk metode edc65 untuk perhitungan min / max, ini mempersingkat kode saya dengan 4 byte.
Penjelasan
sumber
f=i=>(m=0,r=[],i.map(n=>{for(k=32;k--;n=n/2|0)r[k]=~~r[k]+n%2}),r.map(n=>m+=m+(n==Math.min(...r.filter(x=>x))|n==Math.max(...r))),m)
ShapeScript , 186 byte
Bahasa yang penting dan tidak berguna untuk operator yang penting dan tidak berguna.
I / O dalam biner. Program ini mengharapkan setiap nomor pada baris terpisah, masing-masing berakhir dengan linefeed.
Cobalah online!
Uji kasus
sumber
APL, 27 byte
Ini adalah fungsi monadik yang mengambil daftar bilangan bulat desimal dan mengembalikan biplex desimal mereka.
Cobalah online di demo ngn / apl .
Bagaimana itu bekerja
sumber
Bahasa Wolfram, 113 byte
Versi ini mengambil input dari jendela sembulan, dengan angka yang dimasukkan dalam bentuk "{x, y, z, ...}", (tanpa tanda kutip).
Memasukkan:
Keluaran:
Mengambil input dalam Manipulasi dinamis sebagai string dari bentuk "{x, y, z}" dengan x, y, dan z sebagai bilangan bulat basis 10 (dengan atau tanpa angka nol di depan). Outputnya juga di base 10.
Ada cara lain untuk memasukkan ini dengan cara yang akan menghemat jumlah karakter, tapi saya pikir solusi ini adalah penggunaan elegan dari GUI dinamis yang melakukan perhitungan
Jika Anda ingin menjalankan ini di cloud, kami dapat menggunakan CloudDeploy:
Penyebaran Cloud membawa jumlah karakter hingga 256 namun ...
Input ke FormPage juga merupakan string dari bentuk "{x, y, z}" dengan x, y, dan z menjadi bilangan bulat basis 10.
Saya menggunakan cloud ini sendiri dan Anda dapat mencobanya di https://www.wolframcloud.com/objects/97b512df-64f8-4cae-979b-dba6d9622781
sumber
Python 3, 197
Dibutuhkan dalam ruang angka biner terbatas.
Versi tidak disatukan:
sumber
C #, 255
Program yang lengkap, dimasukkan sebagai argumen baris perintah - dipisahkan dengan spasi - dalam desimal.
Lebih mudah dibaca:
sumber
Ruby, 127 byte
Mengambil array sebagai input.
sumber
CoffeeScript, 194 byte
Mengambil input sebagai angka biner yang dipisahkan koma, menghasilkan dalam biner.
Cobalah.
sumber
GolfScript, 46 byte
Cobalah online di Web GolfScript .
Uji kasus
sumber
C ++, 192 byte
Menerima input array integer 32 bit yang tidak ditandatangani, dan sejumlah item dalam array itu.
Tidak Disatukan:
sumber