Ziffernblock


18

Diesen Textblock ausgeben / drucken:

1234567890
2468013579
3691470258
4815926037
5049382716
6172839405
7306295184
8520741963
9753108642
0987654321

Akzeptable Formate sind:

  • Nachgestellte Zeilenumbrüche / Leerzeichen
  • Liste der Zeichenfolgen
  • Liste der Zeichenlisten
  • Liste von Listen mit ganzen Zahlen

Eine Liste mit ganzen Zahlen ist jedoch nicht zulässig, da die letzte Zeile keine ganze Zahl ist.

Das ist . Kürzeste Antwort in Bytes gewinnt. Es gelten Standardlücken .

Antworten:






5

MATL , 12 11 Bytes

Dank Luis ein Byte gespeichert. Ich vergesse immer wieder die &Abkürzung zum Duplizieren und Transponieren.

10:&*11\10\

Probieren Sie es online!

Verwendung von @ Martins Algorithmus: x*y % 11 % 10

Erläuterung:

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 

Gleiches bytecount:

10t:&*11\w\

Sie können ein Byte speichern, das t!*durch&*
Luis Mendo

1
@ LuisMendo doppelte Backticks, wenn Sie einen Backslash am Ende des Code-Snippets in Kommentaren haben.
Martin Ender

@ MartinEnder Danke! Ich kann mich nicht erinnern, wie das funktioniert, also habe ich mich für den einfachen Weg entschieden :-)
Luis Mendo

@ LuisMendo Ja, es ist ein bisschen verwirrend mit Beiträgen und Kommentaren, die unterschiedliche Syntax verwenden.
Martin Ender

Vielen Dank an LuisMendo! Das steht nicht in der Dokumentation, oder?
Stewie Griffin



2

Netzhaut , 59 Bytes

Die Anzahl der Bytes setzt die Kodierung nach ISO 8859-1 voraus.


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

,(1*)
$.1

Probieren Sie es online!

Erläuterung

Eine weitere Implementierung des ...% 11% 10- Algorithmus. Der spaßige Teil mit einer Regex ist, dass wir beide Modulo-Berechnungen gleichzeitig erledigen können.


10$*

Initialisieren Sie die Zeichenfolge auf zehn 1Sekunden.

1
,1$`

Ersetzen Sie diese durch ein Komma, ein Eins und das Präfix davor. Dies ergibt ,1,11,...,1111111111also einen unären Bereich.

,1+
$_¶

Ersetzen Sie nun jedes der Bereichselemente durch die gesamte Zeichenfolge, gefolgt von einem Zeilenvorschub. Dies ergibt ein 10x10-Raster von unären Zahlen, die die aktuelle Spalte angeben.

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

Ordnen Sie jede zu 1und bestimmen Sie, in welcher Zeile sie sich befindet, indem Sie die Gruppe eine so oft wiederholen. Ersetzen Sie die 1durch so viele 1s. Dies multipliziert die Werte in jeder Zeile mit dem auf 1 basierenden Index der Zeile.

1{10}1?

Jetzt machen wir Mod 11, Mod 10 in einem Schritt. Um Mod 11 zu machen , entfernen wir normalerweise einfach alles 1{11}von der Zeichenkette, um die restlichen Zeichen zu erhalten. Und dann würden wir danach entfernen 1{10}. Aber wenn wir nur zehn 1s plus eine weitere entfernen , wird die Gier der Regex-Engine so lange wie möglich Mod 11 für uns tun , und wenn nicht, wird es mindestens Mod 10 versuchen .

,(1*)
$.1

Schließlich konvertieren wir einfach jede Zahl in eine Dezimalzahl, indem wir sie durch ihre Länge ersetzen.



2

Haskell, 43 Bytes

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

2

Javascript (ES6), 70 64 56 Bytes

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

4 Bytes dank Shaggy und 8 Bytes dank Arnauld gespeichert.


1
66 Bytes _=>[...a=Array(10)].map((_,x)=>[...a].map((_,y)=>(x+1)*++y%11%10)). Sie retten mich 4 Bytes, ich rette Sie 4 Bytes :)
Shaggy

Vielen Dank. Sie haben auch einen Fehler behoben, also habe ich 2 weitere Bytes Ihrer Lösung rasiert ;-)
Luke

1
Sie können 5 Bytes einsparen, indem Sie den 3. Parameter des Rückrufs im ersten map()und 3 weitere Bytes mit 1e9+''anstelle von verwenden Array(10). Das führt zu _=>[...1e9+''].map((_,x,a)=>a.map((_,y)=>-~x*++y%11%10)).
Arnauld

@ Arnauld: Danke für den 1e9Trick. Ich wusste das nicht. Ich habe überlegt, das dritte Argument zu verwenden, aber aus irgendeinem Grund habe ich es nicht verwendet.
Luke

Ich habe kürzlich eine Liste ähnlicher Tricks hier zusammengestellt .
Arnauld

2

Japt , 16 12 11 Bytes

Es stellte sich heraus, dass dies meine 200 (nicht gelöschte) Antwort hier war :)

Sieht so aus, als hätte Martin die gleiche Formel entdeckt .

Aõ
£®*X%B%A

Test it ( -RFlag nur zu Visualisierungszwecken)

  • 4 Bytes gespart dank Luke , der darauf hinwies, dass die Rückgabe eines Arrays von Arrays zulässig war.

Erläuterung

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

Schlagen Sie mich ... Sie können die letzten beiden Zeichen -R
Luke

1
Noch besser, lassen Sie die letzten vier Zeichen fallen. Es scheint, dass das erlaubt ist ...
Luke

Yup, sieht aus wie Sie Recht haben, danke, @ Luke :)
Shaggy

1

Java 8, 84 Bytes

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

Verwendet den gleichen Algorithmus wie @MartinEnders Mathematica-Antwort : 1-indiziert x*y%11%10.

Erläuterung:

Probieren Sie es hier aus.

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

Kohle , 30 29 19 Bytes

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

Probieren Sie es online!

Verwendet Martins Formel .

  • Dank Neil konnten 10 Bytes eingespart werden, was erneut beweist, dass ich noch so viel zu lernen habe ...

Sie brauchen keine nachgestellten »s und können ωstattdessen ””eine ganze Reihe von Bytes speichern, indem Sie verwenden, ⸿wie dies dann der Fall ist Fχ«FχI﹪﹪×⁺¹ι⁺¹κ¹¹χ⸿. (Bevor ich davon wusste, ⸿hätte ich vorgeschlagen J⁰ι, dass immer noch eine Anzahl von Bytes eingespart werden.)
Neil,

@Neil Das ⸿ist der Reverse Operator, was macht er am Ende deines Codes ohne Argumente? Ist es dokumentiert?
Charlie

1
Nein, ist der Reverse-Operator, ⸿ist das move cursor to start of next lineZeichen (wie , kann aber in einer separaten Zeichenfolge sein).
Neil


0

QBIC , 17 Bytes

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

Dabei wird natürlich Martins Methode angewendet. Es übersetzt zu diesen QBasic-Code übersetzt .

Erläuterung

[|               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 Bytes

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

Gleicher Algorithmus wie die meisten anderen Antworten und im Wesentlichen der C # -Port von @Kevins Java-Antwort.



0

GolfScript , 37 24 Bytes

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

Probieren Sie es online!

-13 Dank eines cleveren Tricks schlug Martin Ender vor.


Wenn Sie daraus ein vollständiges Programm machen ( {-> ;, }-> `), können Sie zumindest das erste löschen [.
Martin Ender

Es ist jedoch viel kürzer, eine einfache verschachtelte Schleife anstelle der Reißverschlusstechnik zu verwenden:{){\)*11%10%}+10,/n}10,/
Martin Ender,

@MartinEnder Umm ... du scheinst zu überbeanspruchen /. ;)
Erik der Outgolfer

@MartinEnder Oh, ich verstehe, was du getan hast ... du hast benutzt int blk +-> {int space contents-of-blk}.
Erik der Outgolfer

@MartinEnder ok Ich habe Ihren +Trick implementiert ... obwohl ich Ihren Code ein wenig geändert habe
Erik the Outgolfer







0

TECO, 45 Bytes

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

Eine (ziemlich) einfache Implementierung von Rods Python-Antwort.

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!

Die Verwendung von <ESC> -terminierten Einfügungen und eines Steuerzeichens für den Befehl ^ T würde auf Kosten der Lesbarkeit drei weitere fünf Bytes einsparen .

Wenn man Martins Mod-11 / Mod-10-Formel verwendet, wird die Länge bei Verwendung von Steuerelementen für ^ A und ^ T auf 43 Byte erhöht, hauptsächlich, weil TECO keinen Mod-Operator hat.

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

Mod 11 wird fortlaufend durchgeführt, indem die Zahl in qn immer dann um -11 erhöht wird, wenn sie 10 überschreitet qn\r0a^T Sequenz fügt die Zahl als Dezimalziffern in den Bearbeitungspuffer ein, kehrt nach der letzten Ziffer um, ruft sie aus dem Puffer ab und gibt sie ein. im wesentlichen tun mod-10.

Ich habe erwartet, dass es kürzer wird. Naja.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.