hackertyper.net


11

Einführung

hackertyper.net ist eine Website, die "Hacking" simuliert (wie es die Medien darstellen), indem sie komplizierten Code aus dem Krypto-Bereich des Linux-Kernels auf dem Bildschirm ausgibt, während Sie mit einer Rate von 3 Zeichen pro eingegebenem Zeichen eingeben.

Herausforderung

Ihr Programm / Ihre Funktion sollte entweder eine Datei als Befehlszeilenargument akzeptieren, den Dateipfad fest codieren lassen oder den Text [der sich in der Datei befinden würde] als Befehlszeilen- oder Funktionsargument akzeptieren und hackertyper.net imitieren durch Ausgabe von 3 Zeichen auf dem Bildschirm (STDOUT oder gleichwertig) aus der Datei für jedes über STDIN oder gleichwertig empfangene Zeichen.

Sobald EOF erreicht ist, sollte das Programm wieder am Anfang der Datei Zeichen ausgeben (Wrap).

Technische Daten

Der Einfachheit halber können Sie davon ausgehen, dass STDIN bereits auf keinen Puffer und keinen Echomodus eingestellt ist. Dies wartet nicht darauf, dass der Benutzer die Eingabetaste drückt, bevor die Eingabe an Ihr Programm übergeben wird und die von Ihnen eingegebenen Zeichen nicht angezeigt werden.

Die Datei kann Zeilenumbrüche enthalten, während die Eingabe keine Zeilenumbrüche enthält .

Ein kleines Beispiel in C (nicht mit Golf), das zeigt, wie dies funktioniert, finden Sie hier .

Grüner Text und ein schwarzer Hintergrund sind nicht erforderlich.

Beispiel für Ein- und Ausgabe

Die Datei:

#include <stdio.h>
int main() { }

Eingang:

hello world

Ausgabe:

#include <stdio.h>
int main() { }

Die Datei:

hello

Eingang:

hello world

Ausgabe:

hellohellohellohellohellohellohel

1
1. Sind Funktionen zulässig (die zwei Zeichenfolgen als Argument verwenden und eine weitere Zeichenfolge zurückgeben)? 2. Ihre Spezifikation besagt, dass für jede Eingabe drei Zeichen ausgegeben werden sollen, in den Beispielen wird jedoch nur eines für jede Eingabe ausgegeben.
Türknauf

1
@ Doorknob 1. Ja und 2. Das war ein Fehler, behoben.
Majora320

Haben wir haben die Dateiinformationen in eine Datei zu übernehmen, oder können wir erhalten diese Informationen auch über ein Funktionsargument oder gleichwertig? Wenn wir müssen, wie lautet der Name dieser Datei? Befindet es sich in einem bestimmten Verzeichnis außerhalb unserer Skripte oder in demselben Verzeichnis wie unsere Skripte?
R. Kap


3
Boni sind schlecht. Und außerdem erhalten nur sehr wenige Menschen die Strafe, und es ist verwirrend, sie als "Bonus" zu bezeichnen.
CalculatorFeline

Antworten:


7

Gelee , 4 Bytes

ẋ3ṁ@

Probieren Sie es online aus!

Wie es funktioniert

ẋ3ṁ@    Main link. Arguments: s (input string), t (file string)

ẋ3      Repeat s three times.
  ṁ@    Mold; reshape t like the previous result.
        This repeats the elements of t over and over until the length matches that
        of s repeated thrice.

Ich habe mich immer gefragt, was "Schimmel" bedeutet ...
Leaky Nun

18
@KennyLau Ich denke, es bedeutet, dass es Zeit ist, das Brot wegzuwerfen.
Alex A.

4

J , 7 Bytes

$~(3*#)

Nimmt zwei Argumente an, den zu wiederholenden Text und den Eingabetext des Benutzers.

Verwendung

Der Eingabetext ist so formatiert, ,dass er verbunden werden soll, und LFist das Zeilenumbruchzeichen.

   f =: $~(3*#)
   ('#include <stdio.h>', LF, 'int main() { }') f 'hello world'
#include <stdio.h>
int main() { }
   'hello' f 'hello world'
hellohellohellohellohellohellohel

Probieren Sie es online aus. (tryj.tk)




3

JavaScript (ES6), 40 Byte

(s,t)=>s.repeat(l=t.length*3).slice(0,l)

Wo sist die Datenzeichenfolge und tist die Benutzerzeichenfolge. Angenommen, es sist nicht leer und wird lmehrmals wiederholt, um sicherzustellen, dass seine Länge mindestens lso ist, dass die ersten lZeichen zurückgegeben werden können, wobei ldie dreifache Länge von ist t.


3

Haskell, 25 Bytes

Das erste Argument ist, was "getippt" ist, das zweite die Quelle, die angezeigt werden soll

(.cycle).take.(3*).length

Oder nicht punktfrei, um (möglicherweise) besser lesbar zu sein:

h a=take(3*length a).cycle

Was ist cycle?
CalculatorFeline

@CatsAreFluffy cyclenimmt eine Liste und wiederholt sie unendlich. ZBcycle "hi" == "hihihihi..
Michael Klein

Hast du darüber nachgedacht $?
CalculatorFeline

@CatsAreFluffy Ich bin mir nicht sicher, wo ich es verwenden würde, was hast du dir gedacht?
Michael Klein

3

Python 3.5, 77 65 63 Bytes:

lambda g,f:''.join((g*len(f))[i:i+3]for i in range(0,len(f)*3,3))

Einfach genug. Eine anonyme Funktion, die zwei Argumente akzeptiert, wobei das erste die "Datei" ( g) und das zweite die vom Benutzer ( f) eingegebenen Zeichen sind . Dies erzeugt dann einen Generator, der alle drei Zeichen enthält g, die durch Indizieren für jedes iund dann i+3Zeichen in gefunden werden g, wo iim Bereich von liegt 0=>(length of f)*3. Schließlich wird jedes Objekt im Generator zurückgegeben, das zu einer großen Zeichenfolge verbunden ist. Sie rufen diese Funktion auf, indem Sie ihr eine Variable zuweisen und dann die in einen print()Ausdruck eingeschlossene Variable aufrufen . Wenn also der Name der Funktion qwäre, würde sie wie folgt ausgeführt print(q(<byte array here>)).

Probieren Sie es online aus! (repl.it)


2

05AB1E , 7 Bytes

Code:

3×g©×®£

Erläuterung:

3×        # Multiply the input string three times.
  g       # Take the length.
   ©      # Copy that to the register.
    ×     # Multiply by the second input.
     ®    # Retrieve the length from the register.
      £   # Only keep [0:length * 3] from the new string.

Probieren Sie es online aus! .



2

Ruby, 39 Bytes

$<Liest in Ruby aus der angegebenen Datei in den Befehlszeilenargumenten, anstatt $stdineines anzugeben. (Wenn Sie vergessen, eine Datei anzugeben, erhalten Sie eine leere Ausgabe, da sie alles aus $stdinin liest $<.readund somit STDIN.read.size0 ist.)

$><<($<.read*s=3*STDIN.read.size)[0,s]
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.