Blok angka


18

Keluarkan / cetak blok teks ini:

1234567890
2468013579
3691470258
4815926037
5049382716
6172839405
7306295184
8520741963
9753108642
0987654321

Format yang dapat diterima meliputi:

  • Mengejar baris baru / spasi putih
  • Daftar string
  • Daftar daftar karakter
  • Daftar daftar bilangan bulat

Namun, daftar bilangan bulat tidak dapat diterima karena baris terakhir bukan bilangan bulat.

Ini adalah . Jawaban terpendek dalam byte menang. Celah standar berlaku.

Jawaban:


20

Mathematica, 33 byte

Mod[1##,11]~Mod~10&~Array~{10,10}

Cobalah online! (Menggunakan Matematika.)

Sel pada indeks berbasis 1 (x,y)memiliki nilai((x*y) % 11) % 10





5

MATL , 12 11 byte

Menyimpan satu byte berkat Luis. Saya selalu lupa bahwa &ini adalah jalan pintas untuk menduplikasi dan mentransposisi.

10:&*11\10\

Cobalah online!

Menggunakan algoritma @ Martin: x*y % 11 % 10

Penjelasan:

10            % Pust 10 to the stack. Stack: 1
  :           % 1-based range. Stack: [1 2 3 ... 10]
   &          % Duplicate range. Stack: [1 2 3 ... 10],[1 2 3 ... 10]
              % Transpose last range. Stack [1 2 3 ... 10],[1;2;3 ...10]
    *         % Multiply with broadcasting. Stack: [1 2 3 ...;2 4 6...] (10-by-10 array)
     11       % Push 11 to the stack. Stack [1 2 3 ...;2 4 6 ...], 11
       \      % Modulus. 
        10    % Push 10 to the stack.
          \   % Modulus
              % Implicit display 

Jumlah yang sama:

10t:&*11\w\

Anda dapat menyimpan byte pengganti t!*oleh&*
Luis Mendo

1
@LuisMendo double backticks jika Anda memiliki backslash di akhir cuplikan kode dalam komentar.
Martin Ender

@ MartinEnder Terima kasih! Saya tidak pernah ingat bagaimana itu bekerja, jadi saya pergi dengan cara mudah :-)
Luis Mendo

@LuisMendo ya agak membingungkan dengan posting dan komentar menggunakan sintaks yang berbeda.
Martin Ender

Terima kasih @LuisMendo! Itu tidak ada dalam dokumen, bukan?
Stewie Griffin



2

Retina , 59 byte

Hitungan byte mengasumsikan penyandian ISO 8859-1.


10$*
1
,1$`
,1+
$_¶
(?<=(¶?.+)+)1
$#1$*
1{10}1?

,(1*)
$.1

Cobalah online!

Penjelasan

Implementasi lain dari ...% 11% 10 algoritma. Bagian yang menyenangkan dari melakukannya dengan regex adalah bahwa kita dapat menangani kedua perhitungan modulo sekaligus.


10$*

Menginisialisasi string menjadi sepuluh 1s.

1
,1$`

Ganti masing-masing dengan koma, satu, dan awalan di depan yang itu. Ini memberi ,1,11,...,1111111111, yaitu kisaran unary.

,1+
$_¶

Sekarang ganti masing-masing elemen rentang dengan seluruh string diikuti oleh umpan baris. Ini memberi kami kotak 10x10 angka unary yang menunjukkan kolom saat ini.

(?<=(¶?.+)+)1
$#1$*

Cocokkan masing 1- masing dan tentukan baris mana yang aktif dengan mengulangi grup yang berkali-kali. Ganti 1dengan yang banyak 1s. Ini mengalikan nilai di setiap baris dengan indeks berbasis 1 baris.

1{10}1?

Sekarang mari kita lakukan mod 11, mod 10 dalam satu langkah. Untuk melakukan mod 11 , kami biasanya hanya menghapus semua 1{11}dari string yang tersisa dengan sisanya. Dan kemudian kami akan menghapus 1{10}setelah itu. Tetapi jika kita hanya menghapus sepuluh 1s ditambah yang lain jika mungkin, keserakahan mesin regex akan melakukannya mod 11 untuk kita selama mungkin, dan jika tidak, maka itu akan mencoba setidaknya mod 10 .

,(1*)
$.1

Akhirnya, kami hanya mengonversi setiap angka menjadi desimal dengan menggantinya dengan panjangnya.



2

Haskell, 43 byte

l=[1..10]
f=[[x*i`mod`11`mod`10|i<-l]|x<-l]

2

Javascript (ES6), 70 64 56 byte

_=>[...1e9+''].map((_,a,b)=>b.map((_,c)=>-~a*++c%1‌​1%10))

Disimpan 4 byte berkat Shaggy dan 8 byte terima kasih kepada Arnauld.


1
66 byte: _=>[...a=Array(10)].map((_,x)=>[...a].map((_,y)=>(x+1)*++y%11%10)). Anda menyelamatkan saya 4 byte, saya menyelamatkan Anda 4 byte :)
Shaggy

Terima kasih banyak. Anda juga memperbaiki bug, jadi saya mencukur 2 byte lagi dari solusi Anda ;-)
Luke

1
Anda dapat menyimpan 5 byte dengan menggunakan parameter ke-3 dari callback di yang pertama map()dan 3 byte lebih dengan menggunakan 1e9+''alih-alih Array(10). Itu mengarah ke _=>[...1e9+''].map((_,x,a)=>a.map((_,y)=>-~x*++y%11%10)).
Arnauld

@Arnauld: Terima kasih atas 1e9triknya. Saya tidak tahu itu. Saya memang berpikir untuk menggunakan argumen ketiga, tetapi untuk beberapa alasan saya tidak menggunakannya.
Luke

Saya baru-baru ini menyusun daftar trik serupa di sini .
Arnauld

2

Japt , 16 12 11 byte

Ternyata ini adalah 200 (tidak terhapus) jawaban saya di sini :)

Sepertinya ini adalah formula yang sama yang dilihat Martin .

Aõ
£®*X%B%A

Mengujinya ( -Rmenandai untuk tujuan visualisasi saja)

  • 4 byte disimpan berkat Luke menunjukkan bahwa mengembalikan array array diizinkan.

Penjelasan

Aõ    :Generate an array of integers from 1 to 10, inclusive.
£     :Map over each element in the array, returning...
®     :Another map of the same array, which...
*X    :Multiplies the current element of the inner function by the current element of the outer function...
%B    :Modulus 11...
%A    :Modulus 10.
      :Implicit output of resulting 2D array

Kalahkan saya untuk itu ... Anda dapat menjatuhkan dua karakter terakhir, dan alih-alih menggunakan -Rbendera
Luke

1
Bahkan lebih baik, jatuhkan empat karakter terakhir. Sepertinya itu diperbolehkan ...
Luke

Yup, sepertinya Anda benar, terima kasih, @ Lukas :)
Shaggy

1

Java 8, 84 byte

o->{String r="";for(int x=0,y;++x<11;r+="\n")for(y=0;++y<11;r+=x*y%11%10);return r;}

Menggunakan algoritma yang sama dengan jawaban @MartinEnder 's Mathematica : 1-diindeks x*y%11%10.

Penjelasan:

Coba di sini.

o->{                     // Unused Object parameter and String return-type
  String r="";           //  Result-String
  for(int x=0,y;++x<11;  //  Loop (1) from 1 to 11 (exclusive)
      r+="\n")           //    And append a new-line after every iteration
    for(y=0;++y<11;      //   Inner loop (2) from 1 to 11 (exclusive)
      r+=x*y%11%10       //    And append the result-String with `x*y%11%10`
    );                   //   End of inner loop (2)
                         //  End of loop (1) (implicit / single-line body)
  return r;              //  Return result-String
}                        // End of method




1

Arang , 30 29 19 byte

Fχ«FχI﹪﹪×⁺¹ι⁺¹κ¹¹χ⸿

Cobalah online!

Menggunakan formula Martin .

  • 10 byte disimpan berkat Neil, membuktikan sekali lagi bahwa saya masih banyak belajar ...

Anda tidak perlu mengikuti »dan sementara Anda dapat menggunakan ωbukannya ””Anda dapat menyimpan sejumlah byte dengan menggunakan ⸿karena hal ini kemudian menjadi Fχ«FχI﹪﹪×⁺¹ι⁺¹κ¹¹χ⸿. (Sebelum saya tahu tentang ⸿saya, saya akan menyarankan J⁰ιyang masih akan menyelamatkan sejumlah byte.)
Neil

@ Neil Ini ⸿adalah operator terbalik, apa fungsinya di akhir kode Anda tanpa argumen? Apakah ini didokumentasikan?
Charlie

1
Tidak, adalah operator Reverse, ⸿adalah move cursor to start of next linekarakter (suka tetapi bisa dalam string terpisah).
Neil


0

QBIC , 17 byte

[|?[|?a*b%11%z';

Ini, tentu saja, menggunakan Metode Martin. Ini diterjemahkan ke kode QBasic ini .

Penjelasan

[|               FOR A = 1 to 10 ([ starts a FOR loop, | delimits the list of arguments; 
                 a FOR loop with 0 args loops from 1 to 10 by default with increment 1.
  ?              PRINT a newline
   [|            Start a second FOR loop from 1-10, iterator b
     ?           PRINT
      a*b%11%z   the result of Martin's formula.
              '; and suppress newlines/tabs/spaces

0

C #, 81 byte

_=>{var r="";for(int x=0,y;++x<11;r+="\n")for(y=0;++y<11;r+=x*y%11%10);return r;}

Algoritma yang sama dengan sebagian besar jawaban lain dan pada dasarnya port C # dari @Kevins Java menjawab.



0

GolfScript , 37 24 byte

10,{){\)*11%10%}+10,%}%`

Cobalah online!

-13 Berkat trik pintar yang disarankan Martin Ender .


jika Anda mengubahnya menjadi program lengkap ( {-> ;, }-> `), Anda setidaknya dapat membatalkan yang pertama [.
Martin Ender

Ini jauh lebih pendek untuk menggunakan loop bersarang sederhana alih-alih teknik zip:{){\)*11%10%}+10,/n}10,/
Martin Ender

@ MartinEnder Umm ... Anda sepertinya terlalu sering menggunakan /. ;)
Erik the Outgolfer

@ MartinEnder Oh saya melihat apa yang Anda lakukan ... Anda menggunakan int blk +-> {int space contents-of-blk}.
Erik the Outgolfer

@ MartinEnder ok Saya sudah menerapkan +trik Anda ... walaupun saya sedikit mengubah kode Anda
Erik the Outgolfer




0

Pyke, 13 byte

TS F~u0+*i>i%

Coba di sini!

TS            -  [1, 2, 3, 4, 5, 6, 7, 8, 9]
   F~u0+*i>i% - for i in ^:
    ~u0+      -     "01234567890"
        *     -    ^ * i
         i>   -   ^[i:]
           i% -  ^[::i]



0

TECO, 45 byte

1un@i/
/10<@i/01234567890/jl10<qnc0a^t>jtl%n>

A (cukup) implementasi langsung dari jawaban Rod's Python.

1un           !initialize register n to 1!
@i/<nl>/      !insert a newline!
10<           !loop for 10 rows!
@i/01234567890/  !insert the mysterious string of digits!
j             !move point to start of buffer!
l             !move forward past the newline!
10<           !loop for 10 digits on a line!
qnc           !move point forward by n characters!
0a^t          !print the character at point!
>             !end inner loop!
j             !move point to start of buffer!
t             !print (empty) line!
l             !move to start of digit string!
%n            !increment register n (for next line)!
>             !end outer loop!

Menggunakan sisipan yang dimusnahkan <ESC> dan karakter kontrol untuk perintah ^ T akan menyimpan yang lain tiga lima byte, dengan mengorbankan keterbacaan.

Menggunakan formula mod-11 / mod-10 Martin sebenarnya membuatnya lebih lama pada 43 byte menggunakan kontrol untuk ^ A dan ^ T, terutama karena TECO tidak memiliki operator mod.

0ur10<%run10<qn-10"g-11%n'qn\r0a^Tqr%n>^a
^A>

Mod 11 dilakukan secara berkelanjutan dengan menambah angka dalam qn oleh -11 setiap kali melebihi 10. The qn\r0a^T Urutan memasukkan angka dalam buffer pengeditan sebagai digit desimal, membalik melewati digit terakhir, mengambilnya dari buffer dan mengetiknya, dasarnya melakukan mod-10.

Saya berharap ini lebih pendek. Baiklah.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.