Rasgele Sudoku üreteci


13

Tamamen rastgele bir Sudoku üretmek istiyorum .

Sudoku ızgarasını, bazı öğelerin atlanabileceği 1 ile 9 arasında tamsayı ızgarası olarak tanımlayın . Bir ızgara, Sudoku kısıtlamalarına (her satır, sütun ve hizalanmış 3 × 3 karenin tekrarlanan bir öğesi yoksa) tamamlamak için benzersiz bir yol varsa ve bu bakımdan minimum ise (yani daha fazla atlarsanız) geçerli bir bilmecedir. bulmacanın birden fazla çözümü vardır).9×9193×3

Rasgele bir Sudoku bulmacasını nasıl oluşturabilirim, böylece tüm Sudoku bulmacaları eşlenebilir hale gelir?


Bu uygulanabilir bir çözüm gibi görünüyor: dryicons.com/blog/2009/08/14/…
Joe

1
Şimdi bununla ilgili bir meta soru var . Lütfen orada veya sohbette tartışın.
Kevin

Yanıtlar:


15

Üretme kesin tüm sudoku bulmaca eşit bir şekilde dağılmasını bu şekilde yapılabilir: Eğer rastgele bir 9x9 ızgara oluşturmak ve daha sonra doğru bir sudoku ızgara ise sadece tutmak, aksi yeniden deneyebilirsiniz.

917

[1,2,..9]9!

Belki nereye gittiğimi görüyorsunuz: bu sorunu akıllıca yanıtlamak muhtemelen sizi sudoku ızgaralarının altında yatan simetrileri merak etmenize yol açacaktır. 17'nin bir sudoku için en az ipucu sayısı olduğunu kanıtlamak için bu yönde bir çok çalışma yapıldı ( bu makaleye bakın ) ve buraya giden 5,472,730,538 sınıfın 3,359,232 benzer ızgaraya ait tam sayımını görmek için buraya gidebilirsiniz. simetrileri

  1. Rakamların permütasyonları
  2. Satırların permütasyonları (bantlar ve her bandın içindeki satırlar)
  3. Sütunlar için aynı şey
  4. aktarma

9!,64,64,2

DÜZENLEME: bunu eksik bulmacalara uyarlamak için, ızgaralarınızın rastgele bir alt kümesini seçebilir, çözümün bir sudoku çözücüsü ile benzersiz olup olmadığını kontrol edebilir ve değilse tekrar deneyebilirsiniz. Bu değil benzersiz bir çözüm ile eksik bulmaca iki numaralı ızgaraları için farklı olabilir çünkü tek tip dağılımı. (Aksi halde çok şaşırırdım)


Ancak Justin, tamamlanamayacak benzersiz bir yol olacak şekilde eksik bir bulmaca üretmenin bir yolunu istiyor . Sudoku kısıtlamalarını karşılayan bir 9x9 ızgara oluştursanız bile, hücrelerin belirli bir alt kümesinin kaldırılmasının size benzersiz bir şekilde tamamlanabilecek bir bulmaca vereceği açık değildir.
Janoma

1
@Janoma: oh, kötülerim, düzenleyeceğim. Ancak, uygun bir bulmacanın ne olduğunu tanımlamazsa çok anlamlı değildir. (Sadece bir boş hücre içeren bir ızgara bulmaca mıdır?). Minimum bir ızgara istiyor muyuz (yani bir rakamı kaldırırsanız çözüm artık benzersiz değil mi?) Bu ilginç bir soru.
jmad

"Bazı elemanlar atlanabilir" yeterince kesindir (yani "bir veya daha fazla" eleman çıkarılabilir). Örneğin, bir boş hücre ile geçerli bir bulmaca yapabilirsiniz birden fazla geçerli bulmaca olduğundan, süre boş bulmaca olamaz, benzersiz bir şekilde tamamlanacaktır. Ayrıca, tamamlanmış geçerli bir bulmaca benzersiz (önemsiz, boş) bir şekilde tamamlanabilir. Minimal ızgara ile ilgili soru da ilginç, ancak bundan farklı.
Janoma

@Janoma, jmad: geçerli bir bulmaca normalde minimumdur, bundan bahsetmeyi unuttum.
Gilles 'SO- kötü olmayı kes'

@Gilles Bu bir tanım mı? Bunun gerçekten OP'nin amaçlanan anlamı olup olmadığını merak ediyorum. Sorunu çok daha zor hale getiriyor :-)
Janoma
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.