Поддельный текст Marquee


46

В этом испытании поддельный текст выделенного текста - это текст, который показан по частям, в стиле прокрутки.

Некоторые примеры:

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.


Что вы подразумеваете под «включает вывод»?
Оптимизатор

1
Кроме того, мы должны напечатать первую и последнюю строки, которые просто пробелы?
Оптимизатор

2
Вдохновленный этим ?
Спикатрикс

1
Одна пустая строка в начале, кажется, разрешена. Как насчет другой пустой строки в конце?
Nimi

2
Поскольку вы говорите о «только видимом выводе», можем ли мы предположить, что ввод будет только для печати ASCII? (коды символов от 0x20 до 0x7E)
Мартин Эндер

Ответы:


24

CJam, 12 11 байтов

1 байт сохранен Денисом.

,Sf*\f+$zN*

Я использую «Входные данные могут быть жестко запрограммированы, но их легко изменить»: это предполагает, что входные данные уже находятся в стеке, поэтому вы можете "testing" 4, например, перейти к описанному выше.

Проверьте это здесь.

объяснение

Обратите внимание, что транспонирование желаемого результата намного проще:

   testing
  testing
 testing
testing

Так что нам просто нужно создать nстроки, добавляя iпробелы iот n-1вниз до 0. Вот что делает код:

,            e# Turn n into a range [0 1 .. n-1]
 Sf*         e# Turn each i into a string of i spaces.
    \f+      e# Swap this array with the input string and append it to each of the
             e# strings of spaces.
       $     e# Sort the array to have the string with n-1 spaces first.
        z    e# Transpose the grid.
         N*  e# Join the lines with newline characters.

19 - 10 = 9?

Я нахожу бонус «немного спит между каждой строкой» немного расплывчатым и хитрым, но вот 19-байтовая версия, которая просто останавливается после каждой строки, вычисляя все перестановки массива [0 1 .. 7]. В онлайн-интерпретаторе это просто приводит к тому, что конечный результат будет показан чуть позже, но если вы используете интерпретатор Java, он фактически напечатает каждую строку после «спящего немного»:

,Sf*\f+$z{oNo8e!;}/

Хорошее использование z. Предполагая, что ввод является печатным ASCII, вы можете заменить W%на $.
Деннис

@ Денис О, мне это нравится. Я попросил разъяснений по этому поводу у ОП. (Тем не менее, я zвсе время использую для задач ASCII сетки).
Мартин Эндер

15

C 69 байтов

магия печати!

f(s,n,i)char*s;{for(i=n;*s;i?i--:s++)printf("%*s%.*s\n",i,"",n-i,s);}

Расширенная версия с некоторыми пояснениями:

f(s,n,i)char*s;{       /* s is the string, n is the width of the grid. */
  for(i=n;             /* i is the number of preceding spaces. */
      *s;              /* Stop once we reach the end of the string. */
      i?i--:s++)       /* Decrease the number of spaces, and when there's 
                          none left start truncating the string itself. */
  printf("%*s          /* The first argument is the minimum width to print the 
                          string (left padded with spaces) and the second 
                          argument is the string to print. We use the empty 
                          string just to print the i spaces. */
    %.*s              /* The third argument is the maximum number of 
                         characters from the string (which is the fourth 
                         argument) to print. */
    \n",i,"",n-i,s);
}

И вот пример:

$ ./marquee stackoverflow 12

           s
          улица
         станция
        STAC
       стек
      stacko
     stackov
    stackove
   stackover
  stackoverf
 stackoverfl
stackoverflo
tackoverflow
ackoverflow
ckoverflow
koverflow
переполнение
verflow
erflow
rflow
течь
низкий
вл
вес

14

Pyth, 13 байт

jb.:++K*dQzKQ

Попробуйте онлайн: Pyth Compiler / Executor

объяснение

                 implicit: z = input string, Q = input number
      K*dQ       K = " " * Q
    ++K   zK     K + z + K
  .:        Q    all substrings of length Q
jb               join by newlines and print

6

Python 65 63

s=lambda t,s:'\n'.join((' '*s+t)[i:s+i]for i in range(len(t)+s))

Это на самом деле использовалось для написания примеров. Базовое решение.

>>> print(s("foobarz", 3))

  f
 fo
foo
oob
oba
bar
arz
rz
z

2
я не проверял это, но вы должны быть в состоянии снять квадратные скобки внутриjoin
подземный

@undergroundmonorail right
Caridorc

6

Javascript ( ES7 Draft ), 61 байт

f=(s,l)=>[x.substr(i,l)for(i in x=' '.repeat(l)+s)].join(`
`)
<input id="str" value="Some String" />
<input id="num" value="5" />
<button onclick="out.innerHTML=f(str.value, +num.value)">Run</button>
<br /><pre id="out"></pre>

Javascript ( ES6 ) жестко закодированные входы, 47 байтов

Предполагая жестко запрограммированные входные данные в переменных s(строка) и l(длина), он может быть уменьшен до 47 байтов печати с предупреждением для каждой строки:

for(i in x=' '.repeat(l)+s)alert(x.substr(i,l))

5

К, 19 байт

{x#'![1]\(x#" "),y}

Вставьте xпробелы ( x#" ") в начало строки y. Затем используйте форму оператора «Сканирование с фиксированной точкой», \чтобы создать набор повернутых строк. Фиксированная точка в K перестает выполнять итерации, если результат применения функции возвращает повторный результат или если исходный ввод пересматривается. Так как ![1]будет вращать строку по одному шагу за раз, ![1]\это хорошая идиома для циклических перестановок. Тогда мы просто обрежем результаты x#'.

Пример прогона:

  {x#'![1]\(x#" "),y}[4;"some text"]
("    "
 "   s"
 "  so"
 " som"
 "some"
 "ome "
 "me t"
 "e te"
 " tex"
 "text"
 "ext "
 "xt  "
 "t   ")

5

J (22)

Это закончилось дольше, чем я ожидал, но я думаю, что это не так уж плохо.

[{."0 1[:]\.(' '#~[),]

Забавный факт: они не совпадают [и ]не соответствуют друг другу.


После 3 небольших изменений: [{."1]]\.@,~' '#~[(18 байт).
Рандомра

5

Юлия, 75 байт

(s,n)->(n-=1;print(join([(" "^n*s*" "^n)[i:n+i]for i=1:length(s)+n],"\n")))

Это создает безымянную функцию, которая принимает строку и целое число в качестве входных данных и печатает выходные данные. Чтобы назвать его, дайте ему имя, например f=(s,n)->(...).

Ungolfed + объяснение:

function f(s, n)
    # Decrement n by 1
    n -= 1

    # Construct the lines as an array using comprehension by repeatedly
    # extracting subsets of the input string padded with spaces
    lines = [(" "^n * s * " "^n)[i:n+i] for i = 1:length(s)+n]

    # Print the array elements separated by a newline
    print(join(lines, "\n"))
end

Примеры:

julia> f("banana", 3)
  b
 ba
ban
ana
nan
ana
na 
a

julia> f("Julia", 6)
     J
    Ju
   Jul
  Juli
 Julia
Julia 
ulia  
lia   
ia    
a     

Обратите внимание , что это решение 66 байт , если sи nпредполагается, уже существует в программе.


5

QBasic, 56 - 10 = 46

Это golfed QBasic - autoformatter будет расширяться ?в PRINTи добавить некоторые пробелы. Протестировано с QB64 , хотя здесь не должно быть ничего, что не будет работать с DOS QBasic.

s=SPACE$(n)+s
FOR i=1TO LEN(s)
?MID$(s,i,n)
SLEEP 1
NEXT

QBasic вообще не хорошо с операциями со строками, но очень удобно это функция , которая возвращает заданное количество пробелов!

Принимая некоторые вольности с «input может быть жестко запрограммирован», этот код ожидает, что переменная sбудет DIM'd AS STRING, чтобы избежать $суффикса типа, а также строки, которой назначается, sи номера, к которому n.

Пример преамбулы:

DIM s AS STRING
s="string"
n=4

Выход:

   s
  улица
 ул
стри
трин
кольцо
ИНГ
нг
грамм

Верхнюю пустую строку можно удалить, начав FORцикл с 2 вместо 1.

Бонус: Добавление CLSперед NEXTза ничтожные четыре байта превращает это в ... в реальный шатер !

шатер

Я PRINT CHR$(3)QBasic. : ^ D


Я должен снова попробовать QBasic ... Это то, чему я впервые научился
канадец Люк. ВОССТАНОВИТЬ МОНИКУ

5

Рубин, 68 , 55 байтов

a=" "*$*[1].to_i+$*[0]+" ";a.size.times{|b|puts a[b...b+$*[1].to_i]}

После обновления от @blutorange:

a=" "*(z=$*[1].to_i)+$*[0];a.size.times{|b|puts a[b,z]}

Выход:

         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 

ruby marquee.rb "Something a bit longer" 10

Первая подача с просьбой о критике.


1
Выглядит хорошо для меня, используя несколько рубиновых ярлыков. Окончательный пробел, похоже, не является необходимым («имеет значение только видимый вывод»), и вы можете сохранить несколько байтов, используя временную переменную:a=" "*(z=$*[1].to_i)+$*[0];a.size.times{|b|puts a[b,z]}
blutorange

@blutorange Спасибо за отзыв!
DickieBoy

Пожалуйста. Не стесняйтесь редактировать ответ, если хотите;)
blutorange

4

Haskell, 61 59 54 байта

m n=unlines.scanr((take n.).(:))[].(replicate n ' '++)

Пример использования:

*Main> putStr $ m 6 "stackoverflow"

     s
    st
   sta
  stac
 stack
stacko
tackov
ackove
ckover
koverf
overfl
verflo
erflow
rflow
flow
low
ow
w

*Main> 

Редактировать: пустая строка в начале / конце разрешена


4

Баш, 109 - 10 = 99 байт

Я вижу, что за то время, которое потребовалось мне, чтобы написать свое решение, меня жестоко избили. Тем не менее, я потратил слишком много времени на написание этого, чтобы не публиковать его ...

Кроме того, он обладает некоторыми уникальными функциями, такими как время печати между строками, регулируемое пользователем в зависимости от того, сколько находится в текущем каталоге! (Также несколько противоречиво, в зависимости от того, как чувствует себя ваш диск)

l=${#1};s=$1;for j in `seq 1 $2`;do s=" $s";done;for i in `seq 0 $((l+$2))`;do echo "${s:i:$2}";find 1>2;done

Пример:

cd <some directory in which you own everything recursively>
Marquee.sh "Test Case" 4

   T
  Te
 Tes
Test
est 
st C
t Ca
 Cas
Case
ase
se
e

Развернулся и прокомментировал:

l=${#1} #Length of the incoming string
s=$1 #Can't reassign to the parameter variables, so give it another name
for j in `seq 1 $2`; do
    s=" $s" # Put on the padding spaces
done

for i in `seq 0 $((l+$2))`; do
    #Cut the string and print it. I wish I could lose "padding" that easily!
    echo "${s:i:$2}" #Format is ${string:index:length}, so always the same
    # length, with the index moving into the string as the loop advances
    find 1>2  #Wait "a bit". From ~/, about 6 minutes per line on my junky 
    # computer with a huge home directory. Probably in the <1 sec range for
    # most people.
    #This actually has the same character count as sleep(X), but is much
    # more fun!
done

Я никогда не пробовал это раньше. Предложения и комментарии приветствуются!


4

Чистый Баш, 61 байт

printf -vs %$2s"$1"
for((;++i<${#1}+$2;)){
echo "${s:i:$2}"
}

Выход:

$ ./marquee.sh testing 4
   t
  te
 tes
test
esti
stin
ting
ing
ng
g
$ 

Я думаю, я не понимаю различия «чистый» Bash, так что, возможно, это предложение не очень хорошо, но sleep (1) имеет 8 символов и дает вам -10 (и это GNU Core Util)
Sompom,

3

Perl, 50

$c=$" x$^I;$_="$c$_$c";sleep say$1while(/(?<=(.{$^I}))/g)

57символы +3для -i, -nи -l. -10персонажи для сна.

-iиспользуется для числового ввода, который хранится в $^I. По сути, мы добавляем iпробелы в начало и конец ввода, а затем ищем все iсимволы и перебираем их с помощью while. sayудобно возвращает, 1что мы можем ввести sleep.

echo "testing" | perl -i4 -nlE'$c=$" x$^I;$_="$c$_$c";sleep say$1while(/(?<=(.{$^I}))/g)'

Я знаю , что это старый, но это просто отскочила на первой странице , и я был пойти на сокращение этого вниз несколько: s/^|$/$"x$^I/eg;sleep say$1 while s/.(.{$^I})/$1/. Вы также можете потерять -lфлаг, но я думаю , что вам нужно подсчитать 5 для -i -n(так как -iэто не флаг по умолчанию) , если вы бежите через: echo -n "testing" | perl -i4 -nE'...'. Должен быть до 44, хотя!
Дом Гастингс

@DomHastings спасибо, Дом! Хорошая работа, я отредактирую свой ответ позже :)
hmatt1

3

Оболочка POSIX, 94

[ $3 ]||set "`printf "%${2}s"`$1" $2 t
[ "$1" ]&&printf "%-.${2}s" "$1" "
"&&$0 "${1#?}" $2 t

Я знаю, что это выглядит ближе к Perl, но это действительно оболочка!

Первая строка добавляет необходимые начальные пробелы, только в первый раз через цикл. Он устанавливает 3 доллара, чтобы показать, что он это сделал.

Вторая строка (NB внедренная новая строка) повторяется до тех пор, пока ввод не будет исчерпан, печатая первые n символов строки, затем вызывая себя с первым символом, удаленным из $ 1.

Протестировано с Debian /bin/dash- примеры выходных данных:

./marquee "тестирование" 4

   t
  te
 tes
test
esti
stin
ting
ing
ng
g

./marquee "Что-то немного дольше" 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

./marquee "маленький" 15

              s
             sm
            sma
           smal
          small
         small
        small
       small
      small
     small
    small
   small
  small
 small
small
mall
all
ll
l

Я могу добавить 9 символов, чтобы получить бонус -10! ["$ 1"] && printf "% -. $ {2} s" "$ 1" "" && sleep 1 && $ 0 "$ {1 #?}" $ 2 t
Тоби Спейт

3

Python 2, 51 байт / 37 байт

Без жесткого ввода (51 байт):

def f(s,n):
 s=" "*n+s
 while s:print s[:n];s=s[1:]

Звоните как f("testing", 4).

С жестко закодированным вводом (37 байт):

s="testing";n=4

s=" "*n+s
while s:print s[:n];s=s[1:]

Обе версии выводят начальную строку пробелов.


3

Python 2, (54 байта - 10 = 44) 64 62 60 46

(Я предположил, что строка для жестко запрограммированного ввода не добавляет к количеству байтов.)

Я еще не видел программу, которая на самом деле спит между печатными строками, поэтому я сделал ту, которая делает, потому что это больше похоже на шатер. Эта программа еще 2 байта в Python 3.

РЕДАКТИРОВАТЬ: программа теперь делает вычисления вместо сна. Я использовал iв расчете, чтобы программа не сохраняла его как константу, а должна вычислять его каждый раз.

Попробуйте Python 3 здесь (Repl Python 2 глючит)

i=0
while s[i-n:]:print((' '*n+s)[i:n+i]);i+=1;i**7**7

Может быть, вместо time.sleepдлинных вычислений вы можете использовать? Кроме того, использовать whileцикл немного короче :i=0\nwhile s[i-n:]:print(' '*n+s)[i:n+i];i+=1
xnor

@xnor Exponentiation пару раз очень хорошо работает для вычислений.
mbomb007

@ mbomb007 Я не думаю, что вам нужно сохранять значение вычислений, чтобы заставить Python фактически это делать (так что вы можете сохранить 'q ='). Кроме того, x ^ 7 ^ 7 математически эквивалентно x ^ 49, хотя python, кажется, разрешает последнее немного быстрее для меня. Вы можете сохранить несколько символов таким образом.
Сомпом

@Sompom Попробуйте в репл. Если я объединю выражение в одно возведение в степень, оно полностью удалит задержку. Но я удалю q=. Благодарю.
mbomb007

@Sompom Exponentiation является правоассоциативным, так что это на самом делеi**(7**7)
Sp3000

3

Pyth, 12 байт

jb.:X*dyQQzQ

Демонстрация.


Pyth, 17 - 10 = 7 байт

FN.:X*dyQQzQ&.p9N

Эта версия использует задержку между отпечатками строк. Это можно увидеть в компиляторе командной строки, который вы можете получить здесь .

Запустите следующее:

pyth -c 'FN.:X*dyQQzQ&.p9N' <<< 'testing
4'

Это имеет задержку около 0,3 секунды перед каждым отпечатком. Если вы предпочитаете более длительную задержку, вы можете использовать:

FN.:X*dyQQzQ&.pTN

Это имеет задержку около 4 секунд.


3

Ява, 133 119 115

int i;void f(String s,int n){for(;++i<n;)s=" "+s+" ";for(;i<=s.length();)System.out.println(s.substring(i-n,i++));}

Длинная версия:

int i;
void f(String s, int n) {
    for(; ++i < n;)
        s = " " + s + " ";
    for(; i<=s.length();)
        System.out.println(s.substring(i-n, i++));
}

Заполнение применяется к строке, а затем подстроки заполненной строки выводятся на консоль.

-4 байта благодаря @KevinCruijssen.


Я знаю, что прошло больше года, но вы можете немного for(;i<= s.length();System.out.println(s.substring(i-n,i++)));
поиграть

1
Это не значит, что это не может быть улучшено. :) Спасибо.
TNT

2

Матлаб, 95

Как всегда, это манипулирование матрицами. Основой здесь является команда, spdiagsкоторая позволяет очень легко создавать диагональные матрицы.

t=input('');
n=numel(t);
k=input('');
flipud(char(full(spdiags(repmat(t,n+k-1,1),1-n:0,n+k-1,k))))

С жестким кодированием 71 байт (ожидаемая строка хранится в tи число в k)

n=numel(t);flipud(char(full(spdiags(repmat(t,n+k-1,1),1-n:0,n+k-1,k))))

2

APL, 50 - 10 = 40 символов

Я уверен, что это может быть короче. 50 - длина программы без двух констант.

{⍵≡⍬:⍬⋄⎕←↑⍵⋄⎕DL 99⋄∇1↓⍵}⊂[0]⊖s⍴⍨n,¯1+⍴s←'brace yourself',' '⍴⍨n←6

Объяснение:

                               ' '⍴⍨n←6   call the number 'n' and make n spaces
            s←'brace yourself',           append them to the string and call it 's'
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
                             s⍴⍨n,¯1+⍴s   make a len(s)-1 by n matrix by repeating s 
                        ⊂[0]⊖             reflect the matrix and extract the columns
{                      }                  pass the list of columns to this function
 ⍵≡⍬:⍬⋄                                   return if the list is empty
       ⎕←↑⍵⋄                              print the first column (as a row)
            ⎕DL 99⋄                       wait for 99ms
                   ∇1↓⍵                   recurse with the rest of the columns

Разработано для ngn APL на терминале.


2

Powershell - 85 83 байта

Уже поздно, он не выиграет :-) Но я подумал, что я добавлю Powershell для полноты:

function m($s,$n){1..$($n+$s.length)|%{-join(" "*$n+$s+" "*$n)[$_-1..$($n+$_-1)]}}





1

C #, 112 байт

s=>n=>{var r=new string(' ',n-1);s=r+s+r;r="";for(int i=0;i<s.Length-n+1;)r+=s.Substring(i++,n)+"\n";return r;};

Полная программа с методикой ungolfed и тестовыми примерами:

using System;

namespace FakeMarqueeText
{
    class Program
    {
        static void Main(string[] args)
        {
            Func<string,Func<int,string>>f= s=>n=>
            {
                var r=new string(' ',n-1);
                s=r+s+r;
                r="";
                for(int i=0;i<s.Length-n+1;)
                    r+=s.Substring(i++,n)+"\n";

                return r;
            };

            // test cases:
            Console.WriteLine(f("testing")(4));
            Console.WriteLine(f("hello")(2));
            Console.WriteLine(f("foobarz")(3));
            Console.WriteLine(f("Something a bit longer")(10));
            Console.WriteLine(f("small")(15));
            Console.WriteLine(f("aaa")(3));
            Console.WriteLine(f("brace yourself")(6));

        }
    }
}


1

PHP4.1, 85-10 = 75 байт

Да, это очень старая версия, но в ней есть нужная мне функциональность.
Вы по-прежнему можете запускать его в любых более поздних версиях PHP, но вам нужно установить переменные самостоятельно перед запуском приведенного ниже кода.

Это помогает мне значительно уменьшить размер моего кода!

Это действительно просто:

<?for($s=str_repeat(' ',$n).$s;$i++<strlen($s)+$n;sleep(1))echo substr($s,$i,$n),'
';

Я побежал за бонусом, цитируя OP:

Если ваша программа автономна (т. Е. При запуске на самом деле печатает строки) (ввод может быть жестко запрограммирован, но его легко изменить) и немного спит между каждой строкой вывода, вы получаете бонус -10.

Как вы можете видеть, он спит.

Это предполагает, что вы register_globalsвключили по умолчанию, которые были настройками по умолчанию для этой версии.


Вы можете легко проверить в своем браузере, с минимальный некоторые изменения:

//detects if it is running in js or php
//true for js, false for php
if('\0'=="\0")
{
	function strlen($s){
		return $s.length;
	}
	
	function str_repeat($s,$n){
		return Array($n+1).join($s);
	}
	
	function substr($s,$n,$m){
		return $s.substr($n,$m);
	}
	
	function printf($s){
		document.write($s);
	}
	
	function concat($a,$b){
		return $a+$b;
	}
}
else
{
	function concat($a,$b){
		return $a.$b;
	}
}

//sets the variables, not required for PHP if you pass the values by GET or POST
$i=0;
$s='example';
$n=6;



for($s=concat(str_repeat('-',$n),$s);$i++<strlen($s)+$n;)printf(concat(substr($s,$i,$n),'<br>'));
*{font-family:monospace}

Приведенный выше код является полиглотом, и вы можете запустить его в своем браузере или в интерпретаторе PHP. Разве я не должен получить приз за это? Печенье, возможно?

Список изменений:

  • Удалила sleep(1)в этом тесте
  • Создано 2 версии функции concat
    Цель состоит в том, чтобы преодолеть различия между PHP и JS в конкатенации строк.
  • Вместо пробела используется a, -чтобы заполнить пробел
  • Вместо того echo, printfявляется использование вместо (РНР ограничение)
  • Вместо этого или "настоящий" перевод строки, <br>вместо этого используется


1

APL (Dyalog) , 17 байт

⌽⍉↑(⎕,⍨' '/⍨⊢)¨⍳⎕

Попробуйте онлайн!

(программа предполагает, ⎕IO←0что по умолчанию на многих машинах)

объяснение

⍳⎕               Create a range 0 .. input-1
¨                For each element in this range do:
 ' '/⍨⊢           A space duplicated right argument (which is the element in  the range) times
 ⎕,⍨              Concatenated with the input string to its right
⌽⍉               Transpose and reflect horizontally
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.