Bloc de chiffres


18

Sortez / imprimez ce bloc de texte:

1234567890
2468013579
3691470258
4815926037
5049382716
6172839405
7306295184
8520741963
9753108642
0987654321

Les formats acceptables comprennent:

  • Traits de fin de ligne / espaces blancs
  • Liste des chaînes
  • Liste des listes de personnages
  • Liste des listes d'entiers

Cependant, la liste des nombres entiers n'est pas acceptable car la dernière ligne n'est pas un nombre entier.

C'est du . La réponse la plus courte en octets l'emporte. Des échappatoires standard s'appliquent.

Réponses:


20

Mathematica, 33 octets

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

Essayez-le en ligne! (Utilisation des mathématiques.)

La cellule à l'index basé sur 1 (x,y)a une valeur((x*y) % 11) % 10





5

MATL , 12 11 octets

Enregistré un octet grâce à Luis. J'oublie toujours que &c'est un raccourci pour la duplication et la transposition.

10:&*11\10\

Essayez-le en ligne!

En utilisant l'algorithme de @ Martin: x*y % 11 % 10

Explication:

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 

Même bytecount:

10t:&*11\w\

Vous pouvez enregistrer un octet en le remplaçant t!*par&*
Luis Mendo

1
@LuisMendo double backticks si vous avez une barre oblique inverse à la fin de l'extrait de code dans les commentaires.
Martin Ender

@MartinEnder Merci! Je ne me souviens jamais comment cela fonctionne, alors je suis allé pour le plus simple :-)
Luis Mendo

@LuisMendo ouais c'est un peu déroutant avec des publications et des commentaires utilisant une syntaxe différente.
Martin Ender

Merci @LuisMendo! Ce n'est pas dans les documents, n'est-ce pas?
Stewie Griffin



2

Rétine , 59 octets

Le nombre d'octets suppose un codage ISO 8859-1.


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

,(1*)
$.1

Essayez-le en ligne!

Explication

Une autre implémentation de l' algorithme ...% 11% 10 . La partie amusante de le faire avec une expression régulière est que nous pouvons prendre en charge les deux calculs modulo à la fois.


10$*

Initialisez la chaîne à dix 1s.

1
,1$`

Remplacez chacun de ceux-ci par une virgule, un et le préfixe devant celui-ci. Cela donne ,1,11,...,1111111111, c'est-à-dire une plage unaire.

,1+
$_¶

Remplacez maintenant chacun des éléments de la plage par la chaîne entière suivie d'un saut de ligne. Cela nous donne une grille de 10x10 de nombres unaires indiquant la colonne actuelle.

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

Faites correspondre chacun d'eux 1et déterminez sur quelle ligne il se trouve en répétant le groupe plusieurs fois. Remplacez le 1par autant de 1s. Cela multiplie les valeurs de chaque ligne par l'index basé sur 1 de la ligne.

1{10}1?

Maintenant, faisons le mod 11, le mod 10 en une seule étape. Pour faire le mod 11 , nous retirons normalement tout 1{11}de la chaîne pour laisser les restes. Et puis nous supprimerions 1{10}après cela. Mais si nous supprimons simplement dix 1s plus un autre si possible, la gourmandise du moteur regex fera le mod 11 pour nous aussi longtemps que possible, et sinon, il essaiera au moins le mod 10 .

,(1*)
$.1

Enfin, nous convertissons simplement chaque nombre en décimal en le remplaçant par sa longueur.



2

Haskell, 43 octets

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

2

Javascript (ES6), 70 64 56 octets

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

4 octets enregistrés grâce à Shaggy et 8 octets grâce à Arnauld.


1
66 octets: _=>[...a=Array(10)].map((_,x)=>[...a].map((_,y)=>(x+1)*++y%11%10)). Vous me sauvez 4 octets, je vous sauve 4 octets :)
Shaggy

Merci beaucoup. Vous avez également corrigé un bug, j'ai donc rasé encore 2 octets de votre solution ;-)
Luke

1
Vous pouvez enregistrer 5 octets en utilisant le 3ème paramètre du rappel dans le premier map()et 3 autres octets en utilisant 1e9+''au lieu de Array(10). Cela mène à _=>[...1e9+''].map((_,x,a)=>a.map((_,y)=>-~x*++y%11%10)).
Arnauld

@Arnauld: Merci pour l' 1e9astuce. Je ne le connaissais pas. J'ai pensé à utiliser le troisième argument, mais pour une raison quelconque, je ne l'ai pas utilisé.
Luke

J'ai récemment compilé une liste d'astuces similaires ici .
Arnauld

2

Japt , 16 12 11 octets

Il s'avère que c'était ma réponse 200 (non supprimée) ici :)

On dirait que c'est la même formule que Martin a repérée .

Aõ
£®*X%B%A

Testez-le ( -Rindicateur à des fins de visualisation uniquement)

  • 4 octets enregistrés grâce à Luke soulignant que le retour d'un tableau de tableaux était autorisé.

Explication

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

Battez-moi ... Vous pouvez laisser tomber les deux derniers personnages et utiliser le -Rdrapeau à la place
Luke

1
Encore mieux, laissez tomber les quatre derniers caractères. Il semble que ce soit permis ...
Luke

Ouaip, on dirait que tu as raison, merci, @Luke :)
Shaggy

1

Java 8, 84 octets

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

Utilise le même algorithme que la réponse Mathematica de @MartinEnder : 1 indexéx*y%11%10 .

Explication:

Essayez-le ici.

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

Fusain , 30 29 19 octets

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

Essayez-le en ligne!

Utilise la formule de Martin .

  • 10 octets économisés grâce à Neil, prouvant une fois de plus que j'ai encore tant à apprendre ...

Vous n'avez pas besoin de »s de fin et pendant que vous pouvez utiliser à la ωplace de ””vous pouvez enregistrer tout un tas d'octets en utilisant ⸿comme cela devient alors Fχ«FχI﹪﹪×⁺¹ι⁺¹κ¹¹χ⸿. (Avant que je sache, ⸿j'aurais suggéré J⁰ιce qui aurait encore permis d'économiser un certain nombre d'octets.)
Neil

@Neil The ⸿est l'opérateur inverse, que fait-il à la fin de votre code sans arguments? Est-ce documenté?
Charlie

1
Non, est l'opérateur inverse, ⸿est le move cursor to start of next linecaractère (comme mais peut être dans une chaîne distincte).
Neil


0

QBIC , 17 octets

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

Ceci, bien sûr, utilise la méthode de Martin. Cela se traduit par ce code QBasic .

Explication

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

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

Même algorithme que la plupart des autres réponses et essentiellement le port C # de la réponse Java @Kevins .



0

GolfScript , 37 24 octets

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

Essayez-le en ligne!

-13 grâce à une astuce astucieuse suggérée par Martin Ender .


si vous le transformez en un programme complet ( {-> ;, }-> `), vous pouvez au moins supprimer le premier [.
Martin Ender

Il est cependant beaucoup plus court d'utiliser une simple boucle imbriquée au lieu de la technique zip:{){\)*11%10%}+10,/n}10,/
Martin Ender

@MartinEnder Umm ... vous semblez abuser /. ;)
Erik the Outgolfer

@MartinEnder Oh je vois ce que vous avez fait ... vous avez utilisé int blk +-> {int space contents-of-blk}.
Erik the Outgolfer le

@MartinEnder ok j'ai implémenté votre +astuce ... même si j'ai un peu modifié votre code
Erik the Outgolfer




0

Pyke, 13 octets

TS F~u0+*i>i%

Essayez-le ici!

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 octets

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

Une implémentation (assez) simple de la réponse Python de Rod.

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!

L'utilisation d'inserts terminés par <ESC> et d'un caractère de contrôle pour la commande ^ T économiserait encore trois cinq octets, au détriment de la lisibilité.

L'utilisation de la formule mod-11 / mod-10 de Martin l'allonge en fait à 43 octets en utilisant des contrôles pour ^ A et ^ T, principalement parce que TECO n'a pas d'opérateur mod.

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

Le module 11 se fait de manière continue en incrémentant le nombre dans qn de -11 chaque fois qu'il dépasse 10. Le qn\r0a^T séquence insère le nombre dans le tampon d'édition sous forme de chiffres décimaux, inverse le dernier chiffre, le récupère du tampon et le tape, faisant essentiellement mod-10.

Je m'attendais à ce qu'il soit plus court. Tant pis.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.