Teilen Sie eine Zeichenfolge, die nur Buchstaben enthält (ohne Berücksichtigung der Groß- und Kleinschreibung), mit der folgenden Verteilung in Wörter mit gleichmäßig zufälligen Längen auf, mit Ausnahme des letzten Wortes, das eine beliebige gültige Länge haben kann (1-10). Ihre Ausgabe besteht aus diesen Wörtern als durch Leerzeichen getrennte Zeichenfolge ( "test te tests"
), Array von Zeichenfolgen ( ["test","te","tests"]
) oder einem anderen ähnlichen Ausgabeformat.
Wortlängenverteilung
Word Length - Fractional Chance / 72 - Rounded Percentage
1 - 2 / 72 - 2.78%
2 - 14 / 72 - 19.44%
3 - 16 / 72 - 22.22%
4 - 12 / 72 - 16.67%
5 - 8 / 72 - 11.11%
6 - 6 / 72 - 8.33%
7 - 5 / 72 - 6.94%
8 - 4 / 72 - 5.56%
9 - 3 / 72 - 4.17%
10 - 2 / 72 - 2.78%
Ihre Gewinnchancen müssen nicht genau übereinstimmen - sie können um 1/144
th oder .69%
in beide Richtungen abweichen (aber natürlich müssen sie immer noch zu 72/72
oder summieren 100%
).
Daten grob erraten von der vierten Seite, erste Abbildung dieses Papiers .
Testfälle mit Probenausgabe
Das Verhalten in sehr kurzen (Länge <11) Testfällen ist undefiniert.
Beachten Sie, dass ich diese von Hand erstellt habe, damit sie der oben angegebenen gleichmäßigen Verteilung folgen können oder nicht.
abcdefghijklmnopqrstuvwxyz
abcd efgh i jklmnopq rs tu vwx yz
thequickbrownfoxjumpedoverthelazydog
t heq uick brown fo xj ump edo vert helazydog
ascuyoiuawerknbadhcviuahsiduferbfalskdjhvlkcjhaiusdyfajsefbksdbfkalsjcuyasjehflkjhfalksdblhsgdfasudyfekjfalksdjfhlkasefyuiaydskfjashdflkasdhfksd
asc uyoi uawer k nb a dhcviua hsid ufe r bfa lskd jhv lkcj haius dy faj se fbks dbfkals jcuyasjehf lkjh falk sd blhsgdf asudyfekjf alk sdjfhlk asefyu iaydskfja shdflk as dhf ksd
Dies ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
quelle
Antworten:
Gelee , 28 Bytes
Ein monadischer Link, der eine Liste erstellt und eine Liste mit Listen zurückgibt.
Probieren Sie es online aus! (Die Fußzeile trennt die resultierende Liste der Listen durch Leerzeichen.)
Wie?
Verwendet alle Prozentsätze in der Verteilung, die auf die nächste Ganzzahl gerundet sind (und somit innerhalb der zulässigen Schwellenwerte von 0,69% liegen).
quelle
PHP, 94 Bytes
Laufen Sie als Pipe mit
-nR
oder probieren Sie es online aus .Nervenzusammenbruch
Hinweis:
ywgSKAF:=?
repräsentiert die zunehmenden Wahrscheinlichkeiten -1:[1,15,31,43,51,57,62,66,69,71]
quelle
rand()
jeden Vergleich anfordern würde ? Wenn nicht, könnte ich 5 Bytes sparen.Run as pipe with -nR
. Dh dieser Code soll ein Parameter für PHP sein, keine Datei. Verwenden Sieecho <input> | php -nR '<code>'
in der Befehlszeile auszuführen.Oktave, 108 Bytes
Probieren Sie es online aus!
* Nimmt die Zeichenfolge als Eingabe und gibt ein Array von Zeichenfolgen aus.
* Das letzte Element der Ausgabe kann eine leere Zeichenfolge sein.
quelle
Python 2,
154150147145 BytesOkay, dies ist mein erster Versuch mit Code Golf. Mit dem Code direkt:
Der zweite Einzug ist ein Tabulatorzeichen, wie Sie in meiner TIO-Version sehen können: Probieren Sie es online aus .
Ich füge der Zeichenfolge ein Leerzeichen entsprechend der angegebenen Verteilung hinzu. Ich habe meine Distribution sehr verbessert, indem ich Folgendes verwendet habe:
Welches gab mir:
Was ich für richtig genug halte. Ich wiederhole dann diesen Vorgang des Hinzufügens eines Leerzeichens, bis die Länge meiner Zeichenfolge erreicht ist. Ich erhöhe meinen Positionsindex auch um eins, nachdem ich ein Leerzeichen hinzugefügt habe. Ich hoffe, jemand kann mir helfen, diese Linie zu spielen, aber ich habe nicht gesehen, wie ich sie herausholen kann, ohne das erste Feld zu verfälschen.
Wenn ich meinen Text sehe, erkenne ich, dass ich viel über diese Site lernen muss. Könnte mir jemand eine Anleitung zur Verwendung der Stackoverflow-Antwortfunktion in den Kommentaren verlinken, damit ich für meine nächsten Beiträge lernen kann.
Bearbeiten:
Anscheinend habe ich beim erneuten Lesen meines Beitrags einen Weg gefunden, das i + = 1 loszuwerden. Also habe ich 4 Bytes gespart. Der neue Code sieht folgendermaßen aus:
Probieren Sie es online aus!
Bearbeiten:
Ich habe herausgefunden, dass ich einige Zeilenumbrüche entfernen kann.
Bearbeiten: Ich habe meinen Import modifiziert und die Definition von i in die Funktion eingefügt.
Probieren Sie es online aus!
quelle
Dyalog APL, 90 Bytes
Probieren Sie es online aus! Klicken Sie einige Male auf Ausführen, um zu sehen, wie sich dies ändert.
Wie?
72?⍨≢⍵
- Wirf 72-seitige Würfellänge der Eingabezeiten[...]
- Index innen(2 14 16 12 8,⌽1+⍳5)\⍳10
- Erweitern Sie den Bereich von 10 um2 14 16 12 8 6 5 4 3 2
(um einen gewichteten Zufall zu erstellen)+\
- kumulative Summe⍉2(1-⍨≢⍵)⍴
- Form als Reißverschlusstischx y z
→z x, x y, y z
o←1↓
- Erstes Element löschen(↓(o[1;2]),0),↓o
- umschließen mit seiner ersten Koordinate gepaart mit 0¨
- für jedes Paar (x, y)(2⊃⍵)↓k↑⍨⊃⍵
- Eingaben vom Index x nach y vornehmen' '~⍨
- und Leerzeichen entfernenquelle
Python 2 , 155 Bytes
Probieren Sie es online aus!
quelle
Mathematica, 164 Bytes
Nimmt eine Zeichenfolge als Eingabe
gibt ein Array von Zeichenfolgen aus
quelle
Holzkohle ,
4339 BytesProbieren Sie es online aus! Der Link führt zur ausführlichen Version des Codes. Gibt ein nachfolgendes Leerzeichen aus, wenn das letzte Wort die exakt zufällig ausgewählte Größe hatte.
quelle
Assign(Slice(q, i), q);
ohne zu arbeiten.Perl 5 , 107 Bytes
Probieren Sie es online aus!
106 Bytes Code +1 für -p
quelle
Rubin , 96 + 1 = 97 Bytes
Verwendet die
-p
Flagge.Probieren Sie es online aus!
quelle
> <> ,
168152 BytesProbieren Sie es online aus oder schauen Sie es sich auf dem Fischspielplatz an !
Zufälligkeit ist in> <> schwierig: Es gibt nur eine zufällige Anweisung,
x
die die Richtung des Fisches entweder nach oben, unten, links oder rechts festlegt. Dies ist ein kompliziertes Programm. Hier ist ein farbcodiertes Diagramm, das Ihnen hilft:Ich habe versucht, die Wahrscheinlichkeiten in Blöcke aufzuteilen, so dass die Wahrscheinlichkeiten innerhalb und zwischen den Blöcken ziemlich einfach waren (z. B. 1/3 bis 25/72). Ich habe das wie folgt gemacht:
Der Fisch beginnt am grauen Teil des Codes ( X ). Dies ist ziemlich normaler> <> Code zum Einlesen aller Eingaben. Es wird interessanter, also lasst uns weitermachen.
Als nächstes kommt der Fisch zu den hell- und dunkelgrünen Abschnitten ( Y ). Aus dem Wahrscheinlichkeitsbaum können Sie ersehen, dass sich die drei Hauptzweige jeweils zu 1/3 summieren und dass sich jeder dieser Zweige in einen 2/3 Unterzweig und einen 1/3 Unterzweig aufteilt. Die grünen Codeabschnitte decken diese beiden Ebenen des Baums ab. Zuerst wählen wir eine Zufallszahl aus 0, 1, 2 mit jeweils gleicher Wahrscheinlichkeit im oberen Lappen des hellgrünen Bits. Wir können eine 1/3 Chance mit der Vier-Wege-Anweisung simulieren, indem wir
x
einen der Ausgänge abschneiden, so dass der Fisch nur zurück zumx
- umgeleitet wird - dann gibt es nur drei Fluchtwege vomx
und aus Symmetriegründen haben sie gleiche Wahrscheinlichkeiten.Der nächste
x
, etwas unterhalb dieses, schickt den Fisch^
mit einer Chance von 2/3 zum nächsten daneben - beachten Sie, dass sich der Fisch umwickelt, wenn er von links nach links schwimmtx
- und mit einer\
Chance von 1/3 zu einem . Der Fisch schwimmt dann entlang eines der beiden Schwänze des hellgrünen Abschnitts. Diese Schwänze sind funktional gleich: Jeder prüft, ob wir zuvor 0, 1 oder 2 gedrückt haben, und verzweigt sich entsprechend. Damit sind die ersten beiden Ebenen des Baums abgeschlossen.In den nächsten sechs Abschnitten ( A - F ) werden im Wesentlichen mehr
x
s verwendet, um den Fisch weiter zu verzweigen, und dann einigeo
s, um eine Anzahl von Buchstaben aus der Eingabe zu drucken. Diese Abschnitte reichen von einfach (z. B. dunkelblau, C , das nur drei Buchstaben druckt) bis nicht so einfach (z. B. Orange, D , das zwei benötigt)x
Sekunden benötigt, um eine 3 / 8–5 / 8-Teilung zu simulieren und Buchstaben einzudrucken mehrere Stufen). Die Details davon bleiben als Übung. (Ich bin besonders zufrieden mit Gelb, E , das den Fisch in einer Schleife schickt!)Nach jedem dieser Zweige erreicht der Fisch schließlich den rosa Abschnitt ( Z ). Dadurch werden alle Zweige wieder zusammengezogen, ein Leerzeichen gedruckt, und der Fisch springt schließlich zu Position (2,2) im Raster und beginnt beim ersten Mal erneut
x
.Für den Fall, dass die obige Erklärung "es ist kompliziert" Sie nicht davon überzeugt, dass dies die richtigen Wahrscheinlichkeiten ergibt, habe ich dies auch an einer Eingabezeichenfolge mit einer Länge von 65.000 (64 KiB, nur 13 Sekunden in TIO!) Und der daraus resultierenden Verteilung der Wortlängen getestet war
Diese Wahrscheinlichkeiten sind höchstens 0,0044 von den erwarteten Wahrscheinlichkeiten entfernt.
quelle