Anda diberi array A dari n bilangan bulat yang benar-benar positif, dengan n ≥ 2 .
Tugas Anda adalah memetakan setiap entri A i ke:
- 1 jika A j mod A i aneh untuk setiap j sedemikian sehingga 1 ≤ j ≤ n dan j ≠ i
- 2 jika A j mod A i bahkan untuk setiap j sedemikian sehingga 1 ≤ j ≤ n dan j ≠ i
- 0 sebaliknya (paritas campuran)
Contoh
Untuk A = [73, 50, 61] , kami memiliki:
- 50 mod 73 = 50 , 61 mod 73 = 61 → tercampur
- 73 mod 50 = 23 , 61 mod 50 = 11 → semuanya ganjil
- 73 mod 61 = 12 , 50 mod 61 = 50 → semuanya genap
Oleh karena itu, output yang diharapkan adalah [0, 1, 2] .
Aturan
- Anda dapat menggunakan tiga nilai berbeda (dari jenis apa pun) alih-alih 0 , 1 dan 2 selama mereka konsisten. Silakan tentukan pemetaan Anda jika Anda tidak menggunakan yang dijelaskan dalam tantangan.
- Jika ada keraguan tentang itu, nol adalah genap .
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang!
Uji kasus
[ 1, 2 ] --> [ 2, 1 ]
[ 3, 4 ] --> [ 1, 1 ]
[ 1, 2, 3 ] --> [ 2, 1, 0 ]
[ 4, 4, 4 ] --> [ 2, 2, 2 ]
[ 73, 50, 61 ] --> [ 0, 1, 2 ]
[ 941, 459, 533 ] --> [ 1, 0, 0 ]
[ 817, 19, 928, 177 ] --> [ 1, 2, 1, 1 ]
[ 312, 463, 336, 729, 513 ] --> [ 0, 2, 0, 0, 0 ]
[ 53, 47, 33, 87, 81, 3, 17 ] --> [ 0, 0, 0, 1, 0, 2, 0 ]
[1]
,[0, 1]
dan[1, 1]
pekerjaan?Jawaban:
Python 2 ,
686766 byte-1 byte terima kasih kepada Tn. Xcoder
-1 byte terima kasih kepada ovs
Cobalah online!
Kembali
1,0,2
sebagai gantinya0,1,2
.sumber
(k<1)
dengan0**k
untuk -1 byte.Jelly , 9 byte
Mengembalikan [1, 1], [0, 1], [1] bukannya 0, 1, 2 .
Cobalah online!
Bagaimana itu bekerja
sumber
‘ṬUḄ
denganQ€Ḅ
untuk menyimpan byte?Q€
dapat kembali[0, 1]
atau[1, 0]
.[1]
,,[1,1]
dan[0,1]
tiga nilai berbeda jadi%þœ-€0Ḃ‘Ṭ
harus dapat diterima untuk 9. EDIT - ah saya melihat Anda mengajukan pertanyaan yang tepat ini :)¹-Ƥ%"%2‘Ṭ
MATL , 12 byte
Kegunaan ini
0
,-1
,1
bukan0
,1
,2
masing-masing.Cobalah online!Atau verifikasi semua kasus uji .
Penjelasan
sumber
C (gcc) ,
118114979291 byteempatdua puluh satu byte berkat Peter Cordes ; menyarankan untuk menggunakan pemetaan nilai output yang berbeda;[0 1 2] ~ [3 2 1]
.[0 1 2] ~ [ ]
.for(i=0;i<n;i++,putchar...
untukfor(i=~0;++i<n;putchar...
.Cobalah online!
sumber
f(I,7)
menimpa elemen pertamaI[]
(A[]
dalam f ()) dengan salah satu argumen yang Anda gunakan sebagai penduduk lokal.f()
mengasumsikan bahwa arg diteruskan pada stack oleh penelepon, tetapi penelepon tidak tahu itu, dan apa yang sebenarnya ada di stack di atas alamat pengirim adalahA[0]
. (mis. UB ini menyebabkant
danA[0]
memiliki alamat yang sama). Bagaimanapun, ini hanya UB dalam fungsi pengujian Anda di TIO.execlp("/usr/bin/objdump", "objdump", "-drwC", "-Mintel", argv[0], 0);
main untuk mendapatkan asm dari TIO's gcc 7.2.1, yang tidak persis cocok dengan Arch Linux gcc 7.2.1 saya. Setelah mengubah pembongkaran itu kembali menjadi sumber asm untuk fungsi panggilan, saya dapat mem-repro secara lokal di dalam gdb dan mengkonfirmasi dengan tepat apa yang terjadi.o|=1<<(A[j]%A[i]%2)
tanpa perlu decoding mewah untuko
.o|=1<<...
alih-alih sesuatu di sepanjang bariso|=1<<(t=...
.Mathematica,
574948 byteIni mengembalikan:
False.True
untuk 0 (campuran)True.True
untuk 1 (semua ganjil)False.False
untuk 2 (semuanya)Cobalah online!
Berikut alternatif yang sedikit lebih panjang (49 byte):
Yang ini kembali:
1
untuk 0 (campuran)-1
untuk 1 (semua ganjil)0
untuk 2 (semuanya)Cobalah online!
sumber
Merah , 101 byte
Cobalah online!
Pengembalian
1 0
untuk campuran,1
untuk ganjil dan0
genapsumber
JavaScript (ES6), 46 byte
Mengembalikan -1 (datar), 1 (tidak datar), dan 0 (bercampur).
Bagaimana itu bekerja:
Itu
d
akumulator akan:!a[d+1]
== false,!d
== 1,false - 1
== -1 )!a[d+1]
== true,!d
== 0,true - 0
== 1 )!a[d+1]
== false,!d
== 0,false - 0
== 0 )Kasus uji:
Tampilkan cuplikan kode
sumber
J ,
2720 byteCobalah online!
Menggunakan [1 0] [1] [0] bukan 0 1 2
Penjelasan:
|/~
- membuat tabel dengan sisa:2|
aneh atau genap? :<@~.@}:@\:"1
- sortir, letakkan elemen terakhir (selalu nol), simpan elemen unik dan kotak setiap baris:sumber
2/:~@:|"1]|1]\.]
mengembalikan daftar pasangan.Ruby ,
5856 byteMengembalikan [0, 1], [1], [0] bukannya 0, 1, 2 (yaitu [0] untuk semua genap, [1] untuk semua ganjil, dan [0, 1] untuk campuran).
Cobalah online!
sumber
Perl, 38 byte
Termasuk
+3
untuk-p
Output 1 untuk semua genap, 2 untuk semua ganjil, 3 untuk campuran
sumber
Bersih ,
956563 byteCobalah online!
Sebagai lambda, mengambil
[Int]
dan kembali[Int]
, memetakan ke:0
: Campuran1
: semua genap-1
: semua anehsumber
Perl 5 ,
7169 +1 (-a
) = 70 byteCobalah online!
sumber
Pari / GP , 42 byte
Mengembalikan
[0, 0], [0, 1], [1, 0]
bukan0, 1, 2
.Cobalah online!
sumber
Java 8,
9189 bytetruetrue
bukan2
untuk genapfalsefalse
bukan1
untuk ganjiltruefalse
bukan0
untuk campuranPenjelasan:
Cobalah online.
sumber
Clojure, 82 byte
Contoh lengkap dengan konversi keluaran:
sumber