時計の文字盤を表示する


39

次のように、時計の文字盤に12個の数字を表示します。

           12            
     11           1      

 10                   2  


9                       3


  8                   4  

      7           5      
            6            

グリッドを見やすくするために、ドットのあるものを次に示します。

...........12............
.....11...........1......
.........................
.10...................2..
.........................
.........................
9.......................3
.........................
.........................
..8...................4..
.........................
......7...........5......
............6............

グリッドがより正方形に見えるように、2倍に幅が引き伸ばされていることに注意してください。

また、2桁の数字は1桁の数字に合わせて配置されていることに注意してください。9桁が左に揃うはずです。

結果を複数行の文字列(行のリストではなく)として返すか出力します。末尾のスペースはオプションです。最後の改行もオプションです。

回答:


25

、40バイト

F¹²«M⁻↔⁻¹⁴⊗÷×⁴鳦⁸⁻⁴↔⁻⁷÷×⁴﹪⁺³ι¹²¦³P←⮌I⊕ι

オンラインでお試しください!リンクは、コードの詳細バージョンです。説明:各桁間のオフセットを数学的に計算します。木炭のインデックスは0であるため(つまり、出力)、水平オフセットと垂直オフセットの式は次のとおりです。112

δx=|1424i3|8δy=4|74i3|

ここで、です。i=i+3(mod12)


22

JavaScript(Node.js)、91バイト

あまり賢いアプローチではありませんが、現時点ではもっと短いものを見つけることができませんでした。

_=>`K12
E11K1

A10S2


9W3


B8S4

F7K5
L6`.replace(/[A-Z]/g,c=>''.padEnd(Buffer(c)[0]&31))

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


4
私は、の代替としてバッファー()の使用を愛するcharCodeAt()
Downgoat

1
@Downgoatこれは、Node固有の機能について、Node.jsでゴルフをするためヒントの質問があるべきかどうか疑問に思います。しかし、それが価値があるかどうかはわかりません。
アーナウルド

すべてのノード固有の機能を含む個別の回答を追加するか、少なくともすべての異なる回答をリンクするリストを追加しますか?

15

05AB1E39 33 31バイト

6バイトを節約してくれたMagic Octopus Urnに感謝します!

コード

6xsG12N-N•°£•NèØú«тR∞Nè¶×]\6».c

いくつかの33バイトの代替:

711ćŸā•Σ°w•₂вú‚øJƵt3в¶×‚ø»6xŠ».c¦
6xsŸ5L•Σ°w•₂вúõ¸ì‚ζJï2Ý«ƶ×)ø».c
6xsG¶12N-N•Θ{©•₂вNèú«ƵB∞Nè¶×]6J.c
6xsG12N-N•Θ{©•₂вNèú«тR∞Nè¶×]6s».c

05AB1E encodingを使用しますオンラインでお試しください!


いい答えだ!ÿwith の使用が.V非常に独創的です!そして、あなたが12¤両方122スタックを得るためにどのように使用したか面白い。おそらくを使用しただけかもしれませんが12Y、スタックに12と2があるため、どのように関係ないのでしょう。05AB1Eでこのチャレンジを試してみたら、バイトカウントを大幅に増やして終了していたはずです。;)
ケビンクルーイッセン

@KevinCruijssenそうそう、私は忘れていたY。それはもっと簡単な選択肢だったでしょう。
アドナン

6バイト未満で6を修正するかどうかはわかりませんが6xsŸ5L•δ;Ì’•2ôúð.ø‚ζJ012∞S¶×‚ζJ.c、ここで使用するものなら何でも歓迎します。
魔法のタコ

1
@MagicOctopusUrn zipを使った素敵なトリック、私はそれを考えていませんでした。
アドナン

1
@adnanの小道具6xŠ»も、私はそれを考えたことがなかったでしょう。
魔法のタコ

10

6502マシンコード(C64)、82 76 73バイト

00 C0 A2 0E BD 38 C0 29 03 A8 A9 0D 20 25 C0 BD 38 C0 4A 4A A8 A9 20 20 25 C0
BD 29 C0 20 D2 FF CA 10 E1 60 20 D2 FF 88 10 FA 60 36 35 37 34 38 33 39 32 30
31 31 31 31 32 31 31 2C 1A 4C 0B 5C 03 4C 00 06 2C 00 15 00 2C
  • -6バイト、巧妙なアイデアのArnauldに感謝:)
  • 先頭の1数字を特別に扱わないというアーナルドの考えのあと、さらに-3バイト

ここでの考え方は、すべての数字の桁を必要な順序でのみ保存することです。必要な追加情報は、先頭に追加する改行の数と前のスペースの数です。

改行の最大数は3なので、これには2 23ビットが必要です。スペースの最大数はなので、5ビットで十分です。したがって、印刷する数字ごとに、単一の「制御バイト」でこの情報を絞ることができます。

したがって、このソリューションのデータは、正確に30バイト(15桁の1桁と15の関連する「制御バイト」)を取ります。

オンラインデモ

使用法:SYS49152開始します。

コメント付きの分解

         00 C0                          ; load address
.C:c000  A2 0E       LDX #$0E           ; table index, start from back (14)
.C:c002   .mainloop:
.C:c002  BD 38 C0    LDA .control,X     ; load control byte
.C:c005  29 03       AND #$03           ; lowest 3 bits are number of newlines
.C:c007  A8          TAY                ; to Y register for counting
.C:c008  A9 0D       LDA #$0D           ; load newline character
.C:c00a  20 25 C0    JSR .output        ; repeated output subroutine
.C:c00d  BD 38 C0    LDA .control,X     ; load control byte
.C:c010  4A          LSR A              ; and shift by two positions for ...
.C:c011  4A          LSR A              ; ... number of spaces
.C:c012  A8          TAY                ; to Y register for counting
.C:c013  A9 20       LDA #$20           ; load space character
.C:c015  20 25 C0    JSR .output        ; repeated output subroutine
.C:c018  BD 29 C0    LDA .digits,X      ; load current digit
.C:c01b  20 D2 FF    JSR $FFD2          ; output
.C:c01e  CA          DEX                ; decrement table index
.C:c01f  10 E1       BPL .mainloop      ; still positive -> repeat
.C:c021  60          RTS                ; and done.
.C:c022   .outputloop:
.C:c022  20 D2 FF    JSR $FFD2          ; output a character
.C:c025   .output:
.C:c025  88          DEY                ; decrement counting register
.C:c026  10 FA       BPL .outputloop    ; still positive -> branch to output
.C:c028  60          RTS                ; leave subroutine
.C:c029   .digits:
.C:c029  36 35 37 34 .BYTE "6574"
.C:c02d  38 33 39 32 .BYTE "8392"
.C:c031  30 31 31 31 .BYTE "0111"
.C:c035  31 32 31    .BYTE "121"
.C:c038   .control:
.C:c038  31 2C 1A 4C .BYTE $31,$2C,$1A,$4C
.C:c03c  0B 5C 03 4C .BYTE $0B,$5C,$03,$4C
.C:c040  00 06 2C 00 .BYTE $00,$06,$2C,$00
.C:c044  15 00 2C    .BYTE $15,$00,$2C

2
JSR $FFD2 / DEY / BNE loop / LDA .control,X / RTS改行とスペースの両方を呼び出すサブルーチンを使用して、2バイト節約できますか?長さが+10バイトで、メインコードで-12バイト節約できると思います。
アーナウルド

1
実際、サブルーチンが実行中JSR $FFD2 / DEY / BPL loop / LDA .control,X / RTSで、エントリポイントがである場合、より多くのバイトを節約できると思いますDEY。この方法で0は、メインコードでテストする必要はありません。
アーナウルド

良いアイデアをありがとう、後で編集します。ただし、後者は機能しません。ループ全体をスキップするケースが必要です。
フェリックスパルメン

1
Y = 0の場合、DEY / BPL / RTS何も処理せずにすぐに終了しますJSR $FFD2。(そのスキームでは、サブルーチンのエントリポイントはDEY。でなければならないことに注意してください。)
Arnauld

1
@Arnauldはかなりの実験の後、すべての数字を保存するという提案を使用しながらサブルーチンを維持するのが最も短いと思います:)
Felix Palmen


6

R75 68バイト

write("[<-"(rep("",312),utf8ToInt('*`®÷ĥĹĚä—M'),1:12),1,25)

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

桁位置を圧縮しました。これは、三角関数の答えを考え出すのに多くの時間を費やしてから行いました(編集の履歴を参照)。

この他のRの回答にインスパイアされたJ.Doeを購入-それに賛成票を投じてください!

J.Doeのおかげで7バイト節約されました。


68バイト -算術演算を避けるためにハッシュを変更しwrite、デフォルトの区切り文字を使用するように呼び出しを変更しました。
J.Doe

1
@ J.Doeこの方法のほうが理にかなっています。もちろん、自分のゴルフを記録していなかったので、そもそもどうして複雑なハッシュをしたのかわからない
...-JayCe

5

HTML + JavaScript(キャンバス)、13 + 161 = 174バイト

任意のキャンバスの位置決めは6バイトを使用します。

with(C.getContext`2d`)with(Math)for(font='9px monospace',textAlign='end',f=x=>round(sin(x*PI/6)*6)*measureText(0).width*2,x=13;--x;)fillText(x,f(x)+80,f(9-x)+80)
<canvas id=C>

比較用のグリッドを使用:

with(C.getContext`2d`)with(Math){
    for(font='9px monospace',textAlign='end',f=x=>round(sin(x*PI/6)*6)*measureText(0).width*2,x=13;--x;)fillText(x,f(x)+80,f(9-x)+80)
    for(globalAlpha=0.2,y=-6;y<=6;y++)fillText('.'.repeat(25),6*measureText('.').width*2+80,y*measureText(0).width*2+80)
}
<canvas id=C>


位置決め式の説明

JavaScriptとSVGの答えをご覧ください。


8
これはASCIIアートであるため、チャレンジで指定されたバイトストリームを正確に生成し、出力のように見える画像をレンダリングすることになっているため、これは重要ではないと思います。
ダウンゴート

5

ジャワ8 11、141の 138バイト

v->{for(var x:"92BCN5BB92BNN1BA991CNNNJ995DNNN2I991ENN6H92FN93G".getBytes())System.out.print(x<59?" ".repeat(x-48):(char)(x>76?10:x-17));}

オンラインで試してください(注:Java 11はまだTIO上にないため、同じバイトカウントの場合と同様にString.repeat(int)エミュレートさrepeat(String,int)れます)。

説明は以下と似ていますが、" ".repeat(x-48)でフォーマットする代わりにスペースに使用し"%"+(x-48)+"s"ます。


Java 8、141バイト

v->{for(var x:"92BCN5BB92BNN1BA991CNNNJ995DNNN2I991ENN6H92FN93G".getBytes())System.out.printf("%"+(x>58?"c":x-48+"s"),x>76?10:x>58?x-17:"");}

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

説明:

v->{                        // Method with empty unused parameter and no return-type
  for(var x:"92BCN5BB92BNN1BA991CNNNJ995DNNN2I991ENN6H92FN93G".getBytes())
                            //  Loop over the bytes of the above String:
    System.out.printf("%"+  //   Print with format:
     (x>58?                 //    If the character is a letter / not a digit:
       "c"                  //     Use "%c" as format
      :                     //    Else:
       x-48+"s"),           //     Use "%#s" as format, where '#' is the value of the digit
     x>76?                  //    If the byte is 'N':
      10                    //     Use 10 as value (newline)
     :x>58?                 //    Else-if the byte is not a digit:
      x-17                  //     Use 48-58 as value (the 0-9 numbers of the clock)
     :                      //    Else:
      "");}                 //     Use nothing, because the "%#s" already takes care of the spaces

詳細な説明92BCN5BB92BNN1BA991CNNNJ995DNNN2I991ENN6H92FN93G

  • すべての数字がその量のスペースに置き換えられます。(したがって、11スペースの場合は92。)
  • すべての「N」は改行です
  • すべての['A'、 'J']は時計の数字([0,9])です

5

R、168の 159 125バイト

テキストマトリックスの所定のポイントに数字を書き込むという単純なソリューション。ポイントは、次を介してデコードされたUTF-8文字として保存されます。utf8ToInt

"!"=utf8ToInt
write("[<-"(matrix(" ",25,13),cbind(!"LMFGSBCWAYCWGSM",!"AABBBDDDGGJJLLM")-64,-64+!"ABAAAA@BICHDGEF"),1,25,,"")

JayCeの提案を使用して9バイトを削除しwrite、マトリックスを定義して使用しないようにしました。

JayCeのストレージの提案でさらに34バイトを削除しました。


こんにちは、PPCGへようこそ!ドットはパターンを視覚化するのに役立つはずですが、出力の一部ではないはずです。
ジョナサンフレッチ

PPCGへようこそ!あなたは定義していないいくつかのバイトをasveできるmし、使用してwriteTIOを。PS:回答にTIOリンクを含める義務はありませんが、回答を適切に書式設定します。TIOページの上部にあるリンクアイコンを参照してください。
JayCe

ポイントを文字列に保存し、!演算子をオーバーロードして125文字を取得できます。本当にいい解決策です!
-JayCe

5

Haskell、88 87バイト

f=<<"k12{e11k1{{a10s2{{{9w3{{{b8s4{{f7k5{l6"
f c|c>'z'="\n"|c>'9'=' '<$['a'..c]|1<2=[c]

Haskell のencode-spaces-as-lettersメソッド(@Arnauldの回答で最初に見られました)。{それを使用して拡張すること\nは、\n直接使用するよりも1バイト短くなります。

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



5

brainfuck240 235バイト

++++++++++[>++>+>+++>+++++>++>++[<]>-]>>>++...........>-.+.<<.>.....>-..<...........>.<<..>.>.-.>-[<<.>>-]<++.<<...>>+++++++.>>+++[<<<.>>>-]<<------.<<...>..>+++++.<<<-[>>.<<-]>>>----.<<..>......>+++.<...........>--.<<.>............>+.

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

コメント付きコード

++++++++++                              Put 10 in cell 0
[>++>+>+++>+++++>++>++[<]>-]            Loop 10 times incrementing to leave 0 20 10 30 50 20 20 in memory 
>>>++                                   30 plus 2 = 32 (ascii space)
...........>-.+.                        print 11spaces followed by 12 (ascii 49 50)
<<.>.....>-..<...........>.             print 1newline 5spaces 11 11spaces 1 
<<..>.>.-.>-[<<.>>-]<++.                print 2newlines 1space 10 19spaces 2
<<...>>+++++++.>>+++[<<<.>>>-]<<------. print 3newlines         9 23spaces 3
<<...>..>+++++.<<<-[>>.<<-]>>>----.     print 3newlines 2spaces 8 19spaces 4
<<..>......>+++.<...........>--.        print 2newlines 6spaces 7 11spaces 5
<<.>............>+.                     print 1newline  12spaces 6

テキストが十分に反復的で、brainfuckプログラムが出力の長さの1.6倍の2倍未満であるというまれな例です!

Jo Kingからの提案により2バイト保存:>>>>>>-->[<]>-

3番目の20桁のダウンカウンターをASCIIコードの右端10 30 50からすぐ左に移動すると、3バイト節約されます。との<<>>間のギャップを埋めるときに保存しますが、行に1バイトを追加します。84>>>++

元のバージョン

++++++++++                              Put 10 in cell 0
[>+>+++>+++++>++>++>++<<<<<<-]          Loop 10 times incrementing to leave 0 10 30 50 20 20 20 in memory 
>>++                                    30 plus 2 = 32 (ascii space)
...........>-.+.                        print 11spaces followed by 12 (ascii 49 50)
<<.>.....>-..<...........>.             print 1newline 5spaces 11 11spaces 1 
<<..>.>.-.>-[<<.>>-]<++.                print 2newlines 1space 10 19spaces 2
<<...>>+++++++.>>+++[<<<.>>>-]<<------. print 3newlines         9 23spaces 3
<<...>..>+++++.>>>-[<<<<.>>>>-]<<<----. print 3newlines 2spaces 8 19spaces 4
<<..>......>+++.<...........>--.        print 2newlines 6spaces 7 11spaces 5
<<.>............>+.                     print 1newline  12spaces 6


4

ゼリー、32 バイト

⁶ẋ“¿×¿ Œ4ç4Œ!¿Ø‘ż“øn0œ’Œ?D¤Fs25Y

結果を出力する完全なプログラム。

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

どうやって?

(私はまだ“¿×¿ Œ4ç4Œ!¿Ø‘この部分について私に長いと思われるものよりも短いものを考えていません/見つけませんでした-バウンス/ベース解凍/増分、何も保存しないようです!)

⁶ẋ“¿×¿ Œ4ç4Œ!¿Ø‘ż“øn0œ’Œ?D¤Fs25Y - Main Link: no arguments
⁶                                - space character
  “¿×¿ Œ4ç4Œ!¿Ø‘                 - code-page indices list = [11,17,11,32,19,52,23,52,19,33,11,18]
 ẋ                               - repeat (vectorises) -> [' '*11, ' '*17, ...]
                          ¤      - nilad followed by link(s) as a nilad:
                 “øn0œ’          -   base 250 number = 475699781
                       Œ?        -   first natural number permutation which would be at
                                 -   index 475699781 if all permutations of those same
                                 -   natural numbers were sorted lexicographically
                                 -   = [12,11,1,10,2,9,3,8,4,7,5,6]
                         D       -   to decimal lists = [[1,2],[1,1],[1],[1,0],[2],[9],[3],[8],[4],[7],[5],[6]]
                ż                - zip together = [[' '*11, [1,2]], [' '*17, [1,1]], ...]
                           F     - flatten = [' ',' ',...,1,2,' ',' ',...,1,1,...]
                            s25  - split into chunks of 25 (trailing chunk is shorter)
                               Y - join with new line characters
                                 - implicit print

笑これが素朴なアプローチであることに実際驚いています。
エリックアウトゴルファー

4

C(GCC) 145の 137 125バイト

ハードコーディングされているのはタブ位置のみです。すべての行間隔とクロック値はループで生成されます。

提案をしてくれたceilingcatに感謝します。

i,j,k;f(char*t){for(i=7;i--;t=memset(t+sprintf(t,"%*d%*d"+3*!j,"NHDA"[j]-65,6+i,"AMUY"[j]-65,6-i),10,k=j+i/4)+k)j=i>3?6-i:i;}

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


提案する"\r\7\3"[j]代わりに"NHDA"[j]-65
ceilingcat

3

PHP、97バイト

<?=gzinflate(base64_decode(U1CAA0MjLghtqIAkyMWlYGiggAmMuLi4LBWwA2OgnIKCBRYZEy6IHQrmSIKmXMhKzAA));

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

これはハードコードされた圧縮文字列です。これより短い解決策が見つかりませんでした!


ソースファイルにバイナリ圧縮文字列を入れて、base64_decodeをスキップできますか?私はこれを試してみましたが、「gzinflate():data error」が発生しますが、ソースファイルがテキストエディタではなく16進エディタで記述されている場合は可能性があります。
bdsl

@bdslは実際に前に行ったことがあり、HEXエディターは必要ありません。PHP自体を使用できますがfile_put_contents($path, '<?=gzinflate("'.gzdeflate($clockString,9).'");');、バイナリデータを含むコードを投稿する方法がわかりません。そのようなファイルは70バイトです。
ナイト

3

パイク、37バイト

3B 32 35 75 07 0d 13 0c 22 14 35 18 44 74 5F 74 2B 46 6F 68 32 C4 52 7D 74 2A 31 32 25 31 32 7C 60 52 2D 29 73

ここで試してみてください!(生バイト)

;25Dt_t+Foh2.DR}t*12%12|`R-)s

ここで試してみてください!(人間が読める)

                              - o = 0
;25                           - set line width to 25 characters
                              -      `[13, 19, 12, 34, 20, 53, 24]`
                              -       (In hex version, encoded in base 256, regular version in input field)
    t_t                       -     reversed(^[1:])[1:]
   D   +                      -    ^^ + ^
        Foh2.DR}t*12%12|`R-)  -   for i in ^:
         o                    -            o++
          h                   -           ^+1
           2.DR               -          divmod(^, 2)
               }t             -         (remainder*2)-1
                 *            -        quotient * ^
                  12%         -       ^ % 12
                     12|      -      ^ or 12 (12 if 0 else ^)
                        `     -     str(^)
                         R-   -    ^.rpad(i) (prepend spaces such that length i)
                            s -  sum(^)
                              - output ^ (with newlines added)

3

brainfuck315 313バイト

ovsのおかげで2バイト節約できました!

++++[>++++<-]>[>+++>+++>+++>+++>>++>+++>+++>+++<<<<<<<<<-]>+++++>++++>+++>++>++++++++++>>+++++++>+><<<...........>>.<<<<.>.>.....>>..<<...........>>.<<<..>.>>.>.<<<...................<<.>...>>++.<.......................<<<.>>...>..>-.<...................<<<<.>>>..>......>-.<...........<<<<<.>>>>.>............>-.

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

すべて1つのコードブロックで:

++++[>++++<-]>[>+++>+++>+++>+++>>++>+++>+++>+
++<<<<<<<<<-]>+++++>++++>+++>++>++++++++++>>+
++++++>+><<<...........>>.<<<<.>.>.....>>..<<
...........>>.<<<..>.>>.>.<<<................
...<<.>...>>++.<.......................<<<.>>
...>..>-.<...................<<<<.>>>..>.....
.>-.<...........<<<<<.>>>>.>............>-.

++++[>++++<-]>最初は16に使用できます。
ovs

@ovsああ、もちろん、ありがとう!!
コナーオブライエン

笑、あなたは><あなたのコードにあります
ジョーキング

3

Powershell、94 88 82バイト

直接Powershellフォーマット演算子{i,w}は、indexを持つパラメーターのプレースホルダーを意味し、プレースホルダーのi幅はw右揃えです。

"{11,13}
{10,7}{0,12}

 10{1,20}


9{2,24}


  8{3,20}

{6,7}{4,12}
{5,13}"-f1..12

Powershell、88バイト

Port of Arnauldの Javascriptアンサー

@AdmBorkBorkのおかげで-6バイト

[RegEx]::Replace("K12
E11K1

A10S2


9W3


B8S4

F7K5
L6",'[A-Z]',{' '*("$args"[0]-64)})

グリッドを見やすくするには、'.'代わりにを使用します' '


1
.PadLeft88バイトの代わりに文字列の乗算をしないのはなぜですか?オンラインで試してみてください!
AdmBorkBork

これはの賢い使い方です-fオンラインで試すためのリンクを含めてませんか他の人があなたのコードがどのように機能するかを見ることができますか?
AdmBorkBork

エラーThis site can’t be reachedのみがあります。ごめんなさい。
奇抜な

ああ、それは残念だ。それは良いリソースです。:-(
AdmBorkBork

私は同意するよ。ありがとう。
mazzy

3

C(GCC) 125の 109 105バイト

x,*d=L"<;1:2938475640P`P05";main(i){for(;i=d[12];printf("%*d",i/4,*d++-48))for(x=i&3;x--;)puts("");}
  • Jonathan Frechに感謝します。
  • シフトのために分割を置き換え、多くのシステム(TIOをホストしているシステムなど)でsizeof(wchar_t) == sizeof(int)Windowsで動作しないという事実を悪用して、-4バイト:) ErikFのアイデアに感謝します。

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

これは、6502ソリューションからCへの私の一般的なアイデアの移植版です。少し変更されています。先頭1にフラグを付ける代わりに、48を引くことで文字が10進数として出力されるため、10-12はについてエンコードさ:<ます。



@JonathanFrech素敵なループの再配置、私はそれをどのように見逃したのだろうか:oしかし、gccがソースで印刷できない文字を受け入れるとは本当に思っていなかった:)
Felix Palmen

文字がUTF-8で表現できる限り、コンパイラーによって技術的に許容されます。それが良いことかどうかは、むしろあなたが何をしているのか次第です:-)
ErikF

Unicodeといえば、ワイド文字を使用してさらに3バイト節約できます。オンラインで試してみてください!
ErikF

1
だからこそ、私はコードゴルフが好きです。私はUBを乱用し、時間の経過とともに拾い上げるすべての「してはいけないこと」を使います。
ErikF

2

アタッシュ、69バイト

{ReplaceF["l12
f11l1

b10t2


9x3


c8t4

g7l5
m6",/"\\l",sp&`*@STN]}

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

これは、スペースの各実行を次のようにエンコードしますNTS[count of spaces]NTS数値を文字列として表現できるようにする「数値から短い」組み込み関数です。例えば、NTS[95] = $R1そしてNTS[170297] = $XQOSTNこの組み込みの逆です。

この答えは、入力内のReplaceFすべての文字(/\l/)を関数の結果に置き換え()sp&`*@STN、最初に文字をデコードしてからsp(スペース)を何度も繰り返します。


2

Swift178 165バイト

var b="";for c in"L12nF11L1nnB10T2nnn9X3nnnC8T4nnG7L5nM6"{let i=c.unicodeScalars.first!.value;if c=="n"{b+="\n"}else if i>64{for _ in 0..<(i-65){b+=" "}}else{b+="(c)"}};print(b)

Downgoatの投稿に基づいて、これを165バイトに減らしました。

print("L12nF11L1nnB10T2nnn9X3nnnC8T4nnG7L5nM6".unicodeScalars.map{let x=Int($0.value);return x==110 ?"\n":(x>64 ?String(repeating:" ",count:x-65):"($0)")}.joined())

展開し$0て、名前付き変数に変換します。

print("L12nF11L1nnB10T2nnn9X3nnnC8T4nnG7L5nM6".unicodeScalars.map { c in let x = Int(c.value) return x == 110 ? "\n" : (x>64 ? String(repeating:" ", count: x-65) : "(c)") }.joined())

入力文字列は、次のようにエンコードされます。大文字(A-Z)は、65でオフセットされたスペースのブロックを表します。したがってA、スペース0、1スペース、B最初のL11スペースなどを意味しますn。他のすべての文字はそのまま印刷されます。

ここでオンライン実行します(ありがとう、mbomb007)


PPCGへようこそ!私たちの多くは、オンラインインタープリターにTry It Online(TIO)を使用して、プログラムへのハイパーリンクを回答に含めています。答えは次のとおり
##

これは、172バイトの答えのゴルフです。代わりに次の関数を使用します:{"L12NF11L1NNB10T2NNN9X3NNNC8T4NNG7L5NM6".unicodeScalars.map({(c)->String in let x=c.value;return x==78 ? "\n" : x>64 ?String(repeating:" ",count:x-65) : "\(c)"}).joined()}(swift 3(-swift-version 3replで)swift 4が減算を落としたように見えるため)
-Downgoat

@Downgoat私はそれをさらに3バイト削減し、Swift 4との互換性を持たせました。更新された投稿を参照してください。
エゼキエルエリン



1

JavaScript、SVG、188バイト

120%の任意の行の高さは4バイトを使用します。

with(Math)for(s='<pre><svg viewBox=-8-8+16+16 style=font-size:1;text-anchor:end>',f=x=>round(sin(x*PI/6)*6),x=13;--x;)s+=`<text x=${f(x)*2}ch y=${f(9-x)*1.2}>${x}</text>`
document.write(s)

比較用のグリッドを使用:

with(Math)for(s='<pre><svg viewBox=-8-8+16+16 style=font-size:1;text-anchor:end>',f=x=>round(sin(x*PI/6)*6),x=13;--x;)s+=`<text x=${f(x)*2}ch y=${f(9-x)*1.2}>${x}</text>`
for(y=-6;y<=6;y++)s+=`<text x=12ch y=${y*1.2} style=fill:#0002>${'.'.repeat(25)}</text>`
document.write(s)


位置決め式の説明

させてくださいf(x) = round(sin(x * π/6) * 6)

原点が時計の中心であると仮定すると、任意の時計番号の右端の桁のグリッド座標xは[ f(x) * 2f(9 - x)]です。


1

バッシュ、225バイト

s=(12 0 6 11 0 0 2 19 0 0 0 0 1 23 0 0 0 0 3 19 0 0 7 11 13 0)
n=(12 11 1 10 2 9 3 8 4 7 5 6) j=0;for i in {0..25};{
[ ${s[i]} = 0 ]||{ printf %${s[i]}s " ";echo -n ${n[j]}
j=$((j+1));};[ $((i%2)) -gt 0 ]&&echo;}|sed 's/ //'

迷惑なことに、これはループ内の各行を印刷するという単純なソリューション(タブストップを使用する場合は132文字)よりも長くなります。


でしょうtr -d \<space>(ここで、<space>空白文字がある)の代わりにsedの置換の仕事?
Kritixi Lithos

@Cowsquack悲しいことにそうではない、tr -d\ と同等になるだろうsed 's/ //g'
-crystalgecko


1

C(GCC) 135の 123 110バイト

これは単純なエンコーディングを使用します。この場合c'a'との間'z'c-'a'+1繰り返しスペースを'`'表し、改行を表し、他のすべての文字は変更されません。

f(i){char*s="k12`e11k1``a10s2```9w3```b8s4``f7k5`l6`";for(;i=*s;s++)i>96?printf("%*s",i-96,""):putchar(i%86);}

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


提案する*s=L"...";f(i){代わりにf(i){char*s="...";
ceilingcat

1

T-SQL、132バイト

PRINT SPACE(11)+'12
     11           1

 10'+SPACE(20)+'2


9'+SPACE(23)+'3


  8'+SPACE(19)+'4

      7           5
            6'

単純なソリューション(PRINT文字列全体の現状のまま)よりもわずか12バイト短くなります。

私が好きなバリエーションははるかに長い(235 226バイト)が、はるかにSQLのようなバリエーションが見つかりました:

SELECT CONCAT(SPACE(PARSENAME(value,4)),PARSENAME(value,3),
              SPACE(PARSENAME(value,2)),PARSENAME(value,1))
FROM STRING_SPLIT('11.1..2,5.11.11.1,. .. ,1.10.20.2,. .. ,. .. ,.9.23.3,
                   . .. ,. .. ,2.8.19.4,. .. ,6.7.11.5,12.6.. ',',')

STRING_SPLITカンマでPARSENAME行に分割し、各行をドットで分割します。1番目と3番目は印刷するスペースの数に使用され、2番目と4番目は表示するスペースに使用されます。

(これの改行は読みやすさのためだけです)


1

Perl 6、116バイト

my@a=["  "xx 13]xx 13;($_=pi/6*++$;@a[0+|6*(1.1-.cos);0+|6*(1.1+.sin)]=fmt ++$: "%2s")xx 12;@a>>.join>>.&{say S/.//}

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

(26バイトを節約するためのTa @JoKing)

Perl 6、142バイト

my@a=[[[32,32]xx 13]xx 13];for 1..12 {$_=$^b*pi/6;@a[round 6*(1-.cos);round 6*(1+.sin)]=[" $b".ords.tail(2)]}
{say S/^.//}(.[*;*].chrs) for @a

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

私は何かをしたかった...異なる。したがって、これはすべての数字の位置を文字のペアを介して計算し、初期スペースを取り除き、行を印刷します。

さまざまなパラメータ、たとえば17桁の45文字幅のバージョンに対して簡単に変更できます



@JoKing:Ta、これを貼り付けてWikiにしました。
フィルH
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.