Seriler Hakkında
Öncelikle, buna diğer herhangi bir kod golf mücadelesi gibi davranabilir ve seri hakkında endişelenmeden cevap verebilirsiniz. Ancak, tüm zorluklarda bir lider tablosu var. Afiş ilk yazı dizisi hakkında daha fazla bilgi ile birlikte bulabilirsiniz .
Delik 8: Sonsuz bir listeyi karıştır
Girdi olarak sonsuz bir liste alan ve o listenin karıştırılmış halini döndüren bir işlev veya program yazmalısınız.
Sonsuz G / Ç Hakkında
Bu zorluk için girdi almanın ve çıktı üretmenin birkaç yolu var:
- Olumlu bir tamsayı listesi veya bir dize temsili veya bir basılabilir ASCII karakter listesi (0x20 ila 0x7E, dahil) alabilir. Çıkış formatı giriş formatıyla eşleşmelidir. Seçtiğiniz seçenek ne olursa olsun, verilere bundan sonra "liste" olarak bakacağım.
- Listeyi sonsuz bir standart giriş akışından okuyabilir ve çıktıyı sürekli bir sonsuz standart çıkış akışına yazabilirsiniz. Çözüm, çıktı akışının düzenli olarak yazılmasını ve temizlenmesini sağlamak için herhangi bir özel değere veya değer sırasına bağlı olmamalıdır (örneğin
5
, giriş listesinde bir varsa çıktı yazamazsınız ). Tabii ki, bir listenin string gösterimini okursanız, liste ayırıcı ile karşılaşana kadar beklemeniz uygundur. - Onları destekleyen dillerde tembel bir sonsuz liste veya dize alan ve döndüren bir işlev yazabilirsiniz.
- Onları destekleyen dillerde, başka bir jeneratörü giriş olarak alan sonsuz bir jeneratör kullanabilirsiniz.
- Alternatif olarak, hiçbir argüman almayan ve her çağrıldığında bir çıktı değeri döndüren bir fonksiyon yazabilirsiniz. Bu durumda, hiçbir argüman almayan ve bir sonraki giriş değerini her çağrıldığında döndüren bir fonksiyonun tanımlanmış olduğunu varsayabilirsiniz. Bu işlevin adını serbestçe seçebilirsiniz.
Programınızın sonsuza dek çalıştığını ve sonsuz hafızanın mevcut olduğunu varsayabilirsiniz. (Bunu sınırlı miktarda bellekle çözmek mümkündür, ancak bunun anlamı bellek sızdırmasına izin vermenizdir.)
Rastgele hakkında
Sonsuz girişin i konumunda okunan herhangi bir v değeri için , sonsuz çıkışın i-9 ila i + 9 pozisyonlarından herhangi birinde bitmesi için pozitif bir olasılık olmalıdır (eğer bu pozisyon negatif olmazsa) ). Bu olasılıklar farklı çıktı konumları için ve hatta farklı girdi konumları için aynı olmak zorunda değildir. Çözümünüz, değerleri daha uzaktaki başka bir konuma de karıştırabilirse sorun yoktur.
Bu nedenle, çözümünüzün listenin en üstündeki ilk değeri karıştırması veya tüm konumlar 9 adımından itibaren tüm adımları 9 adım attığı sürece iyi olmasına rağmen ilk geçişte çok geç bir değeri karıştırması gerekmez giriş mümkündür.
Örneğin, aşağıdaki dizgeyi girdi olarak aldıysanız , çıktının içine girmesi gereken ___
tüm konumları belirtir X
:
___________________
abcdefghijklmnopqrstuvwxyzXabcdefghijklmnopqrstuvwxyz...
Dilinizde yerleşik bir rasgele sayı üreteci yoksa veya kullanmak istemiyorsanız, giriş olarak ek bir tohum değeri alabilir ve tohumu kullanarak kendi uygun RNG'nizi uygulayabilirsiniz . Bu sayfa bunun için yardımcı olabilir.
Çözümünüzün kullandığı asıl dağıtımdan bağımsız olarak, kesin bir (ancak keyfi) bir süre sonra neredeyse bir sonraki değeri üretmesi gerekir .
Lütfen uygulamanızın bu gereklilikleri nasıl karşıladığına dair kısa bir açıklama ekleyin.
puanlama
Bu kod-golf , yani en kısa geçerli cevap - bayt olarak ölçülen - kazanır.
Liderler Sıralaması
Serinin ilk yazı lider tablosu oluşturur.
Cevaplarınızın göründüğünden emin olmak için, lütfen aşağıdaki Markdown şablonunu kullanarak her bir başlığa başlıkla başlayın:
# Language Name, N bytes
Gönderinizin N
büyüklüğü nerede ? Puanınızı artırmak varsa, olabilir onları içinden vurarak, başlığa eski hesapları tutmak. Örneğin:
# Ruby, <s>104</s> <s>101</s> 96 bytes
(Dil şu anda gösterilmiyor, ancak snippet bunu gerektiriyor ve ayrıştırıyor ve gelecekte bir dilin lider tahtası ekleyebilirim.)