Seu desafio é escrever um programa ou função que soluça uma string. Ele deve receber uma string como entrada (por qualquer método padrão) e siga estas etapas:
- Gere um número inteiro aleatório n (não necessariamente uniforme) entre 1 e 10, inclusive.
- Aguarde n segundos.
- Imprimir o inicial / próximo n caracteres da entrada ou o restante da entrada se houver menos de n caracteres.
- Se ainda houver entrada para impressão, volte para a etapa 1.
Regras
- A entrada sempre será uma sequência não vazia contendo apenas caracteres ASCII (32-126).
- O tempo de espera não precisa ser exatamente n segundos, mas deve estar dentro de 10% de n .
- Você pode imprimir uma nova linha final sempre que uma seção do texto for impressa.
Exemplo
Um espaço aqui representa 1 segundo. Se a entrada for Hiccupinator!
, uma saída pode ser:
Hic cupin a tor!
Pontuação
Isso é código-golfe , então o código mais curto em bytes vence .
Respostas:
Scratch, 16 blocos + 6 bytes
Supõe que a entrada já esteja definida como uma lista de caracteres (
["H","e","l","l","o"," ","W","o","r","l","d"]
)fonte
Pushy ,
201716 ou 13 bytesDependendo do que é permitido, existem duas soluções.
16 bytes:
Dê argumentos na linha de comando:
$ pushy hiccup.pshy 'hiccupinator'
. Isso é impresso com novas linhas após cada 'soluço'. Aqui está o detalhamento:13 bytes:
Ao codificar a resposta acima, eu vim com esta solução significativamente mais curta:
Embora faça algo semelhante, ele imprime diretamente da string em vez de construir uma nova string, por menos bytes. Isso requer que,
N
no início do programa, impeça o rastreamento de novas linhas, ou cada caractere estaria em uma nova linha.No entanto, ao testar isso, notei um bug -
stdout
é buffer de linha, de modo que o programa esperaria todo o comprimento e exibisse a string soluçada.Corrigi isso na confirmação mais recente adicionando um simples
.flush()
- tecnicamente, não adicionamos um novo recurso ao idioma, apenas corrigimos um bug, mas entendo se você não levar em conta essa resposta :)A repartição é assim:
fonte
Javascript (ES6)
9189 byteseconomizou 2 bytes graças a @zeppelin
Abusa a tolerância de 10% para o tempo de espera, aguardando
n<<10 === 1024*n
milissegundos.Como você disse que o tempo de espera precisa estar dentro de 10% de n , decidi economizar um byte e aguardar 999 milissegundos em vez de 1 segundo.Não preciso mais da bobagem de 999 milissegundos graças a @ETHProductions
fonte
1e3
;-)Python 2,
9392 bytes-1 byte graças ao Flp.Tkc
Tenho certeza de que existe uma maneira de reduzir o
random.randint
etime.sleep
, masfrom random,time import*
não funciona ...fonte
from random,time import*
não funciona porque o Python não sabe de qual módulo você deseja importar bibliotecas.while v1:n=ri(1,10);_i("time").sleep(n);p(v1[:n]);v1=v1[n:];
(Obtém entrada da linha de comando args)import random,time
,def F(s):
newlineif s:n=random.randint(1,10);time.sleep(n);print s[:n];F(s[n:])
Perl 6 , 62 bytes
Expandido
fonte
Lote, 131 bytes
O uso
set/pn=<nul
daria um efeito melhor, exceto que apara os espaços.fonte
Pitão, 16 bytes
Você pode experimentá-lo online , mas não funciona bem, pois o intérprete on-line só exibe a saída quando o programa é concluído.
Explicação
fonte
MATL , 19 bytes
Como funciona
Experimente online! O compilador online produz gradualmente as saídas com as pausas.
fonte
Bacon , 93 bytes
Uma solução em BASIC. A função RANDOM () gera um número entre 0 e n-1; portanto, temos que usar RANDOM (11) para obter um número entre 0 e 10, inclusive.
Sessão de amostra, primeira linha é a entrada, depois a saída:
fonte
n=RANDOM(10)+1
, a sua linha de código irá gerar um número de 0-10, inclusive, não 1-10Perl, 42 bytes
Código de 41 bytes + 1 para
-n
.Eu tive que forçar o Perl a liberar a saída, pois ela não estava mostrando nada até o final, portanto, definindo
$|
. Usamos$-
para rastrear o número de caracteres,print
pois isso não pode ser negativo (para que eu possa usar--$-
e ainda será falso quando estiver vazio) e tambémfloor
é, embora seja porque estou usando o retorno desleep
agora, isso não realmente importa.Uso
fonte
Ruby, 56 bytes
Um lambda recursivo. Ligue como
f["Hello, World!"]
.fonte
> <> (Peixe)
10388 BytesIntérprete online encontrado aqui!
Primeira tentativa neste problema (não jogou golfe).
Espera uma certa quantidade de loops (n), pois o peixe não possui um cronômetro acessível (Execução em carrapatos).
Editar 1: moveu a última linha para o topo (últimos 2 caracteres e reutilizou os valores iniciais. (Economia de 15 bytes).
fonte
Bash, 78 bytes
Como ninguém postou uma solução Bash ainda, aqui está uma. Simples, mas pequeno o suficiente.
Golfe
Teste
fonte
PHP, 81 bytes
use como:
fonte
C ++ 14, 202 bytes
Requer entrada para ser um
std::string
Ungolfed e uso:
fonte
using namespace std;
deve salvar 5 bytes de todos essesstd::
sstd::
é apenas no código de uso, na golfed um há apenas 4C #, 205 bytes
Tenho certeza de que isso pode ser destruído, não o otimizei realmente como está.
Sem golfe:
fonte
PHP, 74 bytes
Corra com
php -r 'code' "string"
.fonte
C, 149 bytes, não testado
para executar, adicione
então compile e execute
fonte
Python 3, 99 caracteres
fonte