Bu sadece bir hataydı


76

Bu elmas yarışmasında Print için @ Carcigenicate 'in Clojure cevabındaki bulanan çıktıdan esinlenilmiştir .

Bu tam metni yazdır:

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

(Her iki yönde de ortadan dışa doğru, her hane bir önceki satıra göre bir boşluk daha ayrılır.)

Meydan okuma kuralları:

  • Giriş yok ( veya kullanılmayan boş bir giriş ).
  • Sondaki boşluklar isteğe bağlıdır.
  • Tek bir izleyen yeni hat isteğe bağlıdır.
  • Önde gelen boşluklara veya yeni satırlara izin verilmez.
  • Bir dize dizisi döndürmeye izin verilmiyor. Metnin çıktısını almanız veya doğru sonuçla tek bir dize döndüren bir işleve sahip olmanız gerekir.

Genel kurallar:

  • Bu , bayt cinsinden en kısa cevap kazanır.
    Code-golf dillerinin, codegolfing olmayan dillerle cevap göndermekten vazgeçmesine izin vermeyin. Herhangi bir programlama dili için mümkün olduğunca kısa bir cevap bulmaya çalışın.
  • Cevabınız için standart kurallar geçerlidir , bu nedenle STDIN / STDOUT fonksiyonlarını, uygun parametrelerle fonksiyonlarını ve geri dönüş tipini, tam programları kullanmanıza izin verilir. Senin çağrı.
  • Varsayılan Loopholes yasaktır.
  • Mümkünse, lütfen kodunuz için test içeren bir bağlantı ekleyin.
  • Ayrıca, lütfen gerekirse bir açıklama ekleyin.

Dizge dizisi - satır başına 1 dizge - çıktısına izin veriliyor mu?
Shaggy,

@Shaggy Üzgünüz, bu durumda ya yeni satırlarla tek bir dize döndürmeli ya da sonucu vermelidir. Bunu meydan okumaya kural olarak ekledim.
Kevin Cruijssen,

Endişelenme, Kevin; sadece birkaç bayt kurtarıp kurtaramayacağımı görmek için kolumu değiştiriyordum.
Shaggy,

3
@Shaggy Hehe. Bu birkaç byte'ı kaydetme amacına sahip olmanın yanı sıra, kod-golf mücadelesinde soru sormamız gereken başka bir neden var mı? ;)
Kevin Cruijssen

8
Ha, bu harika. Bu cevabın neden aniden bu kadar dikkat çektiğini merak ediyordum. Teşekkürler!
Carcigenicate,

Yanıtlar:


7

SOGL V0.12 , 12 bayt

9{SUē↕∑}¹№╬«

Burada dene! Açıklama:

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

Güzel, bu kabul edilen cevaptan daha kısa. Hmm, cevap kabul edildikten birkaç ay sonra kısa cevaplar konusundaki politika nedir? Bu şimdi çek alıyor mu (sanırım şu anda kabul edilen cevabın haksız olması) veya başka bir şey mi yapmalıyım? Ne olursa olsun büyük cevap! Benden +1.
Kevin Cruijssen

@KevinCruijssen Genellikle en iyi uygulama, kabul edilen cevabı güncellemektir, ancak bu birkaç yeni özellik kullandığından, iki şekilde de bir yol kat etmesi gerektiğini söyleyebilirim.
dzaima

62

Python 2 , 59 57 56 55 bayt

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

Çevrimiçi deneyin!

@Leaky Nun bunu çok fazla golf oynamasına yardımcı oldu, @Praind Önceden düşündüğüm, ama düzenlemeyi unuttuğum 1 baytı kurtarmak için bir yöntem önerdi: @CotyJohnathanSaxman döngü değiştirmeyi önerdi.


açıklama

  • i=8- Değeri 8adı verilen bir değişkene atar i.

  • exec"..."*17- Bu kod bloğunu ( ...) 17 kez yürütün .

  • print(...) - Sonuç çıktı.

  • ' '*abs(i)- Tekrarlanan |i|zaman aralıklı bir Dize oluşturun .

  • .join('1234567890')- yukarıda oluşturulan dize araya ekleme 1234567890, öyle ki |i|boşluk basamak arasında yerleştirilir.

  • i-=1- Azalır ive 17 kez çalıştırılarak -8, te yardımı ile te tekrarlayan bir model oluşturur abs().



23
Bu, herhangi bir golf dilinde imho'da 25 bayttan daha etkileyici bir çiftlik.
Jylo

4
@Jylo Teşekkürler, ancak 25 baytlık çözümler çok etkileyici, çünkü yazarları tarafından yapılan çok sayıda golf çalışması olduğunu gösteriyorlar. Öncelikle kaynaklarındaki her bir karakterin ne anlama geldiğini bilmelisin, sonra ne kadar güzel golf oynadıklarını anlayacaksın.
Bay Xcoder

2
@JasonChen Hayır, Python bu sözdizimine izin vermiyor, çünkü bu C benzeri dillere özgü.
Bay Xcoder,

5
Muhtemel ilham: exec 55 bayt olmadan da yapılabilir . Python 3'ü 57 byte'a indirmek için benzer bir yaklaşım kullanıldı . Bunu atlayarak kısaltmanın herhangi bir yolunu görmedim exec, ancak bunu bir olasılık olarak söyleyeceğimi düşündüm.
ShadowRanger

32

Vim, 35 bayt:

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

Açıklama:

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
Bunun kazanan olmamasını bile umursamıyorum, güzel.
MrDuk

@ MrDuk Teşekkür ederim! Beğendiğine sevindim :)
DJMcMayhem

21

05AB1E ,  14  13 bayt

17F9ÝÀN8αð×ý,

Çevrimiçi deneyin!

açıklama

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
Hmm ... eğer ihtiyacın olmasaydı SOGL'u yenebilirdin s... bir dizgiye bir listeye ya da bir dizgeye bir listeye katılmak mantıklı mı? Adnan'a iyileştirme önereceğim. Oh, ve bunun .∊için var û».
Outgolfer Erik,

@EriktheOutgolfer: Veya yöntemimi değiştirip ihtiyacım olan 1 baytı kurtarabilirim :)
Emigna

Üzgünüm, zaten oy verildi.
Outgolfer Erik,

3
Bu da tekrar oy kullanacağım anlamına geliyor ...
Outgolfer Erik,

4
8F9ÝÀNð×ý}».∊Ben bir uzay gemisi maw yaptım! Ve 12 baytlık bir düzenleme önerdiğim için çok heyecanlıydım.
Magic Octopus Urn

20

C64 ASM, 358 bayt (basicstub ile derlenmiş 102 bayt)

Bu bariz sınırlamalar nedeniyle alabileceğim en yakın şey:

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

(Muhtemelen biraz optimize edilmiş olabilir)


PPCG'ye Hoşgeldiniz! Güzel göndermek için lütfen kod etiketini kullanın. Yazınızı düzenledim. Değişiklikler yapıldıktan sonra, düzenlemeyi tıklayarak nelerin değiştiğini görebilirsiniz
Евгений Новиков

Daha yeni kontrol ettim ve ilk ve son satırda 82 sütun gerektiğinden 80 kol PET'e bile sığmıyor.
Shaun Bebbers

17

TSQL, 220 148 bayt

ZLK tarafından yayınlanan iyileştirme:

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 @

Çıktı:

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,

Değiştir sys.objectsile sysobjectsve ile 1object_id` idben daha kısa tabloları aradık sysşema, ama hiçbir şey kısa oldu kolonlar olduğunca kısasysobjects
Jaloopa

Ve CASTPOWER(10)VARCHAR
içini

Aslında, LOG10ve bunları kullanarak tüm bunları yerine kaçının 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

Değişken adını sadece @3 karakterden arınacak şekilde değiştirebilirsiniz .
Köprü

14

APL (Dyalog) , 22 bayt

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

Çevrimiçi deneyin!

⎕DD sıfırdan dokuza çıkar

1⌽ bir adım sağa döndür (sonunda sıfır yapar)

 sarmak (birim olarak tedavi etmek)

(... )↑¨¨ için her bu numaralardan gelen birçok karakter almak her harflerin:

⍳17 bir ila onyedi

¯9+ dokuz çıkarmak

| mutlak değerleri bulun

1+ bir tane ekle

∊¨ her birini listele

 bir derinlik katmanını rütbe seviyesine değiştir (matrify)


3
Bu gibi kompakt bir dilde, bir tanesini eklemek için iki byte'ı ciddiye almak gerekir.
aschepler

3
@aschepler Evet. APL bir golf dili değildir ve ilkel bir artışa sahip değildir. J yapar, ancak iki bayt alır; >:.
Adám

4
APL is not a golfing language... ↑⊃¨,/¨(1+|¯9+⍳17)↑¨¨⊂1⌽⎕D... ಠ_ಠ
Alexander,

1
@Alexander Dikkatimi bu konuya geri getirdiğin için teşekkürler. 3 byte golf oynayabilirim.
Adám


12

Java 11 (JDK) , 98 bayt

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

Çevrimiçi deneyin!

  • Şimdi yerli olan JDK 11'e geçerek -14 bayt String::repeat.

Önceki cevap ( Java (OpenJDK 8) ), 113 112 bayt

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

Çevrimiçi deneyin!

açıklamalar

Temelde aşağıdaki String17 kez yapıyorum ( Nbir değişken değil gerçek bir değerdir):

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

Bu birleştirilmiş beklenen tüm rakamlar, bu %1$Nsburada Nher rakam arasındaki boşlukların sayısıdır.

%1$Nstemel olarak "ilk argümanı al ve uzunluğu en az olana kadar doldur" anlamına gelir N. Ayrıca, %1$0sdesteklenmiyor, bu yüzden için özel bir dava %1$syapılır 0.

Son olarak, tek bir argüman kullanarak bu dizgiyi ""biçimlendiririm : bu yüzden biçimlendirici her zaman aynı boş dizgiyi yeniden kullanır ve gerektiğinde boşluklarla doldurur.

kaydeder

  • Kevin Cruijssen sayesinde 1 bayt

2
Güzel cevap! Ancak, kullanılmayacak boş bir parametreye izin verildiği için açıkça belirtmiştim, böylece bir bayttan tasarruf etmek için ()->ile değiştirebilirsiniz o->. :)
Kevin Cruijssen

Eğer yapabilir obir intve döngü Gözlerinde farklı kullanmak? for(o=-9;++o<9;)
Kış

2
@Winter Hayır, çünkü zorluk " kullanılmamış " diyor ve bu değer kullanılmasa bile parametre değişkenini kullanır.
Olivier Grégoire

@ OlivierGrégoire Bu yazıya linkler codegolf.meta.stackexchange.com/questions/12681/… ve bu mesajlar sadece boş olması gerektiğini söylüyor ( inç için 0).
Kış

@Indeed Gerçekten, ama zorluğun kendisi "kullanılmamış" diyor. Bir meydan okumadaki belirli kurallar varsayılanları geçersiz kılar.
Olivier Grégoire

11

Japt -R , 19 18 16 14 13 bayt

Aõ%A
£qYçÃÔÅê

Test edin veya çevrimiçi deneyin


açıklama

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
Güzel. 16 baytlık çözümüm9ÆAõ%A qXîÃw ê ·
ETHproductions

8

JavaScript (ES2017), 83 73 72 68 bayt

10 bayt tasarruf için teşekkürler Shaggy . 1 byte tasarruf için teşekkürler Craig . Teşekkür kavisler 4 bayt kaydetmek için.

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


İçin bir polyfill kullanarak 1 bayttan tasarruf edin Math.abs. Ayrıca alisteyi kodlanmamış hale getirdim , ama bu bir tercih ...a=[...Array(10).keys()];for(i=-8;i<9;i++)console.log(a.join(' '.repeat(i<0?-i:i)))
Thomas W

1
Bazı baytları kaydet[..."1234567890"].join("".padEnd(i<0?-i:i))
Shaggy

@Shaggy Teşekkürler. Bu 10 bayt kurtardı. :)
Tushar

1
@ThomasW: Sonuncu değil, ilk eleman [...Array(10).keys]olurdu 0.
Shaggy,

1
Sonucu günlüğe kaydetmek yerine bir dizgede saklamak için yönteminizi kullanarak bir bayt kaydedebilirsiniz:, gerçek bir yeni satır for(i=-8,s="";i<9;i++)s+=[..."1234567890"].join("".padEnd(i<0?-i:i))+`X`neredeX
Craig Ayre

7

Brachylog , 30 29 28 bayt

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

Çevrimiçi deneyin!

Leaky Nun sayesinde bir bayt kurtarıldı .

açıklama

Ị↺                               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 Büyük "Bu tam metni yazdır" başlığına sıkışıp kaldım ve takip eden satırlara sahip olabileceğimizi
okumamıştım


1
@LeakyNun Neden kendi cevabınızı göndermediniz?
17'de

7

Kömür , 18 bayt

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

Çevrimiçi deneyin! Bağlantı, kodun ayrıntılı bir versiyonudur. Açıklama:

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

Not: Cast(1)Aynı sayıda bayt alır, çünkü "1"daha önce bir ayırıcıya ihtiyaç duyar ":"(bu, gç değiştirici takma işleminde başarısız olur).


7

R , 108 bayt

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

Sadece dizeleri yapıştırmak ve daraltmak.

Çevrimiçi deneyin!

Düzenleme: Challenger5 için bir sorunu işaret ettiği için teşekkür ederiz. Şimdi düzeltildi.

Düzenleme 2: zıplayan top sayesinde bir bayt kurtardı.


Siteye Hoşgeldiniz! :)
DJMcMayhem

2
Bu tam olarak doğru görünmüyor - orta çizgide hiç boşluk olmamalıdır.
Esolanging Fruit,

@ Challenger5 haklısın! kullanarak bu sabit paste0yerine pastebir byte :( eklemek böylece vardı
Probel

1
kullanarak 2 bayttan tasarruf edin el: el(strsplit("1234567890",""))yerinestrsplit("1234567890","")[[1]]
bouncyball

Argüman kullanarak ve onu 70 byte'a çıkarmak için biraz daha fazlasını yaparak pasteifadelerden birinden kurtulabilirsinizsepcat
Giuseppe

7

Python 3 , 58 57 54 bayt

i=8
while i+9:print(*'1234567890',sep=' '*abs(i));i-=1

Çevrimiçi deneyin!

(teşekkürler son üç bayt için @flornquake için; tamamen kullanarak unuttum sepgöre tasarruf etmek .join)


1
54 bayt:while i+9:print(*'1234567890',sep=' '*abs(i));i-=1
flornquake


6

Java 8, 235 234 206 163 bayt

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

Güncelleme : -28 bayt Leaky Nun sayesinde!
Güncelleme 2 : -43 bayt tekrar Leaky Nun sayesinde!

Ungolfed:

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

Çevrimiçi deneyin

EDIT: Daha önce kod yanlıştı! Kod golf oynarken bir hata yaptı, şimdi beklendiği gibi çalışması gerekir!


4
PPCG'ye Hoşgeldiniz! Java golf için ipuçları ve <tüm dillerde> içinde golf için ipuçları okumak ilginç olabilir. :) Golf oynayabileceğiniz bazı şeyler kaldırılıyor publicve gereksiz alanlardan kurtulabiliyorsunuz. Geliştirilmesi gereken daha çok şey var, ancak ipuçlarını okumanızı ve kendinizi geliştirebileceğiniz yeri görmenizi öneririm. Tekrar hoşgeldiniz ve konaklamanızın tadını çıkarın! :)
Kevin Cruijssen

2
Hmm, ayrıca doğru kodu gönderdiğinize emin misiniz? Kodunuzu TryItOnline içine kopyaladığımda doğru çıktı vermiyor.
Kevin Cruijssen

1
Lanet olsun, kodu golf oynarken yanlış bir şey yaptım! Bunu düzelteceğim!
Alex Ferretti,



6

Kabuğu , 21 bayt

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

Bu STDOUT'a yazdıran tam bir programdır. Çevrimiçi deneyin! Çok fazla takip alanı var.

açıklama

Husk, iki argüman menzil işlevi gibi çok sayıda temel özneyi hala kaçırıyor, bu yüzden bu çözümün parçaları biraz bozuk.

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.

"1234567890" dizesini daha az sayıda bayt ile oluşturmak için ṁs`:0ḣ9ile değiştirebilirsiniz uṁsḣ10!
Sophia Lechner

6

T-SQL 145 152 bayt

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

Kullanımı güncellendi :

  • master..spt_valuessayıları üretmek için ( WHERE type = 'P', bunlar her zaman ardışıktır, 0'dan başlar)
  • @ ZLK'nın TOP 17fikri
  • YAZDIR (kurallara uymak için - stringlist yok)
  • @ JanDrozen'in dizeye satırbaşını dahil etme konusundaki büyük fikri (Ben bunu sadece bir bayt olarak saydım - Windows CRLF ne?)
  • Değişken adı için sadece @ kullanmak için @Bridge Fikir - tüm bu püf noktaları !!

Sonuçlar:

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

(REPLACE fikri için @JanDrozen teşekkürler)


Bu güzel bir cevap! Siteye Hoşgeldiniz :)
DJMcMayhem

Teşekkürler. Bazılarımızın burada kendi dillerimizi icat ettiğini görüyorum :)
Reversed Engineer

1
Bu cevapla diğer cevap arasındaki karışım en uygunudur: örneğin SELECT TOP 17REPLACE('1x2x3x4x5x6x7x8x9x0','x',SPACE(ABS(9-RANK()OVER(ORDER BY object_id))))FROM sys.objects(yazdırmanız gerekmediğini varsayarak).
ZLK,

Aha @ZLK - birkaç güzel numara - TOP 17, ÜZERİNE RANK, ve sys.objects - teşekkürler!
Reversed Engineer

6

Clojure, 126 99 bayt

-27 bir kaç aptal hatayı düzelterek. Dış kullanımı agerekli değildi, bu yüzden atamamen kurtulmak ve sadece bir apply strkez yazmak başardı . Bu aynı zamanda bazı baytları kaydeden ana işlev için bir işlev makrosu kullanmama izin verdi. Ayrıca Math/abs, yeniden bağlama yerine aramayı da sıraladım n-spaces.

Temel olarak @ Mr.Xcoder'ın Python fikrinin bir Clojure limanı. Geçmişe bakıldığında, başlangıçta elmas mücadelesi için abs/ rangeyöntemini kullanmalıydım, ancak daha sonra bu çıktısını ben üretmemiş olabilirim!

Oldukça basit. Sayı dizesini geçerli satıra bağlı bir dizi boşlukla birleştirir.

#(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

Mathematica, 92 bayt

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

Çevrimiçi deneyin

kopyalamak / yapıştırmak için ctrl-v
tuşuna basın


Bir TryItOnline bağlantısı ekleyebilir misiniz ?
Kevin Cruijssen

@KevinCruijssen Mathematica ücretsiz bir dil değil ve Matematik çalışmıyor gibi görünüyor .
Leaky Nun

@LeakyNun Ah tamam, teşekkürler. MartinEnder'in bazen TIO linkleri gönderdiğini görüyorum, ancak bunlar aslında Matematik bağlantılarıydı.
Kevin Cruijssen,

1
@Kevin Cruijssen tabii ki evet, talimatlarla bağlantı ekledim
J42161217

5

C, 97 bayt

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

Derleyiciniz muhtemelen bu kod hakkında çok şikayet edecektir ; mine, 4 farklı tipte 7 uyarı attı. Kodu daha sonra iyileştirebilir.

Çevrimiçi deneyin!


5

C (gcc) , 76 bayt

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

Çevrimiçi deneyin!

Tamam olması gereken takip eden bazı boşluklar çıkarır.

Sayıları, dinamik uzunluktaki sola dayalı alanları kullanarak yazdırır - format dizesi %-*dbunun için.

İç döngü, sonlandırma koşulunu "basitleştirmek" için bazı komik başlangıçlara sahiptir (10'dan başlar; 10'dan herhangi bir tanesi iyi olur).


4

Kömür , 21 20 19 18 bayt

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

Çevrimiçi deneyin!

Bağlantı ayrıntılı sürümü . Temel olarak çizimin alt kısmını yaratıyorum ve sonra metni yukarı yansıtıyorum.


1
Soruyu gördüğümde cevaba bakmadan önce kendimi Kömür'de deneyebilirim. 21 baytlık bir yanıtla başladım ancak 20 bayta kadar golf yaptım ... ürkütücü!
Neil,

@Neil :-D Eh, şimdi 19 bayt!
Charlie,

Evet, o golfu kendim buldum. Ben de E…⁹⪫E…·¹χI﹪κχ× ι‖B↑(19 bayt da) araştırıyordum ama tercüman hoşuna benzemiyor (kendinde neyin yanlış olduğunu göremiyorum).
Neil,

Ah, Range iki argüman alıyor, aptal ben.
Neil,

1
Anlaşılan Mapkırmızı bir ringa balığıydı, bu yüzden şimdi 18 baytlık cevabımı gönderdim.
Neil,

4

CJam , 21 bayt

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

Çevrimiçi deneyin!

açıklama

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
Alternatif çözüm (ayrıca 21 byte):9{S*A,(+\*}%_W%);\+N*
Esolanging Fruit,

4

Toplu iş, 163 bayt

@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%%%

Not: İlk satır 9 boşlukta bitiyor. Açıklama: Yaratıcı satır numaralandırmasını kullanır! İlk döngü 9 kez çalıştırılmalı ve her seferinde bir boşluk silmeli, ikinci döngü 8 kez çalışmalı ve her seferinde bir boşluk eklemelidir. Birincisi 7 kez çalıştırılarak ve 8. kez düşerek elde edilirken, ikincisi iki boşluk ekleyerek ve bir tanesini tekrar silmek için düşerek elde edilir.


4

SOGL V0.12 , 14 bayt

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

Burada dene!

Açıklama:

ā               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 bayt

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

Çevrimiçi deneyin!

Bir aralık oluşturur ve 8,7,6...2,1,0,1,2...8daha sonra her bir sayı boyunca döngüler oluşturur. Döngü içinde biz, bir dizi yapı 1..9ile birleştirilmiş 0sonra -joinboşluk uygun bir sayı ile birlikte aralığında sayı. Her dize boru hattında bırakılır ve program tamamlanırken çıktı örtük olur.


1
Güzel cevap! Powershell aniden daha fazla golfyemi hissediyor :)
Bay
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.