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).N
M
N
M
- 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
M
biri 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 N
ve 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 = 6
program iki uygulama sonuçları olabilir
VVVVVV
@@@@@@
@@ @@@
@ @@
@
veya
VVVVV
@@@ @
@@@ @
@ @ @
@ @ @
@
Benzer şekilde, N = 5
, M = 7
temsili 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.