ただのバグだった


76

中に盗聴出力に触発@CarcigenicateのClojureの答えのための印刷このダイヤモンド挑戦。

この正確なテキストを印刷します。

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

(中央から両方向に外側に向かって、各数字は前の行よりも1つ多くのスペースで区切られています。)

チャレンジルール:

  • 入力はありません(または空の未使用の入力)。
  • 末尾のスペースはオプションです。
  • 単一の末尾の改行はオプションです。
  • 先行スペースまたは改行は使用できません。
  • 文字列配列を返すことはできません。テキストを出力するか、正しい結果の単一の文字列を返す関数を用意する必要があります。

一般的なルール:

  • これはであるため、バイト単位の最短回答が優先されます。
    コードゴルフ言語では、コードゴルフ以外の言語で回答を投稿しないようにしてください。「任意の」プログラミング言語の可能な限り短い答えを考えてみてください。
  • 回答には標準の規則が適用されるため、STDIN / STDOUT、適切なパラメーターと戻り値型、完全なプログラムを持つ関数/メソッドを使用できます。あなたの電話。
  • デフォルトの抜け穴は禁止されています。
  • 可能であれば、コードのテストへのリンクを追加してください。
  • また、必要に応じて説明を追加してください。

文字列の配列(1行に1文字列)を出力できますか?
シャギー

@Shaggy申し訳ありませんが、この場合、改行を含む単一の文字列を返すか、結果を出力する必要があります。これをチャレンジのルールとして追加しました。
ケビンCruijssen

心配いりません、ケビン。腕を動かして、数バイト節約できるかどうかを確認していました。
シャギー

3
@Shaggy Hehe。これらの数バイトを保存する目的を持つ以外に、コードゴルフのチャレンジで質問する必要がある他の理由は何ですか?;)
ケビンクルーイッセン

8
ハ、それは素晴らしい。私はなぜその答えが突然そんなに注目されたのかと思っていました。ありがとう!
発癌性

回答:


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。
ケビンCruijssen

@KevinCruijssen通常、ベストプラクティスは受け入れられた回答を更新することですが、これにはいくつかの新しい機能が使用されるため、どちらに進むべきかという理由があると思います。
-dzaima

62

パイソン259の57 56 55バイト

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

オンラインでお試しください!

@Leaky Nunはこれをゴルフで大いに助けてくれました。@ Praindは1バイトを節約する方法を提案しました。


説明

  • i=8- 8という名前の変数に値を割り当てますi

  • exec"..."*17-そのコードブロック(...)を17回実行します。

  • print(...) -結果を出力します。

  • ' '*abs(i)-繰り返しスペースを含む文字列を作成します|i|

  • .join('1234567890')-と、上記作成された文字列をインターリーブ1234567890するように、|i|スペースが数字の間に挿入されています。

  • i-=1-減少しi、それを17回実行することで到達します-8。これにより、の助けを借りて反復パターンが作成されますabs()



23
これは、どのゴルフ言語の私見でも25バイトよりも印象的な農場です。
ジュロ

4
@Jyloありがとう。ただし、25バイトのソリューションは、著者による多くのゴルフの取り組みを示しているため、非常に印象的です。まず、ソースの各キャラクターが何を意味するのかを知ってから、彼らがどれほど美しくゴルフをしているのかを理解する必要があります。
Xcoder氏17

2
@JasonChenいいえ、Pythonはその構文を許可しません。これは、Cに似た言語に固有のものだからです。
ミスター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ありがとう!気に入ってくれてうれしいです:)
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...文字列をリストに、またはリストを文字列に結合することは理にかなっていますか?アドナンの改善を提案します。ああ、とあります.∊のためにû»
エリックアウトゴルファー

@EriktheOutgolfer:または、メソッドを切り替えて、必要な1バイトを保存することもできました:)
Emigna

すみません、すでに支持されています。
エリックアウトゴルファー

3
それは私が...再びupvotedていると思います意味
エリックOutgolfer

4
8F9ÝÀNð×ý}».∊私は宇宙船の浮浪人を作りました!そして、私は皆、12バイトの編集を提案することに興奮していました。
魔法のタコUr

20

C64 ASM、358バイト(basicstubでコンパイルされた102バイト)

これは明らかな制限のために私が得ることができる最も近いものです:

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へようこそ!きれいに投稿するにはコードタグを使用してください。あなたの投稿を編集しました。変更内容は、[編集]をクリックして変更するもの、見ることができます適用した後
ЕвгенийНовиков

確認したところ、最初と最後の行には82列が必要なため、80 colsのPETにも収まりません。
ショーンビバーズ

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.objectssysobjects、そしてと1object_id` id私は短いテーブルを探したsysスキーマ、何も短い持っていた列と短いなどsysobjects
Jaloopa

そして、内側をCAST(でPOWER(10))に変更することで、さらに数バイトを節約できますVARCHAR
-Jaloopa

実際には、使用してのものに置き換えることすべてを避けるLOG10REPLICATEDECLARE @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ゼロから9までigits

1⌽ 1ステップ右に回転します(最後にゼロを置きます)

 囲む(単位として扱うため)

(... )↑¨¨ のために、各これらの数字の、から多くの文字を取り、各文字の:

⍳17 1から17

¯9+ 9を引く

| 絶対値を見つける

1+ ひとつ追加

∊¨ 参加(平坦化)する

 深さの1つのレイヤーをランクのレベルに変更します(matrify)


3
このようなコンパクトな言語では、1バイトを追加するのに2バイトかかりますか?
アシェプラー

3
@ascheplerはい。APLはゴルフ言語ではなく、インクリメントプリミティブもありません。Jは行いますが、2バイトかかります。>:
アダム

4
APL is not a golfing language... ↑⊃¨,/¨(1+|¯9+⍳17)↑¨¨⊂1⌽⎕D...ಠ_ಠ-
アレクサンダー

1
@Alexanderこのことに再び注意を向けてくれてありがとう。3バイトのゴルフができました。
アダム


12

Java 11(JDK)、98バイト

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

オンラインでお試しください!

  • JDK 11に切り替えることで-14バイトになりました。JDK11にはネイティブがあり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$Nswhere で結合されNます。

%1$Ns基本的には、「最初の引数を取り、長さが少なくとも長さになるまで埋め込みます」という意味Nです。また、%1$0sはサポートされていないため、の特別なケース%1$sが作成され0ます。

最後に、単一の引数を使用して文字列をフォーマット出力します:""、フォーマッタは常に同じ空の文字列を再利用し、必要に応じてスペースを埋め込みます。

保存する

  • Kevin Cruijssenのおかげで1バイト

2
素敵な答え!ところで、私はチャレンジで未使用の空のパラメーターが許可されていることを明示的に言及したので、で置き換え()->o->バイトを保存できます。:)
ケビンクルイッセン

forループで作成ointて使用できますか?for(o=-9;++o<9;)

2
@Winterいいえ。チャレンジでは「未使用」と表示され、値が使用されない場合でもパラメーター変数が使用されるためです。
オリビエグレゴワール

@OlivierGrégoireこの投稿codegolf.meta.stackexchange.com/questions/12681 / ...にリンクしており、この投稿は空(intの場合は0)であることのみを示しています。

@Indeed Indeedですが、チャレンジ自体には「未使用」と書かれています。チャレンジの特定の決定はデフォルトを無効にします。
オリビエグレゴワール

11

Japt -R19 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 ê ·
-ETHproductions

8

JavaScript(ES2017)、83 73 72 68バイト

10バイトを節約してくれたShaggyに感謝します。1バイトを保存してくれたCraigに感謝します。ありがとう 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)))
トーマス・W

1
でいくつかのバイトを保存[..."1234567890"].join("".padEnd(i<0?-i:i))
シャギー

@Shaggyありがとう。10バイト節約できました。:)
Tushar

1
@ThomasW:最後ではなく、最初の要素[...Array(10).keys]を持ち0ます。
シャギー

1
あなたは、文字列の結果を格納するあなたの方法を使用してログインするのではなく、バイトを保存することができます:for(i=-8,s="";i<9;i++)s+=[..."1234567890"].join("".padEnd(i<0?-i:i))+`X`ここで、X実際の改行である
クレイグ・アイレ

7

Brachylog30 29 28バイト

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

オンラインでお試しください!

Leaky Nunのおかげで1バイト節約できました

説明

Ị↺                               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私はビッグに「印刷この正確なテキストを」捕まってしまったと私たちは末尾のラインを有することができることを読んでいない...
Fatalize


1
@LeakyNunなぜ自分の答えを投稿しなかったのですか?
17

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:弾むボールのおかげでバイトを節約しました。


サイトへようこそ!:)
DJMcMayhem

2
これはあまり正しくありません。中央の行にはスペースを入れないでください。
エソランジングフルーツ

@ Challenger5あなたは正しいです!バイトを追加しなければならなかったpaste0代わりに使用することでそれを修正しました:paste
Probel

1
使用して2つのバイトを保存elel(strsplit("1234567890",""))代わりにstrsplit("1234567890","")[[1]]
bouncyball

引数をpaste使用し、さらにそれを実行して70バイトにするためにステートメントの1つを取り除くことができますsepcat
ジュゼッペ



6

ジャワ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);}}}

更新:Leaky Nunのおかげで-28バイト!
更新2:再びLeaky Nunのおかげで-43バイト!

アンゴルフド:

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

オンラインで試す

編集:以前のコードが間違っていました!コードをゴルフ中にミスを犯した、それは今意図したとおりに動作するはずです!


4
PPCGへようこそ!Javaでゴルフのヒント<すべての言語>でゴルフのヒントをお読み面白いかもしれません。:)ゴルフでできることはpublic、を削除して、不要なスペースを取り除くことです。さらに改善すべき点がいくつかありますが、ヒントを読み、どこで改善できるかを確認することをお勧めします。再び歓迎し、あなたの滞在をお楽しみください!:)
ケビンクルイッセン

2
うーん、また、あなたは正しいコードを投稿しましたか?コードをコピーしてTryItOnlineに貼り付けると、正しい出力が得られません。
ケビンCruijssen

1
なんてこった、コードをゴルフしているときに何かおかしい!これを修正します!
アレックスフェレッティ



6

、21バイト

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

これは、STDOUTに出力される完全なプログラムです。 オンラインでお試しください! 末尾にスペースがたくさんあります。

説明

Huskには、2つの引数の範囲関数など、多くの重要な要素がまだ不足しているため、このソリューションの一部は少しハッキーです。

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ḣ9uṁsḣ10、1バイト少ない文字列「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から連続します)
  • @ZLKのTOP 17アイデア
  • PRINT(ルールに従う-文字列リストなし)
  • 文字列にキャリッジリターンを含めるという@JanDrozenの素晴らしいアイデア(私はそれを1バイトと数えました-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のREPLACEアイデアに感謝)


これはいい答えです!サイトへようこそ:)
DJMcMayhem

ありがとう。私達の何人かはここで私達自身の言語を発明したと思います:)
リバースエンジニア

1
この答えと他の答えを組み合わせるのが最適です。たとえばSELECT TOP 17REPLACE('1x2x3x4x5x6x7x8x9x0','x',SPACE(ABS(9-RANK()OVER(ORDER BY object_id))))FROM sys.objects(印刷する必要がないと仮定した場合)。
ZLK

Aha @ZLK-いくつかの素敵なトリック-TOP 17、RANK OVER、sys.objects-ありがとう!
リバースエンジニア

6

Clojure、126 99バイト

-27いくつかの愚かな間違いを修正しました。の外側の使用はa必要なかったので、私はa完全に取り除き、apply str一度だけ書くことができました。また、メイン関数に関数マクロを使用して、いくつかのバイトを節約することもできました。またMath/abs、再バインドの代わりにへの呼び出しをインライン化しましたn-spaces

基本的に@ Mr.XcoderのPythonアイデアのClojureポートです。振り返ってみると、元々はダイアモンドチャレンジに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

Mathematica、92バイト

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

オンラインで試す

ctrl-vを使用してコードをコピー/貼り付け、
shift + enterを押して実行します


TryItOnlineリンクを追加してもらえますか?
ケビンCruijssen

@KevinCruijssen Mathematicaは自由言語ではないため、Mathicsは機能していないようです
リーキー修道女

@LeakyNunああ、ありがとう。MartinEnderがTIOリンクを投稿することもありますが、実際はMathicsリンクでした。
ケビン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);}

あなたのコンパイラはおそらくこのコードについて多くの不満を言うでしょう。私は4種類の警告を7回投げました。後でコードを改善する可能性があります。

オンラインでお試しください!


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は2つの引数を取ります。
ニール

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回実行してスペースを削除する必要があり、2番目のループは毎回8回実行してスペースを追加する必要があります。前者は、7回実行して8回通過することによって達成され、後者は、2つのスペースを追加してから1つを削除することによって達成されます。




4

パワーシェル、30バイト

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

オンラインでお試しください!

範囲を構築し、8,7,6...2,1,0,1,2...8各数値をループします。ループ内では、の範囲構築1..9と連結し0、その後-join適切な数の空白と一緒範囲の数字。各文字列はパイプラインに残り、プログラムの完了時に出力は暗黙的に行われます。


1
素敵な答え!Powershellは突然よりゴルファーに感じました:)
Mr Xcoder
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.