Ihre Herausforderung besteht darin, ein Programm oder eine Funktion zu schreiben, die einen String in Schwierigkeiten bringt. Es sollte eine Zeichenfolge als Eingabe (über eine beliebige Standardmethode) verwendet werden. Führen Sie dann die folgenden Schritte aus:
- Generieren Sie eine (nicht unbedingt einheitliche) zufällige ganze Zahl n zwischen 1 und 10 einschließlich.
- Warte n Sekunden.
- Drucken Sie die ersten / nächsten n Zeichen der Eingabe oder den Rest der Eingabe, wenn weniger als n Zeichen vorhanden sind.
- Wenn noch Eingaben zum Drucken vorhanden sind, kehren Sie zu Schritt 1 zurück.
Regeln
- Die Eingabe ist immer eine nicht leere Zeichenfolge, die nur ASCII-Zeichen enthält (32-126).
- Die Wartezeit muss nicht genau n Sekunden betragen, sondern muss innerhalb von 10% von n liegen .
- Sie können jedes Mal, wenn ein Textabschnitt gedruckt wird, eine abschließende neue Zeile drucken.
Beispiel
Ein Leerzeichen steht hier für 1 Sekunde. Wenn die Eingabe ist Hiccupinator!
, könnte eine Ausgabe sein:
Hic cupin a tor!
Wertung
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes .
Antworten:
Scratch, 16 Blöcke + 6 Bytes
Angenommen, die Eingabe ist bereits als Liste von Zeichen definiert (
["H","e","l","l","o"," ","W","o","r","l","d"]
).quelle
Pushy ,
201716 oder 13 BytesJe nachdem, was erlaubt ist, gibt es zwei Lösungen.
16 Bytes:
Geben Sie Argumente auf der Kommandozeile:
$ pushy hiccup.pshy 'hiccupinator'
. Dies wird mit nachgestellten Zeilenumbrüchen nach jedem "Schluckauf" gedruckt. Hier ist die Aufteilung:13 Bytes:
Während ich die obige Antwort codierte, kam ich zu dieser deutlich kürzeren Lösung:
Obwohl dies ähnlich ist, wird direkt von der Zeichenfolge gedruckt, anstatt eine neue Zeichenfolge für weniger Bytes zu erstellen. Dies setzt
N
voraus, dass zu Beginn des Programms keine Zeilenumbrüche gesetzt werden, da sich sonst jedes Zeichen in einer neuen Zeile befindet.Als ich dies testete, bemerkte ich jedoch einen Fehler -
stdout
ist zeilengepuffert, so dass das Programm auf die volle Länge warten und dann den hiccuped String anzeigen würde.Ich habe dies im letzten Commit durch Hinzufügen eines einfachen behoben
.flush()
- dies fügt der Sprache technisch gesehen keine neue Funktion hinzu, sondern behebt nur einen Fehler, aber ich verstehe, wenn Sie diese Antwort nicht berücksichtigen :)Die Aufteilung sieht folgendermaßen aus:
quelle
Javascript (ES6)
9189 Bytes2 Bytes dank @zeppelin gespart
Missbrauch der 10% -Toleranz für die Wartezeit durch Warten auf
n<<10 === 1024*n
Millisekunden.Da Sie sagten, dass die Wartezeit innerhalb von 10% von n liegen muss , habe ich beschlossen, ein Byte zu speichern und statt 1 Sekunde 999 Millisekunden zu warten.Dank @ETHProductions brauche ich die Dummheit von 999 Millisekunden nicht mehr
quelle
1e3
;-)Python 2,
9392 Bytes-1 Byte dank Flp.Tkc
Ich bin mir sicher, dass es einen Weg gibt, das
random.randint
und zu verkürzentime.sleep
, aber esfrom random,time import*
funktioniert nicht ...quelle
from random,time import*
funktioniert nicht, weil Python nicht weiß, von welchem Modul Sie Bibliotheken importieren möchten.while v1:n=ri(1,10);_i("time").sleep(n);p(v1[:n]);v1=v1[n:];
( Übernimmt Eingaben von Kommandozeilenargumenten)import random,time
def F(s):
if s:n=random.randint(1,10);time.sleep(n);print s[:n];F(s[n:])
Perl 6 , 62 Bytes
Erweitert
quelle
Batch, 131 Bytes
Die Verwendung von
set/pn=<nul
hätte einen schöneren Effekt erzielt, außer dass Leerzeichen abgeschnitten werden.quelle
Pyth, 16 Bytes
Sie können es online ausprobieren , aber es funktioniert nicht gut, da der Online-Interpreter die Ausgabe erst anzeigt, wenn das Programm beendet ist.
Erläuterung
quelle
MATL , 19 Bytes
Wie es funktioniert
Probieren Sie es online! Der Online-Compiler erzeugt nach und nach die Ausgaben mit den Pausen.
quelle
BaCon , 93 Bytes
Eine Lösung in BASIC. Die Funktion RANDOM () generiert eine Zahl zwischen 0 und n-1. Daher müssen wir RANDOM (11) verwenden, um eine Zahl zwischen 0 und 10 zu erhalten.
Beispielsitzung, erste Zeile ist die Eingabe, zweite die Ausgabe:
quelle
n=RANDOM(10)+1
, Ihre Codezeile wird eine Zahl von 0-10 einschließlich, nicht 1-10Perl, 42 Bytes
41 Byte Code + 1 für
-n
.Ich musste Perl zwingen, die Ausgabe zu leeren, da sie zunächst nichts bis zum Ende zeigte und daher eingestellt wurde
$|
. Wir verwenden$-
, um die Anzahl der Zeichen zu verfolgen,print
da dies nicht negativ sein kann (also kann ich es verwenden--$-
und es wird immer falsch sein, wenn es leer ist) und es ist auch sofloor
, obwohl ich die Rückgabe vonsleep
für dieses jetzt benutze, dass es nicht tut ist nicht wirklich wichtig.Verwendung
quelle
Ruby, 56 Bytes
Ein rekursives Lambda. Rufen Sie gerne an
f["Hello, World!"]
.quelle
> <> (Fisch)
10388 BytesOnline-Dolmetscher hier gefunden!
Erster Versuch dieses Problems (nicht Golf).
Es wartet eine bestimmte Anzahl von Schleifen (n), da Fische keinen Timer haben, auf den zugegriffen werden kann (Ausführung in Ticks).
Bearbeiten 1: Die letzte Zeile wurde nach oben verschoben (die letzten 2 Zeichen und die Startwerte wurden erneut verwendet. (Einsparung von 15 Bytes).
quelle
Bash, 78 Bytes
Da noch niemand eine Bash-Lösung veröffentlicht hat, finden Sie hier eine. Einfach und doch klein genug.
Golf gespielt
Prüfung
quelle
PHP, 81 Bytes
verwenden wie:
quelle
C ++ 14, 202 Bytes
Erfordert die Eingabe eines
std::string
Ungolfed und Nutzung:
quelle
using namespace std;
sollte 5 Bytes von all diesenstd::
sstd::
ist nur im Verwendungscode, im Golf gibt es nur 4205 Bytes
Ich bin mir sicher, dass dies zerstört werden kann, ich habe es in der jetzigen Form überhaupt nicht optimiert.
Nicht golfen:
quelle
PHP, 74 Bytes
Laufen Sie mit
php -r 'code' "string"
.quelle
C, 149 Bytes, nicht getestet
zu rennen, hinzufügen
dann kompilieren und ausführen
quelle
Python 3, 99 Zeichen
quelle