Blok cyfr


18

Wydrukuj / wydrukuj ten blok tekstu:

1234567890
2468013579
3691470258
4815926037
5049382716
6172839405
7306295184
8520741963
9753108642
0987654321

Dopuszczalne formaty obejmują:

  • Końcowe znaki nowej linii / białe znaki
  • Lista ciągów
  • Lista list znaków
  • Lista list liczb całkowitych

Jednak lista liczb całkowitych jest niedopuszczalna, ponieważ ostatni wiersz nie jest liczbą całkowitą.

To jest . Najkrótsza odpowiedź w bajtach wygrywa. Obowiązują standardowe luki .

Odpowiedzi:






5

MATL , 12 11 bajtów

Zaoszczędzony bajt dzięki Luisowi. Ciągle zapominam, że &jest to skrót do powielania i transponowania.

10:&*11\10\

Wypróbuj online!

Za pomocą algorytmu @ Martin: x*y % 11 % 10

Wyjaśnienie:

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 

Ten sam bytecount:

10t:&*11\w\

Można zapisać bajt zastąpiono t!*przez&*
Luis Mendo

1
@LuisMendo podwójne wstawki wsteczne, jeśli masz odwrotny ukośnik na końcu fragmentu kodu w komentarzach.
Martin Ender

@MartinEnder Thanks! Nigdy nie pamiętam, jak to działa, więc wybrałem prosty sposób :-)
Luis Mendo

@LuisMendo tak, to trochę mylące z postami i komentarzami używającymi innej składni.
Martin Ender

Dzięki @LuisMendo! To nie jest w dokumentach, prawda?
Stewie Griffin



2

Siatkówka , 59 bajtów

Liczba bajtów zakłada kodowanie ISO 8859-1.


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

,(1*)
$.1

Wypróbuj online!

Wyjaśnienie

Kolejna implementacja ...% 11% 10 algorytmu. Zabawne jest to, że wykonywanie wyrażeń regularnych polega na tym, że możemy zająć się oboma obliczeniami modulo naraz.


10$*

Zainicjuj ciąg do dziesięciu 1sekund.

1
,1$`

Zastąp każdy z nich przecinkiem, jednym i przedrostkiem przed tym. Daje to ,1,11,...,1111111111, tj. Jednoargumentowy zasięg.

,1+
$_¶

Teraz zamień każdy z elementów zakresu na cały ciąg znaków, a następnie na linię. To daje nam siatkę 10x10 liczb jednostkowych wskazujących bieżącą kolumnę.

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

Dopasuj każdy 1i określ, który wiersz jest włączony, powtarzając grupę jeden razy. Zamień na 1tyle 1s. Mnoży to wartości w każdym wierszu przez indeks oparty na 1 wierszu.

1{10}1?

Teraz zróbmy mod 11, mod 10 w jednym kroku. Aby wykonać mod 11 , zwykle po prostu usuwamy wszystko 1{11}z łańcucha, który ma pozostać z resztą. A potem usuwamy 1{10}. Ale jeśli po prostu usuniemy dziesięć 1s plus inne, jeśli to możliwe, zachłanność silnika regex zrobi dla nas mod 11 tak długo, jak to możliwe, a jeśli nie, to spróbuje przynajmniej mod 10 .

,(1*)
$.1

Na koniec konwertujemy każdą liczbę na dziesiętną, zastępując ją długością.




2

JavaScript (ES6), 70 64 56 bajtów

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

Zaoszczędź 4 bajty dzięki Shaggy i 8 bajtów dzięki Arnauld.


1
66 bajtów: _=>[...a=Array(10)].map((_,x)=>[...a].map((_,y)=>(x+1)*++y%11%10)). Zapisujesz mi 4 bajty, ja oszczędzam 4 bajty :)
Shaggy

Wielkie dzięki. Naprawiłeś także błąd, więc ogoliłem kolejne 2 bajty twojego rozwiązania ;-)
Luke

1
Możesz zapisać 5 bajtów, używając trzeciego parametru wywołania zwrotnego w pierwszym map()i jeszcze 3 bajty, używając 1e9+''zamiast Array(10). To prowadzi do _=>[...1e9+''].map((_,x,a)=>a.map((_,y)=>-~x*++y%11%10)).
Arnauld

@Arnauld: Dzięki za 1e9podstęp. Nie znałem tego. Myślałem o użyciu trzeciego argumentu, ale z jakiegoś powodu go nie użyłem.
Luke

I niedawno przygotował listę podobnych sztuczek tutaj .
Arnauld

2

Japt , 16 12 11 bajtów

Okazuje się, że to była moja 200 (nieodwołana) odpowiedź tutaj :)

Wygląda na to, że to ta sama formuła, którą zauważył Martin .

Aõ
£®*X%B%A

Przetestuj ( -Rflaga tylko do celów wizualizacji)

  • 4 bajty zaoszczędzone dzięki Łukaszowi wskazującemu, że zwracanie tablicy tablic jest dozwolone.

Wyjaśnienie

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

Pobij mnie do tego ... Możesz upuścić dwie ostatnie postacie i zamiast tego użyć -Rflagi
Luke

1
Co więcej, upuść cztery ostatnie postacie. Wydaje się, że jest to dozwolone ...
Luke

Tak, wygląda na to, że masz rację, dziękuję, @Luke :)
Shaggy

1

Java 8, 84 bajtów

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

Używa tego samego algorytmu, co odpowiedź Mathematica @MartinEnder : 1-indeksowana x*y%11%10.

Wyjaśnienie:

Wypróbuj tutaj.

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

R , 19 bajtów

1:10%o%1:10%%11%%10

Wypróbuj online!

Najmniej wyglądający „R” fragment kodu R, jaki kiedykolwiek napisałem. Wykorzystuje ten sam algorytm, co odpowiedź Martina Endera (i prawie wszystkie pozostałe odpowiedzi). x %o% yjest taki sam jak outer(x, y).


1

Węgiel drzewny , 30 29 19 bajtów

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

Wypróbuj online!

Korzysta ze wzoru Martina .

  • 10 bajtów zaoszczędzonych dzięki Neilowi, kolejny raz udowadniając, że wciąż muszę się wiele nauczyć ...

Nie potrzebujesz końcowych znaków »s i chociaż możesz użyć ωzamiast tego ””, możesz zapisać całą wiązkę bajtów, używając ⸿tego, co wtedy się stanie Fχ«FχI﹪﹪×⁺¹ι⁺¹κ¹¹χ⸿. (Zanim się dowiem, ⸿zasugerowałbym, J⁰ιco pozwoliłoby zaoszczędzić wiele bajtów.)
Neil

@ Neil ⸿Jest operatorem odwrotnym, co robi na końcu kodu bez argumentów? Czy to jest udokumentowane?
Charlie

1
Nie, jest operatorem odwrotnym, ⸿jest move cursor to start of next lineznakiem (podobnie jak, ale może być w osobnym ciągu).
Neil


0

QBIC , 17 bajtów

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

To oczywiście wykorzystuje Metodę Martina. To tłumaczy na ten kod QBasic .

Wyjaśnienie

[|               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 bajtów

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

Ten sam algorytm jak większość innych odpowiedzi i zasadniczo port C # odpowiedzi Java @Kevins .



0

GolfScript , 37 24 bajtów

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

Wypróbuj online!

-13 dzięki sprytnej sztuczce, którą zasugerował Martin Ender .


jeśli zmienisz go w pełny program ( {-> ;, }-> `), możesz przynajmniej upuścić pierwszy [.
Martin Ender

Znacznie krócej jest jednak użyć prostej zagnieżdżonej pętli zamiast techniki zip:{){\)*11%10%}+10,/n}10,/
Martin Ender

@MartinEnder Umm ... wydajesz się nadużywać /. ;)
Erik the Outgolfer

@MartinEnder Och, widzę, co zrobiłeś ... użyłeś int blk +-> {int space contents-of-blk}.
Erik the Outgolfer

@MartinEnder ok Wdrożyłem twoją +sztuczkę ... chociaż nieco
zmieniłem




0

Pyke, 13 bajtów

TS F~u0+*i>i%

Wypróbuj tutaj!

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 bajtów

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

(Dość) prosta implementacja odpowiedzi 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!

Użycie wstawianych końców <ESC> i znaku kontrolnego dla polecenia ^ T pozwoliłoby na zapisanie innego trzy pięć bajtów, kosztem czytelności.

Użycie formuły mod-11 / mod-10 Martina faktycznie wydłuża go do 43 bajtów przy użyciu elementów sterujących dla ^ A i ^ T, głównie dlatego, że TECO nie ma operatora mod.

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

Mod 11 jest wykonywany w sposób ciągły, zwiększając liczbę w qn o -11, gdy tylko przekroczy 10. qn\r0a^TSekwencja wstawia liczbę do bufora edycyjnego jako cyfry dziesiętne, cofa się za ostatnią cyfrę, pobiera ją z bufora i wpisuje, zasadniczo robi mod-10.

Spodziewałem się, że będzie krótszy. No cóż.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.