Hitung 6 * 9 di pangkalan yang berbeda

16

Keluarkan hasil berikut (yang merupakan hasil dari menghitung 6 * 9 dalam basis dari 2 hingga 36). Pastikan huruf besar, dan perkalian itu sendiri dihasilkan pada setiap baris.

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

Kode terpendek menang.

Konrad Borowski
sumber
1
@ Howard: Tetap. Saya sedang mempertimbangkan mengubah 2 menjadi 10, tetapi lupa tentang pengeditan ini ketika memperbaiki sesuatu yang lain di hasilnya, jadi saya tidak sengaja meninggalkannya dengan cara yang salah.
Konrad Borowski
2
Calculate 6*9 in different bases Saya bertanya-tanya mengapa pernyataan itu diucapkan demikian, mengapa 6*9 dan tidak hanya 54? Mungkin makna yang dimaksudkan awalnya adalah bahwa 6dan 9harus ditafsirkan tidak selalu sebagai desimal tetapi dalam basis yang berbeda? Itu akan membuat pernyataan itu lebih logis, dan masalahnya lebih menarik (tapi kemudian kita harus mulai dari pangkalan 10 hingga 36)
leonbloy
2
@leonbloy: 6dan 9merupakan angka satu digit. Mereka berarti sama di setiap basis di mana angka-angka itu valid.
Ilmari Karonen
1
@IlmariKaronen: Benar, tapi 6 * 9 = 110110tidak masuk akal ...
Dennis
3
Ini adalah referensi ke Panduan Hitchhiker untuk seri Galaxy oleh Douglas Adams. Dalam seri ini, Jawaban atas Pertanyaan Akhir Kehidupan, Alam Semesta, dan Segalanya adalah "42". Kemudian, terungkap bahwa Pertanyaan Pokok Kehidupan, Semesta, dan Segalanya adalah "Apa yang Anda dapatkan ketika Anda mengalikan enam dengan sembilan?", Yang berhasil di base-13. Catatan: Douglas Adams mengatakan ini tidak disengaja; "Aku tidak menulis lelucon di base-13" .
dr jimbob

Jawaban:

1

05AB1E , 21 20 byte

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

Cobalah online!

Guci Gurita Ajaib
sumber
Saya menganggap itu tidak bersaing hanya karena bahasanya lebih baru daripada tantangan? Menandai telah diterima, sebagai aturan yang berlaku sekarang.
Konrad Borowski
@ Memperbaiki cukup banyak haha
Magic Octopus Mm
7

GolfScript, 39 karakter

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

Hasilnya bisa dilihat di sini .

Howard
sumber
7

Oktaf, 49

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

Sanjeev Murty
sumber
6

Javascript, 57 55 byte

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

Bisa dipersingkat menjadi 49 dengan alert, tapi saya tidak ingin mengirim siapa pun ke sana ...

Joachim Isaksson
sumber
3
Keluaran harus huruf besar, dan (54)dapat diganti dengan 54.(untuk menulis 54..toString).
Konrad Borowski
2
for(i=1;++i<37;)juga menyimpan karakter.
grc
Bisakah kamu mengabaikan 37? Ini akan menghasilkan kesalahan dan berhenti
l4m2
4

Ruby (47)

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

Yah, saya tahu bahwa solusi GolfScript lebih baik, tapi hei, setidaknya ini bukan esoteris ...

ditulis ulang
sumber
2.step{|t|puts"9 * 6 = "+54.to_s(t).upcase}menghemat beberapa byte. Ini keluar dengan kesalahan, tapi itu 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
stan
sumber
Cemerlang. Cukup jelas bahwa saya adalah total Python noob sebagai perbandingan :)
Joachim Isaksson
@ JoachimIsaksson Terima kasih ... Saya punya banyak hal untuk dipelajari.
Stanby
Anda dapat mengurangi satu karakter dengan menggunakan loop sementara sebagai gantinya: b=2<linebreak> while b<37:print'6 * 9 =',B(54);b+=1(dengan asumsi satu karakter untuk * nix linebreak)
Bob
@ Bob Setiap kali saya mencoba loop sementara, itu terlalu mahal. Kemudian, saya lupa untuk mencoba waktu berikutnya. ;) Terima kasih!
stan
3

Python 2.7 ( 124 114)

EDIT: Potong sedikit bulu berkat komentar @ boothby di bawah ini

Saya pikir Python baik-baik saja mengingat tidak memiliki built-in (yang saya tahu) untuk melakukan konversi basis sehingga harus dilakukan dalam kode;

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
sumber
Saya harus mengingatkan diri saya tentang hal ini secara terus-menerus: print'\n'.join(...for x in y)lebih lama daripada for x in y:print....
stan
@ brownby Terima kasih, diperbarui dengan saran Anda :)
Joachim Isaksson
2

Perl 6 , 36 byte

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

Mathematica 40

Tidak dalam pertikaian (huruf kecil digunakan):

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

base output

DavidC
sumber
1

Julia, 61

untuk b = 2: 36; @printf ("6 * 9 =% s \ n", huruf besar (base (b, 54))); akhir

Cukup tanpa rasa sakit, selain mengingat untuk menggunakan makro @ printf versus printf.

Basis Impor; tidak dibutuhkan ...

Joe
sumber
for b=2:36;println("6 * 9 = $(uppercase(base(b,54)))");endjuga baik ...
cormullion
1

Perl

Harus menggunakan modul Math :: BaseCnv

35 karakter tanpa usepernyataan:

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

54 karakter dengan usepernyataan:

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

Tidak yakin bagaimana skor Anda, jadi keduanya disertakan.

Struktur peta BLOCK LIST digunakan. Daftar adalah rentang 2 hingga 36, ​​yang diminta. Daging dalam cnv($NUMBER, $BASE)fungsi, dan peta adalah lingkaran tersirat.

Joe
sumber
1
Hitung usepernyataannya. Yang pertama tidak bekerja di perl saya.
stan
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]
desir
sumber
1

CoffeeScript 71

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

Tautan

Eikes
sumber
1

C ( 166 151)

Singkirkan beberapa karakter yang tidak perlu dan ubah beberapa deklarasi. Berasumsi bahwa Anda menjalankan program tanpa argumen.

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

Clojure, 75

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

OpenSauce
sumber
1

Python 3, 83 byte

import numpy;print('\n'.join('6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37)))
Cormac
sumber
1
Anda dapat menggunakan '\n'.join('6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37))alih-alih *['6 * 9 = '+numpy.base_repr(54,i)for i in range(2,37)],sep='\n'menyimpan byte.
Post Rock Garf Hunter
Anda mungkin harus menentukan "Python 3 dengan Numpy" karena ini bukan perpustakaan standar
FlipTack
1

Dart, 75 byte

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

Dart sedikit verbose ketika datang ke stdlib, tapi hei ... setidaknya Anda bisa membacanya: P

Dwayne Slater
sumber
0

Scala, 71

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

Gangguan Umum: 56 karakter

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

Sage, 48:

Malu Sage mencetak dalam huruf kecil ... Aku hanya satu di atas Howard. Atau, saya kira, salah dan terikat dengan David Carraher.

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

Keempat, 54

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

/// , 133 byte

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

Cobalah online!

Erik the Outgolfer
sumber
0

SpecBAS - 48 byte

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

SpecBAS sebenarnya cukup kompetitif untuk perubahan :-)

Brian
sumber
0

8 , 65 62 byte

Ini adalah program yang lengkap. Keluar setelah eksekusi

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

Penjelasan

( 
   "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
Kekacauan Manor
sumber