Підроблений текст оформлення


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
Натхненний цим ?
Spikatrix

1
Один порожній рядок на початку, здається, дозволений. Як щодо іншого порожнього рядка в кінці?
німі

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%з $.
Денніс

@Dennis О, мені це подобається. Я попросив роз'ясників щодо цього в ОП. (Отож, я zвесь час використовую для викликів на основі сітки ascii.)
Мартін Ендер

15

C, 69 байт

printf магія!

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

           с
          вул
         ста
        stac
       стек
      стако
     stackov
    stackove
   стакавер
  stackoverf
 stackoverfl
stackoverflo
tackoverflow
ackoverflow
ckoverflow
koverflow
переповнення
verflow
потік
переплив
потік
низький
сов
ш


6

Пітон 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

@undergroundmonorail right
Caridorc

6

Javascript ( ES7 Проект ), 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}

Tack 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)->(...).

Недоліки + пояснення:

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 взагалі не добре з операціями з рядками, але дуже зручно це функція , яка повертає задану кількість прогалин!

Приймаючи деякі свободи з "введенням може бути жорстко закодовано", цей код очікує, що змінна sбуде DIM"d" AS STRING, щоб уникнути $суфіксу типу, а також присвоєння рядка sта числа, якому потрібно n.

Приклад преамбули:

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

Вихід:

   с
  вул
 вул
смуга
трін
кільце
інж
нг
г

Верхній порожній рядок можна усунути, запустивши FORцикл у 2 замість 1.

Бонус: Додавання CLSпрямо NEXTна короткий чотири байта перетворює це на ... справжню марку !

Марке

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


Я повинен спробувати QBasic знову ... Це те , що я вперше дізнався про
Canadian Люк відновив Моніка

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

Bash, 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
$ 

Я думаю, я не розумію відмінності "чистого" Баша, тому, можливо, ця пропозиція не є корисною, але сон (1) має 8 символів і дає вам -10 (і є основним
утилітом

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) повторюється до вичерпання вводу, друкуючи перші п символів рядка, а потім викликає себе першим символом, видаленим з 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
Toby Speight

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

Пітон 2, (54 байти - 10 = 44) 64 62 60 46

(Я припускав, що рядок для жорсткого кодування не додає до кількості байтів.)

Я ще не бачив програми, яка насправді спить між друкарськими лініями, тому я зробив таку, яка це робить, оскільки це більше схоже на штрих. Ця програма має ще 2 байти в Python 3.

EDIT: Програма тепер проводить обчислення замість того, щоб спати. Я використовував iпри обчисленні, щоб програма не зберігала його як постійну, а повинна обчислювати її кожен раз.

Спробуйте Python 3 тут (репліка 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, хоча пітон, схоже, розв’язує останнє трохи швидше для мене. Таким чином ви можете зберегти кілька символів.
Сомпо

@Sompom Спробуйте в репл. Якщо я консолідую вираз в єдину експоненцію, це повністю зніме затримку в часі. Але я зніму q=. Дякую.
mbomb007

@Sompom Експонентація є право-асоціативною, тому це насправді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
Це не означає, що її неможливо вдосконалити. :) Дякую.
ТНТ

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

Groovy - 82

n=args[1]as int;t=" "*n+args[0]+" "*n;(0..t.size()-n).each{println t[it..it+n-1]}

1

Луа, 79 байт

r=io.read;t=r()w=r()s=" "t=s:rep(w)..t;for i=1,t:len()do print(t:sub(i,i+w))end

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;};

Повна програма з методом unolfolf та тестовими кейсами:

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 у об'єднаних рядках.
  • Замість простору -для заповнення місця використовується а
  • Замість echo, printfвикористовує замість цього (обмеження PHP)
  • Замість або «реальної» нового рядка, <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.