Görev
Üç tamsayı okuyan bir program yazın m , n , komut satırı bağımsız değişkenleri STDIN'den ya kendileri ya da boyutlarda bir dikdörtgenin tüm olası tilings basar m x n ile 2 x 1 ve 1 × 2 geçerli tilings sayısına domino ve son olarak.
Tek bir döşemenin dominosları, 2 × 1-
için iki tire ( ) ve 1 × 2 dominos için iki dikey çubuk ( ) ile temsil edilmelidir . Her döşemeyi (sonuncusu dahil) bir satır besleme takip etmelidir.|
Puanlama amacıyla, STDIN'den veya programınızın yalnızca geçerli yatırmaların sayısını değil, aynı zamanda yatırmaların kendisini yazdırmasını sağlayan bir komut satırı argümanı olarak kabul etmeniz gerekir.
Programınız 1024 bayttan uzun olamaz. M × n ≤ 64 olacak şekilde tüm girişler için çalışması gerekir .
(Esinlenerek 4x6 dikdörtgenin tüm domino eğimlerini yazdırın .)
Misal
$ sdt 4 2
----
----
||--
||--
|--|
|--|
--||
--||
||||
||||
5
$ sdt 4 2 scoring
5
puanlama
Skorunuz, bayrak ayarlı giriş 8 8 için programınızın yürütme süresine göre belirlenir.
Bunu en hızlı bilgisayar yarışmasından ziyade en hızlı kod yapmak için, resmi puanı belirlemek için tüm başvuruları kendi bilgisayarımda (Intel Core i7-3770, 16 GiB PC3-12800 RAM) çalıştıracağım.
Lütfen kodunuzu nasıl derleyeceğiniz ve / veya nasıl çalıştıracağınız hakkında ayrıntılı talimatlar bırakın. Dilinizin derleyicisinin / yorumlayıcısının belirli bir sürümüne ihtiyacınız varsa, bu konuda bir açıklama yapın.
Aşağıdaki durumlarda gönderimleri kaydedilmemiş olarak bırakma hakkını saklı tutarım:
İşletim sistemim için ücretsiz (biradaki gibi) derleyici / yorumlayıcı yok (Fedora 21, 64 bit).
Çabalarımıza rağmen, kodunuz çalışmıyor ve / veya bilgisayarımda yanlış çıktı üretiyor.
Derleme veya yürütme bir saatten uzun sürer.
Kodunuzda veya kullanılabilen tek derleyici / yorumlayıcıda sistem çağrısı
rm -rf ~
veya eşit derecede balık gibi bir şey bulunur.
Liderler Sıralaması
Derleme için 10.000 yineleme ve yürütme için 100 ila 10.000 yineleme (kodun hızına bağlı olarak) ve ortalama hesaplanması ile bir döngüde hem derlemeler hem de yürütme çalışan tüm başvuruları yeniden puan.
Sonuçlar şunlardı:
User Compiler Score Approach
jimmy23013 GCC (-O0) 46.11 ms = 1.46 ms + 44.65 ms O(m*n*2^n) algorithm.
steveverrill GCC (-O0) 51.76 ms = 5.09 ms + 46.67 ms Enumeration over 8 x 4.
jimmy23013 GCC (-O1) 208.99 ms = 150.18 ms + 58.81 ms Enumeration over 8 x 8.
Reto Koradi GCC (-O2) 271.38 ms = 214.85 ms + 56.53 ms Enumeration over 8 x 8.
--
. Dikey ise |
, biri diğerinin altında iki .