En sevdiğim matematiksel oyunlardan biri dikdörtgen bir ızgara çizip, o ızgarada görülebilen tüm dikdörtgenleri bulmak. İşte, bu soruyu al ve kendin için girişimde ol!
Dikdörtgenlerin sayısını sayabilir misiniz?
+-----+-----+-----+-----+
| | | | |
| | | | |
+-----+-----+-----+-----+
| | | | |
| | | | |
+-----+-----+-----+-----+
| | | | |
| | | | |
+-----+-----+-----+-----+
| | | | |
| | | | |
+-----+-----+-----+-----+
Bunun için dikdörtgenler toplam sayısı 4 x 4 minichess kurulu tam olarak
100
Doğru muydun?
İlgili matematik: 8 × 8'lik bir dama tahtası üzerinde kaç tane dikdörtgen var?
Meydan okuma
Toroid olmayan bir ızgaradaki / görüntünün toplam görünür dikdörtgen sayısını sayan en kısa işlevi / programı yazın .
İlgili zorluklar: Eşsiz Dikdörtgenleri sayın! , 2B bayt dizisindeki dikdörtgenlerin sayısını bulun .
Giriş biçimi
İşleviniz veya programınız, metin tabanlı giriş veya grafiksel girişle çalışmayı seçebilir.
Metin Tabanlı Giriş
Izgara , aşağıdaki karakterlerden oluşan bir m- by- n ( m satır, n sütun) ASCII ızgara olacaktır:
- boşluk,
-
Yatay çizgi bölümünün parçaları için,|
dikey bir çizgi parçasının parçaları için ve+
köşeler için.
Bu ASCII ızgarasını, programınıza / işlevinize giriş / bağımsız değişken olarak tanıtabilirsiniz.
- Satır sonları ile ayrılmış tek bir dize,
- yeni satırlar içermeyen ancak kılavuzun boyutlarını kodlayan bir veya iki tamsayılı olan bir dize veya
- dizelerin bir dizi.
Not: Metin tabanlı giriş, en az 1 satır ve en az 1 sütun içerir.
Grafiksel giriş
Alternatif olarak, ızgaralar 5 * n piksel genişliğinde ve 5 * m piksel yüksekliğinde siyah beyaz PNG görüntüleri olarak kodlanır . Her görüntü , ASCII girişine karşılık gelen 5 px * 5 px bloktan oluşur :
- Boşluklar beyaz bloklara dönüştürülür. Bu bloklara boşluk blokları denir .
- Çizgi bölümleri ve köşeleri beyaz olmayan bloklara dönüştürülür . Bu tür blokların merkez pikselleri siyahtır.
- Düzenleme: Eğer iki köşe (ASCII girişinde) bir çizgi segmentine bağlanmışsa, karşılık gelen blok merkezlerinin (grafiksel giriş) siyah bir çizgi ile de bağlanması gerekir.
Bu, her bloğun yalnızca seçilebileceği anlamına gelir (Daha büyük resim için buraya tıklayın) .
Not: Mavi sınırlar sadece gösterim amaçlıdır. Grafiksel giriş en az 5 piksel genişliğinde ve 5 piksel yüksekliğindedir. Grafiksel girişi, potansiyel olarak başka görüntü dosyası biçimleri olan herhangi bir tek renkli görüntüye dönüştürebilirsiniz). Dönüştürmeyi seçerseniz, lütfen cevapta belirtin. Dönüşüm cezası yok.
Çıkış biçimi
Bir program yazıyorsanız, girişteki toplam dikdörtgen sayısını belirten negatif olmayan bir sayı göstermelidir.
Bir işlev yazıyorsanız, girişteki toplam dikdörtgen sayısını belirten negatif olmayan bir sayı da döndürmelidir.
Örnek Olaylar
Durum 1, Grafik: ( 30 piksel x 30 piksel), ASCII: ( 6 satır, 6 sütun)
+--+
| |
| ++-+
+-++ |
| |
+--+
Beklenen çıktı: 3
Durum 2, Grafik: ( 20 piksel * 20 piksel), ASCII: ( 4 satır, 4 sütun)
++-+
|+++
+++|
+-++
Beklenen çıktı: 6
Durum 3, Grafik: ( 55 piksel * 40 piksel), ASCII: ( 8 satır, 11 sütun)
+++--+
+-+++ |
| | ++--+
+--+--++ ++
| ||
| ||
++ +--++
++
Beklenen çıktı: 9
Durum 4, Grafik: ( 120 piksel * 65 piksel), ASCII: ( 13 satır, 24 sütun)
+--+--+ +--+ +--+ +--+
| | | | | | | | |
+--+--+ | | | | | |
| | | +--+--+--+--+--+
+--+--+ | | | |
| | | | ++
+-+-+-+-+ +--+ +--+ ++
| | | | |
+-+-+-+-+-+-+-+-+-+-+-+
| | | | | | | | | | | |
+-+-+-+-+-+-+-+-+-+-+-+
| | | | | | | | | | | |
+-+-+-+-+-+-+-+-+-+-+-+
Beklenen çıktı: 243
Durum 5, Grafik: ( 5 px * 5 px. Evet, işte orada!), ASCII: Sadece tek bir boşluk.
Beklenen çıktı: 0
Durum 6, Grafik: ( 35 piksel x 20 piksel), ASCII: ( 4 satır, 7 sütun)
+--+--+
|++|++|
|++|++|
+--+--+
Beklenen çıktı: 5
Varsayımlar
Hayatı kolaylaştırmak için, aşağıdakileri garanti ediyoruz:
- Davranarak olmayan toroidal bir ızgara yatay ya da dikey ya da sarılmaz.
- Gevşek uç yoktur, örneğin
+---
veya+- -+
. Tüm çizgi parçalarının iki ucu vardır. - Karşılaşan iki çizgi, bu
+
noktada birbiriyle kesişmelidir. - Geçersiz girişler için endişelenmenize gerek yok.
Standart boşluklara karşı kurallar uygulanır. Lütfen karelere dikdörtgenler gibi davranın. İsteğe bağlı olarak, kılavuzun her satırındaki sondaki boşlukları kaldırabilirsiniz.
Bu kod golf , bu yüzden girişinizi mümkün olduğunca kısa yapın. Metin tabanlı ve grafiksel çözümler birlikte rekabet edecek.