Diberikan daftar bilangan bulat positif, output apakah setiap pasangan bilangan bulat yang berdekatan di dalamnya berbagi faktor prima. Dengan kata lain, keluaran truthy jika dan hanya jika ada dua bilangan bulat tetangga di daftar adalah co-prime.
Dalam istilah lain: diberi daftar bilangan bulat positif [a 1 a 2 ... a n ] , hasilkan apakah
gcd (a 1 , a 2 )> 1 && gcd (a 2 , a 3 )> 1 && ... && gcd (a n − 1 , a n )> 1.
Daftar akan selalu mengandung setidaknya dua elemen (n ≥ 2).
Namun…
Tantangan ini juga terbatas-sumber : codepoints dalam jawaban Anda (codepage apa pun itu berada) harus memenuhi kondisi program Anda memeriksa.
Misalnya, print 2
adalah program yang valid. Sebagai daftar titik kode Unicode [112 114 105 110 116 32 50] , yang memenuhi kondisi ini: 112 dan 114 berbagi faktor 2 ; dan 114 dan 105 berbagi faktor 3 , dll.
Namun, tidakmain
dapat muncul dalam program yang valid (maaf!), Karena titik kode Unicode dan , yaitu 109 dan 97 , adalah coprime. (Syukurlah, kiriman Anda tidak harus berupa program lengkap!)m
a
Program Anda tidak diizinkan mengandung codepoint 0.
Uji kasus
Benar:
[6 21] -> 1
[502 230 524 618 996] -> 1
[314 112 938 792 309] -> 1
[666 642 658 642 849 675 910 328 320] -> 1
[922 614 530 660 438 854 861 357 477] -> 1
Falsy:
[6 7] -> 0
[629 474 502 133 138] -> 0
[420 679 719 475 624] -> 0
[515 850 726 324 764 555 752 888 467] -> 0
[946 423 427 507 899 812 786 576 844] -> 0
Ini adalah kode-golf : kode terpendek dalam byte menang.
%)+/5;=CGIOSYaegkmq\DEL
.print 2
itu valid, tetapi);=ae
menjadi yang utama sangat sulit, saya tidak mempertimbangkan itu ... Saya ingin tahu apakah sesuatu seperti Haskell dapat bersaing?Jawaban:
MATL , 14 byte
Ini menghasilkan vektor kolom non-kosong dari angka bukan nol sebagai kebenaran, atau vektor yang mengandung setidaknya nol entri sebagai kepalsuan.
Cobalah online!
Verifikasi semua kasus uji . Kode footer berisi
if
cabang untuk menguji kebenaran / kepalsuan.Karena MATL menggunakan ASCII, kode sumber dikodekan sebagai
yang memenuhi persyaratan .
Penjelasan
sumber
Haskell ,
103100 byteEDIT:
d<-fz
penjaga untuk menggabungkan dan mempersingkat dua baris terakhir.f
adalah fungsi utama, yang mengambil daftar bilangan bulat dan mengembalikan aBool
.Perhatikan bahwa dua yang pertama
ԁ
(hanya) adalah karakter Unicrill Cyrillic (Komi), dan ada karakter tab sebelum yang pertama.Cobalah online! atau mengujinya sendiri.
Bagaimana itu bekerja
f
adalah fungsi utama. Yang dilakukannya hanyalah membungkus argumennyaԁ
dalam daftar tunggal (karena nilai ASCII utama)
membuat kurung lebih canggung daripada kurung kotak) dan memanggilnyazb
dengan argumen dummy (fungsi Haskellid
kebetulan memiliki karakter yang tepat untuk menyesuaikannya. sini).=]
tidak mungkin dengan ASCII biasa, sehingga argumen tersebut dinamai dengan karakter Unicode 2-byteCYRILLIC SMALL LETTER KOMI DE (ԁ)
, nilai codepoint3*7*61=U+0501
, yang cocok dengan semua itu dan[
.f fz|bf<-fz=zb[bf]fz
.zb
mengambil dua argumen, daftar tunggal yang elemennya adalah daftar nyata dari angka yang berulang, dan argumen bodohfz
hanya perlu untuk mendapatkanz
sebelum fungsi itu=
.z
dipanggil dengan dua elemen pertama (bernamah
danp
), dan jika itu kembaliTrue
,zb
berulang pada ekorp:l
daftar.zb
kembaliTrue
. Karena=
perlu diikuti oleh karakterz
, cara paling sederhana untuk melakukan ini adalah dengan menggunakan panggilanz
fungsi yang dikenal kembaliTrue
.z
mengambil dua argumen dan menghitung pembagi umum terbesar mereka secara rekursif menggunakan pengurangan (setiap divisi integer atau fungsi gcd lain yang relevan tidak tersedia), mengembalikanTrue
jika lebih besar dari satu.0
, dengan argumen kedua adalah gcd. Pada baris ini argumen kedua juga disebutkanz
. Karakternya1
canggung di sini sehinggaz^0
digunakan untuk mendapatkan yang nomor satu.f
lebih kecil dari yang keduafz
, mereka bertukar danz
berulang.z
berulang (juga bertukar argumen, meskipun itu hanya untuk menghindari tanda kurung.)sumber
05AB1E , 8 byte
Kode
Menggunakan penyandian 05AB1E , yang memberi kami daftar poin kode berikut:
Cobalah online! atau Verifikasikan kode sumber!
Penjelasan
Karena operator gcd (
¿
) memiliki titik kode utama saya harus mencari cara lain untuk memeriksa coprimality:sumber
Ò
lebihf
?Sekam , 8 byte
Untuk input yang sebenarnya mengembalikan bilangan bulat positif, untuk Falsy mengembalikan 0
Cobalah online! dan Diuji pada codepoint sendiri
Gunakan codepage Husk
Penjelasan
sumber
Ṡ
? Saya melihatnya di dokumen juga di kolom "ketik" pada halaman perintah dan tidak bisa memahaminya, jadi ingin mencarinya sehingga saya bisa mempelajarinya.Ṡ
dalam sintaksis Haskell. Ini diterjemahkan secara kasar keṠ(f,g,x) = f(g(x),x)
dalam bahasa yang lebih umum.`Ṡ g f x = Ṡ f g x = f (g x) x
Japt ,
87 byteUji secara online!
Poin kode:
Penjelasan
sumber
Jelly ,
119 byteDisimpan 2 byte berkat @ Jonathan Allan .
Cobalah online!
Jelly memiliki halaman kode sendiri dan codepoint masing-masing karakter
Ini menguji untuk nomor non-coprime dengan memeriksa jika
lcm(a, b) != a*b
. Mungkin ada solusi yang lebih pendek karena saya hanya memfilter untuk karakter dengan codepoint bahkan.Penjelasan
sumber
,
demikianlah yang dapat Anda lakukanæln,P¥ð2\
untuk dua lebih sedikit. Sunting: Saya menghilangkan jejaknyaP
, membuatnya kurang: p)TI-BASIC, 38 byte
TI-BASIC adalah tokenized menjadi token satu atau dua byte, seperti yang tercantum di sini .
Bagian tersulit dari solusi ini adalah:
Tanda koma adalah bilangan prima (43), memaksa saya untuk mengelilinginya dengan kelipatan 43 (dalam hal ini token V, yaitu 86).
Gcd (token adalah bilangan prima besar (47881), yang berarti tidak bisa digunakan sama sekali.
Token untuk program ini adalah:
Penjelasan
sumber
Pyth , 15 byte
Cobalah di sini atau Lihat Test Suite.
Ini adalah upaya kolaborasi antara Erik the Outgolfer dan Mr. Xcoder . Mengembalikan nilai yang tidak konsisten (daftar tidak kosong) untuk kebenaran, dan daftar kosong untuk falsy.
Nilai-nilai ASCII
Yang memiliki faktor-faktor berikut:
Penjelasan
Tanpa persyaratan sumber terbatas , ini akan menjadi versi
75-byte yang menyelesaikan tugas yang sama (-2 terima kasih kepada FryAmTheEggman ):Penjelasan
sumber
Q
s pada akhirnya?.b
memiliki variabel arities, dan menggunakan input implisit berarti akan memilih yang terendah (1) alih-alih yang dimaksudkan (2).