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.


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:



7

GolfScript, 39 caractères

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

Le résultat peut être vu ici .



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 ...


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 ...


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

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')

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


1

Mathematica 40

Pas en litige (lettres minuscules utilisées):

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

sortie de base


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 ...


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.


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]

1

CoffeeScript 71

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

Lien


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("");}}

1

Clojure, 75

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


1

Python 3, 83 octets

import numpy;print('\n'.join('6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37)))

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


0

Scala, 71

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

0

Lisp commun: 56 caractères

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

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()



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 :-)


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
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.