Wyzwanie polega na napisaniu programu lub funkcji, która ma czkawkę. Powinien pobierać ciąg jako dane wejściowe (dowolną standardową metodą), a następnie wykonaj następujące kroki:
- Wygeneruj (niekoniecznie jednakowo) losową liczbę całkowitą n między 1 a 10 włącznie.
- Poczekaj n sekund.
- Wydrukuj początkowy / następny n znaków wejściowych lub resztę danych wejściowych, jeśli jest mniej niż n znaków.
- Jeśli pozostało wejście do wydrukowania, wróć do kroku 1.
Zasady
- Dane wejściowe zawsze będą niepustym ciągiem zawierającym tylko znaki ASCII (32-126).
- Czas oczekiwania nie musi wynosić dokładnie n sekund, ale musi wynosić 10% n .
- Możesz wydrukować końcowy znak nowej linii za każdym razem, gdy drukowany jest fragment tekstu.
Przykład
Tutaj spacja reprezentuje 1 sekundę. Jeśli wejście jest Hiccupinator!
, wyjście może być:
Hic cupin a tor!
Punktacja
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach .
Odpowiedzi:
Scratch, 16 bloków + 6 bajtów
Zakłada, że dane wejściowe są już zdefiniowane jako lista znaków (
["H","e","l","l","o"," ","W","o","r","l","d"]
)źródło
Pushy ,
201716 lub 13 bajtówW zależności od tego, co jest dozwolone, istnieją dwa rozwiązania.
16 bajtów:
Dać argumenty w linii poleceń:
$ pushy hiccup.pshy 'hiccupinator'
. Drukuje się z końcowymi znakami nowej linii po każdym „czkawce”. Oto podział:13 bajtów:
Podczas kodowania powyższej odpowiedzi wpadłem na to znacznie krótsze rozwiązanie:
Chociaż robi to samo, drukuje bezpośrednio z ciągu, zamiast budować nowy, dla mniejszej liczby bajtów. Wymaga to
N
na początku programu, aby zapobiec końcowym znakom nowej linii, w przeciwnym razie każdy znak będzie na nowym wierszu.Jednak podczas testowania zauważyłem błąd -
stdout
jest buforowany w linii, więc program poczeka na pełną długość, a następnie wyświetli czkawkę.Naprawiłem to w ostatnim zatwierdzeniu , dodając prosty
.flush()
- to technicznie nie dodaje nowej funkcji do języka, tylko naprawia błąd, ale rozumiem, jeśli nie weźmiesz tej odpowiedzi pod uwagę :)Podział wygląda następująco:
źródło
JavaScript (ES6)
9189 bajtówzapisano 2 bajty dzięki @zeppelin
Nadużywa 10% tolerancji dla czasu oczekiwania, czekając
n<<10 === 1024*n
milisekundy.Ponieważ powiedziałeś, że czas oczekiwania musi wynosić 10% n , postanowiłem zapisać jeden bajt i poczekać 999 milisekund zamiast 1 sekundy.Nie potrzebuję już 999 milisekund głupoty dzięki @ETHProductions
źródło
1e3
;-)Python 2,
9392 bajty-1 bajt dzięki Flp.Tkc
Jestem pewien, że istnieje sposób na skrócenie
random.randint
itime.sleep
, alefrom random,time import*
nie działa ...źródło
from random,time import*
nie działa, ponieważ Python nie wie, z którego modułu chcesz zaimportować biblioteki.while v1:n=ri(1,10);_i("time").sleep(n);p(v1[:n]);v1=v1[n:];
(pobiera dane z argumentów wiersza poleceń)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 bajtów
Rozszerzony
źródło
Partia, 131 bajtów
Użycie
set/pn=<nul
dałoby lepszy efekt, z wyjątkiem tego, że przycina spacje.źródło
Pyth, 16 bajtów
Możesz spróbować online , ale to nie działa dobrze, ponieważ interpreter online wyświetla wynik dopiero po zakończeniu programu.
Wyjaśnienie
źródło
MATL , 19 bajtów
Jak to działa
Wypróbuj online! Kompilator online stopniowo generuje wyniki z przerwami.
źródło
BaCon , 93 bajty
Rozwiązanie w języku BASIC. Funkcja RANDOM () generuje liczbę od 0 do n-1, dlatego musimy użyć RANDOM (11), aby uzyskać liczbę od 0 do 10 włącznie.
Przykładowa sesja, pierwszy wiersz to wejście, a drugie wyjście:
źródło
n=RANDOM(10)+1
, twoja linia kodu wygeneruje liczbę od 0-10 włącznie, a nie 1-10Perl, 42 bajty
41 bajtów kodu + 1 dla
-n
.Musiałem zmusić Perla do wypłukania wyjścia, ponieważ na początku nic nie pokazywało do końca, stąd ustawienie
$|
. Używamy$-
do śledzenia liczby znaków,print
ponieważ nie może to być ujemne (więc mogę użyć--$-
i będzie falsy, gdy będzie puste) i to równieżfloor
, chociaż ponieważ używam zwrotusleep
dla tego, to nie to naprawdę ważne.Stosowanie
źródło
Rubinowy, 56 bajtów
Rekurencyjna lambda. Zadzwoń jak
f["Hello, World!"]
.źródło
> <> (Ryby)
10388 bajtówZnaleziono tłumacza online!
Pierwsza próba rozwiązania tego problemu (nie gra w golfa).
Oczekuje pewną liczbę pętli (n), ponieważ ryba nie ma dostępnego timera (Wykonanie w tikach).
Edycja 1: Przeniesiono ostatni wiersz na górę (ostatnie 2 znaki i ponownie wykorzystano wartości początkowe. (Oszczędność 15 bajtów).
źródło
Bash, 78 bajtów
Ponieważ nikt jeszcze nie opublikował rozwiązania Bash, oto jedno. Proste, ale wystarczająco małe.
Grał w golfa
Test
źródło
PHP, 81 bajtów
użyj jak:
źródło
C ++ 14, 202 bajty
Wymaga danych wejściowych
std::string
Niegolfowane i użytkowanie:
źródło
using namespace std;
Należy zapisać 5 bajtów z wszystkich tychstd::
sstd::
jest tylko w kodzie użytkowania, w golfowym jest tylko 4C #, 205 bajtów
Jestem pewien, że można to zniszczyć, ale tak naprawdę wcale go nie zoptymalizowałem.
Bez golfa:
źródło
PHP, 74 bajty
Uruchom z
php -r 'code' "string"
.źródło
C, 149 bajtów, nie testowano
uruchomić, dodaj
następnie skompiluj i uruchom
źródło
Python 3, 99 znaków
źródło