Açıklayıcı Anahtar Kelimeler (arama için): İki Matrisi Eşdeğer Yap, Çakışma, Dizi, Bul
Meydan okuma
Santa geçmişte kasasından hediye çalmak için elflerin bir geçmişine sahipti, bu yüzden bu yıl kırılması çok zor bir kilit tasarladı ve bu yıl elfleri dışarıda tutmuş gibi görünüyor. Ne yazık ki, kombinasyonu kaybetti ve nasıl açılacağını da anlayamıyor! Neyse ki, kombinasyonu bulmak için bir program yazmanız için sizi işe aldı. En kısa olanı olması gerekmez, ancak mümkün olduğunca hızlı bulması gerekir!
Çok katı bir programı var ve çok uzun süre bekleyemez. Skorunuz, programınızın toplam çalışma süresinin, puanlama girişi için program çıktılarınızın sayısıyla çarpımı olacaktır. En düşük puan kazanır.
Özellikler
Kilit, 1s ve 0s kare bir matristir. 1s ve 0s arasında rastgele bir düzenlemeye ayarlanmıştır ve belirtilen bir koda ayarlanması gerekir. Neyse ki, Santa gerekli kodu hatırlıyor.
Gerçekleştirebileceği birkaç adım var. Her adım herhangi bir bitişik alt matris üzerinde gerçekleştirilebilir (yani, tamamen sol üst ve sağ alt köşeyle sınırlanmış bir alt matris seçmelisiniz) (kare olmayan bir alt matris olabilir):
- 90 derece sağa döndür *
- 90 derece sola döndür *
- 180 derece döndür
- Her satır
n
öğesini sağa veya sola döndürme (tamamlama) - Her sütun
m
öğesini yukarı veya aşağı döngü (sarma) - Yatay olarak çevir
- Dikey Çevir
- Ana Köşeyi Çevir *
- Ana Anti-diyagonal üzerinde kapak *
* sadece alt matris kare ise
Tabii ki, bu adımları tüm matris üzerinde de gerçekleştirebilir. 1s ve 0s yalnızca matriste değiştirilebilir, ancak bir karenin değeri doğrudan değiştirilemediğinden, 1s ve 0s sayısı başlangıç ve bitiş yapılandırması için aynıdır.
Biçimlendirme Spesifikasyonları + Kurallar
Girişe istediğiniz makul formatta iki kare matris (başlangıç konumu ve bitiş konumu) verilecektir. Çıktı, okunabilir herhangi bir biçimde bu adımların bir sırası olmalıdır. Bu kod golf olmadığından, lütfen kolayca doğrulanabilir bir biçim yapın, ancak bu kesin bir gereklilik değildir. İsterseniz girişteki matrislerin yan uzunluğunu almayı seçebilirsiniz.
Programınız bilgisayarımda çalıştırılacaktır (Linux Mint, herhangi biri umursuyorsa istek üzerine kesin sürüm ayrıntıları mevcuttur: P) ve komut satırında "enter" tuşuna bastığım zaman ile komut çıkışları.
Test Durumları
1 0 0 1 0 0 0 0
0 1 1 0 -> 0 0 0 0
0 1 1 0 -> 1 1 1 1
1 0 0 1 1 1 1 1
- Tüm matrisi alın. Her sütunu yukarı doğru döndür 1.
- Ortadaki iki sütunu bir alt matris olarak alın. Her sütunu aşağı doğru döndürün 2.
1 0 1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1 0 1
1 0 1 0 1 -> 0 1 1 1 0
0 1 0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0 1 0
- Tüm matrisi alın. Her sütunu aşağı doğru döndür 1.
- Orta sütunu al. Aşağıya doğru çevirin 2.
- En üstteki 2 satırı alın. Dikey olarak çevirin.
- En üst sıradaki en sağdaki 2 elemanı ele alalım. Değiştirin (sağa / sola 1 döndürün, yatay olarak çevirin).
- En üst satırın en soldaki 2 öğesini alın. Onları değiştirin.
Daha etkili yöntemler olabilir, ama bu önemli değil. Eğer bir tane bulursanız onları yorumlarda belirtmekten çekinmeyin :)
Yargılama Testi Örneği
Bu test örneği, başvurunuzu değerlendirmek için kullanılacaktır. Bir cevabın test senaryosu için çok fazla uzmanlaştığına inanıyorsam, rastgele bir girişi tekrarlama ve yeni vaka ile tüm cevapları reddetme hakkım var. Test durumu bulunabilir burada üst başlangıçtır ve alt istenen yapılandırma nerede.
Yanıtların çok fazla uzmanlaştığına inanıyorsam, bir sonraki test vakasının MD5'i 3c1007ebd4ea7f0a2a1f0254af204eed
. (Bu şu anda kendimi hile suçlamalarından kurtarmak için yazılmıştır: P)
Standart Loopholes Uygula. Hiçbir cevap kabul edilmeyecektir. Mutlu kodlama!
Not: Advent Of Code'dan bu meydan okuma serisi için ilham aldım . Bu siteyle hiçbir bağlantım yok
Buradaki ilk zorluğun 'Bağlantılı' bölümüne bakarak dizideki tüm zorlukların bir listesini görebilirsiniz .
0
ve 64'lere sahiptir1
ve toplam256 choose 64 ≈ 1.9 × 10⁶¹
ulaşılabilir matrisler vardır. (bu bir Megaminx ile karşılaştırılabilir ve bir Profesörün küpünden çok daha az olmasına rağmen bir Rubik İntikamından daha büyüktür)