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.


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:



7

GolfScript, 39 Zeichen

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

Ergebnis ist zu sehen, hier .



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


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


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

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

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


1

Mathematica 40

Nicht in Konflikt (Kleinbuchstaben verwendet):

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

base output


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


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.


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]


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

1

Clojure, 75

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


1

Python 3, 83 Bytes

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

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


0

Scala, 71

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

0

Common Lisp: 56 buchstaben

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

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



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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.