Calcular 6 * 9 em diferentes bases

16

Emita o resultado a seguir (que é o resultado do cálculo de 6 * 9 em bases de 2 a 36). Verifique se as letras estão em maiúsculas e se a multiplicação é gerada em todas as linhas.

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

O menor código vence.

Konrad Borowski
fonte
11
@ Howard: Fixo. Eu estava pensando em mudar de 2 para 10, mas esqueci essa edição enquanto consertava outra coisa no resultado, então acidentalmente a deixei do jeito errado.
precisa saber é o seguinte
2
Calculate 6*9 in different basesEu me pergunto por que a declaração está assim redigida, por que 6*9e não simplesmente 54? Talvez o significado originalmente pretendido fosse esse 6e 9deveria ser interpretado nem sempre como decimal, mas em bases diferentes? Isso tornaria a declaração mais lógico, e que o problema mais interessante (mas então devemos começar a partir de base de 10 a 36)
leonbloy
2
@leonbloy: 6e 9são números de um dígito. Eles significam o mesmo em todas as bases em que esses dígitos são válidos.
Ilmari Karonen
11
@IlmariKaronen: Correto, mas 6 * 9 = 110110não faz muito sentido ...
Dennis
3
Esta é uma referência ao Guia do Mochileiro das Galáxias, de Douglas Adams. Na série, a resposta para a questão final da vida, do universo e de tudo é "42". Mais tarde, foi revelado que a Questão Final da Vida, o Universo e Tudo é "O que você ganha quando multiplica seis por nove?", Que funciona na base 13. Nota: Douglas Adams disse que isso não era intencional; "Eu não escrevo piadas na base 13" .
precisa saber é o seguinte

Respostas:

1

05AB1E , 21 20 bytes

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

Experimente online!

Urna de polvo mágico
fonte
Suponho que não concorra apenas porque o idioma é mais novo que um desafio? Marcando como aceito, as regras a partir de agora permitem isso.
21918 Konrad Borowski
@xfix praticamente haha
Magia Octopus Urna
7

GolfScript, 39 caracteres

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

O resultado pode ser visto aqui .

Howard
fonte
7

Oitava, 49

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

Sanjeev Murty
fonte
6

Javascript, 57 55 bytes

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

Pode ser reduzido para 49 com alert, mas não quero submeter ninguém a isso ...

Joachim Isaksson
fonte
3
A saída deve estar em maiúscula e (54)pode ser substituída por 54.(para escrever 54..toString).
precisa saber é o seguinte
2
for(i=1;++i<37;)também salva um personagem.
22614 grc
Você pode ignorar os 37? Isso resultará em um erro e será interrompido
l4m2 21/03
4

Rubi (47)

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

Bem, eu sei que a solução GolfScript é melhor, mas ei, pelo menos isso não é esotérico ...

reescrito
fonte
2.step{|t|puts"9 * 6 = "+54.to_s(t).upcase}salva alguns bytes. Ele sai com um erro, mas isso é 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
fonte
Brilhante. Bastante perceptível que eu sou um noob total de Python em comparação :)
Joachim Isaksson
@JoachimIsaksson Obrigado ... Eu tenho muito mais para aprender.
usar o seguinte comando
Você pode raspar um caractere usando um loop while em vez disso: b=2<linebreak> while b<37:print'6 * 9 =',B(54);b+=1(assumindo caráter único para uma quebra de linha nix *)
Bob
@ Bob Sempre que tento um loop while, é muito caro. Então, eu esqueço de tentar da próxima vez. ;) Obrigado!
precisa saber é o seguinte
3

Python 2.7 ( 124 114)

EDIT: Corte alguns fluff graças ao comentário de @ boothby abaixo

Eu acho que o Python está indo bem, considerando que ele não tem built-in (que eu conheço) para fazer a conversão base, portanto, isso deve ser feito em 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
fonte
Eu tenho que me lembrar disso continuamente: print'\n'.join(...for x in y)é um pouco mais do que isso for x in y:print....
precisa saber é o seguinte
@boothby Graças, atualizado com a sua sugestão :)
Joachim Isaksson
2

Perl 6 , 36 bytes

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

Mathematica 40

Não está na disputa (letras minúsculas usadas):

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

saída base

DavidC
fonte
1

Julia, 61

para b = 2: 36; @printf ("6 * 9 =% s \ n", maiúsculo (base (b, 54))); end

Muito indolor, além de lembrar de usar a macro @printf versus printf.

Base de Importação; não é necessário ...

Joe
fonte
for b=2:36;println("6 * 9 = $(uppercase(base(b,54)))");endtambém é bom ...
cormullion
1

Perl

Tinha que usar o módulo Math :: BaseCnv

35 caracteres sem a usedeclaração:

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

54 caracteres com a usedeclaração:

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

Não tenho certeza de como você pontuaria isso, portanto, ambos estão incluídos.

A estrutura do mapa BLOCK LIST foi utilizada. Lista é o intervalo de 2 a 36, ​​solicitado. A carne está na cnv($NUMBER, $BASE)função e o mapa é um loop implícito.

Joe
fonte
11
Conte a useafirmação. O primeiro não funciona no meu perl.
precisa saber é o seguinte
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]
swish
fonte
1

CoffeeScript 71

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

Ligação

eikes
fonte
1

C ( 166 151)

Livre-se de alguns caracteres desnecessários e altere algumas declarações. Supõe que você esteja executando o programa sem 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
fonte
1

Clojure, 75

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

OpenSauce
fonte
1

Python 3, 83 bytes

import numpy;print('\n'.join('6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37)))
Cormac
fonte
11
Você pode usar em '\n'.join('6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37))vez de *['6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37)],sep='\n'salvar um byte.
Post Rock Garf Hunter
Você provavelmente deve especificar "Python 3 com Numpy", pois não é uma biblioteca padrão
FlipTack
1

Dardo, 75 bytes

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

O dardo é um pouco detalhado quando se trata do stdlib, mas ei ... pelo menos você pode lê-lo: P

Dwayne Slater
fonte
0

Scala, 71

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

Lisp comum: 56 caracteres

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

Sábio, 48:

Vergonha Sage imprime em minúsculas ... Eu seria apenas uma sobre Howard. Ou, acho, errado e empatado com David Carraher.

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

Adiante, 54

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

/// , 133 bytes

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

Experimente online!

Erik, o Outgolfer
fonte
0

SpecBAS - 48 bytes

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

SpecBAS é realmente bastante competitivo para uma mudança :-)

Brian
fonte
0

8o , 65 62 bytes

Este é um programa completo. Sair após a execução

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

Explicação

( 
   "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
fonte