Inspiriert von dieser Chat-Mini-Challenge.
Wenn Sie eine Zeichenfolge als Eingabe angeben (nur ASCII-druckbare Zeichen), geben Sie die Zeichenfolge mit den Buchstaben "raining" aus. Jeder Buchstabe muss eine zufällige Anzahl von Zeilen nach unten sein (zufällig dazwischen)0
und die Länge der Zeichenfolge, jede mit einer Wahrscheinlichkeit ungleich Null) und nur ein Zeichen pro Spalte sein. Alle möglichen Ausgaben müssen wieder eine Wahrscheinlichkeit ungleich Null haben.
Das ist vielleicht ein bisschen verwirrend, also hier ein Beispiel (aus dieser CMC):
Hello World
d
H
o
llo
l
W
e
r
Beachten Sie, wie das H
eine Leerzeichen nach unten ist, die d
Null nach unten ist und llo
alle zufällig in einer Reihe stehen. Das r
ist das am weitesten unten liegende, 9
ist aber immer noch weniger als die Saitenlänge von der Spitze entfernt. Dies ist nur ein Beispiel, es gibt Dutzende anderer EingabemöglichkeitenHello World
.
Andere Beispiele könnten sein:
test
t
e
s
t
PP&CG
& G
P
P C
- Die Ein- und Ausgabe kann auf jede bequeme Weise erfolgen .
- Die Eingabe ist garantiert nicht leer (dh Sie werden niemals
""
als Eingabe empfangen ). - Sie können es an STDOUT drucken oder als Funktionsergebnis zurückgeben.
- Es ist entweder ein vollständiges Programm oder eine Funktion zulässig.
- Beliebig viel fremdes Leerzeichen ist akzeptabel, solange die Zeichen richtig ausgerichtet sind (z. B. können Sie die Zeichen auch als Rechtecke auffüllen).
- Standardlücken sind verboten.
- Dies ist Codegolf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Byte) gewinnt.
Antworten:
R , 104 Bytes
Probieren Sie es online!
Eingabe als String; schreibt an stdout
quelle
scan(,'')
eine Reihe von Aufrufen verwenden und verschachteln, aber ehrlich gesagt bevorzuge ich den Funktionsansatz. Dieser andere Ansatz ist für minimalen Gewinn abscheulich. Könnte jedoch einige Ideen auslösen. Probieren Sie es online!sample(l,,T)
reicht stattsample(l,l,T)
(-1 Byte).JavaScript (ES6), 72 Byte
Übernimmt die Eingabe als Liste von Zeichen. Gibt eine Zeichenmatrix zurück.
Probieren Sie es online!
quelle
(0|'A') === (0|undefined)
die verbleibenden Buchstaben nicht mehr in der letzten Zeile erscheinen. (Im Grunde ist es so, als ob|!a[y+1]
es komplett entfernt wurde.)Math.random()
eine Zahl in [0, 1) zurückgegeben wird, kann also nichtMath.random()<.5
werdenMath.random()>0
?math.random()
Implementierung verwenden, die einen internen Status hat und daher keine eindeutige Ausgabe generieren kann.Pyth - 9 Bytes
Gibt eine Liste von Zeilen aus.
Probieren Sie es online aus .
quelle
J ,
30 bis19 BytesProbieren Sie es online!
quelle
0|:]{.~"+_1-#?#
für 15 Bytes0|:]{.~"+_2-#?@##
für 17 Bytes tun, ohne das Verhalten Ihrer Antwort zu ändern.Japt , 8 Bytes
-1 Byte von @Shaggy
Probieren Sie es online!
quelle
APL (Dyalog Unicode) , 16 Byte SBCS
Anonyme implizite Präfixfunktion
≢
Länge der Zeichenfolge1+
man fügte hinzu≢⍴
"Länge" Kopien davon∘?
zufällige ganze Zahlen im Bereich 1 ... diese und dann ...∘-
negieren und dann ...⊢↑¨⍨
nimm als viele Elemente von jedem Charakter und fülle links mit Leerzeichen auf∘↑
Mischen Sie die Liste der Zeichenfolgen in eine Matrix und füllen Sie sie mit Leerzeichen auf der rechten Seite⍉
transponierenProbieren Sie es online!
quelle
Japt , 8 Bytes
Versuch es
quelle
Gelee , 10 Bytes
Probieren Sie es online!
quelle
0..(length - 1)
? Die Frage gibt zwischen 0 und der Stringlänge an. Oder vermisse ich etwas?Ruby ,
595755 BytesProbieren Sie es online!
Eingabe von 1D, Ausgabe von 2D-Zeichenfeldern.
quelle
PHP , 88 Bytes
Probieren Sie es online!
Oder 94 Bytes mit den kryptografischen Zufallszahlen von PHP .
Probieren Sie es online!
Eingabe von
STDIN
, Ausgabe anSTDOUT
. Rennen wie:-1 Byte (leere Zeichenkette statt Leerzeichen) und +1 Byte (Fehler auf der Seite der Regeln) Danke an @ ASCII-only!
quelle
<?php
, das?>
schließt. Auch scheint es in Ordnung zu sein, wenn$o
die leere Zeichenfolgerand
Funktion nicht möglich , da Sie einen Eingabetext haben können, der mehr Zufall als die Größe des internen Textes erfordert seed rand verwendet, so technisch Ihre Antwort nicht in allen Situationen diese Bedingung zu erfüllenrand
für vieles nicht nützlich ist, jedoch verwenden alle unterstützten / Produktionsversionen von PHP (7.1+mt_rand
) intern Mersenne Twister RND ( ) für eine Zufallszahlengenerierung. Befürchten Sie, dass dies für diese Herausforderung nicht zufällig genug ist?mt_rand
verwendet auch intern ein Pseudozufallszahlensystem und weist auch die Einschränkungen auf. Angenommen, PHP wird mit 64-Bit-Zahlen kompiliert (und der Startwert, der für diesen gesamten Bereich verwendet wirdrand
odermt_rand
diesen akzeptiert), würde eindeutige Ausgaben für Wörter mit einer Länge von bis zu 13 Zeichen oder weniger generieren. Ziemlich einschränkend, wenn Sie mich fragenKohle ,
109 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Bearbeiten: 1 Byte dank nur @ ASCII gespeichert. Erläuterung:
Wie nur in ASCII angegeben, können Sie die Buchstaben für den gleichen Effekt nach dem Zufallsprinzip nach oben statt nach unten verschieben (mit der Ausnahme, dass möglicherweise unten und nicht oben ein zusätzlicher Leerraum vorhanden ist). Das Drucken eines Arrays von Zeichen nach oben entspricht dem normalen Drucken einer Zeichenfolge, sodass der Abstand jedes Zeichen nur um einen zufälligen Betrag vertikal versetzt.
quelle
05AB1E (Legacy) , 9 Byte
Eingabe als Zeichenfolge oder Liste von Zeichen (entweder ist in Ordnung).
Probieren Sie es online aus.
Viel langsamere 9-Byte-Alternative:
Eingabe als Liste von Zeichen.
Probieren Sie es online aus.
Beide verwenden die Legacy - Version von 05AB1E, da die neue Version explizit erfordert ,
€S
bevor dieζ
..Erläuterung:
quelle
gD¸s∍ÝδΩ
aber es ist länger ... und ooo ... das funktioniert im neuen 05AB1E nicht einmal;).C (gcc) 131 Bytes
Probieren Sie es online!
quelle
R[j=i%l]?32:s[j]));
stattdessen vorR[j]?32:s[j]))j=i%l;
Julia, 69 Bytes
Dies definiert eine Funktion
f
, die einString
oder akzeptiertVector{Char}
und ein zurückgibtMatrix{Char}
.Ungolfed:
Beispiel:
Das könnte sicherlich besser sein; Meine Golffähigkeiten sind ziemlich rostig.
Probieren Sie es online!
quelle
Perl 5
-F
,5049 Bytes-1 von @DomHastings
Probieren Sie es online!
quelle
map$_||$",@$_
!PowerShell ,
10810298 Byte-4 Bytes dank mazzy
Probieren Sie es online!
Grundsätzlich wird
1..length
die Zeichenfolge zweimal wiederholt, einmal, um zufällige Zeilenpositionen für jedes Zeichen zu ermitteln, und ein zweites Mal, um jede Zeile mithilfe dieser Indizes zu erstellen. In einem Durchgang herauszufinden, wie es geht, ist die große Byte-Einsparung.quelle
SmileBASIC 3, 62 Bytes
quelle
Rot , 84 Bytes
Probieren Sie es online!
quelle
Python - 92 Bytes
quelle
import random
from random import*
stattdessen verwenden.map(None,...
funktioniert nicht in Python 3, daher sollten Sie Python 2 in Ihrem Titel angeben.K (ok) , 20 Bytes
Lösung:
Probieren Sie es online!
Erläuterung:
quelle
Python 3 ,
140131 BytesProbieren Sie es online!
quelle
Python 3, 208 Bytes
Erstellt eine Liste mit zufälligen Auswahlen und erstellt dann überall eine Liste mit Spalten mit Leerzeichen, außer an dem von jeder zufälligen Auswahl angegebenen Index. Die Spalten werden in Zeilen transponiert und mit Zeilenumbrüchen ausgedruckt.
Probieren Sie es online!
quelle