Calculate 6*9 in different bases

16

1

Output the following result (which is a result of calculating 6 * 9 in bases from 2 to 36). Make sure letters are uppercase, and the multiplication itself is outputed on every line.

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

Shortest code wins.

Konrad Borowski

Posted 2014-01-05T09:26:00.643

Reputation: 11 185

It's the result from bases 2 to 36, not 10 to 36. – Howard – 2014-01-05T10:04:45.020

1@Howard: Fixed. I was considering changing 2 to 10, but forgot about this edit while fixing something else in the result, so I accidentally left it the wrong way. – Konrad Borowski – 2014-01-05T10:06:24.613

The challenge would be more interesting if you weren't allowed to use to use library functions for base conversion. – nitro2k01 – 2014-01-05T11:07:22.797

2Calculate 6*9 in different bases I wonder why the statement is worded thus, why 6*9 and not simply 54? Perhaps the originally intended meaning was that 6 and 9 should be interpreted not always as decimal but in different bases? That would make the statement more logical, and the problem more interesting (but then we should start from base 10 to 36) – leonbloy – 2014-01-05T16:16:37.177

2@leonbloy: 6 and 9 are single-digit numbers. They mean the same in every base in which those digits are valid. – Ilmari Karonen – 2014-01-05T16:46:43.993

1@IlmariKaronen: Correct, but 6 * 9 = 110110 doesn't make a lot of sense... – Dennis – 2014-01-05T18:09:46.717

3

This is a reference to the Hitchhiker's Guide to the Galaxy series by Douglas Adams. In the series, the Answer to the Ultimate Question of Life, The Universe, and Everything is "42". Later, its revealed that the Ultimate Question of Life, the Universe, and Everything is "What do you get when you multiply six by nine?", which works out in base-13. Note: Douglas Adams said this was unintentional; "I don't write jokes in base-13".

– dr jimbob – 2014-01-10T21:14:21.437

1

@leonbloy - "I wonder why the statement is worded thus," it's worded that way because of Hitchhiker's Guide to the Galaxy series. See http://en.wikipedia.org/wiki/Phrases_from_The_Hitchhiker%27s_Guide_to_the_Galaxy#Answer_to_the_Ultimate_Question_of_Life.2C_the_Universe.2C_and_Everything_.2842.29

– dr jimbob – 2014-01-10T21:17:49.780

Answers

1

05AB1E, 21 20 bytes

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

Try it online!

Magic Octopus Urn

Posted 2014-01-05T09:26:00.643

Reputation: 19 422

I assume it's non-competing just because the language is newer than a challenge? Marking as accepted, as rules as of now allow this. – Konrad Borowski – 2018-03-21T11:35:26.053

@xfix pretty much haha – Magic Octopus Urn – 2018-03-21T12:35:07.693

7

GolfScript, 39 characters

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

Result can be seen here.

Howard

Posted 2014-01-05T09:26:00.643

Reputation: 23 109

7

Octave, 49

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

Sanjeev Murty

Posted 2014-01-05T09:26:00.643

Reputation: 171

6

Javascript, 57 55 bytes

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

Could be shortened to 49 with alert, but I don't want to submit anyone to that...

Joachim Isaksson

Posted 2014-01-05T09:26:00.643

Reputation: 1 161

3Output should be uppercase, and (54) can be replaced with 54. (to write 54..toString). – Konrad Borowski – 2014-01-05T11:03:40.027

2for(i=1;++i<37;) also saves a character. – grc – 2014-01-05T11:42:36.250

Can you ignore the 37? It will result in an error and stop – l4m2 – 2018-03-21T16:37:38.467

4

Ruby (47)

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

Well, I know that GolfScript solution is better, but hey, at least this is not esoteric...

rewritten

Posted 2014-01-05T09:26:00.643

Reputation: 309

2.step{|t|puts"9 * 6 = "+54.to_s(t).upcase} saves a few bytes. It exits with an error, but that's ok :D. – m-chrzan – 2016-09-20T18:06:56.387

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

Posted 2014-01-05T09:26:00.643

Reputation: 9 038

Brilliant. Quite noticeable that I'm a total Python noob in comparison :) – Joachim Isaksson – 2014-01-05T21:02:39.687

@JoachimIsaksson Thanks... I've got loads more to learn. – boothby – 2014-01-05T21:58:05.610

You can shave off one character by using a while loop instead: b=2 <linebreak> while b<37:print'6 * 9 =',B(54);b+=1 (assuming single character for a *nix linebreak) – Bob – 2014-01-05T22:53:46.367

@Bob Whenever I try a while loop, it's too expensive. Then, I forget to try the next time. ;) Thanks! – boothby – 2014-01-05T23:00:07.397

3

Python 2.7 (124 114)

EDIT: Cut some fluff thanks to @boothby's comment below

I think Python is doing ok considering it has no built-in (that I know of) to do the base conversion so it has to be done in code;

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

Posted 2014-01-05T09:26:00.643

Reputation: 1 161

I have to remind myself of this continually: print'\n'.join(...for x in y) is rather longer than for x in y:print.... – boothby – 2014-01-05T15:54:56.473

@boothby Thanks, updated with your suggestion :) – Joachim Isaksson – 2014-01-05T20:32:41.793

2

Perl 6, 36 bytes

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

Sean

Posted 2014-01-05T09:26:00.643

Reputation: 4 136

1

Python 3, 83 bytes

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

Cormac

Posted 2014-01-05T09:26:00.643

Reputation: 101

1You can use '\n'.join('6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37)) instead of *['6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37)],sep='\n' to save a byte. – Post Rock Garf Hunter – 2016-12-31T03:12:03.213

You should probably specify "Python 3 with Numpy" as it's not a standard library – FlipTack – 2017-01-17T20:36:04.507

1

Dart, 75 bytes

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

Dart is a bit verbose when it comes to the stdlib, but hey... at least you can read it :P

Dwayne Slater

Posted 2014-01-05T09:26:00.643

Reputation: 111

1

Mathematica 40

Not in contention (lower case letters used):

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

base output

DavidC

Posted 2014-01-05T09:26:00.643

Reputation: 24 524

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

Posted 2014-01-05T09:26:00.643

Reputation: 7 484

1

Perl

Had to use the Math::BaseCnv module

35 chars without the use statement:

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

54 chars with the use statement:

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

Not sure how you'd score this, so both are included.

The map BLOCK LIST structure was used. List is the range 2 to 36, that was requested. The meat is in the cnv($NUMBER, $BASE) function, and the map is an implied loop.

Joe

Posted 2014-01-05T09:26:00.643

Reputation: 61

1Count the use statement. The first one doesn't work in my perl. – boothby – 2014-01-05T22:09:50.310

1

Julia, 61

for b=2:36;@printf("6 * 9 = %s\n",uppercase(base(b,54)));end

Pretty painless, apart from remembering to use the macro @printf versus printf.

Import Base; not needed ...

Joe

Posted 2014-01-05T09:26:00.643

Reputation: 61

for b=2:36;println("6 * 9 = $(uppercase(base(b,54)))");end is also good... – cormullion – 2014-01-26T12:13:20.060

1

C (166 151)

Got rid of some unnecessary characters and changed some declarations. Assumes that you are running the program with no arguments.

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

Posted 2014-01-05T09:26:00.643

Reputation: 71

1

CoffeeScript 71

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

Link

eikes

Posted 2014-01-05T09:26:00.643

Reputation: 221

1

Clojure, 75

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

OpenSauce

Posted 2014-01-05T09:26:00.643

Reputation: 153

0

8th, 65 62 bytes

This is a complete program. Exit after execution

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

Explanation

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

Posted 2014-01-05T09:26:00.643

Reputation: 521

0

Scala, 71

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

gourlaysama

Posted 2014-01-05T09:26:00.643

Reputation: 101

0

Common Lisp: 56 characters

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

Svante

Posted 2014-01-05T09:26:00.643

Reputation: 121

0

Sage, 48:

Shame Sage prints in lowercase... I'd only be one over Howard. Or, I guess, wrong and tied with David Carraher.

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

boothby

Posted 2014-01-05T09:26:00.643

Reputation: 9 038

0

Forth, 54

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

Darren Stone

Posted 2014-01-05T09:26:00.643

Reputation: 5 072

0

///, 133 bytes

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

Try it online!

Erik the Outgolfer

Posted 2014-01-05T09:26:00.643

Reputation: 38 134

0

SpecBAS - 48 bytes

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

SpecBAS is actually quite competitive for a change :-)

Brian

Posted 2014-01-05T09:26:00.643

Reputation: 1 209