Polisler dizisi
Bu iş parçacığında, göreviniz herhangi bir tamsayı serisi oluşturmak için özyineleme tabanlı bir program / işlev yapmaktır. Robbers, Robbers'ın iş parçacığında daha kısa bir özyinelemeli olmayan çözüm bulmaya çalışacak .
Meydan okuma özeti
Birçok dilde, özyinelemeli işlevler bir programlama görevini önemli ölçüde basitleştirebilir. Bununla birlikte, düzgün bir özyineleme için sözdizimi yükü, kod golfündeki kullanılabilirliğini sınırlayabilir.
Polis tek tamsayı alan bir program ya da işlev oluşturur n
ilk üretecek, n
bir tamsayı dizisinin girişleri sadece özyinelemeye kullanılarak 1 . Ayrıca, girişlerini güvenli olarak işaretlemek için diziyi oluşturmanın daha kısa bir yinelemesiz yolu olduğundan emin olmalıdırlar.
Soyguncular bir bulmaya çalışacağız kısa , aynı tamsayı dizisi üreten aynı dilde program veya fonksiyon Yinelemesiz kullanarak 2 .
Polislerin gönderimi on gün (240 saat) içinde çatlamazsa, polis aslında kendi çözümlerini ortaya koyarak daha kısa özyinelemesiz bir yaklaşımın mümkün olduğunu kanıtlayacaktır. Daha sonra gönderimlerini güvenli olarak işaretleyebilirler .
Polisler yarışmasının galibi en kısa olacak ( kod- golf'e göre) özyineleme tabanlı gönderim güvenli olarak işaretlendi.
Soyguncular yarışmasının galibi en çok çözümü kıran hırsız olacak.
1: Sadece sözdiziminde özyinelemeli olmalıdır; örneğin kuyruk çağrısı optimizasyonu hakkında endişelenmenize gerek yoktur.
2: Yine, sözdiziminde özyinelemesiz; böylece özyinelemeli bir çözüm gönderemezsiniz ve kuyruk çağrısı optimizasyonu sayesinde bir döngüde derlendiğini iddia edemezsiniz.
Başvuru şartları
Her gönderim tek bir tamsayı alır n
(sıfır veya bir tabanlı). Gönderme daha sonra n
seçilen bir tamsayı serisinin ilk girişlerini çıkarır veya döndürür . (bu tamsayı serisinin aşağıdakilere bağlı olmaması gerektiğini unutmayın:n
). Giriş ve çıkış yöntemi, özyinelemeli ve özyinelemesiz yaklaşım arasında farklılık gösterebilir. Tamsayı serisi, uzunluğu en az 5 olan herhangi bir deterministik seri olabilir. Seri düzgün bir şekilde açıklanmalıdır.
Gönderinizin keyfi olarak çalışmak zorunda değil, n
en azından çalışması gerekiyor n=5
. Özyinelemesiz yaklaşım en azından n
özyinelemeli yaklaşımla aynı şekilde çalışabilmelidir veyan=2^15-1
hangisi daha küçükse .
özyineleme
Bu zorluk uğruna, özyineleme, kendisini çağıran bir işlev (veya işlev benzeri yapı) kullanarak istenen diziyi oluşturmak olarak tanımlanır (veya kendisini çağıran bir dizi işlevi çağırır; bu Y birleştiricisi gibi yapıları içerir). Özyineleme derinliği sonsuza kadar sonsuza gitmelidir n
. Özyinesiz yaklaşım olduğu bir şey değil özyinelemeli.
n
Teorik olarak doğruysa bir kodun rastgele çalıştığını söyleyebilir miyim , ancak zaman veya bellek kısıtlamaları nedeniyle çalıştırılamaz mı?
n=5
hesaplanmalıdır
xfor
bir çeşit içe aktarma yoluyla mevcut olmadıkça ?) Bu yüzden belki de bu dil rekabet edemez.
for
arkada özyinelemeyle nerede yapılır,for
özyinelemeli veya döngü mü?