hackertyper.net


11

introduzione

hackertyper.net è un sito web che simula "l'hacking" (come lo ritrae il media) emettendo sullo schermo codice complicato dalla sezione crittografica del kernel Linux mentre digiti a una velocità di 3 caratteri per uno immesso.

Sfida

Il tuo programma / funzione dovrebbe accettare un file come argomento della riga di comando, avere il percorso del file hardcoded o accettare il testo [che sarebbe nel file] come argomento della riga di comando o della funzione e imitare hackertyper.net inviando 3 caratteri sullo schermo (STDOUT o equivalente) dal file per ognuno ricevuto tramite STDIN o equivalente.

Una volta raggiunto EOF, il programma dovrebbe ricominciare a emettere caratteri dall'inizio del file (a capo).

Specifiche

Per motivi di semplicità, puoi supporre che STDIN sia già stato impostato su nessun buffer e nessuna modalità di eco, che non è in attesa che l'utente prema invio prima di passare l'input al programma e non visualizzare i caratteri digitati.

Il file può contenere newline, mentre l'input non conterrà newline .

Per un piccolo esempio scritto in C (non giocato a golf) che dimostra come funziona, guarda questo .

Non sono richiesti testo verde e sfondo nero.

Esempio di input e output

Il file:

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

Ingresso:

hello world

Produzione:

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

Il file:

hello

Ingresso:

hello world

Produzione:

hellohellohellohellohellohellohel

1
1. Sono ammesse funzioni (che accettano due stringhe come argomento e restituiscono un'altra stringa)? 2. Le tue specifiche dicono di produrre tre caratteri per ogni input, ma gli esempi ne producono solo uno per ogni input.
Maniglia della porta

1
@Doorknob 1. Sì, e 2. È stato un errore, risolto.
Majora320,

Dobbiamo dobbiamo prendere le informazioni sul file in un file, o possiamo anche ricevere le informazioni attraverso un argomento di funzione o equivalente? Se dobbiamo, quale sarà il nome di quel file? Sarà in una directory specifica lontana dai nostri script o nella stessa dei nostri script?
R. Kap


3
I bonus vanno male. E in più pochissime persone riceveranno la penalità e chiamarla "bonus" è confusa.
CalculatorFeline

Risposte:


7

Gelatina , 4 byte

ẋ3ṁ@

Provalo online!

Come funziona

ẋ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.

Mi sono sempre chiesto cosa significhi "muffa" ...
Leaky Nun

18
@KennyLau Penso che significhi che è ora di buttare via il pane.
Alex A.

4

J , 7 byte

$~(3*#)

Accetta due argomenti, il testo da ripetere e il testo di input dell'utente.

uso

Il testo di input è formattato dove ,significa unirsi ed LFè il carattere di nuova riga.

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

Provalo online. (Tryj.tk)


4

Gelatina, 9 byte

⁴L×3
ẋ¢ḣ¢

Provalo online!

⁴L×3     Define nilad as ¢:

 L       length of
⁴        second argument
  ×3     tripled


ẋ¢ḣ¢     Main chain:

         the first argument (implicit)
ẋ        repeated
 ¢       ¢ many times
  ḣ¢     then get the first ¢ characters of it.

2
Immagino che tu sia un po '"gelatina" della risposta di Dennis?
Dennis van Gils,

Jelly is evil ..
CalculatorFeline


3

JavaScript (ES6), 40 byte

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

Dov'è sla stringa di dati ed tè la stringa dell'utente. Presuppone snon vuoto e lo ripete lvolte per garantire che la sua lunghezza sia almeno ltale da poter restituire i primi lcaratteri, dove lè tre volte la lunghezza di t.


3

Haskell, 25 byte

Il primo argomento è ciò che è "digitato", il secondo la fonte da visualizzare

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

O non inutile, per (possibilmente) una migliore leggibilità:

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

Cosa cycle?
CalculatorFeline

@CatsAreFluffy cycleprende un elenco e lo ripete all'infinito. Ad esempiocycle "hi" == "hihihihi..
Michael Klein,

Hai preso in considerazione $?
CalculatorFeline

@CatsAreFluffy Non sono sicuro di dove lo userei, cosa stavi pensando?
Michael Klein,

3

Python 3.5, 77 65 63 byte:

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

Abbastanza semplice. Una funzione anonima che accetta due argomenti, il primo è il "file" ( g) e il secondo sono i caratteri digitati dall'utente ( f). Quindi questo crea un generatore contenente ogni tre caratteri in g, che si trovano indicizzando per ogni ie poi i i+3caratteri in g, dove si itrova nell'intervallo di 0=>(length of f)*3. Infine, restituisce ogni oggetto nel generatore unito in una grande stringa. Si chiama questa funzione assegnandole una variabile e quindi chiamando la variabile racchiusa in print()un'espressione. Quindi, se il nome della funzione fosse q, verrebbe eseguito come print(q(<byte array here>)).

Provalo online! (Repl.it)


2

05AB1E , 7 byte

Codice:

3×g©×®£

Spiegazione:

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.

Provalo online! .


2

Jolf, 10 byte

]*iγl*I30γ

Provalo qui!

Spiegazione

]*iγl*I30γ
 *i        repeat string 1
    l*I3    the length of the other string * 3
   γ        γ = (^)
]       0γ  (^).slice(0, γ)

2

Rubino, 39 byte

In Ruby, $<legge dal file fornito negli argomenti della riga di comando anziché $stdinse ne viene fornito uno. (Se si dimentica di fornire un file, si ottiene un output vuoto perché legge tutto da $stdindentro $<.reade quindi STDIN.read.sizesarà 0.)

$><<($<.read*s=3*STDIN.read.size)[0,s]
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.