Tugas
Diberikan array bilangan bulat positif, ganti setiap elemen dengan paritas dari jumlah elemen lainnya. Array dijamin memiliki setidaknya 2 elemen.
Definisi
- Paritas: apakah suatu angka ganjil atau genap.
Contoh
Untuk array [1,2,3,1]
:
- Ganti
1
dengan paritas2+3+1
, yaitueven
. - Ganti
2
dengan paritas1+3+1
, yaituodd
. - Ganti
3
dengan paritas1+2+1
, yaitueven
. - Ganti
1
dengan paritas1+2+3
, yaitueven
.
Keluaran: [even, odd, even, even]
Memasukkan
Array integer positif.
Anda dapat menganggapnya sebagai array yang tepat, atau sebagai string bilangan bulat positif yang dipisahkan oleh linefeed.
Anda dapat mengasumsikan bahwa array dan nilai-nilai di dalamnya berada dalam kemampuan penanganan bahasa Anda.
Keluaran
Array dua nilai yang konsisten , satu mewakili odd
, satu mewakili even
.
Anda dapat menampilkannya sebagai string yang dipisahkan oleh umpan baris dari kedua nilai.
Testcases
Input:
[1, 2, 3, 1]
[1, 2, 3, 2, 1]
[2, 2]
[100, 1001]
Output:
[even, odd, even, even]
[even, odd, even, odd, even]
[even, even]
[odd, even]
Catatan: Anda dapat memilih nilai konsisten lainnya selain odd
dan even
.
Mencetak gol
Ini adalah kode-golf . Jawaban terpendek dalam byte menang.
Celah standar berlaku.
sumber
_SḂ
JavaScript (ES6),
38 3632 bytePenggunaan
0
untuk genap dan1
ganjil.Uji
sumber
c-b&1
alih-alih(c-b)%2
eval(a.join`+`)
lebiha.reduce((x,y)=>x+y)
. Itu pintarHaskell, 20 byte
Menggunakan
True
nilai ganjil danFalse
nilai genap.Cobalah online!
Kurangi setiap elemen dari jumlah daftar dan uji apakah itu aneh.
f
berpaling ke pointfree juga memiliki 20 byte:map=<<(odd.).(-).sum
.sumber
MATL ,
5, 4 byteCobalah online!
Satu byte disimpan berkat Dennis!
Ini memberi '1' untuk ganjil dan '0' untuk genap. Penjelasan:
sumber
Alice ,
3128 byteCobalah online!
Format input tidak masalah selama bilangan bulat dipisahkan. Format output dipisahkan dengan linefeed.
Tata letaknya mungkin masih belum optimal tetapi saya belum menemukan cara untuk mempersingkat ini lebih lanjut.
Penjelasan
sumber
Pyth,
76 byte-1 Byte berkat @KZhang
Output 1 untuk ganjil, 2 untuk genap.
Cobalah!
Penjelasan
sumber
%_2
ke GCDi2_
, Anda bahkan dapat membuatd
implisit mengubah kodemi2-sQ
, menghemat satu byte. Output diubah menjadi 2 untuk genap, dan 1 untuk ganjil.05AB1E (legacy) ,
43 byteCobalah online!
sumber
D
, karena input secara implisit.Python 2 ,
3331 byte-2 byte terima kasih untuk Leaky Nun
Cobalah online!
sumber
sum(x)-z&1
alih-alih(sum(x)-z)%2
sum(x,z)%2
akan bekerjaR, 21 byte
membaca daftar dari stdin dan mengembalikan 0 untuk genap, 1 untuk ganjil. mengikat input ke variabel
n
di dalam panggilansum
alih-alih memanggilnya di luar, yaitu,n=scan();(sum(n)-n)%%2
Cobalah online!
sumber
Mathematica, 13 byte
atau
sumber
Clojure, 30 byte
Kurangi semua nilai dari setiap nilai secara bergantian, misalnya dengan input
[a b c d]
, nilai yang dihitung ke-2 adalahb - a - b - c - d
=-(a + c + d)
. Output adalahfalse
untuk genap dantrue
ganjil.Tetapi Anda sebaiknya menggunakan
+
dan menghitung setiap istilah berikutnya dua kali sehingga tidak mempengaruhi paritas.sumber
CJam , 10 byte
Ini adalah blok anonim (fungsi) yang mengambil input dari tumpukan dan menggantinya dengan output.
Cobalah online!
Penjelasan
Pertimbangkan input
[1 2 3 1]
.sumber
J , 6 byte
Cobalah online!
sumber
APL (Dyalog Unicode) ,
197 byteGolf 12 byte berkat @ Adám
Cobalah online!
sumber
Japt , 7 byte
Cobalah online!
Penjelasan
sumber
Perl 5, 31 byte
Output
1
untuk ganjil dan0
genap.sumber
perldoc perlsub
mengatakan, "Tanda tangan adalah bagian dari tubuh subrutin. Biasanya tubuh subrutin hanyalah blok kode yang diperkuat.".sub
tanpa melanggar itu.sub
, misalnya setelahsort
ataugrep
atau sebagai argumen untuk subrutin lain. Ini mungkin patut ditanyakan tentang Code Golf Meta .sub
hanya jika digunakan dalam fungsi prototipe (sort
dangrep
lebih atau kurang prototipe). Tetapi sebaliknya,sub
itu diperlukan. Apapun, golf 3 byte dengan menghilangkansub
tidak terlalu menarik.Clojure (Script), 36 byte
Output
true
untuk ganjil danfalse
genap. Output dan input keduanya adalah urutan.sumber
PHP, 50 Bytes
Versi Online
1 untuk ganjil, 0 untuk genap
Output sebagai string dipisahkan dengan
_
PHP, 72 Bytes
Output sebagai penggunaan array
array_map
sumber
?:0
tidak melakukan apa-apa.foreach($_GET as$v)echo array_sum($_GET)-$v&1,_;
C,
6862 byte1 untuk ganjil, 0 untuk genap
Detail Coba Online
sumber
Retina ,
4038 byteCobalah online! Output 1 untuk odd dan 0 untuk even. Penjelasan: Dua baris pertama menduplikasi input sekali untuk setiap angka dalam input, tetapi tanpa elemen itu sendiri. Ini menciptakan baris kosong tambahan yang kemudian dihapus. Input kemudian dikonversi dari desimal ke unary, spasi dihapus dan paritas dihitung. Bahkan paritas kemudian dikonversi menjadi nol dan hasilnya bergabung kembali ke satu baris. Sunting: Disimpan 2 byte berkat @FryAmTheEggman. Saya mencoba beberapa versi lain yang secara konseptual lebih menyenangkan tetapi terlalu banyak byte untuk diekspresikan:
Ubah semua input ke paritasnya, lalu membalik semua paritasnya jika totalnya memiliki paritas ganjil.
Menjumlahkan duplikat dari input, kemudian mengambil paritas dari segalanya, lalu membalikkan paritas jika jumlahnya ganjil, lalu menghapus jumlahnya lagi.
sumber
;
kembali ke spasi. Jika Anda meletakkan;
di awal maka Anda dapat menyimpan byte dengan menghapusnya segera alih-alih setelah itu dikonversi menjadi 0.Ohm , 4 byte
Cobalah online!
Pada dasarnya port langsung dari MATL dan 05AB1E jawaban. Penggunaan
true
untuk genap danfalse
ganjil.sumber
k, 9 byte
Outputnya adalah
1
untukodd
, dan0
bahkan untuk. Cobalah online.Dikonversi menjadi pseudocode, itu akan menjadi:
sumber
Scala , 19 byte
Cobalah online!
sumber
Brain-Flak ,
946866 byteCobalah online!
Ini sepertinya agak lama untuk tugas itu. Mungkin ada cara yang lebih nyaman untuk melakukan ini.
Penjelasan
Pertama kita menghitung jumlah tumpukan dengan:
Kami pergi melalui seluruh tumpukan menambahkan hasil itu untuk setiap elemen dan menentukan pasangan
Ini menggunakan algoritma mod 2 yang cukup keren yang saya buat untuk tantangan ini.
Ini mendorong 1 di bawah pengurangan input sampai input mencapai nol setiap kali melakukan
1-n
ke 1 yang kita tempatkan sebelumnya, itu kemudian menghapus input.sumber
Wise ,
5452 byteCobalah online!
Penjelasan
Kode ini akan jauh lebih pendek jika tidak memerlukan banyak byte untuk menukar dua elemen teratas. Catatan saat ini adalah
Sayangnya ini merupakan mayoritas kode.
Pertama kita ambil jumlah XOR dari stack
Kami kemudian XOR ini dengan setiap elemen dan elemen dengan bit terakhir memusatkan perhatian
sumber
Jawa ,
8178 byte3 byte, terima kasih kepada Kevin Cruissen
Cobalah online!
Memodifikasi array di tempat.
sumber
void f(int[]a){int s=0,i=a.length;for(int x:a)s+=x;for(;i-->0;a[i]=s-a[i]&1);}
AWK , 64 byte
Cobalah online!
Output a
0
untuk jumlah genap dan1
untuk jumlah ganjil dipisahkan oleh baris baru. Satu-satunya pemikiran yang sedikit di luar kebiasaan adalah menempatkanprint
perintah di dalam langkahfor
"kenaikan". Saya mencoba beberapa cara "pintar" untuk mencetak, tetapi mereka tidak menyimpan byte.Hanya untuk cekikikan, jika Anda tidak ingin baris baru:
yang memiliki byte-count yang sama seperti di atas, tetapi sedikit lebih tumpul.
sumber
Swift - 55 byte
Akhirnya ketukan C! Juga, 0 untuk genap, 1 untuk ganjil
Fungsi, dengan penggunaan:
g(a: [1,2,3,2,1] // => 0 1 0 1 0
Saksikan berikut ini!
sumber
(x-y)%2
denganx-y&1
Aksioma, 45 byte
tidak memeriksa jenis input, perhitungan ulang kemungkinan jumlah "a" setiap elemen ... tes
sumber
Julia 1.0 , 17 byte
Cobalah online!
sumber