Über die Serie
Zunächst einmal können Sie dies wie jede andere Code-Golf-Herausforderung behandeln und beantworten, ohne sich Gedanken über die Serie zu machen. Es gibt jedoch eine Rangliste für alle Herausforderungen. Sie finden die Rangliste zusammen mit einigen weiteren Informationen über die Serie im ersten Beitrag .
Loch 8: Mische eine unendliche Liste
Sie sollten eine Funktion oder ein Programm schreiben, das eine unendliche Liste als Eingabe verwendet und eine gemischte Version dieser Liste zurückgibt.
Über unendliche I / O
Es gibt verschiedene Möglichkeiten, wie Sie Eingaben vornehmen und Ausgaben für diese Herausforderung erstellen können:
- Sie können entweder eine Liste positiver Ganzzahlen oder eine Zeichenfolgendarstellung davon oder eine Zeichenfolge oder eine Liste druckbarer ASCII-Zeichen (einschließlich 0x20 bis 0x7E) verwenden. Das Ausgabeformat muss mit dem Eingabeformat übereinstimmen. Ich bezeichne die Daten nur noch als "die Liste", unabhängig davon, welche Option Sie wählen.
- Sie können die Liste aus einem unendlichen Standardeingabestream lesen und die Ausgabe kontinuierlich in einen unendlichen Standardausgabestream schreiben. Die Lösung sollte nicht von einem bestimmten Wert oder einer bestimmten Wertereihenfolge abhängen, um sicherzustellen, dass der Ausgabestream regelmäßig geschrieben und gelöscht wird (z. B. können Sie nicht einfach eine Ausgabe schreiben, wenn sich eine
5
in der Eingabeliste befindet). Wenn Sie eine Zeichenfolgendarstellung einer Liste lesen, können Sie natürlich warten, bis Sie auf das Listentrennzeichen stoßen. - In Sprachen, die diese unterstützen, können Sie eine Funktion schreiben, die eine verzögerte unendliche Liste oder Zeichenfolge annimmt und zurückgibt.
- In Sprachen, die sie unterstützen, können Sie einen unendlichen Generator implementieren, der einen anderen Generator als Eingabe verwendet.
- Alternativ können Sie eine Funktion schreiben, die keine Argumente akzeptiert und bei jedem Aufruf einen Ausgabewert zurückgibt. In diesem Fall können Sie davon ausgehen, dass eine Funktion definiert wurde, die keine Argumente akzeptiert und bei jedem Aufruf den nächsten Eingabewert zurückgibt. Sie können den Namen dieser Funktion frei wählen.
Sie können davon ausgehen, dass Ihr Programm für immer ausgeführt wird und dass unendlicher Speicher verfügbar ist. (Es ist möglich, dies mit einer begrenzten Menge an Speicher zu lösen. Dies bedeutet jedoch, dass Sie Speicher verlieren dürfen.)
Über die Zufälligkeit
Für jeden Wert v, der an einer Position i der unendlichen Eingabe gelesen wird , muss eine positive Wahrscheinlichkeit bestehen, dass er an einer der Positionen i-9 bis i + 9 der unendlichen Ausgabe endet (es sei denn, diese Position wäre negativ) ). Diese Wahrscheinlichkeiten müssen nicht für verschiedene Ausgabepositionen oder sogar für verschiedene Eingabepositionen gleich sein. Es ist in Ordnung, wenn Ihre Lösung die Werte auch an eine andere, weiter entfernte Position verschieben kann.
Daher ist es nicht erforderlich, dass Ihre Lösung den ersten Wert sehr weit unten in der Liste oder einen sehr späten Wert bis zur ersten Position mischen kann, obwohl dies in Ordnung ist, solange alle Positionen 9 Schritte von der Liste entfernt sind Eingaben sind möglich.
Wenn Sie beispielsweise den folgenden String als Eingabe verwendet haben, ___
gibt der alle Positionen an, die X
in der Ausgabe enthalten sein müssen:
___________________
abcdefghijklmnopqrstuvwxyzXabcdefghijklmnopqrstuvwxyz...
Fehlt in Ihrer Sprache ein integrierter Zufallszahlengenerator oder möchten Sie diesen nicht verwenden, können Sie einen zusätzlichen Startwert als Eingabe verwenden und mithilfe des Startwerts ein eigenes geeignetes RNG implementieren . Diese Seite kann hilfreich sein.
Unabhängig von der tatsächlichen Verteilung, die Ihre Lösung verwendet, muss sie mit ziemlicher Sicherheit nach einer endlichen (aber willkürlichen) Zeit den nächsten Wert erzeugen.
Bitte erläutern Sie kurz, wie Ihre Implementierung diese Anforderungen erfüllt.
Wertung
Das ist Code-Golf , also gewinnt die kürzeste gültige Antwort - gemessen in Bytes .
Bestenliste
Der erste Beitrag der Serie generiert eine Rangliste.
Um sicherzustellen, dass Ihre Antworten angezeigt werden, beginnen Sie jede Antwort mit einer Überschrift. Verwenden Sie dazu die folgende Markdown-Vorlage:
# Language Name, N bytes
Wo N
ist die Größe Ihres Beitrags? Wenn Sie Ihren Score zu verbessern, Sie können alte Rechnungen in der Überschrift halten, indem man sich durch das Anschlagen. Zum Beispiel:
# Ruby, <s>104</s> <s>101</s> 96 bytes
(Die Sprache wird derzeit nicht angezeigt, das Snippet erfordert sie jedoch und analysiert sie. In Zukunft werde ich möglicherweise eine Bestenliste nach Sprachen hinzufügen.)