В этом испытании поддельный текст выделенного текста - это текст, который показан по частям, в стиле прокрутки.
Некоторые примеры:
testing 4
t
te
tes
test
esti
stin
ting
ing
ng
g
hello 2
h
he
el
ll
lo
o
foobarz 3
f
fo
foo
oob
oba
bar
arz
rz
z
Something a bit longer 10
S
So
Som
Some
Somet
Someth
Somethi
Somethin
Something
Something
omething a
mething a
ething a b
thing a bi
hing a bit
ing a bit
ng a bit l
g a bit lo
a bit lon
a bit long
bit longe
bit longer
it longer
t longer
longer
longer
onger
nger
ger
er
r
small 15
s
sm
sma
smal
small
small
small
small
small
small
small
small
small
small
small
mall
all
ll
l
aaa 3
a
aa
aaa
aa
a
brace yourself 6
b
br
bra
brac
brace
brace
race y
ace yo
ce you
e your
yours
yourse
oursel
urself
rself
self
elf
lf
f
Вы должны написать программу или функцию, которая принимает два ввода и печатает вывод, как описано выше. Вы можете или не можете выводить конечные пробелы в вашем выводе. Это код-гольф, поэтому выигрывает самый короткий код в байтах.
Если ваша программа автономна (т. Е. При запуске на самом деле печатает строки) (ввод может быть жестко запрограммирован, но его легко изменить) и немного спит между каждой строкой вывода, вы получаете бонус -10.
Ответы:
CJam,
1211 байтов1 байт сохранен Денисом.
Я использую «Входные данные могут быть жестко запрограммированы, но их легко изменить»: это предполагает, что входные данные уже находятся в стеке, поэтому вы можете
"testing" 4
, например, перейти к описанному выше.Проверьте это здесь.
объяснение
Обратите внимание, что транспонирование желаемого результата намного проще:
Так что нам просто нужно создать
n
строки, добавляяi
пробелыi
отn-1
вниз до0
. Вот что делает код:19 - 10 = 9?
Я нахожу бонус «немного спит между каждой строкой» немного расплывчатым и хитрым, но вот 19-байтовая версия, которая просто останавливается после каждой строки, вычисляя все перестановки массива
[0 1 .. 7]
. В онлайн-интерпретаторе это просто приводит к тому, что конечный результат будет показан чуть позже, но если вы используете интерпретатор Java, он фактически напечатает каждую строку после «спящего немного»:источник
z
. Предполагая, что ввод является печатным ASCII, вы можете заменитьW%
на$
.z
все время использую для задач ASCII сетки).C 69 байтов
магия печати!
Расширенная версия с некоторыми пояснениями:
И вот пример:
источник
Pyth, 13 байт
Попробуйте онлайн: Pyth Compiler / Executor
объяснение
источник
Python
6563Это на самом деле использовалось для написания примеров. Базовое решение.
источник
join
Javascript ( ES7 Draft ), 61 байт
Javascript ( ES6 ) жестко закодированные входы, 47 байтов
Предполагая жестко запрограммированные входные данные в переменных
s
(строка) иl
(длина), он может быть уменьшен до 47 байтов печати с предупреждением для каждой строки:источник
К, 19 байт
Вставьте
x
пробелы (x#" "
) в начало строкиy
. Затем используйте форму оператора «Сканирование с фиксированной точкой»,\
чтобы создать набор повернутых строк. Фиксированная точка в K перестает выполнять итерации, если результат применения функции возвращает повторный результат или если исходный ввод пересматривается. Так как![1]
будет вращать строку по одному шагу за раз,![1]\
это хорошая идиома для циклических перестановок. Тогда мы просто обрежем результатыx#'
.Пример прогона:
источник
J (22)
Это закончилось дольше, чем я ожидал, но я думаю, что это не так уж плохо.
Забавный факт: они не совпадают
[
и]
не соответствуют друг другу.источник
[{."1]]\.@,~' '#~[
(18 байт).Юлия, 75 байт
Это создает безымянную функцию, которая принимает строку и целое число в качестве входных данных и печатает выходные данные. Чтобы назвать его, дайте ему имя, например
f=(s,n)->(...)
.Ungolfed + объяснение:
Примеры:
Обратите внимание , что это решение 66 байт , если
s
иn
предполагается, уже существует в программе.источник
QBasic, 56 - 10 = 46
Это golfed QBasic - autoformatter будет расширяться
?
вPRINT
и добавить некоторые пробелы. Протестировано с QB64 , хотя здесь не должно быть ничего, что не будет работать с DOS QBasic.QBasic вообще не хорошо с операциями со строками, но очень удобно это функция , которая возвращает заданное количество пробелов!
Принимая некоторые вольности с «input может быть жестко запрограммирован», этот код ожидает, что переменная
s
будетDIM
'dAS STRING
, чтобы избежать$
суффикса типа, а также строки, которой назначается,s
и номера, к которомуn
.Пример преамбулы:
Выход:
Верхнюю пустую строку можно удалить, начав
FOR
цикл с 2 вместо 1.Бонус: Добавление
CLS
передNEXT
за ничтожные четыре байта превращает это в ... в реальный шатер !Я
PRINT CHR$(3)
QBasic. : ^ Dисточник
Рубин,
68, 55 байтовПосле обновления от @blutorange:
Выход:
ruby marquee.rb "Something a bit longer" 10
Первая подача с просьбой о критике.
источник
a=" "*(z=$*[1].to_i)+$*[0];a.size.times{|b|puts a[b,z]}
Haskell,
615954 байтаПример использования:
Редактировать: пустая строка в начале / конце разрешена
источник
Баш, 109 - 10 = 99 байт
Я вижу, что за то время, которое потребовалось мне, чтобы написать свое решение, меня жестоко избили. Тем не менее, я потратил слишком много времени на написание этого, чтобы не публиковать его ...
Кроме того, он обладает некоторыми уникальными функциями, такими как время печати между строками, регулируемое пользователем в зависимости от того, сколько находится в текущем каталоге! (Также несколько противоречиво, в зависимости от того, как чувствует себя ваш диск)
Пример:
Развернулся и прокомментировал:
Я никогда не пробовал это раньше. Предложения и комментарии приветствуются!
источник
Чистый Баш, 61 байт
Выход:
источник
Perl, 50
57
символы+3
для-i
,-n
и-l
.-10
персонажи для сна.-i
используется для числового ввода, который хранится в$^I
. По сути, мы добавляемi
пробелы в начало и конец ввода, а затем ищем всеi
символы и перебираем их с помощьюwhile
.say
удобно возвращает,1
что мы можем ввестиsleep
.источник
s/^|$/$"x$^I/eg;sleep say$1 while s/.(.{$^I})/$1/
. Вы также можете потерять-l
флаг, но я думаю , что вам нужно подсчитать 5 для-i -n
(так как-i
это не флаг по умолчанию) , если вы бежите через:echo -n "testing" | perl -i4 -nE'...'
. Должен быть до 44, хотя!Оболочка POSIX, 94
Я знаю, что это выглядит ближе к Perl, но это действительно оболочка!
Первая строка добавляет необходимые начальные пробелы, только в первый раз через цикл. Он устанавливает 3 доллара, чтобы показать, что он это сделал.
Вторая строка (NB внедренная новая строка) повторяется до тех пор, пока ввод не будет исчерпан, печатая первые n символов строки, затем вызывая себя с первым символом, удаленным из $ 1.
Протестировано с Debian
/bin/dash
- примеры выходных данных:./marquee "тестирование" 4
./marquee "Что-то немного дольше" 10
./marquee "маленький" 15
источник
Python 2, 51 байт / 37 байт
Без жесткого ввода (51 байт):
Звоните как
f("testing", 4)
.С жестко закодированным вводом (37 байт):
Обе версии выводят начальную строку пробелов.
источник
Python 2, (54 байта - 10 = 44)
64626046(Я предположил, что строка для жестко запрограммированного ввода не добавляет к количеству байтов.)
Я еще не видел программу, которая на самом деле спит между печатными строками, поэтому я сделал ту, которая делает, потому что это больше похоже на шатер. Эта программа еще 2 байта в Python 3.
РЕДАКТИРОВАТЬ: программа теперь делает вычисления вместо сна. Я использовал
i
в расчете, чтобы программа не сохраняла его как константу, а должна вычислять его каждый раз.Попробуйте Python 3 здесь (Repl Python 2 глючит)
источник
time.sleep
длинных вычислений вы можете использовать? Кроме того, использоватьwhile
цикл немного короче :i=0\nwhile s[i-n:]:print(' '*n+s)[i:n+i];i+=1
q=
. Благодарю.i**(7**7)
Pyth, 12 байт
Демонстрация.
Pyth, 17 - 10 = 7 байт
Эта версия использует задержку между отпечатками строк. Это можно увидеть в компиляторе командной строки, который вы можете получить здесь .
Запустите следующее:
Это имеет задержку около 0,3 секунды перед каждым отпечатком. Если вы предпочитаете более длительную задержку, вы можете использовать:
Это имеет задержку около 4 секунд.
источник
Ява,
133119115Длинная версия:
Заполнение применяется к строке, а затем подстроки заполненной строки выводятся на консоль.
-4 байта благодаря @KevinCruijssen.
источник
for(;i<= s.length();System.out.println(s.substring(i-n,i++)));
Матлаб, 95
Как всегда, это манипулирование матрицами. Основой здесь является команда,
spdiags
которая позволяет очень легко создавать диагональные матрицы.С жестким кодированием 71 байт (ожидаемая строка хранится в
t
и число вk
)источник
APL, 50 - 10 = 40 символов
Я уверен, что это может быть короче. 50 - длина программы без двух констант.
Объяснение:
Разработано для ngn APL на терминале.
источник
Powershell -
8583 байтаУже поздно, он не выиграет :-) Но я подумал, что я добавлю Powershell для полноты:
function m($s,$n){1..$($n+$s.length)|%{-join(" "*$n+$s+" "*$n)[$_-1..$($n+$_-1)]}}
источник
Кобра - 60
источник
Groovy - 82
источник
Луа, 79 байт
источник
C #, 112 байт
Полная программа с методикой ungolfed и тестовыми примерами:
источник
Желе , 15 байт - 10 = 5 ( не конкурирует ?)
Попробуйте онлайн!
Спит на секунду между каждой строкой. Печатает завершающий перевод строки, если это приемлемо.
уу желе бьет уголь
источник
PHP4.1, 85-10 = 75 байт
Да, это очень старая версия, но в ней есть нужная мне функциональность.
Вы по-прежнему можете запускать его в любых более поздних версиях PHP, но вам нужно установить переменные самостоятельно перед запуском приведенного ниже кода.
Это помогает мне значительно уменьшить размер моего кода!
Это действительно просто:
Я побежал за бонусом, цитируя OP:
Как вы можете видеть, он спит.
Это предполагает, что вы
register_globals
включили по умолчанию, которые были настройками по умолчанию для этой версии.Вы можете легко проверить в своем браузере, с
минимальныйнекоторые изменения:Приведенный выше код является полиглотом, и вы можете запустить его в своем браузере или в интерпретаторе PHP. Разве я не должен получить приз за это? Печенье, возможно?
Список изменений:
sleep(1)
в этом тестеconcat
Цель состоит в том, чтобы преодолеть различия между PHP и JS в конкатенации строк.
-
чтобы заполнить пробелecho
,printf
является использование вместо (РНР ограничение)<br>
вместо этого используетсяисточник
J ,
1514 байтПопробуйте онлайн!
источник
APL (Dyalog) , 17 байт
Попробуйте онлайн!
(программа предполагает,
⎕IO←0
что по умолчанию на многих машинах)объяснение
источник