hackertyper.net


11

Introdução

hackertyper.net é um site que simula "hackers" (como a mídia o retrata), exibindo códigos complicados da seção de criptografia do kernel Linux na tela enquanto você digita a uma taxa de 3 caracteres por um inserido.

Desafio

Seu programa / função deve aceitar um arquivo como argumento da linha de comando, ter o caminho do arquivo codificado ou aceitar o texto [que estaria no arquivo] como argumento da linha de comando ou função e imitar hackertyper.net produzindo 3 caracteres na tela (STDOUT ou equivalente) do arquivo para cada um recebido através de STDIN ou equivalente.

Uma vez alcançado o EOF, o programa deve começar a produzir caracteres do início do arquivo novamente (quebra automática).

Especificações

Por motivos de simplicidade, você pode assumir que o STDIN já foi definido como modo sem buffer e sem eco, que não estará aguardando até que o usuário pressione enter antes de passar a entrada para o seu programa e não exibir os caracteres digitados.

O arquivo pode conter novas linhas, enquanto a entrada não conterá novas linhas .

Para um pequeno exemplo escrito em C (sem golfe) que demonstra como isso funciona, consulte isso .

Texto verde e fundo preto não são necessários.

Exemplo de entrada e saída

O arquivo:

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

Entrada:

hello world

Resultado:

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

O arquivo:

hello

Entrada:

hello world

Resultado:

hellohellohellohellohellohellohel

1
1. As funções são permitidas (que pegam duas strings como argumento e retornam outra string)? 2. Sua especificação diz que a saída de três caracteres para cada entrada, mas os exemplos produzem apenas um para cada entrada.
Maçaneta

1
@ Doorknob 1. Sim e 2. Isso foi um erro, corrigido.
precisa saber é o seguinte

Temos que receber as informações do arquivo como um arquivo ou também podemos recebê-las através de um argumento de função ou equivalente? Se for necessário, qual será o nome desse arquivo? Ele estará em um diretório específico, fora do (s) nosso (s) script (s), ou no mesmo que o nosso (s) script (s)?
R. Kap


3
Bônus sejam ruins. Além disso, pouquíssimas pessoas receberão a penalidade, e chamar isso de "bônus" é confuso.
CalculatorFeline

Respostas:


7

Gelatina , 4 bytes

ẋ3ṁ@

Experimente online!

Como funciona

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

Eu sempre me perguntei o que significa "mofo" ...
Leaky Nun

18
@KennyLau Eu acho que significa que é hora de jogar fora o pão.
Alex A.

4

J , 7 bytes

$~(3*#)

Leva dois argumentos, o texto a ser repetido e o texto de entrada do usuário.

Uso

O texto de entrada é formatado onde ,significa ingressar e LFé o caractere de nova linha.

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

Experimente online. (tryj.tk)


4

Geléia, 9 bytes

⁴L×3
ẋ¢ḣ¢

Experimente 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
Eu acho que você é um pouco "geléia" da resposta de Dennis?
Dennis van Gils

Jelly is evil ..
CalculatorFeline


3

JavaScript (ES6), 40 bytes

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

Onde sestá a sequência de dados e ta sequência do usuário. Assume que snão é vazio e o repete várias lvezes para garantir que seu comprimento seja pelo menos suficiente lpara que ele possa retornar os primeiros lcaracteres, onde lé três vezes o comprimento de t.


3

Haskell, 25 bytes

O primeiro argumento é o que é "digitado", o segundo a fonte a ser exibida

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

Ou sem ponto, para (possivelmente) melhor legibilidade:

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

O que é cycle?
CalculatorFeline

O @CatsAreFluffy cyclepega uma lista e a repete infinitamente. Por exemplocycle "hi" == "hihihihi..
Michael Klein

Você já considerou $?
CalculatorFeline

@CatsAreFluffy Não tenho certeza de onde usá-lo, o que você estava pensando?
22616 Michael

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))

Simples o suficiente. Uma função anônima que recebe dois argumentos, o primeiro sendo o "arquivo" ( g) e o segundo sendo os caracteres digitados pelo usuário ( f). Em seguida, isso cria um gerador contendo cada três caracteres em g, que são encontrados pela indexação de cada caractere ie, em seguida i+3, em g, onde iestá no intervalo de 0=>(length of f)*3. Finalmente, ele retorna cada objeto no gerador unido em uma grande string. Você chama essa função atribuindo uma variável a ela e, em seguida, chamando a variável agrupada dentro de uma print()expressão. Portanto, se o nome da função fosse q, seria executado como print(q(<byte array here>)).

Experimente online! (repl.it)


2

05AB1E , 7 bytes

Código:

3×g©×®£

Explicação:

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.

Experimente online! .


2

Jolf, 10 bytes

]*iγl*I30γ

Experimente aqui!

Explicação

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

2

Ruby, 39 bytes

No Ruby, $<lê o arquivo fornecido nos argumentos da linha de comando, e não $stdinse for fornecido um. (Se você se esqueça de fornecer um arquivo, você obter uma saída em branco porque ele lê tudo fora de $stdinnos $<.reade, assim, STDIN.read.sizeserá 0.)

$><<($<.read*s=3*STDIN.read.size)[0,s]
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.