Ваша задача - написать программу или функцию, которая работает со строкой. Он должен принять строку в качестве входных данных (с помощью любого стандартного метода), затем выполните следующие действия:
- Генерирует (не обязательно равномерно) случайное целое число n от 1 до 10 включительно.
- Подождите n секунд.
- Выведите начальный / следующий n символов ввода или оставшуюся часть ввода, если число символов меньше n .
- Если для печати еще есть ввод, вернитесь к шагу 1.
правила
- Входными данными всегда будет непустая строка, содержащая только символы ASCII (32-126).
- Время ожидания не обязательно должно быть ровно n секунд, но оно должно быть в пределах 10% от n .
- Вы можете печатать завершающий символ новой строки каждый раз, когда печатается часть текста.
пример
Пробел здесь представляет 1 секунду. Если ввод Hiccupinator!
, вывод может быть:
Hic cupin a tor!
счет
Это код-гольф , поэтому выигрывает самый короткий код в байтах .
Ответы:
Царапина, 16 блоков + 6 байт
Предполагается, что ввод уже определен как список символов (
["H","e","l","l","o"," ","W","o","r","l","d"]
)источник
Напористый ,
201716 или 13 байтВ зависимости от того, что разрешено, есть два решения.
16 байтов:
Дайте аргументы в командной строке:
$ pushy hiccup.pshy 'hiccupinator'
. Это печатает с последующими символами новой строки после каждого «сбоя». Вот разбивка:13 байт:
При кодировании приведенного выше ответа я придумал это значительно более короткое решение:
Хотя он выполняет аналогичные действия, он печатает непосредственно со строки, а не создает новую строку для меньшего количества байтов. Это требует, чтобы
N
в начале программы предотвращался завершающий перевод новой строки, иначе каждый символ был бы на новой строке.Однако во время тестирования я заметил ошибку -
stdout
она буферизована строкой, поэтому программа будет ждать полной длины, а затем отображать перебитую строку.Я исправил это в последнем коммите , добавив простой
.flush()
- это технически не добавление новой функции в язык, а просто исправление ошибки, но я понимаю, если вы не примете этот ответ во внимание :)Разбивка выглядит так:
источник
Javascript (ES6)
9189 байтсэкономили 2 байта благодаря @zeppelin
Злоупотребляет 10% -ным допуском для времени ожидания, ожидая
n<<10 === 1024*n
миллисекунды.Поскольку вы сказали, что время ожидания должно быть в пределах 10% от n , я решил сэкономить один байт и ждать 999 миллисекунд, а не 1 секунду.Мне больше не нужны глупости 999 миллисекунд благодаря @ETHProductions
источник
1e3
;-)Python 2,
9392 байта-1 байт благодаря Flp.Tkc
Я уверен, что есть способ сократить
random.randint
иtime.sleep
, ноfrom random,time import*
не работает ...источник
from random,time import*
не работает, потому что Python не знает, из какого модуля вы хотите импортировать библиотеки.while v1:n=ri(1,10);_i("time").sleep(n);p(v1[:n]);v1=v1[n:];
(принимает данные из аргументов командной строки)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 байта
расширенный
источник
Пакет, 131 байт
Использование
set/pn=<nul
дало бы более хороший эффект за исключением того, что оно урезало пробелы.источник
Pyth, 16 байт
Вы можете попробовать это онлайн , но это не работает, так как онлайн-переводчик отображает результаты только после завершения программы.
объяснение
источник
MATL , 19 байт
Как это устроено
Попробуйте онлайн! Онлайн-компилятор постепенно выводит результаты с паузами.
источник
BaCon , 93 байта
Решение в бейсике. Функция RANDOM () генерирует число от 0 до n-1, поэтому мы должны использовать RANDOM (11), чтобы получить число от 0 до 10 включительно.
Пример сеанса, первая строка - вход, вторая - выход:
источник
n=RANDOM(10)+1
, ваша строка кода сгенерирует число от 0-10 включительно, а не 1-10Perl, 42 байта
41 байт код + 1 для
-n
.Мне пришлось заставить Perl сбрасывать вывод, так как он сначала ничего не показывал до конца, а значит и настройки
$|
. Мы используем$-
для отслеживания количество символов,print
поскольку это не может быть отрицательным (так что я могу использовать,--$-
и это будет ложно, когда он пуст), и это такжеfloor
s, хотя, поскольку я использую возвратsleep
для этого сейчас, это не это не имеет значения.использование
источник
Рубин, 56 байт
Рекурсивная лямбда. Звоните как
f["Hello, World!"]
.источник
> <> (Рыба)
10388 байтОнлайн переводчик найден здесь!
Первая попытка этой проблемы (не игра в гольф).
Он ожидает определенное количество циклов (n), поскольку у рыбы нет таймера, который доступен (выполнение в тиках).
Редактировать 1: переместил последнюю строку вверх (последние 2 символа и повторно использовал начальные значения. (Сохранение 15 байт).
источник
Баш, 78 байт
Поскольку никто еще не опубликовал решение Bash, вот оно. Просто, но все же достаточно мало.
Golfed
Тестовое задание
источник
PHP, 81 байт
использовать как:
источник
C ++ 14, 202 байта
Требует ввода, чтобы быть
std::string
Ungolfed и использование:
источник
using namespace std;
должен спасти 5 байтов от всех этихstd::
sstd::
только в коде использования, в гольфовом только 4C #, 205 байтов
Я уверен, что это может быть уничтожено, я действительно не оптимизировал это вообще, как оно есть.
Un-golfed:
источник
PHP, 74 байта
Беги с
php -r 'code' "string"
.источник
C, 149 байт, не проверено
запустить, добавить
затем скомпилируйте и выполните
источник
Python 3, 99 символов
источник