Dua angka dianggap bersahabat jika jumlah pembagi yang tepat dari yang pertama sama dengan angka kedua, jumlah pembagi yang tepat angka kedua sama dengan angka pertama, dan angka pertama dan kedua tidak sama.
Mari kita definisikan S(x)
sebagai jumlah pembagi yang tepat x
. 220 dan 284 bersahabat karena S(220) = 284
dan S(284) = 200
.
Tugas Anda adalah, secara tidak mengejutkan, untuk menentukan apakah dua angka yang dimasukkan cocok atau tidak. Input akan berupa bilangan bulat positif dan Anda dapat menampilkan dua nilai yang berbeda dan konsisten untuk damai atau tidak.
Ini adalah urutan OEIS A259180
Ini adalah kode-golf sehingga kode terpendek menang.
Uji kasus
input, input => output
220, 284 => 1
52, 100 => 0
10744, 10856 => 1
174292, 2345 => 0
100, 117 => 0
6, 11 => 0
495, 495 => 0
6, 6 => 0
code-golf
math
number
decision-problem
caird coinheringaahing
sumber
sumber
Jawaban:
Jelly , 5 byte
Tautan monadik yang mengambil daftar dua bilangan bulat yang mengembalikan 1 jika merupakan pasangan angka damai dan 0 sebaliknya.
Cobalah online!
Bagaimana?
sumber
;wÆṣỊ
danœ¿ÆṣḊ
juga skor 5 byte.ÆṣQU⁼
- mungkin ada 4 licik di suatu tempat ...Python 2 ,
656366 byte-2 byte terima kasih kepada Tn. Xcoder
Cobalah online!
sumber
Python 2,
7167 byte-4 byte terima kasih kepada xnor
+9 byte berkat caird coinheringaahing
sebagian terinspirasi oleh [jawaban ini]
sumber
def f(x): return
dalam bytecount Anda.map
denganlambda
ekspresi hampir selalu lebih lama dari daftar pemahaman.Brain-Flak , 178 byte
Cobalah online!
sumber
Haskell , 53 byte
-2 byte terima kasih kepada BMO. -1 byte terima kasih kepada Ørjan Johansen.
Cobalah online!
Tidak tergabung dengan UniHaskell dan
-XUnicodeSyntax
sumber
a/=b
ke dalam pemahaman daftar.J,
51 28 2724 Bytes-Banyak byte berkat @cole
-1 byte lebih banyak berkat @cole
Cobalah online!
sumber
-:[:|.(1#.i.*0=i.|])”0
atau sesuatu yang mirip dengannya. Jumlah pembagi (kata kerja paling kanan) diambil dari komentar mile pada pertanyaan jumlah pembagi kami. Sunting: dengan tanda kutip yang berbeda sejak saya di ponsel.~:/*]
.~.-:
... (cocok dengan input dedpulicated), yang saya curi dari jawaban Jelly.-:
dalam kode Anda, memperbarui bytecount, dan menambahkan tautan TIO. Semoga kamu baik-baik saja. Jangan ragu untuk memutar kembali jika tidak (tetapi solusi sebelumnya memiliki kesalahan domain yang ingin Anda perbaiki).>:@#.~/.~&.q:-:~:*+/
JavaScript (ES6), 53 byte
Mengambil input dalam sintaks currying
(a)(b)
. Pengembalian0
atau1
.Demo
Tampilkan cuplikan kode
Bagaimana?
Kami menggunakan fungsi g untuk mendapatkan jumlah pembagi yang tepat dari bilangan bulat yang diberikan.
Kami pertama kali menghitung g (a) dan membandingkannya dengan b . Jika g (a) = b , kami menghitung g (b) dan membandingkannya dengan a . Jika tidak, kita menghitung g (1) , yang memberikan 0 dan tidak mungkin sama dengan a .
Kami juga memeriksa bahwa a tidak sama dengan b .
sumber
Python 3, 84 byte
Solusi mudah. d merangkum pembagi (n% i <1 mengevaluasi hingga 1 jika aku membagi n). a ^ b bukan nol jika a! = b. LHS dari ketimpangan dengan demikian adalah 0 jika angkanya tidak bersahabat dan> 0 sebaliknya.
sumber
Ruby ,
64 60 5958 byteCobalah online!
sumber
R , 67 byte
Cobalah online!
Pengembalian
TRUE
untuk damai,FALSE
untuk tidak.sumber
Perl 6 , 53 byte
Cobalah online!
Mengambil input sebagai daftar dua angka.
sumber
PowerShell ,
8796 byteCobalah online!
Mengambil input
$a,$b
. Menentukanfilter
(di sini setara dengan fungsi) yang mengambil input$n
. Di dalam kami membuat rentang dari1
ke$n-1
, menarik mereka yang merupakan pembagi,-join
mereka bersama-sama+
dan mengirimkannya keInvoke-Expression
(mirip denganeval
).Akhirnya, di luar filter, kami cukup memeriksa apakah jumlah pembagi dari satu input sama dengan yang lain dan sebaliknya (dan validasi input untuk memastikan mereka tidak sama). Nilai Boolean itu ditinggalkan di jalur pipa dan hasilnya tersirat.
sumber
Pyth, 12 byte
Mengambil input sebagai daftar.
Cobalah online
Penjelasan
sumber
05AB1E ,
87 byteCobalah online!
sumber
üQ_sÑOüQ&
pasti lol.Batch, 127 byte
Keluaran
1
jika parameternya bersahabat. Berfungsi dengan mengurangkan semua faktor dari jumlah angka input untuk setiap nomor input, dan jika kedua hasilnya nol maka angka tersebut bersahabat.sumber
APL (Dyalog Unicode) ,
45 38 44 36 3520 byteCobalah online!
Infix Dfn, diperbaiki untuk kasus input yang sama.
Terima kasih @riel untuk 8 byte; @cole untuk 1 byte; @ Adám selama 15 byte.
Bagaimana?
@ Adám juga membantu saya dengan fungsi
22byte tacit yang setara dengan Dfn:Cobalah online!
Bagaimana?
sumber
each
es daripada menggandakan kode{(⍺≠⍵)∧⍵⍺≡+/¨¯1↓¨(0=⍺⍵|⍨⍳¨⍺⍵)/¨⍳¨⍺⍵}
. Saya belum melalui logikaMerah , 117 byte
Cobalah online!
sumber
Java (OpenJDK 9) , 87 byte
Cobalah online!
sumber
SNOBOL4 (CSNOBOL4) ,
153146 byteCobalah online!
Menentukan fungsi
A
yang menghitung kedamaian dari dua angka, mengembalikan1
untuk kedamaian dan string kosong untuk tidak. Algoritmanya sama dengan jawaban saya sebelumnya jadi saya tinggalkan penjelasan lama di bawah ini.sumber
Pyth , 13 byte
+4 byte untuk memeriksa apakah nilainya berbeda, saya merasa seperti itu seharusnya tidak menjadi bagian dari tantangan ...
Hampir bisa dipastikan banyak bermain golf
Cobalah online!
sumber
APL + WIN,
4954414035bytesDitulis ulang untuk menolak input integer yang sama
Anjuran untuk input layar dari vektor dua bilangan bulat.
sumber
APL NARS, 38 byte, 18 karakter
11π⍵ menemukan jumlah pembagi ⍵ di 1..⍵; perhatikan bahwa pertanyaannya ingin (11π⍵) -⍵ dan di APLsm
ujian
sumber
Japt ,
71210 byteMengambil input sebagai array dari 2 angka.
Cobalah
[6,11]
.sumber
Keempat (gforth) ,
9186 byteCobalah online!
Keempat (gforth) Tidak Ada Lokal, 94 byte
Versi lebih "Forthy" yang tidak menggunakan variabel lokal
Cobalah online!
sumber
Brachylog , 9 byte
Cobalah online!
Mengambil input sebagai daftar dan keluaran melalui keberhasilan atau kegagalan.
sumber
Keempat (gforth) , 80 byte
Refactored solusi reffu ini .
Cobalah online!
Bagaimana itu bekerja
sumber