Berechnen Sie 6 * 9 in verschiedenen Basen

16

Geben Sie das folgende Ergebnis aus (das ein Ergebnis der Berechnung von 6 * 9 in Basen von 2 bis 36 ist). Stellen Sie sicher, dass die Buchstaben in Großbuchstaben geschrieben sind und die Multiplikation selbst in jeder Zeile ausgegeben wird.

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

Kürzester Code gewinnt.

Konrad Borowski
quelle
1
@Howard: Behoben. Ich habe überlegt, 2 auf 10 zu ändern, habe diese Änderung jedoch vergessen, während ich etwas anderes im Ergebnis korrigiert habe, und habe sie versehentlich falsch eingestellt.
Konrad Borowski
2
Calculate 6*9 in different basesIch frage mich, warum die Aussage so formuliert ist, warum 6*9und nicht einfach 54? Vielleicht war die ursprünglich beabsichtigte Bedeutung das 6und 9sollte nicht immer als Dezimalzahl interpretiert werden, sondern auf verschiedenen Grundlagen? Das würde die Aussage logischer und das Problem interessanter machen (aber dann sollten wir von Basis 10 bis 36 beginnen)
Leonbloy
2
@leonbloy: 6und 9sind einstellige Zahlen. Sie bedeuten in jeder Basis, in der diese Ziffern gültig sind, dasselbe.
Ilmari Karonen
1
@IlmariKaronen: Richtig, aber 6 * 9 = 110110macht nicht viel Sinn ...
Dennis
3
Dies ist ein Verweis auf den Per Anhalter durch die Galaxy-Reihe von Douglas Adams. In der Serie lautet die Antwort auf die ultimative Frage nach dem Leben, dem Universum und allem "42". Später hat sich herausgestellt, dass die ultimative Frage des Lebens, des Universums und von allem lautet: "Was bekommst du, wenn du sechs mit neun multiplizierst?" Hinweis: Douglas Adams sagte, dies sei unbeabsichtigt. "Ich schreibe keine Witze in Basis 13" .
Dr. jimbob

Antworten:

1

05AB1E , 21 20 Bytes

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

Probieren Sie es online!

Magische Kraken-Urne
quelle
Ich nehme an, es ist nicht konkurrierend, nur weil die Sprache neuer ist als eine Herausforderung? Als akzeptiert markieren, da dies ab sofort möglich ist.
Konrad Borowski
@ Xfix ziemlich haha
Magic Octopus Urn
7

GolfScript, 39 Zeichen

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

Ergebnis ist zu sehen, hier .

Howard
quelle
7

Oktave, 49

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

Sanjeev Murty
quelle
6

Javascript, 57-55 Bytes

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

Könnte mit auf 49 gekürzt werden alert, aber ich möchte niemanden dem unterwerfen ...

Joachim Isaksson
quelle
3
Die Ausgabe sollte in Großbuchstaben erfolgen und (54)kann durch 54.(zum Schreiben 54..toString) ersetzt werden.
Konrad Borowski
2
for(i=1;++i<37;)speichert auch einen Charakter.
Grc
Kannst du die 37 ignorieren? Dies führt zu einem Fehler und stoppt
l4m2
4

Rubin (47)

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

Nun, ich weiß, dass die GolfScript-Lösung besser ist, aber hey, zumindest ist das nicht esoterisch ...

neu geschrieben
quelle
2.step{|t|puts"9 * 6 = "+54.to_s(t).upcase}spart ein paar Bytes. Es tritt mit einem Fehler, aber das ist 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
quelle
Brillant. Ziemlich auffällig, dass ich ein totaler Python Noob im Vergleich bin :)
Joachim Isaksson
@JoachimIsaksson Danke ... Ich muss noch viel mehr lernen.
Stand
Sie können ein Zeichen abschneiden, indem Sie stattdessen eine while-Schleife verwenden: b=2<Zeilenumbruch> while b<37:print'6 * 9 =',B(54);b+=1(unter der Annahme eines einzelnen Zeichens für einen * nix-Zeilenumbruch)
Bob
@ Bob Immer wenn ich eine while-Schleife versuche, ist es zu teuer. Dann vergesse ich das nächste Mal zu versuchen. ;) Vielen Dank!
Stand
3

Python 2.7 ( 124 114)

BEARBEITEN: Schneiden Sie einige Flusen dank @ boothbys Kommentar unten

Ich denke, dass Python in Ordnung ist, wenn man bedenkt, dass es kein eingebautes Programm (das ich kenne) hat, um die Basiskonvertierung durchzuführen, so dass es im Code erfolgen muss.

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
quelle
Daran muss ich mich immer wieder erinnern: print'\n'.join(...for x in y)ist eher länger als for x in y:print....
Stand
@boothby Dank, aktualisiert mit Ihrem Vorschlag :)
Joachim Isaksson
2

Perl 6 , 36 Bytes

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

Mathematica 40

Nicht in Konflikt (Kleinbuchstaben verwendet):

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

base output

DavidC
quelle
1

Julia, 61

für b = 2: 36; @printf ("6 * 9 =% s \ n", Großbuchstaben (Basis (b, 54)); Ende

Ziemlich schmerzlos, abgesehen davon, dass Sie nicht vergessen haben, das Makro @printf im Vergleich zu printf zu verwenden.

Basis importieren; nicht benötigt ...

Joe
quelle
for b=2:36;println("6 * 9 = $(uppercase(base(b,54)))");endist auch gut ...
cormullion
1

Perl

Musste das Math :: BaseCnv-Modul verwenden

35 Zeichen ohne die useAussage:

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

54 Zeichen mit der useAussage:

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

Nicht sicher, wie Sie dies bewerten würden, daher sind beide enthalten.

Die Map-BLOCK-LIST-Struktur wurde verwendet. Liste ist der Bereich 2 bis 36, der angefordert wurde. Das Fleisch ist in der cnv($NUMBER, $BASE)Funktion, und die Karte ist eine implizite Schleife.

Joe
quelle
1
Zählen Sie die useAussage. Der erste funktioniert nicht in meinem 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]
swish
quelle
1

CoffeeScript 71

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

Verknüpfung

Eikes
quelle
1

C ( 166 151)

Einige unnötige Zeichen wurden entfernt und einige Deklarationen geändert. Angenommen, Sie führen das Programm ohne Argumente aus.

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

Clojure, 75

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

OpenSauce
quelle
1

Python 3, 83 Bytes

import numpy;print('\n'.join('6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37)))
Cormac
quelle
1
Sie können '\n'.join('6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37))anstelle von *['6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37)],sep='\n'ein Byte speichern.
Wheat Wizard
Sie sollten wahrscheinlich "Python 3 with Numpy" angeben, da dies keine Standardbibliothek ist
FlipTack
1

Dart, 75 Bytes

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

Dart ist ein bisschen wortreich, wenn es um die Stdlib geht, aber hey ... zumindest kannst du es lesen: P

Dwayne Slater
quelle
0

Scala, 71

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

Common Lisp: 56 buchstaben

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

Salbei, 48:

Schande, dass Salbei in Kleinbuchstaben druckt ... Ich wäre nur einer über Howard. Oder ich glaube, falsch und mit David Carraher verbunden.

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

Forth, 54

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

/// 133 Bytes

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

Probieren Sie es online!

Erik der Outgolfer
quelle
0

SpecBAS - 48 Bytes

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

SpecBAS ist zur Abwechslung eigentlich recht konkurrenzfähig :-)

Brian
quelle
0

8. , 65 62 Bytes

Dies ist ein vollständiges Programm. Beenden Sie nach der Ausführung

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

Erläuterung

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