Calcule 6 * 9 en diferentes bases

16

Produzca el siguiente resultado (que es el resultado de calcular 6 * 9 en bases de 2 a 36). Asegúrate de que las letras sean mayúsculas y que la multiplicación en sí sea superada en cada línea.

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

El código más corto gana.

Konrad Borowski
fuente
1
@Howard: fijo. Estaba considerando cambiar de 2 a 10, pero olvidé esta edición mientras arreglaba algo más en el resultado, así que accidentalmente lo dejé de la manera incorrecta.
Konrad Borowski el
2
Calculate 6*9 in different basesMe pregunto por qué la declaración está redactada así, ¿por qué 6*9y no simplemente 54? ¿Quizás el significado originalmente pensado era eso 6y 9debería interpretarse no siempre como decimal sino en diferentes bases? Eso haría la declaración más lógica y el problema más interesante (pero entonces deberíamos comenzar desde la base 10 a la 36)
leonbloy
2
@leonbloy: 6y 9son números de un solo dígito. Significan lo mismo en cada base en la que esos dígitos son válidos.
Ilmari Karonen
1
@IlmariKaronen: Correcto, pero 6 * 9 = 110110no tiene mucho sentido ...
Dennis
3
Esta es una referencia a la serie Hitchhiker's Guide to the Galaxy de Douglas Adams. En la serie, la respuesta a la última pregunta de la vida, el universo y todo es "42". Más tarde, se reveló que la última pregunta de la vida, el universo y todo es "¿Qué obtienes cuando multiplicas seis por nueve?", Que funciona en base-13. Nota: Douglas Adams dijo que esto no fue intencional; "No escribo chistes en base-13" .
dr jimbob

Respuestas:

1

05AB1E , 21 20 bytes

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

Pruébalo en línea!

Urna de pulpo mágico
fuente
¿Supongo que no compite solo porque el lenguaje es más nuevo que un desafío? Marcar como aceptado, ya que las reglas a partir de ahora lo permiten.
Konrad Borowski el
@xfix casi jaja
Urna de pulpo mágico
7

GolfScript, 39 caracteres

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

El resultado se puede ver aquí .

Howard
fuente
7

Octava, 49

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

Sanjeev Murty
fuente
6

Javascript, 57 55 bytes

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

Podría acortarse a 49 con alert, pero no quiero enviar a nadie a eso ...

Joachim Isaksson
fuente
3
La salida debe ser mayúscula y (54)puede reemplazarse por 54.(para escribir 54..toString).
Konrad Borowski el
2
for(i=1;++i<37;)También guarda un personaje.
grc
¿Puedes ignorar los 37? Se producirá un error y se detendrá
l4m2
4

Rubí (47)

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

Bueno, sé que la solución GolfScript es mejor, pero bueno, al menos esto no es esotérico ...

reescrito
fuente
2.step{|t|puts"9 * 6 = "+54.to_s(t).upcase}Guarda algunos bytes. Se finaliza con un error, pero eso está bien: 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
fuente
Brillante. Muy notable que soy un novato total de Python en comparación :)
Joachim Isaksson
@JoachimIsaksson Gracias ... Tengo mucho más que aprender.
Boothby
Puede eliminar un personaje utilizando un bucle while en su lugar: b=2<linebreak> while b<37:print'6 * 9 =',B(54);b+=1(asumiendo un solo carácter para un * nix linebreak)
Bob
@Bob Cada vez que intento un ciclo while, es demasiado costoso. Entonces, me olvido de intentar la próxima vez. ;) ¡Gracias!
stand
3

Python 2.7 ( 124 114)

EDITAR: Cortar un poco de pelusa gracias al comentario de @ boothby a continuación

Creo que Python está bien teniendo en cuenta que no tiene incorporado (que yo sepa) para hacer la conversión de base, por lo que debe hacerse en código;

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
fuente
Tengo que recordarme esto continuamente: print'\n'.join(...for x in y)es bastante más largo que for x in y:print....
stand
@boothby Gracias, actualizado con su sugerencia :)
Joachim Isaksson
2

Perl 6 , 36 bytes

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

Mathematica 40

No en disputa (se usan letras minúsculas):

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

base output

DavidC
fuente
1

Julia, 61

para b = 2: 36; @printf ("6 * 9 =% s \ n", mayúscula (base (b, 54))); final

Bastante indoloro, aparte de recordar usar la macro @printf versus printf.

Base de importación; innecesario ...

Joe
fuente
for b=2:36;println("6 * 9 = $(uppercase(base(b,54)))");endtambién es bueno ...
cormullion
1

Perl

Tuve que usar el módulo Math :: BaseCnv

35 caracteres sin el use declaración:

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

54 caracteres con el use declaración:

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

No estoy seguro de cómo calificarías esto, así que ambos están incluidos.

Se utilizó la estructura del mapa BLOCK LIST. La lista es el rango de 2 a 36 que se solicitó. La carne está en la cnv($NUMBER, $BASE)función, y el mapa es un bucle implícito.

Joe
fuente
1
Cuenta la usedeclaración. El primero no funciona en mi 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]
silbido
fuente
1

CoffeeScript 71

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

Enlace

eikes
fuente
1

C ( 166 151)

Se deshizo de algunos caracteres innecesarios y cambió algunas declaraciones. Asume que está ejecutando el programa sin argumentos.

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
fuente
1

Clojure, 75

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

OpenSauce
fuente
1

Python 3, 83 bytes

import numpy;print('\n'.join('6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37)))
Cormac
fuente
1
Puede usar en '\n'.join('6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37))lugar de *['6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37)],sep='\n'guardar un byte.
Post Rock Garf Hunter
Probablemente deberías especificar "Python 3 con Numpy" ya que no es una biblioteca estándar
FlipTack
1

Dart, 75 bytes

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

Dart es un poco detallado cuando se trata de stdlib, pero bueno ... al menos puedes leerlo: P

Dwayne Slater
fuente
0

Scala, 71

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

Lisp común: 56 caracteres

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

Sabio, 48:

Shame Sage imprime en minúsculas ... Yo solo sería uno sobre Howard. O, supongo, equivocado y atado con David Carraher.

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

Adelante, 54

: f 54 37 2 do ." 6 * 9 = " dup i base ! . cr loop ; f
Piedra de Darren
fuente
0

/// , 133 bytes

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

Pruébalo en línea!

Erik el Outgolfer
fuente
0

SpecBAS - 48 bytes

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

SpecBAS es realmente bastante competitivo para un cambio :-)

Brian
fuente
0

8 , 65 62 bytes

Este es un programa completo. Salir después de la ejecución

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

Explicación

( 
   "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
Chaos Manor
fuente