Calcola 6 * 9 in diverse basi


16

Emette il seguente risultato (che è il risultato del calcolo di 6 * 9 in basi da 2 a 36). Assicurati che le lettere siano maiuscole e che la moltiplicazione stessa venga emessa su ogni riga.

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

Il codice più corto vince.


1
@Howard: risolto. Stavo pensando di cambiare da 2 a 10, ma ho dimenticato questa modifica mentre correggevo qualcos'altro nel risultato, quindi l'ho lasciato per sbaglio nel modo sbagliato.
Konrad Borowski

2
Calculate 6*9 in different basesMi chiedo perché la frase sia così formulata, perché 6*9e non semplicemente 54? Forse il significato originariamente previsto era quello 6e 9dovrebbe essere interpretato non sempre come decimale ma su basi diverse? Ciò renderebbe la frase più logica e il problema più interessante (ma dovremmo iniziare dalla base 10 alla 36)
leonbloy,

2
@leonbloy: 6e 9sono numeri a una cifra. Significano lo stesso in ogni base in cui quelle cifre sono valide.
Ilmari Karonen,

1
@IlmariKaronen: corretto, ma 6 * 9 = 110110non ha molto senso ...
Dennis

3
Questo è un riferimento alla serie Hitchhiker's Guide to the Galaxy di Douglas Adams. Nella serie, la risposta all'ultima domanda di vita, l'universo e tutto è "42". In seguito, è emerso che la domanda finale di vita, universo e tutto è "Cosa ottieni quando moltiplichi sei per nove?", Che si risolve in base-13. Nota: Douglas Adams ha dichiarato che questo non era intenzionale; "Non scrivo battute in base-13" .
dr jimbob,

Risposte:



7

GolfScript, 39 caratteri

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

Il risultato può essere visto qui .



6

Javascript, 57 55 byte

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

Potrebbe essere abbreviato a 49 con alert, ma non voglio sottoporre nessuno a quello ...


3
L'output deve essere in maiuscolo e (54)può essere sostituito con 54.(per scrivere 54..toString).
Konrad Borowski il

2
for(i=1;++i<37;)salva anche un personaggio.
GRC

Puoi ignorare il 37? Si tradurrà in un errore e si fermerà
l4m2

4

Rubino (47)

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

Bene, so che la soluzione GolfScript è migliore, ma ehi, almeno questo non è esoterico ...


2.step{|t|puts"9 * 6 = "+54.to_s(t).upcase}salva qualche byte. Si esce con un errore, ma questo è 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

Brillante. Abbastanza evidente che io sono un noob Python totale in confronto :)
Joachim Isaksson

@JoachimIsaksson Grazie ... Ho molto altro da imparare.
stand dal

Puoi invece eliminare un carattere usando un ciclo while: b=2<linebreak> while b<37:print'6 * 9 =',B(54);b+=1(assumendo un singolo carattere per un'interruzione di riga * nix)
Bob

@Bob Ogni volta che provo un ciclo while, è troppo costoso. Quindi, ho dimenticato di provare la prossima volta. ;) Grazie!
stand dal

3

Python 2.7 ( 124 114)

EDIT: Taglia un po 'di lanugine grazie al commento di @ boothby qui sotto

Penso che Python stia andando bene considerando che non ha un built-in (che io conosca) per fare la conversione di base, quindi deve essere fatto in codice;

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

Devo ricordarmelo continuamente: print'\n'.join(...for x in y)è piuttosto più lungo di for x in y:print....
stand dal

@boothby Grazie, aggiornato con il tuo suggerimento :)
Joachim Isaksson il


1

Mathematica 40

Non in conflitto (utilizzate lettere minuscole):

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

base output


1

Julia, 61

per b = 2: 36; @printf ("6 * 9 =% s \ n", maiuscolo (base (b, 54))); fine

Abbastanza indolore, a parte ricordare di usare la macro @printf contro printf.

Base di importazione; non necessario ...


for b=2:36;println("6 * 9 = $(uppercase(base(b,54)))");endè anche buono ...
cormullion,

1

Perl

Ho dovuto usare il modulo Math :: BaseCnv

35 caratteri senza la usedichiarazione:

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

54 caratteri con la usedichiarazione:

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

Non sono sicuro di come lo segneresti, quindi entrambi sono inclusi.

È stata utilizzata la struttura BLOCCO ELENCO mappa. L'elenco è l'intervallo da 2 a 36, ​​richiesto. La carne è nella cnv($NUMBER, $BASE)funzione e la mappa è un ciclo implicito.


1
Conta l' useaffermazione. Il primo non funziona nel mio perl.
stand dal

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"

collegamento


1

C ( 166 151)

Sbarazzato di alcuni personaggi non necessari e modificato alcune dichiarazioni. Presuppone che si stia eseguendo il programma senza argomenti.

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 byte

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

1
È possibile utilizzare '\n'.join('6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37))invece di *['6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37)],sep='\n'salvare un byte.
Post Rock Garf Hunter,

Probabilmente dovresti specificare "Python 3 con Numpy" in quanto non è una libreria standard
FlipTack

1

Dardo, 75 byte

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

Dart è un po 'prolisso quando si tratta di stdlib, ma ehi ... almeno puoi leggerlo: P


0

Scala, 71

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

0

Lisp comune: 56 caratteri

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

0

Salvia, 48 anni:

Peccato che Sage stampi in minuscolo ... Sarei solo uno su Howard. O, immagino, sbagliato e legato a David Carraher.

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



0

SpecBAS - 48 byte

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

SpecBAS è in realtà abbastanza competitivo per un cambiamento :-)


0

8 ° , 65 62 byte

Questo è un programma completo. Esci dopo l'esecuzione

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

Spiegazione

( 
   "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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.