Güvercin yuvası prensibi devletler bu
Eğer N öğeler konur M ile, kutular N > M , daha sonra en az bir kutu birden fazla öğe içermelidir.
Çoğu için, bu prensip diğer matematiksel işlemlerle karşılaştırıldığında özel bir statüye sahiptir. EW Dijkstra'nın yazdığı gibi ,
Bazı mistiklerle çevrilidir. Bunu kullanan kanıtlar genellikle özel, özellikle ustaca olan bir şey olarak kabul edilir.
Meydan okuma
Bu zorluğun amacı, ASCII sanat gösterimlerini kullanan güvercin deliği ilkesini göstermektir. özellikle:
- Olumsuz ve pozitif olarak girdi
N(öğe sayısı) veM(kutu sayısı ) olarak alın . küçük olabilir (ilke bu durumda olmasa bile).NMNM - Kutulara olası eşya atamalarından birini rastgele seçin. Her bir ödevin, seçilme sıfırı olmayan bir olasılığı olmalıdır.
Atama ASCII sanat gösterimi aşağıdaki gibi üretin:
- Her
Mbiri bir kutuya karşılık gelen çizgiler var . - Her satır gibi beyaz olmayan bir karakterle başlar
|. - Bu karakterin ardından, başka bir boşluk olmayan karakter, örneğin
#, o kutudaki öğeler kadar çok tekrarlanır.
- Her
Örneğin düşünün N = 8, M = 5. Kutulara öğelerin seçili atama ise 4, 1, 0, 3, 0, temsilidir
|####
|#
|
|###
|
Aynı programın farklı bir çalışması (farklı bir atama ile sonuçlanan)
|#
|##
|#
|#
|###
Temsil ile ilgili bazı esneklikler var; aşağıya bakınız.
Belirli kurallar
Kod teorik olarak Nve değerleri için çalıştırılmalıdırM . Uygulamada hafıza boyutu veya veri tipi sınırlamaları ile sınırlandırılabilir.
Çıktıyı gözlemlemek, tüm ödevlerin sıfır olasılıksız olup olmadığını belirlemek için yeterli olmadığından , her başvuru açık değilse, kodun bunu nasıl başardığını açıklamalıdır.
Aşağıdaki gösterim varyasyonlarına izin verilir:
- Herhangi bir farklı, boşluk olmayan karakter çifti seçilebilir. Program yürütmeleri arasında tutarlı olmalıdırlar.
- Temsilin 90 derecelik dönüşleri kabul edilebilir. Yine, seçim tutarlı olmalıdır.
- İzler veya baştaki boşluklara izin verilir.
Farklı bir versiyonudur biçimi ile, bir örnek olarak N = 15, M = 6program iki uygulama sonuçları olabilir
VVVVVV
@@@@@@
@@ @@@
@ @@
@
veya
VVVVV
@@@ @
@@@ @
@ @ @
@ @ @
@
Benzer şekilde, N = 5, M = 7temsili bir başka varyasyonu kullanılarak, verebilir,
*
* * * *
UUUUUUU
veya
*** **
UUUUUUU
veya
*
* *
* *
UUUUUUU
İlkenin bu durumda nasıl uygulanamayacağına dikkat edin, çünkü N< M.
Genel kurallar
Herhangi bir programlama dilinde programlara veya fonksiyonlara izin verilir . Standart boşluklar yasaktır.
Giriş herhangi bir makul yoldan alınabilir ; ve iki sayı dizisi veya iki farklı dizge gibi herhangi bir biçimde.
Çıkış araçları ve formatları da esnektir. Örneğin çıktı, dizelerin bir listesi veya yeni satırlı bir dize olabilir; işlev çıktı argümanı olarak döndürüldü veya STDOUT'da görüntülendi. İkinci durumda, sınırlı ekran genişliğinden kaynaklanan hat sarma hakkında endişelenmenize gerek yoktur.
Bayt cinsinden en kısa kod kazanır.