Це була просто помилка


76

Натхненний прослуховуються виходом в @Carcigenicate Clojure відповіді «s для друку цього алмаза виклику.

Роздрукуйте цей точний текст:

1        2        3        4        5        6        7        8        9        0
1       2       3       4       5       6       7       8       9       0
1      2      3      4      5      6      7      8      9      0
1     2     3     4     5     6     7     8     9     0
1    2    3    4    5    6    7    8    9    0
1   2   3   4   5   6   7   8   9   0
1  2  3  4  5  6  7  8  9  0
1 2 3 4 5 6 7 8 9 0
1234567890
1 2 3 4 5 6 7 8 9 0
1  2  3  4  5  6  7  8  9  0
1   2   3   4   5   6   7   8   9   0
1    2    3    4    5    6    7    8    9    0
1     2     3     4     5     6     7     8     9     0
1      2      3      4      5      6      7      8      9      0
1       2       3       4       5       6       7       8       9       0
1        2        3        4        5        6        7        8        9        0

(Від середини назовні в обох напрямках кожна цифра відокремлена ще одним пробілом, ніж попередній рядок.)

Правила виклику:

  • Вхід не буде ( або порожній невикористаний вхід ).
  • Кінцеві пробіли необов’язкові.
  • Одиночний новий рядок не є обов'язковим.
  • Провідні пробіли або нові рядки заборонені.
  • Повернення рядкового масиву заборонено. Ви повинні або вивести текст, або мати функцію, яка повертає один рядок з правильним результатом.

Загальні правила:

  • Це , тому найкоротша відповідь у байтах виграє.
    Не дозволяйте мовам коду-гольфу відштовхувати вас від публікації відповідей з мов, що не кодують гольф. Спробуйте придумати якомога коротшу відповідь на "будь-яку" мову програмування.
  • Для вашої відповіді застосовуються стандартні правила , тому вам дозволяється використовувати STDIN / STDOUT, функції / метод з відповідними параметрами та повним програмами типу "return". Твій дзвінок.
  • Лазівки за замовчуванням заборонені.
  • Якщо можливо, додайте посилання з тестом для вашого коду.
  • Також, будь ласка, додайте пояснення, якщо це необхідно.

Чи дозволено виводити масив рядків - 1 рядок на рядок?
Shaggy

@Shaggy Вибачте, у цьому випадку він повинен або повернути один рядок з новими рядками, або вивести результат. Я додав це як правило до виклику.
Kevin Cruijssen

Не хвилюйся, Кевін; просто розмахував рукою, щоб побачити, чи можу я врятувати собі пару байтів.
Shaggy

3
@Shaggy Hehe. З якою іншою причиною нам доведеться задати питання в кодово-гольф-виклику, окрім того, що має на меті зберегти ці кілька байт? ;)
Кевін Круїссен

8
Ха, це приголомшливо. Мені було цікаво, чому ця відповідь раптом отримала таку велику увагу. Дякую!
Carcigenicate

Відповіді:


7

SOGL V0.12 , 12 байт

9{SUē↕∑}¹№╬«

Спробуйте тут! Пояснення:

9{     }      9 times do
  SU            push "1234567890"
    ē           push e, predefined with the input, which defaults to 0, and then increase it
     ↕          get that many spaces
      ∑         join the string of digits with those spaces
        ¹     collect the results in an array
         №    reverse the array vertically
          ή  palindromize vertically with 1 overlap

О, приємно, це навіть коротше, ніж прийнята відповідь. Гм, яка політика щодо коротших відповідей через пару місяців після прийняття відповіді? Чи отримає це перевірку зараз (якось я несправедливий до прийнятої зараз відповіді), чи я повинен зробити щось інше? Чудова відповідь незалежно! +1 від мене.
Kevin Cruijssen

@KevinCruijssen Зазвичай найкраща практика - оновити прийняту відповідь, але оскільки для цього використовується кілька нових функцій, я б сказав, що є причина піти в будь-який бік - ви виберете.
dzaima

62

Пітон 2 , 59 57 56 55 байт

i=8;exec"print(' '*abs(i)).join('1234567890');i-=1;"*17

Спробуйте в Інтернеті!

@Leaky Nun багато допомагала в гольфі, @Praind запропонував метод зберегти 1 байт, який я раніше думав, але забув редагувати, @CotyJohnathanSaxman запропонував змінити цикл.


Пояснення

  • i=8- Призначає значення 8змінній, що називається i.

  • exec"..."*17- Виконайте цей блок коду ( ...) 17 разів.

  • print(...) - Виведіть результат.

  • ' '*abs(i)- Створіть рядок з пробілом, повтореним |i|раз

  • .join('1234567890')- Перемежуйте рядок, створений вище 1234567890, таким чином, щоб |i|проміжки були вставлені між цифрами.

  • i-=1- Позбавлення i, і виконуючи його 17 разів, він досягає -8, що створює повторюваний зразок за допомогою abs().



23
Це ферма, більш вражаюча, ніж 25 байт на будь-якій мові для гри в гольф.
Jylo

4
@Jylo Спасибі, але 25-ти байт-рішення є дуже вражаючими, оскільки вони демонструють багато зусиль з гольфу, докладених їх авторами. Спершу ви повинні знати, що означає кожен персонаж у їхньому джерелі, а потім зрозумієте, наскільки вони гарні в гольф.
Містер Xcoder

2
@JasonChen Ні, Python не дозволяє цей синтаксис, оскільки це характерно для мов, подібних С.
Містер Xcoder

5
Можливе натхнення: можна зробити і без exec 55 байтів . Використовували аналогічний підхід, щоб звести Python 3 до 57 байт . Я не бачив очевидного способу скоротити його, опустивши exec, але подумав, що згадую це як можливість.
ShadowRanger

32

Vim, 35 байт:

i1234567890<esc>qqYP:s/\d/& /g
YGp{q7@q

Пояснення:

i1234567890<esc>    " insert '1234567890'
qq                  " Record the following into register 'q'
  Y                 "   Yank a line
   P                "   Paste it above us
    :s/\d/& /g      "   Put a space after each number
Y                   "   Yank this line
 G                  "   Move the end of the buffer
  p                 "   Paste the line
   {                "   Move the beginning of the buffer
    q               " Stop recording
     7@q            " Call macro 'q' 7 times

6
Мені навіть байдуже, що це не переможець, це красиво.
MrDuk

@MrDuk Thankyou! Я радий, що тобі це подобається :)
DJMcMayhem

21

05AB1E ,  14  13 байт

17F9ÝÀN8αð×ý,

Спробуйте в Інтернеті!

Пояснення

17F            # for N in [0 ... 16] do
   9Ý          # push [0 ... 9]
     À         # rotate left
      N8α      # compute the absolute difference between N and 8
         ð×    # push that many spaces
           ý   # merge the list of digits with the space string as separator
            ,  # print

1
Гм ... ти міг бити SOGL, якщо тобі не потрібен s... чи є сенс з'єднувати рядок зі списком або список зі струною? Я запропоную вдосконалення Аднану. О, і є .∊для û».
Erik the Outgolfer

@EriktheOutgolfer: Або я міг переключити свій метод і зберегти той байт, який мені знадобився :)
Emigna

Вибачте, вже заперечено
Erik the Outgolfer

3
Це означає, що я б знову відмовився ...
Erik the Outgolfer

4
8F9ÝÀNð×ý}».∊Я зробив зробив космічний корабель! І я був дуже радий запропонувати 12-байтну редагування.
Чарівна восьминога урна

20

C64 ASM, 358 байт (102 байти, зібрані з basicstub)

Це найближче, що я міг отримати через очевидні обмеження:

C64

jsr $E544
lda #9
sta $FD
nl1: jsr dl
jsr il
dec $FD
bne nl1
inc $FD
nl2: ldy $FD
cpy #9
bne nt1
bl: jmp bl
nt1: iny
sty $FD
jsr dl
jsr il
jmp nl2
dl: clc
ldx #$31
ldy #0
lp: txa
sm: sta $0400, y
inx
cpx #$31
bne c1
rts
c1: cpx #$3A
bne nt2
ldx #$30
clc
nt2: tya
adc $FD
cmp #40
bcc c2
rts
c2: tay
jmp lp
il: lda sm+1
adc #39
bcc nc
inc sm+2
nc: sta sm+1
rts

(Можливо, можливо, було б оптимізовано зовсім небагато)


Ласкаво просимо до PPCG! Будь ласка, використовуйте тег коду, щоб розмістити досить. Я редагував вашу публікацію. Після застосування змін ви можете побачити, що змінилося, натиснувши на правка
Евгений Новиков

Я щойно перевірив, і він навіть не поміститься на ПЕТ з 80 сотками, оскільки для першого та останнього рядка потрібні 82 стовпчики.
Shaun Bebbers

17

TSQL, 220 148 байт

Поліпшення розміщено ZLK:

DECLARE @ VARCHAR(MAX)=''SELECT TOP 17@+=REPLACE('1@2@3@4@5@6@7@8@9@0','@',SPACE(ABS(9-RANK()OVER(ORDER BY object_id))))+'
'FROM sys.objects PRINT @

Вихід:

1        2        3        4        5        6        7        8        9        0
1       2       3       4       5       6       7       8       9       0
1      2      3      4      5      6      7      8      9      0
1     2     3     4     5     6     7     8     9     0
1    2    3    4    5    6    7    8    9    0
1   2   3   4   5   6   7   8   9   0
1  2  3  4  5  6  7  8  9  0
1 2 3 4 5 6 7 8 9 0
1234567890
1 2 3 4 5 6 7 8 9 0
1  2  3  4  5  6  7  8  9  0
1   2   3   4   5   6   7   8   9   0
1    2    3    4    5    6    7    8    9    0
1     2     3     4     5     6     7     8     9     0
1      2      3      4      5      6      7      8      9      0
1       2       3       4       5       6       7       8       9       0
1        2        3        4        5        6        7        8        9        0

DECLARE @ VARCHAR(MAX)=''SELECT TOP 17@+=REPLACE('1@2@3@4@5@6@7@8@9@0','@',SPACE(ABS(9-RANK()OVER(ORDER BY object_id))))+' 'FROM sys.objects PRINT @
ZLK

Замінити sys.objectsз sysobjects, і 1object_id` з idя шукав коротші таблиці в sysсхемі, але нічого не доходячи була колонки коротше , якsysobjects
Jaloopa

І ви можете заощадити ще кілька байт, змінивши внутрішній CASTPOWER(10)) доVARCHAR
Jaloopa

Насправді уникайте всього, що замінює речі, використовуючи LOG10та REPLICATE:DECLARE @o VARCHAR(MAX)=''SELECT TOP 17 @o+=REPLACE('1@2@3@4@5@6@7@8@9@0','@',replicate(' ',LOG10(POWER(10,ABS(ROW_NUMBER()OVER(ORDER BY id)-9)+1)/10)))+' 'FROM sysobjects PRINT @o
Jaloopa

Ви можете змінити ім'я змінної на просто, @щоб відбрити 3 символи.
Міст

14

APL (Dyalog) , 22 байти

↑∊¨(1+|¯9+⍳17)↑¨¨⊂1⌽⎕D

Спробуйте в Інтернеті!

⎕DD запалює від нуля до дев'яти

1⌽ обертати один крок вправо (ставить нуль в кінці)

 додавати (розглянути як одиницю)

()↑¨¨ Для кожного з цих чисел візьміть стільки символів з кожної з літер:

⍳17 один через сімнадцять

¯9+ відняти дев'ять

| знайти абсолютні значення

1+ додати одну

∊¨ зарахувати (згладити) кожного

 змінити один шар глибини на рівень рангу (матрифікувати)


3
На компактній мові, як це, серйозно потрібно два байти, щоб додати один?
aschepler

3
@aschepler Так. APL не є мовою для гри в гольф, і не має приросту примітивом. J робить, але це займає два байти; >:.
Adám

4
APL is not a golfing language... ↑⊃¨,/¨(1+|¯9+⍳17)↑¨¨⊂1⌽⎕D... ಠ_ಠ
Олександр

1
@ Александр Дякую за те, що я повернув увагу до цього. Я міг би гольф на 3 байти.
Adám


12

Java 11 (JDK) , 98 байт

o->{for(int i=-9;++i<9;)System.out.println("".join(" ".repeat(i<0?-i:i),"1234567890".split("")));}

Спробуйте в Інтернеті!

  • -14 байт, перейшовши на JDK 11, який тепер є власним String::repeat.

Попередня відповідь ( Java (OpenJDK 8) ), 113 112 байт

o->{for(int i=-9;++i<9;)System.out.printf("".join("%1$"+(i<0?-i:i>0?i:"")+"s","1234567890".split(""))+"%n","");}

Спробуйте в Інтернеті!

Пояснення

Я в основному будую наступні String17 разів ( Nце змінна, а не фактичне значення):

"1%1$Ns2%1$Ns3%1$Ns4%1$Ns5%1$Ns6%1$Ns7%1$Ns8%1$Ns9%1$Ns0%n"

Це всі очікувані цифри, поєднані з тим, %1$Nsде Nкількість пробілів між кожною цифрою.

%1$Nsв основному означає "взяти перший аргумент і розмістити його до тих пір, поки довжина не буде принаймні N". Крім того , %1$0sне підтримуються , так це особливий випадок %1$sзроблений для 0.

Нарешті, я форматую-друкую цей рядок за допомогою одного аргументу:, ""тому форматник повторно використовує завжди ту саму порожню рядок, додаючи її пробілами, якщо потрібно.

Економить

  • 1 байт завдяки Kevin Cruijssen

2
Гарна відповідь! До речі, я явно згадав у виклику невикористаний порожній параметр дозволений, так що ви можете замінити ()->з , o->щоб зберегти байти. :)
Kevin Cruijssen

Можете чи ви зробити і використовувати його в цикл? ointfor(o=-9;++o<9;)
Зима

2
@Winter Ні, тому що виклик говорить " невикористаний ", і це використовувало б змінну параметрів, навіть якщо значення не буде використано.
Олів'є Грегоар

@ OlivierGrégoire Він посилається на цю пошту codegolf.meta.stackexchange.com/questions/12681/…, і в цих публікаціях написано лише, що вона повинна бути порожньою (0 для ints).
Зима

@Indeed Дійсно, але сам виклик говорить "невикористаний". Конкретні рішення у виклику, що скасовуються, відхиляють за замовчуванням.
Олів’є Грегоар

11

Japt -R , 19 18 16 14 13 байт

Aõ%A
£qYçÃÔÅê

Тестуйте або спробуйте в Інтернеті


Пояснення

A             :10
 õ           :Range [1,10]
  %A         :Modulo each by 10
\n           :Assign to variable U
£            :Map each element at 0-based index Y
 q           :  Join U with
  Yç         :   Space repeated Y times
    Ã        :End map
     Ô       :Reverse
      Å      :Slice off first element
       ê     :Mirror
             :Implicitly join with newlines and output

2
Приємно. Моє 16- 9ÆAõ%A qXîÃw ê ·
байтне

8

JavaScript (ES2017), 83 73 72 68 байт

Дякую Шаггі за збереження 10 байт. Дякую Крейгу за збереження 1 байта. Дякуємо дугам за збереження 4 байтів.

for(i=-9,a="";i++<8;)a+=[...`1234567890
`].join("".padEnd(i<0?-i:i))

for(i=-9,a="";i++<8;)a+=[...`1234567890
`].join("".padEnd(i<0?-i:i))

console.log(a);
.as-console-wrapper { max-height: 100% !important; top: 0; }
.as-console-row:after { display: none !important; }


Збережіть 1 байт, використовуючи поліфайл для Math.abs. Я також зробив aсписок не жорстким кодом, але це перевага ...a=[...Array(10).keys()];for(i=-8;i<9;i++)console.log(a.join(' '.repeat(i<0?-i:i)))
Thomas W

1
Збережіть кілька байт за допомогою[..."1234567890"].join("".padEnd(i<0?-i:i))
Shaggy

@Shaggy Дякую Це врятувало 10 байт. :)
Тушар

1
@ThomasW: [...Array(10).keys]мав би 0як перший елемент, а не останній.
Shaggy

1
Ви можете зберегти байт, використовуючи свій метод, зберігаючи результат у рядку, а не в журналі: for(i=-8,s="";i<9;i++)s+=[..."1234567890"].join("".padEnd(i<0?-i:i))+`X`де Xактуальний новий рядок
Крейг Айре

7

Брахілог , 30 29 28 байт

Ị↺{∧≜;Ṣj₍g;?↔zcc}ᶠ⁹↔;XcP↔Pẉᵐ

Спробуйте в Інтернеті!

Збережено один байт завдяки Leaky Nun .

Пояснення

Ị↺                               The string "1234567890"
  {               }ᶠ⁹            Find the first 9 outputs of:
   ∧≜                              Take an integer
       ;Ṣj₍                        Juxtapose " " that number of times
           g;?↔z                   Zip that string of spaces with "1234567890"
                cc                 Concatenate twice into one string
                    ↔            Reverse the resuling list
                     ;XcP↔P      Palindromize the list (concatenate X to it into the list P,
                                   P reversed is still P)
                           ẉᵐ    Map writeln


@LeakyNun Я застряг на великій "Друкуйте цей точний текст" і не прочитав, що у нас можуть бути
сліди


1
@LeakyNun Чому ви не опублікували власну відповідь?
Фаталізувати

7

Вугілля деревне , 18 байт

F⁹⪫⁺…I¹:⟦0¶⟧× ι‖B↑

Спробуйте в Інтернеті! Посилання на багатослівну версію коду. Пояснення:

F⁹      Repeat 9 times (i = loop variable)
  ⪫       Join
   ⁺       Concatentate
    …I¹:    All the characters from str(1) below ":" (i.e. to "9") as a list
    ⟦0¶⟧    A list whose element is the string "0\n"
   × ι     With i spaces
‖B↑     Reflect everything upwards but without duplicating the top line

Примітка: Cast(1)бере однакову кількість байтів, тому "1"що потрібен був би роздільник ":"(що, як це трапляється, девербосифікатор не вдається вставити).


7

R , 108 байт

for(i in abs(-8:8))cat(paste0(el(strsplit("1234567890","")),paste(rep(" ",i),collapse=""),collapse=""),"\n")

Тільки обклеювання і згортання струн.

Спробуйте в Інтернеті!

Редагувати: дякую Challenger5 за вказівку на проблему. Виправлено це зараз.

Редагування 2: збережений байт завдяки bouncyball.


Ласкаво просимо на сайт! :)
DJMcMayhem

2
Це виглядає не зовсім правильно - середня лінія взагалі не повинна мати пробілів.
Esolanging Fruit

@ Challenger5 ви праві! виправили це за допомогою, paste0замість pasteтого, довелося додати байт :(
Probel

1
збережіть 2 байти, використовуючи el: el(strsplit("1234567890",""))замістьstrsplit("1234567890","")[[1]]
bouncyball

Ви можете позбутися одного з pasteтверджень, скориставшись sepаргументом catта зробивши трохи більше, щоб отримати його до 70 байт
Джузеппе,



6

Java 8, 235 234 206 163 байт

interface A{static void main(String[]a){for(int i=-8;i<9;i++){String s="";for(int j=1,k;j<10;j++){s+=j;for(k=0;k<(i>0?i:-i);k++)s+=" ";}System.out.println(s+0);}}}

Оновлення : -28 байт завдяки Leaky Nun!
Оновлення 2 : -43 байти завдяки Leaky Nun знову!

Безголівки:

interface A {
    static void main(String[] a) {
        for (int i = -8; i < 9; i++) {
            String s = "";
            for (int j = 1, k; j < 10; j++) {
                s += j;
                for (k = 0; k < (i > 0 ? i : -i); k++)
                    s += " ";
            }
            System.out.println(s + 0);
        }
    }
}

Спробуйте в Інтернеті

EDIT: Код раніше був неправильним! Зробив помилку під час гольф-коду, він повинен працювати так, як було призначено зараз!


4
Ласкаво просимо до PPCG! Поради щодо гольфу на Яві та Поради щодо гольфу на <всіх мовах> можуть бути цікавими для прочитання. :) Деякі речі, якими можна пограти в гольф, - це видалення publicта позбавлення від зайвих місць. І є ще деякі речі, які варто покращити, але я пропоную прочитати поради та побачити, де ви можете вдосконалитись. Ще раз ласкаво просимо і насолоджуйтесь своїм перебуванням! :)
Кевін Крейссен

2
Хм, також, ви впевнені, що опублікували правильний код? Коли я копіюю і вставляю ваш код у TryItOnline, він не дає правильного виводу.
Kevin Cruijssen

1
Ах чорт, я зробив щось не так під час гольфу код! Я це виправлю!
Алекс Ферретті



6

Лушпиння , 21 байт

mΣṪ`:§+↔tḣR8' ṁs`:0ḣ9

Це повна програма, яка друкує на STDOUT. Спробуйте в Інтернеті! Є багато простір.

Пояснення

У лушпиння все ще не вистачає багатьох необхідних речей, таких як функція діапазону з двома аргументами, тому частини цього рішення трохи хиткі.

mΣṪ`:§+↔tḣR8' ṁs`:0ḣ9
              ṁs`:0ḣ9  This part evaluates to the string "1234567890".
                   ḣ9   Range from 1 to 9.
                `:0     Append 0.
              ṁs        Convert each number to string and concatenate.
     §+↔tḣR8'          This part evaluates to a list like ["  "," ",""," ","  "]
                       but with 17 elements instead of 5.
          R8'           A string of 8 spaces.
         ḣ              Take prefixes.
     §+                 Concatenate
       ↔                the reversal and
        t               tail of the prefix list, palindromizing it.
  Ṫ                    Take outer product of the two lists
   `:                  with respect to flipped prepeding.
                       This prepends each digit to each string of spaces.
mΣ                     Map concatenation over the results, computing the rows.
                       Implicitly join with newlines and print.

Ви могли б замінити ṁs`:0ḣ9з uṁsḣ10генерувати рядок «1234567890» з одним меншою кількістю байт!
Софія Лехнер

6

T-SQL 145 152 байти

DECLARE @ VARCHAR(MAX)=''SELECT TOP 17@+=REPLACE('1x2x3x4x5x6x7x8x9x0','x',SPACE(ABS(number-8)))+'
'FROM master..spt_values WHERE type='P'PRINT @

Оновлено для використання:

  • master..spt_valuesдля генерації чисел ( WHERE type = 'P'вони завжди послідовні, починаючи з 0)
  • @ TOP 17Ідея ZLK
  • PRINT (дотримуватись правил - немає рядків)
  • @ Відмінна ідея JanDrozen включити повернення каретки в рядок (я вважав, що це лише один байт - Windows CRLF що?)
  • Ідея @Bridge використовувати просто @ для назви змінної - всі ці хитрощі !!

Результати:

1        2        3        4        5        6        7        8        9        0
1       2       3       4       5       6       7       8       9       0
1      2      3      4      5      6      7      8      9      0
1     2     3     4     5     6     7     8     9     0
1    2    3    4    5    6    7    8    9    0
1   2   3   4   5   6   7   8   9   0
1  2  3  4  5  6  7  8  9  0
1 2 3 4 5 6 7 8 9 0
1234567890
1 2 3 4 5 6 7 8 9 0
1  2  3  4  5  6  7  8  9  0
1   2   3   4   5   6   7   8   9   0
1    2    3    4    5    6    7    8    9    0
1     2     3     4     5     6     7     8     9     0
1      2      3      4      5      6      7      8      9      0
1       2       3       4       5       6       7       8       9       0
1        2        3        4        5        6        7        8        9        0

(Дякую @JanDrozen за ідею ЗАМІНИ)


Це приємна відповідь! Ласкаво просимо на сайт :)
DJMcMayhem

Дякую. Я бачу, що дехто з нас винайшов свої власні мови тут :)
Інвертор

1
Оптимальна суміш між цією відповіддю та іншою: напр. SELECT TOP 17REPLACE('1x2x3x4x5x6x7x8x9x0','x',SPACE(ABS(9-RANK()OVER(ORDER BY object_id))))FROM sys.objects(Якщо припустити, що не потрібно друкувати).
ZLK

Ага @ZLK - кілька приємних хитрощів - ТОП 17, РОБИТЕ НАДЕЖЕ та sys.objects - дякую!
Інженер з зворотним

6

Clojure, 126 99 байт

-27, виправивши пару тупих помилок. Зовнішнє використання aне було необхідним, тому я зміг позбутися aвзагалі і просто apply strодин раз написати . Це також дозволило використовувати макрос функції для основної функції, який зберігав деякі байти. Я також наголосив на заклику Math/absзамість перезавантаження n-spaces.

В основному порт Clojure ідеї Python @ Mr.Xcoder. В ретроспективі я повинен був використовувати abs/ rangeметод для виклику алмазів спочатку, але я, можливо, не мав результату помилок!

Досить просто. Об'єднує числовий рядок із кількістю пробілів, що залежить від поточного рядка.

#(doseq[n(range -8 9)](println(clojure.string/join(apply str(repeat (Math/abs n)\ ))"1234567890")))

(defn bugged []
  (doseq [n-spaces (range -8 9)]
    (println
        (clojure.string/join
          ; "String multiplication"
          (apply str
                 (repeat (Math/abs n-spaces) \space))
          "1234567890"))))


5

Математика, 92 байти

Column@Join[Reverse@(s=Row/@Table[Riffle[Range@10~Mod~10,""<>Table[" ",i]],{i,0,8}]),Rest@s]

Спробуйте в Інтернеті

скопіюйте / вставте код за допомогою
клавіші ctrl-v shift + введіть, щоб запустити


Не могли б ви додати посилання TryItOnline ?
Kevin Cruijssen

@KevinCruijssen Mathematica - це не вільна мова, і математика, здається, не працює .
Leaky Nun

@LaakyNun Ну добре, спасибі Я бачу, що MartinEnder іноді публікує TIO-посилання, але це були справді посилання Mathics.
Kevin Cruijssen

1
@Kevin Cruijssen так, звичайно, я додав посилання з інструкціями
J42161217

5

C, 97 байт

i=-9;main(j){for(;++i<9;putchar(10))for(j=0;++j<11;printf("        "+8-abs(i)))putchar(48+j%10);}

Ваш компілятор, ймовірно, багато скаржиться на цей код; міна кинула 7 попереджень 4 різних типів. Можливо, пізніше вдосконалите код.

Спробуйте в Інтернеті!


5

C (gcc) , 76 байт

f(x,y){for(y=-9;++y<9;puts(""))for(x=10;x++;printf("%-*d",abs(y)+1,x%=10));}

Спробуйте в Інтернеті!

Він виводить деякі пробіли, які повинні бути в порядку.

Він друкує числа за допомогою лівих обґрунтованих полів динамічної довжини - саме для цього використовується рядок формату %-*d.

Внутрішній цикл має деяку смішну ініціалізацію (починається з 10; будь-яке кратне число 10 буде добре), щоб "спростити" його стан припинення.


4

Вугілля , 21 20 19 18 байт

F⁹«F…¹χ⁺κ… ι0⸿»‖B↑

Спробуйте в Інтернеті!

Посилання на багатослівну версію . В основному я створюю нижню частину малюнка, а потім відображаю текст вгору.


1
Коли я побачив запитання, то хоч би спробував це спробувати у вугіллі, перш ніж подивитися на відповідь. Я почав з 21-байтової відповіді, але пограв на 20 байт ... моторошно!
Ніл

@Neil :-D Ну, це вже 19 байт!
Чарлі

Так, я щойно знайшов цей гольф. Я також розглядав E…⁹⪫E…·¹χI﹪κχ× ι‖B↑(також на 19 байт), але перекладачеві це не подобається (я сам не бачу, що з цим погано).
Ніл

О, Range приймає два аргументи, нерозумно мені.
Ніл

1
Виявилося, це Mapбула червона оселедець, тому я опублікував свою 18-байтну відповідь.
Ніл

4

CJam , 21 байт

A,(+aH*ee{:\8-zS**n}/

Спробуйте в Інтернеті!

Пояснення

A,     e# Get [0 1 2 ... 9].
(+     e# Rotate the 0 to the end.
aH*    e# Wrap in an array and repeat 17 times.
ee     e# Enumerate. This pairs each copy of the array with its index in
       e# the list.
{      e# For each [index array] pair...
  :\   e#   Unwrap the pair and swap its order.
  8-z  e#   Get the absolute difference of the index from 8.
  S*   e#   Get a string of that many spaces.
  *    e#   Riffle the list of digits with the string of spaces.
  n    e#   Print it with a trailing linefeed.
}/

1
Альтернативне рішення (також 21 байт):9{S*A,(+\*}%_W%);\+N*
Esolanging Fruit

4

Пакетна, 163 байти

@set s=1 2 3 4 5 6 7 8 9 0
@set t=         
@for %%l in (9 7)do @for /l %%i in (1,1,%%l)do @call:%%l
:7
@set t=  %t%
:9
@set t=%t:~1%
@call echo %%s: =%t%%%

Примітка. Перший рядок закінчується в 9 просторах. Пояснення: Використовується нумерація творчих рядків! Перший цикл потрібно виконати 9 разів та видалити пробіл кожен раз, тоді як другий цикл потрібно виконати 8 разів та додавати пробіл кожен раз. Перший досягається, запускаючи його 7 разів і провалюючись у 8-й раз, тоді як другий досягається додаванням двох пробілів і пропусканням, щоб знову видалити один з них.


4

SOGL V0.12 , 14 байт

ā9{SUčf@*∑Κ}╬Æ

Спробуйте тут!

Пояснення:

ā               push an empty array
 9{        }    9 times do
   SU             push "1234567890"
     č            chop into characters
      f@*         get current iteration (0-based) amount of spaces
         ∑        join with that
          Κ       prepend this to the array
            Β  palindromize vertically with 1 overlap


4

PowerShell , 30 байт

8..0+1..8|%{1..9+0-join' '*$_}

Спробуйте в Інтернеті!

Побудує діапазон 8,7,6...2,1,0,1,2...8циклів, що проходять через кожне число. Всередині циклу ми будуємо ряд 1..9зчеплених з 0потім -joinчислами в діапазоні разом з відповідною кількістю прогалин. Кожен рядок залишається на конвеєрі, а результат завершення програми неявний.


1
Гарна відповідь! Пауершелл раптом відчуває себе більш гострим :)
Містер Xcoder
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.