Ringkasan bisnis plan
Input yang diberikan k, cari partisi bilangan bulat 1ke ndalam ksubset bebas jumlah untuk yang terbesar nyang dapat Anda lakukan dalam 10 menit.
Latar belakang: Nomor Schur
Himpunan Aadalah jumlah bebas jika jumlah sendiri A + A = { x + y | x, y in A}tidak memiliki elemen yang sama dengannya.
Untuk setiap bilangan bulat positif kada bilangan bulat terbesar S(k)sehingga himpunan {1, 2, ..., S(k)}dapat dipartisi menjadi khimpunan bagian bebas jumlah. Jumlah ini disebut k th jumlah Schur (Oei A045652 ).
Misalnya S(2) = 4,. Kita dapat mempartisi {1, 2, 3, 4}sebagai {1, 4}, {2, 3}, dan itu adalah partisi unik menjadi dua himpunan bagian jumlah bebas, tetapi sekarang kita tidak dapat menambahkan 5ke bagian mana pun.
Tantangan
Tulis program deterministik yang melakukan hal berikut:
- Ambil bilangan bulat positif
ksebagai input - Tulis stempel waktu Unix saat ini ke stdout
- Keluarkan urutan partisi
1menjadinkeksubset bebas jumlah untuk bertambahn, mengikuti setiap urutan dengan cap waktu Unix saat ini.
Pemenangnya adalah program yang mencetak partisi terbesar ndalam waktu 10 menit di komputer saya ketika diberi input 5. Ikatan akan terputus dengan waktu tercepat untuk menemukan partisi untuk yang terbesar n, rata-rata lebih dari tiga kali: itu sebabnya output harus menyertakan cap waktu.
Detail penting:
- Saya memiliki Ubuntu Precise, jadi jika bahasa Anda tidak didukung, saya tidak akan bisa menilai itu.
- Saya memiliki Intel Core2 Quad CPU, jadi jika Anda ingin menggunakan multithreading tidak ada gunanya menggunakan lebih dari 4 utas.
- Jika Anda ingin saya menggunakan flag compiler atau implementasi tertentu, dokumentasikan dengan jelas dalam jawaban Anda.
- Anda tidak akan membuat kasus khusus kode Anda untuk menangani input
5. - Anda tidak perlu menampilkan setiap peningkatan yang Anda temukan. Misalnya untuk input,
2Anda hanya bisa menampilkan partisi untukn = 4. Namun, jika Anda tidak menghasilkan apa pun dalam 10 menit pertama maka saya akan menilai itu sebagain = 0.
n=59, dan penyortiran oleh jumlah terbesar nomor diperbolehkan kurang darinextNmemberin=64. Mengurutkan berdasarkan panjang daftar angka yang tidak diizinkan (yang mungkin memiliki pengulangan) mengarah sangat cepat ken=30pola yang elegan .