Arka fon
Manufactoria programlama ile ilgili bir oyundur. Oynatıcı görevleri tamamlamak için iki boyutlu bir programlama dili formu kullanmalıdır. Daha önce hiç duymadıysanız, öğrenmenin en kolay yolu oyunun ilk birkaç seviyesini denemektir.
Meydan okuma
Sizin zorluğunuz bir sayının önceliğini test eden bir program oluşturmaktır.
Giriş, kuyruktaki bir dizi N mavi işaretçi olacaktır. N asal ise, programınız bunu kabul etmelidir (robotu bitirmek için hareket ettirin). N kompozitse, programınız reddedmelidir (yere bir yere bırakın).
Gönderme Seçenekleri
Bu, tipik Manufactoria meydan okumasından daha karmaşık bir meydan okuma olduğundan, cevaplarınızı göndermenin daha fazla yoluna izin vermeye karar verdim.
Vanilya
Gönderimleri oluşturmak ve test etmek için 13x13 özel bir düzey oluşturdum. Özel test seviyesi aşağıdaki gibidir.
Oyun sadece özel bir seviyede 8 test senaryosuna izin verir, ancak yaratımınız teorik olarak sadece mevcut hafıza ile sınırlı olan herhangi bir doğal sayı N'yi işleyebilmelidir. Bilgilendirme amacıyla, özel düzeyde sunulan test senaryoları aşağıdaki gibidir:
1 -> reject
2 -> accept
4 -> reject
5 -> accept
7 -> accept
9 -> reject
11-> accept
15-> reject
Genişletilmiş Izgara
Bazı kullanıcılar 13x13 ızgaradan daha fazla alan isteyebilir. URL'deki bir sayı değiştirilerek oluşturulan oyun içi 15x15 özel düzeyine bir bağlantı:
Ne yazık ki, ek hücrelere erişilemediğinden daha büyük özel düzeyler çalışmıyor.
Manufactoria Esolang
Manufactoria'nın ASCII tabanlı bir dile uyarlanması olmuştur. Oluşturmanızı tasarlamak / test etmek için farklı bir yol istiyorsanız veya nihai çözümünüzü oyun tahtasına sığdıramıyorsanız, bu esolang'ı kullanabilirsiniz. Bu esolang hakkında bilgi burada bulabilirsiniz:
Esolang ve gerçek oyun arasında birkaç tutarsızlık var. Örneğin, konveyör geçitleri farklı şekilde ele alınır. Bu tutarsızlıklardan kaçınmaya çalışın.
Test Etmenin Daha Hızlı Bir Yolu
Tamamlanması için binlerce adım atılan programlar söz konusu olduğunda oyun çok yavaş. Kavram kanıtı çözümüm 15'i reddetmek için 28042 adım attı. Oyunda 50x hızda bile, bu çok uzun sürüyor.
Bu çok yararlı web sitesini buldum . Bağlantıyı cevabınıza kopyalayıp yapıştırmanız yeterlidir ve cevabınızı belirli girişlerle test edebilirsiniz. 28042 adımlı işlem bir saniyenin altında gerçekleşti.
Dikkat edilmesi gereken bir şey, makineniz düzgün çalışsa bile, genellikle "yanlış kabul edilmiş" gibi bir şey söyleyeceğidir. Bunun nedeni, web sayfasının yalnızca test senaryolarını bilmesidir. Örneğin, makinem gerçekten doğru olmasına rağmen, çözümümün 3 sayısını "yanlış kabul ettiğini" söyleyebilir.
Nasıl kazanılır
Puanlama ölçütü parça sayısıdır (işgal altındaki hücreler). Bu kod golf, bu yüzden en az parça ile gönderme kazanır.
İlgilenenler için kıyaslama çözümümün 96 parçası var ve 13x13 ızgaraya uyuyor. Daha iyi bir algoritma bulmak muazzam gelişmelere yol açabilir, çünkü alt optimal bir algoritma kullandığımı biliyorum.