Calculez 6 * 9 dans différentes bases

16

Sortez le résultat suivant (qui est le résultat du calcul de 6 * 9 en bases de 2 à 36). Assurez-vous que les lettres sont en majuscules et que la multiplication elle-même est sortie sur chaque ligne.

6 * 9 = 110110
6 * 9 = 2000
6 * 9 = 312
6 * 9 = 204
6 * 9 = 130
6 * 9 = 105
6 * 9 = 66
6 * 9 = 60
6 * 9 = 54
6 * 9 = 4A
6 * 9 = 46
6 * 9 = 42
6 * 9 = 3C
6 * 9 = 39
6 * 9 = 36
6 * 9 = 33
6 * 9 = 30
6 * 9 = 2G
6 * 9 = 2E
6 * 9 = 2C
6 * 9 = 2A
6 * 9 = 28
6 * 9 = 26
6 * 9 = 24
6 * 9 = 22
6 * 9 = 20
6 * 9 = 1Q
6 * 9 = 1P
6 * 9 = 1O
6 * 9 = 1N
6 * 9 = 1M
6 * 9 = 1L
6 * 9 = 1K
6 * 9 = 1J
6 * 9 = 1I

Le code le plus court gagne.

Konrad Borowski
la source
1
@Howard: fixe. J'envisageais de passer de 2 à 10, mais j'ai oublié cette modification tout en corrigeant autre chose dans le résultat, alors je l'ai accidentellement laissé dans le mauvais sens.
Konrad Borowski
2
Calculate 6*9 in different basesJe me demande pourquoi la déclaration est ainsi libellée, pourquoi 6*9et pas simplement 54? Peut-être que le sens initialement prévu était cela 6et 9devrait être interprété pas toujours comme décimal mais dans des bases différentes? Cela rendrait la déclaration plus logique et le problème plus intéressant (mais alors nous devrions commencer de la base 10 à 36)
leonbloy
2
@leonbloy: 6et 9sont des nombres à un chiffre. Ils signifient la même chose dans chaque base dans laquelle ces chiffres sont valides.
Ilmari Karonen
1
@IlmariKaronen: Exact, mais cela 6 * 9 = 110110n'a pas beaucoup de sens ...
Dennis
3
Ceci est une référence au guide de l'auto-stoppeur de la série Galaxy de Douglas Adams. Dans la série, la réponse à la question ultime de la vie, l'univers et tout est «42». Plus tard, il a révélé que la question ultime de la vie, de l'univers et de tout est "Qu'est-ce que vous obtenez lorsque vous multipliez six par neuf?", Ce qui fonctionne en base 13. Remarque: Douglas Adams a déclaré que ce n'était pas intentionnel; "Je n'écris pas de blagues en base 13" .
dr jimbob

Réponses:

1

05AB1E , 21 20 octets

36G54N>B"6 * 9 = ÿ",

Essayez-le en ligne!

Urne de poulpe magique
la source
Je suppose que c'est non concurrentiel simplement parce que la langue est plus récente qu'un défi? Marquage comme accepté, car les règles le permettent désormais.
Konrad Borowski
@xfix à peu près haha
Magic Octopus Urn
7

GolfScript, 39 caractères

35,{2+'6 * 9 = '54@base{.9>7*+48+}%n+}/

Le résultat peut être vu ici .

Howard
la source
7

Octave, 49

for i=2:36printf("6 * 9 = %s\n",dec2base(54,i))end

Sanjeev Murty
la source
6

Javascript, 57 55 octets

for(i=2;++i<37;)console.log('6 * 9 = '+54..toString(i))

Peut être raccourci à 49 avec alert, mais je ne veux soumettre personne à cela ...

Joachim Isaksson
la source
3
La sortie doit être en majuscules et (54)peut être remplacée par 54.(pour écrire 54..toString).
Konrad Borowski
2
for(i=1;++i<37;)enregistre également un personnage.
grc
Pouvez-vous ignorer le 37? Cela entraînera une erreur et s'arrêtera
l4m2
4

Rubis (47)

2.upto(36){|t|puts"9 * 6 = "+54.to_s(t).upcase}

Eh bien, je sais que la solution GolfScript est meilleure, mais bon, au moins ce n'est pas ésotérique ...

réécrit
la source
2.step{|t|puts"9 * 6 = "+54.to_s(t).upcase}enregistre quelques octets. Il sort avec une erreur, mais qui est ok: D .
m-chrzan
4

Python, 89

B=lambda x:x*'.'and B(x/b)+chr(x%b+7*(x%b>9)+48)
b=2
while b<37:print'6 * 9 =',B(54);b+=1
boothby
la source
Brillant. Assez remarquable que je suis un noob total en Python en comparaison :)
Joachim Isaksson
@JoachimIsaksson Merci ... J'ai encore plein de choses à apprendre.
boothby
Vous pouvez raser un caractère en utilisant une boucle while à la place: b=2<linebreak> while b<37:print'6 * 9 =',B(54);b+=1(en supposant un seul caractère pour un saut de ligne * nix)
Bob
@Bob Chaque fois que j'essaie une boucle while, c'est trop cher. Ensuite, j'oublie d'essayer la prochaine fois. ;) Merci!
stand
3

Python 2.7 ( 124 114)

EDIT: Coupez quelques peluches grâce au commentaire de @ boothby ci-dessous

Je pense que Python se porte bien étant donné qu'il n'a pas de fonction intégrée (à ma connaissance) pour effectuer la conversion de base, donc cela doit être fait en code;

for b in range(2,37):print'6 * 9 = '+''.join(chr((54/b**y%b>9)*7+48+54/b**y%b)for y in range(4,-1,-1)).lstrip('0')
Joachim Isaksson
la source
Je dois constamment me rappeler ceci: print'\n'.join(...for x in y)est plutôt plus long que for x in y:print....
boothby
@boothby Merci, mis à jour avec votre suggestion :)
Joachim Isaksson
2

Perl 6 , 36 octets

say '6 * 9 = ',54.base($_) for 2..36
Sean
la source
1

Mathematica 40

Pas en litige (lettres minuscules utilisées):

Print["6*9 = ",54~BaseForm~#]&/@2~Range~36

sortie de base

DavidC
la source
1

Julia, 61 ans

pour b = 2: 36; @printf ("6 * 9 =% s \ n", majuscule (base (b, 54))); fin

Assez indolore, à part se souvenir d'utiliser la macro @printf contre printf.

Base d'importation; pas besoin ...

Joe
la source
for b=2:36;println("6 * 9 = $(uppercase(base(b,54)))");endc'est aussi bon ...
cormullion
1

Perl

J'ai dû utiliser le module Math :: BaseCnv

35 caractères sans la usedéclaration:

map{say"6 * 9 = ",cnv(54,$_)}2..36

54 caractères avec la usedéclaration:

use Math::BaseCnv;
map{say"6 * 9 = ",cnv(54,$_)}2..36

Je ne sais pas comment vous noteriez cela, donc les deux sont inclus.

La structure de carte BLOCK LIST a été utilisée. La liste est la plage 2 à 36, qui a été demandée. La viande est dans la cnv($NUMBER, $BASE)fonction et la carte est une boucle implicite.

Joe
la source
1
Comptez la usedéclaration. Le premier ne fonctionne pas dans mon perl.
stand
1

J - 78 70

'6 * 9 = ',"1>;/(a.#~48 10 7 26 165#0 1 0 1 0){~<&.>(2+i.35)#.inv&.>54

Haskell - 137

let s=['0'..'9']++['A'..'Z'];t _(0,r)=[s!!r];t b(q,r)=(t b$b q)++[s!!r]in mapM_(putStrLn.("6 * 9 = "++).(\b->t b$b 54).flip divMod)[2..36]
bruissement
la source
1

CoffeeScript 71

alert ("6 * 9 = "+59.toString(x).toUpperCase()for x in[2..36]).join "\n"

Lien

eikes
la source
1

C ( 166 151)

Débarrassé de certains caractères inutiles et changé certaines déclarations. Suppose que vous exécutez le programme sans arguments.

p[7],i,l,v,r;main(b){for(r=2;r<37;r++){b++;printf("6 * 9 = ");v=54;while(v>0)l=v%b,p[i++]=l>9?l+55:l+48,v/=b;while(i^0)printf("%c",p[--i]);puts("");}}
cardinaliti
la source
1

Clojure, 75

(for[i(range 2 37)](println"6 * 9 ="(.toUpperCase(Integer/toString 54 i))))

OpenSauce
la source
1

Python 3, 83 octets

import numpy;print('\n'.join('6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37)))
Cormac
la source
1
Vous pouvez utiliser '\n'.join('6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37))au lieu de *['6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37)],sep='\n'pour enregistrer un octet.
Post Rock Garf Hunter
Vous devriez probablement spécifier "Python 3 avec Numpy" car ce n'est pas une bibliothèque standard
FlipTack
1

Fléchette, 75 octets

for(int x=2;x<37;x++)print("6 * 9 = ${54.toRadixString(x).toUpperCase()}");

Dart est un peu bavard en ce qui concerne le stdlib, mais bon ... au moins vous pouvez le lire: P

Dwayne Slater
la source
0

Scala, 71

2 to 36 map(i=>println("6 * 9 = "+Integer.toString(54,i).toUpperCase))
gourlaysama
la source
0

Lisp commun: 56 caractères

(do((b 2(1+ b)))((> b 36))(format t"6 * 9 = ~vr~%"b 54))
Svante
la source
0

Sage, 48 ans:

Honte Sage imprime en minuscules ... Je ne serais qu'un sur Howard. Ou, je suppose, faux et à égalité avec David Carraher.

for i in[2..36]:print'6 * 9 =',54.str(i).upper()
boothby
la source
0

Forth, 54

: f 54 37 2 do ." 6 * 9 = " dup i base ! . cr loop ; f
Darren Stone
la source
0

/// , 133 octets

/R/6 * 9 = //S/
R/R110110S2000S312S204S130S105S66S60S54S4AS46S42S3CS39S36S33S30S2GS2ES2CS2AS28S26S24S22S20S1QS1PS1OS1NS1MS1LS1KS1JS1I

Essayez-le en ligne!

Erik le Outgolfer
la source
0

SpecBAS - 48 octets

1 FOR i=2 TO 36: ?"6 * 9 = ";BASE$(54,i): NEXT i

SpecBAS est en fait assez compétitif pour un changement :-)

Brian
la source
0

8ème , 65 62 octets

Ceci est un programme complet. Quitter après l'exécution

( "6 * 9 = " . #54 swap base drop >s s:uc . cr ) 2 36 loop bye 

Explication

( 
   "6 * 9 = " .   \ Print the first part of the formula
    #54 swap base \ Enter into the base provided by loop index and                
                  \ convert 54 (which is always expressed in base 10)
    drop          \ Get rid of previous base
    >s s:uc       \ Convert number into an upper case string
    . cr          \ Print result and newline
) 2 36 loop       \ Provide base from 2 to 36
bye               \ Quit
Manoir du Chaos
la source