{}
adalah set kosong. Anda dapat menggunakan ()
atau []
jika Anda memilih.
Kami tidak akan mendefinisikan "set" dengan ketat, tetapi set semua memenuhi properti berikut:
Set mengikuti struktur matematika yang biasa. Inilah beberapa poin penting:
- Set tidak dipesan.
- Tidak ada set yang berisi dirinya sendiri.
- Elemen-elemen ada dalam satu set atau tidak, ini boolean. Oleh karena itu elemen set tidak dapat memiliki multiplisitas (yaitu elemen tidak dapat di set beberapa kali.)
- Elemen himpunan juga merupakan himpunan dan
{}
merupakan satu-satunya elemen primitif.
Tugas
Tulis program / fungsi yang menentukan apakah dua set sama.
Memasukkan
Dua set yang valid melalui stdin atau argumen fungsi. Format input longgar karena alasan.
Beberapa input yang valid adalah:
{} {{}}
{{},{{}}} {{{{{},{{}}}}}}
{{},{{},{{}}}} {{{},{{}}},{{{{{},{{}}}}}}}
Input tidak valid:
{{} {} Brackets will always be balanced.
{{},{}} {} Set contains the same element twice
Keluaran
Nilai kebenaran jika inputnya sama, salah jika sebaliknya.
Uji kasus
Kiriman Anda harus menjawab dengan benar untuk semua input yang valid, bukan hanya untuk kasus uji. Ini dapat diperbarui kapan saja.
Benar:
{} {}
{{},{{}}} {{{}},{}}
{{},{{},{{{}},{}}}} {{{{},{{}}},{}},{}}
Falsy:
{} {{}}
{{},{{},{{{}},{}}}} {{{{}}},{},{{}}}
{{},{{}},{{{}}},{{},{{}}}} {}
Mencetak gol
Aturan tambahan
Aturan tambahan telah ditambahkan yang melarang semua jenis iterable yang tidak terurut sama sekali. Mereka terlalu umum dan meremehkan tantangan ini terlalu banyak. Jangan ragu untuk meninggalkan jawaban yang melanggar ini, mohon buat indikasi bahwa jawaban itu dibuat sebelum peraturan berubah.
==
dalam Julia, 2 byte;frozenset.__eq__
dengan Python, 16 byte; dll.).See the comments for an explanation.
Tolong jangan lakukan ini. Komentar mudah berubah dan hilang dengan mudah, jadi sutff penting masuk dalam postinganJawaban:
CJam, 11 byte
Coba di sini.
CJam, 13 byte
Coba di sini.
sumber
Jelly , 6 byte
Cobalah online! atau verifikasi semua kasus uji .
Bagaimana itu bekerja
sumber
Brachylog , 8 byte
Ini mengharapkan tanda kurung di Input dan Output.
Sebagai contoh:
Penjelasan
sumber
Pyth, 9 byte
Format input: gunakan
[]
sebagai ganti{}
.Suite uji
sumber
Mathematica, 16 byte
Fungsi tanpa nama yang mengharapkan daftar yang berisi kedua set, misalnya
Kami menggunakan
//@
(MapAll
) untuk mengurutkan set di setiap level dan kemudian menegaskan hasilnya sama.sumber
JavaScript (ES6), 42 byte
Menerima input menggunakan
[]
misf([[],[[]]],[[[]],[]])
. Bekerja dengan mengubah array menjadi string dan kemudian menyortirnya dari dalam ke luar.0
dan1
digunakan karena mereka lebih pendek dari'['
dan']'
, jadi misalnyag([[[]],[]])
adalah001,00111
yang mewakili[[],[[]]]
.sumber
0+
ada di sana?0+
dan yang+1
saya dapatkan hanyalah koma.f=
, saya tidak memasukkannya dalam hitungan byte dan saya terlalu malas untuk mengedit posting hanya untuk itu.Python 2, 49 byte
Misalnya, memanggil fungsi anonim
g
:sumber
g([[],[[],[]],[[],[[]]],[[]],[[[]]]], [[[],[]],[[[]],[]],[[]],[[[]]],[]])
kembaliFalse
, tetapi set sama. Itu harus diperbaiki dengan memetakan sebelum menyortir.Prolog (SWI) , 37 byte
Cobalah online!
Mengambil input sebagai daftar bersarang, yaitu dengan tanda kurung siku bukan kurung kurawal. Awalnya, ini
X+Y:-sort(X,M),sort(Y,N),maplist(+,M,N).
, tapi kemudian saya mencoba menerjemahkan jawaban Fatalize's Brachylog v1 dan ternyata 3 byte lebih pendek.Ini sebenarnya dapat menangani kurung kurawal sebagai gantinya, selama 23 byte lebih:
Prolog (SWI) , 60 byte
Cobalah online!
*
di sini mengkonversi (bukan kosong, makaX=Y;
) istilah penjepit di sisi kanan ke daftar elemen istilah kemudian mengurutkannya ke sisi kiri.Karena kedua argumen
+
telah melalui*
, menempatkansort
di*
menyimpan 7 byte lebih dari menggunakanpermutation
di+
.Dan akhirnya, inilah versi yang menangani daftar input yang mungkin memiliki elemen duplikat, yang menginspirasi saya untuk menulis solusi di Prolog:
Prolog (SWI) , 57 byte
Cobalah online!
Pada dasarnya,
X/Y
menyatakan bahwa X adalah himpunan bagian dari Y, dengan menyatakan bahwa untuk setiap elemen X, ada elemen yang sama dengan Y, jadiX/Y,Y/X
nyatakan bahwa X dan Y adalah himpunan yang sama.sumber
APL (NARS2000), 4 byte
⍦
adalah operator multiset, yang memodifikasi fungsi untuk memperlakukan argumen mereka sebagai set alih-alih daftar≡
adalah fungsi ekivalensi, yang mengembalikan Boolean yang menunjukkan jika argumen benar-benar setara dalam nilai dan bentukMengenai aturan tambahan: Perhatikan bahwa jawaban ini tidak menggunakan set tipe data yang tidak berurutan, tetapi hanya daftar normal (yang mungkin berisi beberapa elemen identik). Itu hanya memperlakukan mereka sebagai set.
Jumlah byte adalah 4 karena NARS2000 menggunakan UCS-2 secara eksklusif.
sumber
Julia,
363532 byteInput adalah array bersarang baik
{}
sintaks (usang) atauAny[]
.Cobalah online!
sumber
SETL, 1 byte
Mengambil set sebagai argumen kiri dan kanan.
Perhatikan bahwa ini TIDAK mematuhi aturan tambahan yang melarang tipe data yang tidak berurutan.
sumber
Brachylog v2, 3 byte
Cobalah online!
Membawa satu set melalui variabel input dan set lainnya melalui variabel output. Berhasil jika set sama dan gagal jika tidak.
Seperti jawaban Prolog utama saya, sebuah terjemahan dari jawaban Fatalize's Brachylog v1 (yang saya pikir bisa diturunkan ke golf
p:0a
?).sumber
𝔼𝕊𝕄𝕚𝕟, 7 karakter / 9 byte
Try it here (ES6 browsers only).
Penjelasan
sumber
Haskell, 77 byte
sumber
==
dan<
tidak didefinisikan secara default untuk daftar?)S
sebagaiL
daftarS
es. Haskell tidak memiliki tipe bawaan yang dapat mewakili daftar daftar daftar ...Perl 6 , 55 byte
Mengambil input dengan
[]
.Cobalah online!
sumber
$^
sintaks, dan saya tidak berpikir[]
input bekerja, karena semua[[]],[[[]]],[[[[]]]]
dll mengevaluasi untuk[]
Bahasa Wolfram (Mathematica) , 20 byte
Cobalah online!
Fungsi murni yang mengambil setiap set sebagai argumen.
sumber