Sebuah urutan grafis adalah urutan bilangan bulat positif setiap yang menunjukkan jumlah tepi untuk node dalam grafik sederhana . Misalnya urutan 2 1 1
menunjukkan grafik dengan 3 node satu dengan 2 tepi dan 2 dengan satu koneksi.
Tidak semua urutan adalah urutan grafik. Misalnya 2 1
bukan urutan grafis karena tidak ada cara untuk menghubungkan dua node sehingga salah satu dari mereka memiliki dua sisi.
Tugas
Anda akan mengambil urutan bilangan bulat dengan metode apa pun yang masuk akal . Ini termasuk, tetapi tidak terbatas pada , array bilangan bulat dan ukurannya, daftar tertaut bilangan bulat yang tidak ditandatangani, dan vektor ganda. Anda dapat berasumsi bahwa tidak akan ada nol pada input. Anda juga dapat berasumsi bahwa input diurutkan dari paling tidak ke terhebat atau terhebat ke yang terkecil.
Anda harus menampilkan apakah urutannya adalah urutan grafik atau tidak. Nilai sebenarnya jika itu nilai salah jika tidak.
Tujuan
Ini adalah kode-golf tujuannya adalah untuk meminimalkan jumlah byte dalam program Anda
Testcases
Diurutkan terbesar ke paling tidak
-> True
3 3 3 2 2 2 1 1 1 -> True
3 3 2 2 1 1 -> True
3 3 2 -> False
8 1 1 1 1 1 1 1 1 -> True
1 1 1 1 -> True
1 1 1 -> False
9 5 4 -> False
sumber
0
s untuk urutan kosongJawaban:
Mathematica, 25 byte
Ya, builtin lain. (Mengambil input sebagai daftar bilangan bulat positif.) Membutuhkan pemuatan
Combinatorica
paket.sumber
Python 2 (kode keluar), 53 byte
Cobalah online!
Keluaran melalui kode keluar.
Menggunakan versi algoritma Havel-Hakimi. Berkali-kali mengurangi elemen terbesar
k
dan elemen terbesark
ke-10 (tidak termasukk
dirinya sendiri), yang sesuai untuk menetapkan batas antara dua simpul dengan derajat tersebut. Berakhir dengan sukses ketika daftar menjadi nol semua. Kalau tidak, jika ada indeks di luar batas, gagal dengan kesalahan. Nilai negatif apa pun yang dibuat juga pada akhirnya menyebabkan kesalahan di luar batas.sumber
CJam (20 byte)
Test suite online termasuk beberapa tes tambahan yang saya tambahkan untuk menangkap bug dalam beberapa upaya saya.
Ini adalah blok anonim (fungsi) yang mengambil array bilangan bulat di tumpukan dan daun
0
atau1
di tumpukan. Diasumsikan bahwa input diurutkan naik.Array input mungkin tidak kosong, tetapi mungkin mengandung angka nol, sesuai dengan jawaban OP atas permintaan saya tentang masalah input kosong.
Pembedahan
Ini mengikuti jawaban OP dalam mengimplementasikan algoritma Havel-Hakimi .
sumber
Python 2 , 108 byte
Ini implementasi saya dengan Python. Saya yakin itu bisa dikalahkan oleh pegolf atau ahli matematika yang lebih berpengalaman. Ini mengimplementasikan algoritma Havel-Hakimi.
Cobalah online!
sumber
[2,1,1]
kembaliTrue
tetapi[1,1,2]
kembali0
- EDIT: hanya melihat bahwa spec Anda mengatakan Anda dapat menganggap itu diurutkan (saya telah melihat test case9 4 5
).Haskell ,
102 98 9594 byteCobalah online! Penggunaan:,
f [3,3,2,2,1,1]
mengembalikanTrue
atauFalse
. Mengasumsikan bahwa inputtidak mengandung nol dandiurutkan dalam urutan menurun, sebagaimana diizinkan dalam tantangan.Penjelasan:
Sunting: Ini sepertinya mengikuti Havel-Hakimi yang disebutkan dalam jawaban lain, meskipun saya tidak tahu algoritma ini ketika menulis jawabannya.
sumber
length r < x
tidak sepenuhnya benar karena[1,0]
akan mengembalikan true, tetapi tidak ada grafik sederhana dengan 2 node dengan satu dan nol tepi.Jelly , 12 byte
Tautan monadik yang menerima daftar yang menghasilkan
1
jika jawabannya konsisten sebaliknya0
.Cobalah online! Atau lihat test-suite .
Bagaimana?
sumber
05AB1E ,
2625 byteCobalah online!
Penjelasan
sumber
JavaScript (ES6),
82 8076 byteTerima kasih untuk produk ETH karena telah menghemat banyak byte!
Pemakaian
Keluaran
sumber
map((a,b)=>b<$?a-1:a)
denganmap(a=>a-($-->0))
untuk menyimpan 4 byte.R , 20 byte
Mathematica bukan satu-satunya bahasa dengan built-in! ;-)
The
igraph
paket harus diinstal. Mengambil input sebagai vektor bilangan bulat.sumber
Ruby , 90 byte
Diterjemahkan dari pertanyaan ini yang ternyata merupakan duplikat dari ini. Menggunakan Havel-Hakimi karena itulah yang disebutkan dalam pertanyaan itu.
Cobalah online!
sumber
05AB1E , 19 byte
Port of Jonathan Allan menjawab Jelly , jadi pastikan untuk membesarkan hatinya !!
Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
Stax ,
1412 byteJalankan dan debug itu
Program ini menangani input yang kosong dan tidak disortir.
sumber